@yume-chan/scrcpy 2.0.1 → 2.1.1

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 (204) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +5 -2
  3. package/esm/1_15/impl/clipboard-stream.d.ts +2 -1
  4. package/esm/1_15/impl/clipboard-stream.d.ts.map +1 -1
  5. package/esm/1_15/impl/clipboard-stream.js +4 -7
  6. package/esm/1_15/impl/clipboard-stream.js.map +1 -1
  7. package/esm/1_15/impl/defaults.d.ts.map +1 -1
  8. package/esm/1_15/impl/defaults.js +2 -2
  9. package/esm/1_15/impl/defaults.js.map +1 -1
  10. package/esm/1_15/impl/scroll-controller.d.ts.map +1 -1
  11. package/esm/1_15/impl/scroll-controller.js +22 -21
  12. package/esm/1_15/impl/scroll-controller.js.map +1 -1
  13. package/esm/1_15/options.d.ts +2 -3
  14. package/esm/1_15/options.d.ts.map +1 -1
  15. package/esm/1_15/options.js +6 -15
  16. package/esm/1_15/options.js.map +1 -1
  17. package/esm/1_17/options.d.ts +2 -3
  18. package/esm/1_17/options.d.ts.map +1 -1
  19. package/esm/1_17/options.js +6 -15
  20. package/esm/1_17/options.js.map +1 -1
  21. package/esm/1_18/options.d.ts +2 -3
  22. package/esm/1_18/options.d.ts.map +1 -1
  23. package/esm/1_18/options.js +6 -15
  24. package/esm/1_18/options.js.map +1 -1
  25. package/esm/1_21/impl/set-clipboard.d.ts +2 -1
  26. package/esm/1_21/impl/set-clipboard.d.ts.map +1 -1
  27. package/esm/1_21/impl/set-clipboard.js +2 -5
  28. package/esm/1_21/impl/set-clipboard.js.map +1 -1
  29. package/esm/1_21/options.d.ts +2 -3
  30. package/esm/1_21/options.d.ts.map +1 -1
  31. package/esm/1_21/options.js +7 -21
  32. package/esm/1_21/options.js.map +1 -1
  33. package/esm/1_22/options.d.ts +2 -3
  34. package/esm/1_22/options.d.ts.map +1 -1
  35. package/esm/1_22/options.js +7 -21
  36. package/esm/1_22/options.js.map +1 -1
  37. package/esm/1_23/options.d.ts +2 -3
  38. package/esm/1_23/options.d.ts.map +1 -1
  39. package/esm/1_23/options.js +7 -21
  40. package/esm/1_23/options.js.map +1 -1
  41. package/esm/1_24/options.d.ts +2 -3
  42. package/esm/1_24/options.d.ts.map +1 -1
  43. package/esm/1_24/options.js +7 -21
  44. package/esm/1_24/options.js.map +1 -1
  45. package/esm/1_25/options.d.ts +2 -3
  46. package/esm/1_25/options.d.ts.map +1 -1
  47. package/esm/1_25/options.js +7 -21
  48. package/esm/1_25/options.js.map +1 -1
  49. package/esm/2_0/options.d.ts +2 -3
  50. package/esm/2_0/options.d.ts.map +1 -1
  51. package/esm/2_0/options.js +7 -21
  52. package/esm/2_0/options.js.map +1 -1
  53. package/esm/2_1/options.d.ts +2 -3
  54. package/esm/2_1/options.d.ts.map +1 -1
  55. package/esm/2_1/options.js +7 -21
  56. package/esm/2_1/options.js.map +1 -1
  57. package/esm/2_2/options.d.ts +2 -3
  58. package/esm/2_2/options.d.ts.map +1 -1
  59. package/esm/2_2/options.js +7 -21
  60. package/esm/2_2/options.js.map +1 -1
  61. package/esm/2_3/options.d.ts +2 -3
  62. package/esm/2_3/options.d.ts.map +1 -1
  63. package/esm/2_3/options.js +7 -21
  64. package/esm/2_3/options.js.map +1 -1
  65. package/esm/2_4/impl/uhid-output-stream.d.ts +2 -1
  66. package/esm/2_4/impl/uhid-output-stream.d.ts.map +1 -1
  67. package/esm/2_4/impl/uhid-output-stream.js +2 -5
  68. package/esm/2_4/impl/uhid-output-stream.js.map +1 -1
  69. package/esm/2_4/options.d.ts +2 -3
  70. package/esm/2_4/options.d.ts.map +1 -1
  71. package/esm/2_4/options.js +8 -27
  72. package/esm/2_4/options.js.map +1 -1
  73. package/esm/2_6/options.d.ts +2 -3
  74. package/esm/2_6/options.d.ts.map +1 -1
  75. package/esm/2_6/options.js +8 -22
  76. package/esm/2_6/options.js.map +1 -1
  77. package/esm/2_7/impl/serialize-uhid-create.d.ts +2 -2
  78. package/esm/2_7/impl/serialize-uhid-create.d.ts.map +1 -1
  79. package/esm/2_7/impl/serialize-uhid-create.js +3 -4
  80. package/esm/2_7/impl/serialize-uhid-create.js.map +1 -1
  81. package/esm/2_7/options.d.ts +2 -3
  82. package/esm/2_7/options.d.ts.map +1 -1
  83. package/esm/2_7/options.js +8 -22
  84. package/esm/2_7/options.js.map +1 -1
  85. package/esm/3_0/options.d.ts +2 -3
  86. package/esm/3_0/options.d.ts.map +1 -1
  87. package/esm/3_0/options.js +8 -22
  88. package/esm/3_0/options.js.map +1 -1
  89. package/esm/3_1/impl/serialize-uhid-create.d.ts +2 -2
  90. package/esm/3_1/impl/serialize-uhid-create.d.ts.map +1 -1
  91. package/esm/3_1/impl/serialize-uhid-create.js +3 -4
  92. package/esm/3_1/impl/serialize-uhid-create.js.map +1 -1
  93. package/esm/3_1/options.d.ts +2 -3
  94. package/esm/3_1/options.d.ts.map +1 -1
  95. package/esm/3_1/options.js +8 -22
  96. package/esm/3_1/options.js.map +1 -1
  97. package/esm/3_2/impl/defaults.d.ts +57 -0
  98. package/esm/3_2/impl/defaults.d.ts.map +1 -0
  99. package/esm/3_2/impl/defaults.js +6 -0
  100. package/esm/3_2/impl/defaults.js.map +1 -0
  101. package/esm/3_2/impl/index.d.ts +4 -0
  102. package/esm/3_2/impl/index.d.ts.map +1 -0
  103. package/esm/3_2/impl/index.js +3 -0
  104. package/esm/3_2/impl/index.js.map +1 -0
  105. package/esm/3_2/impl/init.d.ts +6 -0
  106. package/esm/3_2/impl/init.d.ts.map +1 -0
  107. package/esm/3_2/impl/init.js +2 -0
  108. package/esm/3_2/impl/init.js.map +1 -0
  109. package/esm/3_2/impl/prev.d.ts +2 -0
  110. package/esm/3_2/impl/prev.d.ts.map +1 -0
  111. package/esm/3_2/impl/prev.js +2 -0
  112. package/esm/3_2/impl/prev.js.map +1 -0
  113. package/esm/3_2/index.d.ts +2 -0
  114. package/esm/3_2/index.d.ts.map +1 -0
  115. package/esm/3_2/index.js +2 -0
  116. package/esm/3_2/index.js.map +1 -0
  117. package/esm/3_2/options.d.ts +90 -0
  118. package/esm/3_2/options.d.ts.map +1 -0
  119. package/esm/3_2/options.js +78 -0
  120. package/esm/3_2/options.js.map +1 -0
  121. package/esm/3_3.d.ts +8 -0
  122. package/esm/3_3.d.ts.map +1 -0
  123. package/esm/3_3.js +7 -0
  124. package/esm/3_3.js.map +1 -0
  125. package/esm/3_3_1/impl/index.d.ts +3 -0
  126. package/esm/3_3_1/impl/index.d.ts.map +1 -0
  127. package/esm/3_3_1/impl/index.js +3 -0
  128. package/esm/3_3_1/impl/index.js.map +1 -0
  129. package/esm/3_3_1/impl/prev.d.ts +2 -0
  130. package/esm/3_3_1/impl/prev.d.ts.map +1 -0
  131. package/esm/3_3_1/impl/prev.js +2 -0
  132. package/esm/3_3_1/impl/prev.js.map +1 -0
  133. package/esm/3_3_1/impl/scroll-controller.d.ts +7 -0
  134. package/esm/3_3_1/impl/scroll-controller.d.ts.map +1 -0
  135. package/esm/3_3_1/impl/scroll-controller.js +15 -0
  136. package/esm/3_3_1/impl/scroll-controller.js.map +1 -0
  137. package/esm/3_3_1/index.d.ts +2 -0
  138. package/esm/3_3_1/index.d.ts.map +1 -0
  139. package/esm/3_3_1/index.js +2 -0
  140. package/esm/3_3_1/index.js.map +1 -0
  141. package/esm/3_3_1/options.d.ts +90 -0
  142. package/esm/3_3_1/options.d.ts.map +1 -0
  143. package/esm/3_3_1/options.js +78 -0
  144. package/esm/3_3_1/options.js.map +1 -0
  145. package/esm/base/device-message.d.ts +10 -1
  146. package/esm/base/device-message.d.ts.map +1 -1
  147. package/esm/base/device-message.js +40 -1
  148. package/esm/base/device-message.js.map +1 -1
  149. package/esm/base/options.d.ts +2 -3
  150. package/esm/base/options.d.ts.map +1 -1
  151. package/esm/control/message-type-map.d.ts +2 -2
  152. package/esm/control/message-type-map.d.ts.map +1 -1
  153. package/esm/control/message-type-map.js.map +1 -1
  154. package/esm/index.d.ts +3 -0
  155. package/esm/index.d.ts.map +1 -1
  156. package/esm/index.js +3 -0
  157. package/esm/index.js.map +1 -1
  158. package/esm/latest.d.ts +5 -5
  159. package/esm/latest.d.ts.map +1 -1
  160. package/esm/latest.js +3 -3
  161. package/esm/latest.js.map +1 -1
  162. package/package.json +9 -9
  163. package/src/1_15/impl/clipboard-stream.ts +5 -7
  164. package/src/1_15/impl/defaults.ts +15 -16
  165. package/src/1_15/impl/scroll-controller.ts +22 -19
  166. package/src/1_15/options.ts +9 -21
  167. package/src/1_17/options.ts +9 -21
  168. package/src/1_18/options.ts +9 -21
  169. package/src/1_21/impl/set-clipboard.ts +2 -5
  170. package/src/1_21/options.ts +13 -28
  171. package/src/1_22/options.ts +13 -28
  172. package/src/1_23/options.ts +13 -28
  173. package/src/1_24/options.ts +13 -28
  174. package/src/1_25/options.ts +13 -28
  175. package/src/2_0/options.ts +13 -28
  176. package/src/2_1/options.ts +13 -28
  177. package/src/2_2/options.ts +13 -28
  178. package/src/2_3/options.ts +13 -28
  179. package/src/2_4/impl/uhid-output-stream.ts +3 -6
  180. package/src/2_4/options.ts +16 -35
  181. package/src/2_6/options.ts +16 -29
  182. package/src/2_7/impl/serialize-uhid-create.ts +9 -11
  183. package/src/2_7/options.ts +16 -29
  184. package/src/3_0/options.ts +16 -29
  185. package/src/3_1/impl/serialize-uhid-create.ts +11 -13
  186. package/src/3_1/options.ts +16 -29
  187. package/src/3_2/impl/defaults.ts +8 -0
  188. package/src/3_2/impl/index.ts +3 -0
  189. package/src/3_2/impl/init.ts +17 -0
  190. package/src/3_2/impl/prev.ts +1 -0
  191. package/src/3_2/index.ts +1 -0
  192. package/src/3_2/options.ts +177 -0
  193. package/src/3_3.ts +14 -0
  194. package/src/3_3_1/impl/index.ts +6 -0
  195. package/src/3_3_1/impl/prev.ts +1 -0
  196. package/src/3_3_1/impl/scroll-controller.ts +21 -0
  197. package/src/3_3_1/index.ts +1 -0
  198. package/src/3_3_1/options.ts +177 -0
  199. package/src/base/device-message.ts +50 -1
  200. package/src/base/options.ts +3 -8
  201. package/src/control/message-type-map.ts +3 -3
  202. package/src/index.ts +3 -0
  203. package/src/latest.ts +5 -5
  204. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,7 +1,7 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
