@yume-chan/scrcpy 0.0.17 → 0.0.19

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 (323) hide show
  1. package/CHANGELOG.json +39 -3
  2. package/CHANGELOG.md +22 -4
  3. package/LICENSE +1 -1
  4. package/README.md +149 -82
  5. package/bin/scrcpy-server +0 -0
  6. package/bin/version.d.ts +1 -1
  7. package/bin/version.js +1 -1
  8. package/esm/adb/client.d.ts +40 -39
  9. package/esm/adb/client.d.ts.map +1 -1
  10. package/esm/adb/client.js +223 -217
  11. package/esm/adb/client.js.map +1 -1
  12. package/esm/adb/connection.d.ts +48 -37
  13. package/esm/adb/connection.d.ts.map +1 -1
  14. package/esm/adb/connection.js +121 -101
  15. package/esm/adb/connection.js.map +1 -1
  16. package/esm/adb/index.d.ts +3 -3
  17. package/esm/adb/index.js +3 -3
  18. package/esm/adb/options/1_16.d.ts +7 -7
  19. package/esm/adb/options/1_16.d.ts.map +1 -1
  20. package/esm/adb/options/1_16.js +19 -19
  21. package/esm/adb/options/1_16.js.map +1 -1
  22. package/esm/adb/options/1_22.d.ts +7 -7
  23. package/esm/adb/options/1_22.d.ts.map +1 -1
  24. package/esm/adb/options/1_22.js +16 -16
  25. package/esm/adb/options/1_22.js.map +1 -1
  26. package/esm/adb/options/1_26.d.ts +9 -0
  27. package/esm/adb/options/1_26.d.ts.map +1 -0
  28. package/esm/adb/options/1_26.js +11 -0
  29. package/esm/adb/options/1_26.js.map +1 -0
  30. package/esm/adb/options/2_0.d.ts +8 -0
  31. package/esm/adb/options/2_0.d.ts.map +1 -0
  32. package/esm/adb/options/2_0.js +13 -0
  33. package/esm/adb/options/2_0.js.map +1 -0
  34. package/esm/adb/options/index.d.ts +3 -3
  35. package/esm/adb/options/index.js +3 -3
  36. package/esm/adb/options/types.d.ts +23 -22
  37. package/esm/adb/options/types.d.ts.map +1 -1
  38. package/esm/adb/options/types.js +36 -29
  39. package/esm/adb/options/types.js.map +1 -1
  40. package/esm/codec/av1.d.ts +33 -0
  41. package/esm/codec/av1.d.ts.map +1 -0
  42. package/esm/codec/av1.js +35 -0
  43. package/esm/codec/av1.js.map +1 -0
  44. package/esm/codec/h264.d.ts +98 -0
  45. package/esm/codec/h264.d.ts.map +1 -0
  46. package/esm/codec/h264.js +477 -0
  47. package/esm/codec/h264.js.map +1 -0
  48. package/esm/codec/h265.d.ts +36 -0
  49. package/esm/codec/h265.d.ts.map +1 -0
  50. package/esm/codec/h265.js +38 -0
  51. package/esm/codec/h265.js.map +1 -0
  52. package/esm/codec/index.d.ts +4 -0
  53. package/esm/codec/index.d.ts.map +1 -0
  54. package/esm/codec/index.js +4 -0
  55. package/esm/codec/index.js.map +1 -0
  56. package/esm/codec.d.ts +33 -33
  57. package/esm/codec.js +36 -36
  58. package/esm/control/back-or-screen-on.d.ts +3 -0
  59. package/esm/control/back-or-screen-on.d.ts.map +1 -0
  60. package/esm/control/back-or-screen-on.js +2 -0
  61. package/esm/control/back-or-screen-on.js.map +1 -0
  62. package/esm/control/basic.d.ts +5 -0
  63. package/esm/control/basic.d.ts.map +1 -0
  64. package/esm/control/basic.js +3 -0
  65. package/esm/control/basic.js.map +1 -0
  66. package/esm/control/hover-helper.d.ts +18 -0
  67. package/esm/control/hover-helper.d.ts.map +1 -0
  68. package/esm/control/hover-helper.js +44 -0
  69. package/esm/control/hover-helper.js.map +1 -0
  70. package/esm/control/index.d.ts +11 -7
  71. package/esm/control/index.d.ts.map +1 -1
  72. package/esm/control/index.js +11 -7
  73. package/esm/control/index.js.map +1 -1
  74. package/esm/control/inject-keycode.d.ts +194 -52
  75. package/esm/control/inject-keycode.d.ts.map +1 -1
  76. package/esm/control/inject-keycode.js +199 -53
  77. package/esm/control/inject-keycode.js.map +1 -1
  78. package/esm/control/inject-scroll.d.ts +3 -0
  79. package/esm/control/inject-scroll.d.ts.map +1 -0
  80. package/esm/control/inject-scroll.js +2 -0
  81. package/esm/control/inject-scroll.js.map +1 -0
  82. package/esm/control/inject-text.d.ts +8 -8
  83. package/esm/control/inject-text.d.ts.map +1 -1
  84. package/esm/control/inject-text.js +6 -6
  85. package/esm/control/inject-text.js.map +1 -1
  86. package/esm/control/inject-touch.d.ts +37 -29
  87. package/esm/control/inject-touch.d.ts.map +1 -1
  88. package/esm/control/inject-touch.js +62 -29
  89. package/esm/control/inject-touch.js.map +1 -1
  90. package/esm/control/rotate-device.d.ts +6 -6
  91. package/esm/control/rotate-device.d.ts.map +1 -1
  92. package/esm/control/rotate-device.js +3 -4
  93. package/esm/control/rotate-device.js.map +1 -1
  94. package/esm/control/serializer.d.ts +35 -22
  95. package/esm/control/serializer.d.ts.map +1 -1
  96. package/esm/control/serializer.js +82 -72
  97. package/esm/control/serializer.js.map +1 -1
  98. package/esm/control/set-clipboard.d.ts +3 -0
  99. package/esm/control/set-clipboard.d.ts.map +1 -0
  100. package/esm/control/set-clipboard.js +2 -0
  101. package/esm/control/set-clipboard.js.map +1 -0
  102. package/esm/control/set-screen-power-mode.d.ts +11 -11
  103. package/esm/control/set-screen-power-mode.d.ts.map +1 -1
  104. package/esm/control/set-screen-power-mode.js +11 -11
  105. package/esm/control/set-screen-power-mode.js.map +1 -1
  106. package/esm/control/simple.d.ts +5 -0
  107. package/esm/control/simple.d.ts.map +1 -0
  108. package/esm/control/simple.js +3 -0
  109. package/esm/control/simple.js.map +1 -0
  110. package/esm/control/type.d.ts +14 -14
  111. package/esm/control/type.js +18 -18
  112. package/esm/decoder.d.ts +2 -0
  113. package/esm/decoder.d.ts.map +1 -0
  114. package/esm/decoder.js +2 -0
  115. package/esm/decoder.js.map +1 -0
  116. package/esm/device-message/ack-clipboard.d.ts +9 -0
  117. package/esm/device-message/ack-clipboard.d.ts.map +1 -0
  118. package/esm/device-message/ack-clipboard.js +6 -0
  119. package/esm/device-message/ack-clipboard.js.map +1 -0
  120. package/esm/device-message/clipboard.d.ts +9 -9
  121. package/esm/device-message/clipboard.d.ts.map +1 -1
  122. package/esm/device-message/clipboard.js +6 -6
  123. package/esm/device-message/clipboard.js.map +1 -1
  124. package/esm/device-message/index.d.ts +4 -3
  125. package/esm/device-message/index.d.ts.map +1 -1
  126. package/esm/device-message/index.js +4 -3
  127. package/esm/device-message/index.js.map +1 -1
  128. package/esm/device-message/stream.d.ts +7 -6
  129. package/esm/device-message/stream.d.ts.map +1 -1
  130. package/esm/device-message/stream.js +19 -15
  131. package/esm/device-message/stream.js.map +1 -1
  132. package/esm/device-message/type.d.ts +4 -4
  133. package/esm/device-message/type.js +6 -6
  134. package/esm/index.d.ts +5 -5
  135. package/esm/index.js +5 -5
  136. package/esm/options/1.17.d.ts +3 -0
  137. package/esm/options/1.17.d.ts.map +1 -0
  138. package/esm/options/1.17.js +2 -0
  139. package/esm/options/1.17.js.map +1 -0
  140. package/esm/options/1_16/codec-options.d.ts +20 -18
  141. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  142. package/esm/options/1_16/codec-options.js +25 -26
  143. package/esm/options/1_16/codec-options.js.map +1 -1
  144. package/esm/options/1_16/float-to-uint16.d.ts +5 -0
  145. package/esm/options/1_16/float-to-uint16.d.ts.map +1 -0
  146. package/esm/options/1_16/float-to-uint16.js +27 -0
  147. package/esm/options/1_16/float-to-uint16.js.map +1 -0
  148. package/esm/options/1_16/h264-configuration.d.ts +49 -0
  149. package/esm/options/1_16/h264-configuration.d.ts.map +1 -0
  150. package/esm/options/1_16/h264-configuration.js +414 -0
  151. package/esm/options/1_16/h264-configuration.js.map +1 -0
  152. package/esm/options/1_16/index.d.ts +4 -3
  153. package/esm/options/1_16/index.d.ts.map +1 -1
  154. package/esm/options/1_16/index.js +4 -3
  155. package/esm/options/1_16/index.js.map +1 -1
  156. package/esm/options/1_16/init.d.ts +66 -0
  157. package/esm/options/1_16/init.d.ts.map +1 -0
  158. package/esm/options/1_16/init.js +16 -0
  159. package/esm/options/1_16/init.js.map +1 -0
  160. package/esm/options/1_16/message.d.ts +32 -0
  161. package/esm/options/1_16/message.d.ts.map +1 -0
  162. package/esm/options/1_16/message.js +37 -0
  163. package/esm/options/1_16/message.js.map +1 -0
  164. package/esm/options/1_16/options.d.ts +102 -96
  165. package/esm/options/1_16/options.d.ts.map +1 -1
  166. package/esm/options/1_16/options.js +189 -187
  167. package/esm/options/1_16/options.js.map +1 -1
  168. package/esm/options/1_16/scroll.d.ts +28 -0
  169. package/esm/options/1_16/scroll.d.ts.map +1 -0
  170. package/esm/options/1_16/scroll.js +56 -0
  171. package/esm/options/1_16/scroll.js.map +1 -0
  172. package/esm/options/1_16/sps.d.ts +1 -1
  173. package/esm/options/1_16/sps.d.ts.map +1 -1
  174. package/esm/options/1_16/sps.js +25 -17
  175. package/esm/options/1_16/sps.js.map +1 -1
  176. package/esm/options/1_17.d.ts +32 -0
  177. package/esm/options/1_17.d.ts.map +1 -0
  178. package/esm/options/1_17.js +36 -0
  179. package/esm/options/1_17.js.map +1 -0
  180. package/esm/options/1_18.d.ts +21 -19
  181. package/esm/options/1_18.d.ts.map +1 -1
  182. package/esm/options/1_18.js +45 -45
  183. package/esm/options/1_18.js.map +1 -1
  184. package/esm/options/1_21.d.ts +22 -9
  185. package/esm/options/1_21.d.ts.map +1 -1
  186. package/esm/options/1_21.js +36 -25
  187. package/esm/options/1_21.js.map +1 -1
  188. package/esm/options/1_22/index.d.ts +3 -0
  189. package/esm/options/1_22/index.d.ts.map +1 -0
  190. package/esm/options/1_22/index.js +3 -0
  191. package/esm/options/1_22/index.js.map +1 -0
  192. package/esm/options/1_22/init.d.ts +17 -0
  193. package/esm/options/1_22/init.d.ts.map +1 -0
  194. package/esm/options/1_22/init.js +2 -0
  195. package/esm/options/1_22/init.js.map +1 -0
  196. package/esm/options/{1_22.d.ts → 1_22/options.d.ts} +30 -40
  197. package/esm/options/1_22/options.d.ts.map +1 -0
  198. package/esm/options/{1_22.js → 1_22/options.js} +26 -30
  199. package/esm/options/1_22/options.js.map +1 -0
  200. package/esm/options/1_22/scroll.d.ts +17 -0
  201. package/esm/options/1_22/scroll.d.ts.map +1 -0
  202. package/esm/options/1_22/scroll.js +15 -0
  203. package/esm/options/1_22/scroll.js.map +1 -0
  204. package/esm/options/1_23.d.ts +12 -11
  205. package/esm/options/1_23.d.ts.map +1 -1
  206. package/esm/options/1_23.js +34 -33
  207. package/esm/options/1_23.js.map +1 -1
  208. package/esm/options/1_24.d.ts +9 -8
  209. package/esm/options/1_24.d.ts.map +1 -1
  210. package/esm/options/1_24.js +12 -12
  211. package/esm/options/1_24.js.map +1 -1
  212. package/esm/options/1_25/index.d.ts +3 -0
  213. package/esm/options/1_25/index.d.ts.map +1 -0
  214. package/esm/options/1_25/index.js +3 -0
  215. package/esm/options/1_25/index.js.map +1 -0
  216. package/esm/options/1_25/options.d.ts +7 -0
  217. package/esm/options/1_25/options.d.ts.map +1 -0
  218. package/esm/options/1_25/options.js +8 -0
  219. package/esm/options/1_25/options.js.map +1 -0
  220. package/esm/options/1_25/scroll.d.ts +20 -0
  221. package/esm/options/1_25/scroll.d.ts.map +1 -0
  222. package/esm/options/1_25/scroll.js +33 -0
  223. package/esm/options/1_25/scroll.js.map +1 -0
  224. package/esm/options/1_26.d.ts +57 -0
  225. package/esm/options/1_26.d.ts.map +1 -0
  226. package/esm/options/1_26.js +67 -0
  227. package/esm/options/1_26.js.map +1 -0
  228. package/esm/options/2.d.ts +57 -0
  229. package/esm/options/2.d.ts.map +1 -0
  230. package/esm/options/2.js +67 -0
  231. package/esm/options/2.js.map +1 -0
  232. package/esm/options/2_0.d.ts +87 -0
  233. package/esm/options/2_0.d.ts.map +1 -0
  234. package/esm/options/2_0.js +175 -0
  235. package/esm/options/2_0.js.map +1 -0
  236. package/esm/options/codec.d.ts +52 -0
  237. package/esm/options/codec.d.ts.map +1 -0
  238. package/esm/options/codec.js +26 -0
  239. package/esm/options/codec.js.map +1 -0
  240. package/esm/options/index.d.ts +8 -7
  241. package/esm/options/index.d.ts.map +1 -1
  242. package/esm/options/index.js +8 -7
  243. package/esm/options/index.js.map +1 -1
  244. package/esm/options/latest.d.ts +12 -0
  245. package/esm/options/latest.d.ts.map +1 -0
  246. package/esm/options/latest.js +8 -0
  247. package/esm/options/latest.js.map +1 -0
  248. package/esm/options/types.d.ts +46 -44
  249. package/esm/options/types.d.ts.map +1 -1
  250. package/esm/options/types.js +17 -15
  251. package/esm/options/types.js.map +1 -1
  252. package/package.json +20 -12
  253. package/scripts/fetch-server.cjs +19 -9
  254. package/src/adb/client.ts +184 -147
  255. package/src/adb/connection.ts +95 -31
  256. package/src/adb/index.ts +3 -3
  257. package/src/adb/options/1_16.ts +15 -6
  258. package/src/adb/options/1_22.ts +12 -6
  259. package/src/adb/options/index.ts +3 -3
  260. package/src/adb/options/types.ts +34 -14
  261. package/src/control/back-or-screen-on.ts +4 -0
  262. package/src/control/hover-helper.ts +54 -0
  263. package/src/control/index.ts +11 -7
  264. package/src/control/inject-keycode.ts +203 -45
  265. package/src/control/inject-scroll.ts +4 -0
  266. package/src/control/inject-text.ts +7 -8
  267. package/src/control/inject-touch.ts +58 -14
  268. package/src/control/rotate-device.ts +7 -6
  269. package/src/control/serializer.ts +111 -43
  270. package/src/control/set-clipboard.ts +4 -0
  271. package/src/control/set-screen-power-mode.ts +7 -8
  272. package/src/device-message/ack-clipboard.ts +10 -0
  273. package/src/device-message/clipboard.ts +8 -8
  274. package/src/device-message/index.ts +4 -3
  275. package/src/device-message/stream.ts +17 -7
  276. package/src/index.ts +5 -5
  277. package/src/options/1_16/codec-options.ts +16 -11
  278. package/src/options/1_16/h264-configuration.ts +485 -0
  279. package/src/options/1_16/index.ts +4 -3
  280. package/src/options/1_16/options.ts +180 -130
  281. package/src/options/1_16/scroll.ts +74 -0
  282. package/src/options/1_18.ts +22 -12
  283. package/src/options/1_21.ts +30 -13
  284. package/src/options/1_22/index.ts +2 -0
  285. package/src/options/{1_22.ts → 1_22/options.ts} +9 -17
  286. package/src/options/1_22/scroll.ts +26 -0
  287. package/src/options/1_23.ts +30 -20
  288. package/src/options/1_24.ts +5 -3
  289. package/src/options/1_25/index.ts +2 -0
  290. package/src/options/1_25/options.ts +13 -0
  291. package/src/options/1_25/scroll.ts +49 -0
  292. package/src/options/index.ts +8 -7
  293. package/src/options/types.ts +36 -19
  294. package/tsconfig.build.json +1 -1
  295. package/tsconfig.build.tsbuildinfo +1 -1
  296. package/esm/decoder/index.d.ts +0 -28
  297. package/esm/decoder/index.d.ts.map +0 -1
  298. package/esm/decoder/index.js +0 -2
  299. package/esm/decoder/index.js.map +0 -1
  300. package/esm/decoder/tinyh264/index.d.ts +0 -20
  301. package/esm/decoder/tinyh264/index.d.ts.map +0 -1
  302. package/esm/decoder/tinyh264/index.js +0 -86
  303. package/esm/decoder/tinyh264/index.js.map +0 -1
  304. package/esm/decoder/tinyh264/worker.d.ts +0 -2
  305. package/esm/decoder/tinyh264/worker.d.ts.map +0 -1
  306. package/esm/decoder/tinyh264/worker.js +0 -3
  307. package/esm/decoder/tinyh264/worker.js.map +0 -1
  308. package/esm/decoder/tinyh264/wrapper.d.ts +0 -21
  309. package/esm/decoder/tinyh264/wrapper.d.ts.map +0 -1
  310. package/esm/decoder/tinyh264/wrapper.js +0 -74
  311. package/esm/decoder/tinyh264/wrapper.js.map +0 -1
  312. package/esm/decoder/types.d.ts +0 -2
  313. package/esm/decoder/types.d.ts.map +0 -1
  314. package/esm/decoder/types.js +0 -2
  315. package/esm/decoder/types.js.map +0 -1
  316. package/esm/decoder/web-codecs/index.d.ts +0 -22
  317. package/esm/decoder/web-codecs/index.d.ts.map +0 -1
  318. package/esm/decoder/web-codecs/index.js +0 -81
  319. package/esm/decoder/web-codecs/index.js.map +0 -1
  320. package/esm/options/1_22.d.ts.map +0 -1
  321. package/esm/options/1_22.js.map +0 -1
  322. package/src/options/1_16/sps.ts +0 -300
  323. package/tsconfig.test.tsbuildinfo +0 -1
