@yume-chan/scrcpy 0.0.23 → 0.0.24

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 (173) hide show
  1. package/CHANGELOG.json +21 -0
  2. package/CHANGELOG.md +11 -1
  3. package/LICENSE +1 -1
  4. package/esm/codec/av1.d.ts +364 -0
  5. package/esm/codec/av1.d.ts.map +1 -1
  6. package/esm/codec/av1.js +591 -0
  7. package/esm/codec/av1.js.map +1 -1
  8. package/esm/codec/nalu.d.ts +0 -9
  9. package/esm/codec/nalu.d.ts.map +1 -1
  10. package/esm/codec/nalu.js +56 -129
  11. package/esm/codec/nalu.js.map +1 -1
  12. package/esm/control/{basic.d.ts → empty.d.ts} +2 -2
  13. package/esm/control/empty.d.ts.map +1 -0
  14. package/esm/control/empty.js +3 -0
  15. package/esm/control/empty.js.map +1 -0
  16. package/esm/control/index.d.ts +1 -1
  17. package/esm/control/index.js +1 -1
  18. package/esm/control/rotate-device.js +2 -2
  19. package/esm/control/serializer.d.ts +2 -0
  20. package/esm/control/serializer.d.ts.map +1 -1
  21. package/esm/control/serializer.js +10 -4
  22. package/esm/control/serializer.js.map +1 -1
  23. package/esm/control/type.js +1 -1
  24. package/esm/control/type.js.map +1 -1
  25. package/esm/control/writer.d.ts +4 -1
  26. package/esm/control/writer.d.ts.map +1 -1
  27. package/esm/control/writer.js +12 -2
  28. package/esm/control/writer.js.map +1 -1
  29. package/esm/index.d.ts +0 -1
  30. package/esm/index.d.ts.map +1 -1
  31. package/esm/index.js +0 -1
  32. package/esm/index.js.map +1 -1
  33. package/esm/options/1_16/float.d.ts +6 -0
  34. package/esm/options/1_16/float.d.ts.map +1 -0
  35. package/esm/options/1_16/{float-to-uint16.js → float.js} +7 -6
  36. package/esm/options/1_16/float.js.map +1 -0
  37. package/esm/options/1_16/index.d.ts +1 -1
  38. package/esm/options/1_16/index.d.ts.map +1 -1
  39. package/esm/options/1_16/index.js +1 -1
  40. package/esm/options/1_16/index.js.map +1 -1
  41. package/esm/options/1_16/message.d.ts +4 -0
  42. package/esm/options/1_16/message.d.ts.map +1 -1
  43. package/esm/options/1_16/message.js +7 -4
  44. package/esm/options/1_16/message.js.map +1 -1
  45. package/esm/options/1_16/options.d.ts +13 -4
  46. package/esm/options/1_16/options.d.ts.map +1 -1
  47. package/esm/options/1_16/options.js +43 -15
  48. package/esm/options/1_16/options.js.map +1 -1
  49. package/esm/options/1_17.d.ts +2 -3
  50. package/esm/options/1_17.d.ts.map +1 -1
  51. package/esm/options/1_17.js +3 -6
  52. package/esm/options/1_17.js.map +1 -1
  53. package/esm/options/1_18.d.ts +2 -3
  54. package/esm/options/1_18.d.ts.map +1 -1
  55. package/esm/options/1_18.js +4 -24
  56. package/esm/options/1_18.js.map +1 -1
  57. package/esm/options/1_21.d.ts +9 -4
  58. package/esm/options/1_21.d.ts.map +1 -1
  59. package/esm/options/1_21.js +30 -7
  60. package/esm/options/1_21.js.map +1 -1
  61. package/esm/options/1_22/options.d.ts +2 -3
  62. package/esm/options/1_22/options.d.ts.map +1 -1
  63. package/esm/options/1_22/options.js +4 -7
  64. package/esm/options/1_22/options.js.map +1 -1
  65. package/esm/options/1_23.d.ts +2 -3
  66. package/esm/options/1_23.d.ts.map +1 -1
  67. package/esm/options/1_23.js +4 -7
  68. package/esm/options/1_23.js.map +1 -1
  69. package/esm/options/1_24.d.ts +2 -3
  70. package/esm/options/1_24.d.ts.map +1 -1
  71. package/esm/options/1_24.js +3 -6
  72. package/esm/options/1_24.js.map +1 -1
  73. package/esm/options/1_25/options.d.ts +2 -3
  74. package/esm/options/1_25/options.d.ts.map +1 -1
  75. package/esm/options/1_25/options.js +3 -6
  76. package/esm/options/1_25/options.js.map +1 -1
  77. package/esm/options/1_25/scroll.d.ts +3 -2
  78. package/esm/options/1_25/scroll.d.ts.map +1 -1
  79. package/esm/options/1_25/scroll.js +8 -7
  80. package/esm/options/1_25/scroll.js.map +1 -1
  81. package/esm/options/2_0.d.ts +10 -8
  82. package/esm/options/2_0.d.ts.map +1 -1
  83. package/esm/options/2_0.js +68 -74
  84. package/esm/options/2_0.js.map +1 -1
  85. package/esm/options/2_1.d.ts +4 -5
  86. package/esm/options/2_1.d.ts.map +1 -1
  87. package/esm/options/2_1.js +3 -6
  88. package/esm/options/2_1.js.map +1 -1
  89. package/esm/options/2_2.d.ts +4 -5
  90. package/esm/options/2_2.d.ts.map +1 -1
  91. package/esm/options/2_2.js +3 -6
  92. package/esm/options/2_2.js.map +1 -1
  93. package/esm/options/2_3.d.ts +59 -0
  94. package/esm/options/2_3.d.ts.map +1 -0
  95. package/esm/options/2_3.js +47 -0
  96. package/esm/options/2_3.js.map +1 -0
  97. package/esm/options/codec.d.ts +1 -0
  98. package/esm/options/codec.d.ts.map +1 -1
  99. package/esm/options/codec.js +1 -0
  100. package/esm/options/codec.js.map +1 -1
  101. package/esm/options/index.d.ts +1 -0
  102. package/esm/options/index.d.ts.map +1 -1
  103. package/esm/options/index.js +1 -0
  104. package/esm/options/index.js.map +1 -1
  105. package/esm/options/latest.d.ts +4 -4
  106. package/esm/options/latest.js +2 -2
  107. package/esm/options/types.d.ts +30 -32
  108. package/esm/options/types.d.ts.map +1 -1
  109. package/esm/options/types.js +77 -26
  110. package/esm/options/types.js.map +1 -1
  111. package/package.json +11 -11
  112. package/src/codec/av1.ts +670 -0
  113. package/src/codec/nalu.ts +67 -154
  114. package/src/control/empty.ts +3 -0
  115. package/src/control/index.ts +1 -1
  116. package/src/control/rotate-device.ts +2 -2
  117. package/src/control/serializer.ts +12 -4
  118. package/src/control/type.ts +1 -1
  119. package/src/control/writer.ts +16 -6
  120. package/src/index.ts +0 -1
  121. package/src/options/1_16/{float-to-uint16.ts → float.ts} +8 -6
  122. package/src/options/1_16/index.ts +1 -1
  123. package/src/options/1_16/message.ts +8 -4
  124. package/src/options/1_16/options.ts +68 -28
  125. package/src/options/1_17.ts +3 -9
  126. package/src/options/1_18.ts +3 -36
  127. package/src/options/1_21.ts +40 -11
  128. package/src/options/1_22/options.ts +4 -10
  129. package/src/options/1_23.ts +4 -10
  130. package/src/options/1_24.ts +3 -9
  131. package/src/options/1_25/options.ts +3 -9
  132. package/src/options/1_25/scroll.ts +10 -11
  133. package/src/options/2_0.ts +87 -92
  134. package/src/options/2_1.ts +3 -9
  135. package/src/options/2_2.ts +3 -9
  136. package/src/options/2_3.ts +70 -0
  137. package/src/options/codec.ts +6 -0
  138. package/src/options/index.ts +1 -0
  139. package/src/options/latest.ts +4 -4
  140. package/src/options/types.ts +89 -98
  141. package/tsconfig.build.tsbuildinfo +1 -1
  142. package/esm/control/basic.d.ts.map +0 -1
  143. package/esm/control/basic.js +0 -3
  144. package/esm/control/basic.js.map +0 -1
  145. package/esm/device-message/ack-clipboard.d.ts +0 -9
  146. package/esm/device-message/ack-clipboard.d.ts.map +0 -1
  147. package/esm/device-message/ack-clipboard.js +0 -6
  148. package/esm/device-message/ack-clipboard.js.map +0 -1
  149. package/esm/device-message/clipboard.d.ts +0 -10
  150. package/esm/device-message/clipboard.d.ts.map +0 -1
  151. package/esm/device-message/clipboard.js +0 -7
  152. package/esm/device-message/clipboard.js.map +0 -1
  153. package/esm/device-message/index.d.ts +0 -5
  154. package/esm/device-message/index.d.ts.map +0 -1
  155. package/esm/device-message/index.js +0 -5
  156. package/esm/device-message/index.js.map +0 -1
  157. package/esm/device-message/stream.d.ts +0 -8
  158. package/esm/device-message/stream.d.ts.map +0 -1
  159. package/esm/device-message/stream.js +0 -35
  160. package/esm/device-message/stream.js.map +0 -1
  161. package/esm/device-message/type.d.ts +0 -5
  162. package/esm/device-message/type.d.ts.map +0 -1
  163. package/esm/device-message/type.js +0 -7
  164. package/esm/device-message/type.js.map +0 -1
  165. package/esm/options/1_16/float-to-uint16.d.ts +0 -5
  166. package/esm/options/1_16/float-to-uint16.d.ts.map +0 -1
  167. package/esm/options/1_16/float-to-uint16.js.map +0 -1
  168. package/src/control/basic.ts +0 -3
  169. package/src/device-message/ack-clipboard.ts +0 -10
  170. package/src/device-message/clipboard.ts +0 -11
  171. package/src/device-message/index.ts +0 -4
  172. package/src/device-message/stream.ts +0 -49
  173. package/src/device-message/type.ts +0 -5
