@yume-chan/scrcpy 0.0.19 → 0.0.20

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 (252) hide show
  1. package/CHANGELOG.json +15 -0
  2. package/CHANGELOG.md +9 -1
  3. package/README.md +105 -181
  4. package/esm/codec/h264.d.ts +1 -21
  5. package/esm/codec/h264.d.ts.map +1 -1
  6. package/esm/codec/h264.js +13 -234
  7. package/esm/codec/h264.js.map +1 -1
  8. package/esm/codec/h265.d.ts +454 -0
  9. package/esm/codec/h265.d.ts.map +1 -1
  10. package/esm/codec/h265.js +1060 -0
  11. package/esm/codec/h265.js.map +1 -1
  12. package/esm/codec/index.d.ts +1 -0
  13. package/esm/codec/index.d.ts.map +1 -1
  14. package/esm/codec/index.js +1 -0
  15. package/esm/codec/index.js.map +1 -1
  16. package/esm/codec/nalu.d.ts +44 -0
  17. package/esm/codec/nalu.d.ts.map +1 -0
  18. package/esm/codec/nalu.js +310 -0
  19. package/esm/codec/nalu.js.map +1 -0
  20. package/esm/control/back-or-screen-on.d.ts +1 -1
  21. package/esm/control/back-or-screen-on.d.ts.map +1 -1
  22. package/esm/control/index.d.ts +2 -0
  23. package/esm/control/index.d.ts.map +1 -1
  24. package/esm/control/index.js +2 -0
  25. package/esm/control/index.js.map +1 -1
  26. package/esm/control/inject-keycode.d.ts +1 -2
  27. package/esm/control/inject-keycode.d.ts.map +1 -1
  28. package/esm/control/inject-keycode.js +1 -2
  29. package/esm/control/inject-keycode.js.map +1 -1
  30. package/esm/control/inject-text.d.ts +1 -2
  31. package/esm/control/inject-text.d.ts.map +1 -1
  32. package/esm/control/inject-text.js +1 -2
  33. package/esm/control/inject-text.js.map +1 -1
  34. package/esm/control/inject-touch.d.ts +15 -20
  35. package/esm/control/inject-touch.d.ts.map +1 -1
  36. package/esm/control/inject-touch.js +14 -41
  37. package/esm/control/inject-touch.js.map +1 -1
  38. package/esm/control/rotate-device.d.ts +2 -4
  39. package/esm/control/rotate-device.d.ts.map +1 -1
  40. package/esm/control/rotate-device.js +2 -3
  41. package/esm/control/rotate-device.js.map +1 -1
  42. package/esm/control/serializer.d.ts +13 -23
  43. package/esm/control/serializer.d.ts.map +1 -1
  44. package/esm/control/serializer.js +23 -52
  45. package/esm/control/serializer.js.map +1 -1
  46. package/esm/control/set-screen-power-mode.d.ts +1 -2
  47. package/esm/control/set-screen-power-mode.d.ts.map +1 -1
  48. package/esm/control/set-screen-power-mode.js +1 -2
  49. package/esm/control/set-screen-power-mode.js.map +1 -1
  50. package/esm/control/type.d.ts +14 -0
  51. package/esm/control/type.d.ts.map +1 -1
  52. package/esm/control/type.js +22 -0
  53. package/esm/control/type.js.map +1 -1
  54. package/esm/control/writer.d.ts +28 -0
  55. package/esm/control/writer.d.ts.map +1 -0
  56. package/esm/control/writer.js +53 -0
  57. package/esm/control/writer.js.map +1 -0
  58. package/esm/device-message/stream.d.ts.map +1 -1
  59. package/esm/device-message/stream.js +23 -8
  60. package/esm/device-message/stream.js.map +1 -1
  61. package/esm/index.d.ts +1 -2
  62. package/esm/index.d.ts.map +1 -1
  63. package/esm/index.js +1 -2
  64. package/esm/index.js.map +1 -1
  65. package/esm/options/1_16/codec-options.d.ts +2 -3
  66. package/esm/options/1_16/codec-options.d.ts.map +1 -1
  67. package/esm/options/1_16/codec-options.js.map +1 -1
  68. package/esm/options/1_16/index.d.ts +3 -1
  69. package/esm/options/1_16/index.d.ts.map +1 -1
  70. package/esm/options/1_16/index.js +3 -1
  71. package/esm/options/1_16/index.js.map +1 -1
  72. package/esm/options/1_16/options.d.ts +42 -96
  73. package/esm/options/1_16/options.d.ts.map +1 -1
  74. package/esm/options/1_16/options.js +106 -143
  75. package/esm/options/1_16/options.js.map +1 -1
  76. package/esm/options/1_16/scroll.d.ts +1 -2
  77. package/esm/options/1_16/scroll.d.ts.map +1 -1
  78. package/esm/options/1_16/scroll.js +1 -2
  79. package/esm/options/1_16/scroll.js.map +1 -1
  80. package/esm/options/1_17.d.ts +1 -0
  81. package/esm/options/1_17.d.ts.map +1 -1
  82. package/esm/options/1_17.js +7 -1
  83. package/esm/options/1_17.js.map +1 -1
  84. package/esm/options/1_18.d.ts +49 -11
  85. package/esm/options/1_18.d.ts.map +1 -1
  86. package/esm/options/1_18.js +65 -32
  87. package/esm/options/1_18.js.map +1 -1
  88. package/esm/options/1_21.d.ts +26 -7
  89. package/esm/options/1_21.d.ts.map +1 -1
  90. package/esm/options/1_21.js +35 -20
  91. package/esm/options/1_21.js.map +1 -1
  92. package/esm/options/1_22/index.d.ts +1 -0
  93. package/esm/options/1_22/index.d.ts.map +1 -1
  94. package/esm/options/1_22/index.js +1 -0
  95. package/esm/options/1_22/index.js.map +1 -1
  96. package/esm/options/1_22/options.d.ts +32 -26
  97. package/esm/options/1_22/options.d.ts.map +1 -1
  98. package/esm/options/1_22/options.js +27 -16
  99. package/esm/options/1_22/options.js.map +1 -1
  100. package/esm/options/1_22/scroll.d.ts +1 -1
  101. package/esm/options/1_22/scroll.js +1 -1
  102. package/esm/options/1_23.d.ts +32 -8
  103. package/esm/options/1_23.d.ts.map +1 -1
  104. package/esm/options/1_23.js +24 -14
  105. package/esm/options/1_23.js.map +1 -1
  106. package/esm/options/1_24.d.ts +29 -4
  107. package/esm/options/1_24.d.ts.map +1 -1
  108. package/esm/options/1_24.js +17 -7
  109. package/esm/options/1_24.js.map +1 -1
  110. package/esm/options/1_25/options.d.ts +6 -2
  111. package/esm/options/1_25/options.d.ts.map +1 -1
  112. package/esm/options/1_25/options.js +16 -2
  113. package/esm/options/1_25/options.js.map +1 -1
  114. package/esm/options/1_25/scroll.d.ts.map +1 -1
  115. package/esm/options/1_25/scroll.js +2 -1
  116. package/esm/options/1_25/scroll.js.map +1 -1
  117. package/esm/options/2_0.d.ts +12 -8
  118. package/esm/options/2_0.d.ts.map +1 -1
  119. package/esm/options/2_0.js +80 -11
  120. package/esm/options/2_0.js.map +1 -1
  121. package/esm/options/codec.d.ts +4 -4
  122. package/esm/options/codec.d.ts.map +1 -1
  123. package/esm/options/codec.js +3 -3
  124. package/esm/options/codec.js.map +1 -1
  125. package/esm/options/index.d.ts +4 -0
  126. package/esm/options/index.d.ts.map +1 -1
  127. package/esm/options/index.js +4 -0
  128. package/esm/options/index.js.map +1 -1
  129. package/esm/options/types.d.ts +73 -33
  130. package/esm/options/types.d.ts.map +1 -1
  131. package/esm/options/types.js +52 -0
  132. package/esm/options/types.js.map +1 -1
  133. package/package.json +7 -14
  134. package/src/codec/av1.ts +33 -0
  135. package/src/codec/h264.ts +317 -0
  136. package/src/codec/h265.ts +1375 -0
  137. package/src/codec/index.ts +4 -0
  138. package/src/codec/nalu.ts +373 -0
  139. package/src/control/back-or-screen-on.ts +1 -1
  140. package/{esm/control/simple.js → src/control/basic.ts} +3 -3
  141. package/src/control/index.ts +2 -0
  142. package/src/control/inject-keycode.ts +1 -3
  143. package/src/control/inject-text.ts +1 -3
  144. package/src/control/inject-touch.ts +16 -55
  145. package/src/control/rotate-device.ts +2 -7
  146. package/src/control/serializer.ts +42 -101
  147. package/src/control/set-screen-power-mode.ts +1 -3
  148. package/src/control/type.ts +32 -0
  149. package/src/control/writer.ts +87 -0
  150. package/src/device-message/stream.ts +32 -12
  151. package/src/index.ts +1 -2
  152. package/src/options/1_16/codec-options.ts +2 -3
  153. package/src/options/1_16/float-to-uint16.ts +33 -0
  154. package/src/options/1_16/index.ts +3 -1
  155. package/src/options/1_16/init.ts +80 -0
  156. package/src/options/1_16/message.ts +55 -0
  157. package/src/options/1_16/options.ts +146 -255
  158. package/src/options/1_16/scroll.ts +1 -2
  159. package/src/options/1_17.ts +66 -0
  160. package/src/options/1_18.ts +101 -37
  161. package/src/options/1_21.ts +47 -25
  162. package/src/options/1_22/index.ts +1 -0
  163. package/src/options/1_22/init.ts +19 -0
  164. package/src/options/1_22/options.ts +38 -45
  165. package/src/options/1_22/scroll.ts +1 -1
  166. package/src/options/1_23.ts +33 -21
  167. package/src/options/1_24.ts +23 -11
  168. package/src/options/1_25/options.ts +22 -4
  169. package/src/options/1_25/scroll.ts +2 -1
  170. package/src/options/2_0.ts +342 -0
  171. package/src/options/codec.ts +98 -0
  172. package/src/options/index.ts +4 -0
  173. package/src/options/latest.ts +14 -0
  174. package/src/options/types.ts +152 -42
  175. package/tsconfig.build.json +9 -1
  176. package/tsconfig.build.tsbuildinfo +1 -1
  177. package/esm/adb/client.d.ts +0 -41
  178. package/esm/adb/client.d.ts.map +0 -1
  179. package/esm/adb/client.js +0 -224
  180. package/esm/adb/client.js.map +0 -1
  181. package/esm/adb/connection.d.ts +0 -49
  182. package/esm/adb/connection.d.ts.map +0 -1
  183. package/esm/adb/connection.js +0 -122
  184. package/esm/adb/connection.js.map +0 -1
  185. package/esm/adb/index.d.ts +0 -4
  186. package/esm/adb/index.d.ts.map +0 -1
  187. package/esm/adb/index.js +0 -4
  188. package/esm/adb/index.js.map +0 -1
  189. package/esm/adb/options/1_16.d.ts +0 -8
  190. package/esm/adb/options/1_16.d.ts.map +0 -1
  191. package/esm/adb/options/1_16.js +0 -20
  192. package/esm/adb/options/1_16.js.map +0 -1
  193. package/esm/adb/options/1_22.d.ts +0 -8
  194. package/esm/adb/options/1_22.d.ts.map +0 -1
  195. package/esm/adb/options/1_22.js +0 -17
  196. package/esm/adb/options/1_22.js.map +0 -1
  197. package/esm/adb/options/1_26.d.ts +0 -9
  198. package/esm/adb/options/1_26.d.ts.map +0 -1
  199. package/esm/adb/options/1_26.js +0 -11
  200. package/esm/adb/options/1_26.js.map +0 -1
  201. package/esm/adb/options/2_0.d.ts +0 -8
  202. package/esm/adb/options/2_0.d.ts.map +0 -1
  203. package/esm/adb/options/2_0.js +0 -13
  204. package/esm/adb/options/2_0.js.map +0 -1
  205. package/esm/adb/options/index.d.ts +0 -4
  206. package/esm/adb/options/index.d.ts.map +0 -1
  207. package/esm/adb/options/index.js +0 -4
  208. package/esm/adb/options/index.js.map +0 -1
  209. package/esm/adb/options/types.d.ts +0 -24
  210. package/esm/adb/options/types.d.ts.map +0 -1
  211. package/esm/adb/options/types.js +0 -37
  212. package/esm/adb/options/types.js.map +0 -1
  213. package/esm/codec.d.ts +0 -34
  214. package/esm/codec.d.ts.map +0 -1
  215. package/esm/codec.js +0 -37
  216. package/esm/codec.js.map +0 -1
  217. package/esm/control/simple.d.ts +0 -5
  218. package/esm/control/simple.d.ts.map +0 -1
  219. package/esm/control/simple.js.map +0 -1
  220. package/esm/decoder.d.ts +0 -2
  221. package/esm/decoder.d.ts.map +0 -1
  222. package/esm/decoder.js +0 -2
  223. package/esm/decoder.js.map +0 -1
  224. package/esm/options/1.17.d.ts +0 -3
  225. package/esm/options/1.17.d.ts.map +0 -1
  226. package/esm/options/1.17.js +0 -2
  227. package/esm/options/1.17.js.map +0 -1
  228. package/esm/options/1_16/h264-configuration.d.ts +0 -49
  229. package/esm/options/1_16/h264-configuration.d.ts.map +0 -1
  230. package/esm/options/1_16/h264-configuration.js +0 -414
  231. package/esm/options/1_16/h264-configuration.js.map +0 -1
  232. package/esm/options/1_16/sps.d.ts +0 -22
  233. package/esm/options/1_16/sps.d.ts.map +0 -1
  234. package/esm/options/1_16/sps.js +0 -263
  235. package/esm/options/1_16/sps.js.map +0 -1
  236. package/esm/options/1_26.d.ts +0 -57
  237. package/esm/options/1_26.d.ts.map +0 -1
  238. package/esm/options/1_26.js +0 -67
  239. package/esm/options/1_26.js.map +0 -1
  240. package/esm/options/2.d.ts +0 -57
  241. package/esm/options/2.d.ts.map +0 -1
  242. package/esm/options/2.js +0 -67
  243. package/esm/options/2.js.map +0 -1
  244. package/src/adb/client.ts +0 -329
  245. package/src/adb/connection.ts +0 -209
  246. package/src/adb/index.ts +0 -3
  247. package/src/adb/options/1_16.ts +0 -32
  248. package/src/adb/options/1_22.ts +0 -26
  249. package/src/adb/options/index.ts +0 -3
  250. package/src/adb/options/types.ts +0 -75
  251. package/src/codec.ts +0 -35
  252. package/src/options/1_16/h264-configuration.ts +0 -485
