@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.
- package/CHANGELOG.md +13 -0
- package/README.md +3 -0
- package/esm/1_15/impl/clipboard-stream.d.ts +2 -1
- package/esm/1_15/impl/clipboard-stream.d.ts.map +1 -1
- package/esm/1_15/impl/clipboard-stream.js +4 -7
- package/esm/1_15/impl/clipboard-stream.js.map +1 -1
- package/esm/1_15/impl/scroll-controller.d.ts.map +1 -1
- package/esm/1_15/impl/scroll-controller.js +22 -21
- package/esm/1_15/impl/scroll-controller.js.map +1 -1
- package/esm/1_15/options.d.ts +2 -3
- package/esm/1_15/options.d.ts.map +1 -1
- package/esm/1_15/options.js +6 -15
- package/esm/1_15/options.js.map +1 -1
- package/esm/1_17/options.d.ts +2 -3
- package/esm/1_17/options.d.ts.map +1 -1
- package/esm/1_17/options.js +6 -15
- package/esm/1_17/options.js.map +1 -1
- package/esm/1_18/options.d.ts +2 -3
- package/esm/1_18/options.d.ts.map +1 -1
- package/esm/1_18/options.js +6 -15
- package/esm/1_18/options.js.map +1 -1
- package/esm/1_21/impl/set-clipboard.d.ts +2 -1
- package/esm/1_21/impl/set-clipboard.d.ts.map +1 -1
- package/esm/1_21/impl/set-clipboard.js +2 -5
- package/esm/1_21/impl/set-clipboard.js.map +1 -1
- package/esm/1_21/options.d.ts +2 -3
- package/esm/1_21/options.d.ts.map +1 -1
- package/esm/1_21/options.js +7 -21
- package/esm/1_21/options.js.map +1 -1
- package/esm/1_22/options.d.ts +2 -3
- package/esm/1_22/options.d.ts.map +1 -1
- package/esm/1_22/options.js +7 -21
- package/esm/1_22/options.js.map +1 -1
- package/esm/1_23/options.d.ts +2 -3
- package/esm/1_23/options.d.ts.map +1 -1
- package/esm/1_23/options.js +7 -21
- package/esm/1_23/options.js.map +1 -1
- package/esm/1_24/options.d.ts +2 -3
- package/esm/1_24/options.d.ts.map +1 -1
- package/esm/1_24/options.js +7 -21
- package/esm/1_24/options.js.map +1 -1
- package/esm/1_25/options.d.ts +2 -3
- package/esm/1_25/options.d.ts.map +1 -1
- package/esm/1_25/options.js +7 -21
- package/esm/1_25/options.js.map +1 -1
- package/esm/2_0/options.d.ts +2 -3
- package/esm/2_0/options.d.ts.map +1 -1
- package/esm/2_0/options.js +7 -21
- package/esm/2_0/options.js.map +1 -1
- package/esm/2_1/options.d.ts +2 -3
- package/esm/2_1/options.d.ts.map +1 -1
- package/esm/2_1/options.js +7 -21
- package/esm/2_1/options.js.map +1 -1
- package/esm/2_2/options.d.ts +2 -3
- package/esm/2_2/options.d.ts.map +1 -1
- package/esm/2_2/options.js +7 -21
- package/esm/2_2/options.js.map +1 -1
- package/esm/2_3/options.d.ts +2 -3
- package/esm/2_3/options.d.ts.map +1 -1
- package/esm/2_3/options.js +7 -21
- package/esm/2_3/options.js.map +1 -1
- package/esm/2_4/impl/uhid-output-stream.d.ts +2 -1
- package/esm/2_4/impl/uhid-output-stream.d.ts.map +1 -1
- package/esm/2_4/impl/uhid-output-stream.js +2 -5
- package/esm/2_4/impl/uhid-output-stream.js.map +1 -1
- package/esm/2_4/options.d.ts +2 -3
- package/esm/2_4/options.d.ts.map +1 -1
- package/esm/2_4/options.js +8 -27
- package/esm/2_4/options.js.map +1 -1
- package/esm/2_6/options.d.ts +2 -3
- package/esm/2_6/options.d.ts.map +1 -1
- package/esm/2_6/options.js +8 -22
- package/esm/2_6/options.js.map +1 -1
- package/esm/2_7/impl/serialize-uhid-create.d.ts +2 -2
- package/esm/2_7/impl/serialize-uhid-create.d.ts.map +1 -1
- package/esm/2_7/impl/serialize-uhid-create.js +3 -4
- package/esm/2_7/impl/serialize-uhid-create.js.map +1 -1
- package/esm/2_7/options.d.ts +2 -3
- package/esm/2_7/options.d.ts.map +1 -1
- package/esm/2_7/options.js +8 -22
- package/esm/2_7/options.js.map +1 -1
- package/esm/3_0/options.d.ts +2 -3
- package/esm/3_0/options.d.ts.map +1 -1
- package/esm/3_0/options.js +8 -22
- package/esm/3_0/options.js.map +1 -1
- package/esm/3_1/impl/serialize-uhid-create.d.ts +2 -2
- package/esm/3_1/impl/serialize-uhid-create.d.ts.map +1 -1
- package/esm/3_1/impl/serialize-uhid-create.js +3 -4
- package/esm/3_1/impl/serialize-uhid-create.js.map +1 -1
- package/esm/3_1/options.d.ts +2 -3
- package/esm/3_1/options.d.ts.map +1 -1
- package/esm/3_1/options.js +8 -22
- package/esm/3_1/options.js.map +1 -1
- package/esm/3_2/options.d.ts +2 -3
- package/esm/3_2/options.d.ts.map +1 -1
- package/esm/3_2/options.js +8 -22
- package/esm/3_2/options.js.map +1 -1
- package/esm/3_3.d.ts +8 -0
- package/esm/3_3.d.ts.map +1 -0
- package/esm/3_3.js +7 -0
- package/esm/3_3.js.map +1 -0
- package/esm/3_3_1/impl/index.d.ts +3 -0
- package/esm/3_3_1/impl/index.d.ts.map +1 -0
- package/esm/3_3_1/impl/index.js +3 -0
- package/esm/3_3_1/impl/index.js.map +1 -0
- package/esm/3_3_1/impl/prev.d.ts +2 -0
- package/esm/3_3_1/impl/prev.d.ts.map +1 -0
- package/esm/3_3_1/impl/prev.js +2 -0
- package/esm/3_3_1/impl/prev.js.map +1 -0
- package/esm/3_3_1/impl/scroll-controller.d.ts +7 -0
- package/esm/3_3_1/impl/scroll-controller.d.ts.map +1 -0
- package/esm/3_3_1/impl/scroll-controller.js +15 -0
- package/esm/3_3_1/impl/scroll-controller.js.map +1 -0
- package/esm/3_3_1/index.d.ts +2 -0
- package/esm/3_3_1/index.d.ts.map +1 -0
- package/esm/3_3_1/index.js +2 -0
- package/esm/3_3_1/index.js.map +1 -0
- package/esm/3_3_1/options.d.ts +90 -0
- package/esm/3_3_1/options.d.ts.map +1 -0
- package/esm/3_3_1/options.js +78 -0
- package/esm/3_3_1/options.js.map +1 -0
- package/esm/3_3_2.d.ts +8 -0
- package/esm/3_3_2.d.ts.map +1 -0
- package/esm/3_3_2.js +7 -0
- package/esm/3_3_2.js.map +1 -0
- package/esm/base/device-message.d.ts +10 -1
- package/esm/base/device-message.d.ts.map +1 -1
- package/esm/base/device-message.js +40 -1
- package/esm/base/device-message.js.map +1 -1
- package/esm/base/options.d.ts +2 -3
- package/esm/base/options.d.ts.map +1 -1
- package/esm/control/message-type-map.d.ts +2 -2
- package/esm/control/message-type-map.d.ts.map +1 -1
- package/esm/control/message-type-map.js.map +1 -1
- package/esm/index.d.ts +3 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +3 -0
- package/esm/index.js.map +1 -1
- package/esm/latest.d.ts +5 -5
- package/esm/latest.d.ts.map +1 -1
- package/esm/latest.js +3 -3
- package/esm/latest.js.map +1 -1
- package/package.json +4 -4
- package/src/1_15/impl/clipboard-stream.ts +5 -7
- package/src/1_15/impl/scroll-controller.ts +22 -19
- package/src/1_15/options.ts +9 -21
- package/src/1_17/options.ts +9 -21
- package/src/1_18/options.ts +9 -21
- package/src/1_21/impl/set-clipboard.ts +2 -5
- package/src/1_21/options.ts +13 -28
- package/src/1_22/options.ts +13 -28
- package/src/1_23/options.ts +13 -28
- package/src/1_24/options.ts +13 -28
- package/src/1_25/options.ts +13 -28
- package/src/2_0/options.ts +13 -28
- package/src/2_1/options.ts +13 -28
- package/src/2_2/options.ts +13 -28
- package/src/2_3/options.ts +13 -28
- package/src/2_4/impl/uhid-output-stream.ts +3 -6
- package/src/2_4/options.ts +16 -35
- package/src/2_6/options.ts +16 -29
- package/src/2_7/impl/serialize-uhid-create.ts +9 -11
- package/src/2_7/options.ts +16 -29
- package/src/3_0/options.ts +16 -29
- package/src/3_1/impl/serialize-uhid-create.ts +11 -13
- package/src/3_1/options.ts +16 -29
- package/src/3_2/options.ts +16 -29
- package/src/3_3.ts +14 -0
- package/src/3_3_1/impl/index.ts +6 -0
- package/src/3_3_1/impl/prev.ts +1 -0
- package/src/3_3_1/impl/scroll-controller.ts +21 -0
- package/src/3_3_1/index.ts +1 -0
- package/src/3_3_1/options.ts +177 -0
- package/src/3_3_2.ts +14 -0
- package/src/base/device-message.ts +50 -1
- package/src/base/options.ts +3 -8
- package/src/control/message-type-map.ts +3 -3
- package/src/index.ts +3 -0
- package/src/latest.ts +5 -5
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ScrcpyDeviceMessageParsers } from "../base/index.js";
|
|
2
|
+
import { AckClipboardHandler, ClipboardStream, ControlMessageTypes, createMediaStreamTransformer, createScrollController, Defaults, parseAudioStreamMetadata, parseDisplay, parseEncoder, parseVideoStreamMetadata, serialize, serializeBackOrScreenOnControlMessage, serializeInjectTouchControlMessage, serializeUHidCreateControlMessage, setListDisplays, setListEncoders, UHidOutputStream, } from "./impl/index.js";
|
|
3
|
+
export class ScrcpyOptions3_3_1 {
|
|
4
|
+
static Defaults = Defaults;
|
|
5
|
+
value;
|
|
6
|
+
get controlMessageTypes() {
|
|
7
|
+
return ControlMessageTypes;
|
|
8
|
+
}
|
|
9
|
+
#clipboard;
|
|
10
|
+
get clipboard() {
|
|
11
|
+
return this.#clipboard;
|
|
12
|
+
}
|
|
13
|
+
#ackClipboardHandler;
|
|
14
|
+
#uHidOutput;
|
|
15
|
+
get uHidOutput() {
|
|
16
|
+
return this.#uHidOutput;
|
|
17
|
+
}
|
|
18
|
+
#deviceMessageParsers = new ScrcpyDeviceMessageParsers();
|
|
19
|
+
get deviceMessageParsers() {
|
|
20
|
+
return this.#deviceMessageParsers;
|
|
21
|
+
}
|
|
22
|
+
constructor(init) {
|
|
23
|
+
this.value = { ...Defaults, ...init };
|
|
24
|
+
if (this.value.videoSource === "camera") {
|
|
25
|
+
this.value.control = false;
|
|
26
|
+
}
|
|
27
|
+
if (this.value.audioDup) {
|
|
28
|
+
this.value.audioSource = "playback";
|
|
29
|
+
}
|
|
30
|
+
if (this.value.control) {
|
|
31
|
+
if (this.value.clipboardAutosync) {
|
|
32
|
+
this.#clipboard = this.#deviceMessageParsers.add(new ClipboardStream());
|
|
33
|
+
this.#ackClipboardHandler = this.#deviceMessageParsers.add(new AckClipboardHandler());
|
|
34
|
+
}
|
|
35
|
+
this.#uHidOutput = this.#deviceMessageParsers.add(new UHidOutputStream());
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
serialize() {
|
|
39
|
+
return serialize(this.value, Defaults);
|
|
40
|
+
}
|
|
41
|
+
setListDisplays() {
|
|
42
|
+
setListDisplays(this.value);
|
|
43
|
+
}
|
|
44
|
+
parseDisplay(line) {
|
|
45
|
+
return parseDisplay(line);
|
|
46
|
+
}
|
|
47
|
+
setListEncoders() {
|
|
48
|
+
setListEncoders(this.value);
|
|
49
|
+
}
|
|
50
|
+
parseEncoder(line) {
|
|
51
|
+
return parseEncoder(line);
|
|
52
|
+
}
|
|
53
|
+
parseVideoStreamMetadata(stream) {
|
|
54
|
+
return parseVideoStreamMetadata(this.value, stream);
|
|
55
|
+
}
|
|
56
|
+
parseAudioStreamMetadata(stream) {
|
|
57
|
+
return parseAudioStreamMetadata(stream, this.value);
|
|
58
|
+
}
|
|
59
|
+
createMediaStreamTransformer() {
|
|
60
|
+
return createMediaStreamTransformer(this.value);
|
|
61
|
+
}
|
|
62
|
+
serializeInjectTouchControlMessage(message) {
|
|
63
|
+
return serializeInjectTouchControlMessage(message);
|
|
64
|
+
}
|
|
65
|
+
serializeBackOrScreenOnControlMessage(message) {
|
|
66
|
+
return serializeBackOrScreenOnControlMessage(message);
|
|
67
|
+
}
|
|
68
|
+
serializeSetClipboardControlMessage(message) {
|
|
69
|
+
return this.#ackClipboardHandler.serializeSetClipboardControlMessage(message);
|
|
70
|
+
}
|
|
71
|
+
createScrollController() {
|
|
72
|
+
return createScrollController();
|
|
73
|
+
}
|
|
74
|
+
serializeUHidCreateControlMessage(message) {
|
|
75
|
+
return serializeUHidCreateControlMessage(message);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/3_3_1/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,kBAAkB;IAG3B,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"}
|
package/esm/3_3_2.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ScrcpyOptions3_3_1 } from "./3_3_1/index.js";
|
|
2
|
+
export declare class ScrcpyOptions3_3_2<TVideo extends boolean> extends ScrcpyOptions3_3_1<TVideo> {
|
|
3
|
+
constructor(init: ScrcpyOptions3_3_1.Init<TVideo>);
|
|
4
|
+
}
|
|
5
|
+
export declare namespace ScrcpyOptions3_3_2 {
|
|
6
|
+
type Init<TVideo extends boolean = boolean> = ScrcpyOptions3_3_1.Init<TVideo>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=3_3_2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"3_3_2.d.ts","sourceRoot":"","sources":["../src/3_3_2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBAAa,kBAAkB,CAC3B,MAAM,SAAS,OAAO,CACxB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;CAGpD;AAED,yBAAiB,kBAAkB,CAAC;IAChC,KAAY,IAAI,CAAC,MAAM,SAAS,OAAO,GAAG,OAAO,IAC7C,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACvC"}
|
package/esm/3_3_2.js
ADDED
package/esm/3_3_2.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"3_3_2.js","sourceRoot":"","sources":["../src/3_3_2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,OAAO,kBAEX,SAAQ,kBAA0B;IAChC,YAAY,IAAqC;QAC7C,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;CACJ"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { AsyncExactReadable } from "@yume-chan/struct";
|
|
2
2
|
export interface ScrcpyDeviceMessageParser {
|
|
3
|
-
|
|
3
|
+
readonly id: number | readonly number[];
|
|
4
|
+
parse(id: number, stream: AsyncExactReadable): Promise<undefined>;
|
|
5
|
+
close(): void;
|
|
6
|
+
error(e?: unknown): void;
|
|
7
|
+
}
|
|
8
|
+
export declare class ScrcpyDeviceMessageParsers {
|
|
9
|
+
#private;
|
|
10
|
+
get parsers(): readonly ScrcpyDeviceMessageParser[];
|
|
11
|
+
add<T extends ScrcpyDeviceMessageParser>(parser: T): T;
|
|
12
|
+
parse(id: number, stream: AsyncExactReadable): Promise<undefined>;
|
|
4
13
|
close(): void;
|
|
5
14
|
error(e?: unknown): void;
|
|
6
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-message.d.ts","sourceRoot":"","sources":["../../src/base/device-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"device-message.d.ts","sourceRoot":"","sources":["../../src/base/device-message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IAExC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAElE,KAAK,IAAI,IAAI,CAAC;IAEd,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,0BAA0B;;IAEnC,IAAI,OAAO,IAAI,SAAS,yBAAyB,EAAE,CAElD;IASD,GAAG,CAAC,CAAC,SAAS,yBAAyB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;IAYhD,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IASvE,KAAK;IAML,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO;CAKpB"}
|
|
@@ -1,2 +1,41 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export class ScrcpyDeviceMessageParsers {
|
|
2
|
+
#parsers = [];
|
|
3
|
+
get parsers() {
|
|
4
|
+
return this.#parsers;
|
|
5
|
+
}
|
|
6
|
+
#add(id, parser) {
|
|
7
|
+
if (this.#parsers[id]) {
|
|
8
|
+
throw new Error(`Duplicate parser for id ${id}`);
|
|
9
|
+
}
|
|
10
|
+
this.#parsers[id] = parser;
|
|
11
|
+
}
|
|
12
|
+
add(parser) {
|
|
13
|
+
if (Array.isArray(parser.id)) {
|
|
14
|
+
for (const id of parser.id) {
|
|
15
|
+
this.#add(id, parser);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.#add(parser.id, parser);
|
|
20
|
+
}
|
|
21
|
+
return parser;
|
|
22
|
+
}
|
|
23
|
+
async parse(id, stream) {
|
|
24
|
+
const parser = this.#parsers[id];
|
|
25
|
+
if (!parser) {
|
|
26
|
+
throw new Error(`Unknown device message id ${id}`);
|
|
27
|
+
}
|
|
28
|
+
return parser.parse(id, stream);
|
|
29
|
+
}
|
|
30
|
+
close() {
|
|
31
|
+
for (const parser of this.#parsers) {
|
|
32
|
+
parser.close();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
error(e) {
|
|
36
|
+
for (const parser of this.#parsers) {
|
|
37
|
+
parser.error(e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
2
41
|
//# sourceMappingURL=device-message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-message.js","sourceRoot":"","sources":["../../src/base/device-message.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"device-message.js","sourceRoot":"","sources":["../../src/base/device-message.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,0BAA0B;IACnC,QAAQ,GAAgC,EAAE,CAAC;IAC3C,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,EAAU,EAAE,MAAiC;QAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;IAC/B,CAAC;IAED,GAAG,CAAsC,MAAS;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,EAAY,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAY,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,EAAU,EAAE,MAA0B;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,KAAK;QACD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAW;QACb,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ"}
|
package/esm/base/options.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
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 { ScrcpyBackOrScreenOnControlMessage, ScrcpyInjectTouchControlMessage, ScrcpySetClipboardControlMessage, ScrcpyUHidCreateControlMessage, ScrcpyUHidOutputDeviceMessage } from "../latest.js";
|
|
5
4
|
import type { ScrcpyAudioStreamMetadata } from "./audio.js";
|
|
6
5
|
import type { ScrcpyControlMessageType } from "./control-message-type.js";
|
|
6
|
+
import type { ScrcpyDeviceMessageParsers } from "./device-message.js";
|
|
7
7
|
import type { ScrcpyDisplay } from "./display.js";
|
|
8
8
|
import type { ScrcpyEncoder } from "./encoder.js";
|
|
9
9
|
import type { ScrcpyMediaStreamPacket } from "./media.js";
|
|
@@ -14,13 +14,12 @@ export interface ScrcpyOptions<T extends object> {
|
|
|
14
14
|
value: Required<T>;
|
|
15
15
|
readonly clipboard?: ReadableStream<string> | undefined;
|
|
16
16
|
readonly uHidOutput?: ReadableStream<ScrcpyUHidOutputDeviceMessage> | undefined;
|
|
17
|
+
readonly deviceMessageParsers: ScrcpyDeviceMessageParsers;
|
|
17
18
|
serialize(): string[];
|
|
18
19
|
setListDisplays(): void;
|
|
19
20
|
parseDisplay(line: string): ScrcpyDisplay | undefined;
|
|
20
21
|
parseVideoStreamMetadata(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyVideoStream>;
|
|
21
22
|
parseAudioStreamMetadata?(stream: ReadableStream<Uint8Array>): MaybePromiseLike<ScrcpyAudioStreamMetadata>;
|
|
22
|
-
parseDeviceMessage(id: number, stream: ExactReadable | AsyncExactReadable): Promise<void>;
|
|
23
|
-
endDeviceMessageStream(e?: unknown): void;
|
|
24
23
|
createMediaStreamTransformer(): TransformStream<Uint8Array, ScrcpyMediaStreamPacket>;
|
|
25
24
|
serializeInjectTouchControlMessage(message: ScrcpyInjectTouchControlMessage): Uint8Array;
|
|
26
25
|
serializeBackOrScreenOnControlMessage(message: ScrcpyBackOrScreenOnControlMessage): Uint8Array | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/base/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/base/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,kCAAkC,EAClC,+BAA+B,EAC/B,gCAAgC,EAChC,8BAA8B,EAC9B,6BAA6B,EAChC,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM;IAC3C,IAAI,mBAAmB,IAAI,SAAS,wBAAwB,EAAE,CAAC;IAE/D,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnB,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAExD,QAAQ,CAAC,UAAU,CAAC,EACd,cAAc,CAAC,6BAA6B,CAAC,GAC7C,SAAS,CAAC;IAEhB,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;IAE1D,SAAS,IAAI,MAAM,EAAE,CAAC;IAEtB,eAAe,IAAI,IAAI,CAAC;IAExB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAEtD,wBAAwB,CACpB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IAEvC,wBAAwB,CAAC,CACrB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,GACnC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IAE/C,4BAA4B,IAAI,eAAe,CAC3C,UAAU,EACV,uBAAuB,CAC1B,CAAC;IAEF,kCAAkC,CAC9B,OAAO,EAAE,+BAA+B,GACzC,UAAU,CAAC;IAEd,qCAAqC,CACjC,OAAO,EAAE,kCAAkC,GAC5C,UAAU,GAAG,SAAS,CAAC;IAE1B,mCAAmC,CAC/B,OAAO,EAAE,gCAAgC,GAC1C,UAAU,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,sBAAsB,IAAI,sBAAsB,CAAC;IAEjD,iCAAiC,CAAC,CAC9B,OAAO,EAAE,8BAA8B,GACxC,UAAU,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACtC,eAAe,IAAI,IAAI,CAAC;IAExB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CACzD"}
|
|
@@ -9,7 +9,7 @@ export declare class ScrcpyControlMessageTypeMap {
|
|
|
9
9
|
constructor(options: ScrcpyOptions<object>);
|
|
10
10
|
get(type: ScrcpyControlMessageType): number;
|
|
11
11
|
fillMessageType<T extends {
|
|
12
|
-
type:
|
|
13
|
-
}>(message: Omit<T, "type">, type:
|
|
12
|
+
type: number;
|
|
13
|
+
}>(message: Omit<T, "type">, type: ScrcpyControlMessageType): T;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=message-type-map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-type-map.d.ts","sourceRoot":"","sources":["../../src/control/message-type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEhF;;;;GAIG;AACH,qBAAa,2BAA2B;;gBAGxB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;IAI1C,GAAG,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAQ3C,eAAe,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"message-type-map.d.ts","sourceRoot":"","sources":["../../src/control/message-type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEhF;;;;GAIG;AACH,qBAAa,2BAA2B;;gBAGxB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;IAI1C,GAAG,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAQ3C,eAAe,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EACtC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EACxB,IAAI,EAAE,wBAAwB,GAC/B,CAAC;CAIP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-type-map.js","sourceRoot":"","sources":["../../src/control/message-type-map.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IACpC,MAAM,CAAsC;IAE5C,YAAY,OAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,IAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,eAAe,CACX,OAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"message-type-map.js","sourceRoot":"","sources":["../../src/control/message-type-map.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IACpC,MAAM,CAAsC;IAE5C,YAAY,OAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,IAA8B;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,eAAe,CACX,OAAwB,EACxB,IAA8B;QAE7B,OAAa,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,OAAY,CAAC;IACxB,CAAC;CACJ"}
|
package/esm/index.d.ts
CHANGED
|
@@ -26,6 +26,9 @@ export * from "./3_0_1.js";
|
|
|
26
26
|
export * from "./3_0_2.js";
|
|
27
27
|
export * from "./3_1/index.js";
|
|
28
28
|
export * from "./3_2/index.js";
|
|
29
|
+
export * from "./3_3.js";
|
|
30
|
+
export * from "./3_3_1/index.js";
|
|
31
|
+
export * from "./3_3_2.js";
|
|
29
32
|
export * from "./android/index.js";
|
|
30
33
|
export * from "./base/index.js";
|
|
31
34
|
export * from "./codec/index.js";
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -26,6 +26,9 @@ export * from "./3_0_1.js";
|
|
|
26
26
|
export * from "./3_0_2.js";
|
|
27
27
|
export * from "./3_1/index.js";
|
|
28
28
|
export * from "./3_2/index.js";
|
|
29
|
+
export * from "./3_3.js";
|
|
30
|
+
export * from "./3_3_1/index.js";
|
|
31
|
+
export * from "./3_3_2.js";
|
|
29
32
|
export * from "./android/index.js";
|
|
30
33
|
export * from "./base/index.js";
|
|
31
34
|
export * from "./codec/index.js";
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
package/esm/latest.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class ScrcpyOptionsLatest<TVideo extends boolean> extends
|
|
3
|
-
constructor(init:
|
|
1
|
+
import { ScrcpyOptions3_3_2 } from "./3_3_2.js";
|
|
2
|
+
export declare class ScrcpyOptionsLatest<TVideo extends boolean> extends ScrcpyOptions3_3_2<TVideo> {
|
|
3
|
+
constructor(init: ScrcpyOptions3_3_2.Init<TVideo>);
|
|
4
4
|
}
|
|
5
5
|
export declare namespace ScrcpyOptionsLatest {
|
|
6
|
-
type Init<TVideo extends boolean = boolean> =
|
|
6
|
+
type Init<TVideo extends boolean = boolean> = ScrcpyOptions3_3_2.Init<TVideo>;
|
|
7
7
|
}
|
|
8
|
-
export { BackOrScreenOnControlMessage as ScrcpyBackOrScreenOnControlMessage, CaptureOrientation as ScrcpyCaptureOrientation, CodecOptions as ScrcpyCodecOptions, Crop as ScrcpyCrop, InjectScrollControlMessage as ScrcpyInjectScrollControlMessage, InjectTouchControlMessage as ScrcpyInjectTouchControlMessage, InstanceId as ScrcpyInstanceId, LockOrientation as ScrcpyLockOrientation, NewDisplay as ScrcpyNewDisplay, Orientation as ScrcpyOrientation, PointerId as ScrcpyPointerId, SetClipboardControlMessage as ScrcpySetClipboardControlMessage, UHidCreateControlMessage as ScrcpyUHidCreateControlMessage, UHidOutputDeviceMessage as ScrcpyUHidOutputDeviceMessage, } from "./
|
|
8
|
+
export { BackOrScreenOnControlMessage as ScrcpyBackOrScreenOnControlMessage, CaptureOrientation as ScrcpyCaptureOrientation, CodecOptions as ScrcpyCodecOptions, Crop as ScrcpyCrop, InjectScrollControlMessage as ScrcpyInjectScrollControlMessage, InjectTouchControlMessage as ScrcpyInjectTouchControlMessage, InstanceId as ScrcpyInstanceId, LockOrientation as ScrcpyLockOrientation, NewDisplay as ScrcpyNewDisplay, Orientation as ScrcpyOrientation, PointerId as ScrcpyPointerId, SetClipboardControlMessage as ScrcpySetClipboardControlMessage, UHidCreateControlMessage as ScrcpyUHidCreateControlMessage, UHidOutputDeviceMessage as ScrcpyUHidOutputDeviceMessage, } from "./3_3_1/impl/index.js";
|
|
9
9
|
//# sourceMappingURL=latest.d.ts.map
|
package/esm/latest.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../src/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"latest.d.ts","sourceRoot":"","sources":["../src/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,mBAAmB,CAC5B,MAAM,SAAS,OAAO,CACxB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;gBACpB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;CAGpD;AAED,yBAAiB,mBAAmB,CAAC;IACjC,KAAY,IAAI,CAAC,MAAM,SAAS,OAAO,GAAG,OAAO,IAC7C,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;CACvC;AAED,OAAO,EACH,4BAA4B,IAAI,kCAAkC,EAClE,kBAAkB,IAAI,wBAAwB,EAC9C,YAAY,IAAI,kBAAkB,EAClC,IAAI,IAAI,UAAU,EAClB,0BAA0B,IAAI,gCAAgC,EAC9D,yBAAyB,IAAI,+BAA+B,EAC5D,UAAU,IAAI,gBAAgB,EAC9B,eAAe,IAAI,qBAAqB,EACxC,UAAU,IAAI,gBAAgB,EAC9B,WAAW,IAAI,iBAAiB,EAChC,SAAS,IAAI,eAAe,EAC5B,0BAA0B,IAAI,gCAAgC,EAC9D,wBAAwB,IAAI,8BAA8B,EAC1D,uBAAuB,IAAI,6BAA6B,GAC3D,MAAM,uBAAuB,CAAC"}
|
package/esm/latest.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export class ScrcpyOptionsLatest extends
|
|
1
|
+
import { ScrcpyOptions3_3_2 } from "./3_3_2.js";
|
|
2
|
+
export class ScrcpyOptionsLatest extends ScrcpyOptions3_3_2 {
|
|
3
3
|
constructor(init) {
|
|
4
4
|
super(init);
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
export { BackOrScreenOnControlMessage as ScrcpyBackOrScreenOnControlMessage, CaptureOrientation as ScrcpyCaptureOrientation, CodecOptions as ScrcpyCodecOptions, Crop as ScrcpyCrop, InjectScrollControlMessage as ScrcpyInjectScrollControlMessage, InjectTouchControlMessage as ScrcpyInjectTouchControlMessage, InstanceId as ScrcpyInstanceId, LockOrientation as ScrcpyLockOrientation, NewDisplay as ScrcpyNewDisplay, Orientation as ScrcpyOrientation, PointerId as ScrcpyPointerId, SetClipboardControlMessage as ScrcpySetClipboardControlMessage, UHidCreateControlMessage as ScrcpyUHidCreateControlMessage, UHidOutputDeviceMessage as ScrcpyUHidOutputDeviceMessage, } from "./
|
|
7
|
+
export { BackOrScreenOnControlMessage as ScrcpyBackOrScreenOnControlMessage, CaptureOrientation as ScrcpyCaptureOrientation, CodecOptions as ScrcpyCodecOptions, Crop as ScrcpyCrop, InjectScrollControlMessage as ScrcpyInjectScrollControlMessage, InjectTouchControlMessage as ScrcpyInjectTouchControlMessage, InstanceId as ScrcpyInstanceId, LockOrientation as ScrcpyLockOrientation, NewDisplay as ScrcpyNewDisplay, Orientation as ScrcpyOrientation, PointerId as ScrcpyPointerId, SetClipboardControlMessage as ScrcpySetClipboardControlMessage, UHidCreateControlMessage as ScrcpyUHidCreateControlMessage, UHidOutputDeviceMessage as ScrcpyUHidOutputDeviceMessage, } from "./3_3_1/impl/index.js";
|
|
8
8
|
//# sourceMappingURL=latest.js.map
|
package/esm/latest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"latest.js","sourceRoot":"","sources":["../src/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"latest.js","sourceRoot":"","sources":["../src/latest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,OAAO,mBAEX,SAAQ,kBAA0B;IAChC,YAAY,IAAqC;QAC7C,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;CACJ;AAOD,OAAO,EACH,4BAA4B,IAAI,kCAAkC,EAClE,kBAAkB,IAAI,wBAAwB,EAC9C,YAAY,IAAI,kBAAkB,EAClC,IAAI,IAAI,UAAU,EAClB,0BAA0B,IAAI,gCAAgC,EAC9D,yBAAyB,IAAI,+BAA+B,EAC5D,UAAU,IAAI,gBAAgB,EAC9B,eAAe,IAAI,qBAAqB,EACxC,UAAU,IAAI,gBAAgB,EAC9B,WAAW,IAAI,iBAAiB,EAChC,SAAS,IAAI,eAAe,EAC5B,0BAA0B,IAAI,gCAAgC,EAC9D,wBAAwB,IAAI,8BAA8B,EAC1D,uBAAuB,IAAI,6BAA6B,GAC3D,MAAM,uBAAuB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/scrcpy",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "TypeScript implementation of Scrcpy client.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adb",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@yume-chan/struct": "^2.0.1"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@types/node": "^24.
|
|
37
|
-
"prettier": "^3.
|
|
38
|
-
"typescript": "^5.
|
|
36
|
+
"@types/node": "^24.3.1",
|
|
37
|
+
"prettier": "^3.6.2",
|
|
38
|
+
"typescript": "^5.9.2",
|
|
39
39
|
"@yume-chan/eslint-config": "^1.0.0",
|
|
40
40
|
"@yume-chan/test-runner": "^1.0.0",
|
|
41
41
|
"@yume-chan/tsconfig": "^1.0.0"
|
|
@@ -16,6 +16,8 @@ export class ClipboardStream
|
|
|
16
16
|
{
|
|
17
17
|
#controller: PushReadableStreamController<string>;
|
|
18
18
|
|
|
19
|
+
readonly id = 0;
|
|
20
|
+
|
|
19
21
|
constructor() {
|
|
20
22
|
let controller!: PushReadableStreamController<string>;
|
|
21
23
|
super((controller_) => {
|
|
@@ -24,13 +26,9 @@ export class ClipboardStream
|
|
|
24
26
|
this.#controller = controller;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
async parse(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
await this.#controller.enqueue(message.content);
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
return false;
|
|
29
|
+
async parse(_id: number, stream: AsyncExactReadable): Promise<undefined> {
|
|
30
|
+
const message = await ClipboardDeviceMessage.deserialize(stream);
|
|
31
|
+
await this.#controller.enqueue(message.content);
|
|
34
32
|
}
|
|
35
33
|
|
|
36
34
|
close() {
|
|
@@ -34,33 +34,36 @@ export class ScrollController implements ScrcpyScrollController {
|
|
|
34
34
|
protected processMessage(
|
|
35
35
|
message: ScrcpyInjectScrollControlMessage,
|
|
36
36
|
): ScrcpyInjectScrollControlMessage | undefined {
|
|
37
|
-
|
|
38
|
-
this.#accumulatedY += message.scrollY;
|
|
37
|
+
// Ref https://github.com/libsdl-org/SDL/blob/878ea48b607f23e4ec8c12d1395b86ab529e30d0/src/events/SDL_mouse.c#L897-L914
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
scrollX = -1;
|
|
47
|
-
this.#accumulatedX = 0;
|
|
39
|
+
if (message.scrollX) {
|
|
40
|
+
if (Math.sign(message.scrollX) !== Math.sign(this.#accumulatedX)) {
|
|
41
|
+
this.#accumulatedX = message.scrollX;
|
|
42
|
+
} else {
|
|
43
|
+
this.#accumulatedX += message.scrollX;
|
|
44
|
+
}
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
if (
|
|
51
|
-
scrollY
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
if (message.scrollY) {
|
|
48
|
+
if (Math.sign(message.scrollY) !== Math.sign(this.#accumulatedY)) {
|
|
49
|
+
this.#accumulatedY = message.scrollY;
|
|
50
|
+
} else {
|
|
51
|
+
this.#accumulatedY += message.scrollY;
|
|
52
|
+
}
|
|
56
53
|
}
|
|
57
54
|
|
|
58
|
-
|
|
55
|
+
const integerX = this.#accumulatedX | 0;
|
|
56
|
+
this.#accumulatedX -= integerX;
|
|
57
|
+
|
|
58
|
+
const integerY = this.#accumulatedY | 0;
|
|
59
|
+
this.#accumulatedY -= integerY;
|
|
60
|
+
|
|
61
|
+
if (integerX === 0 && integerY === 0) {
|
|
59
62
|
return undefined;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
|
-
message.scrollX =
|
|
63
|
-
message.scrollY =
|
|
65
|
+
message.scrollX = integerX;
|
|
66
|
+
message.scrollY = integerY;
|
|
64
67
|
return message;
|
|
65
68
|
}
|
|
66
69
|
|
package/src/1_15/options.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
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
|
|
|
5
4
|
import type {
|
|
6
5
|
ScrcpyControlMessageType,
|
|
@@ -10,6 +9,7 @@ import type {
|
|
|
10
9
|
ScrcpyScrollController,
|
|
11
10
|
ScrcpyVideoStream,
|
|
12
11
|
} from "../base/index.js";
|
|
12
|
+
import { ScrcpyDeviceMessageParsers } from "../base/index.js";
|
|
13
13
|
import type {
|
|
14
14
|
ScrcpyBackOrScreenOnControlMessage,
|
|
15
15
|
ScrcpyInjectTouchControlMessage,
|
|
@@ -47,11 +47,18 @@ export class ScrcpyOptions1_15 implements ScrcpyOptions<Init> {
|
|
|
47
47
|
return this.#clipboard;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
#deviceMessageParsers = new ScrcpyDeviceMessageParsers();
|
|
51
|
+
get deviceMessageParsers() {
|
|
52
|
+
return this.#deviceMessageParsers;
|
|
53
|
+
}
|
|
54
|
+
|
|
50
55
|
constructor(init: Init) {
|
|
51
56
|
this.value = { ...Defaults, ...init };
|
|
52
57
|
|
|
53
58
|
if (this.value.control) {
|
|
54
|
-
this.#clipboard =
|
|
59
|
+
this.#clipboard = this.#deviceMessageParsers.add(
|
|
60
|
+
new ClipboardStream(),
|
|
61
|
+
);
|
|
55
62
|
}
|
|
56
63
|
}
|
|
57
64
|
|
|
@@ -73,25 +80,6 @@ export class ScrcpyOptions1_15 implements ScrcpyOptions<Init> {
|
|
|
73
80
|
return parseVideoStreamMetadata(stream);
|
|
74
81
|
}
|
|
75
82
|
|
|
76
|
-
async parseDeviceMessage(
|
|
77
|
-
id: number,
|
|
78
|
-
stream: ExactReadable | AsyncExactReadable,
|
|
79
|
-
): Promise<void> {
|
|
80
|
-
if (await this.#clipboard!.parse(id, stream)) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
throw new Error("Unknown device message");
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
endDeviceMessageStream(e?: unknown): void {
|
|
88
|
-
if (e) {
|
|
89
|
-
this.#clipboard!.error(e);
|
|
90
|
-
} else {
|
|
91
|
-
this.#clipboard!.close();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
83
|
createMediaStreamTransformer(): TransformStream<
|
|
96
84
|
Uint8Array,
|
|
97
85
|
ScrcpyMediaStreamPacket
|
package/src/1_17/options.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
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
|
|
|
5
4
|
import type {
|
|
6
5
|
ScrcpyControlMessageType,
|
|
@@ -12,6 +11,7 @@ import type {
|
|
|
12
11
|
ScrcpyScrollController,
|
|
13
12
|
ScrcpyVideoStream,
|
|
14
13
|
} from "../base/index.js";
|
|
14
|
+
import { ScrcpyDeviceMessageParsers } from "../base/index.js";
|
|
15
15
|
import type {
|
|
16
16
|
ScrcpyBackOrScreenOnControlMessage,
|
|
17
17
|
ScrcpyInjectTouchControlMessage,
|
|
@@ -54,11 +54,18 @@ export class ScrcpyOptions1_17
|
|
|
54
54
|
return this.#clipboard;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
#deviceMessageParsers = new ScrcpyDeviceMessageParsers();
|
|
58
|
+
get deviceMessageParsers() {
|
|
59
|
+
return this.#deviceMessageParsers;
|
|
60
|
+
}
|
|
61
|
+
|
|
57
62
|
constructor(init: Init) {
|
|
58
63
|
this.value = { ...Defaults, ...init };
|
|
59
64
|
|
|
60
65
|
if (this.value.control) {
|
|
61
|
-
this.#clipboard =
|
|
66
|
+
this.#clipboard = this.#deviceMessageParsers.add(
|
|
67
|
+
new ClipboardStream(),
|
|
68
|
+
);
|
|
62
69
|
}
|
|
63
70
|
}
|
|
64
71
|
|
|
@@ -88,25 +95,6 @@ export class ScrcpyOptions1_17
|
|
|
88
95
|
return parseVideoStreamMetadata(stream);
|
|
89
96
|
}
|
|
90
97
|
|
|
91
|
-
async parseDeviceMessage(
|
|
92
|
-
id: number,
|
|
93
|
-
stream: ExactReadable | AsyncExactReadable,
|
|
94
|
-
): Promise<void> {
|
|
95
|
-
if (await this.#clipboard!.parse(id, stream)) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
throw new Error("Unknown device message");
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
endDeviceMessageStream(e?: unknown): void {
|
|
103
|
-
if (e) {
|
|
104
|
-
this.#clipboard!.error(e);
|
|
105
|
-
} else {
|
|
106
|
-
this.#clipboard!.close();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
98
|
createMediaStreamTransformer(): TransformStream<
|
|
111
99
|
Uint8Array,
|
|
112
100
|
ScrcpyMediaStreamPacket
|
package/src/1_18/options.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
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
|
|
|
5
4
|
import type {
|
|
6
5
|
ScrcpyControlMessageType,
|
|
@@ -12,6 +11,7 @@ import type {
|
|
|
12
11
|
ScrcpyScrollController,
|
|
13
12
|
ScrcpyVideoStream,
|
|
14
13
|
} from "../base/index.js";
|
|
14
|
+
import { ScrcpyDeviceMessageParsers } from "../base/index.js";
|
|
15
15
|
import type {
|
|
16
16
|
ScrcpyBackOrScreenOnControlMessage,
|
|
17
17
|
ScrcpyInjectTouchControlMessage,
|
|
@@ -54,11 +54,18 @@ export class ScrcpyOptions1_18
|
|
|
54
54
|
return this.#clipboard;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
#deviceMessageParsers = new ScrcpyDeviceMessageParsers();
|
|
58
|
+
get deviceMessageParsers() {
|
|
59
|
+
return this.#deviceMessageParsers;
|
|
60
|
+
}
|
|
61
|
+
|
|
57
62
|
constructor(init: Init) {
|
|
58
63
|
this.value = { ...Defaults, ...init };
|
|
59
64
|
|
|
60
65
|
if (this.value.control) {
|
|
61
|
-
this.#clipboard =
|
|
66
|
+
this.#clipboard = this.#deviceMessageParsers.add(
|
|
67
|
+
new ClipboardStream(),
|
|
68
|
+
);
|
|
62
69
|
}
|
|
63
70
|
}
|
|
64
71
|
|
|
@@ -88,25 +95,6 @@ export class ScrcpyOptions1_18
|
|
|
88
95
|
return parseVideoStreamMetadata(stream);
|
|
89
96
|
}
|
|
90
97
|
|
|
91
|
-
async parseDeviceMessage(
|
|
92
|
-
id: number,
|
|
93
|
-
stream: ExactReadable | AsyncExactReadable,
|
|
94
|
-
): Promise<void> {
|
|
95
|
-
if (await this.#clipboard!.parse(id, stream)) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
throw new Error("Unknown device message");
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
endDeviceMessageStream(e?: unknown): void {
|
|
103
|
-
if (e) {
|
|
104
|
-
this.#clipboard!.error(e);
|
|
105
|
-
} else {
|
|
106
|
-
this.#clipboard!.close();
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
98
|
createMediaStreamTransformer(): TransformStream<
|
|
111
99
|
Uint8Array,
|
|
112
100
|
ScrcpyMediaStreamPacket
|
|
@@ -29,18 +29,15 @@ export class AckClipboardHandler implements ScrcpyDeviceMessageParser {
|
|
|
29
29
|
|
|
30
30
|
#closed = false;
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
if (id !== 1) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
32
|
+
readonly id = 1;
|
|
36
33
|
|
|
34
|
+
async parse(_id: number, stream: AsyncExactReadable): Promise<undefined> {
|
|
37
35
|
const message = await AckClipboardDeviceMessage.deserialize(stream);
|
|
38
36
|
const resolver = this.#resolvers.get(message.sequence);
|
|
39
37
|
if (resolver) {
|
|
40
38
|
resolver.resolve();
|
|
41
39
|
this.#resolvers.delete(message.sequence);
|
|
42
40
|
}
|
|
43
|
-
return true;
|
|
44
41
|
}
|
|
45
42
|
|
|
46
43
|
close(): void {
|