@yume-chan/scrcpy 0.0.18 → 0.0.20

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 (288) hide show
  1. package/CHANGELOG.json +33 -0
  2. package/CHANGELOG.md +18 -1
  3. package/README.md +157 -183
  4. package/bin/scrcpy-server +0 -0
  5. package/bin/version.d.ts +1 -1
  6. package/bin/version.js +1 -1
  7. package/esm/codec/av1.d.ts +33 -0
  8. package/esm/codec/av1.d.ts.map +1 -0
  9. package/esm/codec/av1.js +35 -0
  10. package/esm/codec/av1.js.map +1 -0
  11. package/esm/codec/h264.d.ts +78 -0
  12. package/esm/codec/h264.d.ts.map +1 -0
  13. package/esm/codec/h264.js +256 -0
  14. package/esm/codec/h264.js.map +1 -0
  15. package/esm/codec/h265.d.ts +490 -0
  16. package/esm/codec/h265.d.ts.map +1 -0
  17. package/esm/codec/h265.js +1098 -0
  18. package/esm/codec/h265.js.map +1 -0
  19. package/esm/codec/index.d.ts +5 -0
  20. package/esm/codec/index.d.ts.map +1 -0
  21. package/esm/codec/index.js +5 -0
  22. package/esm/codec/index.js.map +1 -0
  23. package/esm/codec/nalu.d.ts +44 -0
  24. package/esm/codec/nalu.d.ts.map +1 -0
  25. package/esm/codec/nalu.js +310 -0
  26. package/esm/codec/nalu.js.map +1 -0
  27. package/esm/control/back-or-screen-on.d.ts +2 -2
  28. package/esm/control/back-or-screen-on.d.ts.map +1 -1
  29. package/esm/control/back-or-screen-on.js +1 -1
  30. package/esm/control/basic.d.ts +5 -0
  31. package/esm/control/basic.d.ts.map +1 -0
  32. package/esm/control/basic.js +3 -0
  33. package/esm/control/basic.js.map +1 -0
  34. package/esm/control/hover-helper.d.ts +17 -17
  35. package/esm/control/hover-helper.d.ts.map +1 -1
  36. package/esm/control/hover-helper.js +43 -43
  37. package/esm/control/hover-helper.js.map +1 -1
  38. package/esm/control/index.d.ts +13 -11
  39. package/esm/control/index.d.ts.map +1 -1
  40. package/esm/control/index.js +13 -11
  41. package/esm/control/index.js.map +1 -1
  42. package/esm/control/inject-keycode.d.ts +193 -60
  43. package/esm/control/inject-keycode.d.ts.map +1 -1
  44. package/esm/control/inject-keycode.js +198 -61
  45. package/esm/control/inject-keycode.js.map +1 -1
  46. package/esm/control/inject-scroll.d.ts +2 -2
  47. package/esm/control/inject-scroll.d.ts.map +1 -1
  48. package/esm/control/inject-scroll.js +1 -1
  49. package/esm/control/inject-text.d.ts +7 -8
  50. package/esm/control/inject-text.d.ts.map +1 -1
  51. package/esm/control/inject-text.js +5 -6
  52. package/esm/control/inject-text.js.map +1 -1
  53. package/esm/control/inject-touch.d.ts +32 -37
  54. package/esm/control/inject-touch.d.ts.map +1 -1
  55. package/esm/control/inject-touch.js +35 -62
  56. package/esm/control/inject-touch.js.map +1 -1
  57. package/esm/control/rotate-device.d.ts +4 -6
  58. package/esm/control/rotate-device.d.ts.map +1 -1
  59. package/esm/control/rotate-device.js +2 -4
  60. package/esm/control/rotate-device.js.map +1 -1
  61. package/esm/control/serializer.d.ts +25 -33
  62. package/esm/control/serializer.d.ts.map +1 -1
  63. package/esm/control/serializer.js +53 -78
  64. package/esm/control/serializer.js.map +1 -1
  65. package/esm/control/set-clipboard.d.ts +2 -2
  66. package/esm/control/set-clipboard.d.ts.map +1 -1
  67. package/esm/control/set-clipboard.js +1 -1
  68. package/esm/control/set-screen-power-mode.d.ts +10 -11
  69. package/esm/control/set-screen-power-mode.d.ts.map +1 -1
  70. package/esm/control/set-screen-power-mode.js +10 -11
  71. package/esm/control/set-screen-power-mode.js.map +1 -1
  72. package/esm/control/type.d.ts +28 -14
  73. package/esm/control/type.d.ts.map +1 -1
  74. package/esm/control/type.js +40 -18
  75. package/esm/control/type.js.map +1 -1
  76. package/esm/control/writer.d.ts +28 -0
  77. package/esm/control/writer.d.ts.map +1 -0
  78. package/esm/control/writer.js +53 -0
  79. package/esm/control/writer.js.map +1 -0
  80. package/esm/device-message/ack-clipboard.d.ts +8 -8
  81. package/esm/device-message/ack-clipboard.d.ts.map +1 -1
  82. package/esm/device-message/ack-clipboard.js +5 -5
  83. package/esm/device-message/clipboard.d.ts +9 -9
  84. package/esm/device-message/clipboard.d.ts.map +1 -1
  85. package/esm/device-message/clipboard.js +6 -6
  86. package/esm/device-message/index.d.ts +4 -4
  87. package/esm/device-message/index.js +4 -4
  88. package/esm/device-message/stream.d.ts +7 -7
  89. package/esm/device-message/stream.d.ts.map +1 -1
  90. package/esm/device-message/stream.js +34 -19
  91. package/esm/device-message/stream.js.map +1 -1
  92. package/esm/device-message/type.d.ts +4 -4
  93. package/esm/device-message/type.js +6 -6
  94. package/esm/index.d.ts +4 -5
  95. package/esm/index.d.ts.map +1 -1
  96. package/esm/index.js +4 -5
  97. package/esm/index.js.map +1 -1
  98. package/esm/options/1_16/codec-options.d.ts +19 -19
  99. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  100. package/esm/options/1_16/codec-options.js +25 -25
  101. package/esm/options/1_16/codec-options.js.map +1 -1
  102. package/esm/options/1_16/float-to-uint16.d.ts +5 -0
  103. package/esm/options/1_16/float-to-uint16.d.ts.map +1 -0
  104. package/esm/options/1_16/float-to-uint16.js +27 -0
  105. package/esm/options/1_16/float-to-uint16.js.map +1 -0
  106. package/esm/options/1_16/index.d.ts +6 -4
  107. package/esm/options/1_16/index.d.ts.map +1 -1
  108. package/esm/options/1_16/index.js +6 -4
  109. package/esm/options/1_16/index.js.map +1 -1
  110. package/esm/options/1_16/init.d.ts +66 -0
  111. package/esm/options/1_16/init.d.ts.map +1 -0
  112. package/esm/options/1_16/init.js +16 -0
  113. package/esm/options/1_16/init.js.map +1 -0
  114. package/esm/options/1_16/message.d.ts +32 -0
  115. package/esm/options/1_16/message.d.ts.map +1 -0
  116. package/esm/options/1_16/message.js +37 -0
  117. package/esm/options/1_16/message.js.map +1 -0
  118. package/esm/options/1_16/options.d.ts +48 -93
  119. package/esm/options/1_16/options.d.ts.map +1 -1
  120. package/esm/options/1_16/options.js +152 -189
  121. package/esm/options/1_16/options.js.map +1 -1
  122. package/esm/options/1_16/scroll.d.ts +26 -26
  123. package/esm/options/1_16/scroll.d.ts.map +1 -1
  124. package/esm/options/1_16/scroll.js +54 -55
  125. package/esm/options/1_16/scroll.js.map +1 -1
  126. package/esm/options/1_17.d.ts +33 -0
  127. package/esm/options/1_17.d.ts.map +1 -0
  128. package/esm/options/1_17.js +42 -0
  129. package/esm/options/1_17.js.map +1 -0
  130. package/esm/options/1_18.d.ts +59 -19
  131. package/esm/options/1_18.d.ts.map +1 -1
  132. package/esm/options/1_18.js +78 -45
  133. package/esm/options/1_18.js.map +1 -1
  134. package/esm/options/1_21.d.ts +41 -20
  135. package/esm/options/1_21.d.ts.map +1 -1
  136. package/esm/options/1_21.js +51 -36
  137. package/esm/options/1_21.js.map +1 -1
  138. package/esm/options/1_22/index.d.ts +3 -2
  139. package/esm/options/1_22/index.d.ts.map +1 -1
  140. package/esm/options/1_22/index.js +3 -2
  141. package/esm/options/1_22/index.js.map +1 -1
  142. package/esm/options/1_22/init.d.ts +17 -0
  143. package/esm/options/1_22/init.d.ts.map +1 -0
  144. package/esm/options/1_22/init.js +2 -0
  145. package/esm/options/1_22/init.js.map +1 -0
  146. package/esm/options/1_22/options.d.ts +35 -28
  147. package/esm/options/1_22/options.d.ts.map +1 -1
  148. package/esm/options/1_22/options.js +36 -25
  149. package/esm/options/1_22/options.js.map +1 -1
  150. package/esm/options/1_22/scroll.d.ts +16 -16
  151. package/esm/options/1_22/scroll.d.ts.map +1 -1
  152. package/esm/options/1_22/scroll.js +14 -14
  153. package/esm/options/1_23.d.ts +36 -11
  154. package/esm/options/1_23.d.ts.map +1 -1
  155. package/esm/options/1_23.js +44 -34
  156. package/esm/options/1_23.js.map +1 -1
  157. package/esm/options/1_24.d.ts +34 -8
  158. package/esm/options/1_24.d.ts.map +1 -1
  159. package/esm/options/1_24.js +22 -12
  160. package/esm/options/1_24.js.map +1 -1
  161. package/esm/options/1_25/index.d.ts +2 -2
  162. package/esm/options/1_25/index.js +2 -2
  163. package/esm/options/1_25/options.d.ts +10 -5
  164. package/esm/options/1_25/options.d.ts.map +1 -1
  165. package/esm/options/1_25/options.js +21 -7
  166. package/esm/options/1_25/options.js.map +1 -1
  167. package/esm/options/1_25/scroll.d.ts +19 -18
  168. package/esm/options/1_25/scroll.d.ts.map +1 -1
  169. package/esm/options/1_25/scroll.js +33 -32
  170. package/esm/options/1_25/scroll.js.map +1 -1
  171. package/esm/options/2_0.d.ts +91 -0
  172. package/esm/options/2_0.d.ts.map +1 -0
  173. package/esm/options/2_0.js +244 -0
  174. package/esm/options/2_0.js.map +1 -0
  175. package/esm/options/codec.d.ts +52 -0
  176. package/esm/options/codec.d.ts.map +1 -0
  177. package/esm/options/codec.js +26 -0
  178. package/esm/options/codec.js.map +1 -0
  179. package/esm/options/index.d.ts +12 -8
  180. package/esm/options/index.d.ts.map +1 -1
  181. package/esm/options/index.js +12 -8
  182. package/esm/options/index.js.map +1 -1
  183. package/esm/options/latest.d.ts +12 -0
  184. package/esm/options/latest.d.ts.map +1 -0
  185. package/esm/options/latest.js +8 -0
  186. package/esm/options/latest.js.map +1 -0
  187. package/esm/options/types.d.ts +86 -46
  188. package/esm/options/types.d.ts.map +1 -1
  189. package/esm/options/types.js +69 -17
  190. package/esm/options/types.js.map +1 -1
  191. package/package.json +10 -16
  192. package/src/codec/av1.ts +33 -0
  193. package/src/codec/h264.ts +317 -0
  194. package/src/codec/h265.ts +1375 -0
  195. package/src/codec/index.ts +4 -0
  196. package/src/codec/nalu.ts +373 -0
  197. package/src/control/back-or-screen-on.ts +1 -1
  198. package/src/control/basic.ts +3 -0
  199. package/src/control/hover-helper.ts +2 -4
  200. package/src/control/index.ts +2 -0
  201. package/src/control/inject-keycode.ts +194 -51
  202. package/src/control/inject-scroll.ts +1 -1
  203. package/src/control/inject-text.ts +6 -9
  204. package/src/control/inject-touch.ts +16 -55
  205. package/src/control/rotate-device.ts +3 -7
  206. package/src/control/serializer.ts +49 -105
  207. package/src/control/set-clipboard.ts +1 -1
  208. package/src/control/set-screen-power-mode.ts +6 -9
  209. package/src/control/type.ts +32 -0
  210. package/src/control/writer.ts +87 -0
  211. package/src/device-message/ack-clipboard.ts +1 -1
  212. package/src/device-message/clipboard.ts +1 -1
  213. package/src/device-message/stream.ts +32 -12
  214. package/src/index.ts +4 -5
  215. package/src/options/1_16/codec-options.ts +5 -8
  216. package/src/options/1_16/float-to-uint16.ts +33 -0
  217. package/src/options/1_16/index.ts +3 -1
  218. package/src/options/1_16/init.ts +80 -0
  219. package/src/options/1_16/message.ts +55 -0
  220. package/src/options/1_16/options.ts +152 -256
  221. package/src/options/1_16/scroll.ts +2 -5
  222. package/src/options/1_17.ts +66 -0
  223. package/src/options/1_18.ts +106 -42
  224. package/src/options/1_21.ts +51 -30
  225. package/src/options/1_22/index.ts +1 -0
  226. package/src/options/1_22/init.ts +19 -0
  227. package/src/options/1_22/options.ts +40 -46
  228. package/src/options/1_22/scroll.ts +2 -2
  229. package/src/options/1_23.ts +33 -23
  230. package/src/options/1_24.ts +25 -11
  231. package/src/options/1_25/options.ts +25 -6
  232. package/src/options/1_25/scroll.ts +5 -7
  233. package/src/options/2_0.ts +342 -0
  234. package/src/options/codec.ts +98 -0
  235. package/src/options/index.ts +7 -3
  236. package/src/options/latest.ts +14 -0
  237. package/src/options/types.ts +158 -48
  238. package/tsconfig.build.json +9 -1
  239. package/tsconfig.build.tsbuildinfo +1 -1
  240. package/esm/adb/client.d.ts +0 -41
  241. package/esm/adb/client.d.ts.map +0 -1
  242. package/esm/adb/client.js +0 -243
  243. package/esm/adb/client.js.map +0 -1
  244. package/esm/adb/connection.d.ts +0 -47
  245. package/esm/adb/connection.d.ts.map +0 -1
  246. package/esm/adb/connection.js +0 -110
  247. package/esm/adb/connection.js.map +0 -1
  248. package/esm/adb/index.d.ts +0 -4
  249. package/esm/adb/index.d.ts.map +0 -1
  250. package/esm/adb/index.js +0 -4
  251. package/esm/adb/index.js.map +0 -1
  252. package/esm/adb/options/1_16.d.ts +0 -8
  253. package/esm/adb/options/1_16.d.ts.map +0 -1
  254. package/esm/adb/options/1_16.js +0 -20
  255. package/esm/adb/options/1_16.js.map +0 -1
  256. package/esm/adb/options/1_22.d.ts +0 -8
  257. package/esm/adb/options/1_22.d.ts.map +0 -1
  258. package/esm/adb/options/1_22.js +0 -17
  259. package/esm/adb/options/1_22.js.map +0 -1
  260. package/esm/adb/options/index.d.ts +0 -4
  261. package/esm/adb/options/index.d.ts.map +0 -1
  262. package/esm/adb/options/index.js +0 -4
  263. package/esm/adb/options/index.js.map +0 -1
  264. package/esm/adb/options/types.d.ts +0 -24
  265. package/esm/adb/options/types.d.ts.map +0 -1
  266. package/esm/adb/options/types.js +0 -37
  267. package/esm/adb/options/types.js.map +0 -1
  268. package/esm/codec.d.ts +0 -34
  269. package/esm/codec.d.ts.map +0 -1
  270. package/esm/codec.js +0 -37
  271. package/esm/codec.js.map +0 -1
  272. package/esm/options/1_16/h264-configuration.d.ts +0 -49
  273. package/esm/options/1_16/h264-configuration.d.ts.map +0 -1
  274. package/esm/options/1_16/h264-configuration.js +0 -414
  275. package/esm/options/1_16/h264-configuration.js.map +0 -1
  276. package/esm/options/1_16/sps.d.ts +0 -22
  277. package/esm/options/1_16/sps.d.ts.map +0 -1
  278. package/esm/options/1_16/sps.js +0 -263
  279. package/esm/options/1_16/sps.js.map +0 -1
  280. package/src/adb/client.ts +0 -345
  281. package/src/adb/connection.ts +0 -192
  282. package/src/adb/index.ts +0 -3
  283. package/src/adb/options/1_16.ts +0 -30
  284. package/src/adb/options/1_22.ts +0 -26
  285. package/src/adb/options/index.ts +0 -3
  286. package/src/adb/options/types.ts +0 -75
  287. package/src/codec.ts +0 -35
  288. package/src/options/1_16/h264-configuration.ts +0 -485
