@yume-chan/adb 0.0.10 → 0.0.11

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 (318) hide show
  1. package/CHANGELOG.json +26 -0
  2. package/CHANGELOG.md +15 -1
  3. package/LICENSE +1 -1
  4. package/README.md +56 -43
  5. package/esm/adb.d.ts +48 -0
  6. package/esm/adb.d.ts.map +1 -0
  7. package/esm/adb.js +141 -146
  8. package/esm/adb.js.map +1 -1
  9. package/{dts → esm}/auth.d.ts +8 -8
  10. package/esm/auth.d.ts.map +1 -0
  11. package/esm/auth.js +68 -108
  12. package/esm/auth.js.map +1 -1
  13. package/esm/backend.d.ts +9 -0
  14. package/esm/backend.d.ts.map +1 -0
  15. package/{dts → esm}/commands/base.d.ts +1 -1
  16. package/esm/commands/base.d.ts.map +1 -0
  17. package/esm/commands/base.js +1 -0
  18. package/esm/commands/base.js.map +1 -1
  19. package/{dts → esm}/commands/framebuffer.d.ts +3 -3
  20. package/esm/commands/framebuffer.d.ts.map +1 -0
  21. package/esm/commands/framebuffer.js +15 -18
  22. package/esm/commands/framebuffer.js.map +1 -1
  23. package/esm/commands/index.d.ts +9 -0
  24. package/esm/commands/index.d.ts.map +1 -0
  25. package/esm/commands/index.js +8 -8
  26. package/esm/commands/index.js.map +1 -1
  27. package/esm/commands/install.d.ts +4 -0
  28. package/esm/commands/install.d.ts.map +1 -0
  29. package/esm/commands/install.js +21 -13
  30. package/esm/commands/install.js.map +1 -1
  31. package/esm/commands/power.d.ts +23 -0
  32. package/esm/commands/power.d.ts.map +1 -0
  33. package/esm/commands/power.js +45 -0
  34. package/esm/commands/power.js.map +1 -0
  35. package/{dts → esm}/commands/reverse.d.ts +3 -3
  36. package/esm/commands/reverse.d.ts.map +1 -0
  37. package/esm/commands/reverse.js +49 -60
  38. package/esm/commands/reverse.js.map +1 -1
  39. package/esm/commands/subprocess/index.d.ts +57 -0
  40. package/esm/commands/subprocess/index.d.ts.map +1 -0
  41. package/esm/commands/subprocess/index.js +83 -0
  42. package/esm/commands/subprocess/index.js.map +1 -0
  43. package/esm/commands/subprocess/legacy.d.ts +28 -0
  44. package/esm/commands/subprocess/legacy.d.ts.map +1 -0
  45. package/esm/commands/subprocess/legacy.js +44 -0
  46. package/esm/commands/subprocess/legacy.js.map +1 -0
  47. package/esm/commands/subprocess/protocol.d.ts +38 -0
  48. package/esm/commands/subprocess/protocol.d.ts.map +1 -0
  49. package/esm/commands/subprocess/protocol.js +155 -0
  50. package/esm/commands/subprocess/protocol.js.map +1 -0
  51. package/esm/commands/subprocess/types.d.ts +47 -0
  52. package/esm/commands/subprocess/types.d.ts.map +1 -0
  53. package/esm/commands/{shell → subprocess}/types.js +0 -0
  54. package/esm/commands/{shell → subprocess}/types.js.map +1 -1
  55. package/{dts/commands/shell → esm/commands/subprocess}/utils.d.ts +0 -0
  56. package/esm/commands/subprocess/utils.d.ts.map +1 -0
  57. package/esm/commands/{shell → subprocess}/utils.js +0 -0
  58. package/esm/commands/subprocess/utils.js.map +1 -0
  59. package/esm/commands/sync/index.d.ts +8 -0
  60. package/esm/commands/sync/index.d.ts.map +1 -0
  61. package/esm/commands/sync/index.js +7 -7
  62. package/esm/commands/sync/index.js.map +1 -1
  63. package/{dts → esm}/commands/sync/list.d.ts +4 -4
  64. package/esm/commands/sync/list.d.ts.map +1 -0
  65. package/esm/commands/sync/list.js +16 -19
  66. package/esm/commands/sync/list.js.map +1 -1
  67. package/esm/commands/sync/pull.d.ts +11 -0
  68. package/esm/commands/sync/pull.d.ts.map +1 -0
  69. package/esm/commands/sync/pull.js +17 -11
  70. package/esm/commands/sync/pull.js.map +1 -1
  71. package/esm/commands/sync/push.d.ts +8 -0
  72. package/esm/commands/sync/push.d.ts.map +1 -0
  73. package/esm/commands/sync/push.js +19 -37
  74. package/esm/commands/sync/push.js.map +1 -1
  75. package/{dts → esm}/commands/sync/request.d.ts +3 -3
  76. package/esm/commands/sync/request.d.ts.map +1 -0
  77. package/esm/commands/sync/request.js +24 -27
  78. package/esm/commands/sync/request.js.map +1 -1
  79. package/{dts → esm}/commands/sync/response.d.ts +2 -2
  80. package/esm/commands/sync/response.d.ts.map +1 -0
  81. package/esm/commands/sync/response.js +16 -20
  82. package/esm/commands/sync/response.js.map +1 -1
  83. package/{dts → esm}/commands/sync/stat.d.ts +4 -4
  84. package/esm/commands/sync/stat.d.ts.map +1 -0
  85. package/esm/commands/sync/stat.js +22 -27
  86. package/esm/commands/sync/stat.js.map +1 -1
  87. package/esm/commands/sync/sync.d.ts +83 -0
  88. package/esm/commands/sync/sync.d.ts.map +1 -0
  89. package/esm/commands/sync/sync.js +92 -89
  90. package/esm/commands/sync/sync.js.map +1 -1
  91. package/{dts → esm}/commands/tcpip.d.ts +1 -1
  92. package/{dts → esm}/commands/tcpip.d.ts.map +1 -1
  93. package/esm/commands/tcpip.js +14 -19
  94. package/esm/commands/tcpip.js.map +1 -1
  95. package/{dts → esm}/crypto.d.ts +7 -7
  96. package/esm/crypto.d.ts.map +1 -0
  97. package/esm/crypto.js +26 -29
  98. package/esm/crypto.js.map +1 -1
  99. package/{dts → esm}/features.d.ts +0 -0
  100. package/{dts → esm}/features.d.ts.map +0 -0
  101. package/esm/features.js +1 -1
  102. package/esm/features.js.map +1 -1
  103. package/esm/index.d.ts +11 -0
  104. package/esm/index.d.ts.map +1 -0
  105. package/esm/index.js +10 -10
  106. package/esm/index.js.map +1 -1
  107. package/esm/packet.d.ts +28 -0
  108. package/esm/packet.d.ts.map +1 -0
  109. package/esm/packet.js +26 -51
  110. package/esm/packet.js.map +1 -1
  111. package/esm/socket/controller.d.ts +37 -0
  112. package/esm/socket/controller.d.ts.map +1 -0
  113. package/esm/socket/controller.js +52 -66
  114. package/esm/socket/controller.js.map +1 -1
  115. package/{dts → esm}/socket/dispatcher.d.ts +10 -23
  116. package/esm/socket/dispatcher.d.ts.map +1 -0
  117. package/esm/socket/dispatcher.js +148 -164
  118. package/esm/socket/dispatcher.js.map +1 -1
  119. package/esm/socket/index.d.ts +3 -0
  120. package/esm/socket/index.d.ts.map +1 -0
  121. package/esm/socket/index.js +2 -6
  122. package/esm/socket/index.js.map +1 -1
  123. package/esm/socket/socket.d.ts +34 -0
  124. package/esm/socket/socket.d.ts.map +1 -0
  125. package/esm/socket/socket.js +69 -14
  126. package/esm/socket/socket.js.map +1 -1
  127. package/esm/stream/buffered.d.ts +35 -0
  128. package/esm/stream/buffered.d.ts.map +1 -0
  129. package/esm/stream/buffered.js +123 -0
  130. package/esm/stream/buffered.js.map +1 -0
  131. package/esm/stream/detect.bak.d.ts +240 -0
  132. package/esm/stream/detect.bak.d.ts.map +1 -0
  133. package/esm/stream/detect.bak.js +60 -0
  134. package/esm/stream/detect.bak.js.map +1 -0
  135. package/esm/stream/detect.d.ts +18 -0
  136. package/esm/stream/detect.d.ts.map +1 -0
  137. package/esm/stream/detect.js +6 -0
  138. package/esm/stream/detect.js.map +1 -0
  139. package/esm/stream/detect.native.d.ts +240 -0
  140. package/esm/stream/detect.native.d.ts.map +1 -0
  141. package/esm/stream/detect.native.js +60 -0
  142. package/esm/stream/detect.native.js.map +1 -0
  143. package/esm/stream/detect.polyfill.d.ts +18 -0
  144. package/esm/stream/detect.polyfill.d.ts.map +1 -0
  145. package/esm/stream/detect.polyfill.js +6 -0
  146. package/esm/stream/detect.polyfill.js.map +1 -0
  147. package/esm/stream/index.d.ts +4 -0
  148. package/esm/stream/index.d.ts.map +1 -0
  149. package/esm/stream/index.js +3 -2
  150. package/esm/stream/index.js.map +1 -1
  151. package/esm/stream/transform.d.ts +98 -0
  152. package/esm/stream/transform.d.ts.map +1 -0
  153. package/esm/stream/transform.js +352 -0
  154. package/esm/stream/transform.js.map +1 -0
  155. package/{dts → esm}/utils/auto-reset-event.d.ts +1 -1
  156. package/esm/utils/auto-reset-event.d.ts.map +1 -0
  157. package/esm/utils/auto-reset-event.js +2 -1
  158. package/esm/utils/auto-reset-event.js.map +1 -1
  159. package/esm/utils/base64.d.ts +5 -0
  160. package/esm/utils/base64.d.ts.map +1 -0
  161. package/esm/utils/base64.js +116 -80
  162. package/esm/utils/base64.js.map +1 -1
  163. package/esm/utils/encoding.d.ts +3 -0
  164. package/{dts → esm}/utils/encoding.d.ts.map +1 -1
  165. package/esm/utils/encoding.js +1 -1
  166. package/esm/utils/encoding.js.map +1 -1
  167. package/esm/utils/index.d.ts +4 -0
  168. package/esm/utils/index.d.ts.map +1 -0
  169. package/esm/utils/index.js +3 -5
  170. package/esm/utils/index.js.map +1 -1
  171. package/package.json +50 -44
  172. package/src/adb.ts +147 -143
  173. package/src/auth.ts +23 -19
  174. package/src/backend.ts +3 -12
  175. package/src/commands/base.ts +1 -1
  176. package/src/commands/framebuffer.ts +4 -4
  177. package/src/commands/index.ts +8 -8
  178. package/src/commands/install.ts +26 -15
  179. package/src/commands/power.ts +54 -0
  180. package/src/commands/reverse.ts +10 -8
  181. package/src/commands/subprocess/index.ts +124 -0
  182. package/src/commands/subprocess/legacy.ts +58 -0
  183. package/src/commands/subprocess/protocol.ts +185 -0
  184. package/src/commands/subprocess/types.ts +55 -0
  185. package/src/commands/{shell → subprocess}/utils.ts +0 -0
  186. package/src/commands/sync/index.ts +7 -7
  187. package/src/commands/sync/list.ts +7 -6
  188. package/src/commands/sync/pull.ts +27 -18
  189. package/src/commands/sync/push.ts +25 -30
  190. package/src/commands/sync/request.ts +7 -7
  191. package/src/commands/sync/response.ts +4 -4
  192. package/src/commands/sync/stat.ts +8 -6
  193. package/src/commands/sync/sync.ts +64 -32
  194. package/src/commands/tcpip.ts +3 -3
  195. package/src/crypto.ts +38 -43
  196. package/src/index.ts +11 -10
  197. package/src/packet.ts +37 -52
  198. package/src/socket/dispatcher.ts +90 -103
  199. package/src/socket/index.ts +2 -6
  200. package/src/socket/socket.ts +117 -16
  201. package/src/stream/buffered.ts +147 -0
  202. package/src/stream/detect.native.ts +362 -0
  203. package/src/stream/detect.polyfill.ts +25 -0
  204. package/src/stream/detect.ts +25 -0
  205. package/src/stream/index.ts +3 -2
  206. package/src/stream/transform.ts +427 -0
  207. package/src/utils/auto-reset-event.ts +1 -1
  208. package/src/utils/base64.ts +161 -129
  209. package/src/utils/encoding.ts +3 -3
  210. package/src/utils/index.ts +3 -5
  211. package/tsconfig.build.json +3 -0
  212. package/tsconfig.build.tsbuildinfo +1 -0
  213. package/tsconfig.test.json +10 -0
  214. package/dts/adb.d.ts +0 -46
  215. package/dts/adb.d.ts.map +0 -1
  216. package/dts/auth.d.ts.map +0 -1
  217. package/dts/backend.d.ts +0 -13
  218. package/dts/backend.d.ts.map +0 -1
  219. package/dts/commands/base.d.ts.map +0 -1
  220. package/dts/commands/demo-mode.d.ts +0 -41
  221. package/dts/commands/demo-mode.d.ts.map +0 -1
  222. package/dts/commands/framebuffer.d.ts.map +0 -1
  223. package/dts/commands/index.d.ts +0 -9
  224. package/dts/commands/index.d.ts.map +0 -1
  225. package/dts/commands/install.d.ts +0 -3
  226. package/dts/commands/install.d.ts.map +0 -1
  227. package/dts/commands/reverse.d.ts.map +0 -1
  228. package/dts/commands/shell/index.d.ts +0 -46
  229. package/dts/commands/shell/index.d.ts.map +0 -1
  230. package/dts/commands/shell/legacy.d.ts +0 -38
  231. package/dts/commands/shell/legacy.d.ts.map +0 -1
  232. package/dts/commands/shell/protocol.d.ts +0 -45
  233. package/dts/commands/shell/protocol.d.ts.map +0 -1
  234. package/dts/commands/shell/types.d.ts +0 -47
  235. package/dts/commands/shell/types.d.ts.map +0 -1
  236. package/dts/commands/shell/utils.d.ts.map +0 -1
  237. package/dts/commands/sync/index.d.ts +0 -8
  238. package/dts/commands/sync/index.d.ts.map +0 -1
  239. package/dts/commands/sync/list.d.ts.map +0 -1
  240. package/dts/commands/sync/pull.d.ts +0 -11
  241. package/dts/commands/sync/pull.d.ts.map +0 -1
  242. package/dts/commands/sync/push.d.ts +0 -8
  243. package/dts/commands/sync/push.d.ts.map +0 -1
  244. package/dts/commands/sync/request.d.ts.map +0 -1
  245. package/dts/commands/sync/response.d.ts.map +0 -1
  246. package/dts/commands/sync/stat.d.ts.map +0 -1
  247. package/dts/commands/sync/sync.d.ts +0 -68
  248. package/dts/commands/sync/sync.d.ts.map +0 -1
  249. package/dts/crypto.d.ts.map +0 -1
  250. package/dts/index.d.ts +0 -11
  251. package/dts/index.d.ts.map +0 -1
  252. package/dts/packet.d.ts +0 -27
  253. package/dts/packet.d.ts.map +0 -1
  254. package/dts/socket/close-event-emitter.d.ts +0 -8
  255. package/dts/socket/close-event-emitter.d.ts.map +0 -1
  256. package/dts/socket/controller.d.ts +0 -43
  257. package/dts/socket/controller.d.ts.map +0 -1
  258. package/dts/socket/data-event-emitter.d.ts +0 -10
  259. package/dts/socket/data-event-emitter.d.ts.map +0 -1
  260. package/dts/socket/dispatcher.d.ts.map +0 -1
  261. package/dts/socket/index.d.ts +0 -7
  262. package/dts/socket/index.d.ts.map +0 -1
  263. package/dts/socket/logger.d.ts +0 -9
  264. package/dts/socket/logger.d.ts.map +0 -1
  265. package/dts/socket/socket.d.ts +0 -22
  266. package/dts/socket/socket.d.ts.map +0 -1
  267. package/dts/stream/buffered-stream.d.ts +0 -28
  268. package/dts/stream/buffered-stream.d.ts.map +0 -1
  269. package/dts/stream/index.d.ts +0 -3
  270. package/dts/stream/index.d.ts.map +0 -1
  271. package/dts/stream/stream.d.ts +0 -15
  272. package/dts/stream/stream.d.ts.map +0 -1
  273. package/dts/utils/auto-reset-event.d.ts.map +0 -1
  274. package/dts/utils/base64.d.ts +0 -7
  275. package/dts/utils/base64.d.ts.map +0 -1
  276. package/dts/utils/chunk.d.ts +0 -3
  277. package/dts/utils/chunk.d.ts.map +0 -1
  278. package/dts/utils/encoding.d.ts +0 -3
  279. package/dts/utils/event-queue.d.ts +0 -35
  280. package/dts/utils/event-queue.d.ts.map +0 -1
  281. package/dts/utils/index.d.ts +0 -6
  282. package/dts/utils/index.d.ts.map +0 -1
  283. package/esm/commands/demo-mode.js +0 -170
  284. package/esm/commands/demo-mode.js.map +0 -1
  285. package/esm/commands/shell/index.js +0 -62
  286. package/esm/commands/shell/index.js.map +0 -1
  287. package/esm/commands/shell/legacy.js +0 -49
  288. package/esm/commands/shell/legacy.js.map +0 -1
  289. package/esm/commands/shell/protocol.js +0 -106
  290. package/esm/commands/shell/protocol.js.map +0 -1
  291. package/esm/commands/shell/utils.js.map +0 -1
  292. package/esm/socket/close-event-emitter.js +0 -28
  293. package/esm/socket/close-event-emitter.js.map +0 -1
  294. package/esm/socket/data-event-emitter.js +0 -25
  295. package/esm/socket/data-event-emitter.js.map +0 -1
  296. package/esm/socket/logger.js +0 -2
  297. package/esm/socket/logger.js.map +0 -1
  298. package/esm/stream/buffered-stream.js +0 -67
  299. package/esm/stream/buffered-stream.js.map +0 -1
  300. package/esm/stream/stream.js +0 -41
  301. package/esm/stream/stream.js.map +0 -1
  302. package/esm/utils/chunk.js +0 -70
  303. package/esm/utils/chunk.js.map +0 -1
  304. package/esm/utils/event-queue.js +0 -104
  305. package/esm/utils/event-queue.js.map +0 -1
  306. package/src/commands/demo-mode.ts +0 -160
  307. package/src/commands/shell/index.ts +0 -87
  308. package/src/commands/shell/legacy.ts +0 -59
  309. package/src/commands/shell/protocol.ts +0 -121
  310. package/src/commands/shell/types.ts +0 -55
  311. package/src/socket/close-event-emitter.ts +0 -28
  312. package/src/socket/controller.ts +0 -105
  313. package/src/socket/data-event-emitter.ts +0 -27
  314. package/src/socket/logger.ts +0 -12
  315. package/src/stream/buffered-stream.ts +0 -92
  316. package/src/stream/stream.ts +0 -50
  317. package/src/utils/chunk.ts +0 -70
  318. package/src/utils/event-queue.ts +0 -145
