@yume-chan/adb 1.0.0 → 2.0.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.
Files changed (217) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +1 -1
  3. package/esm/adb.d.ts +7 -6
  4. package/esm/adb.d.ts.map +1 -1
  5. package/esm/adb.js +22 -22
  6. package/esm/adb.js.map +1 -1
  7. package/esm/banner.js.map +1 -1
  8. package/esm/commands/base.d.ts +3 -2
  9. package/esm/commands/base.d.ts.map +1 -1
  10. package/esm/commands/base.js +6 -3
  11. package/esm/commands/base.js.map +1 -1
  12. package/esm/commands/framebuffer.d.ts +6 -6
  13. package/esm/commands/power.d.ts +2 -2
  14. package/esm/commands/power.d.ts.map +1 -1
  15. package/esm/commands/power.js +4 -4
  16. package/esm/commands/power.js.map +1 -1
  17. package/esm/commands/reverse.d.ts +3 -4
  18. package/esm/commands/reverse.d.ts.map +1 -1
  19. package/esm/commands/reverse.js +5 -10
  20. package/esm/commands/reverse.js.map +1 -1
  21. package/esm/commands/subprocess/index.d.ts +3 -2
  22. package/esm/commands/subprocess/index.d.ts.map +1 -1
  23. package/esm/commands/subprocess/index.js +3 -2
  24. package/esm/commands/subprocess/index.js.map +1 -1
  25. package/esm/commands/subprocess/none/index.d.ts +5 -0
  26. package/esm/commands/subprocess/none/index.d.ts.map +1 -0
  27. package/esm/commands/subprocess/none/index.js +5 -0
  28. package/esm/commands/subprocess/none/index.js.map +1 -0
  29. package/esm/commands/subprocess/none/process.d.ts +13 -0
  30. package/esm/commands/subprocess/none/process.d.ts.map +1 -0
  31. package/esm/commands/subprocess/none/process.js +36 -0
  32. package/esm/commands/subprocess/none/process.js.map +1 -0
  33. package/esm/commands/subprocess/none/pty.d.ts +15 -0
  34. package/esm/commands/subprocess/none/pty.d.ts.map +1 -0
  35. package/esm/commands/subprocess/none/pty.js +29 -0
  36. package/esm/commands/subprocess/none/pty.js.map +1 -0
  37. package/esm/commands/subprocess/none/service.d.ts +10 -0
  38. package/esm/commands/subprocess/none/service.d.ts.map +1 -0
  39. package/esm/commands/subprocess/none/service.js +32 -0
  40. package/esm/commands/subprocess/none/service.js.map +1 -0
  41. package/esm/commands/subprocess/none/spawner.d.ts +19 -0
  42. package/esm/commands/subprocess/none/spawner.d.ts.map +1 -0
  43. package/esm/commands/subprocess/none/spawner.js +26 -0
  44. package/esm/commands/subprocess/none/spawner.js.map +1 -0
  45. package/esm/commands/subprocess/pty.d.ts +10 -0
  46. package/esm/commands/subprocess/pty.d.ts.map +1 -0
  47. package/esm/commands/subprocess/pty.js +2 -0
  48. package/esm/commands/subprocess/pty.js.map +1 -0
  49. package/esm/commands/subprocess/service.d.ts +11 -0
  50. package/esm/commands/subprocess/service.d.ts.map +1 -0
  51. package/esm/commands/subprocess/service.js +25 -0
  52. package/esm/commands/subprocess/service.js.map +1 -0
  53. package/esm/commands/subprocess/shell/index.d.ts +6 -0
  54. package/esm/commands/subprocess/shell/index.d.ts.map +1 -0
  55. package/esm/commands/subprocess/shell/index.js +6 -0
  56. package/esm/commands/subprocess/shell/index.js.map +1 -0
  57. package/esm/commands/subprocess/shell/process.d.ts +15 -0
  58. package/esm/commands/subprocess/shell/process.d.ts.map +1 -0
  59. package/esm/commands/subprocess/{protocols/shell.js → shell/process.js} +27 -54
  60. package/esm/commands/subprocess/shell/process.js.map +1 -0
  61. package/esm/commands/subprocess/shell/pty.d.ts +15 -0
  62. package/esm/commands/subprocess/shell/pty.d.ts.map +1 -0
  63. package/esm/commands/subprocess/shell/pty.js +76 -0
  64. package/esm/commands/subprocess/shell/pty.js.map +1 -0
  65. package/esm/commands/subprocess/shell/service.d.ts +14 -0
  66. package/esm/commands/subprocess/shell/service.d.ts.map +1 -0
  67. package/esm/commands/subprocess/shell/service.js +41 -0
  68. package/esm/commands/subprocess/shell/service.js.map +1 -0
  69. package/esm/commands/subprocess/shell/shared.d.ts +19 -0
  70. package/esm/commands/subprocess/shell/shared.d.ts.map +1 -0
  71. package/esm/commands/subprocess/shell/shared.js +15 -0
  72. package/esm/commands/subprocess/shell/shared.js.map +1 -0
  73. package/esm/commands/subprocess/shell/spawner.d.ts +24 -0
  74. package/esm/commands/subprocess/shell/spawner.d.ts.map +1 -0
  75. package/esm/commands/subprocess/shell/spawner.js +38 -0
  76. package/esm/commands/subprocess/shell/spawner.js.map +1 -0
  77. package/esm/commands/subprocess/utils.d.ts +1 -0
  78. package/esm/commands/subprocess/utils.d.ts.map +1 -1
  79. package/esm/commands/subprocess/utils.js +37 -0
  80. package/esm/commands/subprocess/utils.js.map +1 -1
  81. package/esm/commands/sync/list.d.ts +12 -8
  82. package/esm/commands/sync/list.d.ts.map +1 -1
  83. package/esm/commands/sync/list.js +5 -7
  84. package/esm/commands/sync/list.js.map +1 -1
  85. package/esm/commands/sync/pull.d.ts +4 -4
  86. package/esm/commands/sync/pull.d.ts.map +1 -1
  87. package/esm/commands/sync/pull.js +2 -7
  88. package/esm/commands/sync/pull.js.map +1 -1
  89. package/esm/commands/sync/push.d.ts +4 -4
  90. package/esm/commands/sync/request.d.ts +1 -1
  91. package/esm/commands/sync/response.d.ts +5 -5
  92. package/esm/commands/sync/response.d.ts.map +1 -1
  93. package/esm/commands/sync/response.js +2 -1
  94. package/esm/commands/sync/response.js.map +1 -1
  95. package/esm/commands/sync/stat.d.ts +4 -4
  96. package/esm/commands/sync/sync.d.ts +2 -2
  97. package/esm/commands/sync/sync.js +1 -1
  98. package/esm/commands/sync/sync.js.map +1 -1
  99. package/esm/commands/tcpip.d.ts +2 -2
  100. package/esm/commands/tcpip.js +2 -2
  101. package/esm/daemon/dispatcher.d.ts.map +1 -1
  102. package/esm/daemon/dispatcher.js.map +1 -1
  103. package/esm/daemon/packet.d.ts +6 -4
  104. package/esm/daemon/packet.d.ts.map +1 -1
  105. package/esm/daemon/packet.js +3 -5
  106. package/esm/daemon/packet.js.map +1 -1
  107. package/esm/daemon/socket.d.ts +2 -2
  108. package/esm/daemon/socket.d.ts.map +1 -1
  109. package/esm/daemon/socket.js +1 -1
  110. package/esm/daemon/socket.js.map +1 -1
  111. package/esm/device-observer.d.ts +4 -4
  112. package/esm/device-observer.d.ts.map +1 -1
  113. package/esm/server/client.d.ts +15 -57
  114. package/esm/server/client.d.ts.map +1 -1
  115. package/esm/server/client.js +66 -263
  116. package/esm/server/client.js.map +1 -1
  117. package/esm/server/commands/index.d.ts +3 -0
  118. package/esm/server/commands/index.d.ts.map +1 -0
  119. package/esm/server/commands/index.js +3 -0
  120. package/esm/server/commands/index.js.map +1 -0
  121. package/esm/server/commands/m-dns.d.ts +12 -0
  122. package/esm/server/commands/m-dns.d.ts.map +1 -0
  123. package/esm/server/commands/m-dns.js +38 -0
  124. package/esm/server/commands/m-dns.js.map +1 -0
  125. package/esm/server/commands/wireless.d.ts +27 -0
  126. package/esm/server/commands/wireless.d.ts.map +1 -0
  127. package/esm/server/commands/wireless.js +82 -0
  128. package/esm/server/commands/wireless.js.map +1 -0
  129. package/esm/server/index.d.ts +2 -0
  130. package/esm/server/index.d.ts.map +1 -1
  131. package/esm/server/index.js +2 -0
  132. package/esm/server/index.js.map +1 -1
  133. package/esm/server/observer.d.ts +9 -0
  134. package/esm/server/observer.d.ts.map +1 -0
  135. package/esm/server/observer.js +128 -0
  136. package/esm/server/observer.js.map +1 -0
  137. package/esm/server/stream.d.ts +19 -0
  138. package/esm/server/stream.d.ts.map +1 -0
  139. package/esm/server/stream.js +77 -0
  140. package/esm/server/stream.js.map +1 -0
  141. package/esm/server/transport.d.ts +3 -4
  142. package/esm/server/transport.d.ts.map +1 -1
  143. package/esm/server/transport.js +18 -16
  144. package/esm/server/transport.js.map +1 -1
  145. package/esm/utils/index.d.ts +1 -0
  146. package/esm/utils/index.d.ts.map +1 -1
  147. package/esm/utils/index.js +1 -0
  148. package/esm/utils/index.js.map +1 -1
  149. package/esm/utils/ref.d.ts +18 -0
  150. package/esm/utils/ref.d.ts.map +1 -0
  151. package/esm/utils/ref.js +29 -0
  152. package/esm/utils/ref.js.map +1 -0
  153. package/package.json +10 -10
  154. package/src/adb.ts +29 -28
  155. package/src/banner.ts +4 -4
  156. package/src/commands/base.ts +6 -3
  157. package/src/commands/power.ts +6 -6
  158. package/src/commands/reverse.ts +9 -12
  159. package/src/commands/subprocess/index.ts +3 -2
  160. package/src/commands/subprocess/none/index.ts +4 -0
  161. package/src/commands/subprocess/none/process.ts +56 -0
  162. package/src/commands/subprocess/none/pty.ts +45 -0
  163. package/src/commands/subprocess/none/service.ts +42 -0
  164. package/src/commands/subprocess/none/spawner.ts +68 -0
  165. package/src/commands/subprocess/pty.ts +15 -0
  166. package/src/commands/subprocess/service.ts +32 -0
  167. package/src/commands/subprocess/shell/index.ts +5 -0
  168. package/src/commands/subprocess/shell/process.ts +127 -0
  169. package/src/commands/subprocess/shell/pty.ts +112 -0
  170. package/src/commands/subprocess/shell/service.ts +58 -0
  171. package/src/commands/subprocess/shell/shared.ts +25 -0
  172. package/src/commands/subprocess/shell/spawner.ts +90 -0
  173. package/src/commands/subprocess/utils.ts +41 -0
  174. package/src/commands/sync/list.ts +7 -17
  175. package/src/commands/sync/pull.ts +2 -8
  176. package/src/commands/sync/response.ts +6 -4
  177. package/src/commands/sync/sync.ts +1 -1
  178. package/src/commands/tcpip.ts +2 -2
  179. package/src/daemon/dispatcher.ts +7 -4
  180. package/src/daemon/packet.ts +4 -8
  181. package/src/daemon/socket.ts +6 -6
  182. package/src/device-observer.ts +4 -4
  183. package/src/server/client.ts +100 -305
  184. package/src/server/commands/index.ts +2 -0
  185. package/src/server/commands/m-dns.ts +43 -0
  186. package/src/server/commands/wireless.ts +94 -0
  187. package/src/server/index.ts +2 -0
  188. package/src/server/observer.ts +172 -0
  189. package/src/server/stream.ts +100 -0
  190. package/src/server/transport.ts +38 -34
  191. package/src/utils/index.ts +1 -0
  192. package/src/utils/ref.ts +37 -0
  193. package/tsconfig.build.tsbuildinfo +1 -1
  194. package/esm/commands/subprocess/command.d.ts +0 -58
  195. package/esm/commands/subprocess/command.d.ts.map +0 -1
  196. package/esm/commands/subprocess/command.js +0 -89
  197. package/esm/commands/subprocess/command.js.map +0 -1
  198. package/esm/commands/subprocess/protocols/index.d.ts +0 -4
  199. package/esm/commands/subprocess/protocols/index.d.ts.map +0 -1
  200. package/esm/commands/subprocess/protocols/index.js +0 -4
  201. package/esm/commands/subprocess/protocols/index.js.map +0 -1
  202. package/esm/commands/subprocess/protocols/none.d.ts +0 -32
  203. package/esm/commands/subprocess/protocols/none.d.ts.map +0 -1
  204. package/esm/commands/subprocess/protocols/none.js +0 -61
  205. package/esm/commands/subprocess/protocols/none.js.map +0 -1
  206. package/esm/commands/subprocess/protocols/shell.d.ts +0 -42
  207. package/esm/commands/subprocess/protocols/shell.d.ts.map +0 -1
  208. package/esm/commands/subprocess/protocols/shell.js.map +0 -1
  209. package/esm/commands/subprocess/protocols/types.d.ts +0 -49
  210. package/esm/commands/subprocess/protocols/types.d.ts.map +0 -1
  211. package/esm/commands/subprocess/protocols/types.js +0 -2
  212. package/esm/commands/subprocess/protocols/types.js.map +0 -1
  213. package/src/commands/subprocess/command.ts +0 -141
  214. package/src/commands/subprocess/protocols/index.ts +0 -3
  215. package/src/commands/subprocess/protocols/none.ts +0 -81
  216. package/src/commands/subprocess/protocols/shell.ts +0 -171
  217. package/src/commands/subprocess/protocols/types.ts +0 -63