3
  import type { ScrcpyControlMessageType, ScrcpyDisplay, ScrcpyEncoder, ScrcpyMediaStreamPacket, ScrcpyOptions, ScrcpyOptionsListEncoders, ScrcpyScrollController, ScrcpyVideoStream } from "../base/index.js";
4
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
5
5
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions1_22 implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders {
@@ -30,6 +30,7 @@ export declare class ScrcpyOptions1_22 implements ScrcpyOptions<Init>, ScrcpyOpt
30
30
  readonly value: Required<Init>;
31
31
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
32
32
  get clipboard(): ReadableStream<string> | undefined;
33
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
33
34
  constructor(init: Init);
34
35
  serialize(): string[];
35
36
  setListDisplays(): void;
@@ -37,8 +38,6 @@ export declare class ScrcpyOptions1_22 implements ScrcpyOptions<Init>, ScrcpyOpt
37
38
  setListEncoders(): void;
38
39
  parseEncoder(line: string): ScrcpyEncoder | undefined;
39
40
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
40
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
41
- endDeviceMessageStream(e?: unknown): void;
42
41
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
43
42
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
44
43
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_22/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;gBAIW,IAAI,EAAE,IAAI;IAStB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAIhC,kBAAkB,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC;IAYhB,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAUzC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_22/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;IAKD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI;IActB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
@@ -1,3 +1,4 @@
1
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
1
2
  import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, EncoderRegex, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, setListDisplays, setListEncoders, } from "./impl/index.js";