@@ -1,32 +1,22 @@
1
1
  import { AutoDisposable } from '@yume-chan/event';
2
- import { AdbBackend } from '../backend';
3
- import { AdbCommand, AdbPacket, AdbPacketInit } from '../packet';
4
- import { AdbLogger } from './logger';
5
- import { AdbSocket } from './socket';
6
- export interface AdbPacketReceivedEventArgs {
7
- handled: boolean;
8
- packet: AdbPacket;
9
- }
2
+ import { AdbCommand, type AdbPacketCore, type AdbPacketInit } from '../packet.js';
3
+ import { type ReadableWritablePair } from '../stream/index.js';
4
+ import { AdbSocket } from './socket.js';
10
5
  export interface AdbIncomingSocketEventArgs {
11
6
  handled: boolean;
12
- packet: AdbPacket;
7
+ packet: AdbPacketCore;
13
8
  serviceString: string;
14
9
  socket: AdbSocket;
15
10
  }
16
11
  export declare class AdbPacketDispatcher extends AutoDisposable {
17
12
  private readonly initializers;
18
13
  private readonly sockets;
19
- private readonly sendLock;
20
- private readonly logger;
21
- readonly backend: AdbBackend;
14
+ private _writer;
22
15
  maxPayloadSize: number;
23
16
  calculateChecksum: boolean;
24
17
  appendNullToServiceString: boolean;
25
- private readonly packetEvent;
26
- get onPacket(): {
27
- (listener: import("@yume-chan/event").EventListener<AdbPacketReceivedEventArgs, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
28
- <TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<AdbPacketReceivedEventArgs, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
29
- };
18
+ private _disconnected;
19
+ get disconnected(): Promise<void>;
30
20
  private readonly incomingSocketEvent;
31
21
  get onIncomingSocket(): {
32
22
  (listener: import("@yume-chan/event").EventListener<AdbIncomingSocketEventArgs, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
@@ -37,17 +27,14 @@ export declare class AdbPacketDispatcher extends AutoDisposable {
37
27
  (listener: import("@yume-chan/event").EventListener<Error, unknown, [], unknown>): import("@yume-chan/event").RemoveEventListener;
38
28
  <TThis, TArgs extends unknown[]>(listener: import("@yume-chan/event").EventListener<Error, TThis, TArgs, unknown>, thisArg: TThis, ...args: TArgs): import("@yume-chan/event").RemoveEventListener;
39
29
  };
40
- private _running;
41
- get running(): boolean;
42
- constructor(backend: AdbBackend, logger?: AdbLogger);
43
- private receiveLoop;
30
+ private _abortController;
31
+ constructor(connection: ReadableWritablePair<AdbPacketCore, AdbPacketInit>);
44
32
  private handleOk;
45
33
  private handleClose;
46
34
  private handleOpen;
47
- start(): void;
48
35
  createSocket(serviceString: string): Promise<AdbSocket>;
49
36
  sendPacket(packet: AdbPacketInit): Promise<void>;
50
- sendPacket(command: AdbCommand, arg0: number, arg1: number, payload?: string | ArrayBuffer): Promise<void>;
37
+ sendPacket(command: AdbCommand, arg0: number, arg1: number, payload?: string | Uint8Array): Promise<void>;
51
38
  dispose(): void;
52
39
  }
53
40
  //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAqB,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAgE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE7H,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,0BAA0B;IACvC,OAAO,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,aAAa,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IAEtB,MAAM,EAAE,SAAS,CAAC;CACrB;AAID,qBAAa,mBAAoB,SAAQ,cAAc;IAGnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAExD,OAAO,CAAC,OAAO,CAA8C;IAEtD,cAAc,SAAK;IACnB,iBAAiB,UAAQ;IACzB,yBAAyB,UAAQ;IAExC,OAAO,CAAC,aAAa,CAA+B;IACpD,IAAW,YAAY,kBAAyC;IAEhE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsE;IAC1G,IAAW,gBAAgB;;;MAA6C;IAExE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiD;IAC5E,IAAW,OAAO;;;MAAoC;IAEtD,OAAO,CAAC,gBAAgB,CAAyB;gBAG7C,UAAU,EAAE,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC;IAkDlE,OAAO,CAAC,QAAQ;YAkBF,WAAW;YA8BX,UAAU;IAiCX,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAqB7D,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAChD,UAAU,CACb,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC;IAqCA,OAAO;CAiB1B"}
@@ -1,78 +1,70 @@
1
- import { __awaiter } from "tslib";
2
- import { AsyncOperationManager } from '@yume-chan/async';
1
+ import { AsyncOperationManager, PromiseResolver } from '@yume-chan/async';
3
2
  import { AutoDisposable, EventEmitter } from '@yume-chan/event';
4
- import { AdbCommand, AdbPacket } from '../packet';
5
- import { AutoResetEvent, decodeUtf8, encodeUtf8 } from '../utils';
6
- import { AdbSocketController } from './controller';
7
- import { AdbSocket } from './socket';
8
- const EmptyArrayBuffer = new ArrayBuffer(0);
3
+ import { AdbCommand, calculateChecksum } from '../packet.js';
4
+ import { AbortController, WritableStream } from '../stream/index.js';
5
+ import { decodeUtf8, encodeUtf8 } from '../utils/index.js';
6
+ import { AdbSocket } from './socket.js';
7
+ const EmptyUint8Array = new Uint8Array(0);
9
8
  export class AdbPacketDispatcher extends AutoDisposable {
10
- constructor(backend, logger) {
11
- super();
12
- // ADB socket id starts from 1
13
- // (0 means open failed)
14
- this.initializers = new AsyncOperationManager(1);
15
- this.sockets = new Map();
16
- this.sendLock = new AutoResetEvent();
17
- this.maxPayloadSize = 0;
18
- this.calculateChecksum = true;
19
- this.appendNullToServiceString = true;
20
- this.packetEvent = this.addDisposable(new EventEmitter());
21
- this.incomingSocketEvent = this.addDisposable(new EventEmitter());
22
- this.errorEvent = this.addDisposable(new EventEmitter());
23
- this._running = false;
24
- this.backend = backend;
25
- this.logger = logger;
26
- }
27
- get onPacket() { return this.packetEvent.event; }
9
+ // ADB socket id starts from 1
10
+ // (0 means open failed)
11
+ initializers = new AsyncOperationManager(1);
12
+ sockets = new Map();
13
+ _writer;
14
+ maxPayloadSize = 0;
15
+ calculateChecksum = true;
16
+ appendNullToServiceString = true;
17
+ _disconnected = new PromiseResolver();
18
+ get disconnected() { return this._disconnected.promise; }
19
+ incomingSocketEvent = this.addDisposable(new EventEmitter());
28
20
  get onIncomingSocket() { return this.incomingSocketEvent.event; }
21
+ errorEvent = this.addDisposable(new EventEmitter());
29
22
  get onError() { return this.errorEvent.event; }
30
- get running() { return this._running; }
31
- receiveLoop() {
32
- var _a, _b;
33
- return __awaiter(this, void 0, void 0, function* () {
34
- try {
35
- while (this._running) {
36
- const packet = yield AdbPacket.read(this.backend);
37
- (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.onIncomingPacket) === null || _b === void 0 ? void 0 : _b.call(_a, packet);
23
+ _abortController = new AbortController();
24
+ constructor(connection) {
25
+ super();
26
+ connection.readable
27
+ .pipeTo(new WritableStream({
28
+ write: async (packet) => {
29
+ try {
38
30
  switch (packet.command) {
39
31
  case AdbCommand.OK:
40
32
  this.handleOk(packet);
41
- continue;
33
+ return;
42
34
  case AdbCommand.Close:
43
- yield this.handleClose(packet);
44
- continue;
35
+ await this.handleClose(packet);
36
+ return;
45
37
  case AdbCommand.Write:
46
38
  if (this.sockets.has(packet.arg1)) {
47
- yield this.sockets.get(packet.arg1).dataEvent.fire(packet.payload);
48
- yield this.sendPacket(AdbCommand.OK, packet.arg1, packet.arg0);
39
+ await this.sockets.get(packet.arg1).enqueue(packet.payload);
40
+ await this.sendPacket(AdbCommand.OK, packet.arg1, packet.arg0);
49
41
  }
50
42
  // Maybe the device is responding to a packet of last connection
51
43
  // Just ignore it
52
- continue;
44
+ return;
53
45
  case AdbCommand.Open:
54
- yield this.handleOpen(packet);
55
- continue;
56
- }
57
- const args = {
58
- handled: false,
59
- packet,
60
- };
61
- this.packetEvent.fire(args);
62
- if (!args.handled) {
63
- this.dispose();
64
- throw new Error(`Unhandled packet with command '${packet.command}'`);
46
+ await this.handleOpen(packet);
47
+ return;
65
48
  }
66
49
  }
67
- }
68
- catch (e) {
69
- if (!this._running) {
70
- // ignore error
71
- return;
50
+ catch (e) {
51
+ this.errorEvent.fire(e);
52
+ // Throw error here will stop the pipe
53
+ // But won't close `readable` because of `preventCancel: true`
54
+ throw e;
72
55
  }
73
- this.errorEvent.fire(e);
74
- }
56
+ },
57
+ }), {
58
+ preventCancel: false,
59
+ signal: this._abortController.signal,
60
+ })
61
+ .then(() => {
62
+ this.dispose();
63
+ }, () => {
64
+ // TODO: AdbPacketDispatcher: reject `_disconnected` when pipe errored?
65
+ this.dispose();
75
66
  });
67
+ this._writer = connection.writable.getWriter();
76
68
  }
77
69
  handleOk(packet) {
78
70
  if (this.initializers.resolve(packet.arg1, packet.arg0)) {
@@ -89,126 +81,118 @@ export class AdbPacketDispatcher extends AutoDisposable {
89
81
  // Tell the device to close the socket
90
82
  this.sendPacket(AdbCommand.Close, packet.arg1, packet.arg0);
91
83
  }
92
- handleClose(packet) {
93
- return __awaiter(this, void 0, void 0, function* () {
94
- // From https://android.googlesource.com/platform/packages/modules/adb/+/65d18e2c1cc48b585811954892311b28a4c3d188/adb.cpp#459
95
- /* According to protocol.txt, p->msg.arg0 might be 0 to indicate
96
- * a failed OPEN only. However, due to a bug in previous ADB
97
- * versions, CLOSE(0, remote-id, "") was also used for normal
98
- * CLOSE() operations.
99
- */
100
- // So don't return if `reject` didn't find a pending socket
101
- if (packet.arg0 === 0 &&
102
- this.initializers.reject(packet.arg1, new Error('Socket open failed'))) {
103
- // Device failed to create the socket
104
- return;
105
- }
106
- const socket = this.sockets.get(packet.arg1);
107
- if (socket) {
108
- // The device want to close the socket
109
- if (!socket.closed) {
110
- yield this.sendPacket(AdbCommand.Close, packet.arg1, packet.arg0);
111
- }
112
- socket.dispose();
113
- this.sockets.delete(packet.arg1);
114
- return;
84
+ async handleClose(packet) {
85
+ // From https://android.googlesource.com/platform/packages/modules/adb/+/65d18e2c1cc48b585811954892311b28a4c3d188/adb.cpp#459
86
+ /* According to protocol.txt, p->msg.arg0 might be 0 to indicate
87
+ * a failed OPEN only. However, due to a bug in previous ADB
88
+ * versions, CLOSE(0, remote-id, "") was also used for normal
89
+ * CLOSE() operations.
90
+ */
91
+ // So don't return if `reject` didn't find a pending socket
92
+ if (packet.arg0 === 0 &&
93
+ this.initializers.reject(packet.arg1, new Error('Socket open failed'))) {
94
+ // Device failed to create the socket
95
+ return;
96
+ }
97
+ const socket = this.sockets.get(packet.arg1);
98
+ if (socket) {
99
+ // The device want to close the socket
100
+ if (!socket.closed) {
101
+ await this.sendPacket(AdbCommand.Close, packet.arg1, packet.arg0);
115
102
  }
116
- // Maybe the device is responding to a packet of last connection
117
- // Just ignore it
118
- });
103
+ socket.dispose();
104
+ this.sockets.delete(packet.arg1);
105
+ return;
106
+ }
107
+ // Maybe the device is responding to a packet of last connection
108
+ // Just ignore it
119
109
  }
120
- handleOpen(packet) {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- // AsyncOperationManager doesn't support get and skip an ID
123
- // Use `add` + `resolve` to simulate this behavior
124
- const [localId] = this.initializers.add();
125
- this.initializers.resolve(localId, undefined);
126
- const remoteId = packet.arg0;
127
- const serviceString = decodeUtf8(packet.payload);
128
- const controller = new AdbSocketController({
129
- dispatcher: this,
130
- localId,
131
- remoteId,
132
- localCreated: false,
133
- serviceString,
134
- });
135
- const socket = new AdbSocket(controller);
136
- const args = {
137
- handled: false,
138
- packet,
139
- serviceString,
140
- socket,
141
- };
142
- this.incomingSocketEvent.fire(args);
143
- if (args.handled) {
144
- this.sockets.set(localId, controller);
145
- yield this.sendPacket(AdbCommand.OK, localId, remoteId);
146
- }
147
- else {
148
- yield this.sendPacket(AdbCommand.Close, 0, remoteId);
149
- }
110
+ async handleOpen(packet) {
111
+ // AsyncOperationManager doesn't support get and skip an ID
112
+ // Use `add` + `resolve` to simulate this behavior
113
+ const [localId] = this.initializers.add();
114
+ this.initializers.resolve(localId, undefined);
115
+ const remoteId = packet.arg0;
116
+ const serviceString = decodeUtf8(packet.payload);
117
+ const socket = new AdbSocket({
118
+ dispatcher: this,
119
+ localId,
120
+ remoteId,
121
+ localCreated: false,
122
+ serviceString,
150
123
  });
124
+ const args = {
125
+ handled: false,
126
+ packet,
127
+ serviceString,
128
+ socket,
129
+ };
130
+ this.incomingSocketEvent.fire(args);
131
+ if (args.handled) {
132
+ this.sockets.set(localId, socket);
133
+ await this.sendPacket(AdbCommand.OK, localId, remoteId);
134
+ }
135
+ else {
136
+ await this.sendPacket(AdbCommand.Close, 0, remoteId);
137
+ }
151
138
  }
152
- start() {
153
- this._running = true;
154
- this.receiveLoop();
155
- }
156
- createSocket(serviceString) {
157
- return __awaiter(this, void 0, void 0, function* () {
158
- if (this.appendNullToServiceString) {
159
- serviceString += '\0';
160
- }
161
- const [localId, initializer] = this.initializers.add();
162
- yield this.sendPacket(AdbCommand.Open, localId, 0, serviceString);
163
- const remoteId = yield initializer;
164
- const controller = new AdbSocketController({
165
- dispatcher: this,
166
- localId,
167
- remoteId,
168
- localCreated: true,
169
- serviceString,
170
- });
171
- this.sockets.set(controller.localId, controller);
172
- return new AdbSocket(controller);
139
+ async createSocket(serviceString) {
140
+ if (this.appendNullToServiceString) {
141
+ serviceString += '\0';
142
+ }
143
+ const [localId, initializer] = this.initializers.add();
144
+ await this.sendPacket(AdbCommand.Open, localId, 0, serviceString);
145
+ const remoteId = await initializer;
146
+ const socket = new AdbSocket({
147
+ dispatcher: this,
148
+ localId,
149
+ remoteId,
150
+ localCreated: true,
151
+ serviceString,
173
152
  });
153
+ this.sockets.set(localId, socket);
154
+ return socket;
174
155
  }
175
- sendPacket(packetOrCommand, arg0, arg1, payload = EmptyArrayBuffer) {
176
- var _a, _b;
177
- return __awaiter(this, void 0, void 0, function* () {
178
- let init;
179
- if (arg0 === undefined) {
180
- init = packetOrCommand;
181
- }
182
- else {
183
- init = {
184
- command: packetOrCommand,
185
- arg0: arg0,
186
- arg1: arg1,
187
- payload: typeof payload === 'string' ? encodeUtf8(payload) : payload,
188
- };
189
- }
190
- if (init.payload &&
191
- init.payload.byteLength > this.maxPayloadSize) {
192
- throw new Error('payload too large');
193
- }
194
- try {
195
- // `AdbPacket.write` writes each packet in two parts
196
- // Use a lock to prevent packets been interlaced
197
- yield this.sendLock.wait();
198
- (_b = (_a = this.logger) === null || _a === void 0 ? void 0 : _a.onOutgoingPacket) === null || _b === void 0 ? void 0 : _b.call(_a, init);
199
- yield AdbPacket.write(init, this.calculateChecksum, this.backend);
200
- }
201
- finally {
202
- this.sendLock.notify();
156
+ async sendPacket(packetOrCommand, arg0, arg1, payload = EmptyUint8Array) {
157
+ let init;
158
+ if (arg0 === undefined) {
159
+ init = packetOrCommand;
160
+ }
161
+ else {
162
+ if (typeof payload === 'string') {
163
+ payload = encodeUtf8(payload);
203
164
  }
204
- });
165
+ init = {
166
+ command: packetOrCommand,
167
+ arg0: arg0,
168
+ arg1: arg1,
169
+ payload,
170
+ };
171
+ }
172
+ if (init.payload &&
173
+ init.payload.byteLength > this.maxPayloadSize) {
174
+ throw new Error('payload too large');
175
+ }
176
+ if (this.calculateChecksum) {
177
+ calculateChecksum(init);
178
+ }
179
+ else {
180
+ init.checksum = 0;
181
+ }
182
+ await this._writer.write(init);
205
183
  }
206
184
  dispose() {
207
- this._running = false;
208
185
  for (const socket of this.sockets.values()) {
209
186
  socket.dispose();
210
187
  }
211
188
  this.sockets.clear();
189
+ try {
190
+ // Stop pipes
191
+ this._abortController.abort();
192
+ }
193
+ catch { }
194
+ this._writer.releaseLock();
195
+ this._disconnected.resolve();
212
196
  super.dispose();
213
197
  }
214
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/socket/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAA0C,MAAM,cAAc,CAAC;AACrG,OAAO,EAAE,eAAe,EAAE,cAAc,EAA0D,MAAM,oBAAoB,CAAC;AAC7H,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAE1C,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACnD,8BAA8B;IAC9B,wBAAwB;IACP,YAAY,GAAG,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5C,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEhD,OAAO,CAA8C;IAEtD,cAAc,GAAG,CAAC,CAAC;IACnB,iBAAiB,GAAG,IAAI,CAAC;IACzB,yBAAyB,GAAG,IAAI,CAAC;IAEhC,aAAa,GAAG,IAAI,eAAe,EAAQ,CAAC;IACpD,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAE/C,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,EAA8B,CAAC,CAAC;IAC1G,IAAW,gBAAgB,KAAK,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvD,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,EAAS,CAAC,CAAC;IAC5E,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9C,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;IAEjD,YACI,UAA8D;QAE9D,KAAK,EAAE,CAAC;QAER,UAAU,CAAC,QAAQ;aACd,MAAM,CAAC,IAAI,cAAc,CAAC;YACvB,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpB,IAAI;oBACA,QAAQ,MAAM,CAAC,OAAO,EAAE;wBACpB,KAAK,UAAU,CAAC,EAAE;4BACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACtB,OAAO;wBACX,KAAK,UAAU,CAAC,KAAK;4BACjB,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;4BAC/B,OAAO;wBACX,KAAK,UAAU,CAAC,KAAK;4BACjB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gCAC/B,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gCAC7D,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;6BAClE;4BAED,gEAAgE;4BAChE,iBAAiB;4BACjB,OAAO;wBACX,KAAK,UAAU,CAAC,IAAI;4BAChB,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;4BAC9B,OAAO;qBACd;iBACJ;gBAAC,OAAO,CAAC,EAAE;oBACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC;oBAEjC,sCAAsC;oBACtC,8DAA8D;oBAC9D,MAAM,CAAC,CAAC;iBACX;YACL,CAAC;SACJ,CAAC,EAAE;YACA,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM;SACvC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,EAAE,GAAG,EAAE;YACJ,uEAAuE;YACvE,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEP,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;IAEO,QAAQ,CAAC,MAAqB;QAClC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE;YACrD,yCAAyC;YACzC,OAAO;SACV;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE;YACR,gDAAgD;YAChD,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,OAAO;SACV;QAED,gEAAgE;QAChE,sCAAsC;QACtC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAqB;QAC3C,6HAA6H;QAC7H;;;;WAIG;QAEH,2DAA2D;QAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAE;YACxE,qCAAqC;YACrC,OAAO;SACV;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE;YACR,sCAAsC;YACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAChB,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;aACrE;YACD,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,OAAO;SACV;QAED,gEAAgE;QAChE,iBAAiB;IACrB,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAqB;QAC1C,2DAA2D;QAC3D,kDAAkD;QAClD,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAU,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YACzB,UAAU,EAAE,IAAI;YAChB,OAAO;YACP,QAAQ;YACR,YAAY,EAAE,KAAK;YACnB,aAAa;SAChB,CAAC,CAAC;QAEH,MAAM,IAAI,GAA+B;YACrC,OAAO,EAAE,KAAK;YACd,MAAM;YACN,aAAa;YACb,MAAM;SACT,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAClC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SAC3D;aAAM;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;SACxD;IACL,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,aAAqB;QAC3C,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAChC,aAAa,IAAI,IAAI,CAAC;SACzB;QAED,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAU,CAAC;QAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;YACzB,UAAU,EAAE,IAAI;YAChB,OAAO;YACP,QAAQ;YACR,YAAY,EAAE,IAAI;YAClB,aAAa;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElC,OAAO,MAAM,CAAC;IAClB,CAAC;IASM,KAAK,CAAC,UAAU,CACnB,eAA2C,EAC3C,IAAa,EACb,IAAa,EACb,UAA+B,eAAe;QAE9C,IAAI,IAAmB,CAAC;QACxB,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,IAAI,GAAG,eAAgC,CAAC;SAC3C;aAAM;YACH,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC7B,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;aACjC;YAED,IAAI,GAAG;gBACH,OAAO,EAAE,eAA6B;gBACtC,IAAI,EAAE,IAAc;gBACpB,IAAI,EAAE,IAAc;gBACpB,OAAO;aACV,CAAC;SACL;QAED,IAAI,IAAI,CAAC,OAAO;YACZ,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;YAC/C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAC3B;aAAM;YACF,IAAsB,CAAC,QAAQ,GAAG,CAAC,CAAC;SACxC;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAqB,CAAC,CAAC;IACpD,CAAC;IAEe,OAAO;QACnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YACxC,MAAM,CAAC,OAAO,EAAE,CAAC;SACpB;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,IAAI;YACA,aAAa;YACb,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;SACjC;QAAC,MAAM,GAAG;QAEX,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAE3B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;QAE7B,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ export * from './socket.js';
2
+ export * from './dispatcher.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -1,7 +1,3 @@
1
- export * from './close-event-emitter';
2
- export * from './controller';
3
- export * from './data-event-emitter';
4
- export * from './dispatcher';
5
- export * from './logger';
6
- export * from './socket';
1
+ export * from './socket.js';
2
+ export * from './dispatcher.js';
7
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/socket/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { ReadableStream, WritableStream } from '../stream/index.js';
2
+ import type { AdbPacketDispatcher } from './dispatcher.js';
3
+ export interface AdbSocketInfo {
4
+ localId: number;
5
+ remoteId: number;
6
+ localCreated: boolean;
7
+ serviceString: string;
8
+ }
9
+ export interface AdbSocketConstructionOptions {
10
+ dispatcher: AdbPacketDispatcher;
11
+ localId: number;
12
+ remoteId: number;
13
+ localCreated: boolean;
14
+ serviceString: string;
15
+ highWaterMark?: number | undefined;
16
+ }
17
+ export declare class AdbSocket implements AdbSocketInfo {
18
+ private readonly dispatcher;
19
+ readonly localId: number;
20
+ readonly remoteId: number;
21
+ readonly localCreated: boolean;
22
+ readonly serviceString: string;
23
+ private _factory;
24
+ private _readable;
25
+ private _readableController;
26
+ get readable(): ReadableStream<Uint8Array>;
27
+ private _writePromise;
28
+ readonly writable: WritableStream<Uint8Array>;
29
+ private _closed;
30
+ get closed(): boolean;
31
+ constructor(options: AdbSocketConstructionOptions);
32
+ close(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=socket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8C,cAAc,EAAE,cAAc,EAAqC,MAAM,oBAAoB,CAAC;AACnJ,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,4BAA4B;IACzC,UAAU,EAAE,mBAAmB,CAAC;IAEhC,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IAEjB,YAAY,EAAE,OAAO,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,qBAAa,SAAU,YAAW,aAAa;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAElD,SAAgB,OAAO,EAAG,MAAM,CAAC;IACjC,SAAgB,QAAQ,EAAG,MAAM,CAAC;IAClC,SAAgB,YAAY,EAAG,OAAO,CAAC;IACvC,SAAgB,aAAa,EAAG,MAAM,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAA8C;IAE9D,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,mBAAmB,CAA4C;IACvE,IAAW,QAAQ,+BAA6B;IAEhD,OAAO,CAAC,aAAa,CAAoC;IACzD,SAAgB,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAErD,OAAO,CAAC,OAAO,CAAS;IACxB,IAAW,MAAM,YAA2B;gBAEzB,OAAO,EAAE,4BAA4B;IAoD3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA4BtC"}
@@ -1,20 +1,75 @@
1
+ import { PromiseResolver } from "@yume-chan/async";
2
+ import { AdbCommand } from '../packet.js';
3
+ import { ChunkStream, DuplexStreamFactory, pipeFrom } from '../stream/index.js';
1
4
  export class AdbSocket {
2
- constructor(controller) {
3
- this.controller = controller;
5
+ dispatcher;
6
+ localId;
7
+ remoteId;
8
+ localCreated;
9
+ serviceString;
10
+ _factory;
11
+ _readable;
12
+ _readableController;
13
+ get readable() { return this._readable; }
14
+ _writePromise;
15
+ writable;
16
+ _closed = false;
17
+ get closed() { return this._closed; }
18
+ constructor(options) {
19
+ Object.assign(this, options);
20
+ // Check this image to help you understand the stream graph
21
+ // cspell: disable-next-line
22
+ // https://www.plantuml.com/plantuml/png/TL0zoeGm4ErpYc3l5JxyS0yWM6mX5j4C6p4cxcJ25ejttuGX88ZftizxUKmJI275pGhXl0PP_UkfK_CAz5Z2hcWsW9Ny2fdU4C1f5aSchFVxA8vJjlTPRhqZzDQMRB7AklwJ0xXtX0ZSKH1h24ghoKAdGY23FhxC4nS2pDvxzIvxb-8THU0XlEQJ-ZB7SnXTAvc_LhOckhMdLBnbtndpb-SB7a8q2SRD_W00
23
+ this._factory = new DuplexStreamFactory({
24
+ close: async () => {
25
+ await this.close();
26
+ },
27
+ });
28
+ this._readable = this._factory.createPushReadable(controller => {
29
+ this._readableController = controller;
30
+ }, {
31
+ highWaterMark: options.highWaterMark ?? 16 * 1024,
32
+ size(chunk) { return chunk.byteLength; }
33
+ });
34
+ this.writable = pipeFrom(this._factory.createWritable({
35
+ write: async (chunk) => {
36
+ // Wait for an ack packet
37
+ this._writePromise = new PromiseResolver();
38
+ await this.dispatcher.sendPacket(AdbCommand.Write, this.localId, this.remoteId, chunk);
39
+ await this._writePromise.promise;
40
+ },
41
+ }), new ChunkStream(this.dispatcher.maxPayloadSize));
4
42
  }
5
- get backend() { return this.controller.backend; }
6
- get localId() { return this.controller.localId; }
7
- get remoteId() { return this.controller.remoteId; }
8
- get localCreated() { return this.controller.localCreated; }
9
- get serviceString() { return this.controller.serviceString; }
10
- get closed() { return this.controller.closed; }
11
- get onData() { return this.controller.dataEvent.event; }
12
- get onClose() { return this.controller.onClose; }
13
- write(data) {
14
- return this.controller.write(data);
43
+ /**
44
+ * @internal
45
+ */
46
+ async enqueue(packet) {
47
+ await this._readableController.enqueue(packet);
15
48
  }
16
- close() {
17
- return this.controller.close();
49
+ /**
50
+ * @internal
51
+ */
52
+ ack() {
53
+ this._writePromise?.resolve();
54
+ }
55
+ async close() {
56
+ // Error out the pending writes
57
+ this._writePromise?.reject(new Error('Socket closed'));
58
+ if (!this._closed) {
59
+ this._closed = true;
60
+ // Only send close packet when `close` is called before `dispose`
61
+ // (the client initiated the close)
62
+ await this.dispatcher.sendPacket(AdbCommand.Close, this.localId, this.remoteId);
63
+ }
64
+ }
65
+ /**
66
+ * @internal
67
+ */
68
+ dispose() {
69
+ this._closed = true;
70
+ this._factory.close();
71
+ // Close `writable` side
72
+ this.close();
18
73
  }
19
74
  }
20
75
  //# sourceMappingURL=socket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,SAAS;IAclB,YAAmB,UAA+B;QAC9C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAbD,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,IAAW,YAAY,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,IAAW,aAAa,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpE,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtD,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAMjD,KAAK,CAAC,IAAiB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;CACJ"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../src/socket/socket.ts"],"names":[],"mappings":"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"}