@yume-chan/scrcpy 0.0.20 → 0.0.22

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 (147) hide show
  1. package/CHANGELOG.json +33 -0
  2. package/CHANGELOG.md +18 -1
  3. package/README.md +8 -122
  4. package/esm/codec/av1.js +2 -2
  5. package/esm/codec/av1.js.map +1 -1
  6. package/esm/codec/h264.js +2 -2
  7. package/esm/codec/h264.js.map +1 -1
  8. package/esm/codec/h265.d.ts +72 -4
  9. package/esm/codec/h265.d.ts.map +1 -1
  10. package/esm/codec/h265.js +18 -19
  11. package/esm/codec/h265.js.map +1 -1
  12. package/esm/codec/nalu.d.ts +1 -8
  13. package/esm/codec/nalu.d.ts.map +1 -1
  14. package/esm/codec/nalu.js +53 -40
  15. package/esm/codec/nalu.js.map +1 -1
  16. package/esm/control/hover-helper.d.ts +1 -1
  17. package/esm/control/hover-helper.d.ts.map +1 -1
  18. package/esm/control/hover-helper.js +8 -9
  19. package/esm/control/hover-helper.js.map +1 -1
  20. package/esm/control/inject-keycode.d.ts +13 -13
  21. package/esm/control/inject-keycode.d.ts.map +1 -1
  22. package/esm/control/inject-keycode.js +3 -3
  23. package/esm/control/inject-keycode.js.map +1 -1
  24. package/esm/control/inject-touch.d.ts.map +1 -1
  25. package/esm/control/inject-touch.js +3 -4
  26. package/esm/control/inject-touch.js.map +1 -1
  27. package/esm/control/serializer.d.ts +4 -3
  28. package/esm/control/serializer.d.ts.map +1 -1
  29. package/esm/control/serializer.js +30 -14
  30. package/esm/control/serializer.js.map +1 -1
  31. package/esm/control/set-screen-power-mode.js +1 -1
  32. package/esm/control/set-screen-power-mode.js.map +1 -1
  33. package/esm/control/type.d.ts +1 -1
  34. package/esm/control/type.d.ts.map +1 -1
  35. package/esm/control/type.js +4 -4
  36. package/esm/control/type.js.map +1 -1
  37. package/esm/control/writer.d.ts +5 -3
  38. package/esm/control/writer.d.ts.map +1 -1
  39. package/esm/control/writer.js +23 -14
  40. package/esm/control/writer.js.map +1 -1
  41. package/esm/device-message/stream.js.map +1 -1
  42. package/esm/device-message/type.js +1 -1
  43. package/esm/device-message/type.js.map +1 -1
  44. package/esm/options/1_16/codec-options.d.ts +2 -2
  45. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  46. package/esm/options/1_16/codec-options.js +15 -5
  47. package/esm/options/1_16/codec-options.js.map +1 -1
  48. package/esm/options/1_16/float-to-uint16.js.map +1 -1
  49. package/esm/options/1_16/init.js +2 -2
  50. package/esm/options/1_16/init.js.map +1 -1
  51. package/esm/options/1_16/options.d.ts +1 -1
  52. package/esm/options/1_16/options.d.ts.map +1 -1
  53. package/esm/options/1_16/options.js +2 -3
  54. package/esm/options/1_16/options.js.map +1 -1
  55. package/esm/options/1_16/scroll.d.ts +1 -2
  56. package/esm/options/1_16/scroll.d.ts.map +1 -1
  57. package/esm/options/1_16/scroll.js +12 -12
  58. package/esm/options/1_16/scroll.js.map +1 -1
  59. package/esm/options/1_17.d.ts +1 -1
  60. package/esm/options/1_17.d.ts.map +1 -1
  61. package/esm/options/1_17.js +1 -2
  62. package/esm/options/1_17.js.map +1 -1
  63. package/esm/options/1_18.d.ts +1 -1
  64. package/esm/options/1_18.d.ts.map +1 -1
  65. package/esm/options/1_18.js +3 -4
  66. package/esm/options/1_18.js.map +1 -1
  67. package/esm/options/1_21.d.ts +1 -1
  68. package/esm/options/1_21.d.ts.map +1 -1
  69. package/esm/options/1_21.js +1 -2
  70. package/esm/options/1_21.js.map +1 -1
  71. package/esm/options/1_22/options.d.ts +1 -1
  72. package/esm/options/1_22/options.d.ts.map +1 -1
  73. package/esm/options/1_22/options.js +1 -2
  74. package/esm/options/1_22/options.js.map +1 -1
  75. package/esm/options/1_22/scroll.d.ts.map +1 -1
  76. package/esm/options/1_22/scroll.js.map +1 -1
  77. package/esm/options/1_23.d.ts +1 -1
  78. package/esm/options/1_23.d.ts.map +1 -1
  79. package/esm/options/1_23.js +1 -2
  80. package/esm/options/1_23.js.map +1 -1
  81. package/esm/options/1_24.d.ts +1 -1
  82. package/esm/options/1_24.d.ts.map +1 -1
  83. package/esm/options/1_24.js +1 -2
  84. package/esm/options/1_24.js.map +1 -1
  85. package/esm/options/1_25/options.d.ts.map +1 -1
  86. package/esm/options/1_25/options.js.map +1 -1
  87. package/esm/options/2_0.d.ts +1 -1
  88. package/esm/options/2_0.d.ts.map +1 -1
  89. package/esm/options/2_0.js +2 -4
  90. package/esm/options/2_0.js.map +1 -1
  91. package/esm/options/2_1.d.ts +48 -0
  92. package/esm/options/2_1.d.ts.map +1 -0
  93. package/esm/options/2_1.js +23 -0
  94. package/esm/options/2_1.js.map +1 -0
  95. package/esm/options/2_2.d.ts +67 -0
  96. package/esm/options/2_2.d.ts.map +1 -0
  97. package/esm/options/2_2.js +44 -0
  98. package/esm/options/2_2.js.map +1 -0
  99. package/esm/options/codec.d.ts.map +1 -1
  100. package/esm/options/codec.js +3 -4
  101. package/esm/options/codec.js.map +1 -1
  102. package/esm/options/index.d.ts +2 -0
  103. package/esm/options/index.d.ts.map +1 -1
  104. package/esm/options/index.js +2 -0
  105. package/esm/options/index.js.map +1 -1
  106. package/esm/options/latest.d.ts +4 -5
  107. package/esm/options/latest.d.ts.map +1 -1
  108. package/esm/options/latest.js +2 -3
  109. package/esm/options/latest.js.map +1 -1
  110. package/esm/options/types.d.ts +1 -0
  111. package/esm/options/types.d.ts.map +1 -1
  112. package/esm/options/types.js +15 -0
  113. package/esm/options/types.js.map +1 -1
  114. package/package.json +10 -22
  115. package/src/codec/h265.ts +40 -31
  116. package/src/codec/nalu.ts +73 -55
  117. package/src/control/hover-helper.ts +10 -11
  118. package/src/control/inject-touch.ts +0 -1
  119. package/src/control/serializer.ts +56 -35
  120. package/src/control/type.ts +7 -7
  121. package/src/control/writer.ts +40 -30
  122. package/src/device-message/stream.ts +2 -2
  123. package/src/options/1_16/codec-options.ts +22 -7
  124. package/src/options/1_16/float-to-uint16.ts +1 -1
  125. package/src/options/1_16/options.ts +32 -36
  126. package/src/options/1_16/scroll.ts +16 -16
  127. package/src/options/1_17.ts +11 -11
  128. package/src/options/1_18.ts +12 -12
  129. package/src/options/1_21.ts +9 -9
  130. package/src/options/1_22/options.ts +7 -7
  131. package/src/options/1_22/scroll.ts +2 -2
  132. package/src/options/1_23.ts +6 -6
  133. package/src/options/1_24.ts +4 -4
  134. package/src/options/1_25/options.ts +4 -4
  135. package/src/options/1_25/scroll.ts +2 -2
  136. package/src/options/2_0.ts +25 -25
  137. package/src/options/2_1.ts +35 -0
  138. package/src/options/2_2.ts +68 -0
  139. package/src/options/codec.ts +13 -13
  140. package/src/options/index.ts +2 -0
  141. package/src/options/latest.ts +4 -6
  142. package/src/options/types.ts +47 -28
  143. package/tsconfig.build.tsbuildinfo +1 -1
  144. package/bin/scrcpy-server +0 -0
  145. package/bin/version.d.ts +0 -1
  146. package/bin/version.js +0 -1
  147. package/scripts/fetch-server.cjs +0 -38
