@yume-chan/adb 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log - @yume-chan/adb
2
2
 
3
+ ## 1.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - ab98953: Add partial support for ADB server version 40
8
+
3
9
  ## 1.0.1
4
10
 
5
11
  ### Patch Changes
@@ -4,27 +4,13 @@ import type { AbortSignal, MaybeConsumable, ReadableWritablePair } from "@yume-c
4
4
  import type { AdbIncomingSocketHandler, AdbSocket, Closeable } from "../adb.js";
5
5
  import type { DeviceObserver as DeviceObserverBase } from "../device-observer.js";
6
6
  import type { AdbFeature } from "../features.js";
7
+ import { AdbServerStream } from "./stream.js";
7
8
  import { AdbServerTransport } from "./transport.js";
8
- declare class AdbServerStream {
9
- #private;
10
- constructor(connection: AdbServerClient.ServerConnection);
11
- readExactly(length: number): MaybePromiseLike<Uint8Array>;
12
- readString: (this: AdbServerStream) => MaybePromiseLike<string>;
13
- writeString(value: string): Promise<void>;
14
- readOkay(): Promise<void>;
15
- release(): {
16
- readable: import("@yume-chan/stream-extra").ReadableStream<Uint8Array<ArrayBufferLike>>;
17
- writable: import("@yume-chan/stream-extra/esm/types.js").WritableStream<MaybeConsumable<Uint8Array<ArrayBufferLike>>>;
18
- closed: Promise<void>;
19
- close: () => MaybePromiseLike<void>;
20
- };
21
- dispose(): Promise<void>;
22
- }
23
9
  /**
24
10
  * Client for the ADB Server.
25
11
  */
