@yume-chan/scrcpy 2.1.0 → 2.2.0

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 (180) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +3 -0
  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/scroll-controller.d.ts.map +1 -1
  8. package/esm/1_15/impl/scroll-controller.js +22 -21
  9. package/esm/1_15/impl/scroll-controller.js.map +1 -1
  10. package/esm/1_15/options.d.ts +2 -3
  11. package/esm/1_15/options.d.ts.map +1 -1
  12. package/esm/1_15/options.js +6 -15
  13. package/esm/1_15/options.js.map +1 -1
  14. package/esm/1_17/options.d.ts +2 -3
  15. package/esm/1_17/options.d.ts.map +1 -1
  16. package/esm/1_17/options.js +6 -15
  17. package/esm/1_17/options.js.map +1 -1
  18. package/esm/1_18/options.d.ts +2 -3
  19. package/esm/1_18/options.d.ts.map +1 -1
  20. package/esm/1_18/options.js +6 -15
  21. package/esm/1_18/options.js.map +1 -1
  22. package/esm/1_21/impl/set-clipboard.d.ts +2 -1
  23. package/esm/1_21/impl/set-clipboard.d.ts.map +1 -1
  24. package/esm/1_21/impl/set-clipboard.js +2 -5
  25. package/esm/1_21/impl/set-clipboard.js.map +1 -1
  26. package/esm/1_21/options.d.ts +2 -3
  27. package/esm/1_21/options.d.ts.map +1 -1
  28. package/esm/1_21/options.js +7 -21
  29. package/esm/1_21/options.js.map +1 -1
  30. package/esm/1_22/options.d.ts +2 -3
  31. package/esm/1_22/options.d.ts.map +1 -1
  32. package/esm/1_22/options.js +7 -21
  33. package/esm/1_22/options.js.map +1 -1
  34. package/esm/1_23/options.d.ts +2 -3
  35. package/esm/1_23/options.d.ts.map +1 -1
  36. package/esm/1_23/options.js +7 -21
  37. package/esm/1_23/options.js.map +1 -1
  38. package/esm/1_24/options.d.ts +2 -3
  39. package/esm/1_24/options.d.ts.map +1 -1
  40. package/esm/1_24/options.js +7 -21
  41. package/esm/1_24/options.js.map +1 -1
  42. package/esm/1_25/options.d.ts +2 -3
  43. package/esm/1_25/options.d.ts.map +1 -1
  44. package/esm/1_25/options.js +7 -21
  45. package/esm/1_25/options.js.map +1 -1
  46. package/esm/2_0/options.d.ts +2 -3
  47. package/esm/2_0/options.d.ts.map +1 -1
  48. package/esm/2_0/options.js +7 -21
  49. package/esm/2_0/options.js.map +1 -1
  50. package/esm/2_1/options.d.ts +2 -3
  51. package/esm/2_1/options.d.ts.map +1 -1
  52. package/esm/2_1/options.js +7 -21
  53. package/esm/2_1/options.js.map +1 -1
  54. package/esm/2_2/options.d.ts +2 -3
  55. package/esm/2_2/options.d.ts.map +1 -1
  56. package/esm/2_2/options.js +7 -21
  57. package/esm/2_2/options.js.map +1 -1
  58. package/esm/2_3/options.d.ts +2 -3
  59. package/esm/2_3/options.d.ts.map +1 -1
  60. package/esm/2_3/options.js +7 -21
  61. package/esm/2_3/options.js.map +1 -1
  62. package/esm/2_4/impl/uhid-output-stream.d.ts +2 -1
  63. package/esm/2_4/impl/uhid-output-stream.d.ts.map +1 -1
  64. package/esm/2_4/impl/uhid-output-stream.js +2 -5
  65. package/esm/2_4/impl/uhid-output-stream.js.map +1 -1
  66. package/esm/2_4/options.d.ts +2 -3
  67. package/esm/2_4/options.d.ts.map +1 -1
  68. package/esm/2_4/options.js +8 -27
  69. package/esm/2_4/options.js.map +1 -1
  70. package/esm/2_6/options.d.ts +2 -3
  71. package/esm/2_6/options.d.ts.map +1 -1
  72. package/esm/2_6/options.js +8 -22
  73. package/esm/2_6/options.js.map +1 -1
  74. package/esm/2_7/impl/serialize-uhid-create.d.ts +2 -2
  75. package/esm/2_7/impl/serialize-uhid-create.d.ts.map +1 -1
  76. package/esm/2_7/impl/serialize-uhid-create.js +3 -4
  77. package/esm/2_7/impl/serialize-uhid-create.js.map +1 -1
  78. package/esm/2_7/options.d.ts +2 -3
  79. package/esm/2_7/options.d.ts.map +1 -1
  80. package/esm/2_7/options.js +8 -22
  81. package/esm/2_7/options.js.map +1 -1
  82. package/esm/3_0/options.d.ts +2 -3
  83. package/esm/3_0/options.d.ts.map +1 -1
  84. package/esm/3_0/options.js +8 -22
  85. package/esm/3_0/options.js.map +1 -1
  86. package/esm/3_1/impl/serialize-uhid-create.d.ts +2 -2
  87. package/esm/3_1/impl/serialize-uhid-create.d.ts.map +1 -1
  88. package/esm/3_1/impl/serialize-uhid-create.js +3 -4
  89. package/esm/3_1/impl/serialize-uhid-create.js.map +1 -1
  90. package/esm/3_1/options.d.ts +2 -3
  91. package/esm/3_1/options.d.ts.map +1 -1
  92. package/esm/3_1/options.js +8 -22
  93. package/esm/3_1/options.js.map +1 -1
  94. package/esm/3_2/options.d.ts +2 -3
  95. package/esm/3_2/options.d.ts.map +1 -1
  96. package/esm/3_2/options.js +8 -22
  97. package/esm/3_2/options.js.map +1 -1
  98. package/esm/3_3.d.ts +8 -0
  99. package/esm/3_3.d.ts.map +1 -0
  100. package/esm/3_3.js +7 -0
  101. package/esm/3_3.js.map +1 -0
  102. package/esm/3_3_1/impl/index.d.ts +3 -0
  103. package/esm/3_3_1/impl/index.d.ts.map +1 -0
  104. package/esm/3_3_1/impl/index.js +3 -0
  105. package/esm/3_3_1/impl/index.js.map +1 -0
  106. package/esm/3_3_1/impl/prev.d.ts +2 -0
  107. package/esm/3_3_1/impl/prev.d.ts.map +1 -0
  108. package/esm/3_3_1/impl/prev.js +2 -0
  109. package/esm/3_3_1/impl/prev.js.map +1 -0
  110. package/esm/3_3_1/impl/scroll-controller.d.ts +7 -0
  111. package/esm/3_3_1/impl/scroll-controller.d.ts.map +1 -0
  112. package/esm/3_3_1/impl/scroll-controller.js +15 -0
  113. package/esm/3_3_1/impl/scroll-controller.js.map +1 -0
  114. package/esm/3_3_1/index.d.ts +2 -0
  115. package/esm/3_3_1/index.d.ts.map +1 -0
  116. package/esm/3_3_1/index.js +2 -0
  117. package/esm/3_3_1/index.js.map +1 -0
  118. package/esm/3_3_1/options.d.ts +90 -0
  119. package/esm/3_3_1/options.d.ts.map +1 -0
  120. package/esm/3_3_1/options.js +78 -0
  121. package/esm/3_3_1/options.js.map +1 -0
  122. package/esm/3_3_2.d.ts +8 -0
  123. package/esm/3_3_2.d.ts.map +1 -0
  124. package/esm/3_3_2.js +7 -0
  125. package/esm/3_3_2.js.map +1 -0
  126. package/esm/base/device-message.d.ts +10 -1
  127. package/esm/base/device-message.d.ts.map +1 -1
  128. package/esm/base/device-message.js +40 -1
  129. package/esm/base/device-message.js.map +1 -1
  130. package/esm/base/options.d.ts +2 -3
  131. package/esm/base/options.d.ts.map +1 -1
  132. package/esm/control/message-type-map.d.ts +2 -2
  133. package/esm/control/message-type-map.d.ts.map +1 -1
  134. package/esm/control/message-type-map.js.map +1 -1
  135. package/esm/index.d.ts +3 -0
  136. package/esm/index.d.ts.map +1 -1
  137. package/esm/index.js +3 -0
  138. package/esm/index.js.map +1 -1
  139. package/esm/latest.d.ts +5 -5
  140. package/esm/latest.d.ts.map +1 -1
  141. package/esm/latest.js +3 -3
  142. package/esm/latest.js.map +1 -1
  143. package/package.json +4 -4
  144. package/src/1_15/impl/clipboard-stream.ts +5 -7
  145. package/src/1_15/impl/scroll-controller.ts +22 -19
  146. package/src/1_15/options.ts +9 -21
  147. package/src/1_17/options.ts +9 -21
  148. package/src/1_18/options.ts +9 -21
  149. package/src/1_21/impl/set-clipboard.ts +2 -5
  150. package/src/1_21/options.ts +13 -28
  151. package/src/1_22/options.ts +13 -28
  152. package/src/1_23/options.ts +13 -28
  153. package/src/1_24/options.ts +13 -28
  154. package/src/1_25/options.ts +13 -28
  155. package/src/2_0/options.ts +13 -28
  156. package/src/2_1/options.ts +13 -28
  157. package/src/2_2/options.ts +13 -28
  158. package/src/2_3/options.ts +13 -28
  159. package/src/2_4/impl/uhid-output-stream.ts +3 -6
  160. package/src/2_4/options.ts +16 -35
  161. package/src/2_6/options.ts +16 -29
  162. package/src/2_7/impl/serialize-uhid-create.ts +9 -11
  163. package/src/2_7/options.ts +16 -29
  164. package/src/3_0/options.ts +16 -29
  165. package/src/3_1/impl/serialize-uhid-create.ts +11 -13
  166. package/src/3_1/options.ts +16 -29
  167. package/src/3_2/options.ts +16 -29
  168. package/src/3_3.ts +14 -0
  169. package/src/3_3_1/impl/index.ts +6 -0
  170. package/src/3_3_1/impl/prev.ts +1 -0
  171. package/src/3_3_1/impl/scroll-controller.ts +21 -0
  172. package/src/3_3_1/index.ts +1 -0
  173. package/src/3_3_1/options.ts +177 -0
  174. package/src/3_3_2.ts +14 -0
  175. package/src/base/device-message.ts +50 -1
  176. package/src/base/options.ts +3 -8
  177. package/src/control/message-type-map.ts +3 -3
  178. package/src/index.ts +3 -0
  179. package/src/latest.ts +5 -5
  180. package/tsconfig.build.tsbuildinfo +1 -1