@@ -25,7 +25,7 @@ export declare class AdbDaemonSocketController implements AdbDaemonSocketInfo, A
25
25
  readonly service: string;
26
26
  get readable(): ReadableStream<Uint8Array<ArrayBufferLike>>;
27
27
  readonly writable: WritableStream<MaybeConsumable<Uint8Array>>;
28
- get closed(): Promise<void>;
28
+ get closed(): Promise<undefined>;
29
29
  get socket(): AdbDaemonSocket;
30
30
  constructor(options: AdbDaemonSocketInit);
31
31
  enqueue(data: Uint8Array): Promise<void>;
@@ -44,7 +44,7 @@ export declare class AdbDaemonSocket implements AdbDaemonSocketInfo, AdbSocket {
44
44
  get service(): string;
45
45
  get readable(): ReadableStream<Uint8Array>;
46
46
  get writable(): WritableStream<MaybeConsumable<Uint8Array>>;
47
- get closed(): Promise<void>;
47
+ get closed(): Promise<undefined>;
48
48
  constructor(controller: AdbDaemonSocketController);
49
49
  close(): Promise<void>;
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAER,cAAc,EACd,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC5D,UAAU,EAAE,mBAAmB,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,yBACT,YAAW,mBAAmB,EAAE,SAAS,EAAE,UAAU;;IAIrD,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAI1B,IAAI,QAAQ,gDAEX;IAGD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAK/D,IAAI,MAAM,kBAET;IAGD,IAAI,MAAM,oBAET;gBAaW,OAAO,EAAE,mBAAmB;IA8DlC,OAAO,CAAC,IAAI,EAAE,UAAU;IAIvB,GAAG,CAAC,KAAK,EAAE,MAAM;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B,OAAO;CAIV;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,mBAAmB,EAAE,SAAS;;IAGlE,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEzC;IACD,IAAI,QAAQ,IAAI,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAE1D;IAED,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;gBAEW,UAAU,EAAE,yBAAyB;IAIjD,KAAK;CAGR"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAER,cAAc,EACd,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG3D,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC5D,UAAU,EAAE,mBAAmB,CAAC;IAEhC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,yBACT,YAAW,mBAAmB,EAAE,SAAS,EAAE,UAAU;;IAIrD,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAI1B,IAAI,QAAQ,gDAEX;IAGD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;IAK/D,IAAI,MAAM,uBAET;IAGD,IAAI,MAAM,oBAET;gBAaW,OAAO,EAAE,mBAAmB;IA8DlC,OAAO,CAAC,IAAI,EAAE,UAAU;IAIvB,GAAG,CAAC,KAAK,EAAE,MAAM;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB5B,OAAO;CAIV;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,mBAAmB,EAAE,SAAS;;IAGlE,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,CAEzC;IACD,IAAI,QAAQ,IAAI,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAE1D;IAED,IAAI,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAE/B;gBAEW,UAAU,EAAE,yBAAyB;IAIjD,KAAK;CAGR"}
@@ -102,7 +102,7 @@ export class AdbDaemonSocketController {
102
102
  }