@@ -0,0 +1,59 @@
1
+ import type { ReadableStream } from "@yume-chan/stream-extra";
2
+ import type { ValueOrPromise } from "@yume-chan/struct";
3
+ import type { ScrcpyOptionsInit2_2 } from "./2_2.js";
4
+ import type { ScrcpyAudioStreamMetadata } from "./codec.js";
5
+ import { ScrcpyOptions } from "./types.js";
6
+ export interface ScrcpyOptionsInit2_3 extends Omit<ScrcpyOptionsInit2_2, "audioCodec"> {
7
+ audioCodec?: "raw" | "opus" | "aac" | "flac";
8
+ }
9
+ export declare class ScrcpyOptions2_3 extends ScrcpyOptions<ScrcpyOptionsInit2_3> {
10
+ static readonly DEFAULTS: {
11
+ readonly videoSource: "display";
12
+ readonly displayId: 0;
13
+ readonly cameraId: undefined;
14
+ readonly cameraSize: undefined;
15
+ readonly cameraFacing: undefined;
16
+ readonly cameraAr: undefined;
17
+ readonly cameraFps: undefined;
18
+ readonly cameraHighSpeed: false;
19
+ readonly listCameras: false;
20
+ readonly listCameraSizes: false;
21
+ readonly video: true;
22
+ readonly audioSource: "output";
23
+ readonly scid: import("./2_0.js").ScrcpyInstanceId;
24
+ readonly videoCodec: "h264";
25
+ readonly videoBitRate: 8000000;
26
+ readonly videoCodecOptions: import("./index.js").CodecOptions;
27
+ readonly videoEncoder: undefined;
28
+ readonly audio: true;
29
+ readonly audioCodec: "opus";
30
+ readonly audioBitRate: 128000;
31
+ readonly audioCodecOptions: import("./index.js").CodecOptions;
32
+ readonly audioEncoder: undefined;
33
+ readonly listEncoders: false;
34
+ readonly listDisplays: false;
35
+ readonly sendCodecMeta: true;
36
+ readonly logLevel: import("./1_18.js").ScrcpyLogLevel1_18.Debug;
37
+ readonly maxSize: 0;
38
+ readonly maxFps: 0;
39
+ readonly lockVideoOrientation: import("./1_18.js").ScrcpyVideoOrientation1_18.Unlocked;
40
+ readonly tunnelForward: false;
41
+ readonly crop: undefined;
42
+ readonly sendFrameMeta: true;
43
+ readonly control: true;
44
+ readonly showTouches: false;
45
+ readonly stayAwake: false;
46
+ readonly powerOffOnClose: false;
47
+ readonly clipboardAutosync: true;
48
+ readonly downsizeOnError: true;
49
+ readonly sendDeviceMeta: true;
50
+ readonly sendDummyByte: true;
51
+ readonly cleanup: true;
52
+ readonly powerOn: true;
53
+ };
54
+ get defaults(): Required<ScrcpyOptionsInit2_3>;
55
+ constructor(init: ScrcpyOptionsInit2_3);
56
+ serialize(): string[];
57
+ parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyAudioStreamMetadata>;
58
+ }
59
+ //# sourceMappingURL=2_3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2_3.d.ts","sourceRoot":"","sources":["../../src/options/2_3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,oBACb,SAAQ,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAChD,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CAChD;AAED,qBAAa,gBAAiB,SAAQ,aAAa,CAAC,oBAAoB,CAAC;IACrE,MAAM,CAAC,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAE4B;IAEpD,IAAa,QAAQ,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAEtD;gBAEW,IAAI,EAAE,oBAAoB;IAI7B,SAAS,IAAI,MAAM,EAAE;IAIrB,wBAAwB,CAC7B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,yBAAyB,CAAC;CAkC/C"}
@@ -0,0 +1,47 @@
1
+ import { ScrcpyOptions1_21 } from "./1_21.js";
2
+ import { ScrcpyOptions2_0 } from "./2_0.js";
3
+ import { ScrcpyOptions2_2 } from "./2_2.js";
4
+ import { ScrcpyAudioCodec } from "./codec.js";
5
+ import { ScrcpyOptions } from "./types.js";
6
+ export class ScrcpyOptions2_3 extends ScrcpyOptions {
7
+ static DEFAULTS = {
8
+ ...ScrcpyOptions2_2.DEFAULTS,
9
+ };
10
+ get defaults() {
11
+ return ScrcpyOptions2_3.DEFAULTS;
12
+ }
13
+ constructor(init) {
14
+ super(ScrcpyOptions2_2, init, ScrcpyOptions2_3.DEFAULTS);
15
+ }
16
+ serialize() {
17
+ return ScrcpyOptions1_21.serialize(this.value, this.defaults);
18
+ }
19
+ parseAudioStreamMetadata(stream) {
20
+ return ScrcpyOptions2_0.parseAudioMetadata(stream, this.value.sendCodecMeta, (value) => {
21
+ switch (value) {
22
+ case ScrcpyAudioCodec.RAW.metadataValue:
23
+ return ScrcpyAudioCodec.RAW;
24
+ case ScrcpyAudioCodec.OPUS.metadataValue:
25
+ return ScrcpyAudioCodec.OPUS;
26
+ case ScrcpyAudioCodec.AAC.metadataValue:
27
+ return ScrcpyAudioCodec.AAC;
28
+ case ScrcpyAudioCodec.FLAC.metadataValue:
29
+ return ScrcpyAudioCodec.FLAC;
30
+ default:
31
+ throw new Error(`Unknown audio codec metadata value: ${value}`);
32
+ }
33
+ }, () => {
34
+ switch (this.value.audioCodec) {
35
+ case "raw":
36
+ return ScrcpyAudioCodec.RAW;
37
+ case "opus":
38
+ return ScrcpyAudioCodec.OPUS;
39
+ case "aac":
40
+ return ScrcpyAudioCodec.AAC;
41
+ case "flac":
42
+ return ScrcpyAudioCodec.FLAC;
43
+ }
44
+ });
45
+ }
46
+ }
47
+ //# sourceMappingURL=2_3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"2_3.js","sourceRoot":"","sources":["../../src/options/2_3.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO3C,MAAM,OAAO,gBAAiB,SAAQ,aAAmC;IACrE,MAAM,CAAU,QAAQ,GAAG;QACvB,GAAG,gBAAgB,CAAC,QAAQ;KACmB,CAAC;IAEpD,IAAa,QAAQ;QACjB,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACrC,CAAC;IAED,YAAY,IAA0B;QAClC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEQ,SAAS;QACd,OAAO,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAEQ,wBAAwB,CAC7B,MAAkC;QAElC,OAAO,gBAAgB,CAAC,kBAAkB,CACtC,MAAM,EACN,IAAI,CAAC,KAAK,CAAC,aAAa,EACxB,CAAC,KAAK,EAAE,EAAE;YACN,QAAQ,KAAK,EAAE,CAAC;gBACZ,KAAK,gBAAgB,CAAC,GAAG,CAAC,aAAa;oBACnC,OAAO,gBAAgB,CAAC,GAAG,CAAC;gBAChC,KAAK,gBAAgB,CAAC,IAAI,CAAC,aAAa;oBACpC,OAAO,gBAAgB,CAAC,IAAI,CAAC;gBACjC,KAAK,gBAAgB,CAAC,GAAG,CAAC,aAAa;oBACnC,OAAO,gBAAgB,CAAC,GAAG,CAAC;gBAChC,KAAK,gBAAgB,CAAC,IAAI,CAAC,aAAa;oBACpC,OAAO,gBAAgB,CAAC,IAAI,CAAC;gBACjC;oBACI,MAAM,IAAI,KAAK,CACX,uCAAuC,KAAK,EAAE,CACjD,CAAC;YACV,CAAC;QACL,CAAC,EACD,GAAG,EAAE;YACD,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBAC5B,KAAK,KAAK;oBACN,OAAO,gBAAgB,CAAC,GAAG,CAAC;gBAChC,KAAK,MAAM;oBACP,OAAO,gBAAgB,CAAC,IAAI,CAAC;gBACjC,KAAK,KAAK;oBACN,OAAO,gBAAgB,CAAC,GAAG,CAAC;gBAChC,KAAK,MAAM;oBACP,OAAO,gBAAgB,CAAC,IAAI,CAAC;YACrC,CAAC;QACL,CAAC,CACJ,CAAC;IACN,CAAC"}
@@ -18,6 +18,7 @@ export interface ScrcpyVideoStream {
18
18
  export declare class ScrcpyAudioCodec implements ScrcpyOptionValue {
19
19
  static readonly OPUS: ScrcpyAudioCodec;
20
20
  static readonly AAC: ScrcpyAudioCodec;
21
+ static readonly FLAC: ScrcpyAudioCodec;
21
22
  static readonly RAW: ScrcpyAudioCodec;
22
23
  readonly optionValue: string;
23
24
  readonly metadataValue: number;
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,oBAAY,kBAAkB;IAC1B,IAAI,aAAgB;IACpB,IAAI,aAAgB;IACpB,GAAG,UAAgB;CACtB;AAED,MAAM,WAAW,yBAAyB;IACtC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAChD;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,MAAM,CAAC,QAAQ,CAAC,IAAI,mBAKlB;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAKjB;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAKjB;IAEF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAGxB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM;IAQtB,aAAa,IAAI,MAAM;CAG1B;AAED,MAAM,WAAW,iCAAiC;IAC9C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,yBAAyB,GAC/B,iCAAiC,GACjC,gCAAgC,GAChC,gCAAgC,CAAC;AAEvC,MAAM,WAAW,oCAAoC;IACjD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAC7B,oCAAoC,GACpC,2BAA2B,CAAC"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,oBAAY,kBAAkB;IAC1B,IAAI,aAAgB;IACpB,IAAI,aAAgB;IACpB,GAAG,UAAgB;CACtB;AAED,MAAM,WAAW,yBAAyB;IACtC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,kBAAkB,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAChD;AAED,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,MAAM,CAAC,QAAQ,CAAC,IAAI,mBAKlB;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAKjB;IACF,MAAM,CAAC,QAAQ,CAAC,IAAI,mBAKlB;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,mBAKjB;IAEF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAGxB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM;IAQtB,aAAa,IAAI,MAAM;CAG1B;AAED,MAAM,WAAW,iCAAiC;IAC9C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,gCAAgC;IAC7C,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED,MAAM,MAAM,yBAAyB,GAC/B,iCAAiC,GACjC,gCAAgC,GAChC,gCAAgC,CAAC;AAEvC,MAAM,WAAW,oCAAoC;IACjD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,MAAM,uBAAuB,GAC7B,oCAAoC,GACpC,2BAA2B,CAAC"}
@@ -7,6 +7,7 @@ export var ScrcpyVideoCodecId;
7
7
  export class ScrcpyAudioCodec {
8
8
  static OPUS = new ScrcpyAudioCodec("opus", 0x6f_70_75_73, "audio/opus", "opus");
9
9
  static AAC = new ScrcpyAudioCodec("aac", 0x00_61_61_63, "audio/aac", "mp4a.66");
10
+ static FLAC = new ScrcpyAudioCodec("flac", 0x66_6c_61_63, "audio/flac", "flac");
10
11
  static RAW = new ScrcpyAudioCodec("raw", 0x00_72_61_77, "audio/raw", "");
11
12
  optionValue;
12
13
  metadataValue;
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAoB,CAAA;IACpB,oEAAoB,CAAA;IACpB,+DAAmB,CAAA;AACvB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAcD,MAAM,OAAO,gBAAgB;IACzB,MAAM,CAAU,IAAI,GAAG,IAAI,gBAAgB,CACvC,MAAM,EACN,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,SAAS,CACZ,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,EAAE,CACL,CAAC;IAEO,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,UAAU,CAAS;IAE5B,YACI,WAAmB,EACnB,aAAqB,EACrB,QAAgB,EAChB,UAAkB;QAElB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../../src/options/codec.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAoB,CAAA;IACpB,oEAAoB,CAAA;IACpB,+DAAmB,CAAA;AACvB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAcD,MAAM,OAAO,gBAAgB;IACzB,MAAM,CAAU,IAAI,GAAG,IAAI,gBAAgB,CACvC,MAAM,EACN,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,SAAS,CACZ,CAAC;IACF,MAAM,CAAU,IAAI,GAAG,IAAI,gBAAgB,CACvC,MAAM,EACN,aAAa,EACb,YAAY,EACZ,MAAM,CACT,CAAC;IACF,MAAM,CAAU,GAAG,GAAG,IAAI,gBAAgB,CACtC,KAAK,EACL,aAAa,EACb,WAAW,EACX,EAAE,CACL,CAAC;IAEO,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,QAAQ,CAAS;IACjB,UAAU,CAAS;IAE5B,YACI,WAAmB,EACnB,aAAqB,EACrB,QAAgB,EAChB,UAAkB;QAElB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC"}
@@ -9,6 +9,7 @@ export * from "./1_25/index.js";
9
9
  export * from "./2_0.js";
10
10
  export * from "./2_1.js";
11
11
  export * from "./2_2.js";
12
+ export * from "./2_3.js";
12
13
  export * from "./codec.js";
13
14
  export * from "./latest.js";
14
15
  export * from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -9,6 +9,7 @@ export * from "./1_25/index.js";
9
9
  export * from "./2_0.js";
10
10
  export * from "./2_1.js";
11
11
  export * from "./2_2.js";
12
+ export * from "./2_3.js";
12
13
  export * from "./codec.js";
13
14
  export * from "./latest.js";
14
15
  export * from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/options/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
2
- import type { ScrcpyOptionsInit2_2 } from "./2_2.js";
3
- import { ScrcpyOptions2_2 } from "./2_2.js";
2
+ import type { ScrcpyOptionsInit2_3 } from "./2_3.js";
3
+ import { ScrcpyOptions2_3 } from "./2_3.js";
4
4
  export declare const ScrcpyLogLevel: typeof ScrcpyLogLevel1_18;
5
5
  export type ScrcpyLogLevel = ScrcpyLogLevel1_18;
6
6
  export declare const ScrcpyVideoOrientation: typeof ScrcpyVideoOrientation1_18;
7
7
  export type ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
8
- export type ScrcpyOptionsInitLatest = ScrcpyOptionsInit2_2;
9
- export declare class ScrcpyOptionsLatest extends ScrcpyOptions2_2 {
8
+ export type ScrcpyOptionsInitLatest = ScrcpyOptionsInit2_3;
9
+ export declare class ScrcpyOptionsLatest extends ScrcpyOptions2_3 {
10
10
  }
11
11
  //# sourceMappingURL=latest.d.ts.map
@@ -1,7 +1,7 @@
1
1
  import { ScrcpyLogLevel1_18, ScrcpyVideoOrientation1_18 } from "./1_18.js";
2
- import { ScrcpyOptions2_2 } from "./2_2.js";
2
+ import { ScrcpyOptions2_3 } from "./2_3.js";
3
3
  export const ScrcpyLogLevel = ScrcpyLogLevel1_18;
4
4
  export const ScrcpyVideoOrientation = ScrcpyVideoOrientation1_18;
5
- export class ScrcpyOptionsLatest extends ScrcpyOptions2_2 {
5
+ export class ScrcpyOptionsLatest extends ScrcpyOptions2_3 {
6
6
  }
7
7
  //# sourceMappingURL=latest.js.map
@@ -1,5 +1,5 @@
1
1
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
2
- import type { ValueOrPromise } from "@yume-chan/struct";
2
+ import type { AsyncExactReadable, ValueOrPromise } from "@yume-chan/struct";
3
3
  import type { ScrcpyBackOrScreenOnControlMessage, ScrcpyControlMessageType, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage } from "../control/index.js";
4
4
  import type { ScrcpyScrollController } from "./1_16/scroll.js";
5
5
  import type { ScrcpyAudioStreamMetadata, ScrcpyMediaStreamPacket, ScrcpyVideoStream } from "./codec.js";
@@ -18,11 +18,31 @@ export interface ScrcpyDisplay {
18
18
  id: number;
19
19
  resolution?: string;
20
20
  }
21
- export interface ScrcpyOptions<T extends object> {
22
- readonly defaults: Required<T>;
23
- readonly controlMessageTypes: readonly ScrcpyControlMessageType[];
21
+ export declare abstract class ScrcpyOptions<T extends object> {
22
+ #private;
23
+ abstract get defaults(): Required<T>;
24
+ get controlMessageTypes(): readonly ScrcpyControlMessageType[];
24
25
  readonly value: Required<T>;
25
- serialize(): string[];
26
+ get clipboard(): ReadableStream<string>;
27
+ /**
28
+ * Creates a new instance of `ScrcpyOptions`, delegating all methods to the `Base` class.
29
+ * The derived class can override the methods to provide different behaviors.
30
+ * In those override methods, the derived class can call `super.currentMethodName()` to
31
+ * include the behavior of the `Base` class.
32
+ *
33
+ * Because `Base` is another derived class of `ScrcpyOptions`, its constructor might
34
+ * call this constructor with another `Base` class, forming a chain of classes, but without
35
+ * direct derivation to avoid type incompatibility when options are changed.
36
+ *
37
+ * When the `Base` class is constructed, its `value` field will be the same object as `value`,
38
+ * so the `setListXXX` methods in `Base` will modify `this.value`.
39
+ *
40
+ * @param Base The base class's constructor
41
+ * @param value The options value
42
+ * @param defaults The default option values
43
+ */
44
+ constructor(Base: (new (value: never) => ScrcpyOptions<object>) | undefined, value: T, defaults: Required<T>);
45
+ abstract serialize(): string[];
26
46
  /**
27
47
  * Set the essential options to let Scrcpy server print out available encoders.
28
48
  */
@@ -51,38 +71,16 @@ export interface ScrcpyOptions<T extends object> {
51
71
  */
52
72
  parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyVideoStream>;
53
73
  parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyAudioStreamMetadata>;
74
+ parseDeviceMessage(id: number, stream: AsyncExactReadable): Promise<boolean>;
54
75
  createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
55
76
  serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
56
77
  serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
57
- serializeSetClipboardControlMessage(message: ScrcpySetClipboardControlMessage): Uint8Array;
58
- createScrollController(): ScrcpyScrollController;
59
- }
60
- export declare abstract class ScrcpyOptionsBase<T extends object, B extends ScrcpyOptions<object>> implements ScrcpyOptions<T> {
61
- #private;
62
- protected _base: B;
63
- abstract get defaults(): Required<T>;
64
- get controlMessageTypes(): readonly ScrcpyControlMessageType[];
65
- readonly value: Required<T>;
66
- constructor(base: B, value: Required<T>);
67
- abstract serialize(): string[];
68
- setListEncoders(): void;
69
- setListDisplays(): void;
70
- parseEncoder(line: string): ScrcpyEncoder | undefined;
71
- parseDisplay(line: string): ScrcpyDisplay | undefined;
72
78
  /**
73
- * Parse the device metadata from video stream according to the current version and options.
74
- * @param stream The video stream.
75
- * @returns
76
- * A tuple of the video stream and the metadata.
77
- *
78
- * The returned video stream may be different from the input stream, and should be used for further processing.
79
+ * Convert a clipboard control message to binary data
80
+ * @param message The clipboard control message
81
+ * @returns A `Uint8Array` containing the binary data, or a tuple of the binary data and a promise that resolves when the clipboard is updated on the device
79
82
  */
80
- parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyVideoStream>;
81
- parseAudioStreamMetadata(stream: ReadableStream<Uint8Array>): ValueOrPromise<ScrcpyAudioStreamMetadata>;
82
- createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
83
- serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
84
- serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
85
- serializeSetClipboardControlMessage(message: ScrcpySetClipboardControlMessage): Uint8Array;
83
+ serializeSetClipboardControlMessage(message: ScrcpySetClipboardControlMessage): Uint8Array | [Uint8Array, Promise<void>];
86
84
  createScrollController(): ScrcpyScrollController;
87
85
  }
88
86
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE5E,OAAO,KAAK,EACR,kCAAkC,EAClC,wBAAwB,EACxB,+BAA+B,EAC/B,gCAAgC,EACnC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EACR,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACpB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,mBAAmB,sCAAsC,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAC9B,aAAa,IAAI,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,OAAO,GACf,KAAK,IAAI,iBAAiB,CAO5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAmB3E;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,8BAAsB,aAAa,CAAC,CAAC,SAAS,MAAM;;IAGhD,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IAErC,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAE7D;IAED,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5B,IAAI,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,CAEtC;IAED;;;;;;;;;;;;;;;;OAgBG;gBAEC,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,KAAK,KAAK,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,EAC/D,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IA0BzB,QAAQ,CAAC,SAAS,IAAI,MAAM,EAAE;IAE9B;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;OAEG;IACH,eAAe,IAAI,IAAI;IAIvB;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIrD;;;;;;;OAOG;IACH,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,iBAAiB,CAAC;IAIpC,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,cAAc,CAAC,yBAAyB,CAAC;IAI5C,kBAAkB,CACd,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAInB,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;;;;OAIG;IACH,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAI3C,sBAAsB,IAAI,sBAAsB;CAGnD"}
@@ -16,41 +16,84 @@ export function toScrcpyOptionValue(value, empty) {
16
16
  if (typeof value !== "string" &&
17
17
  typeof value !== "number" &&
18
18
  typeof value !== "boolean") {
19
- throw new Error(`Invalid option value: ${String(value)}`);
19
+ throw new TypeError(`Invalid option value: ${String(value)}`);
20
20
  }
21
21
  return String(value);
22
22
  }
23
- export class ScrcpyOptionsBase {
24
- _base;
23
+ const SkipDefaultMark = Symbol("SkipDefault");
24
+ export class ScrcpyOptions {
25
+ #base;
25
26
  get controlMessageTypes() {
26
- return this._base.controlMessageTypes;
27
+ return this.#base.controlMessageTypes;
27
28
  }
28
29
  value;
29
- constructor(base, value) {
30
- this._base = base;
30
+ get clipboard() {
31
+ return this.#base.clipboard;
32
+ }
33
+ /**
34
+ * Creates a new instance of `ScrcpyOptions`, delegating all methods to the `Base` class.
35
+ * The derived class can override the methods to provide different behaviors.
36
+ * In those override methods, the derived class can call `super.currentMethodName()` to
37
+ * include the behavior of the `Base` class.
38
+ *
39
+ * Because `Base` is another derived class of `ScrcpyOptions`, its constructor might
40
+ * call this constructor with another `Base` class, forming a chain of classes, but without
41
+ * direct derivation to avoid type incompatibility when options are changed.
42
+ *
43
+ * When the `Base` class is constructed, its `value` field will be the same object as `value`,
44
+ * so the `setListXXX` methods in `Base` will modify `this.value`.
45
+ *
46
+ * @param Base The base class's constructor
47
+ * @param value The options value
48
+ * @param defaults The default option values
49
+ */
50
+ constructor(Base, value, defaults) {
51
+ if (!(SkipDefaultMark in value)) {
52
+ // Only combine the default values when the outermost class is constructed
53
+ value = {
54
+ ...defaults,
55
+ ...value,
56
+ [SkipDefaultMark]: true,
57
+ };
58
+ }
31
59
  this.value = value;
32
- this.#setValue();
33
- }
34
- #setValue() {
35
- // Share `value` with `_base` class,
36
- // so updating `_base.value` in `_base.setListEncoders()`/
37
- // `_base.setListDisplays()` will also update `this.value`.
38
- Object.assign(this._base, { value: this.value });
39
- if (this._base instanceof ScrcpyOptionsBase) {
40
- this._base.#setValue();
60
+ if (Base !== undefined) {
61
+ // `value` might be incompatible with `Base`,
62
+ // but the derive class must ensure the incompatible values are not used by base class,
63
+ // and only the `setListXXX` methods in base class will modify the value,
64
+ // which is common to all versions.
65
+ //
66
+ // `Base` is a derived class of `ScrcpyOptions`, its constructor will call
67
+ // this constructor with `value`, which contains `SkipDefaultMark`,
68
+ // so `Base#value` will be the same object as `value`.
69
+ this.#base = new Base(value);
41
70
  }
42
71
  }
72
+ /**
73
+ * Set the essential options to let Scrcpy server print out available encoders.
74
+ */
43
75
  setListEncoders() {
44
- this._base.setListEncoders();
76
+ this.#base.setListEncoders();
45
77
  }
78
+ /**
79
+ * Set the essential options to let Scrcpy server print out available displays.
80
+ */
46
81
  setListDisplays() {
47
- this._base.setListDisplays();
82
+ this.#base.setListDisplays();
48
83
  }
84
+ /**
85
+ * Parse encoder information from Scrcpy server output
86
+ * @param line One line of Scrcpy server output
87
+ */
49
88
  parseEncoder(line) {
50
- return this._base.parseEncoder(line);
89
+ return this.#base.parseEncoder(line);
51
90
  }
91
+ /**
92
+ * Parse display information from Scrcpy server output
93
+ * @param line One line of Scrcpy server output
94
+ */
52
95
  parseDisplay(line) {
53
- return this._base.parseDisplay(line);
96
+ return this.#base.parseDisplay(line);
54
97
  }
55
98
  /**
56
99
  * Parse the device metadata from video stream according to the current version and options.
@@ -61,25 +104,33 @@ export class ScrcpyOptionsBase {
61
104
  * The returned video stream may be different from the input stream, and should be used for further processing.
62
105
  */
63
106
  parseVideoStreamMetadata(stream) {
64
- return this._base.parseVideoStreamMetadata(stream);
107
+ return this.#base.parseVideoStreamMetadata(stream);
65
108
  }
66
109
  parseAudioStreamMetadata(stream) {
67
- return this._base.parseAudioStreamMetadata(stream);
110
+ return this.#base.parseAudioStreamMetadata(stream);
111
+ }
112
+ parseDeviceMessage(id, stream) {
113
+ return this.#base.parseDeviceMessage(id, stream);
68
114
  }
69
115
  createMediaStreamTransformer() {
70
- return this._base.createMediaStreamTransformer();
116
+ return this.#base.createMediaStreamTransformer();
71
117
  }
72
118
  serializeInjectTouchControlMessage(message) {
73
- return this._base.serializeInjectTouchControlMessage(message);
119
+ return this.#base.serializeInjectTouchControlMessage(message);
74
120
  }
75
121
  serializeBackOrScreenOnControlMessage(message) {
76
- return this._base.serializeBackOrScreenOnControlMessage(message);
122
+ return this.#base.serializeBackOrScreenOnControlMessage(message);
77
123
  }
124
+ /**
125
+ * Convert a clipboard control message to binary data
126
+ * @param message The clipboard control message
127
+ * @returns A `Uint8Array` containing the binary data, or a tuple of the binary data and a promise that resolves when the clipboard is updated on the device
128
+ */
78
129
  serializeSetClipboardControlMessage(message) {
79
- return this._base.serializeSetClipboardControlMessage(message);
130
+ return this.#base.serializeSetClipboardControlMessage(message);
80
131
  }
81
132
  createScrollController() {
82
- return this._base.createScrollController();
133
+ return this.#base.createScrollController();
83
134
  }
84
135
  }
85
136
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAMvE,MAAM,UAAU,mBAAmB,CAC/B,KAAc;IAEd,OAAO,CACH,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,eAAe,IAAI,KAAK;QACxB,OAAO,KAAK,CAAC,aAAa,KAAK,UAAU,CAC5C,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAI,KAAc,EAAE,KAAQ;IAC3D,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,KAAK,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;IAClC,CAAC;IAED,uDAAuD;IACvD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IACI,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC5B,CAAC;QACC,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAgFD,MAAM,OAAgB,iBAAiB;IAKzB,KAAK,CAAI;IAInB,IAAI,mBAAmB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;IAC1C,CAAC;IAEQ,KAAK,CAAc;IAE5B,YAAY,IAAO,EAAE,KAAkB;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,SAAS;QACL,oCAAoC;QACpC,0DAA0D;QAC1D,2DAA2D;QAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,KAAK,YAAY,iBAAiB,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,CAAC;IACL,CAAC;IAID,eAAe;QACX,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC;IAED,eAAe;QACX,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;OAOG;IACH,wBAAwB,CACpB,MAAkC;QAElC,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,wBAAwB,CACpB,MAAkC;QAElC,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,4BAA4B;QAIxB,OAAO,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC;IACrD,CAAC;IAED,kCAAkC,CAC9B,OAAwC;QAExC,OAAO,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,qCAAqC,CACjC,OAA2C;QAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,mCAAmC,CAC/B,OAAyC;QAEzC,OAAO,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,sBAAsB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;IAC/C,CAAC;CACJ"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/options/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yume-chan/scrcpy",
3
- "version": "0.0.23",
3
+ "version": "0.0.24",
4
4
  "description": "TypeScript implementation of Scrcpy.",
5
5
  "keywords": [
6
6
  "adb",
@@ -26,25 +26,25 @@
26
26
  "main": "esm/index.js",
27
27
  "types": "esm/index.d.ts",
28
28
  "dependencies": {
29
- "@yume-chan/stream-extra": "^0.0.23",
30
- "@yume-chan/struct": "^0.0.23",
31
- "tslib": "^2.6.2"
29
+ "@yume-chan/async": "^2.2.0",
30
+ "@yume-chan/no-data-view": "^0.0.24",
31
+ "@yume-chan/stream-extra": "^0.0.24",
32
+ "@yume-chan/struct": "^0.0.24"
32
33
  },
33
34
  "devDependencies": {
34
- "@jest/globals": "^30.0.0-alpha.3",
35
+ "@jest/globals": "^30.0.0-alpha.4",
35
36
  "@yume-chan/eslint-config": "^1.0.0",
36
37
  "@yume-chan/tsconfig": "^1.0.0",
37
38
  "cross-env": "^7.0.3",
38
- "eslint": "^8.57.0",
39
- "jest": "^30.0.0-alpha.3",
40
- "prettier": "^3.2.5",
41
- "ts-jest": "^29.1.2",
42
- "typescript": "^5.4.2"
39
+ "jest": "^30.0.0-alpha.4",
40
+ "prettier": "^3.3.2",
41
+ "ts-jest": "^29.1.4",
42
+ "typescript": "^5.4.5"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "tsc -b tsconfig.build.json",
46
46
  "build:watch": "tsc -b tsconfig.build.json",
47
47
  "test": "cross-env NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" TS_JEST_DISABLE_VER_CHECKER=true jest --coverage",
48
- "lint": "eslint src/**/*.ts --fix && prettier src/**/*.ts --write --tab-width 4"
48
+ "lint": "run-eslint && prettier src/**/*.ts --write --tab-width 4"
49
49
  }
50
50
  }