2
3
  export class ScrcpyOptions1_22 {
3
4
  static Defaults = Defaults;
@@ -10,11 +11,15 @@ export class ScrcpyOptions1_22 {
10
11
  return this.#clipboard;
11
12
  }
12
13
  #ackClipboardHandler;
14
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
15
+ get deviceMessageParsers() {
16
+ return this.#deviceMessageParsers;
17
+ }
13
18
  constructor(init) {
14
19
  this.value = { ...Defaults, ...init };
15
20
  if (this.value.control && this.value.clipboardAutosync) {
16
- this.#clipboard = new ClipboardStream();
17
- this.#ackClipboardHandler = new AckClipboardHandler();
21
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
22
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
18
23
  }
19
24
  }
20
25
  serialize() {
@@ -35,25 +40,6 @@ export class ScrcpyOptions1_22 {
35
40
  parseVideoStreamMetadata(stream) {
36
41
  return parseVideoStreamMetadata(this.value, stream);
37
42
  }
38
- async parseDeviceMessage(id, stream) {
39
- if (await this.#clipboard?.parse(id, stream)) {
40
- return;
41
- }
42
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
43
- return;
44
- }
45
- throw new Error("Unknown device message");
46
- }
47
- endDeviceMessageStream(e) {
48
- if (e) {
49
- this.#clipboard?.error(e);
50
- this.#ackClipboardHandler?.error(e);
51
- }
52
- else {
53
- this.#clipboard?.close();
54
- this.#ackClipboardHandler?.close();
55
- }
56
- }
57
43
  createMediaStreamTransformer() {
58
44
  return createMediaStreamTransformer(this.value);
59
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_22/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_22/options.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,qCAAqC,EACrC,kCAAkC,EAClC,eAAe,EACf,eAAe,GAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,iBAAiB;IAG1B,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC;IAE3B,KAAK,CAAiB;IAE/B,IAAI,mBAAmB;QACnB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,UAAU,CAA8B;IACxC,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAkC;IAEtD,qBAAqB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACzD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,YAAY,IAAU;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;QACN,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;QAIxB,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,qCAAqC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,oBAAqB,CAAC,mCAAmC,CACjE,OAAO,CACV,CAAC;IACN,CAAC;IAED,sBAAsB;QAClB,OAAO,sBAAsB,EAAE,CAAC;IACpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
3
  import type { ScrcpyControlMessageType, ScrcpyDisplay, ScrcpyEncoder, ScrcpyMediaStreamPacket, ScrcpyOptions, ScrcpyOptionsListEncoders, ScrcpyScrollController, ScrcpyVideoStream } from "../base/index.js";
4
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
5
5
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions1_23 implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders {
@@ -31,6 +31,7 @@ export declare class ScrcpyOptions1_23 implements ScrcpyOptions<Init>, ScrcpyOpt
31
31
  readonly value: Required<Init>;
32
32
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
33
33
  get clipboard(): ReadableStream<string> | undefined;
34
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
34
35
  constructor(init: Init);
35
36
  serialize(): string[];
36
37
  setListDisplays(): void;
@@ -38,8 +39,6 @@ export declare class ScrcpyOptions1_23 implements ScrcpyOptions<Init>, ScrcpyOpt
38
39
  setListEncoders(): void;
39
40
  parseEncoder(line: string): ScrcpyEncoder | undefined;
40
41
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
41
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
42
- endDeviceMessageStream(e?: unknown): void;
43
42
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
44
43
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
45
44
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_23/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;gBAIW,IAAI,EAAE,IAAI;IAStB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAIhC,kBAAkB,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC;IAYhB,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAUzC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_23/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;IAKD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI;IActB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
@@ -1,3 +1,4 @@
1
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
1
2
  import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, EncoderRegex, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, setListDisplays, setListEncoders, } from "./impl/index.js";
2
3
  export class ScrcpyOptions1_23 {
3
4
  static Defaults = Defaults;
@@ -10,11 +11,15 @@ export class ScrcpyOptions1_23 {
10
11
  return this.#clipboard;
11
12
  }
12
13
  #ackClipboardHandler;
14
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
15
+ get deviceMessageParsers() {
16
+ return this.#deviceMessageParsers;
17
+ }
13
18
  constructor(init) {
14
19
  this.value = { ...Defaults, ...init };
15
20
  if (this.value.control && this.value.clipboardAutosync) {
16
- this.#clipboard = new ClipboardStream();
17
- this.#ackClipboardHandler = new AckClipboardHandler();
21
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
22
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
18
23
  }
19
24
  }
20
25
  serialize() {
@@ -35,25 +40,6 @@ export class ScrcpyOptions1_23 {
35
40
  parseVideoStreamMetadata(stream) {
36
41
  return parseVideoStreamMetadata(this.value, stream);
37
42
  }
38
- async parseDeviceMessage(id, stream) {
39
- if (await this.#clipboard?.parse(id, stream)) {
40
- return;
41
- }
42
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
43
- return;
44
- }
45
- throw new Error("Unknown device message");
46
- }
47
- endDeviceMessageStream(e) {
48
- if (e) {
49
- this.#clipboard?.error(e);
50
- this.#ackClipboardHandler?.error(e);
51
- }
52
- else {
53
- this.#clipboard?.close();
54
- this.#ackClipboardHandler?.close();
55
- }
56
- }
57
43
  createMediaStreamTransformer() {
58
44
  return createMediaStreamTransformer(this.value);
59
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_23/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_23/options.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,qCAAqC,EACrC,kCAAkC,EAClC,eAAe,EACf,eAAe,GAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,iBAAiB;IAG1B,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC;IAE3B,KAAK,CAAiB;IAE/B,IAAI,mBAAmB;QACnB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,UAAU,CAA8B;IACxC,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAkC;IAEtD,qBAAqB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACzD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,YAAY,IAAU;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;QACN,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;QAIxB,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,qCAAqC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,oBAAqB,CAAC,mCAAmC,CACjE,OAAO,CACV,CAAC;IACN,CAAC;IAED,sBAAsB;QAClB,OAAO,sBAAsB,EAAE,CAAC;IACpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
3
  import type { ScrcpyControlMessageType, ScrcpyDisplay, ScrcpyEncoder, ScrcpyMediaStreamPacket, ScrcpyOptions, ScrcpyOptionsListEncoders, ScrcpyScrollController, ScrcpyVideoStream } from "../base/index.js";
4
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
5
5
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions1_24 implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders {
@@ -32,6 +32,7 @@ export declare class ScrcpyOptions1_24 implements ScrcpyOptions<Init>, ScrcpyOpt
32
32
  readonly value: Required<Init>;
33
33
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
34
34
  get clipboard(): ReadableStream<string> | undefined;
35
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
35
36
  constructor(init: Init);
36
37
  serialize(): string[];
37
38
  setListDisplays(): void;
@@ -39,8 +40,6 @@ export declare class ScrcpyOptions1_24 implements ScrcpyOptions<Init>, ScrcpyOpt
39
40
  setListEncoders(): void;
40
41
  parseEncoder(line: string): ScrcpyEncoder | undefined;
41
42
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
42
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
43
- endDeviceMessageStream(e?: unknown): void;
44
43
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
45
44
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
46
45
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_24/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;gBAIW,IAAI,EAAE,IAAI;IAStB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAIhC,kBAAkB,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC;IAYhB,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAUzC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_24/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;IAKD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI;IActB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
@@ -1,3 +1,4 @@
1
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
1
2
  import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, EncoderRegex, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, setListDisplays, setListEncoders, } from "./impl/index.js";
2
3
  export class ScrcpyOptions1_24 {
3
4
  static Defaults = Defaults;
@@ -10,11 +11,15 @@ export class ScrcpyOptions1_24 {
10
11
  return this.#clipboard;
11
12
  }
12
13
  #ackClipboardHandler;
14
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
15
+ get deviceMessageParsers() {
16
+ return this.#deviceMessageParsers;
17
+ }
13
18
  constructor(init) {
14
19
  this.value = { ...Defaults, ...init };
15
20
  if (this.value.control && this.value.clipboardAutosync) {
16
- this.#clipboard = new ClipboardStream();
17
- this.#ackClipboardHandler = new AckClipboardHandler();
21
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
22
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
18
23
  }
19
24
  }
20
25
  serialize() {
@@ -35,25 +40,6 @@ export class ScrcpyOptions1_24 {
35
40
  parseVideoStreamMetadata(stream) {
36
41
  return parseVideoStreamMetadata(this.value, stream);
37
42
  }
38
- async parseDeviceMessage(id, stream) {
39
- if (await this.#clipboard?.parse(id, stream)) {
40
- return;
41
- }
42
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
43
- return;
44
- }
45
- throw new Error("Unknown device message");
46
- }
47
- endDeviceMessageStream(e) {
48
- if (e) {
49
- this.#clipboard?.error(e);
50
- this.#ackClipboardHandler?.error(e);
51
- }
52
- else {
53
- this.#clipboard?.close();
54
- this.#ackClipboardHandler?.close();
55
- }
56
- }
57
43
  createMediaStreamTransformer() {
58
44
  return createMediaStreamTransformer(this.value);
59
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_24/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_24/options.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,qCAAqC,EACrC,kCAAkC,EAClC,eAAe,EACf,eAAe,GAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,iBAAiB;IAG1B,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC;IAE3B,KAAK,CAAiB;IAE/B,IAAI,mBAAmB;QACnB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,UAAU,CAA8B;IACxC,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAkC;IAEtD,qBAAqB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACzD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,YAAY,IAAU;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;QACN,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;QAIxB,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,qCAAqC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,oBAAqB,CAAC,mCAAmC,CACjE,OAAO,CACV,CAAC;IACN,CAAC;IAED,sBAAsB;QAClB,OAAO,sBAAsB,EAAE,CAAC;IACpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
3
  import type { ScrcpyControlMessageType, ScrcpyDisplay, ScrcpyEncoder, ScrcpyMediaStreamPacket, ScrcpyOptions, ScrcpyOptionsListEncoders, ScrcpyScrollController, ScrcpyVideoStream } from "../base/index.js";
4
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
5
5
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions1_25 implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders {
@@ -32,6 +32,7 @@ export declare class ScrcpyOptions1_25 implements ScrcpyOptions<Init>, ScrcpyOpt
32
32
  readonly value: Required<Init>;
33
33
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
34
34
  get clipboard(): ReadableStream<string> | undefined;
35
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
35
36
  constructor(init: Init);
36
37
  serialize(): string[];
37
38
  setListDisplays(): void;
@@ -39,8 +40,6 @@ export declare class ScrcpyOptions1_25 implements ScrcpyOptions<Init>, ScrcpyOpt
39
40
  setListEncoders(): void;
40
41
  parseEncoder(line: string): ScrcpyEncoder | undefined;
41
42
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
42
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
43
- endDeviceMessageStream(e?: unknown): void;
44
43
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
45
44
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
46
45
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_25/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;gBAIW,IAAI,EAAE,IAAI;IAStB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAIhC,kBAAkB,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC;IAYhB,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAUzC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/1_25/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,iBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;IAKD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI;IActB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,iBAAiB,CAAC;IAC/B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
@@ -1,3 +1,4 @@
1
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
1
2
  import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, EncoderRegex, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, setListDisplays, setListEncoders, } from "./impl/index.js";
2
3
  export class ScrcpyOptions1_25 {
3
4
  static Defaults = Defaults;
@@ -10,11 +11,15 @@ export class ScrcpyOptions1_25 {
10
11
  return this.#clipboard;
11
12
  }
12
13
  #ackClipboardHandler;
14
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
15
+ get deviceMessageParsers() {
16
+ return this.#deviceMessageParsers;
17
+ }
13
18
  constructor(init) {
14
19
  this.value = { ...Defaults, ...init };
15
20
  if (this.value.control && this.value.clipboardAutosync) {
16
- this.#clipboard = new ClipboardStream();
17
- this.#ackClipboardHandler = new AckClipboardHandler();
21
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
22
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
18
23
  }
19
24
  }
20
25
  serialize() {
@@ -35,25 +40,6 @@ export class ScrcpyOptions1_25 {
35
40
  parseVideoStreamMetadata(stream) {
36
41
  return parseVideoStreamMetadata(this.value, stream);
37
42
  }
38
- async parseDeviceMessage(id, stream) {
39
- if (await this.#clipboard?.parse(id, stream)) {
40
- return;
41
- }
42
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
43
- return;
44
- }
45
- throw new Error("Unknown device message");
46
- }
47
- endDeviceMessageStream(e) {
48
- if (e) {
49
- this.#clipboard?.error(e);
50
- this.#ackClipboardHandler?.error(e);
51
- }
52
- else {
53
- this.#clipboard?.close();
54
- this.#ackClipboardHandler?.close();
55
- }
56
- }
57
43
  createMediaStreamTransformer() {
58
44
  return createMediaStreamTransformer(this.value);
59
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_25/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/1_25/options.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,qCAAqC,EACrC,kCAAkC,EAClC,eAAe,EACf,eAAe,GAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,iBAAiB;IAG1B,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC;IAE3B,KAAK,CAAiB;IAE/B,IAAI,mBAAmB;QACnB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,UAAU,CAA8B;IACxC,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAkC;IAEtD,qBAAqB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACzD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,YAAY,IAAU;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;QACN,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;QAIxB,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,qCAAqC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,oBAAqB,CAAC,mCAAmC,CACjE,OAAO,CACV,CAAC;IACN,CAAC;IAED,sBAAsB;QAClB,OAAO,sBAAsB,EAAE,CAAC;IACpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
3
  import type { ScrcpyAudioStreamMetadata, ScrcpyControlMessageType, ScrcpyDisplay, ScrcpyEncoder, ScrcpyMediaStreamPacket, ScrcpyOptions, ScrcpyOptionsListEncoders, ScrcpyScrollController, ScrcpyVideoStream } from "../base/index.js";
4
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
5
5
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions2_0 implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders {
@@ -45,6 +45,7 @@ export declare class ScrcpyOptions2_0 implements ScrcpyOptions<Init>, ScrcpyOpti
45
45
  readonly value: Required<Init>;
46
46
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
47
47
  get clipboard(): ReadableStream<string> | undefined;
48
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
48
49
  constructor(init: Init);
49
50
  serialize(): string[];
50
51
  setListDisplays(): void;
@@ -53,8 +54,6 @@ export declare class ScrcpyOptions2_0 implements ScrcpyOptions<Init>, ScrcpyOpti
53
54
  parseEncoder(line: string): ScrcpyEncoder | undefined;
54
55
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
55
56
  parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
56
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
57
- endDeviceMessageStream(e?: unknown): void;
58
57
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
59
58
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
60
59
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_0/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EACR,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,gBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;gBAIW,IAAI,EAAE,IAAI;IAStB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,yBAAyB,CAAC;IAIxC,kBAAkB,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC;IAYhB,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAUzC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_0/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EACR,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,gBACT,YAAW,aAAa,CAAC,IAAI,CAAC,EAAE,yBAAyB;;IAEzD,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;IAKD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI;IActB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,yBAAyB,CAAC;IAI9C,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,GAAG,IAAI,CAAC;AAElB,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,IAAI,GAAG,KAAK,CAAC;CAC5B"}
@@ -1,3 +1,4 @@
1
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
1
2
  import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, parseAudioStreamMetadata, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, setListDisplays, setListEncoders, } from "./impl/index.js";
2
3
  export class ScrcpyOptions2_0 {
3
4
  static Defaults = Defaults;
@@ -10,11 +11,15 @@ export class ScrcpyOptions2_0 {
10
11
  return this.#clipboard;
11
12
  }
12
13
  #ackClipboardHandler;
14
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
15
+ get deviceMessageParsers() {
16
+ return this.#deviceMessageParsers;
17
+ }
13
18
  constructor(init) {
14
19
  this.value = { ...Defaults, ...init };
15
20
  if (this.value.control && this.value.clipboardAutosync) {
16
- this.#clipboard = new ClipboardStream();
17
- this.#ackClipboardHandler = new AckClipboardHandler();
21
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
22
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
18
23
  }
19
24
  }
20
25
  serialize() {
@@ -38,25 +43,6 @@ export class ScrcpyOptions2_0 {
38
43
  parseAudioStreamMetadata(stream) {
39
44
  return parseAudioStreamMetadata(stream, this.value);
40
45
  }
41
- async parseDeviceMessage(id, stream) {
42
- if (await this.#clipboard?.parse(id, stream)) {
43
- return;
44
- }
45
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
46
- return;
47
- }
48
- throw new Error("Unknown device message");
49
- }
50
- endDeviceMessageStream(e) {
51
- if (e) {
52
- this.#clipboard?.error(e);
53
- this.#ackClipboardHandler?.error(e);
54
- }
55
- else {
56
- this.#clipboard?.close();
57
- this.#ackClipboardHandler?.close();
58
- }
59
- }
60
46
  createMediaStreamTransformer() {
61
47
  return createMediaStreamTransformer(this.value);
62
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_0/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_0/options.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,QAAQ,EACR,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,qCAAqC,EACrC,kCAAkC,EAClC,eAAe,EACf,eAAe,GAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,gBAAgB;IAGzB,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC;IAE3B,KAAK,CAAiB;IAE/B,IAAI,mBAAmB;QACnB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,UAAU,CAA8B;IACxC,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAkC;IAEtD,qBAAqB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACzD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,YAAY,IAAU;QAClB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC;QAEtC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;QACN,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;QAIxB,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,qCAAqC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,oBAAqB,CAAC,mCAAmC,CACjE,OAAO,CACV,CAAC;IACN,CAAC;IAED,sBAAsB;QAClB,OAAO,sBAAsB,EAAE,CAAC;IACpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
3
  import type { ScrcpyAudioStreamMetadata, ScrcpyControlMessageType, ScrcpyDisplay, ScrcpyEncoder, ScrcpyMediaStreamPacket, ScrcpyOptions, ScrcpyOptionsListEncoders, ScrcpyScrollController, ScrcpyVideoStream } from "../base/index.js";
4
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
5
5
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions2_1<TVideo extends boolean> implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders {
@@ -47,6 +47,7 @@ export declare class ScrcpyOptions2_1<TVideo extends boolean> implements ScrcpyO
47
47
  readonly value: Required<Init<TVideo>>;
48
48
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
49
49
  get clipboard(): ReadableStream<string> | undefined;
50
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
50
51
  constructor(init: Init<TVideo>);
51
52
  serialize(): string[];
52
53
  setListDisplays(): void;
@@ -55,8 +56,6 @@ export declare class ScrcpyOptions2_1<TVideo extends boolean> implements ScrcpyO
55
56
  parseEncoder(line: string): ScrcpyEncoder | undefined;
56
57
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
57
58
  parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
58
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
59
- endDeviceMessageStream(e?: unknown): void;
60
59
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
61
60
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
62
61
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_1/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EACR,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,gBAAgB,CAAC,MAAM,SAAS,OAAO,CAChD,YAAW,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,yBAAyB;;IAEjE,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvC,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;gBAIW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAS9B,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,yBAAyB,CAAC;IAIxC,kBAAkB,CACpB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,aAAa,GAAG,kBAAkB,GAC3C,OAAO,CAAC,IAAI,CAAC;IAYhB,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAUzC,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,CAAC,MAAM,SAAS,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAElD,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,IAAI,CAAC,MAAM,SAAS,OAAO,GAAG,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CACtE"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_1/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EACR,yBAAyB,EACzB,wBAAwB,EACxB,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,yBAAyB,EACzB,sBAAsB,EACtB,iBAAiB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EACR,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAmB5C,qBAAa,gBAAgB,CAAC,MAAM,SAAS,OAAO,CAChD,YAAW,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,yBAAyB;;IAEjE,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAY;IAEpC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvC,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAGD,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAElD;IAKD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAc9B,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,IAAI;IAIvB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,eAAe;IAIf,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC;IAItC,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,yBAAyB,CAAC;IAI9C,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B;IAID,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU;IAIb,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS;IAIzB,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAM3C,sBAAsB,IAAI,sBAAsB;CAGnD;AAED,KAAK,KAAK,CAAC,MAAM,SAAS,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAElD,yBAAiB,gBAAgB,CAAC;IAC9B,KAAY,IAAI,CAAC,MAAM,SAAS,OAAO,GAAG,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CACtE"}
@@ -1,3 +1,4 @@
1
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
1
2
  import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, parseAudioStreamMetadata, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, setListDisplays, setListEncoders, } from "./impl/index.js";
2
3
  export class ScrcpyOptions2_1 {
3
4
  static Defaults = Defaults;
@@ -10,11 +11,15 @@ export class ScrcpyOptions2_1 {
10
11
  return this.#clipboard;
11
12
  }
12
13
  #ackClipboardHandler;
14
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
15
+ get deviceMessageParsers() {
16
+ return this.#deviceMessageParsers;
17
+ }
13
18
  constructor(init) {
14
19
  this.value = { ...Defaults, ...init };
15
20
  if (this.value.control && this.value.clipboardAutosync) {
16
- this.#clipboard = new ClipboardStream();
17
- this.#ackClipboardHandler = new AckClipboardHandler();
21
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
22
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
18
23
  }
19
24
  }
20
25
  serialize() {
@@ -38,25 +43,6 @@ export class ScrcpyOptions2_1 {
38
43
  parseAudioStreamMetadata(stream) {
39
44
  return parseAudioStreamMetadata(stream, this.value);
40
45
  }
41
- async parseDeviceMessage(id, stream) {
42
- if (await this.#clipboard?.parse(id, stream)) {
43
- return;
44
- }
45
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
46
- return;
47
- }
48
- throw new Error("Unknown device message");
49
- }
50
- endDeviceMessageStream(e) {
51
- if (e) {
52
- this.#clipboard?.error(e);
53
- this.#ackClipboardHandler?.error(e);
54
- }
55
- else {
56
- this.#clipboard?.close();
57
- this.#ackClipboardHandler?.close();
58
- }
59
- }
60
46
  createMediaStreamTransformer() {
61
47
  return createMediaStreamTransformer(this.value);
62
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_1/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_1/options.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,OAAO,EACH,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,QAAQ,EACR,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,qCAAqC,EACrC,kCAAkC,EAClC,eAAe,EACf,eAAe,GAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,OAAO,gBAAgB;IAGzB,MAAM,CAAU,QAAQ,GAAG,QAAQ,CAAC;IAE3B,KAAK,CAAyB;IAEvC,IAAI,mBAAmB;QACnB,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAED,UAAU,CAA8B;IACxC,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAkC;IAEtD,qBAAqB,GAAG,IAAI,0BAA0B,EAAE,CAAC;IACzD,IAAI,oBAAoB;QACpB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,YAAY,IAAkB;QAC1B,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAW,CAAC;QAE/C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;YAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;QACN,CAAC;IACL,CAAC;IAED,SAAS;QACL,OAAO,SAAS,CAAgB,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe;QACX,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;QAIxB,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,kCAAkC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,qCAAqC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,oBAAqB,CAAC,mCAAmC,CACjE,OAAO,CACV,CAAC;IACN,CAAC;IAED,sBAAsB;QAClB,OAAO,sBAAsB,EAAE,CAAC;IACpC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
3
  import type { ScrcpyAudioStreamMetadata, ScrcpyControlMessageType, ScrcpyDisplay, ScrcpyEncoder, ScrcpyMediaStreamPacket, ScrcpyOptions, ScrcpyOptionsListEncoders, ScrcpyScrollController, ScrcpyVideoStream } from "../base/index.js";
4
+ import { ScrcpyDeviceMessageParsers } from "../base/index.js";
5
5
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions2_2<TVideo extends boolean> implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders {
@@ -56,6 +56,7 @@ export declare class ScrcpyOptions2_2<TVideo extends boolean> implements ScrcpyO
56
56
  readonly value: Required<Init<TVideo>>;
57
57
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
58
58
  get clipboard(): ReadableStream<string> | undefined;
59
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
59
60
  constructor(init: Init<TVideo>);
60
61
  serialize(): string[];
61
62
  setListDisplays(): void;
@@ -64,8 +65,6 @@ export declare class ScrcpyOptions2_2<TVideo extends boolean> implements ScrcpyO
64
65
  parseEncoder(line: string): ScrcpyEncoder | undefined;
65
66
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
66
67
  parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
67
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
68
- endDeviceMessageStream(e?: unknown): void;
69
68
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
70
69
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
71
70
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;