103
103
  dispose() {
104
104
  this.#readableController.close();
105
- this.#closedPromise.resolve();
105
+ this.#closedPromise.resolve(undefined);
106
106
  }
107
107
  }
108
108
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/daemon/socket.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { Event } from "@yume-chan/event";
3
3
  export interface DeviceObserver<T> {
4
- onDeviceAdd: Event<T[]>;
5
- onDeviceRemove: Event<T[]>;
6
- onListChange: Event<T[]>;
7
- current: T[];
4
+ readonly onDeviceAdd: Event<readonly T[]>;
5
+ readonly onDeviceRemove: Event<readonly T[]>;
6
+ readonly onListChange: Event<readonly T[]>;
7
+ readonly current: readonly T[];
8
8
  stop(): MaybePromiseLike<void>;
9
9
  }
10
10
  //# sourceMappingURL=device-observer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"device-observer.d.ts","sourceRoot":"","sources":["../src/device-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACxB,cAAc,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3B,YAAY,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAClC"}
1
+ {"version":3,"file":"device-observer.d.ts","sourceRoot":"","sources":["../src/device-observer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,cAAc,CAAC,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;IAC/B,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAClC"}
@@ -4,39 +4,29 @@ 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 { MDnsCommands, WirelessCommands, AlreadyConnectedError as _AlreadyConnectedError, NetworkError as _NetworkError, UnauthorizedError as _UnauthorizedError } from "./commands/index.js";
8
+ import { AdbServerStream } from "./stream.js";
7
9
  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
10
  /**
24
11
  * Client for the ADB Server.
25
12
  */
26
13
  export declare class AdbServerClient {
27
- static readonly VERSION = 41;
14
+ #private;
15
+ static NetworkError: typeof _NetworkError;
16
+ static UnauthorizedError: typeof _UnauthorizedError;
17
+ static AlreadyConnectedError: typeof _AlreadyConnectedError;
28
18
  static parseDeviceList(value: string): AdbServerClient.Device[];
29
19
  static formatDeviceService(device: AdbServerClient.DeviceSelector, command: string): string;
30
20
  readonly connector: AdbServerClient.ServerConnector;
31
- readonly wireless: AdbServerClient.WirelessCommands;
32
- readonly mDns: AdbServerClient.MDnsCommands;
21
+ readonly wireless: WirelessCommands;
22
+ readonly mDns: MDnsCommands;
33
23
  constructor(connector: AdbServerClient.ServerConnector);
34
24
  createConnection(request: string, options?: AdbServerClient.ServerConnectionOptions): Promise<AdbServerStream>;
35
25
  /**
36
26
  * `adb version`
37
27
  */
38
28
  getVersion(): Promise<number>;
39
- validateVersion(): Promise<void>;
29
+ validateVersion(minimalVersion: number): Promise<void>;
40
30
  /**
41
31
  * `adb kill-server`
42
32
  */
@@ -54,7 +44,7 @@ export declare class AdbServerClient {
54
44
  /**
55
45
  * Monitors device list changes.
56
46
  */
57
- trackDevices(): Promise<AdbServerClient.DeviceObserver>;
47
+ trackDevices(options?: AdbServerClient.ServerConnectionOptions): Promise<AdbServerClient.DeviceObserver>;
58
48
  /**
59
49
  * `adb -s <device> reconnect` or `adb reconnect offline`
60
50
  */
@@ -88,6 +78,7 @@ export declare class AdbServerClient {
88
78
  * @returns A promise that resolves when the condition is met.
89
79
  */
90
80
  waitFor(device: AdbServerClient.DeviceSelector, state: "device" | "disconnect", options?: AdbServerClient.ServerConnectionOptions): Promise<void>;
81
+ waitForDisconnect(transportId: bigint, options?: AdbServerClient.ServerConnectionOptions): Promise<void>;
91
82
  /**
92
83
  * Creates an ADB Transport for the specified device.
93
84
  */
@@ -100,7 +91,7 @@ export declare namespace AdbServerClient {
100
91
  signal?: AbortSignal | undefined;
101
92
  }
102
93
  interface ServerConnection extends ReadableWritablePair<Uint8Array, MaybeConsumable<Uint8Array>>, Closeable {
103
- get closed(): Promise<void>;
94
+ get closed(): Promise<undefined>;
104
95
  }
105
96
  interface ServerConnector {
106
97
  connect(options?: ServerConnectionOptions): MaybePromiseLike<ServerConnection>;
@@ -131,44 +122,11 @@ export declare namespace AdbServerClient {
131
122
  device?: string | undefined;
132
123
  transportId: bigint;
133
124
  }
134
- class NetworkError extends Error {
135
- constructor(message: string);
136
- }
137
- class UnauthorizedError extends Error {
138
- constructor(message: string);
139
- }
140
- class AlreadyConnectedError extends Error {
141
- constructor(message: string);
142
- }
143
- class WirelessCommands {
144
- #private;
145
- constructor(client: AdbServerClient);
146
- /**
147
- * `adb pair <password> <address>`
148
- */
149
- pair(address: string, password: string): Promise<void>;
150
- /**
151
- * `adb connect <address>`
152
- */
153
- connect(address: string): Promise<void>;
154
- /**
155
- * `adb disconnect <address>`
156
- */
157
- disconnect(address: string): Promise<void>;
158
- }
159
- class MDnsCommands {
160
- #private;
161
- constructor(client: AdbServerClient);
162
- check(): Promise<boolean>;
163
- getServices(): Promise<{
164
- name: string;
165
- service: string;
166
- address: string;
167
- }[]>;
168
- }
169
125
  interface DeviceObserver extends DeviceObserverBase<Device> {
170
126
  onError: Event<Error>;
171
127
  }
128
+ type NetworkError = _NetworkError;
129
+ type UnauthorizedError = _UnauthorizedError;
130
+ type AlreadyConnectedError = _AlreadyConnectedError;
172
131
  }
173
- export {};
174
132
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"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"}
@@ -1,90 +1,20 @@
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 } from "../utils/index.js";
7
+ import { MDnsCommands, WirelessCommands, AlreadyConnectedError as _AlreadyConnectedError, NetworkError as _NetworkError, UnauthorizedError as _UnauthorizedError, } from "./commands/index.js";
8
+ import { AdbServerDeviceObserverOwner } from "./observer.js";
9
+ import { AdbServerStream } from "./stream.js";
9
10
  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
11
  /**
84
12
  * Client for the ADB Server.
85
13
  */
86
14
  export class AdbServerClient {
87
- static VERSION = 41;
15
+ static NetworkError = _NetworkError;
16
+ static UnauthorizedError = _UnauthorizedError;
17
+ static AlreadyConnectedError = _AlreadyConnectedError;
88
18
  static parseDeviceList(value) {
89
19
  const devices = [];
90
20
  for (const line of value.split("\n")) {
@@ -151,8 +81,9 @@ export class AdbServerClient {
151
81
  throw new TypeError("Invalid device selector");
152
82
  }
153
83
  connector;
154
- wireless = new AdbServerClient.WirelessCommands(this);
155
- mDns = new AdbServerClient.MDnsCommands(this);
84
+ wireless = new WirelessCommands(this);
85
+ mDns = new MDnsCommands(this);
86
+ #observerOwner = new AdbServerDeviceObserverOwner(this);
156
87
  constructor(connector) {
157
88
  this.connector = connector;
158
89
  }
@@ -191,10 +122,10 @@ export class AdbServerClient {
191
122
  await connection.dispose();
192
123
  }
193
124
  }
194
- async validateVersion() {
125
+ async validateVersion(minimalVersion) {
195
126
  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})`);
127
+ if (version < minimalVersion) {
128
+ throw new Error(`adb server version (${version}) doesn't match this client (${minimalVersion})`);
198
129
  }
199
130
  }
200
131
  /**
@@ -235,52 +166,8 @@ export class AdbServerClient {
235
166
  /**
236
167
  * Monitors device list changes.
237
168
  */
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
- };
169
+ async trackDevices(options) {
170
+ return this.#observerOwner.createObserver(options);
284
171
  }
285
172
  /**
286
173
  * `adb -s <device> reconnect` or `adb reconnect offline`
@@ -339,10 +226,10 @@ export class AdbServerClient {
339
226
  * @returns An `AdbServerClient.Socket` that can be used to communicate with the service
340
227
  */
341
228
  async createDeviceConnection(device, service) {
342
- await this.validateVersion();
343
229
  let switchService;
344
230
  let transportId;
345
231
  if (!device) {
232
+ await this.validateVersion(41);
346
233
  switchService = `host:tport:any`;
347
234
  }
348
235
  else if ("transportId" in device) {
@@ -350,12 +237,15 @@ export class AdbServerClient {
350
237
  transportId = device.transportId;
351
238
  }
352
239
  else if ("serial" in device) {
240
+ await this.validateVersion(41);
353
241
  switchService = `host:tport:serial:${device.serial}`;
354
242
  }
355
243
  else if ("usb" in device) {
244
+ await this.validateVersion(41);
356
245
  switchService = `host:tport:usb`;
357
246
  }
358
247
  else if ("tcp" in device) {
248
+ await this.validateVersion(41);
359
249
  switchService = `host:tport:local`;
360
250
  }
361
251
  else {
@@ -394,17 +284,7 @@ export class AdbServerClient {
394
284
  throw e;
395
285
  }
396
286
  }
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) {
287
+ async #waitForUnchecked(device, state, options) {
408
288
  let type;
409
289
  if (!device) {
410
290
  type = "any";
@@ -435,6 +315,43 @@ export class AdbServerClient {
435
315
  await connection.dispose();
436
316
  }
437
317
  }
318
+ /**
319
+ * Wait for a device to be connected or disconnected.
320
+ *
321
+ * `adb wait-for-<state>`
322
+ *
323
+ * @param device The device selector
324
+ * @param state The state to wait for
325
+ * @param options The options
326
+ * @returns A promise that resolves when the condition is met.
327
+ */
328
+ async waitFor(device, state, options) {
329
+ if (state === "disconnect") {
330
+ await this.validateVersion(41);
331
+ }
332
+ return this.#waitForUnchecked(device, state, options);
333
+ }
334
+ async waitForDisconnect(transportId, options) {
335
+ const serverVersion = await this.getVersion();
336
+ if (serverVersion >= 41) {
337
+ return this.#waitForUnchecked({ transportId }, "disconnect", options);
338
+ }
339
+ else {
340
+ const observer = await this.trackDevices(options);
341
+ return new Promise((resolve, reject) => {
342
+ observer.onDeviceRemove((devices) => {
343
+ if (devices.some((device) => device.transportId === transportId)) {
344
+ observer.stop();
345
+ resolve();
346
+ }
347
+ });
348
+ observer.onError((e) => {
349
+ observer.stop();
350
+ reject(e);
351
+ });
352
+ });
353
+ }
354
+ }
438
355
  /**
439
356
  * Creates an ADB Transport for the specified device.
440
357
  */
@@ -443,7 +360,14 @@ export class AdbServerClient {
443
360
  const devices = await this.getDevices();
444
361
  const info = devices.find((device) => device.transportId === transportId);
445
362
  const banner = new AdbBanner(info?.product, info?.model, info?.device, features);
446
- return new AdbServerTransport(this, info?.serial ?? "", banner, transportId);
363
+ const waitAbortController = new AbortController();
364
+ const disconnected = this.waitForDisconnect(transportId, {
365
+ unref: true,
366
+ signal: waitAbortController.signal,
367
+ });
368
+ const transport = new AdbServerTransport(this, info?.serial ?? "", banner, transportId, disconnected);
369
+ void transport.disconnected.finally(() => waitAbortController.abort());
370
+ return transport;
447
371
  }
448
372
  }
449
373
  export async function raceSignal(callback, ...signals) {
@@ -472,125 +396,4 @@ export async function raceSignal(callback, ...signals) {
472
396
  }
473
397
  }
474
398
  }
475
- (function (AdbServerClient) {
476
- class NetworkError extends Error {
477
- constructor(message) {
478
- super(message);
479
- this.name = "NetworkError";
480
- }
481
- }
482
- AdbServerClient.NetworkError = NetworkError;
483
- class UnauthorizedError extends Error {
484
- constructor(message) {
485
- super(message);
486
- this.name = "UnauthorizedError";
487
- }
488
- }
489
- AdbServerClient.UnauthorizedError = UnauthorizedError;
490
- class AlreadyConnectedError extends Error {
491
- constructor(message) {
492
- super(message);
493
- this.name = "AlreadyConnectedError";
494
- }
495
- }
496
- AdbServerClient.AlreadyConnectedError = AlreadyConnectedError;
497
- class WirelessCommands {
498
- #client;
499
- constructor(client) {
500
- this.#client = client;
501
- }
502
- /**
503
- * `adb pair <password> <address>`
504
- */
505
- async pair(address, password) {
506
- const connection = await this.#client.createConnection(`host:pair:${password}:${address}`);
507
- try {
508
- const response = await connection.readExactly(4);
509
- // `response` is either `FAIL`, or 4 hex digits for length of the string
510
- if (sequenceEqual(response, FAIL)) {
511
- throw new Error(await connection.readString());
512
- }
513
- const length = hexToNumber(response);
514
- // Ignore the string as it's always `Successful ...`
515
- await connection.readExactly(length);
516
- }
517
- finally {
518
- await connection.dispose();
519
- }
520
- }
521
- /**
522
- * `adb connect <address>`
523
- */
524
- async connect(address) {
525
- const connection = await this.#client.createConnection(`host:connect:${address}`);
526
- try {
527
- const response = await connection.readString();
528
- switch (response) {
529
- case `already connected to ${address}`:
530
- throw new AdbServerClient.AlreadyConnectedError(response);
531
- case `failed to connect to ${address}`: // `adb pair` mode not authorized
532
- case `failed to authenticate to ${address}`: // `adb tcpip` mode not authorized
533
- throw new AdbServerClient.UnauthorizedError(response);
534
- case `connected to ${address}`:
535
- return;
536
- default:
537
- throw new AdbServerClient.NetworkError(response);
538
- }
539
- }
540
- finally {
541
- await connection.dispose();
542
- }
543
- }
544
- /**
545
- * `adb disconnect <address>`
546
- */
547
- async disconnect(address) {
548
- const connection = await this.#client.createConnection(`host:disconnect:${address}`);
549
- try {
550
- await connection.readString();
551
- }
552
- finally {
553
- await connection.dispose();
554
- }
555
- }
556
- }
557
- AdbServerClient.WirelessCommands = WirelessCommands;
558
- class MDnsCommands {
559
- #client;
560
- constructor(client) {
561
- this.#client = client;
562
- }
563
- async check() {
564
- const connection = await this.#client.createConnection("host:mdns:check");
565
- try {
566
- const response = await connection.readString();
567
- return !response.startsWith("ERROR:");
568
- }
569
- finally {
570
- await connection.dispose();
571
- }
572
- }
573
- async getServices() {
574
- const connection = await this.#client.createConnection("host:mdns:services");
575
- try {
576
- const response = await connection.readString();
577
- return response
578
- .split("\n")
579
- .filter(Boolean)
580
- .map((line) => {
581
- const parts = line.split("\t");
582
- return {
583
- name: parts[0],
584
- service: parts[1],
585
- address: parts[2],
586
- };
587
- });
588
- }
589
- finally {
590
- await connection.dispose();
591
- }
592
- }
593
- }
594
- AdbServerClient.MDnsCommands = MDnsCommands;
595
- })(AdbServerClient || (AdbServerClient = {}));
596
399
  //# sourceMappingURL=client.js.map