@@ -0,0 +1,91 @@
1
+ import type { ReadableStream } from "@yume-chan/stream-extra";
2
+ import type { ValueOrPromise } from "@yume-chan/struct";
3
+ import Struct from "@yume-chan/struct";
4
+ import type { AndroidMotionEventAction, ScrcpyInjectTouchControlMessage } from "../control/index.js";
5
+ import { CodecOptions } from "./1_16/index.js";
6
+ import type { ScrcpyOptionsInit1_24 } from "./1_24.js";
7
+ import { ScrcpyOptions1_25 } from "./1_25/index.js";
8
+ import type { ScrcpyAudioStreamMetadata, ScrcpyVideoStream } from "./codec.js";
9
+ import type { ScrcpyDisplay, ScrcpyEncoder, ScrcpyOptionValue } from "./types.js";
10
+ import { ScrcpyOptionsBase } from "./types.js";
11
+ export declare const ScrcpyInjectTouchControlMessage2_0: Struct<{
12
+ type: number;
13
+ action: AndroidMotionEventAction;
14
+ pointerId: bigint;
15
+ pointerX: number;
16
+ pointerY: number;
17
+ screenWidth: number;
18
+ screenHeight: number;
19
+ pressure: number;
20
+ actionButton: number;
21
+ buttons: number;
22
+ }, never, Record<never, never>, undefined>;
23
+ export type ScrcpyInjectTouchControlMessage2_0 = (typeof ScrcpyInjectTouchControlMessage2_0)["TInit"];
24
+ export declare class ScrcpyInstanceId implements ScrcpyOptionValue {
25
+ static readonly NONE: ScrcpyInstanceId;
26
+ static random(): ScrcpyInstanceId;
27
+ value: number;
28
+ constructor(value: number);
29
+ toOptionValue(): string | undefined;
30
+ }
31
+ export interface ScrcpyOptionsInit2_0 extends Omit<ScrcpyOptionsInit1_24, "bitRate" | "codecOptions" | "encoderName"> {
32
+ scid?: ScrcpyInstanceId;
33
+ videoCodec?: "h264" | "h265" | "av1";
34
+ videoBitRate?: number;
35
+ videoCodecOptions?: CodecOptions;
36
+ videoEncoder?: string;
37
+ audio?: boolean;
38
+ audioCodec?: "opus" | "aac" | "raw";
39
+ audioBitRate?: number;
40
+ audioCodecOptions?: CodecOptions;
41
+ audioEncoder?: string;
42
+ listEncoders?: boolean;
43
+ listDisplays?: boolean;
44
+ sendCodecMeta?: boolean;
45
+ }
46
+ export declare class ScrcpyOptions2_0 extends ScrcpyOptionsBase<ScrcpyOptionsInit2_0, ScrcpyOptions1_25> {
47
+ static readonly DEFAULTS: {
48
+ readonly scid: ScrcpyInstanceId;
49
+ readonly videoCodec: "h264";
50
+ readonly videoBitRate: 8000000;
51
+ readonly videoCodecOptions: CodecOptions;
52
+ readonly videoEncoder: "";
53
+ readonly audio: true;
54
+ readonly audioCodec: "opus";
55
+ readonly audioBitRate: 128000;
56
+ readonly audioCodecOptions: CodecOptions;
57
+ readonly audioEncoder: "";
58
+ readonly listEncoders: false;
59
+ readonly listDisplays: false;
60
+ readonly sendCodecMeta: true;
61
+ readonly logLevel: import("./1_18.js").ScrcpyLogLevel1_18.Debug;
62
+ readonly maxSize: 0;
63
+ readonly maxFps: 0;
64
+ readonly lockVideoOrientation: import("./1_18.js").ScrcpyVideoOrientation1_18.Unlocked;
65
+ readonly tunnelForward: false;
66
+ readonly crop: undefined;
67
+ readonly sendFrameMeta: true;
68
+ readonly control: true;
69
+ readonly displayId: 0;
70
+ readonly showTouches: false;
71
+ readonly stayAwake: false;
72
+ readonly powerOffOnClose: false;
73
+ readonly clipboardAutosync: true;
74
+ readonly downsizeOnError: true;
75
+ readonly sendDeviceMeta: true;
76
+ readonly sendDummyByte: true;
77
+ readonly cleanup: true;
78
+ readonly powerOn: true;
79
+ };
80
+ get defaults(): Required<ScrcpyOptionsInit2_0>;
81
+ constructor(init: ScrcpyOptionsInit2_0);
82
+ serialize(): string[];
83
+ setListEncoders(): void;
84
+ setListDisplays(): void;
85
+ parseEncoder(line: string): ScrcpyEncoder | undefined;
86
+ parseDisplay(line: string): ScrcpyDisplay | undefined;
87
+ parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyVideoStream>;
88
+ parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyAudioStreamMetadata>;
89
+ serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
90
+ }
91
+ //# sourceMappingURL=2_0.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2_0.d.ts","sourceRoot":"","sources":["../../src/options/2_0.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAK9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,MAAwC,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EACR,wBAAwB,EACxB,+BAA+B,EAClC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACH,YAAY,EAGf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,KAAK,EACR,aAAa,EACb,aAAa,EACb,iBAAiB,EACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,kCAAkC;;;;;;;;;;;0CAUzB,CAAC;AAEvB,MAAM,MAAM,kCAAkC,GAC1C,CAAC,OAAO,kCAAkC,CAAC,CAAC,OAAO,CAAC,CAAC;AAEzD,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,gBAAuB,IAAI,mBAA4B;WAEzC,MAAM,IAAI,gBAAgB;IAKjC,KAAK,EAAE,MAAM,CAAC;gBAEF,KAAK,EAAE,MAAM;IAIzB,aAAa,IAAI,MAAM,GAAG,SAAS;CAM7C;AAED,MAAM,WAAW,oBACb,SAAQ,IAAI,CACR,qBAAqB,EACrB,SAAS,GAAG,cAAc,GAAG,aAAa,CAC7C;IACD,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAExB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAeD,qBAAa,gBAAiB,SAAQ,iBAAiB,CACnD,oBAAoB,EACpB,iBAAiB,CACpB;IACG,gBAAuB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsBqB;IAEpD,IAAoB,QAAQ,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAE7D;gBAEkB,IAAI,EAAE,oBAAoB;IAO7B,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAwBrD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAcrD,wBAAwB,CACpC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,iBAAiB,CAAC;IAwDpB,wBAAwB,CACpC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,yBAAyB,CAAC;IAmF5B,kCAAkC,CAC9C,OAAO,EAAE,+BAA+B,GACzC,UAAU;CAGhB"}
@@ -0,0 +1,244 @@
1
+ import { BufferedReadableStream, PushReadableStream, } from "@yume-chan/stream-extra";
2
+ import Struct, { NumberFieldType, placeholder } from "@yume-chan/struct";
3
+ import { CodecOptions, ScrcpyFloatToUint16FieldDefinition, ScrcpyOptions1_16, } from "./1_16/index.js";
4
+ import { ScrcpyOptions1_21 } from "./1_21.js";
5
+ import { ScrcpyOptions1_24 } from "./1_24.js";
6
+ import { ScrcpyOptions1_25 } from "./1_25/index.js";
7
+ import { ScrcpyAudioCodec, ScrcpyVideoCodecId } from "./codec.js";
8
+ import { ScrcpyOptionsBase } from "./types.js";
9
+ export const ScrcpyInjectTouchControlMessage2_0 = new Struct()
10
+ .uint8("type")
11
+ .uint8("action", placeholder())
12
+ .uint64("pointerId")
13
+ .uint32("pointerX")
14
+ .uint32("pointerY")
15
+ .uint16("screenWidth")
16
+ .uint16("screenHeight")
17
+ .field("pressure", ScrcpyFloatToUint16FieldDefinition)
18
+ .uint32("actionButton")
19
+ .uint32("buttons");
20
+ class ScrcpyInstanceId {
21
+ static NONE = new ScrcpyInstanceId(-1);
22
+ static random() {
23
+ // A random 31-bit unsigned integer
24
+ return new ScrcpyInstanceId((Math.random() * 0x80000000) | 0);
25
+ }
26
+ value;
27
+ constructor(value) {
28
+ this.value = value;
29
+ }
30
+ toOptionValue() {
31
+ if (this.value < 0) {
32
+ return undefined;
33
+ }
34
+ return this.value.toString(16);
35
+ }
36
+ }
37
+ export { ScrcpyInstanceId };
38
+ function omit(obj, keys) {
39
+ const result = {};
40
+ for (const key in obj) {
41
+ if (!keys.includes(key)) {
42
+ result[key] = obj[key];
43
+ }
44
+ }
45
+ return result;
46
+ }
47
+ class ScrcpyOptions2_0 extends ScrcpyOptionsBase {
48
+ static DEFAULTS = {
49
+ ...omit(ScrcpyOptions1_24.DEFAULTS, [
50
+ "bitRate",
51
+ "codecOptions",
52
+ "encoderName",
53
+ ]),
54
+ scid: ScrcpyInstanceId.NONE,
55
+ videoCodec: "h264",
56
+ videoBitRate: 8000000,
57
+ videoCodecOptions: new CodecOptions(),
58
+ videoEncoder: "",
59
+ audio: true,
60
+ audioCodec: "opus",
61
+ audioBitRate: 128000,
62
+ audioCodecOptions: new CodecOptions(),
63
+ audioEncoder: "",
64
+ listEncoders: false,
65
+ listDisplays: false,
66
+ sendCodecMeta: true,
67
+ };
68
+ get defaults() {
69
+ return ScrcpyOptions2_0.DEFAULTS;
70
+ }
71
+ constructor(init) {
72
+ super(new ScrcpyOptions1_25(init), {
73
+ ...ScrcpyOptions2_0.DEFAULTS,
74
+ ...init,
75
+ });
76
+ }
77
+ serialize() {
78
+ return ScrcpyOptions1_21.serialize(this.value, this.defaults);
79
+ }
80
+ setListEncoders() {
81
+ this.value.listEncoders = true;
82
+ }
83
+ setListDisplays() {
84
+ this.value.listDisplays = true;
85
+ }
86
+ parseEncoder(line) {
87
+ let match = line.match(/\s+--video-codec=(.*)\s+--video-encoder='(.*)'/);
88
+ if (match) {
89
+ return {
90
+ type: "video",
91
+ codec: match[1],
92
+ name: match[2],
93
+ };
94
+ }
95
+ match = line.match(/\s+--audio-codec=(.*)\s+--audio-encoder='(.*)'/);
96
+ if (match) {
97
+ return {
98
+ type: "audio",
99
+ codec: match[1],
100
+ name: match[2],
101
+ };
102
+ }
103
+ return undefined;
104
+ }
105
+ parseDisplay(line) {
106
+ const match = line.match(/\s+--display=(\d+)\s+\((.*?)\)/);
107
+ if (match) {
108
+ const display = {
109
+ id: Number.parseInt(match[1], 10),
110
+ };
111
+ if (match[2] !== "size unknown") {
112
+ display.resolution = match[2];
113
+ }
114
+ return display;
115
+ }
116
+ return undefined;
117
+ }
118
+ parseVideoStreamMetadata(stream) {
119
+ const { sendDeviceMeta, sendCodecMeta } = this.value;
120
+ if (!sendDeviceMeta && !sendCodecMeta) {
121
+ let codec;
122
+ switch (this.value.videoCodec) {
123
+ case "h264":
124
+ codec = ScrcpyVideoCodecId.H264;
125
+ break;
126
+ case "h265":
127
+ codec = ScrcpyVideoCodecId.H265;
128
+ break;
129
+ case "av1":
130
+ codec = ScrcpyVideoCodecId.AV1;
131
+ break;
132
+ }
133
+ return { stream, metadata: { codec } };
134
+ }
135
+ return (async () => {
136
+ const buffered = new BufferedReadableStream(stream);
137
+ // `sendDeviceMeta` now only contains device name,
138
+ // can't use `super.parseVideoStreamMetadata` here
139
+ let deviceName;
140
+ if (sendDeviceMeta) {
141
+ deviceName = await ScrcpyOptions1_16.parseCString(buffered, 64);
142
+ }
143
+ let codec;
144
+ let width;
145
+ let height;
146
+ if (sendCodecMeta) {
147
+ codec = await ScrcpyOptions1_16.parseUint32BE(buffered);
148
+ width = await ScrcpyOptions1_16.parseUint32BE(buffered);
149
+ height = await ScrcpyOptions1_16.parseUint32BE(buffered);
150
+ }
151
+ else {
152
+ switch (this.value.videoCodec) {
153
+ case "h264":
154
+ codec = ScrcpyVideoCodecId.H264;
155
+ break;
156
+ case "h265":
157
+ codec = ScrcpyVideoCodecId.H265;
158
+ break;
159
+ case "av1":
160
+ codec = ScrcpyVideoCodecId.AV1;
161
+ break;
162
+ }
163
+ }
164
+ return {
165
+ stream: buffered.release(),
166
+ metadata: { deviceName, codec, width, height },
167
+ };
168
+ })();
169
+ }
170
+ parseAudioStreamMetadata(stream) {
171
+ return (async () => {
172
+ const buffered = new BufferedReadableStream(stream);
173
+ const buffer = await buffered.readExactly(NumberFieldType.Uint32.size);
174
+ const codecMetadataValue = NumberFieldType.Uint32.deserialize(buffer, false);
175
+ // Server will send `0x00_00_00_00` and `0x00_00_00_01` even if `sendCodecMeta` is false
176
+ switch (codecMetadataValue) {
177
+ case 0x00_00_00_00:
178
+ return {
179
+ type: "disabled",
180
+ };
181
+ case 0x00_00_00_01:
182
+ return {
183
+ type: "errored",
184
+ };
185
+ }
186
+ if (this.value.sendCodecMeta) {
187
+ let codec;
188
+ switch (codecMetadataValue) {
189
+ case ScrcpyAudioCodec.OPUS.metadataValue:
190
+ codec = ScrcpyAudioCodec.OPUS;
191
+ break;
192
+ case ScrcpyAudioCodec.AAC.metadataValue:
193
+ codec = ScrcpyAudioCodec.AAC;
194
+ break;
195
+ case ScrcpyAudioCodec.RAW.metadataValue:
196
+ codec = ScrcpyAudioCodec.RAW;
197
+ break;
198
+ default:
199
+ throw new Error(`Unknown audio codec metadata value: ${codecMetadataValue}`);
200
+ }
201
+ return {
202
+ type: "success",
203
+ codec,
204
+ stream: buffered.release(),
205
+ };
206
+ }
207
+ // Infer codec from `audioCodec` option
208
+ let codec;
209
+ switch (this.value.audioCodec) {
210
+ case "opus":
211
+ codec = ScrcpyAudioCodec.OPUS;
212
+ break;
213
+ case "aac":
214
+ codec = ScrcpyAudioCodec.AAC;
215
+ break;
216
+ case "raw":
217
+ codec = ScrcpyAudioCodec.RAW;
218
+ break;
219
+ }
220
+ return {
221
+ type: "success",
222
+ codec,
223
+ stream: new PushReadableStream(async (controller) => {
224
+ // Put the first 4 bytes back
225
+ await controller.enqueue(buffer);
226
+ const stream = buffered.release();
227
+ const reader = stream.getReader();
228
+ while (true) {
229
+ const { done, value } = await reader.read();
230
+ if (done) {
231
+ break;
232
+ }
233
+ await controller.enqueue(value);
234
+ }
235
+ }),
236
+ };
237
+ })();
238
+ }
239
+ serializeInjectTouchControlMessage(message) {
240
+ return ScrcpyInjectTouchControlMessage2_0.serialize(message);
241
+ }
242
+ }
243
+ export { ScrcpyOptions2_0 };
244
+ //# sourceMappingURL=2_0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2_0.js","sourceRoot":"","sources":["../../src/options/2_0.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { ReadableStream } from "@yume-chan/stream-extra";
2
+ import type { ScrcpyOptionValue } from "./types.js";
3
+ export declare enum ScrcpyVideoCodecId {
4
+ H264 = 1748121140,
5
+ H265 = 1748121141,
6
+ AV1 = 6387249
7
+ }
8
+ export interface ScrcpyVideoStreamMetadata {
9
+ deviceName?: string | undefined;
10
+ width?: number | undefined;
11
+ height?: number | undefined;
12
+ codec: ScrcpyVideoCodecId;
13
+ }
14
+ export interface ScrcpyVideoStream {
15
+ readonly stream: ReadableStream<Uint8Array>;
16
+ readonly metadata: ScrcpyVideoStreamMetadata;
17
+ }
18
+ export declare class ScrcpyAudioCodec implements ScrcpyOptionValue {
19
+ static readonly OPUS: ScrcpyAudioCodec;
20
+ static readonly AAC: ScrcpyAudioCodec;
21
+ static readonly RAW: ScrcpyAudioCodec;
22
+ readonly optionValue: string;
23
+ readonly metadataValue: number;
24
+ readonly mimeType: string;
25
+ readonly webCodecId: string;
26
+ constructor(optionValue: string, metadataValue: number, mimeType: string, webCodecId: string);
27
+ toOptionValue(): string;
28
+ }
29
+ export interface ScrcpyAudioStreamDisabledMetadata {
30
+ readonly type: "disabled";
31
+ }
32
+ export interface ScrcpyAudioStreamErroredMetadata {
33
+ readonly type: "errored";
34
+ }
35
+ export interface ScrcpyAudioStreamSuccessMetadata {
36
+ readonly type: "success";
37
+ readonly codec: ScrcpyAudioCodec;
38
+ readonly stream: ReadableStream<Uint8Array>;
39
+ }
40
+ export type ScrcpyAudioStreamMetadata = ScrcpyAudioStreamDisabledMetadata | ScrcpyAudioStreamErroredMetadata | ScrcpyAudioStreamSuccessMetadata;
41
+ export interface ScrcpyMediaStreamConfigurationPacket {
42
+ type: "configuration";
43
+ data: Uint8Array;
44
+ }
45
+ export interface ScrcpyMediaStreamDataPacket {
46
+ type: "data";
47
+ keyframe?: boolean;
48
+ pts?: bigint;
49
+ data: Uint8Array;
50
+ }
51
+ export type ScrcpyMediaStreamPacket = ScrcpyMediaStreamConfigurationPacket | ScrcpyMediaStreamDataPacket;
52
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,oBAAY,kBAAkB;IAC1B,IAAI,aAAgB;IACpB,IAAI,aAAgB;IACpB,GAAG,UAAgB;CACtB;AAED,MAAM,WAAW,yBAAyB;IACtC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAChD;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,gBAAuB,IAAI,mBAKzB;IACF,gBAAuB,GAAG,mBAKxB;IACF,gBAAuB,GAAG,mBAKxB;IAEF,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAG/B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM;IAQf,aAAa,IAAI,MAAM;CAGjC;AAED,MAAM,WAAW,iCAAiC;IAC9C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,yBAAyB,GAC/B,iCAAiC,GACjC,gCAAgC,GAChC,gCAAgC,CAAC;AAEvC,MAAM,WAAW,oCAAoC;IACjD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAC7B,oCAAoC,GACpC,2BAA2B,CAAC"}
@@ -0,0 +1,26 @@
1
+ export var ScrcpyVideoCodecId;
2
+ (function (ScrcpyVideoCodecId) {
3
+ ScrcpyVideoCodecId[ScrcpyVideoCodecId["H264"] = 1748121140] = "H264";
4
+ ScrcpyVideoCodecId[ScrcpyVideoCodecId["H265"] = 1748121141] = "H265";
5
+ ScrcpyVideoCodecId[ScrcpyVideoCodecId["AV1"] = 6387249] = "AV1";
6
+ })(ScrcpyVideoCodecId = ScrcpyVideoCodecId || (ScrcpyVideoCodecId = {}));
7
+ class ScrcpyAudioCodec {
8
+ static OPUS = new ScrcpyAudioCodec("opus", 0x6f_70_75_73, "audio/opus", "opus");
9
+ static AAC = new ScrcpyAudioCodec("aac", 0x00_61_61_63, "audio/aac", "mp4a.66");
10
+ static RAW = new ScrcpyAudioCodec("raw", 0x00_72_61_77, "audio/raw", "1");
11
+ optionValue;
12
+ metadataValue;
13
+ mimeType;
14
+ webCodecId;
15
+ constructor(optionValue, metadataValue, mimeType, webCodecId) {
16
+ this.optionValue = optionValue;
17
+ this.metadataValue = metadataValue;
18
+ this.mimeType = mimeType;
19
+ this.webCodecId = webCodecId;
20
+ }
21
+ toOptionValue() {
22
+ return this.optionValue;
23
+ }
24
+ }
25
+ export { ScrcpyAudioCodec };
26
+ //# sourceMappingURL=codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAoB,CAAA;IACpB,oEAAoB,CAAA;IACpB,+DAAmB,CAAA;AACvB,CAAC,EAJW,kBAAkB,GAAlB,kBAAkB,KAAlB,kBAAkB,QAI7B;AAcD,MAAa,gBAAgB;IAClB,MAAM,CAAU,IAAI,GAAG,IAAI,gBAAgB,CAC9C,MAAM,EACN,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAC;IACK,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CAC7C,KAAK,EACL,aAAa,EACb,WAAW,EACX,SAAS,CACZ,CAAC;IACK,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CAC7C,KAAK,EACL,aAAa,EACb,WAAW,EACX,GAAG,CACN,CAAC;IAEc,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,UAAU,CAAS;IAEnC,YACI,WAAmB,EACnB,aAAqB,EACrB,QAAgB,EAChB,UAAkB;QAElB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;;SAvCQ,gBAAgB"}
@@ -1,9 +1,13 @@
1
- export * from './1_16/index.js';
2
- export * from './1_18.js';
3
- export * from './1_21.js';
4
- export * from "./1_22/index.js";
5
- export * from "./1_23.js";
6
- export * from "./1_24.js";
7
- export * from "./1_25/index.js";
8
- export * from "./types.js";
1
+ export * from "./1_16/index.js";
2
+ export * from "./1_17.js";
3
+ export * from "./1_18.js";
4
+ export * from "./1_21.js";
5
+ export * from "./1_22/index.js";
6
+ export * from "./1_23.js";
7
+ export * from "./1_24.js";
8
+ export * from "./1_25/index.js";
9
+ export * from "./2_0.js";
10
+ export * from "./codec.js";
11
+ export * from "./latest.js";
12
+ export * from "./types.js";
9
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1,9 +1,13 @@
1
- export * from './1_16/index.js';
2
- export * from './1_18.js';
3
- export * from './1_21.js';
4
- export * from "./1_22/index.js";
5
- export * from "./1_23.js";
6
- export * from "./1_24.js";
7
- export * from "./1_25/index.js";
8
- export * from "./types.js";
1
+ export * from "./1_16/index.js";
2
+ export * from "./1_17.js";
3
+ export * from "./1_18.js";
4
+ export * from "./1_21.js";
5
+ export * from "./1_22/index.js";
6
+ export * from "./1_23.js";
7
+ export * from "./1_24.js";
8
+ export * from "./1_25/index.js";
9
+ export * from "./2_0.js";
10
+ export * from "./codec.js";
11
+ export * from "./latest.js";
12
+ export * from "./types.js";
9
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
2
+ import type { ScrcpyOptionsInit2_0 } from "./2_0.js";
3
+ import { ScrcpyOptions2_0 } from "./2_0.js";
4
+ export declare const ScrcpyLogLevel: typeof ScrcpyLogLevel1_18;
5
+ export type ScrcpyLogLevel = ScrcpyLogLevel1_18;
6
+ export declare const ScrcpyVideoOrientation: typeof ScrcpyVideoOrientation1_18;
7
+ export type ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
8
+ export type ScrcpyOptionsInitLatest = ScrcpyOptionsInit2_0;
9
+ export declare class ScrcpyOptionsLatest extends ScrcpyOptions2_0 {
10
+ }
11
+ export declare const ScrcpyLatestVersion = "2.0";
12
+ //# sourceMappingURL=latest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,cAAc,2BAAqB,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEhD,eAAO,MAAM,sBAAsB,mCAA6B,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC;AAC3D,qBAAa,mBAAoB,SAAQ,gBAAgB;CAAG;AAE5D,eAAO,MAAM,mBAAmB,QAAQ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
2
+ import { ScrcpyOptions2_0 } from "./2_0.js";
3
+ export const ScrcpyLogLevel = ScrcpyLogLevel1_18;
4
+ export const ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
5
+ export class ScrcpyOptionsLatest extends ScrcpyOptions2_0 {
6
+ }
7
+ export const ScrcpyLatestVersion = "2.0";
8
+ //# sourceMappingURL=latest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latest.js","sourceRoot":"","sources":["../../src/options/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAGjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC;AAIjE,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;CAAG;AAE5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC"}