@yume-chan/adb 0.0.10 → 0.0.13

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 (342) hide show
  1. package/CHANGELOG.json +50 -0
  2. package/CHANGELOG.md +29 -1
  3. package/LICENSE +1 -1
  4. package/README.md +71 -51
  5. package/esm/adb.d.ts +48 -0
  6. package/esm/adb.d.ts.map +1 -0
  7. package/esm/adb.js +149 -136
  8. package/esm/adb.js.map +1 -1
  9. package/{dts → esm}/auth.d.ts +11 -11
  10. package/esm/auth.d.ts.map +1 -0
  11. package/esm/auth.js +72 -110
  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 +19 -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 +56 -0
  40. package/esm/commands/subprocess/index.d.ts.map +1 -0
  41. package/esm/commands/subprocess/index.js +88 -0
  42. package/esm/commands/subprocess/index.js.map +1 -0
  43. package/esm/commands/subprocess/legacy.d.ts +35 -0
  44. package/esm/commands/subprocess/legacy.d.ts.map +1 -0
  45. package/esm/commands/subprocess/legacy.js +53 -0
  46. package/esm/commands/subprocess/legacy.js.map +1 -0
  47. package/esm/commands/subprocess/protocol.d.ts +39 -0
  48. package/esm/commands/subprocess/protocol.d.ts.map +1 -0
  49. package/esm/commands/subprocess/protocol.js +157 -0
  50. package/esm/commands/subprocess/protocol.js.map +1 -0
  51. package/esm/commands/subprocess/protocols/index.d.ts +4 -0
  52. package/esm/commands/subprocess/protocols/index.d.ts.map +1 -0
  53. package/esm/commands/subprocess/protocols/index.js +4 -0
  54. package/esm/commands/subprocess/protocols/index.js.map +1 -0
  55. package/esm/commands/subprocess/protocols/none.d.ts +35 -0
  56. package/esm/commands/subprocess/protocols/none.d.ts.map +1 -0
  57. package/esm/commands/subprocess/protocols/none.js +53 -0
  58. package/esm/commands/subprocess/protocols/none.js.map +1 -0
  59. package/esm/commands/subprocess/protocols/shell.d.ts +39 -0
  60. package/esm/commands/subprocess/protocols/shell.d.ts.map +1 -0
  61. package/esm/commands/subprocess/protocols/shell.js +155 -0
  62. package/esm/commands/subprocess/protocols/shell.js.map +1 -0
  63. package/esm/commands/subprocess/protocols/types.d.ts +50 -0
  64. package/esm/commands/subprocess/protocols/types.d.ts.map +1 -0
  65. package/esm/commands/{shell → subprocess/protocols}/types.js +0 -0
  66. package/esm/commands/subprocess/protocols/types.js.map +1 -0
  67. package/esm/commands/subprocess/types.d.ts +50 -0
  68. package/esm/commands/subprocess/types.d.ts.map +1 -0
  69. package/esm/commands/subprocess/types.js +2 -0
  70. package/esm/commands/{shell → subprocess}/types.js.map +1 -1
  71. package/{dts/commands/shell → esm/commands/subprocess}/utils.d.ts +0 -0
  72. package/esm/commands/subprocess/utils.d.ts.map +1 -0
  73. package/esm/commands/{shell → subprocess}/utils.js +0 -0
  74. package/esm/commands/subprocess/utils.js.map +1 -0
  75. package/esm/commands/sync/index.d.ts +8 -0
  76. package/esm/commands/sync/index.d.ts.map +1 -0
  77. package/esm/commands/sync/index.js +7 -7
  78. package/esm/commands/sync/index.js.map +1 -1
  79. package/esm/commands/sync/list.d.ts +41 -0
  80. package/esm/commands/sync/list.d.ts.map +1 -0
  81. package/esm/commands/sync/list.js +52 -20
  82. package/esm/commands/sync/list.js.map +1 -1
  83. package/esm/commands/sync/pull.d.ts +11 -0
  84. package/esm/commands/sync/pull.d.ts.map +1 -0
  85. package/esm/commands/sync/pull.js +17 -11
  86. package/esm/commands/sync/pull.js.map +1 -1
  87. package/esm/commands/sync/push.d.ts +8 -0
  88. package/esm/commands/sync/push.d.ts.map +1 -0
  89. package/esm/commands/sync/push.js +19 -37
  90. package/esm/commands/sync/push.js.map +1 -1
  91. package/{dts → esm}/commands/sync/request.d.ts +4 -3
  92. package/esm/commands/sync/request.d.ts.map +1 -0
  93. package/esm/commands/sync/request.js +25 -27
  94. package/esm/commands/sync/request.js.map +1 -1
  95. package/{dts → esm}/commands/sync/response.d.ts +4 -3
  96. package/esm/commands/sync/response.d.ts.map +1 -0
  97. package/esm/commands/sync/response.js +17 -20
  98. package/esm/commands/sync/response.js.map +1 -1
  99. package/{dts → esm}/commands/sync/stat.d.ts +16 -4
  100. package/esm/commands/sync/stat.d.ts.map +1 -0
  101. package/esm/commands/sync/stat.js +38 -30
  102. package/esm/commands/sync/stat.js.map +1 -1
  103. package/esm/commands/sync/sync.d.ts +61 -0
  104. package/esm/commands/sync/sync.d.ts.map +1 -0
  105. package/esm/commands/sync/sync.js +122 -89
  106. package/esm/commands/sync/sync.js.map +1 -1
  107. package/{dts → esm}/commands/tcpip.d.ts +1 -1
  108. package/{dts → esm}/commands/tcpip.d.ts.map +1 -1
  109. package/esm/commands/tcpip.js +14 -19
  110. package/esm/commands/tcpip.js.map +1 -1
  111. package/esm/crypto.d.ts +37 -0
  112. package/esm/crypto.d.ts.map +1 -0
  113. package/esm/crypto.js +77 -62
  114. package/esm/crypto.js.map +1 -1
  115. package/esm/features.d.ts +8 -0
  116. package/esm/features.d.ts.map +1 -0
  117. package/esm/features.js +7 -3
  118. package/esm/features.js.map +1 -1
  119. package/esm/index.d.ts +11 -0
  120. package/esm/index.d.ts.map +1 -0
  121. package/esm/index.js +10 -10
  122. package/esm/index.js.map +1 -1
  123. package/esm/packet.d.ts +47 -0
  124. package/esm/packet.d.ts.map +1 -0
  125. package/esm/packet.js +27 -52
  126. package/esm/packet.js.map +1 -1
  127. package/esm/socket/controller.d.ts +37 -0
  128. package/esm/socket/controller.d.ts.map +1 -0
  129. package/esm/socket/controller.js +52 -66
  130. package/esm/socket/controller.js.map +1 -1
  131. package/esm/socket/dispatcher.d.ts +44 -0
  132. package/esm/socket/dispatcher.d.ts.map +1 -0
  133. package/esm/socket/dispatcher.js +146 -165
  134. package/esm/socket/dispatcher.js.map +1 -1
  135. package/esm/socket/index.d.ts +3 -0
  136. package/esm/socket/index.d.ts.map +1 -0
  137. package/esm/socket/index.js +2 -6
  138. package/esm/socket/index.js.map +1 -1
  139. package/esm/socket/socket.d.ts +46 -0
  140. package/esm/socket/socket.d.ts.map +1 -0
  141. package/esm/socket/socket.js +77 -13
  142. package/esm/socket/socket.js.map +1 -1
  143. package/esm/stream/buffered.d.ts +35 -0
  144. package/esm/stream/buffered.d.ts.map +1 -0
  145. package/esm/stream/buffered.js +123 -0
  146. package/esm/stream/buffered.js.map +1 -0
  147. package/esm/stream/detect.bak.d.ts +240 -0
  148. package/esm/stream/detect.bak.d.ts.map +1 -0
  149. package/esm/stream/detect.bak.js +60 -0
  150. package/esm/stream/detect.bak.js.map +1 -0
  151. package/esm/stream/detect.d.ts +2 -0
  152. package/esm/stream/detect.d.ts.map +1 -0
  153. package/esm/stream/detect.js +5 -0
  154. package/esm/stream/detect.js.map +1 -0
  155. package/esm/stream/detect.native.d.ts +240 -0
  156. package/esm/stream/detect.native.d.ts.map +1 -0
  157. package/esm/stream/detect.native.js +60 -0
  158. package/esm/stream/detect.native.js.map +1 -0
  159. package/esm/stream/detect.polyfill.d.ts +18 -0
  160. package/esm/stream/detect.polyfill.d.ts.map +1 -0
  161. package/esm/stream/detect.polyfill.js +9 -0
  162. package/esm/stream/detect.polyfill.js.map +1 -0
  163. package/esm/stream/index.d.ts +4 -0
  164. package/esm/stream/index.d.ts.map +1 -0
  165. package/esm/stream/index.js +3 -2
  166. package/esm/stream/index.js.map +1 -1
  167. package/esm/stream/transform.d.ts +98 -0
  168. package/esm/stream/transform.d.ts.map +1 -0
  169. package/esm/stream/transform.js +402 -0
  170. package/esm/stream/transform.js.map +1 -0
  171. package/{dts → esm}/utils/auto-reset-event.d.ts +1 -1
  172. package/esm/utils/auto-reset-event.d.ts.map +1 -0
  173. package/esm/utils/auto-reset-event.js +2 -1
  174. package/esm/utils/auto-reset-event.js.map +1 -1
  175. package/esm/utils/base64.d.ts +5 -0
  176. package/esm/utils/base64.d.ts.map +1 -0
  177. package/esm/utils/base64.js +116 -80
  178. package/esm/utils/base64.js.map +1 -1
  179. package/esm/utils/encoding.d.ts +3 -0
  180. package/esm/utils/encoding.d.ts.map +1 -0
  181. package/esm/utils/encoding.js +1 -1
  182. package/esm/utils/encoding.js.map +1 -1
  183. package/esm/utils/index.d.ts +4 -0
  184. package/esm/utils/index.d.ts.map +1 -0
  185. package/esm/utils/index.js +3 -5
  186. package/esm/utils/index.js.map +1 -1
  187. package/package.json +50 -44
  188. package/src/adb.ts +177 -150
  189. package/src/auth.ts +37 -30
  190. package/src/backend.ts +3 -12
  191. package/src/commands/base.ts +1 -1
  192. package/src/commands/framebuffer.ts +4 -4
  193. package/src/commands/index.ts +8 -8
  194. package/src/commands/install.ts +24 -15
  195. package/src/commands/power.ts +54 -0
  196. package/src/commands/reverse.ts +10 -8
  197. package/src/commands/subprocess/index.ts +139 -0
  198. package/src/commands/subprocess/protocols/index.ts +3 -0
  199. package/src/commands/subprocess/protocols/none.ts +68 -0
  200. package/src/commands/subprocess/protocols/shell.ts +190 -0
  201. package/src/commands/subprocess/protocols/types.ts +59 -0
  202. package/src/commands/{shell → subprocess}/utils.ts +0 -0
  203. package/src/commands/sync/index.ts +7 -7
  204. package/src/commands/sync/list.ts +56 -9
  205. package/src/commands/sync/pull.ts +27 -18
  206. package/src/commands/sync/push.ts +25 -30
  207. package/src/commands/sync/request.ts +8 -7
  208. package/src/commands/sync/response.ts +12 -6
  209. package/src/commands/sync/stat.ts +43 -14
  210. package/src/commands/sync/sync.ts +102 -34
  211. package/src/commands/tcpip.ts +3 -3
  212. package/src/crypto.ts +95 -84
  213. package/src/features.ts +6 -2
  214. package/src/index.ts +11 -10
  215. package/src/packet.ts +49 -53
  216. package/src/socket/dispatcher.ts +110 -109
  217. package/src/socket/index.ts +2 -6
  218. package/src/socket/socket.ts +125 -17
  219. package/src/stream/buffered.ts +147 -0
  220. package/src/stream/detect.native.ts +362 -0
  221. package/src/stream/detect.polyfill.ts +28 -0
  222. package/src/stream/detect.ts +5 -0
  223. package/src/stream/index.ts +3 -2
  224. package/src/stream/transform.ts +483 -0
  225. package/src/utils/auto-reset-event.ts +1 -1
  226. package/src/utils/base64.ts +161 -129
  227. package/src/utils/index.ts +3 -5
  228. package/tsconfig.build.json +3 -0
  229. package/tsconfig.build.tsbuildinfo +1 -0
  230. package/tsconfig.test.json +10 -0
  231. package/dts/adb.d.ts +0 -46
  232. package/dts/adb.d.ts.map +0 -1
  233. package/dts/auth.d.ts.map +0 -1
  234. package/dts/backend.d.ts +0 -13
  235. package/dts/backend.d.ts.map +0 -1
  236. package/dts/commands/base.d.ts.map +0 -1
  237. package/dts/commands/demo-mode.d.ts +0 -41
  238. package/dts/commands/demo-mode.d.ts.map +0 -1
  239. package/dts/commands/framebuffer.d.ts.map +0 -1
  240. package/dts/commands/index.d.ts +0 -9
  241. package/dts/commands/index.d.ts.map +0 -1
  242. package/dts/commands/install.d.ts +0 -3
  243. package/dts/commands/install.d.ts.map +0 -1
  244. package/dts/commands/reverse.d.ts.map +0 -1
  245. package/dts/commands/shell/index.d.ts +0 -46
  246. package/dts/commands/shell/index.d.ts.map +0 -1
  247. package/dts/commands/shell/legacy.d.ts +0 -38
  248. package/dts/commands/shell/legacy.d.ts.map +0 -1
  249. package/dts/commands/shell/protocol.d.ts +0 -45
  250. package/dts/commands/shell/protocol.d.ts.map +0 -1
  251. package/dts/commands/shell/types.d.ts +0 -47
  252. package/dts/commands/shell/types.d.ts.map +0 -1
  253. package/dts/commands/shell/utils.d.ts.map +0 -1
  254. package/dts/commands/sync/index.d.ts +0 -8
  255. package/dts/commands/sync/index.d.ts.map +0 -1
  256. package/dts/commands/sync/list.d.ts +0 -17
  257. package/dts/commands/sync/list.d.ts.map +0 -1
  258. package/dts/commands/sync/pull.d.ts +0 -11
  259. package/dts/commands/sync/pull.d.ts.map +0 -1
  260. package/dts/commands/sync/push.d.ts +0 -8
  261. package/dts/commands/sync/push.d.ts.map +0 -1
  262. package/dts/commands/sync/request.d.ts.map +0 -1
  263. package/dts/commands/sync/response.d.ts.map +0 -1
  264. package/dts/commands/sync/stat.d.ts.map +0 -1
  265. package/dts/commands/sync/sync.d.ts +0 -68
  266. package/dts/commands/sync/sync.d.ts.map +0 -1
  267. package/dts/crypto.d.ts +0 -24
  268. package/dts/crypto.d.ts.map +0 -1
  269. package/dts/features.d.ts +0 -6
  270. package/dts/features.d.ts.map +0 -1
  271. package/dts/index.d.ts +0 -11
  272. package/dts/index.d.ts.map +0 -1
  273. package/dts/packet.d.ts +0 -27
  274. package/dts/packet.d.ts.map +0 -1
  275. package/dts/socket/close-event-emitter.d.ts +0 -8
  276. package/dts/socket/close-event-emitter.d.ts.map +0 -1
  277. package/dts/socket/controller.d.ts +0 -43
  278. package/dts/socket/controller.d.ts.map +0 -1
  279. package/dts/socket/data-event-emitter.d.ts +0 -10
  280. package/dts/socket/data-event-emitter.d.ts.map +0 -1
  281. package/dts/socket/dispatcher.d.ts +0 -53
  282. package/dts/socket/dispatcher.d.ts.map +0 -1
  283. package/dts/socket/index.d.ts +0 -7
  284. package/dts/socket/index.d.ts.map +0 -1
  285. package/dts/socket/logger.d.ts +0 -9
  286. package/dts/socket/logger.d.ts.map +0 -1
  287. package/dts/socket/socket.d.ts +0 -22
  288. package/dts/socket/socket.d.ts.map +0 -1
  289. package/dts/stream/buffered-stream.d.ts +0 -28
  290. package/dts/stream/buffered-stream.d.ts.map +0 -1
  291. package/dts/stream/index.d.ts +0 -3
  292. package/dts/stream/index.d.ts.map +0 -1
  293. package/dts/stream/stream.d.ts +0 -15
  294. package/dts/stream/stream.d.ts.map +0 -1
  295. package/dts/utils/auto-reset-event.d.ts.map +0 -1
  296. package/dts/utils/base64.d.ts +0 -7
  297. package/dts/utils/base64.d.ts.map +0 -1
  298. package/dts/utils/chunk.d.ts +0 -3
  299. package/dts/utils/chunk.d.ts.map +0 -1
  300. package/dts/utils/encoding.d.ts +0 -3
  301. package/dts/utils/encoding.d.ts.map +0 -1
  302. package/dts/utils/event-queue.d.ts +0 -35
  303. package/dts/utils/event-queue.d.ts.map +0 -1
  304. package/dts/utils/index.d.ts +0 -6
  305. package/dts/utils/index.d.ts.map +0 -1
  306. package/esm/commands/demo-mode.js +0 -170
  307. package/esm/commands/demo-mode.js.map +0 -1
  308. package/esm/commands/shell/index.js +0 -62
  309. package/esm/commands/shell/index.js.map +0 -1
  310. package/esm/commands/shell/legacy.js +0 -49
  311. package/esm/commands/shell/legacy.js.map +0 -1
  312. package/esm/commands/shell/protocol.js +0 -106
  313. package/esm/commands/shell/protocol.js.map +0 -1
  314. package/esm/commands/shell/utils.js.map +0 -1
  315. package/esm/socket/close-event-emitter.js +0 -28
  316. package/esm/socket/close-event-emitter.js.map +0 -1
  317. package/esm/socket/data-event-emitter.js +0 -25
  318. package/esm/socket/data-event-emitter.js.map +0 -1
  319. package/esm/socket/logger.js +0 -2
  320. package/esm/socket/logger.js.map +0 -1
  321. package/esm/stream/buffered-stream.js +0 -67
  322. package/esm/stream/buffered-stream.js.map +0 -1
  323. package/esm/stream/stream.js +0 -41
  324. package/esm/stream/stream.js.map +0 -1
  325. package/esm/utils/chunk.js +0 -70
  326. package/esm/utils/chunk.js.map +0 -1
  327. package/esm/utils/event-queue.js +0 -104
  328. package/esm/utils/event-queue.js.map +0 -1
  329. package/src/commands/demo-mode.ts +0 -160
  330. package/src/commands/shell/index.ts +0 -87
  331. package/src/commands/shell/legacy.ts +0 -59
  332. package/src/commands/shell/protocol.ts +0 -121
  333. package/src/commands/shell/types.ts +0 -55
  334. package/src/socket/close-event-emitter.ts +0 -28
  335. package/src/socket/controller.ts +0 -105
  336. package/src/socket/data-event-emitter.ts +0 -27
  337. package/src/socket/logger.ts +0 -12
  338. package/src/stream/buffered-stream.ts +0 -92
  339. package/src/stream/stream.ts +0 -50
  340. package/src/utils/chunk.ts +0 -70
  341. package/src/utils/encoding.ts +0 -13
  342. package/src/utils/event-queue.ts +0 -145