@@ -1,5 +1,4 @@
1
- import Struct, { NumberFieldType } from "@yume-chan/struct";
2
- import { ScrcpyControlMessageType } from "./type.js";
1
+ import type { ScrcpyInjectTouchControlMessage2_0 } from "../options/index.js";
3
2
  export declare enum AndroidMotionEventAction {
4
3
  Down = 0,
5
4
  Up = 1,
@@ -15,24 +14,20 @@ export declare enum AndroidMotionEventAction {
15
14
  ButtonPress = 11,
16
15
  ButtonRelease = 12
17
16
  }
17
+ export declare enum AndroidMotionEventButton {
18
+ Primary = 1,
19
+ Secondary = 2,
20
+ Tertiary = 4,
21
+ Back = 8,
22
+ Forward = 16,
23
+ StylusPrimary = 32,
24
+ StylusSecondary = 64
25
+ }
18
26
  export declare namespace ScrcpyPointerId {
19
- const Mouse: bigint;
20
- const Finger: bigint;
21
- const VirtualMouse: bigint;
22
- const VirtualFinger: bigint;
27
+ const Mouse = -1n;
28
+ const Finger = -2n;
29
+ const VirtualMouse = -3n;
30
+ const VirtualFinger = -4n;
23
31
  }
24
- export declare function clamp(value: number, min: number, max: number): number;
25
- export declare const ScrcpyFloatToUint16NumberType: NumberFieldType;
26
- export declare const ScrcpyInjectTouchControlMessage: Struct<{
27
- type: ScrcpyControlMessageType.InjectTouch;
28
- action: AndroidMotionEventAction;
29
- pointerId: bigint;
30
- pointerX: number;
31
- pointerY: number;
32
- screenWidth: number;
33
- screenHeight: number;
34
- pressure: number;
35
- buttons: number;
36
- }, never, Record<never, never>, undefined>;
37
- export type ScrcpyInjectTouchControlMessage = (typeof ScrcpyInjectTouchControlMessage)["TInit"];
32
+ export type ScrcpyInjectTouchControlMessage = ScrcpyInjectTouchControlMessage2_0;
38
33
  //# sourceMappingURL=inject-touch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inject-touch.d.ts","sourceRoot":"","sources":["../../src/control/inject-touch.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAEX,eAAe,EAElB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,oBAAY,wBAAwB;IAChC,IAAI,IAAA;IACJ,EAAE,IAAA;IACF,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,OAAO,IAAA;IACP,WAAW,IAAA;IACX,SAAS,IAAA;IACT,SAAS,IAAA;IACT,MAAM,IAAA;IACN,UAAU,IAAA;IACV,SAAS,KAAA;IACT,WAAW,KAAA;IACX,aAAa,KAAA;CAChB;AAGD,yBAAiB,eAAe,CAAC;IACtB,MAAM,KAAK,QAAa,CAAC;IACzB,MAAM,MAAM,QAAa,CAAC;IAC1B,MAAM,YAAY,QAAa,CAAC;IAChC,MAAM,aAAa,QAAa,CAAC;CAC3C;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUrE;AAED,eAAO,MAAM,6BAA6B,EAAE,eAc3C,CAAC;AAMF,eAAO,MAAM,+BAA+B;;;;;;;;;;0CAStB,CAAC;AAEvB,MAAM,MAAM,+BAA+B,GACvC,CAAC,OAAO,+BAA+B,CAAC,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"inject-touch.d.ts","sourceRoot":"","sources":["../../src/control/inject-touch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,qBAAqB,CAAC;AAG9E,oBAAY,wBAAwB;IAChC,IAAI,IAAA;IACJ,EAAE,IAAA;IACF,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,OAAO,IAAA;IACP,WAAW,IAAA;IACX,SAAS,IAAA;IACT,SAAS,IAAA;IACT,MAAM,IAAA;IACN,UAAU,IAAA;IACV,SAAS,KAAA;IACT,WAAW,KAAA;IACX,aAAa,KAAA;CAChB;AAED,oBAAY,wBAAwB;IAChC,OAAO,IAAO;IACd,SAAS,IAAO;IAChB,QAAQ,IAAO;IACf,IAAI,IAAO;IACX,OAAO,KAAO;IACd,aAAa,KAAO;IACpB,eAAe,KAAO;CACzB;AAGD,yBAAiB,eAAe,CAAC;IACtB,MAAM,KAAK,MAAM,CAAC;IAClB,MAAM,MAAM,MAAM,CAAC;IACnB,MAAM,YAAY,MAAM,CAAC;IACzB,MAAM,aAAa,MAAM,CAAC;CACpC;AAED,MAAM,MAAM,+BAA+B,GACvC,kCAAkC,CAAC"}
@@ -1,5 +1,3 @@
1
- import Struct, { NumberFieldDefinition, NumberFieldType, placeholder, } from "@yume-chan/struct";
2
- import { ScrcpyControlMessageType } from "./type.js";
3
1
  // https://developer.android.com/reference/android/view/MotionEvent#constants_1
4
2
  export var AndroidMotionEventAction;
5
3
  (function (AndroidMotionEventAction) {
@@ -17,47 +15,22 @@ export var AndroidMotionEventAction;
17
15
  AndroidMotionEventAction[AndroidMotionEventAction["ButtonPress"] = 11] = "ButtonPress";
18
16
  AndroidMotionEventAction[AndroidMotionEventAction["ButtonRelease"] = 12] = "ButtonRelease";
19
17
  })(AndroidMotionEventAction = AndroidMotionEventAction || (AndroidMotionEventAction = {}));
18
+ export var AndroidMotionEventButton;
19
+ (function (AndroidMotionEventButton) {
20
+ AndroidMotionEventButton[AndroidMotionEventButton["Primary"] = 1] = "Primary";
21
+ AndroidMotionEventButton[AndroidMotionEventButton["Secondary"] = 2] = "Secondary";
22
+ AndroidMotionEventButton[AndroidMotionEventButton["Tertiary"] = 4] = "Tertiary";
23
+ AndroidMotionEventButton[AndroidMotionEventButton["Back"] = 8] = "Back";
24
+ AndroidMotionEventButton[AndroidMotionEventButton["Forward"] = 16] = "Forward";
25
+ AndroidMotionEventButton[AndroidMotionEventButton["StylusPrimary"] = 32] = "StylusPrimary";
26
+ AndroidMotionEventButton[AndroidMotionEventButton["StylusSecondary"] = 64] = "StylusSecondary";
27
+ })(AndroidMotionEventButton = AndroidMotionEventButton || (AndroidMotionEventButton = {}));
20
28
  // eslint-disable-next-line @typescript-eslint/no-namespace
21
29
  export var ScrcpyPointerId;
22
30
  (function (ScrcpyPointerId) {
23
- ScrcpyPointerId.Mouse = BigInt(-1);
24
- ScrcpyPointerId.Finger = BigInt(-2);
25
- ScrcpyPointerId.VirtualMouse = BigInt(-3);
26
- ScrcpyPointerId.VirtualFinger = BigInt(-4);
31
+ ScrcpyPointerId.Mouse = -1n;
32
+ ScrcpyPointerId.Finger = -2n;
33
+ ScrcpyPointerId.VirtualMouse = -3n;
34
+ ScrcpyPointerId.VirtualFinger = -4n;
27
35
  })(ScrcpyPointerId = ScrcpyPointerId || (ScrcpyPointerId = {}));
28
- export function clamp(value, min, max) {
29
- if (value < min) {
30
- return min;
31
- }
32
- if (value > max) {
33
- return max;
34
- }
35
- return value;
36
- }
37
- export const ScrcpyFloatToUint16NumberType = {
38
- size: 2,
39
- signed: false,
40
- deserialize(array, littleEndian) {
41
- const value = NumberFieldType.Uint16.deserialize(array, littleEndian);
42
- // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/server/src/main/java/com/genymobile/scrcpy/Binary.java#L22
43
- return value === 0xffff ? 1 : value / 0x10000;
44
- },
45
- serialize(dataView, offset, value, littleEndian) {
46
- // https://github.com/Genymobile/scrcpy/blob/1f138aef41de651668043b32c4effc2d4adbfc44/app/src/util/binary.h#L51
47
- value = clamp(value, -1, 1);
48
- value = value === 1 ? 0xffff : value * 0x10000;
49
- NumberFieldType.Uint16.serialize(dataView, offset, value, littleEndian);
50
- },
51
- };
52
- const ScrcpyFloatToUint16FieldDefinition = new NumberFieldDefinition(ScrcpyFloatToUint16NumberType);
53
- export const ScrcpyInjectTouchControlMessage = new Struct()
54
- .uint8("type", ScrcpyControlMessageType.InjectTouch)
55
- .uint8("action", placeholder())
56
- .uint64("pointerId")
57
- .uint32("pointerX")
58
- .uint32("pointerY")
59
- .uint16("screenWidth")
60
- .uint16("screenHeight")
61
- .field("pressure", ScrcpyFloatToUint16FieldDefinition)
62
- .uint32("buttons");
63
36
  //# sourceMappingURL=inject-touch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inject-touch.js","sourceRoot":"","sources":["../../src/control/inject-touch.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EACX,qBAAqB,EACrB,eAAe,EACf,WAAW,GACd,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD,+EAA+E;AAC/E,MAAM,CAAN,IAAY,wBAcX;AAdD,WAAY,wBAAwB;IAChC,uEAAI,CAAA;IACJ,mEAAE,CAAA;IACF,uEAAI,CAAA;IACJ,2EAAM,CAAA;IACN,6EAAO,CAAA;IACP,qFAAW,CAAA;IACX,iFAAS,CAAA;IACT,iFAAS,CAAA;IACT,2EAAM,CAAA;IACN,mFAAU,CAAA;IACV,kFAAS,CAAA;IACT,sFAAW,CAAA;IACX,0FAAa,CAAA;AACjB,CAAC,EAdW,wBAAwB,GAAxB,wBAAwB,KAAxB,wBAAwB,QAcnC;AAED,2DAA2D;AAC3D,MAAM,KAAW,eAAe,CAK/B;AALD,WAAiB,eAAe;IACf,qBAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,sBAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,4BAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,6BAAa,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC,EALgB,eAAe,GAAf,eAAe,KAAf,eAAe,QAK/B;AAED,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACzD,IAAI,KAAK,GAAG,GAAG,EAAE;QACb,OAAO,GAAG,CAAC;KACd;IAED,IAAI,KAAK,GAAG,GAAG,EAAE;QACb,OAAO,GAAG,CAAC;KACd;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAoB;IAC1D,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,KAAK;IACb,WAAW,CAAC,KAAK,EAAE,YAAY;QAC3B,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtE,gJAAgJ;QAChJ,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;IAClD,CAAC;IACD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY;QAC3C,+GAA+G;QAC/G,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;QAC/C,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC;CACJ,CAAC;AAEF,MAAM,kCAAkC,GAAG,IAAI,qBAAqB,CAChE,6BAA6B,CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,MAAM,EAAE;KACtD,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,WAAoB,CAAC;KAC5D,KAAK,CAAC,QAAQ,EAAE,WAAW,EAA4B,CAAC;KACxD,MAAM,CAAC,WAAW,CAAC;KACnB,MAAM,CAAC,UAAU,CAAC;KAClB,MAAM,CAAC,UAAU,CAAC;KAClB,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,cAAc,CAAC;KACtB,KAAK,CAAC,UAAU,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"inject-touch.js","sourceRoot":"","sources":["../../src/control/inject-touch.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,CAAN,IAAY,wBAcX;AAdD,WAAY,wBAAwB;IAChC,uEAAI,CAAA;IACJ,mEAAE,CAAA;IACF,uEAAI,CAAA;IACJ,2EAAM,CAAA;IACN,6EAAO,CAAA;IACP,qFAAW,CAAA;IACX,iFAAS,CAAA;IACT,iFAAS,CAAA;IACT,2EAAM,CAAA;IACN,mFAAU,CAAA;IACV,kFAAS,CAAA;IACT,sFAAW,CAAA;IACX,0FAAa,CAAA;AACjB,CAAC,EAdW,wBAAwB,GAAxB,wBAAwB,KAAxB,wBAAwB,QAcnC;AAED,MAAM,CAAN,IAAY,wBAQX;AARD,WAAY,wBAAwB;IAChC,6EAAc,CAAA;IACd,iFAAgB,CAAA;IAChB,+EAAe,CAAA;IACf,uEAAW,CAAA;IACX,8EAAc,CAAA;IACd,0FAAoB,CAAA;IACpB,8FAAsB,CAAA;AAC1B,CAAC,EARW,wBAAwB,GAAxB,wBAAwB,KAAxB,wBAAwB,QAQnC;AAED,2DAA2D;AAC3D,MAAM,KAAW,eAAe,CAK/B;AALD,WAAiB,eAAe;IACf,qBAAK,GAAG,CAAC,EAAE,CAAC;IACZ,sBAAM,GAAG,CAAC,EAAE,CAAC;IACb,4BAAY,GAAG,CAAC,EAAE,CAAC;IACnB,6BAAa,GAAG,CAAC,EAAE,CAAC;AACrC,CAAC,EALgB,eAAe,GAAf,eAAe,KAAf,eAAe,QAK/B"}
@@ -1,7 +1,5 @@
1
- import Struct from "@yume-chan/struct";
2
- import { ScrcpyControlMessageType } from "./type.js";
3
- export declare const ScrcpyRotateDeviceControlMessage: Struct<{
4
- type: ScrcpyControlMessageType.RotateDevice;
1
+ export declare const ScrcpyRotateDeviceControlMessage: import("@yume-chan/struct").default<{
2
+ type: number;
5
3
  }, never, Record<never, never>, undefined>;
6
4
  export type ScrcpyRotateDeviceControlMessage = (typeof ScrcpyRotateDeviceControlMessage)["TInit"];
7
5
  //# sourceMappingURL=rotate-device.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rotate-device.d.ts","sourceRoot":"","sources":["../../src/control/rotate-device.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD,eAAO,MAAM,gCAAgC;;0CAG5C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GACxC,CAAC,OAAO,gCAAgC,CAAC,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"rotate-device.d.ts","sourceRoot":"","sources":["../../src/control/rotate-device.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gCAAgC;;0CAAsB,CAAC;AAEpE,MAAM,MAAM,gCAAgC,GACxC,CAAC,OAAO,gCAAgC,CAAC,CAAC,OAAO,CAAC,CAAC"}
@@ -1,4 +1,3 @@
1
- import Struct from "@yume-chan/struct";
2
- import { ScrcpyControlMessageType } from "./type.js";
3
- export const ScrcpyRotateDeviceControlMessage = new Struct().uint8("type", ScrcpyControlMessageType.RotateDevice);
1
+ import { BasicControlMessage } from "./basic.js";
2
+ export const ScrcpyRotateDeviceControlMessage = BasicControlMessage;
4
3
  //# sourceMappingURL=rotate-device.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rotate-device.js","sourceRoot":"","sources":["../../src/control/rotate-device.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,MAAM,EAAE,CAAC,KAAK,CAC9D,MAAM,EACN,wBAAwB,CAAC,YAAqB,CACjD,CAAC"}
1
+ {"version":3,"file":"rotate-device.js","sourceRoot":"","sources":["../../src/control/rotate-device.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,CAAC,MAAM,gCAAgC,GAAG,mBAAmB,CAAC"}
@@ -1,36 +1,26 @@
1
- import type { Consumable, WritableStream } from "@yume-chan/stream-extra";
2
- import type { ScrcpyOptions, ScrcpyOptionsInit1_16 } from "../options/index.js";
1
+ import type { ScrcpyOptions } from "../options/index.js";
3
2
  import type { AndroidKeyEventAction } from "./inject-keycode.js";
4
3
  import { ScrcpyInjectKeyCodeControlMessage } from "./inject-keycode.js";
5
4
  import type { ScrcpyInjectScrollControlMessage } from "./inject-scroll.js";
6
- import { ScrcpyInjectTouchControlMessage } from "./inject-touch.js";
5
+ import type { ScrcpyInjectTouchControlMessage } from "./inject-touch.js";
7
6
  import type { AndroidScreenPowerMode } from "./set-screen-power-mode.js";
8
- import { ScrcpyControlMessageType } from "./type.js";
9
7
  export declare class ScrcpyControlMessageSerializer {
10
- private options;
11
- /** Control message type values for current version of server */
12
- private types;
13
- private writer;
14
- private scrollController;
15
- constructor(stream: WritableStream<Consumable<Uint8Array>>, options: ScrcpyOptions<ScrcpyOptionsInit1_16>);
16
- getActualMessageType(type: ScrcpyControlMessageType): number;
17
- addMessageType<T extends {
18
- type: ScrcpyControlMessageType;
19
- }>(message: Omit<T, "type">, type: T["type"]): T;
20
- private write;
21
- injectKeyCode(message: Omit<ScrcpyInjectKeyCodeControlMessage, "type">): Promise<void>;
22
- injectText(text: string): Promise<void>;
8
+ private _options;
9
+ private _typeValues;
10
+ private _scrollController;
11
+ constructor(options: ScrcpyOptions<object>);
12
+ injectKeyCode(message: Omit<ScrcpyInjectKeyCodeControlMessage, "type">): Uint8Array;
13
+ injectText(text: string): Uint8Array;
23
14
  /**
24
15
  * `pressure` is a float value between 0 and 1.
25
16
  */
26
- injectTouch(message: Omit<ScrcpyInjectTouchControlMessage, "type">): Promise<void>;
17
+ injectTouch(message: Omit<ScrcpyInjectTouchControlMessage, "type">): Uint8Array;
27
18
  /**
28
19
  * `scrollX` and `scrollY` are float values between 0 and 1.
29
20
  */
30
- injectScroll(message: Omit<ScrcpyInjectScrollControlMessage, "type">): Promise<void> | undefined;
31
- backOrScreenOn(action: AndroidKeyEventAction): Promise<void>;
32
- setScreenPowerMode(mode: AndroidScreenPowerMode): Promise<void>;
33
- rotateDevice(): Promise<void>;
34
- close(): Promise<void>;
21
+ injectScroll(message: Omit<ScrcpyInjectScrollControlMessage, "type">): Uint8Array | undefined;
22
+ backOrScreenOn(action: AndroidKeyEventAction): Uint8Array | undefined;
23
+ setScreenPowerMode(mode: AndroidScreenPowerMode): Uint8Array;
24
+ rotateDevice(): Uint8Array;
35
25
  }
36
26
  //# sourceMappingURL=serializer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/control/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EACV,cAAc,EAEjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EACR,aAAa,EACb,qBAAqB,EAExB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD,qBAAa,8BAA8B;IACvC,OAAO,CAAC,OAAO,CAAuC;IACtD,gEAAgE;IAChE,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,gBAAgB,CAAyB;gBAG7C,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAC9C,OAAO,EAAE,aAAa,CAAC,qBAAqB,CAAC;IAS1C,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAQ5D,cAAc,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,wBAAwB,CAAA;KAAE,EAC9D,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EACxB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAChB,CAAC;YAKU,KAAK;IAIZ,aAAa,CAChB,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC;IAYrD,UAAU,CAAC,IAAI,EAAE,MAAM;IAW9B;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC;IAWzE;;OAEG;IACI,YAAY,CACf,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC;IAa9C,cAAc,CAAC,MAAM,EAAE,qBAAqB;IAalD,kBAAkB,CAAC,IAAI,EAAE,sBAAsB;IAW/C,YAAY;IAUZ,KAAK;CAGf"}
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/control/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,aAAa,EAEhB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAOzE,qBAAa,8BAA8B;IACvC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,iBAAiB,CAAyB;gBAE/B,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;IAM1C,aAAa,CAChB,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC;IAUrD,UAAU,CAAC,IAAI,EAAE,MAAM;IAO9B;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC;IASzE;;OAEG;IACI,YAAY,CACf,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC;IAUpD,cAAc,CAAC,MAAM,EAAE,qBAAqB;IAO5C,kBAAkB,CAAC,IAAI,EAAE,sBAAsB;IAS/C,YAAY;CAKtB"}
@@ -1,83 +1,54 @@
1
- import { ConsumableWritableStream } from "@yume-chan/stream-extra";
2
1
  import { ScrcpyInjectKeyCodeControlMessage } from "./inject-keycode.js";
3
2
  import { ScrcpyInjectTextControlMessage } from "./inject-text.js";
4
- import { ScrcpyInjectTouchControlMessage } from "./inject-touch.js";
5
3
  import { ScrcpyRotateDeviceControlMessage } from "./rotate-device.js";
6
4
  import { ScrcpySetScreenPowerModeControlMessage } from "./set-screen-power-mode.js";
7
- import { ScrcpyControlMessageType } from "./type.js";
5
+ import { ScrcpyControlMessageType, ScrcpyControlMessageTypeValue, } from "./type.js";
8
6
  export class ScrcpyControlMessageSerializer {
9
- options;
10
- /** Control message type values for current version of server */
11
- types;
12
- writer;
13
- scrollController;
14
- constructor(stream, options) {
15
- this.writer = stream.getWriter();
16
- this.options = options;
17
- this.types = options.getControlMessageTypes();
18
- this.scrollController = options.getScrollController();
19
- }
20
- getActualMessageType(type) {
21
- const value = this.types.indexOf(type);
22
- if (value === -1) {
23
- throw new Error("Not supported");
24
- }
25
- return value;
26
- }
27
- addMessageType(message, type) {
28
- message.type = this.getActualMessageType(type);
29
- return message;
30
- }
31
- async write(data) {
32
- await ConsumableWritableStream.write(this.writer, data);
7
+ _options;
8
+ _typeValues;
9
+ _scrollController;
10
+ constructor(options) {
11
+ this._options = options;
12
+ this._typeValues = new ScrcpyControlMessageTypeValue(options);
13
+ this._scrollController = options.createScrollController();
33
14
  }
34
15
  injectKeyCode(message) {
35
- return this.write(ScrcpyInjectKeyCodeControlMessage.serialize(this.addMessageType(message, ScrcpyControlMessageType.InjectKeyCode)));
16
+ return ScrcpyInjectKeyCodeControlMessage.serialize(this._typeValues.fillMessageType(message, ScrcpyControlMessageType.InjectKeyCode));
36
17
  }
37
18
  injectText(text) {
38
- return this.write(ScrcpyInjectTextControlMessage.serialize({
19
+ return ScrcpyInjectTextControlMessage.serialize({
39
20
  text,
40
- type: this.getActualMessageType(ScrcpyControlMessageType.InjectText),
41
- }));
21
+ type: this._typeValues.get(ScrcpyControlMessageType.InjectText),
22
+ });
42
23
  }
43
24
  /**
44
25
  * `pressure` is a float value between 0 and 1.
45
26
  */
46
27
  injectTouch(message) {
47
- return this.write(ScrcpyInjectTouchControlMessage.serialize(this.addMessageType(message, ScrcpyControlMessageType.InjectTouch)));
28
+ return this._options.serializeInjectTouchControlMessage(this._typeValues.fillMessageType(message, ScrcpyControlMessageType.InjectTouch));
48
29
  }
49
30
  /**
50
31
  * `scrollX` and `scrollY` are float values between 0 and 1.
51
32
  */
52
33
  injectScroll(message) {
53
- const data = this.scrollController.serializeScrollMessage(this.addMessageType(message, ScrcpyControlMessageType.InjectScroll));
54
- if (!data) {
55
- return;
56
- }
57
- return this.write(data);
34
+ return this._scrollController.serializeScrollMessage(this._typeValues.fillMessageType(message, ScrcpyControlMessageType.InjectScroll));
58
35
  }
59
- async backOrScreenOn(action) {
60
- const buffer = this.options.serializeBackOrScreenOnControlMessage({
36
+ backOrScreenOn(action) {
37
+ return this._options.serializeBackOrScreenOnControlMessage({
61
38
  action,
62
- type: this.getActualMessageType(ScrcpyControlMessageType.BackOrScreenOn),
39
+ type: this._typeValues.get(ScrcpyControlMessageType.BackOrScreenOn),
63
40
  });
64
- if (buffer) {
65
- return await this.write(buffer);
66
- }
67
41
  }
68
42
  setScreenPowerMode(mode) {
69
- return this.write(ScrcpySetScreenPowerModeControlMessage.serialize({
43
+ return ScrcpySetScreenPowerModeControlMessage.serialize({
70
44
  mode,
71
- type: this.getActualMessageType(ScrcpyControlMessageType.SetScreenPowerMode),
72
- }));
45
+ type: this._typeValues.get(ScrcpyControlMessageType.SetScreenPowerMode),
46
+ });
73
47
  }
74
48
  rotateDevice() {
75
- return this.write(ScrcpyRotateDeviceControlMessage.serialize({
76
- type: this.getActualMessageType(ScrcpyControlMessageType.RotateDevice),
77
- }));
78
- }
79
- close() {
80
- return this.writer.close();
49
+ return ScrcpyRotateDeviceControlMessage.serialize({
50
+ type: this._typeValues.get(ScrcpyControlMessageType.RotateDevice),
51
+ });
81
52
  }
82
53
  }
83
54
  //# sourceMappingURL=serializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/control/serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/control/serializer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,sCAAsC,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EACH,wBAAwB,EACxB,6BAA6B,GAChC,MAAM,WAAW,CAAC;AAEnB,MAAM,OAAO,8BAA8B;IAC/B,QAAQ,CAAwB;IAChC,WAAW,CAAgC;IAC3C,iBAAiB,CAAyB;IAElD,YAAmB,OAA8B;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAC9D,CAAC;IAEM,aAAa,CAChB,OAAwD;QAExD,OAAO,iCAAiC,CAAC,SAAS,CAC9C,IAAI,CAAC,WAAW,CAAC,eAAe,CAC5B,OAAO,EACP,wBAAwB,CAAC,aAAa,CACzC,CACJ,CAAC;IACN,CAAC;IAEM,UAAU,CAAC,IAAY;QAC1B,OAAO,8BAA8B,CAAC,SAAS,CAAC;YAC5C,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,CAAC,UAAU,CAAC;SAClE,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,OAAsD;QACrE,OAAO,IAAI,CAAC,QAAQ,CAAC,kCAAkC,CACnD,IAAI,CAAC,WAAW,CAAC,eAAe,CAC5B,OAAO,EACP,wBAAwB,CAAC,WAAW,CACvC,CACJ,CAAC;IACN,CAAC;IAED;;OAEG;IACI,YAAY,CACf,OAAuD;QAEvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAChD,IAAI,CAAC,WAAW,CAAC,eAAe,CAC5B,OAAO,EACP,wBAAwB,CAAC,YAAY,CACxC,CACJ,CAAC;IACN,CAAC;IAEM,cAAc,CAAC,MAA6B;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACvD,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,CAAC,cAAc,CAAC;SACtE,CAAC,CAAC;IACP,CAAC;IAEM,kBAAkB,CAAC,IAA4B;QAClD,OAAO,sCAAsC,CAAC,SAAS,CAAC;YACpD,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CACtB,wBAAwB,CAAC,kBAAkB,CAC9C;SACJ,CAAC,CAAC;IACP,CAAC;IAEM,YAAY;QACf,OAAO,gCAAgC,CAAC,SAAS,CAAC;YAC9C,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,CAAC,YAAY,CAAC;SACpE,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,11 +1,10 @@
1
1
  import Struct from "@yume-chan/struct";
2
- import { ScrcpyControlMessageType } from "./type.js";
3
2
  export declare enum AndroidScreenPowerMode {
4
3
  Off = 0,
5
4
  Normal = 2
6
5
  }
7
6
  export declare const ScrcpySetScreenPowerModeControlMessage: Struct<{
8
- type: ScrcpyControlMessageType.SetScreenPowerMode;
7
+ type: number;
9
8
  mode: AndroidScreenPowerMode;
10
9
  }, never, Record<never, never>, undefined>;
11
10
  export type ScrcpySetScreenPowerModeControlMessage = (typeof ScrcpySetScreenPowerModeControlMessage)["TInit"];
@@ -1 +1 @@
1
- {"version":3,"file":"set-screen-power-mode.d.ts","sourceRoot":"","sources":["../../src/control/set-screen-power-mode.ts"],"names":[],"mappings":"AAAA,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,oBAAY,sBAAsB;IAC9B,GAAG,IAAI;IACP,MAAM,IAAI;CACb;AAED,eAAO,MAAM,sCAAsC;;;0CAEM,CAAC;AAE1D,MAAM,MAAM,sCAAsC,GAC9C,CAAC,OAAO,sCAAsC,CAAC,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"set-screen-power-mode.d.ts","sourceRoot":"","sources":["../../src/control/set-screen-power-mode.ts"],"names":[],"mappings":"AAAA,OAAO,MAAuB,MAAM,mBAAmB,CAAC;AAGxD,oBAAY,sBAAsB;IAC9B,GAAG,IAAI;IACP,MAAM,IAAI;CACb;AAED,eAAO,MAAM,sCAAsC;;;0CAEM,CAAC;AAE1D,MAAM,MAAM,sCAAsC,GAC9C,CAAC,OAAO,sCAAsC,CAAC,CAAC,OAAO,CAAC,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import Struct, { placeholder } from "@yume-chan/struct";
2
- import { ScrcpyControlMessageType } from "./type.js";
3
2
  // https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/android/view/SurfaceControl.java;l=659;drc=20303e05bf73796124ab70a279cf849b61b97905
4
3
  export var AndroidScreenPowerMode;
5
4
  (function (AndroidScreenPowerMode) {
@@ -7,6 +6,6 @@ export var AndroidScreenPowerMode;
7
6
  AndroidScreenPowerMode[AndroidScreenPowerMode["Normal"] = 2] = "Normal";
8
7
  })(AndroidScreenPowerMode = AndroidScreenPowerMode || (AndroidScreenPowerMode = {}));
9
8
  export const ScrcpySetScreenPowerModeControlMessage = new Struct()
10
- .uint8("type", ScrcpyControlMessageType.SetScreenPowerMode)
9
+ .uint8("type")
11
10
  .uint8("mode", placeholder());
12
11
  //# sourceMappingURL=set-screen-power-mode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-screen-power-mode.js","sourceRoot":"","sources":["../../src/control/set-screen-power-mode.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAErD,8KAA8K;AAC9K,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,iEAAO,CAAA;IACP,uEAAU,CAAA;AACd,CAAC,EAHW,sBAAsB,GAAtB,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,MAAM,EAAE;KAC7D,KAAK,CAAC,MAAM,EAAE,wBAAwB,CAAC,kBAA2B,CAAC;KACnE,KAAK,CAAC,MAAM,EAAE,WAAW,EAA0B,CAAC,CAAC"}
1
+ {"version":3,"file":"set-screen-power-mode.js","sourceRoot":"","sources":["../../src/control/set-screen-power-mode.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,8KAA8K;AAC9K,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,iEAAO,CAAA;IACP,uEAAU,CAAA;AACd,CAAC,EAHW,sBAAsB,GAAtB,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,MAAM,EAAE;KAC7D,KAAK,CAAC,MAAM,CAAC;KACb,KAAK,CAAC,MAAM,EAAE,WAAW,EAA0B,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ScrcpyOptions } from "../options/index.js";
1
2
  export declare enum ScrcpyControlMessageType {
2
3
  InjectKeyCode = 0,
3
4
  InjectText = 1,
@@ -12,4 +13,17 @@ export declare enum ScrcpyControlMessageType {
12
13
  SetScreenPowerMode = 10,
13
14
  RotateDevice = 11
14
15
  }
16
+ /**
17
+ * Scrcpy control message types have different values between versions.
18
+ *
19
+ * This class provides a way to get the actual value for a given type.
20
+ */
21
+ export declare class ScrcpyControlMessageTypeValue {
22
+ private types;
23
+ constructor(options: ScrcpyOptions<object>);
24
+ get(type: ScrcpyControlMessageType): number;
25
+ fillMessageType<T extends {
26
+ type: ScrcpyControlMessageType;
27
+ }>(message: Omit<T, "type">, type: T["type"]): T;
28
+ }
15
29
  //# sourceMappingURL=type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/control/type.ts"],"names":[],"mappings":"AAGA,oBAAY,wBAAwB;IAChC,aAAa,IAAA;IACb,UAAU,IAAA;IACV,WAAW,IAAA;IACX,YAAY,IAAA;IACZ,cAAc,IAAA;IACd,uBAAuB,IAAA;IACvB,kBAAkB,IAAA;IAClB,yBAAyB,IAAA;IACzB,YAAY,IAAA;IACZ,YAAY,IAAA;IACZ,kBAAkB,KAAA;IAClB,YAAY,KAAA;CACf"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../src/control/type.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,oBAAY,wBAAwB;IAChC,aAAa,IAAA;IACb,UAAU,IAAA;IACV,WAAW,IAAA;IACX,YAAY,IAAA;IACZ,cAAc,IAAA;IACd,uBAAuB,IAAA;IACvB,kBAAkB,IAAA;IAClB,yBAAyB,IAAA;IACzB,YAAY,IAAA;IACZ,YAAY,IAAA;IACZ,kBAAkB,KAAA;IAClB,YAAY,KAAA;CACf;AAED;;;;GAIG;AACH,qBAAa,6BAA6B;IACtC,OAAO,CAAC,KAAK,CAAsC;gBAEhC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;IAI1C,GAAG,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;IAQ3C,eAAe,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,wBAAwB,CAAA;KAAE,EAC/D,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,EACxB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAChB,CAAC;CAIP"}
@@ -16,4 +16,26 @@ export var ScrcpyControlMessageType;
16
16
  ScrcpyControlMessageType[ScrcpyControlMessageType["SetScreenPowerMode"] = 10] = "SetScreenPowerMode";
17
17
  ScrcpyControlMessageType[ScrcpyControlMessageType["RotateDevice"] = 11] = "RotateDevice";
18
18
  })(ScrcpyControlMessageType = ScrcpyControlMessageType || (ScrcpyControlMessageType = {}));
19
+ /**
20
+ * Scrcpy control message types have different values between versions.
21
+ *
22
+ * This class provides a way to get the actual value for a given type.
23
+ */
24
+ export class ScrcpyControlMessageTypeValue {
25
+ types;
26
+ constructor(options) {
27
+ this.types = options.controlMessageTypes;
28
+ }
29
+ get(type) {
30
+ const value = this.types.indexOf(type);
31
+ if (value === -1) {
32
+ throw new Error("Not supported");
33
+ }
34
+ return value;
35
+ }
36
+ fillMessageType(message, type) {
37
+ message.type = this.get(type);
38
+ return message;
39
+ }
40
+ }
19
41
  //# sourceMappingURL=type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/control/type.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,6IAA6I;AAC7I,sFAAsF;AACtF,MAAM,CAAN,IAAY,wBAaX;AAbD,WAAY,wBAAwB;IAChC,yFAAa,CAAA;IACb,mFAAU,CAAA;IACV,qFAAW,CAAA;IACX,uFAAY,CAAA;IACZ,2FAAc,CAAA;IACd,6GAAuB,CAAA;IACvB,mGAAkB,CAAA;IAClB,iHAAyB,CAAA;IACzB,uFAAY,CAAA;IACZ,uFAAY,CAAA;IACZ,oGAAkB,CAAA;IAClB,wFAAY,CAAA;AAChB,CAAC,EAbW,wBAAwB,GAAxB,wBAAwB,KAAxB,wBAAwB,QAanC"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/control/type.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,6IAA6I;AAI7I,sFAAsF;AACtF,MAAM,CAAN,IAAY,wBAaX;AAbD,WAAY,wBAAwB;IAChC,yFAAa,CAAA;IACb,mFAAU,CAAA;IACV,qFAAW,CAAA;IACX,uFAAY,CAAA;IACZ,2FAAc,CAAA;IACd,6GAAuB,CAAA;IACvB,mGAAkB,CAAA;IAClB,iHAAyB,CAAA;IACzB,uFAAY,CAAA;IACZ,uFAAY,CAAA;IACZ,oGAAkB,CAAA;IAClB,wFAAY,CAAA;AAChB,CAAC,EAbW,wBAAwB,GAAxB,wBAAwB,KAAxB,wBAAwB,QAanC;AAED;;;;GAIG;AACH,MAAM,OAAO,6BAA6B;IAC9B,KAAK,CAAsC;IAEnD,YAAmB,OAA8B;QAC7C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAC7C,CAAC;IAEM,GAAG,CAAC,IAA8B;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;SACpC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,eAAe,CAClB,OAAwB,EACxB,IAAe;QAEd,OAAa,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,OAAY,CAAC;IACxB,CAAC;CACJ"}
@@ -0,0 +1,28 @@
1
+ import type { Consumable, WritableStreamDefaultWriter } from "@yume-chan/stream-extra";
2
+ import type { ScrcpyOptions } from "../options/index.js";
3
+ import type { AndroidKeyEventAction, ScrcpyInjectKeyCodeControlMessage } from "./inject-keycode.js";
4
+ import type { ScrcpyInjectScrollControlMessage } from "./inject-scroll.js";
5
+ import type { ScrcpyInjectTouchControlMessage } from "./inject-touch.js";
6
+ import type { AndroidScreenPowerMode } from "./set-screen-power-mode.js";
7
+ export declare class ScrcpyControlMessageWriter {
8
+ private _writer;
9
+ private _serializer;
10
+ constructor(writer: WritableStreamDefaultWriter<Consumable<Uint8Array>>, options: ScrcpyOptions<object>);
11
+ private write;
12
+ injectKeyCode(message: Omit<ScrcpyInjectKeyCodeControlMessage, "type">): Promise<void>;
13
+ injectText(text: string): Promise<void>;
14
+ /**
15
+ * `pressure` is a float value between 0 and 1.
16
+ */
17
+ injectTouch(message: Omit<ScrcpyInjectTouchControlMessage, "type">): Promise<void>;
18
+ /**
19
+ * `scrollX` and `scrollY` are float values between 0 and 1.
20
+ */
21
+ injectScroll(message: Omit<ScrcpyInjectScrollControlMessage, "type">): Promise<void>;
22
+ backOrScreenOn(action: AndroidKeyEventAction): Promise<void>;
23
+ setScreenPowerMode(mode: AndroidScreenPowerMode): Promise<void>;
24
+ rotateDevice(): Promise<void>;
25
+ releaseLock(): void;
26
+ close(): Promise<void>;
27
+ }
28
+ //# sourceMappingURL=writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/control/writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EACV,2BAA2B,EAC9B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EACR,qBAAqB,EACrB,iCAAiC,EACpC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,qBAAa,0BAA0B;IACnC,OAAO,CAAC,OAAO,CAAsD;IACrE,OAAO,CAAC,WAAW,CAAiC;gBAGhD,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAC3D,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;YAMpB,KAAK;IAIN,aAAa,CACtB,OAAO,EAAE,IAAI,CAAC,iCAAiC,EAAE,MAAM,CAAC;IAK/C,UAAU,CAAC,IAAI,EAAE,MAAM;IAIpC;;OAEG;IACU,WAAW,CACpB,OAAO,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC;IAK1D;;OAEG;IACU,YAAY,CACrB,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC;IAQ9C,cAAc,CAAC,MAAM,EAAE,qBAAqB;IAO5C,kBAAkB,CAAC,IAAI,EAAE,sBAAsB;IAI/C,YAAY;IAIlB,WAAW;IAIL,KAAK;CAGrB"}
@@ -0,0 +1,53 @@
1
+ import { ConsumableWritableStream } from "@yume-chan/stream-extra";
2
+ import { ScrcpyControlMessageSerializer } from "./serializer.js";
3
+ export class ScrcpyControlMessageWriter {
4
+ _writer;
5
+ _serializer;
6
+ constructor(writer, options) {
7
+ this._writer = writer;
8
+ this._serializer = new ScrcpyControlMessageSerializer(options);
9
+ }
10
+ async write(message) {
11
+ await ConsumableWritableStream.write(this._writer, message);
12
+ }
13
+ async injectKeyCode(message) {
14
+ await this.write(this._serializer.injectKeyCode(message));
15
+ }
16
+ async injectText(text) {
17
+ await this.write(this._serializer.injectText(text));
18
+ }
19
+ /**
20
+ * `pressure` is a float value between 0 and 1.
21
+ */
22
+ async injectTouch(message) {
23
+ await this.write(this._serializer.injectTouch(message));
24
+ }
25
+ /**
26
+ * `scrollX` and `scrollY` are float values between 0 and 1.
27
+ */
28
+ async injectScroll(message) {
29
+ const data = this._serializer.injectScroll(message);
30
+ if (data) {
31
+ await this.write(data);
32
+ }
33
+ }
34
+ async backOrScreenOn(action) {
35
+ const data = this._serializer.backOrScreenOn(action);
36
+ if (data) {
37
+ await this.write(data);
38
+ }
39
+ }
40
+ async setScreenPowerMode(mode) {
41
+ await this.write(this._serializer.setScreenPowerMode(mode));
42
+ }
43
+ async rotateDevice() {
44
+ await this.write(this._serializer.rotateDevice());
45
+ }
46
+ releaseLock() {
47
+ this._writer.releaseLock();
48
+ }
49
+ async close() {
50
+ await this._writer.close();
51
+ }
52
+ }
53
+ //# sourceMappingURL=writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/control/writer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAUnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AAGjE,MAAM,OAAO,0BAA0B;IAC3B,OAAO,CAAsD;IAC7D,WAAW,CAAiC;IAEpD,YACI,MAA2D,EAC3D,OAA8B;QAE9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,OAAmB;QACnC,MAAM,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAEM,KAAK,CAAC,aAAa,CACtB,OAAwD;QAExD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,IAAY;QAChC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACpB,OAAsD;QAEtD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CACrB,OAAuD;QAEvD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,IAAI,EAAE;YACN,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1B;IACL,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,MAA6B;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,IAAI,EAAE;YACN,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1B;IACL,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,IAA4B;QACxD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;IACtD,CAAC;IAEM,WAAW;QACd,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/device-message/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAG9D,MAAM,MAAM,mBAAmB,GACzB,4BAA4B,GAC5B,+BAA+B,CAAC;AAEtC,qBAAa,oCAAqC,SAAQ,uBAAuB,CAAC,mBAAmB,CAAC;;CAkBrG"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/device-message/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAOlE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAG9D,MAAM,MAAM,mBAAmB,GACzB,4BAA4B,GAC5B,+BAA+B,CAAC;AAEtC,qBAAa,oCAAqC,SAAQ,uBAAuB,CAAC,mBAAmB,CAAC;;CAiCrG"}
@@ -1,18 +1,33 @@
1
1
  import { BufferedTransformStream } from "@yume-chan/stream-extra";
2
+ import { ExactReadableEndedError, StructEmptyError, StructNotEnoughDataError, } from "@yume-chan/struct";
2
3
  import { ScrcpyAckClipboardDeviceMessage } from "./ack-clipboard.js";
3
4
  import { ScrcpyClipboardDeviceMessage } from "./clipboard.js";
4
5
  import { ScrcpyDeviceMessageType } from "./type.js";
5
6
  export class ScrcpyDeviceMessageDeserializeStream extends BufferedTransformStream {
6
7
  constructor() {
7
8
  super(async (stream) => {
8
- const type = await stream.read(1);
9
- switch (type[0]) {
10
- case ScrcpyDeviceMessageType.Clipboard:
11
- return await ScrcpyClipboardDeviceMessage.deserialize(stream);
12
- case ScrcpyDeviceMessageType.AckClipboard:
13
- return await ScrcpyAckClipboardDeviceMessage.deserialize(stream);
14
- default:
15
- throw new Error("unknown control message type");
9
+ try {
10
+ const type = await stream.readExactly(1);
11
+ switch (type[0]) {
12
+ case ScrcpyDeviceMessageType.Clipboard:
13
+ return await ScrcpyClipboardDeviceMessage.deserialize(stream);
14
+ case ScrcpyDeviceMessageType.AckClipboard:
15
+ return await ScrcpyAckClipboardDeviceMessage.deserialize(stream);
16
+ default:
17
+ throw new Error("Unsupported control message type");
18
+ }
19
+ }
20
+ catch (e) {
21
+ // Can't read the `type` byte
22
+ if (e instanceof ExactReadableEndedError) {
23
+ throw new StructEmptyError();
24
+ }
25
+ // Can't read struct body,
26
+ // treat as not enough data because `type` byte is already read
27
+ if (e instanceof StructEmptyError) {
28
+ throw new StructNotEnoughDataError();
29
+ }
30
+ throw e;
16
31
  }
17
32
  });
18
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/device-message/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAMpD,MAAM,OAAO,oCAAqC,SAAQ,uBAA4C;IAClG;QACI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;gBACb,KAAK,uBAAuB,CAAC,SAAS;oBAClC,OAAO,MAAM,4BAA4B,CAAC,WAAW,CACjD,MAAM,CACT,CAAC;gBACN,KAAK,uBAAuB,CAAC,YAAY;oBACrC,OAAO,MAAM,+BAA+B,CAAC,WAAW,CACpD,MAAM,CACT,CAAC;gBACN;oBACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACvD;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/device-message/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EACH,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAMpD,MAAM,OAAO,oCAAqC,SAAQ,uBAA4C;IAClG;QACI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACnB,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACzC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;oBACb,KAAK,uBAAuB,CAAC,SAAS;wBAClC,OAAO,MAAM,4BAA4B,CAAC,WAAW,CACjD,MAAM,CACT,CAAC;oBACN,KAAK,uBAAuB,CAAC,YAAY;wBACrC,OAAO,MAAM,+BAA+B,CAAC,WAAW,CACpD,MAAM,CACT,CAAC;oBACN;wBACI,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;iBAC3D;aACJ;YAAC,OAAO,CAAC,EAAE;gBACR,6BAA6B;gBAC7B,IAAI,CAAC,YAAY,uBAAuB,EAAE;oBACtC,MAAM,IAAI,gBAAgB,EAAE,CAAC;iBAChC;gBAED,0BAA0B;gBAC1B,+DAA+D;gBAC/D,IAAI,CAAC,YAAY,gBAAgB,EAAE;oBAC/B,MAAM,IAAI,wBAAwB,EAAE,CAAC;iBACxC;gBAED,MAAM,CAAC,CAAC;aACX;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
package/esm/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- export * from "./adb/index.js";
2
- export * from "./codec.js";
1
+ export * from "./codec/index.js";
3
2
  export * from "./control/index.js";
4
3
  export * from "./device-message/index.js";
5
4
  export * from "./options/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC"}