@@ -1,40 +1,41 @@
1
- import { Adb, AdbSubprocessProtocol } from '@yume-chan/adb';
2
- import { ReadableStream, WrapWritableStream, type ReadableWritablePair } from '@yume-chan/stream-extra';
3
- import { ScrcpyControlMessageSerializer } from '../control/index.js';
4
- import { type ScrcpyVideoStreamPacket } from '../options/index.js';
5
- import type { AdbScrcpyOptions } from './options/index.js';
6
- export declare class AdbScrcpyClient {
7
- static pushServer(adb: Adb, path?: string): WrapWritableStream<Uint8Array>;
8
- static start(adb: Adb, path: string, version: string, options: AdbScrcpyOptions<any>): Promise<AdbScrcpyClient>;
9
- /**
10
- * This method will modify the given `options`,
11
- * so don't reuse it elsewhere.
12
- */
13
- static getEncoders(adb: Adb, path: string, version: string, options: AdbScrcpyOptions<any>): Promise<string[]>;
14
- /**
15
- * This method will modify the given `options`,
16
- * so don't reuse it elsewhere.
17
- */
18
- static getDisplays(adb: Adb, path: string, version: string, options: AdbScrcpyOptions<any>): Promise<number[]>;
19
- private process;
20
- private _stdout;
21
- get stdout(): ReadableStream<string>;
22
- get exit(): Promise<number>;
23
- private _screenWidth;
24
- get screenWidth(): number | undefined;
25
- private _screenHeight;
26
- get screenHeight(): number | undefined;
27
- private _videoStream;
28
- get videoStream(): ReadableStream<ScrcpyVideoStreamPacket>;
29
- private _controlMessageSerializer;
30
- get controlMessageSerializer(): ScrcpyControlMessageSerializer | undefined;
31
- private _deviceMessageStream;
32
- get deviceMessageStream(): ReadableStream<{
33
- type: import("../device-message/type.js").ScrcpyDeviceMessageType.Clipboard;
34
- length: number;
35
- content: string;
36
- }> | undefined;
37
- constructor(options: AdbScrcpyOptions<any>, process: AdbSubprocessProtocol, stdout: ReadableStream<string>, videoStream: ReadableStream<Uint8Array>, controlStream: ReadableWritablePair<Uint8Array, Uint8Array> | undefined);
38
- close(): Promise<void>;
39
- }
1
+ import type { Adb, AdbSubprocessProtocol } from "@yume-chan/adb";
2
+ import type { Consumable, ReadableStream, ReadableWritablePair } from "@yume-chan/stream-extra";
3
+ import { ScrcpyControlMessageSerializer } from "../control/index.js";
4
+ import type { ScrcpyDeviceMessage } from "../device-message/index.js";
5
+ import type { ScrcpyOptionsInit1_16, ScrcpyVideoStreamPacket } from "../options/index.js";
6
+ import type { AdbScrcpyOptions } from "./options/index.js";
7
+ export declare class ScrcpyExitedError extends Error {
8
+ output: string[];
9
+ constructor(output: string[]);
10
+ }
11
+ export declare class AdbScrcpyClient {
12
+ static pushServer(adb: Adb, file: ReadableStream<Consumable<Uint8Array>>, filename?: string): Promise<void>;
13
+ static start(adb: Adb, path: string, version: string, options: AdbScrcpyOptions<ScrcpyOptionsInit1_16>): Promise<AdbScrcpyClient>;
14
+ /**
15
+ * This method will modify the given `options`,
16
+ * so don't reuse it elsewhere.
17
+ */
18
+ static getEncoders(adb: Adb, path: string, version: string, options: AdbScrcpyOptions<ScrcpyOptionsInit1_16>): Promise<string[]>;
19
+ /**
20
+ * This method will modify the given `options`,
21
+ * so don't reuse it elsewhere.
22
+ */
23
+ static getDisplays(adb: Adb, path: string, version: string, options: AdbScrcpyOptions<ScrcpyOptionsInit1_16>): Promise<number[]>;
24
+ private process;
25
+ private _stdout;
26
+ get stdout(): ReadableStream<string>;
27
+ get exit(): Promise<number>;
28
+ private _screenWidth;
29
+ get screenWidth(): number | undefined;
30
+ private _screenHeight;
31
+ get screenHeight(): number | undefined;
32
+ private _videoStream;
33
+ get videoStream(): ReadableStream<ScrcpyVideoStreamPacket>;
34
+ private _controlMessageSerializer;
35
+ get controlMessageSerializer(): ScrcpyControlMessageSerializer | undefined;
36
+ private _deviceMessageStream;
37
+ get deviceMessageStream(): ReadableStream<ScrcpyDeviceMessage> | undefined;
38
+ constructor(options: AdbScrcpyOptions<ScrcpyOptionsInit1_16>, process: AdbSubprocessProtocol, stdout: ReadableStream<string>, videoStream: ReadableStream<Uint8Array>, controlStream: ReadableWritablePair<Uint8Array, Consumable<Uint8Array>> | undefined);
39
+ close(): Promise<void>;
40
+ }
40
41
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA6B,qBAAqB,EAAW,MAAM,gBAAgB,CAAC;AAChG,OAAO,EAAoD,cAAc,EAAqB,kBAAkB,EAA0F,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAErQ,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA0D3D,qBAAa,eAAe;WACV,UAAU,CACpB,GAAG,EAAE,GAAG,EACR,IAAI,SAAsB;WAcV,KAAK,CACrB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC;IA4ElC;;;OAGG;WACiB,WAAW,CAC3B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCpB;;;OAGG;WACiB,WAAW,CAC3B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC;IA8BpB,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAyB;IACxC,IAAW,MAAM,2BAA2B;IAE5C,IAAW,IAAI,oBAAgC;IAE/C,OAAO,CAAC,YAAY,CAAqB;IACzC,IAAW,WAAW,uBAAgC;IAEtD,OAAO,CAAC,aAAa,CAAqB;IAC1C,IAAW,YAAY,uBAAiC;IAExD,OAAO,CAAC,YAAY,CAA0C;IAC9D,IAAW,WAAW,4CAAgC;IAEtD,OAAO,CAAC,yBAAyB,CAA6C;IAC9E,IAAW,wBAAwB,+CAA6C;IAEhF,OAAO,CAAC,oBAAoB,CAAkD;IAC9E,IAAW,mBAAmB;;;;mBAAwC;gBAGlE,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAC9B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAC9B,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,EACvC,aAAa,EAAE,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS;IAoB9D,KAAK;CAGrB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAKjE,OAAO,KAAK,EACR,UAAU,EACV,cAAc,EACd,oBAAoB,EACvB,MAAM,yBAAyB,CAAC;AAUjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,KAAK,EACR,qBAAqB,EACrB,uBAAuB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAwB3D,qBAAa,iBAAkB,SAAQ,KAAK;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,MAAM,EAAE,MAAM,EAAE;CAItC;AAED,qBAAa,eAAe;WACJ,UAAU,CAC1B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAC5C,QAAQ,SAAsB;WAad,KAAK,CACrB,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC;IAyFpD;;;OAGG;WACiB,WAAW,CAC3B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,GACjD,OAAO,CAAC,MAAM,EAAE,CAAC;IA+BpB;;;OAGG;WACiB,WAAW,CAC3B,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,GACjD,OAAO,CAAC,MAAM,EAAE,CAAC;IA8BpB,OAAO,CAAC,OAAO,CAAwB;IAEvC,OAAO,CAAC,OAAO,CAAyB;IACxC,IAAW,MAAM,2BAEhB;IAED,IAAW,IAAI,oBAEd;IAED,OAAO,CAAC,YAAY,CAAqB;IACzC,IAAW,WAAW,uBAErB;IAED,OAAO,CAAC,aAAa,CAAqB;IAC1C,IAAW,YAAY,uBAEtB;IAED,OAAO,CAAC,YAAY,CAA0C;IAC9D,IAAW,WAAW,4CAErB;IAED,OAAO,CAAC,yBAAyB,CAEjB;IAChB,IAAW,wBAAwB,+CAElC;IAED,OAAO,CAAC,oBAAoB,CAEZ;IAChB,IAAW,mBAAmB,oDAE7B;gBAGG,OAAO,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,EAChD,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAC9B,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,EACvC,aAAa,EACP,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,GACxD,SAAS;IA2BN,KAAK;CAGrB"}
package/esm/adb/client.js CHANGED
@@ -1,218 +1,224 @@
1
- import { AdbSubprocessNoneProtocol } from '@yume-chan/adb';
2
- import { AbortController, DecodeUtf8Stream, InspectStream, ReadableStream, SplitStringStream, WrapWritableStream, WritableStream } from '@yume-chan/stream-extra';
3
- import { ScrcpyControlMessageSerializer } from '../control/index.js';
4
- import { ScrcpyDeviceMessageDeserializeStream } from '../device-message/index.js';
5
- import { DEFAULT_SERVER_PATH } from '../options/index.js';
6
- class ArrayToStream extends ReadableStream {
7
- array;
8
- index = 0;
9
- constructor(array) {
10
- super({
11
- start: async () => {
12
- await Promise.resolve();
13
- this.array = array;
14
- },
15
- pull: (controller) => {
16
- if (this.index < this.array.length) {
17
- controller.enqueue(this.array[this.index]);
18
- this.index += 1;
19
- }
20
- else {
21
- controller.close();
22
- }
23
- },
24
- });
25
- }
26
- }
27
- class ConcatStream extends ReadableStream {
28
- streams;
29
- index = 0;
30
- reader;
31
- constructor(...streams) {
32
- super({
33
- start: async (controller) => {
34
- await Promise.resolve();
35
- this.streams = streams;
36
- this.advance(controller);
37
- },
38
- pull: async (controller) => {
39
- const result = await this.reader.read();
40
- if (!result.done) {
41
- controller.enqueue(result.value);
42
- return;
43
- }
44
- this.advance(controller);
45
- }
46
- });
47
- }
48
- advance(controller) {
49
- if (this.index < this.streams.length) {
50
- this.reader = this.streams[this.index].getReader();
51
- this.index += 1;
52
- }
53
- else {
54
- controller.close();
55
- }
56
- }
57
- }
58
- export class AdbScrcpyClient {
59
- static pushServer(adb, path = DEFAULT_SERVER_PATH) {
60
- let sync;
61
- return new WrapWritableStream({
62
- async start() {
63
- sync = await adb.sync();
64
- return sync.write(path);
65
- },
66
- async close() {
67
- await sync.dispose();
68
- },
69
- });
70
- }
71
- static async start(adb, path, version, options) {
72
- const connection = options.createConnection(adb);
73
- let process;
74
- try {
75
- await connection.initialize();
76
- process = await adb.subprocess.spawn([
77
- // cspell: disable-next-line
78
- `CLASSPATH=${path}`,
79
- 'app_process',
80
- /* unused */ '/',
81
- 'com.genymobile.scrcpy.Server',
82
- version,
83
- ...options.formatServerArguments(),
84
- ], {
85
- // Scrcpy server doesn't use stderr,
86
- // so disable Shell Protocol to simplify processing
87
- protocols: [AdbSubprocessNoneProtocol],
88
- });
89
- const stdout = process.stdout
90
- .pipeThrough(new DecodeUtf8Stream())
91
- .pipeThrough(new SplitStringStream('\n'));
92
- // Read stdout, otherwise `process.exit` won't resolve.
93
- const output = [];
94
- const abortController = new AbortController();
95
- const pipe = stdout
96
- .pipeTo(new WritableStream({
97
- write(chunk) {
98
- output.push(chunk);
99
- }
100
- }), {
101
- signal: abortController.signal,
102
- preventCancel: true,
103
- })
104
- .catch(() => { });
105
- const result = await Promise.race([
106
- process.exit,
107
- connection.getStreams(),
108
- ]);
109
- if (typeof result === 'number') {
110
- const error = new Error('scrcpy server exited prematurely');
111
- error.output = output;
112
- throw error;
113
- }
114
- abortController.abort();
115
- await pipe;
116
- const [videoStream, controlStream] = result;
117
- return new AdbScrcpyClient(options, process, new ConcatStream(new ArrayToStream(output), stdout), videoStream, controlStream);
118
- }
119
- catch (e) {
120
- await process?.kill();
121
- throw e;
122
- }
123
- finally {
124
- connection.dispose();
125
- }
126
- }
127
- /**
128
- * This method will modify the given `options`,
129
- * so don't reuse it elsewhere.
130
- */
131
- static async getEncoders(adb, path, version, options) {
132
- // Provide an invalid encoder name
133
- // So the server will return all available encoders
134
- options.value.encoderName = '_';
135
- // Disable control for faster connection in 1.22+
136
- options.value.control = false;
137
- options.value.sendDeviceMeta = false;
138
- options.value.sendDummyByte = false;
139
- // Scrcpy server will open connections, before initializing encoder
140
- // Thus although an invalid encoder name is given, the start process will success
141
- const client = await AdbScrcpyClient.start(adb, path, version, options);
142
- const encoderNameRegex = options.getOutputEncoderNameRegex();
143
- const encoders = [];
144
- await client.stdout.pipeTo(new WritableStream({
145
- write(line) {
146
- const match = line.match(encoderNameRegex);
147
- if (match) {
148
- encoders.push(match[1]);
149
- }
150
- },
151
- }));
152
- return encoders;
153
- }
154
- /**
155
- * This method will modify the given `options`,
156
- * so don't reuse it elsewhere.
157
- */
158
- static async getDisplays(adb, path, version, options) {
159
- // Similar to `getEncoders`, pass an invalid option and parse the output
160
- options.value.displayId = -1;
161
- options.value.control = false;
162
- options.value.sendDeviceMeta = false;
163
- options.value.sendDummyByte = false;
164
- try {
165
- // Server will exit before opening connections when an invalid display id was given.
166
- await AdbScrcpyClient.start(adb, path, version, options);
167
- }
168
- catch (e) {
169
- if (e instanceof Error) {
170
- const output = e.output;
171
- const displayIdRegex = /\s+scrcpy --display (\d+)/;
172
- const displays = [];
173
- for (const line of output) {
174
- const match = line.match(displayIdRegex);
175
- if (match) {
176
- displays.push(Number.parseInt(match[1], 10));
177
- }
178
- }
179
- return displays;
180
- }
181
- }
182
- throw new Error('failed to get displays');
183
- }
184
- process;
185
- _stdout;
186
- get stdout() { return this._stdout; }
187
- get exit() { return this.process.exit; }
188
- _screenWidth;
189
- get screenWidth() { return this._screenWidth; }
190
- _screenHeight;
191
- get screenHeight() { return this._screenHeight; }
192
- _videoStream;
193
- get videoStream() { return this._videoStream; }
194
- _controlMessageSerializer;
195
- get controlMessageSerializer() { return this._controlMessageSerializer; }
196
- _deviceMessageStream;
197
- get deviceMessageStream() { return this._deviceMessageStream; }
198
- constructor(options, process, stdout, videoStream, controlStream) {
199
- this.process = process;
200
- this._stdout = stdout;
201
- this._videoStream = videoStream
202
- .pipeThrough(options.createVideoStreamTransformer())
203
- .pipeThrough(new InspectStream(packet => {
204
- if (packet.type === 'configuration') {
205
- this._screenWidth = packet.data.croppedWidth;
206
- this._screenHeight = packet.data.croppedHeight;
207
- }
208
- }));
209
- if (controlStream) {
210
- this._controlMessageSerializer = new ScrcpyControlMessageSerializer(controlStream.writable, options);
211
- this._deviceMessageStream = controlStream.readable.pipeThrough(new ScrcpyDeviceMessageDeserializeStream());
212
- }
213
- }
214
- async close() {
215
- await this.process.kill();
216
- }
217
- }
1
+ import { AdbReverseNotSupportedError, AdbSubprocessNoneProtocol, } from "@yume-chan/adb";
2
+ import { AbortController, DecodeUtf8Stream, InspectStream, PushReadableStream, SplitStringStream, WritableStream, } from "@yume-chan/stream-extra";
3
+ import { ScrcpyControlMessageSerializer } from "../control/index.js";
4
+ import { ScrcpyDeviceMessageDeserializeStream } from "../device-message/index.js";
5
+ import { DEFAULT_SERVER_PATH } from "../options/index.js";
6
+ function arrayToStream(array) {
7
+ return new PushReadableStream(async (controller) => {
8
+ for (const item of array) {
9
+ await controller.enqueue(item);
10
+ }
11
+ });
12
+ }
13
+ function concatStreams(...streams) {
14
+ return new PushReadableStream(async (controller) => {
15
+ for (const stream of streams) {
16
+ await stream.pipeTo(new WritableStream({
17
+ async write(chunk) {
18
+ await controller.enqueue(chunk);
19
+ },
20
+ }));
21
+ }
22
+ });
23
+ }
24
+ export class ScrcpyExitedError extends Error {
25
+ output;
26
+ constructor(output) {
27
+ super("scrcpy server exited prematurely");
28
+ this.output = output;
29
+ }
30
+ }
31
+ export class AdbScrcpyClient {
32
+ static async pushServer(adb, file, filename = DEFAULT_SERVER_PATH) {
33
+ const sync = await adb.sync();
34
+ try {
35
+ await sync.write({
36
+ filename,
37
+ file,
38
+ });
39
+ }
40
+ finally {
41
+ await sync.dispose();
42
+ }
43
+ }
44
+ static async start(adb, path, version, options) {
45
+ let connection;
46
+ let process;
47
+ try {
48
+ try {
49
+ connection = options.createConnection(adb);
50
+ await connection.initialize();
51
+ }
52
+ catch (e) {
53
+ if (e instanceof AdbReverseNotSupportedError) {
54
+ // When reverse tunnel is not supported, try forward tunnel.
55
+ options.value.tunnelForward = true;
56
+ connection = options.createConnection(adb);
57
+ await connection.initialize();
58
+ }
59
+ else {
60
+ connection = undefined;
61
+ throw e;
62
+ }
63
+ }
64
+ process = await adb.subprocess.spawn([
65
+ // cspell: disable-next-line
66
+ `CLASSPATH=${path}`,
67
+ "app_process",
68
+ /* unused */ "/",
69
+ "com.genymobile.scrcpy.Server",
70
+ version,
71
+ ...options.formatServerArguments(),
72
+ ], {
73
+ // Scrcpy server doesn't use stderr,
74
+ // so disable Shell Protocol to simplify processing
75
+ protocols: [AdbSubprocessNoneProtocol],
76
+ });
77
+ const stdout = process.stdout
78
+ .pipeThrough(new DecodeUtf8Stream())
79
+ .pipeThrough(new SplitStringStream("\n"));
80
+ // Read stdout, otherwise `process.exit` won't resolve.
81
+ const output = [];
82
+ const abortController = new AbortController();
83
+ const pipe = stdout
84
+ .pipeTo(new WritableStream({
85
+ write(chunk) {
86
+ output.push(chunk);
87
+ },
88
+ }), {
89
+ signal: abortController.signal,
90
+ preventCancel: true,
91
+ })
92
+ .catch((e) => {
93
+ void e;
94
+ });
95
+ const result = await Promise.race([
96
+ process.exit,
97
+ connection.getStreams(),
98
+ ]);
99
+ if (typeof result === "number") {
100
+ throw new ScrcpyExitedError(output);
101
+ }
102
+ abortController.abort();
103
+ await pipe;
104
+ const [videoStream, controlStream] = result;
105
+ return new AdbScrcpyClient(options, process, concatStreams(arrayToStream(output), stdout), videoStream, controlStream);
106
+ }
107
+ catch (e) {
108
+ await process?.kill();
109
+ throw e;
110
+ }
111
+ finally {
112
+ connection?.dispose();
113
+ }
114
+ }
115
+ /**
116
+ * This method will modify the given `options`,
117
+ * so don't reuse it elsewhere.
118
+ */
119
+ static async getEncoders(adb, path, version, options) {
120
+ Object.assign(options.value, {
121
+ // Provide an invalid encoder name
122
+ // So the server will return all available encoders
123
+ encoderName: "_",
124
+ // Disable control for faster connection in 1.22+
125
+ control: false,
126
+ sendDeviceMeta: false,
127
+ sendDummyByte: false,
128
+ });
129
+ // Scrcpy server will open connections, before initializing encoder
130
+ // Thus although an invalid encoder name is given, the start process will success
131
+ const client = await AdbScrcpyClient.start(adb, path, version, options);
132
+ const encoderNameRegex = options.getOutputEncoderNameRegex();
133
+ const encoders = [];
134
+ await client.stdout.pipeTo(new WritableStream({
135
+ write(line) {
136
+ const match = line.match(encoderNameRegex);
137
+ if (match) {
138
+ encoders.push(match[1]);
139
+ }
140
+ },
141
+ }));
142
+ return encoders;
143
+ }
144
+ /**
145
+ * This method will modify the given `options`,
146
+ * so don't reuse it elsewhere.
147
+ */
148
+ static async getDisplays(adb, path, version, options) {
149
+ Object.assign(options.value, {
150
+ // Similar to `getEncoders`, pass an invalid option and parse the output
151
+ displayId: -1,
152
+ // Disable control for faster connection in 1.22+
153
+ control: false,
154
+ sendDeviceMeta: false,
155
+ sendDummyByte: false,
156
+ });
157
+ try {
158
+ // Server will exit before opening connections when an invalid display id was given.
159
+ await AdbScrcpyClient.start(adb, path, version, options);
160
+ }
161
+ catch (e) {
162
+ if (e instanceof ScrcpyExitedError) {
163
+ const displayIdRegex = /\s+scrcpy --display (\d+)/;
164
+ const displays = [];
165
+ for (const line of e.output) {
166
+ const match = line.match(displayIdRegex);
167
+ if (match) {
168
+ displays.push(Number.parseInt(match[1], 10));
169
+ }
170
+ }
171
+ return displays;
172
+ }
173
+ }
174
+ throw new Error("failed to get displays");
175
+ }
176
+ process;
177
+ _stdout;
178
+ get stdout() {
179
+ return this._stdout;
180
+ }
181
+ get exit() {
182
+ return this.process.exit;
183
+ }
184
+ _screenWidth;
185
+ get screenWidth() {
186
+ return this._screenWidth;
187
+ }
188
+ _screenHeight;
189
+ get screenHeight() {
190
+ return this._screenHeight;
191
+ }
192
+ _videoStream;
193
+ get videoStream() {
194
+ return this._videoStream;
195
+ }
196
+ _controlMessageSerializer;
197
+ get controlMessageSerializer() {
198
+ return this._controlMessageSerializer;
199
+ }
200
+ _deviceMessageStream;
201
+ get deviceMessageStream() {
202
+ return this._deviceMessageStream;
203
+ }
204
+ constructor(options, process, stdout, videoStream, controlStream) {
205
+ this.process = process;
206
+ this._stdout = stdout;
207
+ this._videoStream = videoStream
208
+ .pipeThrough(options.createVideoStreamTransformer())
209
+ .pipeThrough(new InspectStream((packet) => {
210
+ if (packet.type === "configuration") {
211
+ this._screenWidth = packet.data.croppedWidth;
212
+ this._screenHeight = packet.data.croppedHeight;
213
+ }
214
+ }));
215
+ if (controlStream) {
216
+ this._controlMessageSerializer = new ScrcpyControlMessageSerializer(controlStream.writable, options);
217
+ this._deviceMessageStream = controlStream.readable.pipeThrough(new ScrcpyDeviceMessageDeserializeStream());
218
+ }
219
+ }
220
+ async close() {
221
+ await this.process.kill();
222
+ }
223
+ }
218
224
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"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"}