Enhancing types for Device

Summary: While investigating Flipper to unblock D30990411. I found this untyped `device` field. This field is exactly the `Device` type in 'adbkit', so I did a small refactor to type it.

Reviewed By: timur-valiev

Differential Revision: D30996427

fbshipit-source-id: 9972a865c2dee009088635e57ef512969f404ddf
This commit is contained in:
Julio Cesar Sevarolli Assis
2021-09-17 04:23:51 -07:00
committed by Facebook GitHub Bot
parent 094c320c5c
commit cbee595229
3 changed files with 40 additions and 41 deletions

View File

@@ -8,7 +8,7 @@
*/ */
import BaseDevice from '../BaseDevice'; import BaseDevice from '../BaseDevice';
import adb, {Client as ADBClient} from 'adbkit'; import adb, {Client as ADBClient, PullTransfer} from 'adbkit';
import {Priority, Reader} from 'adbkit-logcat'; import {Priority, Reader} from 'adbkit-logcat';
import {createWriteStream} from 'fs'; import {createWriteStream} from 'fs';
import type {LogLevel, DeviceType} from 'flipper-plugin'; import type {LogLevel, DeviceType} from 'flipper-plugin';

View File

@@ -13,7 +13,7 @@ import child_process from 'child_process';
import {getAdbClient} from './adbClient'; import {getAdbClient} from './adbClient';
import which from 'which'; import which from 'which';
import {promisify} from 'util'; import {promisify} from 'util';
import {Client as ADBClient} from 'adbkit'; import {Client as ADBClient, Device} from 'adbkit';
import {join} from 'path'; import {join} from 'path';
import {FlipperServer} from '../../FlipperServer'; import {FlipperServer} from '../../FlipperServer';
import {notNull} from '../../utils/typeUtils'; import {notNull} from '../../utils/typeUtils';
@@ -26,7 +26,7 @@ export class AndroidDeviceManager {
private createDevice( private createDevice(
adbClient: ADBClient, adbClient: ADBClient,
device: any, device: Device,
): Promise<AndroidDevice | undefined> { ): Promise<AndroidDevice | undefined> {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
const type = const type =
@@ -224,7 +224,7 @@ export class AndroidDeviceManager {
} }
} }
private async registerDevice(adbClient: ADBClient, deviceData: any) { private async registerDevice(adbClient: ADBClient, deviceData: Device) {
const androidDevice = await this.createDevice(adbClient, deviceData); const androidDevice = await this.createDevice(adbClient, deviceData);
if (!androidDevice) { if (!androidDevice) {
return; return;

View File

@@ -7,44 +7,43 @@
* @format * @format
*/ */
interface Device {
id: string;
type: 'emulator' | 'device' | 'offline';
}
interface Util {
readAll: (stream: NodeJS.ReadStream) => Promise<Buffer>;
}
// https://github.com/openstf/adbkit#pulltransfer
interface PullTransfer extends NodeJS.WriteStream {
cancel: () => this;
on(
event: 'progress',
listener: (stats: {bytesTransferred: number}) => void,
): this;
on(event: 'error', listener: (err: Error) => void): this;
on(event: 'end', listener: () => void): this;
on(event: 'resize', listener: () => void): this;
}
interface DeviceTracker extends NodeJS.EventEmitter {
on(event: 'add', listener: (device: Device) => void): this;
on(event: 'remove', listener: (device: Device) => void): this;
on(event: 'change', listener: (device: Device) => void): this;
on(
event: 'changeSet',
listener: (changes: {
added: Device[];
removed: Device[];
changed: Device[];
}) => void,
): this;
on(event: 'error', listener: (err: Error) => void): this;
on(event: 'end', listener: () => void): this;
}
declare module 'adbkit' { declare module 'adbkit' {
export interface Device {
id: string;
type: 'emulator' | 'device' | 'offline';
}
interface Util {
readAll: (stream: NodeJS.ReadStream) => Promise<Buffer>;
}
// https://github.com/openstf/adbkit#pulltransfer
export interface PullTransfer extends NodeJS.WriteStream {
cancel: () => this;
on(
event: 'progress',
listener: (stats: {bytesTransferred: number}) => void,
): this;
on(event: 'error', listener: (err: Error) => void): this;
on(event: 'end', listener: () => void): this;
on(event: 'resize', listener: () => void): this;
}
interface DeviceTracker extends NodeJS.EventEmitter {
on(event: 'add', listener: (device: Device) => void): this;
on(event: 'remove', listener: (device: Device) => void): this;
on(event: 'change', listener: (device: Device) => void): this;
on(
event: 'changeSet',
listener: (changes: {
added: Device[];
removed: Device[];
changed: Device[];
}) => void,
): this;
on(event: 'error', listener: (err: Error) => void): this;
on(event: 'end', listener: () => void): this;
}
const util: Util; const util: Util;
const adbkit: any; const adbkit: any;
export interface Client { export interface Client {