package/esm/adb.js CHANGED
@@ -1,55 +1,78 @@
1
- import { __awaiter } from "tslib";
1
+ // cspell: ignore libusb
2
2
  import { PromiseResolver } from '@yume-chan/async';
3
- import { DisposableList } from '@yume-chan/event';
4
- import { AdbAuthenticationHandler, AdbDefaultAuthenticators } from './auth';
5
- import { AdbChildProcess, AdbDemoMode, AdbReverseCommand, AdbSync, AdbTcpIpCommand, escapeArg, framebuffer, install } from './commands';
6
- import { AdbFeatures } from './features';
7
- import { AdbCommand } from './packet';
8
- import { AdbPacketDispatcher } from './socket';
9
- import { decodeUtf8 } from "./utils";
3
+ import { AdbAuthenticationProcessor, ADB_DEFAULT_AUTHENTICATORS } from './auth.js';
4
+ import { AdbPower, AdbReverseCommand, AdbSubprocess, AdbSync, AdbTcpIpCommand, escapeArg, framebuffer, install } from './commands/index.js';
5
+ import { AdbFeatures } from './features.js';
6
+ import { AdbCommand, calculateChecksum } from './packet.js';
7
+ import { AdbPacketDispatcher } from './socket/index.js';
8
+ import { AbortController, DecodeUtf8Stream, GatherStringStream, WritableStream } from "./stream/index.js";
9
+ import { decodeUtf8, encodeUtf8 } from "./utils/index.js";
10
10
  export var AdbPropKey;