26
12
  export declare class AdbServerClient {
27
- static readonly VERSION = 41;
13
+ #private;
28
14
  static parseDeviceList(value: string): AdbServerClient.Device[];
29
15
  static formatDeviceService(device: AdbServerClient.DeviceSelector, command: string): string;
30
16
  readonly connector: AdbServerClient.ServerConnector;
@@ -36,7 +22,7 @@ export declare class AdbServerClient {
36
22
  * `adb version`
37
23
  */
38
24
  getVersion(): Promise<number>;
39
- validateVersion(): Promise<void>;
25
+ validateVersion(minimalVersion: number): Promise<void>;
40
26
  /**
41
27
  * `adb kill-server`
42
28
  */
@@ -54,7 +40,7 @@ export declare class AdbServerClient {
54
40
  /**
55
41
  * Monitors device list changes.
56
42
  */
57
- trackDevices(): Promise<AdbServerClient.DeviceObserver>;
43
+ trackDevices(options?: AdbServerClient.ServerConnectionOptions): Promise<AdbServerClient.DeviceObserver>;
58
44
  /**
59
45
  * `adb -s <device> reconnect` or `adb reconnect offline`
60
46
  */
@@ -88,6 +74,7 @@ export declare class AdbServerClient {
88
74
  * @returns A promise that resolves when the condition is met.
89
75
  */
90
76
  waitFor(device: AdbServerClient.DeviceSelector, state: "device" | "disconnect", options?: AdbServerClient.ServerConnectionOptions): Promise<void>;
77
+ waitForDisconnect(transportId: bigint, options?: AdbServerClient.ServerConnectionOptions): Promise<void>;
91
78
  /**
92
79
  * Creates an ADB Transport for the specified device.
93
80
  */
@@ -170,5 +157,4 @@ export declare namespace AdbServerClient {
170
157
  onError: Event<Error>;
171
158
  }
172
159
  }
173
- export {};
174
160
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,KAAK,EACR,WAAW,EACX,eAAe,EACf,oBAAoB,EAEvB,MAAM,yBAAyB,CAAC;AAajC,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAKpD,cAAM,eAAe;;gBAKL,UAAU,EAAE,eAAe,CAAC,gBAAgB;IAMxD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAIzD,UAAU,sDAmBP;IAEG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB/B,OAAO;;;;;;IAUD,OAAO;CAKhB;AAED;;GAEG;AACH,qBAAa,eAAe;IACxB,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAM;IAE7B,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE;IAkD/D,MAAM,CAAC,mBAAmB,CACtB,MAAM,EAAE,eAAe,CAAC,cAAc,EACtC,OAAO,EAAE,MAAM;IAoBnB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,eAAe,CAAC;IAEpD,QAAQ,CAAC,QAAQ,mCAA8C;IAC/D,QAAQ,CAAC,IAAI,+BAA0C;gBAE3C,SAAS,EAAE,eAAe,CAAC,eAAe;IAIhD,gBAAgB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,CAAC,uBAAuB,GAClD,OAAO,CAAC,eAAe,CAAC;IAsB3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAW7B,eAAe;IASrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAUhD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;IAUrD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;IAyD7D;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,cAAc,GAAG,SAAS;IAaxE;;;;;;OAMG;IACG,iBAAiB,CACnB,MAAM,EAAE,eAAe,CAAC,cAAc,GACvC,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAgC3D;;;;;OAKG;IACG,sBAAsB,CACxB,MAAM,EAAE,eAAe,CAAC,cAAc,EACtC,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC;IAyDlC;;;;;;;;;OASG;IACG,OAAO,CACT,MAAM,EAAE,eAAe,CAAC,cAAc,EACtC,KAAK,EAAE,QAAQ,GAAG,YAAY,EAC9B,OAAO,CAAC,EAAE,eAAe,CAAC,uBAAuB,GAClD,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;IACG,eAAe,CACjB,MAAM,EAAE,eAAe,CAAC,cAAc,GACvC,OAAO,CAAC,kBAAkB,CAAC;CAsBjC;AAED,wBAAsB,UAAU,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,EAC9B,GAAG,OAAO,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,GACxC,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAED,yBAAiB,eAAe,CAAC;IAC7B,UAAiB,uBAAuB;QACpC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC5B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;KACpC;IAED,UAAiB,gBACb,SAAQ,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,EACjE,SAAS;QACb,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,UAAiB,eAAe;QAC5B,OAAO,CACH,OAAO,CAAC,EAAE,uBAAuB,GAClC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAEtC,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,MAAM,GACjB,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE5B,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE7D,mBAAmB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACjD;IAED,UAAiB,MAAO,SAAQ,SAAS;QACrC,WAAW,EAAE,MAAM,CAAC;KACvB;IAED;;OAEG;IACH,KAAY,cAAc,GACpB;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GACvB;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAClB;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACb;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACb,SAAS,CAAC;IAEhB,UAAiB,MAAM;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;KACvB;IAED,MAAa,YAAa,SAAQ,KAAK;oBACvB,OAAO,EAAE,MAAM;KAI9B;IAED,MAAa,iBAAkB,SAAQ,KAAK;oBAC5B,OAAO,EAAE,MAAM;KAI9B;IAED,MAAa,qBAAsB,SAAQ,KAAK;oBAChC,OAAO,EAAE,MAAM;KAI9B;IAED,MAAa,gBAAgB;;oBAGb,MAAM,EAAE,eAAe;QAInC;;WAEG;QACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;QAkB5D;;WAEG;QACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;QAwB7C;;WAEG;QACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;KAUnD;IAED,MAAa,YAAY;;oBAGT,MAAM,EAAE,eAAe;QAI7B,KAAK;QAWL,WAAW;;;;;KAoBpB;IAED,UAAiB,cAAe,SAAQ,kBAAkB,CAAC,MAAM,CAAC;QAC9D,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KACzB;CACJ"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EACR,WAAW,EACX,eAAe,EACf,oBAAoB,EACvB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,OAAO,EAAE,eAAe,EAAQ,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,qBAAa,eAAe;;IACxB,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE;IAkD/D,MAAM,CAAC,mBAAmB,CACtB,MAAM,EAAE,eAAe,CAAC,cAAc,EACtC,OAAO,EAAE,MAAM;IAoBnB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,eAAe,CAAC;IAEpD,QAAQ,CAAC,QAAQ,mCAA8C;IAC/D,QAAQ,CAAC,IAAI,+BAA0C;gBAG3C,SAAS,EAAE,eAAe,CAAC,eAAe;IAIhD,gBAAgB,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,CAAC,uBAAuB,GAClD,OAAO,CAAC,eAAe,CAAC;IAsB3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAW7B,eAAe,CAAC,cAAc,EAAE,MAAM;IAS5C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAUhD;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;IAUrD;;OAEG;IACG,YAAY,CACd,OAAO,CAAC,EAAE,eAAe,CAAC,uBAAuB,GAClD,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;IAI1C;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,cAAc,GAAG,SAAS;IAaxE;;;;;;OAMG;IACG,iBAAiB,CACnB,MAAM,EAAE,eAAe,CAAC,cAAc,GACvC,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAgC3D;;;;;OAKG;IACG,sBAAsB,CACxB,MAAM,EAAE,eAAe,CAAC,cAAc,EACtC,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC;IA6FlC;;;;;;;;;OASG;IACG,OAAO,CACT,MAAM,EAAE,eAAe,CAAC,cAAc,EACtC,KAAK,EAAE,QAAQ,GAAG,YAAY,EAC9B,OAAO,CAAC,EAAE,eAAe,CAAC,uBAAuB,GAClD,OAAO,CAAC,IAAI,CAAC;IAQV,iBAAiB,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,eAAe,CAAC,uBAAuB,GAClD,OAAO,CAAC,IAAI,CAAC;IA6BhB;;OAEG;IACG,eAAe,CACjB,MAAM,EAAE,eAAe,CAAC,cAAc,GACvC,OAAO,CAAC,kBAAkB,CAAC;CAoCjC;AAED,wBAAsB,UAAU,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,EAC9B,GAAG,OAAO,EAAE,CAAC,WAAW,GAAG,SAAS,CAAC,EAAE,GACxC,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAED,yBAAiB,eAAe,CAAC;IAC7B,UAAiB,uBAAuB;QACpC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC5B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;KACpC;IAED,UAAiB,gBACb,SAAQ,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC,EACjE,SAAS;QACb,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/B;IAED,UAAiB,eAAe;QAC5B,OAAO,CACH,OAAO,CAAC,EAAE,uBAAuB,GAClC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAEtC,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,MAAM,GACjB,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAE5B,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE7D,mBAAmB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;KACjD;IAED,UAAiB,MAAO,SAAQ,SAAS;QACrC,WAAW,EAAE,MAAM,CAAC;KACvB;IAED;;OAEG;IACH,KAAY,cAAc,GACpB;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GACvB;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAClB;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACb;QAAE,GAAG,EAAE,IAAI,CAAA;KAAE,GACb,SAAS,CAAC;IAEhB,UAAiB,MAAM;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,OAAO,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;KACvB;IAED,MAAa,YAAa,SAAQ,KAAK;oBACvB,OAAO,EAAE,MAAM;KAI9B;IAED,MAAa,iBAAkB,SAAQ,KAAK;oBAC5B,OAAO,EAAE,MAAM;KAI9B;IAED,MAAa,qBAAsB,SAAQ,KAAK;oBAChC,OAAO,EAAE,MAAM;KAI9B;IAED,MAAa,gBAAgB;;oBAGb,MAAM,EAAE,eAAe;QAInC;;WAEG;QACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;QAkB5D;;WAEG;QACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;QAwB7C;;WAEG;QACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;KAUnD;IAED,MAAa,YAAY;;oBAGT,MAAM,EAAE,eAAe;QAI7B,KAAK;QAWL,WAAW;;;;;KAoBpB;IAED,UAAiB,cAAe,SAAQ,kBAAkB,CAAC,MAAM,CAAC;QAC9D,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KACzB;CACJ"}
@@ -1,90 +1,16 @@
1
1
  // cspell:ignore tport
2
2
  import { PromiseResolver } from "@yume-chan/async";
3
- import { EventEmitter } from "@yume-chan/event";
4
3
  import { getUint64LittleEndian } from "@yume-chan/no-data-view";
5
- import { BufferedReadableStream, tryCancel, tryClose, } from "@yume-chan/stream-extra";
6
- import { bipedal, decodeUtf8, encodeUtf8, TextDecoder, } from "@yume-chan/struct";
4
+ import { AbortController } from "@yume-chan/stream-extra";
7
5
  import { AdbBanner } from "../banner.js";
8
- import { hexToNumber, sequenceEqual, write4HexDigits } from "../utils/index.js";
6
+ import { hexToNumber, sequenceEqual } from "../utils/index.js";
7
+ import { AdbServerDeviceObserverOwner } from "./observer.js";
8
+ import { AdbServerStream, FAIL } from "./stream.js";
9
9
  import { AdbServerTransport } from "./transport.js";
10
- const OKAY = encodeUtf8("OKAY");
11
- const FAIL = encodeUtf8("FAIL");
12
- class AdbServerStream {
13
- #connection;
14
- #buffered;
15
- #writer;
16
- constructor(connection) {
17
- this.#connection = connection;
18
- this.#buffered = new BufferedReadableStream(connection.readable);
19
- this.#writer = connection.writable.getWriter();
20
- }
21
- readExactly(length) {
22
- return this.#buffered.readExactly(length);
23
- }
24
- readString = bipedal(function* (then) {
25
- const data = yield* then(this.readExactly(4));
26
- const length = hexToNumber(data);
27
- if (length === 0) {
28
- return "";
29
- }
30
- else {
31
- const decoder = new TextDecoder();
32
- let result = "";
33
- const iterator = this.#buffered.iterateExactly(length);
34
- while (true) {
35
- const { done, value } = iterator.next();
36
- if (done) {
37
- break;
38
- }
39
- result += decoder.decode(yield* then(value), { stream: true });
40
- }
41
- result += decoder.decode();
42
- return result;
43
- }
44
- });
45
- async writeString(value) {
46
- // TODO: investigate using `encodeUtf8("0000" + value)` then modifying the length
47
- // That way allocates a new string (hopefully only a rope) instead of a new buffer
48
- const encoded = encodeUtf8(value);
49
- const buffer = new Uint8Array(4 + encoded.length);
50
- write4HexDigits(buffer, 0, encoded.length);
51
- buffer.set(encoded, 4);
52
- await this.#writer.write(buffer);
53
- }
54
- async readOkay() {
55
- const response = await this.readExactly(4);
56
- if (sequenceEqual(response, OKAY)) {
57
- // `OKAY` is followed by data length and data
58
- // But different services want to parse the data differently
59
- // So don't read the data here
60
- return;
61
- }
62
- if (sequenceEqual(response, FAIL)) {
63
- const reason = await this.readString();
64
- throw new Error(reason);
65
- }
66
- throw new Error(`Unexpected response: ${decodeUtf8(response)}`);
67
- }
68
- release() {
69
- this.#writer.releaseLock();
70
- return {
71
- readable: this.#buffered.release(),
72
- writable: this.#connection.writable,
73
- closed: this.#connection.closed,
74
- close: () => this.#connection.close(),
75
- };
76
- }
77
- async dispose() {
78
- void tryCancel(this.#buffered);
79
- void tryClose(this.#writer);
80
- await this.#connection.close();
81
- }
82
- }
83
10
  /**
84
11
  * Client for the ADB Server.
85
12
  */
86
13
  export class AdbServerClient {
87
- static VERSION = 41;
88
14
  static parseDeviceList(value) {
89
15
  const devices = [];
90
16
  for (const line of value.split("\n")) {
@@ -153,6 +79,7 @@ export class AdbServerClient {
153
79
  connector;
154
80
  wireless = new AdbServerClient.WirelessCommands(this);
155
81
  mDns = new AdbServerClient.MDnsCommands(this);
82
+ #observerOwner = new AdbServerDeviceObserverOwner(this);
156
83
  constructor(connector) {
157
84
  this.connector = connector;
158
85
  }
@@ -191,10 +118,10 @@ export class AdbServerClient {
191
118
  await connection.dispose();
192
119
  }
193
120
  }
194
- async validateVersion() {
121
+ async validateVersion(minimalVersion) {
195
122
  const version = await this.getVersion();
196
- if (version !== AdbServerClient.VERSION) {
197
- throw new Error(`adb server version (${version}) doesn't match this client (${AdbServerClient.VERSION})`);
123
+ if (version < minimalVersion) {
124
+ throw new Error(`adb server version (${version}) doesn't match this client (${minimalVersion})`);
198
125
  }
199
126
  }
200
127
  /**
@@ -235,52 +162,8 @@ export class AdbServerClient {
235
162
  /**
236
163
  * Monitors device list changes.
237
164
  */
238
- async trackDevices() {
239
- const connection = await this.createConnection("host:track-devices-l");
240
- let current = [];
241
- const onError = new EventEmitter();
242
- const onDeviceAdd = new EventEmitter();
243
- const onDeviceRemove = new EventEmitter();
244
- const onListChange = new EventEmitter();
245
- void (async () => {
246
- try {
247
- while (true) {
248
- const response = await connection.readString();
249
- const next = AdbServerClient.parseDeviceList(response);
250
- const added = [];
251
- for (const nextDevice of next) {
252
- const index = current.findIndex((device) => device.transportId === nextDevice.transportId);
253
- if (index === -1) {
254
- added.push(nextDevice);
255
- continue;
256
- }
257
- current[index] = current[current.length - 1];
258
- current.length -= 1;
259
- }
260
- if (added.length) {
261
- onDeviceAdd.fire(added);
262
- }
263
- if (current.length) {
264
- onDeviceRemove.fire(current);
265
- }
266
- current = next;
267
- onListChange.fire(current);
268
- }
269
- }
270
- catch (e) {
271
- onError.fire(e);
272
- }
273
- })();
274
- return {
275
- onError: onError.event,
276
- onDeviceAdd: onDeviceAdd.event,
277
- onDeviceRemove: onDeviceRemove.event,
278
- onListChange: onListChange.event,
279
- get current() {
280
- return current;
281
- },
282
- stop: () => connection.dispose(),
283
- };
165
+ async trackDevices(options) {
166
+ return this.#observerOwner.createObserver(options);
284
167
  }
285
168
  /**
286
169
  * `adb -s <device> reconnect` or `adb reconnect offline`
@@ -339,10 +222,10 @@ export class AdbServerClient {
339
222
  * @returns An `AdbServerClient.Socket` that can be used to communicate with the service
340
223
  */
341
224
  async createDeviceConnection(device, service) {
342
- await this.validateVersion();
343
225
  let switchService;
344
226
  let transportId;
345
227
  if (!device) {
228
+ await this.validateVersion(41);
346
229
  switchService = `host:tport:any`;
347
230
  }
348
231
  else if ("transportId" in device) {
@@ -350,12 +233,15 @@ export class AdbServerClient {
350
233
  transportId = device.transportId;
351
234
  }
352
235
  else if ("serial" in device) {
236
+ await this.validateVersion(41);
353
237
  switchService = `host:tport:serial:${device.serial}`;
354
238
  }
355
239
  else if ("usb" in device) {
240
+ await this.validateVersion(41);
356
241
  switchService = `host:tport:usb`;
357
242
  }
358
243
  else if ("tcp" in device) {
244
+ await this.validateVersion(41);
359
245
  switchService = `host:tport:local`;
360
246
  }
361
247
  else {
@@ -394,17 +280,7 @@ export class AdbServerClient {
394
280
  throw e;
395
281
  }
396
282
  }
397
- /**
398
- * Wait for a device to be connected or disconnected.
399
- *
400
- * `adb wait-for-<state>`
401
- *
402
- * @param device The device selector
403
- * @param state The state to wait for
404
- * @param options The options
405
- * @returns A promise that resolves when the condition is met.
406
- */
407
- async waitFor(device, state, options) {
283
+ async #waitForUnchecked(device, state, options) {
408
284
  let type;
409
285
  if (!device) {
410
286
  type = "any";
@@ -435,6 +311,43 @@ export class AdbServerClient {
435
311
  await connection.dispose();
436
312
  }
437
313
  }
314
+ /**
315
+ * Wait for a device to be connected or disconnected.
316
+ *
317
+ * `adb wait-for-<state>`
318
+ *
319
+ * @param device The device selector
320
+ * @param state The state to wait for
321
+ * @param options The options
322
+ * @returns A promise that resolves when the condition is met.
323
+ */
324
+ async waitFor(device, state, options) {
325
+ if (state === "disconnect") {
326
+ await this.validateVersion(41);
327
+ }
328
+ return this.#waitForUnchecked(device, state, options);
329
+ }
330
+ async waitForDisconnect(transportId, options) {
331
+ const serverVersion = await this.getVersion();
332
+ if (serverVersion >= 41) {
333
+ return this.#waitForUnchecked({ transportId }, "disconnect", options);
334
+ }
335
+ else {
336
+ const observer = await this.trackDevices(options);
337
+ return new Promise((resolve, reject) => {
338
+ observer.onDeviceRemove((devices) => {
339
+ if (devices.some((device) => device.transportId === transportId)) {
340
+ observer.stop();
341
+ resolve();
342
+ }
343
+ });
344
+ observer.onError((e) => {
345
+ observer.stop();
346
+ reject(e);
347
+ });
348
+ });
349
+ }
350
+ }
438
351
  /**
439
352
  * Creates an ADB Transport for the specified device.
440
353
  */
@@ -443,7 +356,14 @@ export class AdbServerClient {
443
356
  const devices = await this.getDevices();
444
357
  const info = devices.find((device) => device.transportId === transportId);
445
358
  const banner = new AdbBanner(info?.product, info?.model, info?.device, features);
446
- return new AdbServerTransport(this, info?.serial ?? "", banner, transportId);
359
+ const waitAbortController = new AbortController();
360
+ const disconnected = this.waitForDisconnect(transportId, {
361
+ unref: true,
362
+ signal: waitAbortController.signal,
363
+ });
364
+ const transport = new AdbServerTransport(this, info?.serial ?? "", banner, transportId, disconnected);
365
+ transport.disconnected.then(() => waitAbortController.abort(), () => waitAbortController.abort());
366
+ return transport;
447
367
  }
448
368
  }
449
369
  export async function raceSignal(callback, ...signals) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  export * from "./client.js";
2
+ export * from "./observer.js";
3
+ export * from "./stream.js";
2
4
  export * from "./transport.js";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export * from "./client.js";
2
+ export * from "./observer.js";
3
+ export * from "./stream.js";
2
4
  export * from "./transport.js";
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { AdbServerClient } from "./client.js";
2
+ export declare class AdbServerDeviceObserverOwner {
3
+ #private;
4
+ current: AdbServerClient.Device[];
5
+ constructor(client: AdbServerClient);
6
+ createObserver(options?: AdbServerClient.ServerConnectionOptions): Promise<AdbServerClient.DeviceObserver>;
7
+ }
8
+ //# sourceMappingURL=observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.d.ts","sourceRoot":"","sources":["../../src/server/observer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQ9C,qBAAa,4BAA4B;;IACrC,OAAO,EAAE,eAAe,CAAC,MAAM,EAAE,CAAM;gBAW3B,MAAM,EAAE,eAAe;IAkE7B,cAAc,CAChB,OAAO,CAAC,EAAE,eAAe,CAAC,uBAAuB,GAClD,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC;CAmD7C"}
@@ -0,0 +1,106 @@
1
+ import { EventEmitter } from "@yume-chan/event";
2
+ import { Ref } from "../utils/index.js";
3
+ import { AdbServerClient } from "./client.js";
4
+ function unorderedRemove(array, index) {
5
+ array[index] = array[array.length - 1];
6
+ array.length -= 1;
7
+ }
8
+ export class AdbServerDeviceObserverOwner {
9
+ current = [];
10
+ #client;
11
+ #stream;
12
+ #observers = [];
13
+ constructor(client) {
14
+ this.#client = client;
15
+ }
16
+ async #receive(stream) {
17
+ try {
18
+ while (true) {
19
+ const response = await stream.readString();
20
+ const next = AdbServerClient.parseDeviceList(response);
21
+ const added = [];
22
+ for (const nextDevice of next) {
23
+ const index = this.current.findIndex((device) => device.transportId === nextDevice.transportId);
24
+ if (index === -1) {
25
+ added.push(nextDevice);
26
+ continue;
27
+ }
28
+ unorderedRemove(this.current, index);
29
+ }
30
+ if (added.length) {
31
+ for (const observer of this.#observers) {
32
+ observer.onDeviceAdd.fire(added);
33
+ }
34
+ }
35
+ if (this.current.length) {
36
+ for (const observer of this.#observers) {
37
+ observer.onDeviceRemove.fire(this.current);
38
+ }
39
+ }
40
+ this.current = next;
41
+ for (const observer of this.#observers) {
42
+ observer.onListChange.fire(this.current);
43
+ }
44
+ }
45
+ }
46
+ catch (e) {
47
+ for (const observer of this.#observers) {
48
+ observer.onError.fire(e);
49
+ }
50
+ }
51
+ }
52
+ async #connect() {
53
+ const stream = await this.#client.createConnection("host:track-devices-l",
54
+ // Each individual observer will ref depending on their options
55
+ { unref: true });
56
+ void this.#receive(stream);
57
+ return stream;
58
+ }
59
+ async #handleObserverStop(stream) {
60
+ if (this.#observers.length === 0) {
61
+ this.#stream = undefined;
62
+ await stream.dispose();
63
+ }
64
+ }
65
+ async createObserver(options) {
66
+ if (options?.signal?.aborted) {
67
+ throw options.signal.reason;
68
+ }
69
+ this.#stream ??= this.#connect();
70
+ const stream = await this.#stream;
71
+ if (options?.signal?.aborted) {
72
+ await this.#handleObserverStop(stream);
73
+ throw options.signal.reason;
74
+ }
75
+ const onDeviceAdd = new EventEmitter();
76
+ const onDeviceRemove = new EventEmitter();
77
+ const onListChange = new EventEmitter();
78
+ const onError = new EventEmitter();
79
+ const observer = { onDeviceAdd, onDeviceRemove, onListChange, onError };
80
+ this.#observers.push(observer);
81
+ const ref = new Ref(options);
82
+ const stop = async () => {
83
+ const index = self.#observers.indexOf(observer);
84
+ if (index === -1) {
85
+ return;
86
+ }
87
+ unorderedRemove(this.#observers, index);
88
+ await this.#handleObserverStop(stream);
89
+ ref.unref();
90
+ };
91
+ options?.signal?.addEventListener("abort", () => void stop());
92
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
93
+ const self = this;
94
+ return {
95
+ onDeviceAdd: onDeviceAdd.event,
96
+ onDeviceRemove: onDeviceRemove.event,
97
+ onListChange: onListChange.event,
98
+ onError: onError.event,
99
+ get current() {
100
+ return self.current;
101
+ },
102
+ stop,
103
+ };
104
+ }
105
+ }
106
+ //# sourceMappingURL=observer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer.js","sourceRoot":"","sources":["../../src/server/observer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { MaybePromiseLike } from "@yume-chan/async";
2
+ import type { AdbServerClient } from "./client.js";
3
+ export declare const FAIL: Uint8Array<ArrayBufferLike>;
4
+ export declare class AdbServerStream {
5
+ #private;
6
+ constructor(connection: AdbServerClient.ServerConnection);
7
+ readExactly(length: number): MaybePromiseLike<Uint8Array>;
8
+ readString: (this: AdbServerStream) => MaybePromiseLike<string>;
9
+ readOkay(): Promise<void>;
10
+ writeString(value: string): Promise<void>;
11
+ release(): {
12
+ readable: import("@yume-chan/stream-extra").ReadableStream<Uint8Array<ArrayBufferLike>>;
13
+ writable: import("@yume-chan/stream-extra/esm/types.js").WritableStream<import("@yume-chan/stream-extra").MaybeConsumable<Uint8Array<ArrayBufferLike>>>;
14
+ closed: Promise<void>;
15
+ close: () => MaybePromiseLike<void>;
16
+ };
17
+ dispose(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/server/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAgBzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,eAAO,MAAM,IAAI,6BAAqB,CAAC;AAEvC,qBAAa,eAAe;;gBAKZ,UAAU,EAAE,eAAe,CAAC,gBAAgB;IAMxD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAIzD,UAAU,sDAmBP;IAEG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBzB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,OAAO;;;;;;IAUD,OAAO;CAKhB"}