@yume-chan/scrcpy 0.0.16 → 0.0.18

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 (292) hide show
  1. package/CHANGELOG.json +36 -3
  2. package/CHANGELOG.md +21 -4
  3. package/LICENSE +1 -1
  4. package/README.md +291 -37
  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 +41 -0
  9. package/esm/adb/client.d.ts.map +1 -0
  10. package/esm/adb/client.js +243 -0
  11. package/esm/adb/client.js.map +1 -0
  12. package/esm/adb/connection.d.ts +47 -0
  13. package/esm/adb/connection.d.ts.map +1 -0
  14. package/esm/{connection.js → adb/connection.js} +35 -31
  15. package/esm/adb/connection.js.map +1 -0
  16. package/esm/adb/index.d.ts +4 -0
  17. package/esm/adb/index.d.ts.map +1 -0
  18. package/esm/adb/index.js +4 -0
  19. package/esm/adb/index.js.map +1 -0
  20. package/esm/adb/options/1_16.d.ts +8 -0
  21. package/esm/adb/options/1_16.d.ts.map +1 -0
  22. package/esm/adb/options/1_16.js +20 -0
  23. package/esm/adb/options/1_16.js.map +1 -0
  24. package/esm/adb/options/1_22.d.ts +8 -0
  25. package/esm/adb/options/1_22.d.ts.map +1 -0
  26. package/esm/adb/options/1_22.js +17 -0
  27. package/esm/adb/options/1_22.js.map +1 -0
  28. package/esm/adb/options/index.d.ts +4 -0
  29. package/esm/adb/options/index.d.ts.map +1 -0
  30. package/esm/adb/options/index.js +4 -0
  31. package/esm/adb/options/index.js.map +1 -0
  32. package/esm/adb/options/types.d.ts +24 -0
  33. package/esm/adb/options/types.d.ts.map +1 -0
  34. package/esm/adb/options/types.js +37 -0
  35. package/esm/adb/options/types.js.map +1 -0
  36. package/esm/codec.js +2 -2
  37. package/esm/codec.js.map +1 -1
  38. package/esm/control/back-or-screen-on.d.ts +3 -0
  39. package/esm/control/back-or-screen-on.d.ts.map +1 -0
  40. package/esm/control/back-or-screen-on.js +2 -0
  41. package/esm/control/back-or-screen-on.js.map +1 -0
  42. package/esm/control/hover-helper.d.ts +18 -0
  43. package/esm/control/hover-helper.d.ts.map +1 -0
  44. package/esm/control/hover-helper.js +44 -0
  45. package/esm/control/hover-helper.js.map +1 -0
  46. package/esm/control/index.d.ts +12 -0
  47. package/esm/control/index.d.ts.map +1 -0
  48. package/esm/control/index.js +12 -0
  49. package/esm/control/index.js.map +1 -0
  50. package/esm/control/inject-keycode.d.ts +61 -0
  51. package/esm/control/inject-keycode.d.ts.map +1 -0
  52. package/esm/control/inject-keycode.js +62 -0
  53. package/esm/control/inject-keycode.js.map +1 -0
  54. package/esm/control/inject-scroll.d.ts +3 -0
  55. package/esm/control/inject-scroll.d.ts.map +1 -0
  56. package/esm/control/inject-scroll.js +2 -0
  57. package/esm/control/inject-scroll.js.map +1 -0
  58. package/esm/control/inject-text.d.ts +9 -0
  59. package/esm/control/inject-text.d.ts.map +1 -0
  60. package/esm/control/inject-text.js +7 -0
  61. package/esm/control/inject-text.js.map +1 -0
  62. package/esm/control/inject-touch.d.ts +38 -0
  63. package/esm/control/inject-touch.d.ts.map +1 -0
  64. package/esm/control/inject-touch.js +63 -0
  65. package/esm/control/inject-touch.js.map +1 -0
  66. package/esm/control/rotate-device.d.ts +7 -0
  67. package/esm/control/rotate-device.d.ts.map +1 -0
  68. package/esm/control/rotate-device.js +5 -0
  69. package/esm/control/rotate-device.js.map +1 -0
  70. package/esm/control/serializer.d.ts +34 -0
  71. package/esm/control/serializer.d.ts.map +1 -0
  72. package/esm/control/serializer.js +79 -0
  73. package/esm/control/serializer.js.map +1 -0
  74. package/esm/control/set-clipboard.d.ts +3 -0
  75. package/esm/control/set-clipboard.d.ts.map +1 -0
  76. package/esm/control/set-clipboard.js +2 -0
  77. package/esm/control/set-clipboard.js.map +1 -0
  78. package/esm/control/set-screen-power-mode.d.ts +12 -0
  79. package/esm/control/set-screen-power-mode.d.ts.map +1 -0
  80. package/esm/control/set-screen-power-mode.js +12 -0
  81. package/esm/control/set-screen-power-mode.js.map +1 -0
  82. package/esm/control/type.d.ts +15 -0
  83. package/esm/control/type.d.ts.map +1 -0
  84. package/esm/control/type.js +19 -0
  85. package/esm/control/type.js.map +1 -0
  86. package/esm/device-message/ack-clipboard.d.ts +9 -0
  87. package/esm/device-message/ack-clipboard.d.ts.map +1 -0
  88. package/esm/device-message/ack-clipboard.js +6 -0
  89. package/esm/device-message/ack-clipboard.js.map +1 -0
  90. package/esm/device-message/clipboard.d.ts +10 -0
  91. package/esm/device-message/clipboard.d.ts.map +1 -0
  92. package/esm/device-message/clipboard.js +7 -0
  93. package/esm/device-message/clipboard.js.map +1 -0
  94. package/esm/device-message/index.d.ts +5 -0
  95. package/esm/device-message/index.d.ts.map +1 -0
  96. package/esm/device-message/index.js +5 -0
  97. package/esm/device-message/index.js.map +1 -0
  98. package/esm/device-message/stream.d.ts +8 -0
  99. package/esm/device-message/stream.d.ts.map +1 -0
  100. package/esm/device-message/stream.js +20 -0
  101. package/esm/device-message/stream.js.map +1 -0
  102. package/esm/device-message/type.d.ts +5 -0
  103. package/esm/device-message/type.d.ts.map +1 -0
  104. package/esm/device-message/type.js +7 -0
  105. package/esm/device-message/type.js.map +1 -0
  106. package/esm/index.d.ts +3 -6
  107. package/esm/index.d.ts.map +1 -1
  108. package/esm/index.js +3 -6
  109. package/esm/index.js.map +1 -1
  110. package/esm/options/1_16/codec-options.d.ts +20 -0
  111. package/esm/options/1_16/codec-options.d.ts.map +1 -0
  112. package/esm/options/1_16/codec-options.js +26 -0
  113. package/esm/options/1_16/codec-options.js.map +1 -0
  114. package/esm/options/1_16/h264-configuration.d.ts +49 -0
  115. package/esm/options/1_16/h264-configuration.d.ts.map +1 -0
  116. package/esm/options/1_16/h264-configuration.js +414 -0
  117. package/esm/options/1_16/h264-configuration.js.map +1 -0
  118. package/esm/options/1_16/index.d.ts +4 -110
  119. package/esm/options/1_16/index.d.ts.map +1 -1
  120. package/esm/options/1_16/index.js +4 -226
  121. package/esm/options/1_16/index.js.map +1 -1
  122. package/esm/options/1_16/options.d.ts +94 -0
  123. package/esm/options/1_16/options.d.ts.map +1 -0
  124. package/esm/options/1_16/options.js +190 -0
  125. package/esm/options/1_16/options.js.map +1 -0
  126. package/esm/options/1_16/scroll.d.ts +27 -0
  127. package/esm/options/1_16/scroll.d.ts.map +1 -0
  128. package/esm/options/1_16/scroll.js +56 -0
  129. package/esm/options/1_16/scroll.js.map +1 -0
  130. package/esm/options/1_16/sps.d.ts +1 -1
  131. package/esm/options/1_16/sps.d.ts.map +1 -1
  132. package/esm/options/1_16/sps.js +25 -17
  133. package/esm/options/1_16/sps.js.map +1 -1
  134. package/esm/options/1_18.d.ts +8 -8
  135. package/esm/options/1_18.d.ts.map +1 -1
  136. package/esm/options/1_18.js +7 -7
  137. package/esm/options/1_18.js.map +1 -1
  138. package/esm/options/1_21.d.ts +13 -2
  139. package/esm/options/1_21.d.ts.map +1 -1
  140. package/esm/options/1_21.js +14 -3
  141. package/esm/options/1_21.js.map +1 -1
  142. package/esm/options/1_22/index.d.ts +3 -0
  143. package/esm/options/1_22/index.d.ts.map +1 -0
  144. package/esm/options/1_22/index.js +3 -0
  145. package/esm/options/1_22/index.js.map +1 -0
  146. package/esm/options/1_22/options.d.ts +29 -0
  147. package/esm/options/1_22/options.d.ts.map +1 -0
  148. package/esm/options/1_22/options.js +26 -0
  149. package/esm/options/1_22/options.js.map +1 -0
  150. package/esm/options/1_22/scroll.d.ts +17 -0
  151. package/esm/options/1_22/scroll.d.ts.map +1 -0
  152. package/esm/options/1_22/scroll.js +15 -0
  153. package/esm/options/1_22/scroll.js.map +1 -0
  154. package/esm/options/1_23.d.ts +5 -5
  155. package/esm/options/1_23.d.ts.map +1 -1
  156. package/esm/options/1_23.js +7 -6
  157. package/esm/options/1_23.js.map +1 -1
  158. package/esm/options/1_24.d.ts +1 -1
  159. package/esm/options/1_24.d.ts.map +1 -1
  160. package/esm/options/1_24.js.map +1 -1
  161. package/esm/options/1_25/index.d.ts +3 -0
  162. package/esm/options/1_25/index.d.ts.map +1 -0
  163. package/esm/options/1_25/index.js +3 -0
  164. package/esm/options/1_25/index.js.map +1 -0
  165. package/esm/options/1_25/options.d.ts +6 -0
  166. package/esm/options/1_25/options.d.ts.map +1 -0
  167. package/esm/options/1_25/options.js +8 -0
  168. package/esm/options/1_25/options.js.map +1 -0
  169. package/esm/options/1_25/scroll.d.ts +19 -0
  170. package/esm/options/1_25/scroll.d.ts.map +1 -0
  171. package/esm/options/1_25/scroll.js +33 -0
  172. package/esm/options/1_25/scroll.js.map +1 -0
  173. package/esm/options/index.d.ts +5 -4
  174. package/esm/options/index.d.ts.map +1 -1
  175. package/esm/options/index.js +5 -4
  176. package/esm/options/index.js.map +1 -1
  177. package/esm/options/types.d.ts +47 -0
  178. package/esm/options/types.d.ts.map +1 -0
  179. package/esm/options/types.js +18 -0
  180. package/esm/options/types.js.map +1 -0
  181. package/package.json +32 -25
  182. package/scripts/fetch-server.cjs +19 -9
  183. package/src/adb/client.ts +345 -0
  184. package/src/adb/connection.ts +192 -0
  185. package/src/adb/index.ts +3 -0
  186. package/src/adb/options/1_16.ts +30 -0
  187. package/src/adb/options/1_22.ts +26 -0
  188. package/src/adb/options/index.ts +3 -0
  189. package/src/adb/options/types.ts +75 -0
  190. package/src/control/back-or-screen-on.ts +4 -0
  191. package/src/control/hover-helper.ts +56 -0
  192. package/src/control/index.ts +11 -0
  193. package/src/control/inject-keycode.ts +72 -0
  194. package/src/control/inject-scroll.ts +4 -0
  195. package/src/control/inject-text.ts +12 -0
  196. package/src/control/inject-touch.ts +78 -0
  197. package/src/control/rotate-device.ts +10 -0
  198. package/src/control/serializer.ts +151 -0
  199. package/src/control/set-clipboard.ts +4 -0
  200. package/src/control/set-screen-power-mode.ts +17 -0
  201. package/src/control/type.ts +17 -0
  202. package/src/device-message/ack-clipboard.ts +10 -0
  203. package/src/device-message/clipboard.ts +11 -0
  204. package/src/device-message/index.ts +4 -0
  205. package/src/device-message/stream.ts +29 -0
  206. package/src/device-message/type.ts +5 -0
  207. package/src/index.ts +3 -6
  208. package/src/options/1_16/codec-options.ts +55 -0
  209. package/src/options/1_16/h264-configuration.ts +485 -0
  210. package/src/options/1_16/index.ts +4 -345
  211. package/src/options/1_16/options.ts +339 -0
  212. package/src/options/1_16/scroll.ts +76 -0
  213. package/src/options/1_18.ts +24 -12
  214. package/src/options/1_21.ts +34 -6
  215. package/src/options/1_22/index.ts +2 -0
  216. package/src/options/1_22/options.ts +58 -0
  217. package/src/options/1_22/scroll.ts +26 -0
  218. package/src/options/1_23.ts +33 -19
  219. package/src/options/1_24.ts +3 -2
  220. package/src/options/1_25/index.ts +2 -0
  221. package/src/options/1_25/options.ts +12 -0
  222. package/src/options/1_25/scroll.ts +52 -0
  223. package/src/options/index.ts +5 -4
  224. package/src/options/types.ts +102 -0
  225. package/tsconfig.build.json +3 -0
  226. package/tsconfig.build.tsbuildinfo +1 -0
  227. package/esm/client.d.ts +0 -48
  228. package/esm/client.d.ts.map +0 -1
  229. package/esm/client.js +0 -341
  230. package/esm/client.js.map +0 -1
  231. package/esm/connection.d.ts +0 -37
  232. package/esm/connection.d.ts.map +0 -1
  233. package/esm/connection.js.map +0 -1
  234. package/esm/decoder/index.d.ts +0 -4
  235. package/esm/decoder/index.d.ts.map +0 -1
  236. package/esm/decoder/index.js +0 -4
  237. package/esm/decoder/index.js.map +0 -1
  238. package/esm/decoder/tinyh264/index.d.ts +0 -20
  239. package/esm/decoder/tinyh264/index.d.ts.map +0 -1
  240. package/esm/decoder/tinyh264/index.js +0 -86
  241. package/esm/decoder/tinyh264/index.js.map +0 -1
  242. package/esm/decoder/tinyh264/worker.d.ts +0 -2
  243. package/esm/decoder/tinyh264/worker.d.ts.map +0 -1
  244. package/esm/decoder/tinyh264/worker.js +0 -3
  245. package/esm/decoder/tinyh264/worker.js.map +0 -1
  246. package/esm/decoder/tinyh264/wrapper.d.ts +0 -21
  247. package/esm/decoder/tinyh264/wrapper.d.ts.map +0 -1
  248. package/esm/decoder/tinyh264/wrapper.js +0 -68
  249. package/esm/decoder/tinyh264/wrapper.js.map +0 -1
  250. package/esm/decoder/types.d.ts +0 -28
  251. package/esm/decoder/types.d.ts.map +0 -1
  252. package/esm/decoder/types.js +0 -2
  253. package/esm/decoder/types.js.map +0 -1
  254. package/esm/decoder/web-codecs/index.d.ts +0 -22
  255. package/esm/decoder/web-codecs/index.d.ts.map +0 -1
  256. package/esm/decoder/web-codecs/index.js +0 -81
  257. package/esm/decoder/web-codecs/index.js.map +0 -1
  258. package/esm/message.d.ts +0 -98
  259. package/esm/message.d.ts.map +0 -1
  260. package/esm/message.js +0 -98
  261. package/esm/message.js.map +0 -1
  262. package/esm/options/1_22.d.ts +0 -43
  263. package/esm/options/1_22.d.ts.map +0 -1
  264. package/esm/options/1_22.js +0 -43
  265. package/esm/options/1_22.js.map +0 -1
  266. package/esm/options/common.d.ts +0 -34
  267. package/esm/options/common.d.ts.map +0 -1
  268. package/esm/options/common.js +0 -16
  269. package/esm/options/common.js.map +0 -1
  270. package/esm/push-server.d.ts +0 -6
  271. package/esm/push-server.d.ts.map +0 -1
  272. package/esm/push-server.js +0 -16
  273. package/esm/push-server.js.map +0 -1
  274. package/esm/utils.d.ts +0 -2
  275. package/esm/utils.d.ts.map +0 -1
  276. package/esm/utils.js +0 -6
  277. package/esm/utils.js.map +0 -1
  278. package/src/client.ts +0 -435
  279. package/src/connection.ts +0 -148
  280. package/src/decoder/index.ts +0 -3
  281. package/src/decoder/tinyh264/index.ts +0 -112
  282. package/src/decoder/tinyh264/types.d.ts +0 -137
  283. package/src/decoder/tinyh264/worker.ts +0 -2
  284. package/src/decoder/tinyh264/wrapper.ts +0 -89
  285. package/src/decoder/types.ts +0 -35
  286. package/src/decoder/web-codecs/index.ts +0 -99
  287. package/src/message.ts +0 -113
  288. package/src/options/1_16/sps.ts +0 -300
  289. package/src/options/1_22.ts +0 -78
  290. package/src/options/common.ts +0 -66
  291. package/src/push-server.ts +0 -24
  292. package/src/utils.ts +0 -5