@@ -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_2 {
3
4
  static Defaults = Defaults;
@@ -10,14 +11,18 @@ export class ScrcpyOptions2_2 {
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.videoSource === "camera") {
16
21
  this.value.control = false;
17
22
  }
18
23
  if (this.value.control && this.value.clipboardAutosync) {
19
- this.#clipboard = new ClipboardStream();
20
- this.#ackClipboardHandler = new AckClipboardHandler();
24
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
25
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
21
26
  }
22
27
  }
23
28
  serialize() {
@@ -41,25 +46,6 @@ export class ScrcpyOptions2_2 {
41
46
  parseAudioStreamMetadata(stream) {
42
47
  return parseAudioStreamMetadata(stream, this.value);
43
48
  }
44
- async parseDeviceMessage(id, stream) {
45
- if (await this.#clipboard?.parse(id, stream)) {
46
- return;
47
- }
48
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
49
- return;
50
- }
51
- throw new Error("Unknown device message");
52
- }
53
- endDeviceMessageStream(e) {
54
- if (e) {
55
- this.#clipboard?.error(e);
56
- this.#ackClipboardHandler?.error(e);
57
- }
58
- else {
59
- this.#clipboard?.close();
60
- this.#ackClipboardHandler?.close();
61
- }
62
- }
63
49
  createMediaStreamTransformer() {
64
50
  return createMediaStreamTransformer(this.value);
65
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_2/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_2/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,WAAW,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC;QAED,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_3<TVideo extends boolean> implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders {
@@ -56,6 +56,7 @@ export declare class ScrcpyOptions2_3<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_3<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;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_3/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;IAa9B,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_3/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;IAkB9B,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_3 {
3
4
  static Defaults = Defaults;
@@ -10,14 +11,18 @@ export class ScrcpyOptions2_3 {
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.videoSource === "camera") {
16
21
  this.value.control = false;
17
22
  }
18
23
  if (this.value.control && this.value.clipboardAutosync) {
19
- this.#clipboard = new ClipboardStream();
20
- this.#ackClipboardHandler = new AckClipboardHandler();
24
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
25
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
21
26
  }
22
27
  }
23
28
  serialize() {
@@ -41,25 +46,6 @@ export class ScrcpyOptions2_3 {
41
46
  parseAudioStreamMetadata(stream) {
42
47
  return parseAudioStreamMetadata(stream, this.value);
43
48
  }
44
- async parseDeviceMessage(id, stream) {
45
- if (await this.#clipboard?.parse(id, stream)) {
46
- return;
47
- }
48
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
49
- return;
50
- }
51
- throw new Error("Unknown device message");
52
- }
53
- endDeviceMessageStream(e) {
54
- if (e) {
55
- this.#clipboard?.error(e);
56
- this.#ackClipboardHandler?.error(e);
57
- }
58
- else {
59
- this.#clipboard?.close();
60
- this.#ackClipboardHandler?.close();
61
- }
62
- }
63
49
  createMediaStreamTransformer() {
64
50
  return createMediaStreamTransformer(this.value);
65
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_3/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_3/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,WAAW,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC;QAED,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"}
@@ -11,8 +11,9 @@ export declare const UHidOutputDeviceMessage: import("@yume-chan/struct").Struct
11
11
  export type UHidOutputDeviceMessage = StructValue<typeof UHidOutputDeviceMessage>;
12
12
  export declare class UHidOutputStream extends PushReadableStream<UHidOutputDeviceMessage> implements ScrcpyDeviceMessageParser {
13
13
  #private;
14
+ readonly id = 2;
14
15
  constructor();
15
- parse(id: number, stream: AsyncExactReadable): Promise<boolean>;
16
+ parse(_id: number, stream: AsyncExactReadable): Promise<undefined>;
16
17
  close(): void;
17
18
  error(e?: unknown): void;
18
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"uhid-output-stream.d.ts","sourceRoot":"","sources":["../../../src/2_4/impl/uhid-output-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAErE,eAAO,MAAM,uBAAuB;;;;;;GAMnC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAC7C,OAAO,uBAAuB,CACjC,CAAC;AAEF,qBAAa,gBACT,SAAQ,kBAAkB,CAAC,uBAAuB,CAClD,YAAW,yBAAyB;;;IAY9B,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrE,KAAK;IAIL,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO;CAGpB"}
1
+ {"version":3,"file":"uhid-output-stream.d.ts","sourceRoot":"","sources":["../../../src/2_4/impl/uhid-output-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAErE,eAAO,MAAM,uBAAuB;;;;;;GAMnC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAC7C,OAAO,uBAAuB,CACjC,CAAC;AAEF,qBAAa,gBACT,SAAQ,kBAAkB,CAAC,uBAAuB,CAClD,YAAW,yBAAyB;;IAIpC,QAAQ,CAAC,EAAE,KAAK;;IAUV,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IAKxE,KAAK;IAIL,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO;CAGpB"}
@@ -6,6 +6,7 @@ export const UHidOutputDeviceMessage = struct({
6
6
  }, { littleEndian: false });
7
7
  export class UHidOutputStream extends PushReadableStream {
8
8
  #controller;
9
+ id = 2;
9
10
  constructor() {
10
11
  let controller;
11
12
  super((controller_) => {
@@ -13,13 +14,9 @@ export class UHidOutputStream extends PushReadableStream {
13
14
  });
14
15
  this.#controller = controller;
15
16
  }
16
- async parse(id, stream) {
17
- if (id !== 2) {
18
- return false;
19
- }
17
+ async parse(_id, stream) {
20
18
  const message = await UHidOutputDeviceMessage.deserialize(stream);
21
19
  await this.#controller.enqueue(message);
22
- return true;
23
20
  }
24
21
  close() {
25
22
  this.#controller.close();
@@ -1 +1 @@
1
- {"version":3,"file":"uhid-output-stream.js","sourceRoot":"","sources":["../../../src/2_4/impl/uhid-output-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CACzC;IACI,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;CACpB,EACD,EAAE,YAAY,EAAE,KAAK,EAAE,CAC1B,CAAC;AAMF,MAAM,OAAO,gBACT,SAAQ,kBAA2C;IAGnD,WAAW,CAAwD;IAEnE;QACI,IAAI,UAAkE,CAAC;QACvE,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAClB,UAAU,GAAG,WAAW,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,MAA0B;QAC9C,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,CAAW;QACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;CACJ"}
1
+ {"version":3,"file":"uhid-output-stream.js","sourceRoot":"","sources":["../../../src/2_4/impl/uhid-output-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CACzC;IACI,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;CACpB,EACD,EAAE,YAAY,EAAE,KAAK,EAAE,CAC1B,CAAC;AAMF,MAAM,OAAO,gBACT,SAAQ,kBAA2C;IAGnD,WAAW,CAAwD;IAE1D,EAAE,GAAG,CAAC,CAAC;IAEhB;QACI,IAAI,UAAkE,CAAC;QACvE,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;YAClB,UAAU,GAAG,WAAW,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,MAA0B;QAC/C,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,CAAW;QACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;CACJ"}
@@ -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, ScrcpyUHidCreateControlMessage, ScrcpyUHidOutputDeviceMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions2_4<TVideo extends boolean> implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders {
@@ -57,6 +57,7 @@ export declare class ScrcpyOptions2_4<TVideo extends boolean> implements ScrcpyO
57
57
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
58
58
  get clipboard(): ReadableStream<string> | undefined;
59
59
  get uHidOutput(): ReadableStream<ScrcpyUHidOutputDeviceMessage> | undefined;
60
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
60
61
  constructor(init: Init<TVideo>);
61
62
  serialize(): string[];
62
63
  setListDisplays(): void;
@@ -65,8 +66,6 @@ export declare class ScrcpyOptions2_4<TVideo extends boolean> implements ScrcpyO
65
66
  parseEncoder(line: string): ScrcpyEncoder | undefined;
66
67
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
67
68
  parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
68
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
69
- endDeviceMessageStream(e?: unknown): void;
70
69
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
71
70
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
72
71
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_4/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,EAChC,8BAA8B,EAC9B,6BAA6B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAqB5C,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,UAAU,IACR,cAAc,CAAC,6BAA6B,CAAC,GAC7C,SAAS,CAEd;gBAEW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAiB9B,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;IAgBhB,sBAAsB,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI;IAYzC,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;IAIhD,iCAAiC,CAC7B,OAAO,EAAE,8BAA8B,GACxC,UAAU;CAGhB;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_4/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,EAChC,8BAA8B,EAC9B,6BAA6B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAqB5C,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,UAAU,IACR,cAAc,CAAC,6BAA6B,CAAC,GAC7C,SAAS,CAEd;IAGD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAwB9B,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;IAIhD,iCAAiC,CAC7B,OAAO,EAAE,8BAA8B,GACxC,UAAU;CAGhB;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, serializeUHidCreateControlMessage, setListDisplays, setListEncoders, UHidOutputStream, } from "./impl/index.js";
2
3
  export class ScrcpyOptions2_4 {
3
4
  static Defaults = Defaults;
@@ -14,6 +15,10 @@ export class ScrcpyOptions2_4 {
14
15
  get uHidOutput() {
15
16
  return this.#uHidOutput;
16
17
  }
18
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
19
+ get deviceMessageParsers() {
20
+ return this.#deviceMessageParsers;
21
+ }
17
22
  constructor(init) {
18
23
  this.value = { ...Defaults, ...init };
19
24
  if (this.value.videoSource === "camera") {
@@ -21,10 +26,10 @@ export class ScrcpyOptions2_4 {
21
26
  }
22
27
  if (this.value.control) {
23
28
  if (this.value.clipboardAutosync) {
24
- this.#clipboard = new ClipboardStream();
25
- this.#ackClipboardHandler = new AckClipboardHandler();
29
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
30
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
26
31
  }
27
- this.#uHidOutput = new UHidOutputStream();
32
+ this.#uHidOutput = this.#deviceMessageParsers.add(new UHidOutputStream());
28
33
  }
29
34
  }
30
35
  serialize() {
@@ -48,30 +53,6 @@ export class ScrcpyOptions2_4 {
48
53
  parseAudioStreamMetadata(stream) {
49
54
  return parseAudioStreamMetadata(stream, this.value);
50
55
  }
51
- async parseDeviceMessage(id, stream) {
52
- if (await this.#clipboard?.parse(id, stream)) {
53
- return;
54
- }
55
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
56
- return;
57
- }
58
- if (await this.#uHidOutput?.parse(id, stream)) {
59
- return;
60
- }
61
- throw new Error("Unknown device message");
62
- }
63
- endDeviceMessageStream(e) {
64
- if (e) {
65
- this.#clipboard?.error(e);
66
- this.#ackClipboardHandler?.error(e);
67
- this.#uHidOutput?.error(e);
68
- }
69
- else {
70
- this.#clipboard?.close();
71
- this.#ackClipboardHandler?.close();
72
- this.#uHidOutput?.close();
73
- }
74
- }
75
56
  createMediaStreamTransformer() {
76
57
  return createMediaStreamTransformer(this.value);
77
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_4/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_4/options.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAU9D,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,iCAAiC,EACjC,eAAe,EACf,eAAe,EACf,gBAAgB,GACnB,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,WAAW,CAA+B;IAC1C,IAAI,UAAU;QAGV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,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,WAAW,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;gBAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;YACN,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC7C,IAAI,gBAAgB,EAAE,CACzB,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;IAED,iCAAiC,CAC7B,OAAuC;QAEvC,OAAO,iCAAiC,CAAC,OAAO,CAAC,CAAC;IACtD,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, ScrcpyUHidCreateControlMessage, ScrcpyUHidOutputDeviceMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions2_6<TVideo extends boolean> implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders {
@@ -58,6 +58,7 @@ export declare class ScrcpyOptions2_6<TVideo extends boolean> implements ScrcpyO
58
58
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
59
59
  get clipboard(): ReadableStream<string> | undefined;
60
60
  get uHidOutput(): ReadableStream<ScrcpyUHidOutputDeviceMessage> | undefined;
61
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
61
62
  constructor(init: Init<TVideo>);
62
63
  serialize(): string[];
63
64
  setListDisplays(): void;
@@ -66,8 +67,6 @@ export declare class ScrcpyOptions2_6<TVideo extends boolean> implements ScrcpyO
66
67
  parseEncoder(line: string): ScrcpyEncoder | undefined;
67
68
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
68
69
  parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
69
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
70
- endDeviceMessageStream(e?: unknown): void;
71
70
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
72
71
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
73
72
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_6/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,EAChC,8BAA8B,EAC9B,6BAA6B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAqB5C,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,UAAU,IACR,cAAc,CAAC,6BAA6B,CAAC,GAC7C,SAAS,CAEd;gBAEW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAqB9B,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;IAIhD,iCAAiC,CAC7B,OAAO,EAAE,8BAA8B,GACxC,UAAU;CAGhB;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_6/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,EAChC,8BAA8B,EAC9B,6BAA6B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAqB5C,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,UAAU,IACR,cAAc,CAAC,6BAA6B,CAAC,GAC7C,SAAS,CAEd;IAGD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IA4B9B,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;IAIhD,iCAAiC,CAC7B,OAAO,EAAE,8BAA8B,GACxC,UAAU;CAGhB;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, serializeUHidCreateControlMessage, setListDisplays, setListEncoders, UHidOutputStream, } from "./impl/index.js";
2
3
  export class ScrcpyOptions2_6 {
3
4
  static Defaults = Defaults;
@@ -14,6 +15,10 @@ export class ScrcpyOptions2_6 {
14
15
  get uHidOutput() {
15
16
  return this.#uHidOutput;
16
17
  }
18
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
19
+ get deviceMessageParsers() {
20
+ return this.#deviceMessageParsers;
21
+ }
17
22
  constructor(init) {
18
23
  this.value = { ...Defaults, ...init };
19
24
  if (this.value.videoSource === "camera") {
@@ -24,10 +29,10 @@ export class ScrcpyOptions2_6 {
24
29
  }
25
30
  if (this.value.control) {
26
31
  if (this.value.clipboardAutosync) {
27
- this.#clipboard = new ClipboardStream();
28
- this.#ackClipboardHandler = new AckClipboardHandler();
32
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
33
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
29
34
  }
30
- this.#uHidOutput = new UHidOutputStream();
35
+ this.#uHidOutput = this.#deviceMessageParsers.add(new UHidOutputStream());
31
36
  }
32
37
  }
33
38
  serialize() {
@@ -51,25 +56,6 @@ export class ScrcpyOptions2_6 {
51
56
  parseAudioStreamMetadata(stream) {
52
57
  return parseAudioStreamMetadata(stream, this.value);
53
58
  }
54
- async parseDeviceMessage(id, stream) {
55
- if (await this.#clipboard?.parse(id, stream)) {
56
- return;
57
- }
58
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
59
- return;
60
- }
61
- throw new Error("Unknown device message");
62
- }
63
- endDeviceMessageStream(e) {
64
- if (e) {
65
- this.#clipboard?.error(e);
66
- this.#ackClipboardHandler?.error(e);
67
- }
68
- else {
69
- this.#clipboard?.close();
70
- this.#ackClipboardHandler?.close();
71
- }
72
- }
73
59
  createMediaStreamTransformer() {
74
60
  return createMediaStreamTransformer(this.value);
75
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_6/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_6/options.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import type { StructInit } from "@yume-chan/struct";
2
2
  import type { ScrcpyUHidCreateControlMessage } from "../../latest.js";
3
3
  export declare const UHidCreateControlMessage: import("@yume-chan/struct").Struct<{
4
- type: import("@yume-chan/struct").Field<12, never, never, number>;
4
+ type: import("@yume-chan/struct").NumberField<number>;
5
5
  id: import("@yume-chan/struct").NumberField<number>;
6
6
  name: import("@yume-chan/struct").Field<string, string, never, string>;
7
7
  data: import("@yume-chan/struct").Field<Uint8Array<ArrayBufferLike>, string, never, Uint8Array<ArrayBufferLike>>;
8
8
  }, undefined, import("@yume-chan/struct").FieldsValue<{
9
- type: import("@yume-chan/struct").Field<12, never, never, number>;
9
+ type: import("@yume-chan/struct").NumberField<number>;
10
10
  id: import("@yume-chan/struct").NumberField<number>;
11
11
  name: import("@yume-chan/struct").Field<string, string, never, string>;
12
12
  data: import("@yume-chan/struct").Field<Uint8Array<ArrayBufferLike>, string, never, Uint8Array<ArrayBufferLike>>;
@@ -1 +1 @@
1
- {"version":3,"file":"serialize-uhid-create.d.ts","sourceRoot":"","sources":["../../../src/2_7/impl/serialize-uhid-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;;;;;;;GAS7B,CAAC;AAET,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAC7C,OAAO,wBAAwB,CAClC,CAAC;AAEF,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,8BAA8B,+BAG1C"}
1
+ {"version":3,"file":"serialize-uhid-create.d.ts","sourceRoot":"","sources":["../../../src/2_7/impl/serialize-uhid-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;;;;;;;;GAQpC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAC7C,OAAO,wBAAwB,CAClC,CAAC;AAEF,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,8BAA8B,+BAG1C"}
@@ -1,11 +1,10 @@
1
1
  import { buffer, string, struct, u16, u8 } from "@yume-chan/struct";
2
- import { ScrcpyControlMessageType } from "../../base/control-message-type.js";
3
- export const UHidCreateControlMessage = /* #__PURE__ */ (() => struct({
4
- type: u8(ScrcpyControlMessageType.UHidCreate),
2
+ export const UHidCreateControlMessage = struct({
3
+ type: u8,
5
4
  id: u16,
6
5
  name: string(u8),
7
6
  data: buffer(u16),
8
- }, { littleEndian: false }))();
7
+ }, { littleEndian: false });
9
8
  export function serializeUHidCreateControlMessage(message) {
10
9
  return UHidCreateControlMessage.serialize(message);
11
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"serialize-uhid-create.js","sourceRoot":"","sources":["../../../src/2_7/impl/serialize-uhid-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAG9E,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC,CAAC,GAAG,EAAE,CAC1D,MAAM,CACF;IACI,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,UAAU,CAAC;IAC7C,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;CACpB,EACD,EAAE,YAAY,EAAE,KAAK,EAAE,CAC1B,CAAC,EAAE,CAAC;AAMT,MAAM,UAAU,iCAAiC,CAC7C,OAAuC;IAEvC,OAAO,wBAAwB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"serialize-uhid-create.js","sourceRoot":"","sources":["../../../src/2_7/impl/serialize-uhid-create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AAIpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAC1C;IACI,IAAI,EAAE,EAAE;IACR,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;CACpB,EACD,EAAE,YAAY,EAAE,KAAK,EAAE,CAC1B,CAAC;AAMF,MAAM,UAAU,iCAAiC,CAC7C,OAAuC;IAEvC,OAAO,wBAAwB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACvD,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, ScrcpyUHidCreateControlMessage, ScrcpyUHidOutputDeviceMessage } from "../latest.js";
6
6
  import type { Init } from "./impl/index.js";
7
7
  export declare class ScrcpyOptions2_7<TVideo extends boolean> implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders {
@@ -58,6 +58,7 @@ export declare class ScrcpyOptions2_7<TVideo extends boolean> implements ScrcpyO
58
58
  get controlMessageTypes(): readonly ScrcpyControlMessageType[];
59
59
  get clipboard(): ReadableStream<string> | undefined;
60
60
  get uHidOutput(): ReadableStream<ScrcpyUHidOutputDeviceMessage> | undefined;
61
+ get deviceMessageParsers(): ScrcpyDeviceMessageParsers;
61
62
  constructor(init: Init<TVideo>);
62
63
  serialize(): string[];
63
64
  setListDisplays(): void;
@@ -66,8 +67,6 @@ export declare class ScrcpyOptions2_7<TVideo extends boolean> implements ScrcpyO
66
67
  parseEncoder(line: string): ScrcpyEncoder | undefined;
67
68
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
68
69
  parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
69
- parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
70
- endDeviceMessageStream(e?: unknown): void;
71
70
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
72
71
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
73
72
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/2_7/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,EAChC,8BAA8B,EAC9B,6BAA6B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAqB5C,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,UAAU,IACR,cAAc,CAAC,6BAA6B,CAAC,GAC7C,SAAS,CAEd;gBAEW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IAqB9B,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;IAIhD,iCAAiC,CAC7B,OAAO,EAAE,8BAA8B,GACxC,UAAU;CAGhB;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_7/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,EAChC,8BAA8B,EAC9B,6BAA6B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAqB5C,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,UAAU,IACR,cAAc,CAAC,6BAA6B,CAAC,GAC7C,SAAS,CAEd;IAGD,IAAI,oBAAoB,+BAEvB;gBAEW,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;IA4B9B,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;IAIhD,iCAAiC,CAC7B,OAAO,EAAE,8BAA8B,GACxC,UAAU;CAGhB;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, serializeUHidCreateControlMessage, setListDisplays, setListEncoders, UHidOutputStream, } from "./impl/index.js";
2
3
  export class ScrcpyOptions2_7 {
3
4
  static Defaults = Defaults;
@@ -14,6 +15,10 @@ export class ScrcpyOptions2_7 {
14
15
  get uHidOutput() {
15
16
  return this.#uHidOutput;
16
17
  }
18
+ #deviceMessageParsers = new ScrcpyDeviceMessageParsers();
19
+ get deviceMessageParsers() {
20
+ return this.#deviceMessageParsers;
21
+ }
17
22
  constructor(init) {
18
23
  this.value = { ...Defaults, ...init };
19
24
  if (this.value.videoSource === "camera") {
@@ -24,10 +29,10 @@ export class ScrcpyOptions2_7 {
24
29
  }
25
30
  if (this.value.control) {
26
31
  if (this.value.clipboardAutosync) {
27
- this.#clipboard = new ClipboardStream();
28
- this.#ackClipboardHandler = new AckClipboardHandler();
32
+ this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
33
+ this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
29
34
  }
30
- this.#uHidOutput = new UHidOutputStream();
35
+ this.#uHidOutput = this.#deviceMessageParsers.add(new UHidOutputStream());
31
36
  }
32
37
  }
33
38
  serialize() {
@@ -51,25 +56,6 @@ export class ScrcpyOptions2_7 {
51
56
  parseAudioStreamMetadata(stream) {
52
57
  return parseAudioStreamMetadata(stream, this.value);
53
58
  }
54
- async parseDeviceMessage(id, stream) {
55
- if (await this.#clipboard?.parse(id, stream)) {
56
- return;
57
- }
58
- if (await this.#ackClipboardHandler?.parse(id, stream)) {
59
- return;
60
- }
61
- throw new Error("Unknown device message");
62
- }
63
- endDeviceMessageStream(e) {
64
- if (e) {
65
- this.#clipboard?.error(e);
66
- this.#ackClipboardHandler?.error(e);
67
- }
68
- else {
69
- this.#clipboard?.close();
70
- this.#ackClipboardHandler?.close();
71
- }
72
- }
73
59
  createMediaStreamTransformer() {
74
60
  return createMediaStreamTransformer(this.value);
75
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_7/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/2_7/options.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAU9D,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,iCAAiC,EACjC,eAAe,EACf,eAAe,EACf,gBAAgB,GACnB,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,WAAW,CAA+B;IAC1C,IAAI,UAAU;QAGV,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,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,WAAW,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC5C,IAAI,eAAe,EAAE,CACxB,CAAC;gBAEF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CACtD,IAAI,mBAAmB,EAAE,CAC5B,CAAC;YACN,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC7C,IAAI,gBAAgB,EAAE,CACzB,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;IAED,iCAAiC,CAC7B,OAAuC;QAEvC,OAAO,iCAAiC,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC"}