@@ -11,19 +11,19 @@ export class ScrcpyOptions1_17 extends ScrcpyOptionsBase<
11
11
  ScrcpyOptionsInit1_17,
12
12
  ScrcpyOptions1_16
13
13
  > {
14
- public static readonly DEFAULTS = {
14
+ static readonly DEFAULTS = {
15
15
  ...ScrcpyOptions1_16.DEFAULTS,
16
16
  encoderName: undefined,
17
17
  } as const satisfies Required<ScrcpyOptionsInit1_17>;
18
18
 
19
- public static readonly SERIALIZE_ORDER = [
19
+ static readonly SERIALIZE_ORDER = [
20
20
  ...ScrcpyOptions1_16.SERIALIZE_ORDER,
21
21
  "encoderName",
22
22
  ] as const satisfies readonly (keyof ScrcpyOptionsInit1_17)[];
23
23
 
24
- public static parseEncoder(
24
+ static parseEncoder(
25
25
  line: string,
26
- encoderNameRegex: RegExp
26
+ encoderNameRegex: RegExp,
27
27
  ): ScrcpyEncoder | undefined {
28
28
  const match = line.match(encoderNameRegex);
29
29
  if (match) {
@@ -32,35 +32,35 @@ export class ScrcpyOptions1_17 extends ScrcpyOptionsBase<
32
32
  return undefined;
33
33
  }
34
34
 
35
- public override get defaults(): Required<ScrcpyOptionsInit1_17> {
35
+ override get defaults(): Required<ScrcpyOptionsInit1_17> {
36
36
  return ScrcpyOptions1_17.DEFAULTS;
37
37
  }
38
38
 
39
- public constructor(init: ScrcpyOptionsInit1_17) {
39
+ constructor(init: ScrcpyOptionsInit1_17) {
40
40
  super(new ScrcpyOptions1_16(init), {
41
41
  ...ScrcpyOptions1_17.DEFAULTS,
42
42
  ...init,
43
43
  });
44
44
  }
45
45
 
46
- public override serialize(): string[] {
46
+ override serialize(): string[] {
47
47
  return ScrcpyOptions1_16.serialize(
48
48
  this.value,
49
- ScrcpyOptions1_17.SERIALIZE_ORDER
49
+ ScrcpyOptions1_17.SERIALIZE_ORDER,
50
50
  );
51
51
  }
52
52
 
53
- public override setListEncoders() {
53
+ override setListEncoders() {
54
54
  // Set to an invalid value
55
55
  // Server will print valid values before crashing
56
56
  // (server will crash after opening video and control sockets)
57
57
  this.value.encoderName = "_";
58
58
  }
59
59
 
60
- public override parseEncoder(line: string): ScrcpyEncoder | undefined {
60
+ override parseEncoder(line: string): ScrcpyEncoder | undefined {
61
61
  return ScrcpyOptions1_17.parseEncoder(
62
62
  line,
63
- /\s+scrcpy --encoder-name '(.*?)'/
63
+ /\s+scrcpy --encoder-name '(.*?)'/,
64
64
  );
65
65
  }
66
66
  }
@@ -56,7 +56,7 @@ export const SCRCPY_CONTROL_MESSAGE_TYPES_1_18 =
56
56
  SCRCPY_CONTROL_MESSAGE_TYPES_1_18.splice(
57
57
  6,
58
58
  0,
59
- ScrcpyControlMessageType.ExpandSettingPanel
59
+ ScrcpyControlMessageType.ExpandSettingPanel,
60
60
  );
61
61
 
62
62
  const LOG_LEVEL_MAP = {
@@ -82,23 +82,23 @@ export class ScrcpyOptions1_18 extends ScrcpyOptionsBase<
82
82
  ScrcpyOptionsInit1_18,
83
83
  ScrcpyOptions1_17
84
84
  > {
85
- public static readonly DEFAULTS = {
85
+ static readonly DEFAULTS = {
86
86
  ...ScrcpyOptions1_17.DEFAULTS,
87
87
  logLevel: ScrcpyLogLevel1_18.Debug,
88
88
  lockVideoOrientation: ScrcpyVideoOrientation1_18.Unlocked,
89
89
  powerOffOnClose: false,
90
90
  } as const satisfies Required<ScrcpyOptionsInit1_18>;
91
91
 
92
- public static readonly SERIALIZE_ORDER = [
92
+ static readonly SERIALIZE_ORDER = [
93
93
  ...ScrcpyOptions1_17.SERIALIZE_ORDER,
94
94
  "powerOffOnClose",
95
95
  ] as const satisfies readonly (keyof ScrcpyOptionsInit1_18)[];
96
96
 
97
- public override get defaults(): Required<ScrcpyOptionsInit1_18> {
97
+ override get defaults(): Required<ScrcpyOptionsInit1_18> {
98
98
  return ScrcpyOptions1_18.DEFAULTS;
99
99
  }
100
100
 
101
- public override get controlMessageTypes() {
101
+ override get controlMessageTypes() {
102
102
  return SCRCPY_CONTROL_MESSAGE_TYPES_1_18;
103
103
  }
104
104
 
@@ -111,26 +111,26 @@ export class ScrcpyOptions1_18 extends ScrcpyOptionsBase<
111
111
  lockVideoOrientation:
112
112
  VIDEO_ORIENTATION_MAP[value.lockVideoOrientation],
113
113
  }),
114
- value
114
+ value,
115
115
  );
116
116
  }
117
117
 
118
- public serialize(): string[] {
118
+ override serialize(): string[] {
119
119
  return ScrcpyOptions1_16.serialize(
120
120
  this.value,
121
- ScrcpyOptions1_18.SERIALIZE_ORDER
121
+ ScrcpyOptions1_18.SERIALIZE_ORDER,
122
122
  );
123
123
  }
124
124
 
125
- public override parseEncoder(line: string): ScrcpyEncoder | undefined {
125
+ override parseEncoder(line: string): ScrcpyEncoder | undefined {
126
126
  return ScrcpyOptions1_17.parseEncoder(
127
127
  line,
128
- /\s+scrcpy --encoder '(.*?)'/
128
+ /\s+scrcpy --encoder '(.*?)'/,
129
129
  );
130
130
  }
131
131
 
132
- public override serializeBackOrScreenOnControlMessage(
133
- message: ScrcpyBackOrScreenOnControlMessage
132
+ override serializeBackOrScreenOnControlMessage(
133
+ message: ScrcpyBackOrScreenOnControlMessage,
134
134
  ) {
135
135
  return ScrcpyBackOrScreenOnControlMessage1_18.serialize(message);
136
136
  }
@@ -30,14 +30,14 @@ export class ScrcpyOptions1_21 extends ScrcpyOptionsBase<
30
30
  ScrcpyOptionsInit1_21,
31
31
  ScrcpyOptions1_18
32
32
  > {
33
- public static readonly DEFAULTS = {
33
+ static readonly DEFAULTS = {
34
34
  ...ScrcpyOptions1_18.DEFAULTS,
35
35
  clipboardAutosync: true,
36
36
  } as const satisfies Required<ScrcpyOptionsInit1_21>;
37
37
 
38
- public static serialize<T extends object>(
38
+ static serialize<T extends object>(
39
39
  options: T,
40
- defaults: Required<T>
40
+ defaults: Required<T>,
41
41
  ): string[] {
42
42
  // 1.21 changed the format of arguments
43
43
  const result: string[] = [];
@@ -49,7 +49,7 @@ export class ScrcpyOptions1_21 extends ScrcpyOptionsBase<
49
49
 
50
50
  const defaultValue = toScrcpyOptionValue(
51
51
  defaults[key as keyof T],
52
- undefined
52
+ undefined,
53
53
  );
54
54
  if (serializedValue == defaultValue) {
55
55
  continue;
@@ -60,23 +60,23 @@ export class ScrcpyOptions1_21 extends ScrcpyOptionsBase<
60
60
  return result;
61
61
  }
62
62
 
63
- public override get defaults(): Required<ScrcpyOptionsInit1_21> {
63
+ override get defaults(): Required<ScrcpyOptionsInit1_21> {
64
64
  return ScrcpyOptions1_21.DEFAULTS;
65
65
  }
66
66
 
67
- public constructor(init: ScrcpyOptionsInit1_21) {
67
+ constructor(init: ScrcpyOptionsInit1_21) {
68
68
  super(new ScrcpyOptions1_18(init), {
69
69
  ...ScrcpyOptions1_21.DEFAULTS,
70
70
  ...init,
71
71
  });
72
72
  }
73
73
 
74
- public override serialize(): string[] {
74
+ override serialize(): string[] {
75
75
  return ScrcpyOptions1_21.serialize(this.value, this.defaults);
76
76
  }
77
77
 
78
- public override serializeSetClipboardControlMessage(
79
- message: ScrcpySetClipboardControlMessage
78
+ override serializeSetClipboardControlMessage(
79
+ message: ScrcpySetClipboardControlMessage,
80
80
  ): Uint8Array {
81
81
  return ScrcpySetClipboardControlMessage1_21.serialize(message);
82
82
  }
@@ -14,26 +14,26 @@ export class ScrcpyOptions1_22 extends ScrcpyOptionsBase<
14
14
  ScrcpyOptionsInit1_22,
15
15
  ScrcpyOptions1_21
16
16
  > {
17
- public static readonly DEFAULTS = {
17
+ static readonly DEFAULTS = {
18
18
  ...ScrcpyOptions1_21.DEFAULTS,
19
19
  downsizeOnError: true,
20
20
  sendDeviceMeta: true,
21
21
  sendDummyByte: true,
22
22
  } as const satisfies Required<ScrcpyOptionsInit1_22>;
23
23
 
24
- public override get defaults(): Required<ScrcpyOptionsInit1_22> {
24
+ override get defaults(): Required<ScrcpyOptionsInit1_22> {
25
25
  return ScrcpyOptions1_22.DEFAULTS;
26
26
  }
27
27
 
28
- public constructor(init: ScrcpyOptionsInit1_22) {
28
+ constructor(init: ScrcpyOptionsInit1_22) {
29
29
  super(new ScrcpyOptions1_21(init), {
30
30
  ...ScrcpyOptions1_22.DEFAULTS,
31
31
  ...init,
32
32
  });
33
33
  }
34
34
 
35
- public override parseVideoStreamMetadata(
36
- stream: ReadableStream<Uint8Array>
35
+ override parseVideoStreamMetadata(
36
+ stream: ReadableStream<Uint8Array>,
37
37
  ): ValueOrPromise<ScrcpyVideoStream> {
38
38
  if (!this.value.sendDeviceMeta) {
39
39
  return { stream, metadata: { codec: ScrcpyVideoCodecId.H264 } };
@@ -42,11 +42,11 @@ export class ScrcpyOptions1_22 extends ScrcpyOptionsBase<
42
42
  }
43
43
  }
44
44
 
45
- public override serialize(): string[] {
45
+ override serialize(): string[] {
46
46
  return ScrcpyOptions1_21.serialize(this.value, this.defaults);
47
47
  }
48
48
 
49
- public override createScrollController(): ScrcpyScrollController {
49
+ override createScrollController(): ScrcpyScrollController {
50
50
  return new ScrcpyScrollController1_22();
51
51
  }
52
52
  }
@@ -13,8 +13,8 @@ export type ScrcpyInjectScrollControlMessage1_22 =
13
13
  (typeof ScrcpyInjectScrollControlMessage1_22)["TInit"];
14
14
 
15
15
  export class ScrcpyScrollController1_22 extends ScrcpyScrollController1_16 {
16
- public override serializeScrollMessage(
17
- message: ScrcpyInjectScrollControlMessage1_22
16
+ override serializeScrollMessage(
17
+ message: ScrcpyInjectScrollControlMessage1_22,
18
18
  ): Uint8Array | undefined {
19
19
  const processed = this.processMessage(message);
20
20
  if (!processed) {
@@ -16,27 +16,27 @@ export class ScrcpyOptions1_23 extends ScrcpyOptionsBase<
16
16
  ScrcpyOptionsInit1_23,
17
17
  ScrcpyOptions1_22
18
18
  > {
19
- public static readonly DEFAULTS = {
19
+ static readonly DEFAULTS = {
20
20
  ...ScrcpyOptions1_22.DEFAULTS,
21
21
  cleanup: true,
22
22
  } as const satisfies Required<ScrcpyOptionsInit1_23>;
23
23
 
24
- public override get defaults(): Required<ScrcpyOptionsInit1_23> {
24
+ override get defaults(): Required<ScrcpyOptionsInit1_23> {
25
25
  return ScrcpyOptions1_23.DEFAULTS;
26
26
  }
27
27
 
28
- public constructor(init: ScrcpyOptionsInit1_22) {
28
+ constructor(init: ScrcpyOptionsInit1_22) {
29
29
  super(new ScrcpyOptions1_22(init), {
30
30
  ...ScrcpyOptions1_23.DEFAULTS,
31
31
  ...init,
32
32
  });
33
33
  }
34
34
 
35
- public override serialize(): string[] {
35
+ override serialize(): string[] {
36
36
  return ScrcpyOptions1_21.serialize(this.value, this.defaults);
37
37
  }
38
38
 
39
- public override createMediaStreamTransformer(): TransformStream<
39
+ override createMediaStreamTransformer(): TransformStream<
40
40
  Uint8Array,
41
41
  ScrcpyMediaStreamPacket
42
42
  > {
@@ -61,7 +61,7 @@ export class ScrcpyOptions1_23 extends ScrcpyOptionsBase<
61
61
 
62
62
  controller.enqueue(packet);
63
63
  },
64
- })
64
+ }),
65
65
  ),
66
66
  };
67
67
  }
@@ -11,23 +11,23 @@ export class ScrcpyOptions1_24 extends ScrcpyOptionsBase<
11
11
  ScrcpyOptionsInit1_24,
12
12
  ScrcpyOptions1_23
13
13
  > {
14
- public static readonly DEFAULTS = {
14
+ static readonly DEFAULTS = {
15
15
  ...ScrcpyOptions1_23.DEFAULTS,
16
16
  powerOn: true,
17
17
  } as const satisfies Required<ScrcpyOptionsInit1_24>;
18
18
 
19
- public override get defaults(): Required<ScrcpyOptionsInit1_24> {
19
+ override get defaults(): Required<ScrcpyOptionsInit1_24> {
20
20
  return ScrcpyOptions1_24.DEFAULTS;
21
21
  }
22
22
 
23
- public constructor(init: ScrcpyOptionsInit1_24) {
23
+ constructor(init: ScrcpyOptionsInit1_24) {
24
24
  super(new ScrcpyOptions1_23(init), {
25
25
  ...ScrcpyOptions1_24.DEFAULTS,
26
26
  ...init,
27
27
  });
28
28
  }
29
29
 
30
- public override serialize(): string[] {
30
+ override serialize(): string[] {
31
31
  return ScrcpyOptions1_21.serialize(this.value, this.defaults);
32
32
  }
33
33
  }
@@ -10,22 +10,22 @@ export class ScrcpyOptions1_25 extends ScrcpyOptionsBase<
10
10
  ScrcpyOptionsInit1_24,
11
11
  ScrcpyOptions1_24
12
12
  > {
13
- public override get defaults(): Required<ScrcpyOptionsInit1_24> {
13
+ override get defaults(): Required<ScrcpyOptionsInit1_24> {
14
14
  return ScrcpyOptions1_24.DEFAULTS;
15
15
  }
16
16
 
17
- public constructor(init: ScrcpyOptionsInit1_24) {
17
+ constructor(init: ScrcpyOptionsInit1_24) {
18
18
  super(new ScrcpyOptions1_24(init), {
19
19
  ...ScrcpyOptions1_24.DEFAULTS,
20
20
  ...init,
21
21
  });
22
22
  }
23
23
 
24
- public override serialize(): string[] {
24
+ override serialize(): string[] {
25
25
  return ScrcpyOptions1_21.serialize(this.value, this.defaults);
26
26
  }
27
27
 
28
- public override createScrollController(): ScrcpyScrollController {
28
+ override createScrollController(): ScrcpyScrollController {
29
29
  return new ScrcpyScrollController1_25();
30
30
  }
31
31
  }
@@ -25,7 +25,7 @@ export const ScrcpyFloatToInt16NumberType: NumberFieldType = {
25
25
  };
26
26
 
27
27
  const ScrcpyFloatToInt16FieldDefinition = new NumberFieldDefinition(
28
- ScrcpyFloatToInt16NumberType
28
+ ScrcpyFloatToInt16NumberType,
29
29
  );
30
30
 
31
31
  export const ScrcpyInjectScrollControlMessage1_25 = new Struct()
@@ -43,7 +43,7 @@ export type ScrcpyInjectScrollControlMessage1_25 =
43
43
 
44
44
  export class ScrcpyScrollController1_25 implements ScrcpyScrollController {
45
45
  serializeScrollMessage(
46
- message: ScrcpyInjectScrollControlMessage
46
+ message: ScrcpyInjectScrollControlMessage,
47
47
  ): Uint8Array | undefined {
48
48
  return ScrcpyInjectScrollControlMessage1_25.serialize(message);
49
49
  }
@@ -45,20 +45,20 @@ export type ScrcpyInjectTouchControlMessage2_0 =
45
45
  (typeof ScrcpyInjectTouchControlMessage2_0)["TInit"];
46
46
 
47
47
  export class ScrcpyInstanceId implements ScrcpyOptionValue {
48
- public static readonly NONE = new ScrcpyInstanceId(-1);
48
+ static readonly NONE = new ScrcpyInstanceId(-1);
49
49
 
50
- public static random(): ScrcpyInstanceId {
50
+ static random(): ScrcpyInstanceId {
51
51
  // A random 31-bit unsigned integer
52
52
  return new ScrcpyInstanceId((Math.random() * 0x80000000) | 0);
53
53
  }
54
54
 
55
- public value: number;
55
+ value: number;
56
56
 
57
- public constructor(value: number) {
57
+ constructor(value: number) {
58
58
  this.value = value;
59
59
  }
60
60
 
61
- public toOptionValue(): string | undefined {
61
+ toOptionValue(): string | undefined {
62
62
  if (this.value < 0) {
63
63
  return undefined;
64
64
  }
@@ -91,7 +91,7 @@ export interface ScrcpyOptionsInit2_0
91
91
 
92
92
  function omit<T extends object, K extends keyof T>(
93
93
  obj: T,
94
- keys: K[]
94
+ keys: K[],
95
95
  ): Omit<T, K> {
96
96
  const result: Record<PropertyKey, unknown> = {};
97
97
  for (const key in obj) {
@@ -106,7 +106,7 @@ export class ScrcpyOptions2_0 extends ScrcpyOptionsBase<
106
106
  ScrcpyOptionsInit2_0,
107
107
  ScrcpyOptions1_25
108
108
  > {
109
- public static readonly DEFAULTS = {
109
+ static readonly DEFAULTS = {
110
110
  ...omit(ScrcpyOptions1_24.DEFAULTS, [
111
111
  "bitRate",
112
112
  "codecOptions",
@@ -130,32 +130,32 @@ export class ScrcpyOptions2_0 extends ScrcpyOptionsBase<
130
130
  sendCodecMeta: true,
131
131
  } as const satisfies Required<ScrcpyOptionsInit2_0>;
132
132
 
133
- public override get defaults(): Required<ScrcpyOptionsInit2_0> {
133
+ override get defaults(): Required<ScrcpyOptionsInit2_0> {
134
134
  return ScrcpyOptions2_0.DEFAULTS;
135
135
  }
136
136
 
137
- public constructor(init: ScrcpyOptionsInit2_0) {
137
+ constructor(init: ScrcpyOptionsInit2_0) {
138
138
  super(new ScrcpyOptions1_25(init), {
139
139
  ...ScrcpyOptions2_0.DEFAULTS,
140
140
  ...init,
141
141
  });
142
142
  }
143
143
 
144
- public override serialize(): string[] {
144
+ override serialize(): string[] {
145
145
  return ScrcpyOptions1_21.serialize(this.value, this.defaults);
146
146
  }
147
147
 
148
- public override setListEncoders(): void {
148
+ override setListEncoders(): void {
149
149
  this.value.listEncoders = true;
150
150
  }
151
151
 
152
- public override setListDisplays(): void {
152
+ override setListDisplays(): void {
153
153
  this.value.listDisplays = true;
154
154
  }
155
155
 
156
- public override parseEncoder(line: string): ScrcpyEncoder | undefined {
156
+ override parseEncoder(line: string): ScrcpyEncoder | undefined {
157
157
  let match = line.match(
158
- /\s+--video-codec=(.*)\s+--video-encoder='(.*)'/
158
+ /\s+--video-codec=(.*)\s+--video-encoder='(.*)'/,
159
159
  );
160
160
  if (match) {
161
161
  return {
@@ -177,7 +177,7 @@ export class ScrcpyOptions2_0 extends ScrcpyOptionsBase<
177
177
  return undefined;
178
178
  }
179
179
 
180
- public override parseDisplay(line: string): ScrcpyDisplay | undefined {
180
+ override parseDisplay(line: string): ScrcpyDisplay | undefined {
181
181
  const match = line.match(/\s+--display=(\d+)\s+\((.*?)\)/);
182
182
  if (match) {
183
183
  const display: ScrcpyDisplay = {
@@ -191,8 +191,8 @@ export class ScrcpyOptions2_0 extends ScrcpyOptionsBase<
191
191
  return undefined;
192
192
  }
193
193
 
194
- public override parseVideoStreamMetadata(
195
- stream: ReadableStream<Uint8Array>
194
+ override parseVideoStreamMetadata(
195
+ stream: ReadableStream<Uint8Array>,
196
196
  ): ValueOrPromise<ScrcpyVideoStream> {
197
197
  const { sendDeviceMeta, sendCodecMeta } = this.value;
198
198
  if (!sendDeviceMeta && !sendCodecMeta) {
@@ -249,18 +249,18 @@ export class ScrcpyOptions2_0 extends ScrcpyOptionsBase<
249
249
  })();
250
250
  }
251
251
 
252
- public override parseAudioStreamMetadata(
253
- stream: ReadableStream<Uint8Array>
252
+ override parseAudioStreamMetadata(
253
+ stream: ReadableStream<Uint8Array>,
254
254
  ): ValueOrPromise<ScrcpyAudioStreamMetadata> {
255
255
  return (async (): Promise<ScrcpyAudioStreamMetadata> => {
256
256
  const buffered = new BufferedReadableStream(stream);
257
257
  const buffer = await buffered.readExactly(
258
- NumberFieldType.Uint32.size
258
+ NumberFieldType.Uint32.size,
259
259
  );
260
260
 
261
261
  const codecMetadataValue = NumberFieldType.Uint32.deserialize(
262
262
  buffer,
263
- false
263
+ false,
264
264
  );
265
265
  // Server will send `0x00_00_00_00` and `0x00_00_00_01` even if `sendCodecMeta` is false
266
266
  switch (codecMetadataValue) {
@@ -288,7 +288,7 @@ export class ScrcpyOptions2_0 extends ScrcpyOptionsBase<
288
288
  break;
289
289
  default:
290
290
  throw new Error(
291
- `Unknown audio codec metadata value: ${codecMetadataValue}`
291
+ `Unknown audio codec metadata value: ${codecMetadataValue}`,
292
292
  );
293
293
  }
294
294
  return {
@@ -328,14 +328,14 @@ export class ScrcpyOptions2_0 extends ScrcpyOptionsBase<
328
328
  }
329
329
  await controller.enqueue(value);
330
330
  }
331
- }
331
+ },
332
332
  ),
333
333
  };
334
334
  })();
335
335
  }
336
336
 
337
- public override serializeInjectTouchControlMessage(
338
- message: ScrcpyInjectTouchControlMessage
337
+ override serializeInjectTouchControlMessage(
338
+ message: ScrcpyInjectTouchControlMessage,
339
339
  ): Uint8Array {
340
340
  return ScrcpyInjectTouchControlMessage2_0.serialize(message);
341
341
  }
@@ -0,0 +1,35 @@
1
+ import { ScrcpyOptions1_21 } from "./1_21.js";
2
+ import type { ScrcpyOptionsInit2_0 } from "./2_0.js";
3
+ import { ScrcpyOptions2_0 } from "./2_0.js";
4
+ import { ScrcpyOptionsBase } from "./types.js";
5
+
6
+ export interface ScrcpyOptionsInit2_1 extends ScrcpyOptionsInit2_0 {
7
+ video?: boolean;
8
+ audioSource?: "output" | "mic";
9
+ }
10
+
11
+ export class ScrcpyOptions2_1 extends ScrcpyOptionsBase<
12
+ ScrcpyOptionsInit2_1,
13
+ ScrcpyOptions2_0
14
+ > {
15
+ static readonly DEFAULTS = {
16
+ ...ScrcpyOptions2_0.DEFAULTS,
17
+ video: true,
18
+ audioSource: "output",
19
+ } as const satisfies Required<ScrcpyOptionsInit2_1>;
20
+
21
+ override get defaults(): Required<ScrcpyOptionsInit2_1> {
22
+ return ScrcpyOptions2_1.DEFAULTS;
23
+ }
24
+
25
+ constructor(init: ScrcpyOptionsInit2_1) {
26
+ super(new ScrcpyOptions2_0(init), {
27
+ ...ScrcpyOptions2_1.DEFAULTS,
28
+ ...init,
29
+ });
30
+ }
31
+
32
+ override serialize(): string[] {
33
+ return ScrcpyOptions1_21.serialize(this.value, this.defaults);
34
+ }
35
+ }
@@ -0,0 +1,68 @@
1
+ import { ScrcpyOptions1_21 } from "./1_21.js";
2
+ import type { ScrcpyOptionsInit2_1 } from "./2_1.js";
3
+ import { ScrcpyOptions2_1 } from "./2_1.js";
4
+ import type { ScrcpyDisplay } from "./types.js";
5
+ import { ScrcpyOptionsBase } from "./types.js";
6
+
7
+ export interface ScrcpyOptionsInit2_2
8
+ extends Omit<ScrcpyOptionsInit2_1, "display"> {
9
+ videoSource?: "display" | "camera";
10
+ displayId?: number;
11
+ cameraId?: string | undefined;
12
+ cameraSize?: string | undefined;
13
+ cameraFacing?: "front" | "back" | "external" | undefined;
14
+ cameraAr?: string | undefined;
15
+ cameraFps?: number | undefined;
16
+ cameraHighSpeed?: boolean;
17
+
18
+ listCameras?: boolean;
19
+ listCameraSizes?: boolean;
20
+ }
21
+
22
+ export class ScrcpyOptions2_2 extends ScrcpyOptionsBase<
23
+ ScrcpyOptionsInit2_2,
24
+ ScrcpyOptions2_1
25
+ > {
26
+ static readonly DEFAULTS = {
27
+ ...ScrcpyOptions2_1.DEFAULTS,
28
+ videoSource: "display",
29
+ displayId: 0,
30
+ cameraId: undefined,
31
+ cameraSize: undefined,
32
+ cameraFacing: undefined,
33
+ cameraAr: undefined,
34
+ cameraFps: undefined,
35
+ cameraHighSpeed: false,
36
+ listCameras: false,
37
+ listCameraSizes: false,
38
+ } as const satisfies Required<ScrcpyOptionsInit2_2>;
39
+
40
+ override get defaults(): Required<ScrcpyOptionsInit2_2> {
41
+ return ScrcpyOptions2_2.DEFAULTS;
42
+ }
43
+
44
+ constructor(init: ScrcpyOptionsInit2_2) {
45
+ super(new ScrcpyOptions2_1(init), {
46
+ ...ScrcpyOptions2_2.DEFAULTS,
47
+ ...init,
48
+ });
49
+ }
50
+
51
+ override parseDisplay(line: string): ScrcpyDisplay | undefined {
52
+ const match = line.match(/\s+--display-id=(\d+)\s+\((.*?)\)/);
53
+ if (match) {
54
+ const display: ScrcpyDisplay = {
55
+ id: Number.parseInt(match[1]!, 10),
56
+ };
57
+ if (match[2] !== "size unknown") {
58
+ display.resolution = match[2]!;
59
+ }
60
+ return display;
61
+ }
62
+ return undefined;
63
+ }
64
+
65
+ override serialize(): string[] {
66
+ return ScrcpyOptions1_21.serialize(this.value, this.defaults);
67
+ }
68
+ }