@@ -0,0 +1,243 @@
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 ScrcpyExitedError extends Error {
59
+ output;
60
+ constructor(output) {
61
+ super("scrcpy server exited prematurely");
62
+ this.output = output;
63
+ }
64
+ }
65
+ export class AdbScrcpyClient {
66
+ static pushServer(adb, path = DEFAULT_SERVER_PATH) {
67
+ let sync;
68
+ return new WrapWritableStream({
69
+ async start() {
70
+ sync = await adb.sync();
71
+ return sync.write(path);
72
+ },
73
+ async close() {
74
+ await sync.dispose();
75
+ },
76
+ });
77
+ }
78
+ static async start(adb, path, version, options) {
79
+ const connection = options.createConnection(adb);
80
+ let process;
81
+ try {
82
+ await connection.initialize();
83
+ process = await adb.subprocess.spawn([
84
+ // cspell: disable-next-line
85
+ `CLASSPATH=${path}`,
86
+ "app_process",
87
+ /* unused */ "/",
88
+ "com.genymobile.scrcpy.Server",
89
+ version,
90
+ ...options.formatServerArguments(),
91
+ ], {
92
+ // Scrcpy server doesn't use stderr,
93
+ // so disable Shell Protocol to simplify processing
94
+ protocols: [AdbSubprocessNoneProtocol],
95
+ });
96
+ const stdout = process.stdout
97
+ .pipeThrough(new DecodeUtf8Stream())
98
+ .pipeThrough(new SplitStringStream("\n"));
99
+ // Read stdout, otherwise `process.exit` won't resolve.
100
+ const output = [];
101
+ const abortController = new AbortController();
102
+ const pipe = stdout
103
+ .pipeTo(new WritableStream({
104
+ write(chunk) {
105
+ output.push(chunk);
106
+ },
107
+ }), {
108
+ signal: abortController.signal,
109
+ preventCancel: true,
110
+ })
111
+ .catch((e) => {
112
+ void e;
113
+ });
114
+ const result = await Promise.race([
115
+ process.exit,
116
+ connection.getStreams(),
117
+ ]);
118
+ if (typeof result === "number") {
119
+ throw new ScrcpyExitedError(output);
120
+ }
121
+ abortController.abort();
122
+ await pipe;
123
+ const [videoStream, controlStream] = result;
124
+ return new AdbScrcpyClient(options, process, new ConcatStream(new ArrayToStream(output), stdout), videoStream, controlStream);
125
+ }
126
+ catch (e) {
127
+ await process?.kill();
128
+ throw e;
129
+ }
130
+ finally {
131
+ connection.dispose();
132
+ }
133
+ }
134
+ /**
135
+ * This method will modify the given `options`,
136
+ * so don't reuse it elsewhere.
137
+ */
138
+ static async getEncoders(adb, path, version, options) {
139
+ Object.assign(options.value, {
140
+ // Provide an invalid encoder name
141
+ // So the server will return all available encoders
142
+ encoderName: "_",
143
+ // Disable control for faster connection in 1.22+
144
+ control: false,
145
+ sendDeviceMeta: false,
146
+ sendDummyByte: false,
147
+ });
148
+ // Scrcpy server will open connections, before initializing encoder
149
+ // Thus although an invalid encoder name is given, the start process will success
150
+ const client = await AdbScrcpyClient.start(adb, path, version, options);
151
+ const encoderNameRegex = options.getOutputEncoderNameRegex();
152
+ const encoders = [];
153
+ await client.stdout.pipeTo(new WritableStream({
154
+ write(line) {
155
+ const match = line.match(encoderNameRegex);
156
+ if (match) {
157
+ encoders.push(match[1]);
158
+ }
159
+ },
160
+ }));
161
+ return encoders;
162
+ }
163
+ /**
164
+ * This method will modify the given `options`,
165
+ * so don't reuse it elsewhere.
166
+ */
167
+ static async getDisplays(adb, path, version, options) {
168
+ Object.assign(options.value, {
169
+ // Similar to `getEncoders`, pass an invalid option and parse the output
170
+ displayId: -1,
171
+ // Disable control for faster connection in 1.22+
172
+ control: false,
173
+ sendDeviceMeta: false,
174
+ sendDummyByte: false,
175
+ });
176
+ try {
177
+ // Server will exit before opening connections when an invalid display id was given.
178
+ await AdbScrcpyClient.start(adb, path, version, options);
179
+ }
180
+ catch (e) {
181
+ if (e instanceof ScrcpyExitedError) {
182
+ const displayIdRegex = /\s+scrcpy --display (\d+)/;
183
+ const displays = [];
184
+ for (const line of e.output) {
185
+ const match = line.match(displayIdRegex);
186
+ if (match) {
187
+ displays.push(Number.parseInt(match[1], 10));
188
+ }
189
+ }
190
+ return displays;
191
+ }
192
+ }
193
+ throw new Error("failed to get displays");
194
+ }
195
+ process;
196
+ _stdout;
197
+ get stdout() {
198
+ return this._stdout;
199
+ }
200
+ get exit() {
201
+ return this.process.exit;
202
+ }
203
+ _screenWidth;
204
+ get screenWidth() {
205
+ return this._screenWidth;
206
+ }
207
+ _screenHeight;
208
+ get screenHeight() {
209
+ return this._screenHeight;
210
+ }
211
+ _videoStream;
212
+ get videoStream() {
213
+ return this._videoStream;
214
+ }
215
+ _controlMessageSerializer;
216
+ get controlMessageSerializer() {
217
+ return this._controlMessageSerializer;
218
+ }
219
+ _deviceMessageStream;
220
+ get deviceMessageStream() {
221
+ return this._deviceMessageStream;
222
+ }
223
+ constructor(options, process, stdout, videoStream, controlStream) {
224
+ this.process = process;
225
+ this._stdout = stdout;
226
+ this._videoStream = videoStream
227
+ .pipeThrough(options.createVideoStreamTransformer())
228
+ .pipeThrough(new InspectStream((packet) => {
229
+ if (packet.type === "configuration") {
230
+ this._screenWidth = packet.data.croppedWidth;
231
+ this._screenHeight = packet.data.croppedHeight;
232
+ }
233
+ }));
234
+ if (controlStream) {
235
+ this._controlMessageSerializer = new ScrcpyControlMessageSerializer(controlStream.writable, options);
236
+ this._deviceMessageStream = controlStream.readable.pipeThrough(new ScrcpyDeviceMessageDeserializeStream());
237
+ }
238
+ }
239
+ async close() {
240
+ await this.process.kill();
241
+ }
242
+ }
243
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/adb/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,yBAAyB,GAI5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GAIjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EACH,oCAAoC,GAEvC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACH,mBAAmB,GAEtB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,aAAiB,SAAQ,cAAiB;IACpC,KAAK,CAAO;IACZ,KAAK,GAAG,CAAC,CAAC;IAElB,YAAY,KAAU;QAClB,KAAK,CAAC;YACF,KAAK,EAAE,KAAK,IAAI,EAAE;gBACd,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACvB,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE;gBACjB,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAChC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,CAAC;oBAC5C,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;iBACnB;qBAAM;oBACH,UAAU,CAAC,KAAK,EAAE,CAAC;iBACtB;YACL,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ;AAED,MAAM,YAAgB,SAAQ,cAAiB;IACnC,OAAO,CAAuB;IAC9B,KAAK,GAAG,CAAC,CAAC;IACV,MAAM,CAAkC;IAEhD,YAAY,GAAG,OAA4B;QACvC,KAAK,CAAC;YACF,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACxB,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBAExB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;gBACvB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;oBACd,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACjC,OAAO;iBACV;gBACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7B,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAEO,OAAO,CAAC,UAA8C;QAC1D,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,SAAS,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;SACnB;aAAM;YACH,UAAU,CAAC,KAAK,EAAE,CAAC;SACtB;IACL,CAAC;CACJ;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,MAAM,CAAW;IAExB,YAAmB,MAAgB;QAC/B,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CACJ;AAED,MAAM,OAAO,eAAe;IACjB,MAAM,CAAC,UAAU,CAAC,GAAQ,EAAE,IAAI,GAAG,mBAAmB;QACzD,IAAI,IAAc,CAAC;QACnB,OAAO,IAAI,kBAAkB,CAAa;YACtC,KAAK,CAAC,KAAK;gBACP,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK,CAAC,KAAK;gBACP,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,KAAK,CACrB,GAAQ,EACR,IAAY,EACZ,OAAe,EACf,OAAiC;QAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,OAA0C,CAAC;QAE/C,IAAI;YACA,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;YAE9B,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,KAAK,CAChC;gBACI,4BAA4B;gBAC5B,aAAa,IAAI,EAAE;gBACnB,aAAa;gBACb,YAAY,CAAC,GAAG;gBAChB,8BAA8B;gBAC9B,OAAO;gBACP,GAAG,OAAO,CAAC,qBAAqB,EAAE;aACrC,EACD;gBACI,oCAAoC;gBACpC,mDAAmD;gBACnD,SAAS,EAAE,CAAC,yBAAyB,CAAC;aACzC,CACJ,CAAC;YAEF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;iBACxB,WAAW,CAAC,IAAI,gBAAgB,EAAE,CAAC;iBACnC,WAAW,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9C,uDAAuD;YACvD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM;iBACd,MAAM,CACH,IAAI,cAAc,CAAC;gBACf,KAAK,CAAC,KAAK;oBACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;aACJ,CAAC,EACF;gBACI,MAAM,EAAE,eAAe,CAAC,MAAM;gBAC9B,aAAa,EAAE,IAAI;aACtB,CACJ;iBACA,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,KAAK,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;YAEP,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAC9B,OAAO,CAAC,IAAI;gBACZ,UAAU,CAAC,UAAU,EAAE;aAC1B,CAAC,CAAC;YAEH,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC5B,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;aACvC;YAED,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC;YAEX,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC;YAC5C,OAAO,IAAI,eAAe,CACtB,OAAO,EACP,OAAO,EACP,IAAI,YAAY,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EACnD,WAAW,EACX,aAAa,CAChB,CAAC;SACL;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,OAAO,EAAE,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,CAAC;SACX;gBAAS;YACN,UAAU,CAAC,OAAO,EAAE,CAAC;SACxB;IACL,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,WAAW,CAC3B,GAAQ,EACR,IAAY,EACZ,OAAe,EACf,OAAiC;QAEjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;YACzB,kCAAkC;YAClC,mDAAmD;YACnD,WAAW,EAAE,GAAG;YAChB,iDAAiD;YACjD,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACvB,CAAC,CAAC;QAEH,mEAAmE;QACnE,iFAAiF;QACjF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAExE,MAAM,gBAAgB,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACtB,IAAI,cAAc,CAAC;YACf,KAAK,CAAC,IAAI;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC3C,IAAI,KAAK,EAAE;oBACP,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;iBAC5B;YACL,CAAC;SACJ,CAAC,CACL,CAAC;QAEF,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,KAAK,CAAC,WAAW,CAC3B,GAAQ,EACR,IAAY,EACZ,OAAe,EACf,OAAiC;QAEjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;YACzB,wEAAwE;YACxE,SAAS,EAAE,CAAC,CAAC;YACb,iDAAiD;YACjD,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACvB,CAAC,CAAC;QAEH,IAAI;YACA,oFAAoF;YACpF,MAAM,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC5D;QAAC,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,iBAAiB,EAAE;gBAChC,MAAM,cAAc,GAAG,2BAA2B,CAAC;gBACnD,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;oBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBACzC,IAAI,KAAK,EAAE;wBACP,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC;qBACjD;iBACJ;gBACD,OAAO,QAAQ,CAAC;aACnB;SACJ;QAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAEO,OAAO,CAAwB;IAE/B,OAAO,CAAyB;IACxC,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEO,YAAY,CAAqB;IACzC,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEO,aAAa,CAAqB;IAC1C,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAEO,YAAY,CAA0C;IAC9D,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAEO,yBAAyB,CAEjB;IAChB,IAAW,wBAAwB;QAC/B,OAAO,IAAI,CAAC,yBAAyB,CAAC;IAC1C,CAAC;IAEO,oBAAoB,CAEZ;IAChB,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,YACI,OAAiC,EACjC,OAA8B,EAC9B,MAA8B,EAC9B,WAAuC,EACvC,aAAuE;QAEvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,YAAY,GAAG,WAAW;aAC1B,WAAW,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;aACnD,WAAW,CACR,IAAI,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;gBACjC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC7C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;aAClD;QACL,CAAC,CAAC,CACL,CAAC;QAEN,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,yBAAyB,GAAG,IAAI,8BAA8B,CAC/D,aAAa,CAAC,QAAQ,EACtB,OAAO,CACV,CAAC;YACF,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,QAAQ,CAAC,WAAW,CAC1D,IAAI,oCAAoC,EAAE,CAC7C,CAAC;SACL;IACL,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;CACJ"}
@@ -0,0 +1,47 @@
1
+ import { type Adb } from "@yume-chan/adb";
2
+ import { type Disposable } from "@yume-chan/event";
3
+ import { type ReadableStream, type ReadableWritablePair } from "@yume-chan/stream-extra";
4
+ import { type ValueOrPromise } from "@yume-chan/struct";
5
+ export interface AdbScrcpyConnectionOptions {
6
+ control: boolean;
7
+ /**
8
+ * Write a byte on start to detect connection issues
9
+ */
10
+ sendDummyByte: boolean;
11
+ /**
12
+ * Send device name and size
13
+ */
14
+ sendDeviceMeta: boolean;
15
+ }
16
+ export declare abstract class AdbScrcpyConnection implements Disposable {
17
+ protected adb: Adb;
18
+ protected options: AdbScrcpyConnectionOptions;
19
+ constructor(adb: Adb, options: AdbScrcpyConnectionOptions);
20
+ initialize(): ValueOrPromise<void>;
21
+ abstract getStreams(): ValueOrPromise<[
22
+ videoSteam: ReadableStream<Uint8Array>,
23
+ controlStream: ReadableWritablePair<Uint8Array, Uint8Array> | undefined
24
+ ]>;
25
+ dispose(): void;
26
+ }
27
+ export declare class AdbScrcpyForwardConnection extends AdbScrcpyConnection {
28
+ private connect;
29
+ private connectAndRetry;
30
+ private connectVideoStream;
31
+ getStreams(): Promise<[
32
+ videoSteam: ReadableStream<Uint8Array>,
33
+ controlStream: ReadableWritablePair<Uint8Array, Uint8Array> | undefined
34
+ ]>;
35
+ }
36
+ export declare class AdbScrcpyReverseConnection extends AdbScrcpyConnection {
37
+ private streams;
38
+ private address;
39
+ initialize(): Promise<void>;
40
+ private accept;
41
+ getStreams(): Promise<[
42
+ videoSteam: ReadableStream<Uint8Array>,
43
+ controlStream: ReadableWritablePair<Uint8Array, Uint8Array> | undefined
44
+ ]>;
45
+ dispose(): void;
46
+ }
47
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/adb/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAEH,KAAK,cAAc,EAEnB,KAAK,oBAAoB,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,0BAA0B;IACvC,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;CAC3B;AAED,8BAAsB,mBAAoB,YAAW,UAAU;IAC3D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEnB,SAAS,CAAC,OAAO,EAAE,0BAA0B,CAAC;gBAE3B,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,0BAA0B;IAKzD,UAAU,IAAI,cAAc,CAAC,IAAI,CAAC;aAIzB,UAAU,IAAI,cAAc,CACxC;QACI,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC;QACtC,aAAa,EACP,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,GAC5C,SAAS;KAClB,CACJ;IAEM,OAAO,IAAI,IAAI;CAGzB;AAED,qBAAa,0BAA2B,SAAQ,mBAAmB;IAC/D,OAAO,CAAC,OAAO;YAID,eAAe;YAaf,kBAAkB;IAcnB,UAAU,IAAI,OAAO,CAC9B;QACI,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC;QACtC,aAAa,EACP,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,GAC5C,SAAS;KAClB,CACJ;CAuBJ;AAED,qBAAa,0BAA2B,SAAQ,mBAAmB;IAC/D,OAAO,CAAC,OAAO,CAEb;IAEF,OAAO,CAAC,OAAO,CAAU;IAEH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAsBnC,MAAM;IAMP,UAAU,IAAI,OAAO,CAC9B;QACI,UAAU,EAAE,cAAc,CAAC,UAAU,CAAC;QACtC,aAAa,EACP,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,GAC5C,SAAS;KAClB,CACJ;IAwBe,OAAO;CAQ1B"}
@@ -1,20 +1,25 @@
1
- import { delay } from "./utils.js";
2
- export class ScrcpyClientConnection {
3
- device;
1
+ import { delay } from "@yume-chan/async";
2
+ import { TransformStream, } from "@yume-chan/stream-extra";
3
+ export class AdbScrcpyConnection {
4
+ adb;
4
5
  options;
5
- constructor(device, options) {
6
- this.device = device;
6
+ constructor(adb, options) {
7
+ this.adb = adb;
7
8
  this.options = options;
8
9
  }
9
- initialize() { }
10
- dispose() { }
10
+ initialize() {
11
+ // do nothing
12
+ }
13
+ dispose() {
14
+ // do nothing
15
+ }
11
16
  }
12
- export class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
13
- async connect() {
14
- return await this.device.createSocket('localabstract:scrcpy');
17
+ export class AdbScrcpyForwardConnection extends AdbScrcpyConnection {
18
+ connect() {
19
+ return this.adb.createSocket("localabstract:scrcpy");
15
20
  }
16
21
  async connectAndRetry() {
17
- for (let i = 0; i < 100; i++) {
22
+ for (let i = 0; i < 100; i += 1) {
18
23
  try {
19
24
  return await this.connect();
20
25
  }
@@ -25,17 +30,17 @@ export class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
25
30
  throw new Error(`Can't connect to server after 100 retries`);
26
31
  }
27
32
  async connectVideoStream() {
28
- const stream = await this.connectAndRetry();
33
+ const { readable: videoStream } = await this.connectAndRetry();
29
34
  if (this.options.sendDummyByte) {
30
- const reader = stream.readable.getReader();
35
+ const reader = videoStream.getReader();
31
36
  const { done, value } = await reader.read();
32
37
  // server will write a `0` to signal connection success
33
38
  if (done || value.byteLength !== 1 || value[0] !== 0) {
34
- throw new Error('Unexpected response from server');
39
+ throw new Error("Unexpected response from server");
35
40
  }
36
41
  reader.releaseLock();
37
42
  }
38
- return stream;
43
+ return videoStream;
39
44
  }
40
45
  async getStreams() {
41
46
  const videoStream = await this.connectVideoStream();
@@ -45,33 +50,30 @@ export class ScrcpyClientForwardConnection extends ScrcpyClientConnection {
45
50
  }
46
51
  // Server only writes device meta after control socket is connected (if enabled)
47
52
  if (this.options.sendDeviceMeta) {
48
- const reader = videoStream.readable.getReader();
53
+ const reader = videoStream.getReader();
49
54
  const { done, value } = await reader.read();
50
55
  // 64 bytes device name + 2 bytes video width + 2 bytes video height
51
56
  if (done || value.byteLength !== 64 + 2 + 2) {
52
- throw new Error('Unexpected response from server');
57
+ throw new Error("Unexpected response from server");
53
58
  }
54
59
  reader.releaseLock();
55
60
  }
56
61
  return [videoStream, controlStream];
57
62
  }
58
63
  }
59
- export class ScrcpyClientReverseConnection extends ScrcpyClientConnection {
64
+ export class AdbScrcpyReverseConnection extends AdbScrcpyConnection {
60
65
  streams;
61
66
  address;
62
67
  async initialize() {
63
- try {
64
- // try to unbind first
65
- await this.device.reverse.remove('localabstract:scrcpy');
66
- }
67
- catch {
68
- // ignore error
69
- }
68
+ // try to unbind first, ignore errors
69
+ await this.adb.reverse.remove("localabstract:scrcpy").catch((e) => {
70
+ void e;
71
+ });
70
72
  const queue = new TransformStream();
71
73
  this.streams = queue.readable.getReader();
72
74
  const writer = queue.writable.getWriter();
73
- this.address = await this.device.reverse.add('localabstract:scrcpy', 'tcp:27183', socket => {
74
- writer.write(socket);
75
+ this.address = await this.adb.reverse.add("localabstract:scrcpy", "tcp:27183", (socket) => {
76
+ void writer.write(socket);
75
77
  return true;
76
78
  });
77
79
  }
@@ -79,18 +81,18 @@ export class ScrcpyClientReverseConnection extends ScrcpyClientConnection {
79
81
  return (await this.streams.read()).value;
80
82
  }
81
83
  async getStreams() {
82
- const videoStream = await this.accept();
84
+ const { readable: videoStream } = await this.accept();
83
85
  let controlStream;
84
86
  if (this.options.control) {
85
87
  controlStream = await this.accept();
86
88
  }
87
89
  // Server only writes device meta after control socket is connected (if enabled)
88
90
  if (this.options.sendDeviceMeta) {
89
- const reader = videoStream.readable.getReader();
91
+ const reader = videoStream.getReader();
90
92
  const { done, value } = await reader.read();
91
93
  // 64 bytes device name + 2 bytes video width + 2 bytes video height
92
94
  if (done || value.byteLength !== 64 + 2 + 2) {
93
- throw new Error('Unexpected response from server');
95
+ throw new Error("Unexpected response from server");
94
96
  }
95
97
  reader.releaseLock();
96
98
  }
@@ -100,7 +102,9 @@ export class ScrcpyClientReverseConnection extends ScrcpyClientConnection {
100
102
  // Don't await this!
101
103
  // `reverse.remove`'s response will never arrive
102
104
  // before we read all pending data from `videoStream`
103
- this.device.reverse.remove(this.address);
105
+ this.adb.reverse.remove(this.address).catch((e) => {
106
+ void e;
107
+ });
104
108
  }
105
109
  }
106
110
  //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/adb/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './options/index.js';
2
+ export * from './client.js';
3
+ export * from './connection.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adb/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './options/index.js';
2
+ export * from './client.js';
3
+ export * from './connection.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adb/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type Adb } from "@yume-chan/adb";
2
+ import { type ScrcpyOptionsInit1_16 } from "../../options/index.js";
3
+ import { type AdbScrcpyConnection } from "../connection.js";
4
+ import { AdbScrcpyOptionsBase } from "./types.js";
5
+ export declare class AdbScrcpyOptions1_16<T extends ScrcpyOptionsInit1_16 = ScrcpyOptionsInit1_16> extends AdbScrcpyOptionsBase<T> {
6
+ createConnection(adb: Adb): AdbScrcpyConnection;
7
+ }
8
+ //# sourceMappingURL=1_16.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_16.d.ts","sourceRoot":"","sources":["../../../src/adb/options/1_16.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAGH,KAAK,mBAAmB,EAE3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,oBAAoB,CAC7B,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,CACzD,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IACb,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,mBAAmB;CAclE"}
@@ -0,0 +1,20 @@
1
+ import { AdbScrcpyForwardConnection, AdbScrcpyReverseConnection, } from "../connection.js";
2
+ import { AdbScrcpyOptionsBase } from "./types.js";
3
+ export class AdbScrcpyOptions1_16 extends AdbScrcpyOptionsBase {
4
+ createConnection(adb) {
5
+ const options = {
6
+ // Old versions always have control stream no matter what the option is
7
+ // Pass `control: false` to `Connection` will disable the control stream
8
+ control: true,
9
+ sendDummyByte: true,
10
+ sendDeviceMeta: true,
11
+ };
12
+ if (this.value.tunnelForward) {
13
+ return new AdbScrcpyForwardConnection(adb, options);
14
+ }
15
+ else {
16
+ return new AdbScrcpyReverseConnection(adb, options);
17
+ }
18
+ }
19
+ }
20
+ //# sourceMappingURL=1_16.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_16.js","sourceRoot":"","sources":["../../../src/adb/options/1_16.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,0BAA0B,EAC1B,0BAA0B,GAG7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,OAAO,oBAEX,SAAQ,oBAAuB;IACb,gBAAgB,CAAC,GAAQ;QACrC,MAAM,OAAO,GAA+B;YACxC,uEAAuE;YACvE,wEAAwE;YACxE,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACvB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,OAAO,IAAI,0BAA0B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SACvD;aAAM;YACH,OAAO,IAAI,0BAA0B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SACvD;IACL,CAAC;CACJ"}
@@ -0,0 +1,8 @@
1
+ import { type Adb } from "@yume-chan/adb";
2
+ import { type ScrcpyOptionsInit1_22 } from "../../options/index.js";
3
+ import { type AdbScrcpyConnection } from "../connection.js";
4
+ import { AdbScrcpyOptions1_16 } from "./1_16.js";
5
+ export declare class AdbScrcpyOptions1_22<T extends ScrcpyOptionsInit1_22 = ScrcpyOptionsInit1_22> extends AdbScrcpyOptions1_16<T> {
6
+ createConnection(adb: Adb): AdbScrcpyConnection;
7
+ }
8
+ //# sourceMappingURL=1_22.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_22.d.ts","sourceRoot":"","sources":["../../../src/adb/options/1_22.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACH,KAAK,mBAAmB,EAG3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,qBAAa,oBAAoB,CAC7B,CAAC,SAAS,qBAAqB,GAAG,qBAAqB,CACzD,SAAQ,oBAAoB,CAAC,CAAC,CAAC;IACb,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,mBAAmB;CAWlE"}
@@ -0,0 +1,17 @@
1
+ import { AdbScrcpyForwardConnection, AdbScrcpyReverseConnection, } from "../connection.js";
2
+ import { AdbScrcpyOptions1_16 } from "./1_16.js";
3
+ export class AdbScrcpyOptions1_22 extends AdbScrcpyOptions1_16 {
4
+ createConnection(adb) {
5
+ const options = {
6
+ ...this.getDefaultValue(),
7
+ ...this.value,
8
+ };
9
+ if (this.value.tunnelForward) {
10
+ return new AdbScrcpyForwardConnection(adb, options);
11
+ }
12
+ else {
13
+ return new AdbScrcpyReverseConnection(adb, options);
14
+ }
15
+ }
16
+ }
17
+ //# sourceMappingURL=1_22.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1_22.js","sourceRoot":"","sources":["../../../src/adb/options/1_22.ts"],"names":[],"mappings":"AAGA,OAAO,EAEH,0BAA0B,EAC1B,0BAA0B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,OAAO,oBAEX,SAAQ,oBAAuB;IACb,gBAAgB,CAAC,GAAQ;QACrC,MAAM,OAAO,GAAG;YACZ,GAAG,IAAI,CAAC,eAAe,EAAE;YACzB,GAAG,IAAI,CAAC,KAAK;SAChB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1B,OAAO,IAAI,0BAA0B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SACvD;aAAM;YACH,OAAO,IAAI,0BAA0B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SACvD;IACL,CAAC;CACJ"}
@@ -0,0 +1,4 @@
1
+ export * from './1_16.js';
2
+ export * from './1_22.js';
3
+ export * from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adb/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './1_16.js';
2
+ export * from './1_22.js';
3
+ export * from './types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adb/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type Adb } from "@yume-chan/adb";
2
+ import { type TransformStream } from "@yume-chan/stream-extra";
3
+ import { type ScrcpyBackOrScreenOnControlMessage, type ScrcpyControlMessageType, type ScrcpySetClipboardControlMessage } from "../../control/index.js";
4
+ import { type ScrcpyOptions, type ScrcpyVideoStreamPacket } from "../../options/index.js";
5
+ import { type AdbScrcpyConnection } from "../connection.js";
6
+ export interface AdbScrcpyOptions<T extends object> extends ScrcpyOptions<T> {
7
+ createConnection(adb: Adb): AdbScrcpyConnection;
8
+ }
9
+ export declare abstract class AdbScrcpyOptionsBase<T extends object> implements ScrcpyOptions<T> {
10
+ private raw;
11
+ get value(): Partial<T>;
12
+ set value(value: Partial<T>);
13
+ constructor(raw: ScrcpyOptions<T>);
14
+ getDefaultValue(): T;
15
+ formatServerArguments(): string[];
16
+ getOutputEncoderNameRegex(): RegExp;
17
+ createVideoStreamTransformer(): TransformStream<Uint8Array, ScrcpyVideoStreamPacket>;
18
+ getControlMessageTypes(): ScrcpyControlMessageType[];
19
+ serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
20
+ serializeSetClipboardControlMessage(message: ScrcpySetClipboardControlMessage): Uint8Array;
21
+ getScrollController(): import("../../options/index.js").ScrcpyScrollController;
22
+ abstract createConnection(adb: Adb): AdbScrcpyConnection;
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adb/options/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EACH,KAAK,kCAAkC,EACvC,KAAK,wBAAwB,EAC7B,KAAK,gCAAgC,EACxC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC;IACxE,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,mBAAmB,CAAC;CACnD;AAED,8BAAsB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CACvD,YAAW,aAAa,CAAC,CAAC,CAAC;IAE3B,OAAO,CAAC,GAAG,CAAmB;IAE9B,IAAW,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAE7B;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAEjC;gBAEkB,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IAIjC,eAAe,IAAI,CAAC;IAIpB,qBAAqB,IAAI,MAAM,EAAE;IAIjC,yBAAyB,IAAI,MAAM;IAInC,4BAA4B,IAAI,eAAe,CAClD,UAAU,EACV,uBAAuB,CAC1B;IAIM,sBAAsB,IAAI,wBAAwB,EAAE;IAIpD,qCAAqC,CACxC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIlB,mCAAmC,CACtC,OAAO,EAAE,gCAAgC,GAC1C,UAAU;IAIN,mBAAmB;aAIV,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,mBAAmB;CAClE"}
@@ -0,0 +1,37 @@
1
+ export class AdbScrcpyOptionsBase {
2
+ raw;
3
+ get value() {
4
+ return this.raw.value;
5
+ }
6
+ set value(value) {
7
+ this.raw.value = value;
8
+ }
9
+ constructor(raw) {
10
+ this.raw = raw;
11
+ }
12
+ getDefaultValue() {
13
+ return this.raw.getDefaultValue();
14
+ }
15
+ formatServerArguments() {
16
+ return this.raw.formatServerArguments();
17
+ }
18
+ getOutputEncoderNameRegex() {
19
+ return this.raw.getOutputEncoderNameRegex();
20
+ }
21
+ createVideoStreamTransformer() {
22
+ return this.raw.createVideoStreamTransformer();
23
+ }
24
+ getControlMessageTypes() {
25
+ return this.raw.getControlMessageTypes();
26
+ }
27
+ serializeBackOrScreenOnControlMessage(message) {
28
+ return this.raw.serializeBackOrScreenOnControlMessage(message);
29
+ }
30
+ serializeSetClipboardControlMessage(message) {
31
+ return this.raw.serializeSetClipboardControlMessage(message);
32
+ }
33
+ getScrollController() {
34
+ return this.raw.getScrollController();
35
+ }
36
+ }
37
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adb/options/types.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAgB,oBAAoB;IAG9B,GAAG,CAAmB;IAE9B,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IAC1B,CAAC;IACD,IAAW,KAAK,CAAC,KAAiB;QAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,YAAmB,GAAqB;QACpC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAEM,eAAe;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;IACtC,CAAC;IAEM,qBAAqB;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAC5C,CAAC;IAEM,yBAAyB;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC;IAChD,CAAC;IAEM,4BAA4B;QAI/B,OAAO,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;IACnD,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;IAC7C,CAAC;IAEM,qCAAqC,CACxC,OAA2C;QAE3C,OAAO,IAAI,CAAC,GAAG,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAEM,mCAAmC,CACtC,OAAyC;QAEzC,OAAO,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAEM,mBAAmB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC1C,CAAC;CAGJ"}