@yume-chan/adb 0.0.9 → 0.0.12

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 (407) hide show
  1. package/CHANGELOG.json +55 -0
  2. package/CHANGELOG.md +35 -0
  3. package/LICENSE +21 -21
  4. package/README.md +240 -257
  5. package/esm/adb.d.ts +48 -0
  6. package/esm/adb.d.ts.map +1 -0
  7. package/esm/adb.js +141 -145
  8. package/esm/adb.js.map +1 -1
  9. package/{dts → esm}/auth.d.ts +17 -7
  10. package/esm/auth.d.ts.map +1 -0
  11. package/esm/auth.js +69 -109
  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 +50 -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/{cjs/commands/shell → esm/commands/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 -26
  78. package/esm/commands/sync/request.js.map +1 -1
  79. package/{dts → esm}/commands/sync/response.d.ts +3 -3
  80. package/esm/commands/sync/response.d.ts.map +1 -0
  81. package/esm/commands/sync/response.js +16 -19
  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/esm/crypto.d.ts +24 -0
  96. package/esm/crypto.d.ts.map +1 -0
  97. package/esm/crypto.js +33 -31
  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 -53
  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/esm/utils/encoding.d.ts.map +1 -0
  165. package/esm/utils/encoding.js +11 -0
  166. package/esm/utils/encoding.js.map +1 -0
  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 -4
  170. package/esm/utils/index.js.map +1 -1
  171. package/package.json +49 -50
  172. package/src/adb.ts +247 -242
  173. package/src/auth.ts +170 -156
  174. package/src/backend.ts +11 -24
  175. package/src/commands/base.ts +11 -11
  176. package/src/commands/framebuffer.ts +73 -73
  177. package/src/commands/index.ts +8 -8
  178. package/src/commands/install.ts +32 -21
  179. package/src/commands/power.ts +54 -0
  180. package/src/commands/reverse.ts +136 -133
  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 +20 -20
  186. package/src/commands/sync/index.ts +7 -7
  187. package/src/commands/sync/list.ts +40 -39
  188. package/src/commands/sync/pull.ts +43 -34
  189. package/src/commands/sync/push.ts +41 -46
  190. package/src/commands/sync/request.ts +49 -48
  191. package/src/commands/sync/response.ts +58 -57
  192. package/src/commands/sync/stat.ts +123 -121
  193. package/src/commands/sync/sync.ts +145 -113
  194. package/src/commands/tcpip.ts +21 -21
  195. package/src/crypto.ts +280 -280
  196. package/src/features.ts +5 -5
  197. package/src/index.ts +11 -10
  198. package/src/packet.ts +69 -89
  199. package/src/socket/dispatcher.ts +256 -269
  200. package/src/socket/index.ts +2 -6
  201. package/src/socket/socket.ts +129 -28
  202. package/src/stream/buffered.ts +147 -0
  203. package/src/stream/detect.native.ts +362 -0
  204. package/src/stream/detect.polyfill.ts +25 -0
  205. package/src/stream/detect.ts +25 -0
  206. package/src/stream/index.ts +3 -2
  207. package/src/stream/transform.ts +427 -0
  208. package/src/utils/auto-reset-event.ts +41 -41
  209. package/src/utils/base64.ts +306 -274
  210. package/src/utils/encoding.ts +13 -0
  211. package/src/utils/index.ts +3 -4
  212. package/tsconfig.build.json +3 -0
  213. package/tsconfig.build.tsbuildinfo +1 -0
  214. package/tsconfig.test.json +10 -0
  215. package/cjs/adb.js +0 -205
  216. package/cjs/adb.js.map +0 -1
  217. package/cjs/auth.js +0 -141
  218. package/cjs/auth.js.map +0 -1
  219. package/cjs/backend.js +0 -3
  220. package/cjs/backend.js.map +0 -1
  221. package/cjs/commands/base.js +0 -12
  222. package/cjs/commands/base.js.map +0 -1
  223. package/cjs/commands/demo-mode.js +0 -174
  224. package/cjs/commands/demo-mode.js.map +0 -1
  225. package/cjs/commands/framebuffer.js +0 -66
  226. package/cjs/commands/framebuffer.js.map +0 -1
  227. package/cjs/commands/index.js +0 -12
  228. package/cjs/commands/index.js.map +0 -1
  229. package/cjs/commands/install.js +0 -20
  230. package/cjs/commands/install.js.map +0 -1
  231. package/cjs/commands/reverse.js +0 -105
  232. package/cjs/commands/reverse.js.map +0 -1
  233. package/cjs/commands/shell/index.js +0 -56
  234. package/cjs/commands/shell/index.js.map +0 -1
  235. package/cjs/commands/shell/legacy.js +0 -37
  236. package/cjs/commands/shell/legacy.js.map +0 -1
  237. package/cjs/commands/shell/protocol.js +0 -83
  238. package/cjs/commands/shell/protocol.js.map +0 -1
  239. package/cjs/commands/shell/types.js +0 -3
  240. package/cjs/commands/shell/utils.js +0 -23
  241. package/cjs/commands/shell/utils.js.map +0 -1
  242. package/cjs/commands/sync/index.js +0 -11
  243. package/cjs/commands/sync/index.js.map +0 -1
  244. package/cjs/commands/sync/list.js +0 -36
  245. package/cjs/commands/sync/list.js.map +0 -1
  246. package/cjs/commands/sync/pull.js +0 -34
  247. package/cjs/commands/sync/pull.js.map +0 -1
  248. package/cjs/commands/sync/push.js +0 -49
  249. package/cjs/commands/sync/push.js.map +0 -1
  250. package/cjs/commands/sync/request.js +0 -48
  251. package/cjs/commands/sync/request.js.map +0 -1
  252. package/cjs/commands/sync/response.js +0 -53
  253. package/cjs/commands/sync/response.js.map +0 -1
  254. package/cjs/commands/sync/stat.js +0 -109
  255. package/cjs/commands/sync/stat.js.map +0 -1
  256. package/cjs/commands/sync/sync.js +0 -118
  257. package/cjs/commands/sync/sync.js.map +0 -1
  258. package/cjs/commands/tcpip.js +0 -28
  259. package/cjs/commands/tcpip.js.map +0 -1
  260. package/cjs/crypto.js +0 -231
  261. package/cjs/crypto.js.map +0 -1
  262. package/cjs/features.js +0 -10
  263. package/cjs/features.js.map +0 -1
  264. package/cjs/index.js +0 -14
  265. package/cjs/index.js.map +0 -1
  266. package/cjs/packet.js +0 -77
  267. package/cjs/packet.js.map +0 -1
  268. package/cjs/socket/close-event-emitter.js +0 -32
  269. package/cjs/socket/close-event-emitter.js.map +0 -1
  270. package/cjs/socket/controller.js +0 -84
  271. package/cjs/socket/controller.js.map +0 -1
  272. package/cjs/socket/data-event-emitter.js +0 -29
  273. package/cjs/socket/data-event-emitter.js.map +0 -1
  274. package/cjs/socket/dispatcher.js +0 -219
  275. package/cjs/socket/dispatcher.js.map +0 -1
  276. package/cjs/socket/index.js +0 -10
  277. package/cjs/socket/index.js.map +0 -1
  278. package/cjs/socket/logger.js +0 -3
  279. package/cjs/socket/logger.js.map +0 -1
  280. package/cjs/socket/socket.js +0 -24
  281. package/cjs/socket/socket.js.map +0 -1
  282. package/cjs/stream/buffered-stream.js +0 -78
  283. package/cjs/stream/buffered-stream.js.map +0 -1
  284. package/cjs/stream/index.js +0 -6
  285. package/cjs/stream/index.js.map +0 -1
  286. package/cjs/stream/stream.js +0 -45
  287. package/cjs/stream/stream.js.map +0 -1
  288. package/cjs/utils/auto-reset-event.js +0 -37
  289. package/cjs/utils/auto-reset-event.js.map +0 -1
  290. package/cjs/utils/base64.js +0 -210
  291. package/cjs/utils/base64.js.map +0 -1
  292. package/cjs/utils/chunk.js +0 -75
  293. package/cjs/utils/chunk.js.map +0 -1
  294. package/cjs/utils/event-queue.js +0 -108
  295. package/cjs/utils/event-queue.js.map +0 -1
  296. package/cjs/utils/index.js +0 -8
  297. package/cjs/utils/index.js.map +0 -1
  298. package/dts/adb.d.ts +0 -46
  299. package/dts/adb.d.ts.map +0 -1
  300. package/dts/auth.d.ts.map +0 -1
  301. package/dts/backend.d.ts +0 -15
  302. package/dts/backend.d.ts.map +0 -1
  303. package/dts/commands/base.d.ts.map +0 -1
  304. package/dts/commands/demo-mode.d.ts +0 -41
  305. package/dts/commands/demo-mode.d.ts.map +0 -1
  306. package/dts/commands/framebuffer.d.ts.map +0 -1
  307. package/dts/commands/index.d.ts +0 -9
  308. package/dts/commands/index.d.ts.map +0 -1
  309. package/dts/commands/install.d.ts +0 -3
  310. package/dts/commands/install.d.ts.map +0 -1
  311. package/dts/commands/reverse.d.ts.map +0 -1
  312. package/dts/commands/shell/index.d.ts +0 -20
  313. package/dts/commands/shell/index.d.ts.map +0 -1
  314. package/dts/commands/shell/legacy.d.ts +0 -27
  315. package/dts/commands/shell/legacy.d.ts.map +0 -1
  316. package/dts/commands/shell/protocol.d.ts +0 -37
  317. package/dts/commands/shell/protocol.d.ts.map +0 -1
  318. package/dts/commands/shell/types.d.ts +0 -15
  319. package/dts/commands/shell/types.d.ts.map +0 -1
  320. package/dts/commands/shell/utils.d.ts.map +0 -1
  321. package/dts/commands/sync/index.d.ts +0 -8
  322. package/dts/commands/sync/index.d.ts.map +0 -1
  323. package/dts/commands/sync/list.d.ts.map +0 -1
  324. package/dts/commands/sync/pull.d.ts +0 -11
  325. package/dts/commands/sync/pull.d.ts.map +0 -1
  326. package/dts/commands/sync/push.d.ts +0 -8
  327. package/dts/commands/sync/push.d.ts.map +0 -1
  328. package/dts/commands/sync/request.d.ts.map +0 -1
  329. package/dts/commands/sync/response.d.ts.map +0 -1
  330. package/dts/commands/sync/stat.d.ts.map +0 -1
  331. package/dts/commands/sync/sync.d.ts +0 -68
  332. package/dts/commands/sync/sync.d.ts.map +0 -1
  333. package/dts/crypto.d.ts +0 -17
  334. package/dts/crypto.d.ts.map +0 -1
  335. package/dts/index.d.ts +0 -11
  336. package/dts/index.d.ts.map +0 -1
  337. package/dts/packet.d.ts +0 -27
  338. package/dts/packet.d.ts.map +0 -1
  339. package/dts/socket/close-event-emitter.d.ts +0 -8
  340. package/dts/socket/close-event-emitter.d.ts.map +0 -1
  341. package/dts/socket/controller.d.ts +0 -43
  342. package/dts/socket/controller.d.ts.map +0 -1
  343. package/dts/socket/data-event-emitter.d.ts +0 -10
  344. package/dts/socket/data-event-emitter.d.ts.map +0 -1
  345. package/dts/socket/dispatcher.d.ts.map +0 -1
  346. package/dts/socket/index.d.ts +0 -7
  347. package/dts/socket/index.d.ts.map +0 -1
  348. package/dts/socket/logger.d.ts +0 -9
  349. package/dts/socket/logger.d.ts.map +0 -1
  350. package/dts/socket/socket.d.ts +0 -22
  351. package/dts/socket/socket.d.ts.map +0 -1
  352. package/dts/stream/buffered-stream.d.ts +0 -30
  353. package/dts/stream/buffered-stream.d.ts.map +0 -1
  354. package/dts/stream/index.d.ts +0 -3
  355. package/dts/stream/index.d.ts.map +0 -1
  356. package/dts/stream/stream.d.ts +0 -15
  357. package/dts/stream/stream.d.ts.map +0 -1
  358. package/dts/utils/auto-reset-event.d.ts.map +0 -1
  359. package/dts/utils/base64.d.ts +0 -7
  360. package/dts/utils/base64.d.ts.map +0 -1
  361. package/dts/utils/chunk.d.ts +0 -3
  362. package/dts/utils/chunk.d.ts.map +0 -1
  363. package/dts/utils/event-queue.d.ts +0 -35
  364. package/dts/utils/event-queue.d.ts.map +0 -1
  365. package/dts/utils/index.d.ts +0 -5
  366. package/dts/utils/index.d.ts.map +0 -1
  367. package/esm/commands/demo-mode.js +0 -170
  368. package/esm/commands/demo-mode.js.map +0 -1
  369. package/esm/commands/shell/index.js +0 -52
  370. package/esm/commands/shell/index.js.map +0 -1
  371. package/esm/commands/shell/legacy.js +0 -33
  372. package/esm/commands/shell/legacy.js.map +0 -1
  373. package/esm/commands/shell/protocol.js +0 -79
  374. package/esm/commands/shell/protocol.js.map +0 -1
  375. package/esm/commands/shell/types.js.map +0 -1
  376. package/esm/commands/shell/utils.js.map +0 -1
  377. package/esm/socket/close-event-emitter.js +0 -28
  378. package/esm/socket/close-event-emitter.js.map +0 -1
  379. package/esm/socket/data-event-emitter.js +0 -25
  380. package/esm/socket/data-event-emitter.js.map +0 -1
  381. package/esm/socket/logger.js +0 -2
  382. package/esm/socket/logger.js.map +0 -1
  383. package/esm/stream/buffered-stream.js +0 -73
  384. package/esm/stream/buffered-stream.js.map +0 -1
  385. package/esm/stream/stream.js +0 -41
  386. package/esm/stream/stream.js.map +0 -1
  387. package/esm/utils/chunk.js +0 -70
  388. package/esm/utils/chunk.js.map +0 -1
  389. package/esm/utils/event-queue.js +0 -104
  390. package/esm/utils/event-queue.js.map +0 -1
  391. package/src/commands/demo-mode.ts +0 -160
  392. package/src/commands/shell/index.ts +0 -68
  393. package/src/commands/shell/legacy.ts +0 -42
  394. package/src/commands/shell/protocol.ts +0 -94
  395. package/src/commands/shell/types.ts +0 -21
  396. package/src/socket/close-event-emitter.ts +0 -28
  397. package/src/socket/controller.ts +0 -105
  398. package/src/socket/data-event-emitter.ts +0 -27
  399. package/src/socket/logger.ts +0 -12
  400. package/src/stream/buffered-stream.ts +0 -100
  401. package/src/stream/stream.ts +0 -50
  402. package/src/utils/chunk.ts +0 -70
  403. package/src/utils/event-queue.ts +0 -145
  404. package/tsconfig.cjs.json +0 -11
  405. package/tsconfig.esm.json +0 -28
  406. package/tsconfig.esm.tsbuildinfo +0 -1305
  407. package/tsconfig.json +0 -18
@@ -1,121 +1,123 @@
1
- import Struct, { placeholder } from '@yume-chan/struct';
2
- import { AdbBufferedStream } from '../../stream';
3
- import { AdbSyncRequestId, adbSyncWriteRequest } from './request';
4
- import { adbSyncReadResponse, AdbSyncResponseId } from './response';
5
-
6
- // https://github.com/python/cpython/blob/4e581d64b8aff3e2eda99b12f080c877bb78dfca/Lib/stat.py#L36
7
- export enum LinuxFileType {
8
- Directory = 0o04,
9
- File = 0o10,
10
- Link = 0o12,
11
- }
12
-
13
- export const AdbSyncLstatResponse =
14
- new Struct({ littleEndian: true })
15
- .int32('mode')
16
- .int32('size')
17
- .int32('mtime')
18
- .extra({
19
- id: AdbSyncResponseId.Lstat as const,
20
- get type() { return this.mode >> 12 as LinuxFileType; },
21
- get permission() { return this.mode & 0b00001111_11111111; },
22
- })
23
- .postDeserialize((object) => {
24
- if (object.mode === 0 &&
25
- object.size === 0 &&
26
- object.mtime === 0
27
- ) {
28
- throw new Error('lstat failed');
29
- }
30
- });
31
-
32
- export type AdbSyncLstatResponse = typeof AdbSyncLstatResponse['TDeserializeResult'];
33
-
34
- export enum AdbSyncStatErrorCode {
35
- EACCES = 13,
36
- EEXIST = 17,
37
- EFAULT = 14,
38
- EFBIG = 27,
39
- EINTR = 4,
40
- EINVAL = 22,
41
- EIO = 5,
42
- EISDIR = 21,
43
- ELOOP = 40,
44
- EMFILE = 24,
45
- ENAMETOOLONG = 36,
46
- ENFILE = 23,
47
- ENOENT = 2,
48
- ENOMEM = 12,
49
- ENOSPC = 28,
50
- ENOTDIR = 20,
51
- EOVERFLOW = 75,
52
- EPERM = 1,
53
- EROFS = 30,
54
- ETXTBSY = 26,
55
- }
56
-
57
- export const AdbSyncStatResponse =
58
- new Struct({ littleEndian: true })
59
- .uint32('error', placeholder<AdbSyncStatErrorCode>())
60
- .uint64('dev')
61
- .uint64('ino')
62
- .uint32('mode')
63
- .uint32('nlink')
64
- .uint32('uid')
65
- .uint32('gid')
66
- .uint64('size')
67
- .uint64('atime')
68
- .uint64('mtime')
69
- .uint64('ctime')
70
- .extra({
71
- id: AdbSyncResponseId.Stat as const,
72
- get type() { return this.mode >> 12 as LinuxFileType; },
73
- get permission() { return this.mode & 0b00001111_11111111; },
74
- })
75
- .postDeserialize((object) => {
76
- if (object.error) {
77
- throw new Error(AdbSyncStatErrorCode[object.error]);
78
- }
79
- });
80
-
81
- export type AdbSyncStatResponse = typeof AdbSyncStatResponse['TDeserializeResult'];
82
-
83
- const StatResponseType = {
84
- [AdbSyncResponseId.Stat]: AdbSyncStatResponse,
85
- };
86
-
87
- const LstatResponseType = {
88
- [AdbSyncResponseId.Lstat]: AdbSyncLstatResponse,
89
- };
90
-
91
- const Lstat2ResponseType = {
92
- [AdbSyncResponseId.Lstat2]: AdbSyncStatResponse,
93
- };
94
-
95
- export async function adbSyncLstat(
96
- stream: AdbBufferedStream,
97
- path: string,
98
- v2: boolean,
99
- ): Promise<AdbSyncLstatResponse | AdbSyncStatResponse> {
100
- let requestId: AdbSyncRequestId.Lstat | AdbSyncRequestId.Lstat2;
101
- let responseType: typeof LstatResponseType | typeof Lstat2ResponseType;
102
-
103
- if (v2) {
104
- requestId = AdbSyncRequestId.Lstat2;
105
- responseType = Lstat2ResponseType;
106
- } else {
107
- requestId = AdbSyncRequestId.Lstat;
108
- responseType = LstatResponseType;
109
- }
110
-
111
- await adbSyncWriteRequest(stream, requestId, path);
112
- return adbSyncReadResponse(stream, responseType);
113
- }
114
-
115
- export async function adbSyncStat(
116
- stream: AdbBufferedStream,
117
- path: string,
118
- ): Promise<AdbSyncStatResponse> {
119
- await adbSyncWriteRequest(stream, AdbSyncRequestId.Stat, path);
120
- return adbSyncReadResponse(stream, StatResponseType);
121
- }
1
+ import Struct, { placeholder } from '@yume-chan/struct';
2
+ import type { AdbBufferedStream, WritableStreamDefaultWriter } from '../../stream/index.js';
3
+ import { AdbSyncRequestId, adbSyncWriteRequest } from './request.js';
4
+ import { adbSyncReadResponse, AdbSyncResponseId } from './response.js';
5
+
6
+ // https://github.com/python/cpython/blob/4e581d64b8aff3e2eda99b12f080c877bb78dfca/Lib/stat.py#L36
7
+ export enum LinuxFileType {
8
+ Directory = 0o04,
9
+ File = 0o10,
10
+ Link = 0o12,
11
+ }
12
+
13
+ export const AdbSyncLstatResponse =
14
+ new Struct({ littleEndian: true })
15
+ .int32('mode')
16
+ .int32('size')
17
+ .int32('mtime')
18
+ .extra({
19
+ id: AdbSyncResponseId.Lstat as const,
20
+ get type() { return this.mode >> 12 as LinuxFileType; },
21
+ get permission() { return this.mode & 0b00001111_11111111; },
22
+ })
23
+ .postDeserialize((object) => {
24
+ if (object.mode === 0 &&
25
+ object.size === 0 &&
26
+ object.mtime === 0
27
+ ) {
28
+ throw new Error('lstat failed');
29
+ }
30
+ });
31
+
32
+ export type AdbSyncLstatResponse = typeof AdbSyncLstatResponse['TDeserializeResult'];
33
+
34
+ export enum AdbSyncStatErrorCode {
35
+ EACCES = 13,
36
+ EEXIST = 17,
37
+ EFAULT = 14,
38
+ EFBIG = 27,
39
+ EINTR = 4,
40
+ EINVAL = 22,
41
+ EIO = 5,
42
+ EISDIR = 21,
43
+ ELOOP = 40,
44
+ EMFILE = 24,
45
+ ENAMETOOLONG = 36,
46
+ ENFILE = 23,
47
+ ENOENT = 2,
48
+ ENOMEM = 12,
49
+ ENOSPC = 28,
50
+ ENOTDIR = 20,
51
+ EOVERFLOW = 75,
52
+ EPERM = 1,
53
+ EROFS = 30,
54
+ ETXTBSY = 26,
55
+ }
56
+
57
+ export const AdbSyncStatResponse =
58
+ new Struct({ littleEndian: true })
59
+ .uint32('error', placeholder<AdbSyncStatErrorCode>())
60
+ .uint64('dev')
61
+ .uint64('ino')
62
+ .uint32('mode')
63
+ .uint32('nlink')
64
+ .uint32('uid')
65
+ .uint32('gid')
66
+ .uint64('size')
67
+ .uint64('atime')
68
+ .uint64('mtime')
69
+ .uint64('ctime')
70
+ .extra({
71
+ id: AdbSyncResponseId.Stat as const,
72
+ get type() { return this.mode >> 12 as LinuxFileType; },
73
+ get permission() { return this.mode & 0b00001111_11111111; },
74
+ })
75
+ .postDeserialize((object) => {
76
+ if (object.error) {
77
+ throw new Error(AdbSyncStatErrorCode[object.error]);
78
+ }
79
+ });
80
+
81
+ export type AdbSyncStatResponse = typeof AdbSyncStatResponse['TDeserializeResult'];
82
+
83
+ const StatResponseType = {
84
+ [AdbSyncResponseId.Stat]: AdbSyncStatResponse,
85
+ };
86
+
87
+ const LstatResponseType = {
88
+ [AdbSyncResponseId.Lstat]: AdbSyncLstatResponse,
89
+ };
90
+
91
+ const Lstat2ResponseType = {
92
+ [AdbSyncResponseId.Lstat2]: AdbSyncStatResponse,
93
+ };
94
+
95
+ export async function adbSyncLstat(
96
+ stream: AdbBufferedStream,
97
+ writer: WritableStreamDefaultWriter<Uint8Array>,
98
+ path: string,
99
+ v2: boolean,
100
+ ): Promise<AdbSyncLstatResponse | AdbSyncStatResponse> {
101
+ let requestId: AdbSyncRequestId.Lstat | AdbSyncRequestId.Lstat2;
102
+ let responseType: typeof LstatResponseType | typeof Lstat2ResponseType;
103
+
104
+ if (v2) {
105
+ requestId = AdbSyncRequestId.Lstat2;
106
+ responseType = Lstat2ResponseType;
107
+ } else {
108
+ requestId = AdbSyncRequestId.Lstat;
109
+ responseType = LstatResponseType;
110
+ }
111
+
112
+ await adbSyncWriteRequest(writer, requestId, path);
113
+ return adbSyncReadResponse(stream, responseType);
114
+ }
115
+
116
+ export async function adbSyncStat(
117
+ stream: AdbBufferedStream,
118
+ writer: WritableStreamDefaultWriter<Uint8Array>,
119
+ path: string,
120
+ ): Promise<AdbSyncStatResponse> {
121
+ await adbSyncWriteRequest(writer, AdbSyncRequestId.Stat, path);
122
+ return await adbSyncReadResponse(stream, StatResponseType);
123
+ }
@@ -1,113 +1,145 @@
1
- import { AutoDisposable } from '@yume-chan/event';
2
- import { Adb } from '../../adb';
3
- import { AdbFeatures } from '../../features';
4
- import { AdbSocket } from '../../socket';
5
- import { AdbBufferedStream } from '../../stream';
6
- import { AutoResetEvent } from '../../utils';
7
- import { AdbSyncEntryResponse, adbSyncOpenDir } from './list';
8
- import { adbSyncPull } from './pull';
9
- import { adbSyncPush } from './push';
10
- import { adbSyncLstat, adbSyncStat } from './stat';
11
-
12
- export class AdbSync extends AutoDisposable {
13
- protected adb: Adb;
14
-
15
- protected stream: AdbBufferedStream;
16
-
17
- protected sendLock = this.addDisposable(new AutoResetEvent());
18
-
19
- public get supportsStat(): boolean {
20
- return this.adb.features!.includes(AdbFeatures.StatV2);
21
- }
22
-
23
- public constructor(adb: Adb, socket: AdbSocket) {
24
- super();
25
-
26
- this.adb = adb;
27
- this.stream = new AdbBufferedStream(socket);
28
- }
29
-
30
- public async lstat(path: string) {
31
- await this.sendLock.wait();
32
-
33
- try {
34
- return adbSyncLstat(this.stream, path, this.supportsStat);
35
- } finally {
36
- this.sendLock.notify();
37
- }
38
- }
39
-
40
- public async stat(path: string) {
41
- if (!this.supportsStat) {
42
- throw new Error('Not supported');
43
- }
44
-
45
- await this.sendLock.wait();
46
-
47
- try {
48
- return adbSyncStat(this.stream, path);
49
- } finally {
50
- this.sendLock.notify();
51
- }
52
- }
53
-
54
- public async isDirectory(path: string): Promise<boolean> {
55
- try {
56
- await this.lstat(path + '/');
57
- return true;
58
- } catch (e) {
59
- return false;
60
- }
61
- }
62
-
63
- public async *opendir(
64
- path: string
65
- ): AsyncGenerator<AdbSyncEntryResponse, void, void> {
66
- await this.sendLock.wait();
67
-
68
- try {
69
- yield* adbSyncOpenDir(this.stream, path);
70
- } finally {
71
- this.sendLock.notify();
72
- }
73
- }
74
-
75
- public async readdir(path: string) {
76
- const results: AdbSyncEntryResponse[] = [];
77
- for await (const entry of this.opendir(path)) {
78
- results.push(entry);
79
- }
80
- return results;
81
- }
82
-
83
- public async *read(filename: string): AsyncGenerator<ArrayBuffer, void, void> {
84
- await this.sendLock.wait();
85
-
86
- try {
87
- yield* adbSyncPull(this.stream, filename);
88
- } finally {
89
- this.sendLock.notify();
90
- }
91
- }
92
-
93
- public async write(
94
- filename: string,
95
- content: ArrayLike<number> | ArrayBufferLike | AsyncIterable<ArrayBuffer>,
96
- mode?: number,
97
- mtime?: number,
98
- onProgress?: (uploaded: number) => void,
99
- ): Promise<void> {
100
- await this.sendLock.wait();
101
-
102
- try {
103
- await adbSyncPush(this.stream, filename, content, mode, mtime, undefined, onProgress);
104
- } finally {
105
- this.sendLock.notify();
106
- }
107
- }
108
-
109
- public dispose() {
110
- super.dispose();
111
- this.stream.close();
112
- }
113
- }
1
+ import { AutoDisposable } from '@yume-chan/event';
2
+ import type { Adb } from '../../adb.js';
3
+ import { AdbFeatures } from '../../features.js';
4
+ import type { AdbSocket } from '../../socket/index.js';
5
+ import { AdbBufferedStream, ReadableStream, WrapReadableStream, WrapWritableStream, WritableStream, WritableStreamDefaultWriter } from '../../stream/index.js';
6
+ import { AutoResetEvent } from '../../utils/index.js';
7
+ import { AdbSyncEntryResponse, adbSyncOpenDir } from './list.js';
8
+ import { adbSyncPull } from './pull.js';
9
+ import { adbSyncPush } from './push.js';
10
+ import { adbSyncLstat, adbSyncStat } from './stat.js';
11
+
12
+ export class AdbSync extends AutoDisposable {
13
+ protected adb: Adb;
14
+
15
+ protected stream: AdbBufferedStream;
16
+
17
+ protected writer: WritableStreamDefaultWriter<Uint8Array>;
18
+
19
+ protected sendLock = this.addDisposable(new AutoResetEvent());
20
+
21
+ public get supportsStat(): boolean {
22
+ return this.adb.features!.includes(AdbFeatures.StatV2);
23
+ }
24
+
25
+ public constructor(adb: Adb, socket: AdbSocket) {
26
+ super();
27
+
28
+ this.adb = adb;
29
+ this.stream = new AdbBufferedStream(socket);
30
+ this.writer = socket.writable.getWriter();
31
+ }
32
+
33
+ public async lstat(path: string) {
34
+ await this.sendLock.wait();
35
+
36
+ try {
37
+ return adbSyncLstat(this.stream, this.writer, path, this.supportsStat);
38
+ } finally {
39
+ this.sendLock.notify();
40
+ }
41
+ }
42
+
43
+ public async stat(path: string) {
44
+ if (!this.supportsStat) {
45
+ throw new Error('Not supported');
46
+ }
47
+
48
+ await this.sendLock.wait();
49
+
50
+ try {
51
+ return adbSyncStat(this.stream, this.writer, path);
52
+ } finally {
53
+ this.sendLock.notify();
54
+ }
55
+ }
56
+
57
+ public async isDirectory(path: string): Promise<boolean> {
58
+ try {
59
+ await this.lstat(path + '/');
60
+ return true;
61
+ } catch (e) {
62
+ return false;
63
+ }
64
+ }
65
+
66
+ public async *opendir(
67
+ path: string
68
+ ): AsyncGenerator<AdbSyncEntryResponse, void, void> {
69
+ await this.sendLock.wait();
70
+
71
+ try {
72
+ yield* adbSyncOpenDir(this.stream, this.writer, path);
73
+ } finally {
74
+ this.sendLock.notify();
75
+ }
76
+ }
77
+
78
+ public async readdir(path: string) {
79
+ const results: AdbSyncEntryResponse[] = [];
80
+ for await (const entry of this.opendir(path)) {
81
+ results.push(entry);
82
+ }
83
+ return results;
84
+ }
85
+
86
+ /**
87
+ * Read the content of a file on device.
88
+ *
89
+ * @param filename The full path of the file on device to read.
90
+ * @returns A `ReadableStream` that reads from the file.
91
+ */
92
+ public read(filename: string): ReadableStream<Uint8Array> {
93
+ return new WrapReadableStream<Uint8Array, ReadableStream<Uint8Array>, undefined>({
94
+ start: async () => {
95
+ await this.sendLock.wait();
96
+ return {
97
+ readable: adbSyncPull(this.stream, this.writer, filename),
98
+ state: undefined,
99
+ };
100
+ },
101
+ close: async () => {
102
+ this.sendLock.notify();
103
+ },
104
+ });
105
+ }
106
+
107
+ /**
108
+ * Write (or overwrite) a file on device.
109
+ *
110
+ * @param filename The full path of the file on device to write.
111
+ * @param mode The unix permissions of the file.
112
+ * @param mtime The modified time of the file.
113
+ * @returns A `WritableStream` that writes to the file.
114
+ */
115
+ public write(
116
+ filename: string,
117
+ mode?: number,
118
+ mtime?: number,
119
+ ): WritableStream<Uint8Array> {
120
+ return new WrapWritableStream({
121
+ start: async () => {
122
+ await this.sendLock.wait();
123
+ return {
124
+ writable: adbSyncPush(
125
+ this.stream,
126
+ this.writer,
127
+ filename,
128
+ mode,
129
+ mtime,
130
+ ),
131
+ state: undefined,
132
+ };
133
+ },
134
+ close: async () => {
135
+ this.sendLock.notify();
136
+ }
137
+ });
138
+ }
139
+
140
+ public override async dispose() {
141
+ super.dispose();
142
+ this.stream.close();
143
+ await this.writer.close();
144
+ }
145
+ }
@@ -1,21 +1,21 @@
1
- import { AdbCommandBase } from './base';
2
-
3
- export class AdbTcpIpCommand extends AdbCommandBase {
4
- public async setPort(port: number): Promise<void> {
5
- if (port <= 0) {
6
- throw new Error(`Invalid port ${port}`);
7
- }
8
-
9
- const output = await this.adb.createSocketAndReadAll(`tcpip:${port}`);
10
- if (output !== `restarting in TCP mode port: ${port}\n`) {
11
- throw new Error('Invalid response');
12
- }
13
- }
14
-
15
- public async disable(): Promise<void> {
16
- const output = await this.adb.createSocketAndReadAll('usb:');
17
- if (output !== 'restarting in USB mode\n') {
18
- throw new Error('Invalid response');
19
- }
20
- }
21
- }
1
+ import { AdbCommandBase } from './base.js';
2
+
3
+ export class AdbTcpIpCommand extends AdbCommandBase {
4
+ public async setPort(port: number): Promise<void> {
5
+ if (port <= 0) {
6
+ throw new Error(`Invalid port ${port}`);
7
+ }
8
+
9
+ const output = await this.adb.createSocketAndWait(`tcpip:${port}`);
10
+ if (output !== `restarting in TCP mode port: ${port}\n`) {
11
+ throw new Error('Invalid response');
12
+ }
13
+ }
14
+
15
+ public async disable(): Promise<void> {
16
+ const output = await this.adb.createSocketAndWait('usb:');
17
+ if (output !== 'restarting in USB mode\n') {
18
+ throw new Error('Invalid response');
19
+ }
20
+ }
21
+ }