11
11
  (function (AdbPropKey) {
12
12
  AdbPropKey["Product"] = "ro.product.name";
13
13
  AdbPropKey["Model"] = "ro.product.model";
14
14
  AdbPropKey["Device"] = "ro.product.device";
15
15
  AdbPropKey["Features"] = "features";
16
- })(AdbPropKey || (AdbPropKey = {}));
16
+ })(AdbPropKey = AdbPropKey || (AdbPropKey = {}));
17
+ export const VERSION_OMIT_CHECKSUM = 0x01000001;
17
18
  export class Adb {
18
- constructor(backend, logger) {
19
- this._connected = false;
20
- this._backend = backend;
21
- this.packetDispatcher = new AdbPacketDispatcher(backend, logger);
22
- this.tcpip = new AdbTcpIpCommand(this);
23
- this.reverse = new AdbReverseCommand(this.packetDispatcher);
24
- this.demoMode = new AdbDemoMode(this);
25
- this.childProcess = new AdbChildProcess(this);
26
- backend.onDisconnected(this.dispose, this);
27
- }
28
- get backend() { return this._backend; }
29
- get onDisconnected() { return this.backend.onDisconnected; }
30
- get connected() { return this._connected; }
31
- get name() { return this.backend.name; }
32
- get protocolVersion() { return this._protocolVersion; }
33
- get product() { return this._product; }
34
- get model() { return this._model; }
35
- get device() { return this._device; }
36
- get features() { return this._features; }
37
- connect(credentialStore, authenticators = AdbDefaultAuthenticators) {
38
- var _a, _b;
39
- return __awaiter(this, void 0, void 0, function* () {
40
- yield ((_b = (_a = this.backend).connect) === null || _b === void 0 ? void 0 : _b.call(_a));
41
- this.packetDispatcher.maxPayloadSize = 0x1000;
42
- this.packetDispatcher.calculateChecksum = true;
43
- this.packetDispatcher.appendNullToServiceString = true;
44
- this.packetDispatcher.start();
45
- const version = 0x01000001;
46
- const versionNoChecksum = 0x01000001;
47
- const maxPayloadSize = 0x100000;
19
+ /**
20
+ * It's possible to call `authenticate` multiple times on a single connection,
21
+ * every time the device receives a `CNXN` packet, it resets its internal state,
22
+ * and starts a new authentication process.
23
+ */
24
+ static async authenticate(connection, credentialStore, authenticators = ADB_DEFAULT_AUTHENTICATORS) {
25
+ // Initially, set to highest-supported version and payload size.
26
+ let version = 0x01000001;
27
+ let maxPayloadSize = 0x100000;
28
+ const resolver = new PromiseResolver();
29
+ const authProcessor = new AdbAuthenticationProcessor(authenticators, credentialStore);
30
+ // Here is similar to `AdbPacketDispatcher`,
31
+ // But the received packet types and send packet processing are different.
32
+ const abortController = new AbortController();
33
+ const pipe = connection.readable
34
+ .pipeTo(new WritableStream({
35
+ async write(packet) {
36
+ switch (packet.command) {
37
+ case AdbCommand.Connect:
38
+ version = Math.min(version, packet.arg0);
39
+ maxPayloadSize = Math.min(maxPayloadSize, packet.arg1);
40
+ resolver.resolve(decodeUtf8(packet.payload));
41
+ break;
42
+ case AdbCommand.Auth:
43
+ const response = await authProcessor.process(packet);
44
+ await sendPacket(response);
45
+ break;
46
+ default:
47
+ // Maybe the previous ADB session exited without reading all packets,
48
+ // so they are still waiting in OS internal buffer.
49
+ // Just ignore them.
50
+ // Because a `Connect` packet will reset the device,
51
+ // Eventually there will be `Connect` and `Auth` response packets.
52
+ break;
53
+ }
54
+ }
55
+ }), {
56
+ preventCancel: true,
57
+ signal: abortController.signal,
58
+ })
59
+ .catch((e) => {
60
+ resolver.reject(e);
61
+ });
62
+ const writer = connection.writable.getWriter();
63
+ async function sendPacket(init) {
64
+ // Always send checksum in auth steps
65
+ // Because we don't know if the device needs it or not.
66
+ await writer.write(calculateChecksum(init));
67
+ }
68
+ try {
69
+ // https://android.googlesource.com/platform/packages/modules/adb/+/79010dc6d5ca7490c493df800d4421730f5466ca/transport.cpp#1252
70
+ // There are some other feature constants, but some of them are only used by ADB server, not devices.
48
71
  const features = [
49
- 'shell_v2',
50
- 'cmd',
72
+ AdbFeatures.ShellV2,
73
+ AdbFeatures.Cmd,
51
74
  AdbFeatures.StatV2,
52
- 'ls_v2',
75
+ AdbFeatures.ListV2,
53
76
  'fixed_push_mkdir',
54
77
  'apex',
55
78
  'abb',
@@ -63,59 +86,67 @@ export class Adb {
63
86
  'sendrecv_v2_zstd',
64
87
  'sendrecv_v2_dry_run_send',
65
88
  ].join(',');
66
- const resolver = new PromiseResolver();
67
- const authHandler = new AdbAuthenticationHandler(authenticators, credentialStore);
68
- const disposableList = new DisposableList();
69
- disposableList.add(this.packetDispatcher.onPacket((e) => __awaiter(this, void 0, void 0, function* () {
70
- e.handled = true;
71
- const { packet } = e;
72
- try {
73
- switch (packet.command) {
74
- case AdbCommand.Connect:
75
- this.packetDispatcher.maxPayloadSize = Math.min(maxPayloadSize, packet.arg1);
76
- const finalVersion = Math.min(version, packet.arg0);
77
- this._protocolVersion = finalVersion;
78
- if (finalVersion >= versionNoChecksum) {
79
- this.packetDispatcher.calculateChecksum = false;
80
- // Android prior to 9.0.0 uses char* to parse service string
81
- // thus requires an extra null character
82
- this.packetDispatcher.appendNullToServiceString = false;
83
- }
84
- this.parseBanner(decodeUtf8(packet.payload));
85
- resolver.resolve();
86
- break;
87
- case AdbCommand.Auth:
88
- const authPacket = yield authHandler.handle(e.packet);
89
- yield this.packetDispatcher.sendPacket(authPacket);
90
- break;
91
- case AdbCommand.Close:
92
- // Last connection was interrupted
93
- // Ignore this packet, device will recover
94
- break;
95
- default:
96
- throw new Error('Device not in correct state. Reconnect your device and try again');
97
- }
98
- }
99
- catch (e) {
100
- resolver.reject(e);
101
- }
102
- })));
103
- disposableList.add(this.packetDispatcher.onError(e => {
104
- resolver.reject(e);
105
- }));
106
- // Android prior 9.0.0 requires the null character
107
- // Newer versions can also handle the null character
108
- // The terminating `;` is required in formal definition
109
- // But ADB daemon can also work without it
110
- yield this.packetDispatcher.sendPacket(AdbCommand.Connect, version, maxPayloadSize, `host::features=${features};\0`);
111
- try {
112
- yield resolver.promise;
113
- this._connected = true;
114
- }
115
- finally {
116
- disposableList.dispose();
117
- }
89
+ await sendPacket({
90
+ command: AdbCommand.Connect,
91
+ arg0: version,
92
+ arg1: maxPayloadSize,
93
+ // The terminating `;` is required in formal definition
94
+ // But ADB daemon (all versions) can still work without it
95
+ payload: encodeUtf8(`host::features=${features};`),
96
+ });
97
+ const banner = await resolver.promise;
98
+ // Stop piping before creating `Adb` object
99
+ // Because `AdbPacketDispatcher` will lock the streams when initializing
100
+ abortController.abort();
101
+ writer.releaseLock();
102
+ // Wait until pipe stops (`ReadableStream` lock released)
103
+ await pipe;
104
+ return new Adb(connection, version, maxPayloadSize, banner);
105
+ }
106
+ catch (e) {
107
+ abortController.abort();
108
+ writer.releaseLock();
109
+ throw e;
110
+ }
111
+ }
112
+ packetDispatcher;
113
+ get disconnected() { return this.packetDispatcher.disconnected; }
114
+ _protocolVersion;
115
+ get protocolVersion() { return this._protocolVersion; }
116
+ _product;
117
+ get product() { return this._product; }
118
+ _model;
119
+ get model() { return this._model; }
120
+ _device;
121
+ get device() { return this._device; }
122
+ _features;
123
+ get features() { return this._features; }
124
+ subprocess;
125
+ power;
126
+ reverse;
127
+ tcpip;
128
+ constructor(connection, version, maxPayloadSize, banner) {
129
+ this.parseBanner(banner);
130
+ let calculateChecksum;
131
+ let appendNullToServiceString;
132
+ if (version >= VERSION_OMIT_CHECKSUM) {
133
+ calculateChecksum = false;
134
+ appendNullToServiceString = false;
135
+ }
136
+ else {
137
+ calculateChecksum = true;
138
+ appendNullToServiceString = true;
139
+ }
140
+ this.packetDispatcher = new AdbPacketDispatcher(connection, {
141
+ calculateChecksum,
142
+ appendNullToServiceString,
143
+ maxPayloadSize,
118
144
  });
145
+ this._protocolVersion = version;
146
+ this.subprocess = new AdbSubprocess(this);
147
+ this.power = new AdbPower(this);
148
+ this.reverse = new AdbReverseCommand(this.packetDispatcher);
149
+ this.tcpip = new AdbTcpIpCommand(this);
119
150
  }
120
151
  parseBanner(banner) {
121
152
  this._features = [];
@@ -148,55 +179,37 @@ export class Adb {
148
179
  }
149
180
  }
150
181
  }
151
- getProp(key) {
152
- return __awaiter(this, void 0, void 0, function* () {
153
- const output = yield this.childProcess.exec('getprop', key);
154
- return output.trim();
155
- });
182
+ async createSocket(service) {
183
+ return this.packetDispatcher.createSocket(service);
156
184
  }
157
- rm(...filenames) {
158
- return __awaiter(this, void 0, void 0, function* () {
159
- return yield this.childProcess.exec('rm', '-rf', ...filenames.map(arg => escapeArg(arg)));
160
- });
185
+ async createSocketAndWait(service) {
186
+ const socket = await this.createSocket(service);
187
+ const gatherStream = new GatherStringStream();
188
+ await socket.readable
189
+ .pipeThrough(new DecodeUtf8Stream())
190
+ .pipeTo(gatherStream);
191
+ return gatherStream.result;
161
192
  }
162
- install(apk, onProgress) {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- return yield install(this, apk, onProgress);
165
- });
193
+ async getProp(key) {
194
+ const stdout = await this.subprocess.spawnAndWaitLegacy(['getprop', key]);
195
+ return stdout.trim();
166
196
  }
167
- sync() {
168
- return __awaiter(this, void 0, void 0, function* () {
169
- const socket = yield this.createSocket('sync:');
170
- return new AdbSync(this, socket);
171
- });
197
+ async rm(...filenames) {
198
+ const stdout = await this.subprocess.spawnAndWaitLegacy(['rm', '-rf', ...filenames.map(arg => escapeArg(arg))]);
199
+ return stdout;
172
200
  }
173
- framebuffer() {
174
- return __awaiter(this, void 0, void 0, function* () {
175
- return framebuffer(this);
176
- });
201
+ install() {
202
+ return install(this);
177
203
  }
178
- createSocket(service) {
179
- return __awaiter(this, void 0, void 0, function* () {
180
- return this.packetDispatcher.createSocket(service);
181
- });
204
+ async sync() {
205
+ const socket = await this.createSocket('sync:');
206
+ return new AdbSync(this, socket);
182
207
  }
183
- createSocketAndReadAll(service) {
184
- return __awaiter(this, void 0, void 0, function* () {
185
- const socket = yield this.createSocket(service);
186
- const resolver = new PromiseResolver();
187
- let result = '';
188
- socket.onData(buffer => {
189
- result += decodeUtf8(buffer);
190
- });
191
- socket.onClose(() => resolver.resolve(result));
192
- return resolver.promise;
193
- });
208
+ async framebuffer() {
209
+ return framebuffer(this);
194
210
  }
195
- dispose() {
196
- return __awaiter(this, void 0, void 0, function* () {
197
- this.packetDispatcher.dispose();
198
- yield this.backend.dispose();
199
- });
211
+ async dispose() {
212
+ this.packetDispatcher.dispose();
200
213
  }
201
214
  }
202
215
  //# sourceMappingURL=adb.js.map
package/esm/adb.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adb.js","sourceRoot":"","sources":["../src/adb.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
- import { Disposable } from '@yume-chan/event';
2
- import { ValueOrPromise } from '@yume-chan/struct';
3
- import { AdbPacket, AdbPacketInit } from './packet';
4
- export declare type AdbKeyIterable = Iterable<ArrayBuffer> | AsyncIterable<ArrayBuffer>;
1
+ import type { Disposable } from '@yume-chan/event';
2
+ import type { ValueOrPromise } from '@yume-chan/struct';
3
+ import { type AdbPacketData } from './packet.js';
4
+ export declare type AdbKeyIterable = Iterable<Uint8Array> | AsyncIterable<Uint8Array>;
5
5
  export interface AdbCredentialStore {
6
6
  /**
7
7
  * Generate and store a RSA private key with modulus length `2048` and public exponent `65537`.
8
8
  *
9
- * The returned `ArrayBuffer` is the private key in PKCS #8 format.
9
+ * The returned `Uint8Array` is the private key in PKCS #8 format.
10
10
  */
11
- generateKey(): ValueOrPromise<ArrayBuffer>;
11
+ generateKey(): ValueOrPromise<Uint8Array>;
12
12
  /**
13
13
  * Synchronously or asynchronously iterate through all stored RSA private keys.
14
14
  *
@@ -33,20 +33,20 @@ export interface AdbAuthenticator {
33
33
  *
34
34
  * Calling `getNextRequest` multiple times without `yield` or `return` will always return the same request.
35
35
  */
36
- (credentialStore: AdbCredentialStore, getNextRequest: () => Promise<AdbPacket>): AsyncIterable<AdbPacketInit>;
36
+ (credentialStore: AdbCredentialStore, getNextRequest: () => Promise<AdbPacketData>): AsyncIterable<AdbPacketData>;
37
37
  }
38
38
  export declare const AdbSignatureAuthenticator: AdbAuthenticator;
39
39
  export declare const AdbPublicKeyAuthenticator: AdbAuthenticator;
40
- export declare const AdbDefaultAuthenticators: AdbAuthenticator[];
41
- export declare class AdbAuthenticationHandler implements Disposable {
40
+ export declare const ADB_DEFAULT_AUTHENTICATORS: AdbAuthenticator[];
41
+ export declare class AdbAuthenticationProcessor implements Disposable {
42
42
  readonly authenticators: readonly AdbAuthenticator[];
43
43
  private readonly credentialStore;
44
44
  private pendingRequest;
45
45
  private iterator;
46
46
  constructor(authenticators: readonly AdbAuthenticator[], credentialStore: AdbCredentialStore);
47
47
  private getNextRequest;
48
- private runAuthenticator;
49
- handle(packet: AdbPacket): Promise<AdbPacketInit>;
48
+ private invokeAuthenticator;
49
+ process(packet: AdbPacketData): Promise<AdbPacketData>;
50
50
  dispose(): void;
51
51
  }
52
52
  //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAG7D,oBAAY,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;AAE9E,MAAM,WAAW,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;IAE1C;;;;OAIG;IACH,WAAW,IAAI,cAAc,CAAC;CACjC;AAED,oBAAY,WAAW;IACnB,KAAK,IAAI;IACT,SAAS,IAAI;IACb,SAAS,IAAI;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;;;;OAUG;IACH,CACI,eAAe,EAAE,kBAAkB,EACnC,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,GAC7C,aAAa,CAAC,aAAa,CAAC,CAAC;CACnC;AAED,eAAO,MAAM,yBAAyB,EAAE,gBAmBvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,gBAwCvC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,EAGxD,CAAC;AAEF,qBAAa,0BAA2B,YAAW,UAAU;IACzD,SAAgB,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,OAAO,CAAC,cAAc,CAAwC;IAE9D,OAAO,CAAC,QAAQ,CAAuD;gBAGnE,cAAc,EAAE,SAAS,gBAAgB,EAAE,EAC3C,eAAe,EAAE,kBAAkB;IAMvC,OAAO,CAAC,cAAc,CAEpB;YAEa,mBAAmB;IAgBrB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAe5D,OAAO;CAGjB"}
package/esm/auth.js CHANGED
@@ -1,135 +1,97 @@
1
- import { __asyncGenerator, __asyncValues, __await, __awaiter } from "tslib";
2
1
  import { PromiseResolver } from '@yume-chan/async';
3
- import { calculatePublicKey, calculatePublicKeyLength, sign } from './crypto';
4
- import { AdbCommand } from './packet';
5
- import { calculateBase64EncodedLength, encodeBase64 } from './utils';
2
+ import { calculatePublicKey, calculatePublicKeyLength, sign } from './crypto.js';
3
+ import { AdbCommand } from './packet.js';
4
+ import { calculateBase64EncodedLength, encodeBase64 } from './utils/index.js';
6
5
  export var AdbAuthType;
7
6
  (function (AdbAuthType) {
8
7
  AdbAuthType[AdbAuthType["Token"] = 1] = "Token";
9
8
  AdbAuthType[AdbAuthType["Signature"] = 2] = "Signature";
10
9
  AdbAuthType[AdbAuthType["PublicKey"] = 3] = "PublicKey";
11
- })(AdbAuthType || (AdbAuthType = {}));
12
- export const AdbSignatureAuthenticator = function (credentialStore, getNextRequest) {
13
- return __asyncGenerator(this, arguments, function* () {
14
- var e_1, _a;
15
- try {
16
- for (var _b = __asyncValues(credentialStore.iterateKeys()), _c; _c = yield __await(_b.next()), !_c.done;) {
17
- const key = _c.value;
18
- const packet = yield __await(getNextRequest());
19
- if (packet.arg0 !== AdbAuthType.Token) {
20
- return yield __await(void 0);
21
- }
22
- const signature = sign(key, packet.payload);
23
- yield yield __await({
24
- command: AdbCommand.Auth,
25
- arg0: AdbAuthType.Signature,
26
- arg1: 0,
27
- payload: signature,
28
- });
29
- }
30
- }
31
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
32
- finally {
33
- try {
34
- if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));
35
- }
36
- finally { if (e_1) throw e_1.error; }
37
- }
38
- });
39
- };
40
- export const AdbPublicKeyAuthenticator = function (credentialStore, getNextRequest) {
41
- return __asyncGenerator(this, arguments, function* () {
42
- var e_2, _a;
43
- const packet = yield __await(getNextRequest());
10
+ })(AdbAuthType = AdbAuthType || (AdbAuthType = {}));
11
+ export const AdbSignatureAuthenticator = async function* (credentialStore, getNextRequest) {
12
+ for await (const key of credentialStore.iterateKeys()) {
13
+ const packet = await getNextRequest();
44
14
  if (packet.arg0 !== AdbAuthType.Token) {
45
- return yield __await(void 0);
15
+ return;
46
16
  }
47
- let privateKey;
48
- try {
49
- for (var _b = __asyncValues(credentialStore.iterateKeys()), _c; _c = yield __await(_b.next()), !_c.done;) {
50
- const key = _c.value;
51
- privateKey = key;
52
- break;
53
- }
54
- }
55
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
56
- finally {
57
- try {
58
- if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));
59
- }
60
- finally { if (e_2) throw e_2.error; }
61
- }
62
- if (!privateKey) {
63
- privateKey = yield __await(credentialStore.generateKey());
64
- }
65
- const publicKeyLength = calculatePublicKeyLength();
66
- const [publicKeyBase64Length] = calculateBase64EncodedLength(publicKeyLength);
67
- // The public key is null terminated,
68
- // So we allocate the buffer with one extra byte.
69
- const publicKeyBuffer = new ArrayBuffer(publicKeyBase64Length + 1);
70
- calculatePublicKey(privateKey, publicKeyBuffer);
71
- encodeBase64(publicKeyBuffer, 0, publicKeyLength, publicKeyBuffer);
72
- yield yield __await({
17
+ const signature = sign(key, packet.payload);
18
+ yield {
73
19
  command: AdbCommand.Auth,
74
- arg0: AdbAuthType.PublicKey,
20
+ arg0: AdbAuthType.Signature,
75
21
  arg1: 0,
76
- payload: publicKeyBuffer,
77
- });
78
- });
22
+ payload: new Uint8Array(signature),
23
+ };
24
+ }
25
+ };
26
+ export const AdbPublicKeyAuthenticator = async function* (credentialStore, getNextRequest) {
27
+ const packet = await getNextRequest();
28
+ if (packet.arg0 !== AdbAuthType.Token) {
29
+ return;
30
+ }
31
+ let privateKey;
32
+ for await (const key of credentialStore.iterateKeys()) {
33
+ privateKey = key;
34
+ break;
35
+ }
36
+ if (!privateKey) {
37
+ privateKey = await credentialStore.generateKey();
38
+ }
39
+ const publicKeyLength = calculatePublicKeyLength();
40
+ const [publicKeyBase64Length] = calculateBase64EncodedLength(publicKeyLength);
41
+ // The public key is null terminated,
42
+ // So we allocate the buffer with one extra byte.
43
+ const publicKeyBuffer = new Uint8Array(publicKeyBase64Length + 1);
44
+ calculatePublicKey(privateKey, publicKeyBuffer);
45
+ encodeBase64(publicKeyBuffer.subarray(0, publicKeyLength), publicKeyBuffer);
46
+ yield {
47
+ command: AdbCommand.Auth,
48
+ arg0: AdbAuthType.PublicKey,
49
+ arg1: 0,
50
+ payload: publicKeyBuffer,
51
+ };
79
52
  };
80
- export const AdbDefaultAuthenticators = [
53
+ export const ADB_DEFAULT_AUTHENTICATORS = [
81
54
  AdbSignatureAuthenticator,
82
55
  AdbPublicKeyAuthenticator,
83
56
  ];
84
- export class AdbAuthenticationHandler {
57
+ export class AdbAuthenticationProcessor {
58
+ authenticators;
59
+ credentialStore;
60
+ pendingRequest = new PromiseResolver();
61
+ iterator;
85
62
  constructor(authenticators, credentialStore) {
86
- this.pendingRequest = new PromiseResolver();
87
- this.getNextRequest = () => {
88
- return this.pendingRequest.promise;
89
- };
90
63
  this.authenticators = authenticators;
91
64
  this.credentialStore = credentialStore;
92
65
  }
93
- runAuthenticator() {
94
- return __asyncGenerator(this, arguments, function* runAuthenticator_1() {
95
- var e_3, _a;
96
- for (const authenticator of this.authenticators) {
97
- try {
98
- for (var _b = (e_3 = void 0, __asyncValues(authenticator(this.credentialStore, this.getNextRequest))), _c; _c = yield __await(_b.next()), !_c.done;) {
99
- const packet = _c.value;
100
- // If the authenticator yielded a response
101
- // Prepare `nextRequest` for next authentication request
102
- this.pendingRequest = new PromiseResolver();
103
- // Yield the response to outer layer
104
- yield yield __await(packet);
105
- }
106
- }
107
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
108
- finally {
109
- try {
110
- if (_c && !_c.done && (_a = _b.return)) yield __await(_a.call(_b));
111
- }
112
- finally { if (e_3) throw e_3.error; }
113
- }
114
- // If the authenticator returned,
115
- // Next authenticator will be given the same `pendingRequest`
66
+ getNextRequest = () => {
67
+ return this.pendingRequest.promise;
68
+ };
69
+ async *invokeAuthenticator() {
70
+ for (const authenticator of this.authenticators) {
71
+ for await (const packet of authenticator(this.credentialStore, this.getNextRequest)) {
72
+ // If the authenticator yielded a response
73
+ // Prepare `nextRequest` for next authentication request
74
+ this.pendingRequest = new PromiseResolver();
75
+ // Yield the response to outer layer
76
+ yield packet;
116
77
  }
117
- throw new Error('Cannot authenticate with device');
118
- });
78
+ // If the authenticator returned,
79
+ // Next authenticator will be given the same `pendingRequest`
80
+ }
119
81
  }
120
- handle(packet) {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- if (!this.iterator) {
123
- this.iterator = this.runAuthenticator();
124
- }
125
- this.pendingRequest.resolve(packet);
126
- const result = yield this.iterator.next();
127
- return result.value;
128
- });
82
+ async process(packet) {
83
+ if (!this.iterator) {
84
+ this.iterator = this.invokeAuthenticator();
85
+ }
86
+ this.pendingRequest.resolve(packet);
87
+ const result = await this.iterator.next();
88
+ if (result.done) {
89
+ throw new Error('No authenticator can handle the request');
90
+ }
91
+ return result.value;
129
92
  }
130
93
  dispose() {
131
- var _a, _b;
132
- (_b = (_a = this.iterator) === null || _a === void 0 ? void 0 : _a.return) === null || _b === void 0 ? void 0 : _b.call(_a);
94
+ this.iterator?.return?.();
133
95
  }
134
96
  }
135
97
  //# sourceMappingURL=auth.js.map