@yume-chan/scrcpy 3.0.0-beta.0 → 3.0.0-beta.1

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 (438) hide show
  1. package/esm/1_15/impl/codec-options.d.ts +12 -11
  2. package/esm/1_15/impl/codec-options.d.ts.map +1 -1
  3. package/esm/1_15/impl/codec-options.js +50 -11
  4. package/esm/1_15/impl/codec-options.js.map +1 -1
  5. package/esm/1_15/impl/compute-option-values.d.ts +7 -0
  6. package/esm/1_15/impl/compute-option-values.d.ts.map +1 -0
  7. package/esm/1_15/impl/compute-option-values.js +12 -0
  8. package/esm/1_15/impl/compute-option-values.js.map +1 -0
  9. package/esm/1_15/impl/index.d.ts +2 -0
  10. package/esm/1_15/impl/index.d.ts.map +1 -1
  11. package/esm/1_15/impl/index.js +2 -0
  12. package/esm/1_15/impl/index.js.map +1 -1
  13. package/esm/1_15/impl/init.d.ts +11 -11
  14. package/esm/1_15/impl/init.d.ts.map +1 -1
  15. package/esm/1_15/impl/media-stream-transformer.d.ts +2 -2
  16. package/esm/1_15/impl/media-stream-transformer.js +1 -1
  17. package/esm/1_15/impl/media-stream-transformer.js.map +1 -1
  18. package/esm/1_15/impl/parse-video-stream-metadata.js +4 -4
  19. package/esm/1_15/impl/parse-video-stream-metadata.js.map +1 -1
  20. package/esm/1_15/impl/set-display-power.d.ts +13 -0
  21. package/esm/1_15/impl/set-display-power.d.ts.map +1 -0
  22. package/esm/1_15/impl/set-display-power.js +16 -0
  23. package/esm/1_15/impl/set-display-power.js.map +1 -0
  24. package/esm/1_15/options.d.ts +12 -9
  25. package/esm/1_15/options.d.ts.map +1 -1
  26. package/esm/1_15/options.js +20 -2
  27. package/esm/1_15/options.js.map +1 -1
  28. package/esm/1_17/options.d.ts +11 -9
  29. package/esm/1_17/options.d.ts.map +1 -1
  30. package/esm/1_17/options.js +20 -2
  31. package/esm/1_17/options.js.map +1 -1
  32. package/esm/1_18/impl/init.d.ts +3 -3
  33. package/esm/1_18/impl/init.d.ts.map +1 -1
  34. package/esm/1_18/options.d.ts +11 -9
  35. package/esm/1_18/options.d.ts.map +1 -1
  36. package/esm/1_18/options.js +20 -2
  37. package/esm/1_18/options.js.map +1 -1
  38. package/esm/1_21/impl/compute-option-values.d.ts +23 -0
  39. package/esm/1_21/impl/compute-option-values.d.ts.map +1 -0
  40. package/esm/1_21/impl/compute-option-values.js +12 -0
  41. package/esm/1_21/impl/compute-option-values.js.map +1 -0
  42. package/esm/1_21/impl/index.d.ts +3 -1
  43. package/esm/1_21/impl/index.d.ts.map +1 -1
  44. package/esm/1_21/impl/index.js +2 -1
  45. package/esm/1_21/impl/index.js.map +1 -1
  46. package/esm/1_21/impl/init.d.ts +1 -1
  47. package/esm/1_21/impl/init.d.ts.map +1 -1
  48. package/esm/1_21/impl/serialize.d.ts +1 -1
  49. package/esm/1_21/impl/serialize.d.ts.map +1 -1
  50. package/esm/1_21/impl/serialize.js.map +1 -1
  51. package/esm/1_21/options.d.ts +11 -9
  52. package/esm/1_21/options.d.ts.map +1 -1
  53. package/esm/1_21/options.js +20 -2
  54. package/esm/1_21/options.js.map +1 -1
  55. package/esm/1_22/impl/init.d.ts +3 -3
  56. package/esm/1_22/impl/init.d.ts.map +1 -1
  57. package/esm/1_22/impl/parse-video-stream-metadata.d.ts +2 -2
  58. package/esm/1_22/impl/parse-video-stream-metadata.d.ts.map +1 -1
  59. package/esm/1_22/impl/parse-video-stream-metadata.js +3 -3
  60. package/esm/1_22/impl/parse-video-stream-metadata.js.map +1 -1
  61. package/esm/1_22/options.d.ts +11 -9
  62. package/esm/1_22/options.d.ts.map +1 -1
  63. package/esm/1_22/options.js +21 -3
  64. package/esm/1_22/options.js.map +1 -1
  65. package/esm/1_23/impl/init.d.ts +1 -1
  66. package/esm/1_23/impl/init.d.ts.map +1 -1
  67. package/esm/1_23/impl/media-stream-transformer.d.ts +2 -2
  68. package/esm/1_23/impl/media-stream-transformer.js +1 -1
  69. package/esm/1_23/impl/media-stream-transformer.js.map +1 -1
  70. package/esm/1_23/options.d.ts +11 -9
  71. package/esm/1_23/options.d.ts.map +1 -1
  72. package/esm/1_23/options.js +21 -3
  73. package/esm/1_23/options.js.map +1 -1
  74. package/esm/1_24/impl/init.d.ts +1 -1
  75. package/esm/1_24/impl/init.d.ts.map +1 -1
  76. package/esm/1_24/options.d.ts +11 -9
  77. package/esm/1_24/options.d.ts.map +1 -1
  78. package/esm/1_24/options.js +21 -3
  79. package/esm/1_24/options.js.map +1 -1
  80. package/esm/1_25/options.d.ts +11 -9
  81. package/esm/1_25/options.d.ts.map +1 -1
  82. package/esm/1_25/options.js +21 -3
  83. package/esm/1_25/options.js.map +1 -1
  84. package/esm/2_0/impl/defaults.d.ts +8 -11
  85. package/esm/2_0/impl/defaults.d.ts.map +1 -1
  86. package/esm/2_0/impl/defaults.js +4 -10
  87. package/esm/2_0/impl/defaults.js.map +1 -1
  88. package/esm/2_0/impl/index.d.ts +1 -1
  89. package/esm/2_0/impl/index.d.ts.map +1 -1
  90. package/esm/2_0/impl/index.js +1 -1
  91. package/esm/2_0/impl/index.js.map +1 -1
  92. package/esm/2_0/impl/init.d.ts +8 -8
  93. package/esm/2_0/impl/init.d.ts.map +1 -1
  94. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +4 -1
  95. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
  96. package/esm/2_0/impl/parse-audio-stream-metadata.js +28 -39
  97. package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
  98. package/esm/2_0/impl/parse-video-stream-metadata.d.ts +5 -2
  99. package/esm/2_0/impl/parse-video-stream-metadata.d.ts.map +1 -1
  100. package/esm/2_0/impl/parse-video-stream-metadata.js +14 -12
  101. package/esm/2_0/impl/parse-video-stream-metadata.js.map +1 -1
  102. package/esm/2_0/options.d.ts +19 -20
  103. package/esm/2_0/options.d.ts.map +1 -1
  104. package/esm/2_0/options.js +22 -4
  105. package/esm/2_0/options.js.map +1 -1
  106. package/esm/2_1/impl/defaults.d.ts +8 -11
  107. package/esm/2_1/impl/defaults.d.ts.map +1 -1
  108. package/esm/2_1/impl/defaults.js.map +1 -1
  109. package/esm/2_1/impl/init.d.ts +3 -3
  110. package/esm/2_1/impl/init.d.ts.map +1 -1
  111. package/esm/2_1/options.d.ts +21 -22
  112. package/esm/2_1/options.d.ts.map +1 -1
  113. package/esm/2_1/options.js +22 -4
  114. package/esm/2_1/options.js.map +1 -1
  115. package/esm/2_2/impl/compute-option-values.d.ts +22 -0
  116. package/esm/2_2/impl/compute-option-values.d.ts.map +1 -0
  117. package/esm/2_2/impl/compute-option-values.js +11 -0
  118. package/esm/2_2/impl/compute-option-values.js.map +1 -0
  119. package/esm/2_2/impl/defaults.d.ts +8 -11
  120. package/esm/2_2/impl/defaults.d.ts.map +1 -1
  121. package/esm/2_2/impl/defaults.js.map +1 -1
  122. package/esm/2_2/impl/index.d.ts +2 -0
  123. package/esm/2_2/impl/index.d.ts.map +1 -1
  124. package/esm/2_2/impl/index.js +1 -0
  125. package/esm/2_2/impl/index.js.map +1 -1
  126. package/esm/2_2/impl/init.d.ts +5 -5
  127. package/esm/2_2/impl/init.d.ts.map +1 -1
  128. package/esm/2_2/options.d.ts +21 -22
  129. package/esm/2_2/options.d.ts.map +1 -1
  130. package/esm/2_2/options.js +22 -7
  131. package/esm/2_2/options.js.map +1 -1
  132. package/esm/2_3/impl/index.d.ts +1 -0
  133. package/esm/2_3/impl/index.d.ts.map +1 -1
  134. package/esm/2_3/impl/index.js +1 -0
  135. package/esm/2_3/impl/index.js.map +1 -1
  136. package/esm/2_3/impl/init.d.ts +2 -2
  137. package/esm/2_3/impl/init.d.ts.map +1 -1
  138. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts +5 -0
  139. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts.map +1 -0
  140. package/esm/2_3/impl/parse-audio-stream-metadata.js +31 -0
  141. package/esm/2_3/impl/parse-audio-stream-metadata.js.map +1 -0
  142. package/esm/2_3/options.d.ts +21 -22
  143. package/esm/2_3/options.d.ts.map +1 -1
  144. package/esm/2_3/options.js +22 -7
  145. package/esm/2_3/options.js.map +1 -1
  146. package/esm/2_4/options.d.ts +22 -23
  147. package/esm/2_4/options.d.ts.map +1 -1
  148. package/esm/2_4/options.js +25 -7
  149. package/esm/2_4/options.js.map +1 -1
  150. package/esm/2_6/impl/compute-option-values.d.ts +29 -0
  151. package/esm/2_6/impl/compute-option-values.d.ts.map +1 -0
  152. package/esm/2_6/impl/compute-option-values.js +12 -0
  153. package/esm/2_6/impl/compute-option-values.js.map +1 -0
  154. package/esm/2_6/impl/defaults.d.ts +8 -11
  155. package/esm/2_6/impl/defaults.d.ts.map +1 -1
  156. package/esm/2_6/impl/defaults.js.map +1 -1
  157. package/esm/2_6/impl/index.d.ts +2 -0
  158. package/esm/2_6/impl/index.d.ts.map +1 -1
  159. package/esm/2_6/impl/index.js +1 -0
  160. package/esm/2_6/impl/index.js.map +1 -1
  161. package/esm/2_6/impl/init.d.ts +3 -3
  162. package/esm/2_6/impl/init.d.ts.map +1 -1
  163. package/esm/2_6/options.d.ts +22 -23
  164. package/esm/2_6/options.d.ts.map +1 -1
  165. package/esm/2_6/options.js +25 -10
  166. package/esm/2_6/options.js.map +1 -1
  167. package/esm/2_7/impl/index.d.ts.map +1 -1
  168. package/esm/2_7/impl/index.js.map +1 -1
  169. package/esm/2_7/options.d.ts +22 -23
  170. package/esm/2_7/options.d.ts.map +1 -1
  171. package/esm/2_7/options.js +25 -10
  172. package/esm/2_7/options.js.map +1 -1
  173. package/esm/3_0/impl/defaults.d.ts +29 -33
  174. package/esm/3_0/impl/defaults.d.ts.map +1 -1
  175. package/esm/3_0/impl/defaults.js +4 -8
  176. package/esm/3_0/impl/defaults.js.map +1 -1
  177. package/esm/3_0/impl/index.d.ts +1 -0
  178. package/esm/3_0/impl/index.d.ts.map +1 -1
  179. package/esm/3_0/impl/index.js +1 -0
  180. package/esm/3_0/impl/index.js.map +1 -1
  181. package/esm/3_0/impl/init.d.ts +4 -4
  182. package/esm/3_0/impl/init.d.ts.map +1 -1
  183. package/esm/3_0/impl/set-display-power.d.ts +12 -0
  184. package/esm/3_0/impl/set-display-power.d.ts.map +1 -0
  185. package/esm/3_0/impl/set-display-power.js +10 -0
  186. package/esm/3_0/impl/set-display-power.js.map +1 -0
  187. package/esm/3_0/options.d.ts +43 -45
  188. package/esm/3_0/options.d.ts.map +1 -1
  189. package/esm/3_0/options.js +25 -10
  190. package/esm/3_0/options.js.map +1 -1
  191. package/esm/3_1/impl/defaults.d.ts +29 -33
  192. package/esm/3_1/impl/defaults.d.ts.map +1 -1
  193. package/esm/3_1/impl/defaults.js.map +1 -1
  194. package/esm/3_1/impl/index.d.ts.map +1 -1
  195. package/esm/3_1/impl/index.js.map +1 -1
  196. package/esm/3_1/impl/init.d.ts +2 -2
  197. package/esm/3_1/impl/init.d.ts.map +1 -1
  198. package/esm/3_1/options.d.ts +43 -45
  199. package/esm/3_1/options.d.ts.map +1 -1
  200. package/esm/3_1/options.js +25 -10
  201. package/esm/3_1/options.js.map +1 -1
  202. package/esm/3_2/impl/defaults.d.ts +29 -33
  203. package/esm/3_2/impl/defaults.d.ts.map +1 -1
  204. package/esm/3_2/impl/defaults.js.map +1 -1
  205. package/esm/3_2/impl/index.d.ts.map +1 -1
  206. package/esm/3_2/impl/index.js.map +1 -1
  207. package/esm/3_2/impl/init.d.ts +2 -2
  208. package/esm/3_2/impl/init.d.ts.map +1 -1
  209. package/esm/3_2/options.d.ts +43 -45
  210. package/esm/3_2/options.d.ts.map +1 -1
  211. package/esm/3_2/options.js +25 -10
  212. package/esm/3_2/options.js.map +1 -1
  213. package/esm/3_3_1/options.d.ts +43 -45
  214. package/esm/3_3_1/options.d.ts.map +1 -1
  215. package/esm/3_3_1/options.js +25 -10
  216. package/esm/3_3_1/options.js.map +1 -1
  217. package/esm/4_0/impl/compute-option-values.d.ts +15 -0
  218. package/esm/4_0/impl/compute-option-values.d.ts.map +1 -0
  219. package/esm/4_0/impl/compute-option-values.js +9 -0
  220. package/esm/4_0/impl/compute-option-values.js.map +1 -0
  221. package/esm/4_0/impl/control-message-types.d.ts +25 -0
  222. package/esm/4_0/impl/control-message-types.d.ts.map +1 -0
  223. package/esm/4_0/impl/control-message-types.js +26 -0
  224. package/esm/4_0/impl/control-message-types.js.map +1 -0
  225. package/esm/4_0/impl/defaults.d.ts +58 -0
  226. package/esm/4_0/impl/defaults.d.ts.map +1 -0
  227. package/esm/4_0/impl/defaults.js +12 -0
  228. package/esm/4_0/impl/defaults.js.map +1 -0
  229. package/esm/4_0/impl/index.d.ts +9 -0
  230. package/esm/4_0/impl/index.d.ts.map +1 -0
  231. package/esm/4_0/impl/index.js +7 -0
  232. package/esm/4_0/impl/index.js.map +1 -0
  233. package/esm/4_0/impl/init.d.ts +10 -0
  234. package/esm/4_0/impl/init.d.ts.map +1 -0
  235. package/esm/4_0/impl/init.js +2 -0
  236. package/esm/4_0/impl/init.js.map +1 -0
  237. package/esm/4_0/impl/media-stream-transformer.d.ts +5 -0
  238. package/esm/4_0/impl/media-stream-transformer.d.ts.map +1 -0
  239. package/esm/4_0/impl/media-stream-transformer.js +39 -0
  240. package/esm/4_0/impl/media-stream-transformer.js.map +1 -0
  241. package/esm/4_0/impl/parse-video-stream-metadata.d.ts +6 -0
  242. package/esm/4_0/impl/parse-video-stream-metadata.d.ts.map +1 -0
  243. package/esm/4_0/impl/parse-video-stream-metadata.js +21 -0
  244. package/esm/4_0/impl/parse-video-stream-metadata.js.map +1 -0
  245. package/esm/4_0/impl/prev.d.ts +2 -0
  246. package/esm/4_0/impl/prev.d.ts.map +1 -0
  247. package/esm/4_0/impl/prev.js +2 -0
  248. package/esm/4_0/impl/prev.js.map +1 -0
  249. package/esm/4_0/index.d.ts +100 -0
  250. package/esm/4_0/index.d.ts.map +1 -0
  251. package/esm/4_0/index.js +93 -0
  252. package/esm/4_0/index.js.map +1 -0
  253. package/esm/4_1/impl/control-message-types.d.ts +26 -0
  254. package/esm/4_1/impl/control-message-types.d.ts.map +1 -0
  255. package/esm/4_1/impl/control-message-types.js +27 -0
  256. package/esm/4_1/impl/control-message-types.js.map +1 -0
  257. package/esm/4_1/impl/defaults.d.ts +59 -0
  258. package/esm/4_1/impl/defaults.d.ts.map +1 -0
  259. package/esm/4_1/impl/defaults.js +6 -0
  260. package/esm/4_1/impl/defaults.js.map +1 -0
  261. package/esm/4_1/impl/index.d.ts +6 -0
  262. package/esm/4_1/impl/index.d.ts.map +1 -0
  263. package/esm/4_1/impl/index.js +5 -0
  264. package/esm/4_1/impl/index.js.map +1 -0
  265. package/esm/4_1/impl/init.d.ts +6 -0
  266. package/esm/4_1/impl/init.d.ts.map +1 -0
  267. package/esm/4_1/impl/init.js +2 -0
  268. package/esm/4_1/impl/init.js.map +1 -0
  269. package/esm/4_1/impl/parse-video-stream-metadata.d.ts +4 -0
  270. package/esm/4_1/impl/parse-video-stream-metadata.d.ts.map +1 -0
  271. package/esm/4_1/impl/parse-video-stream-metadata.js +19 -0
  272. package/esm/4_1/impl/parse-video-stream-metadata.js.map +1 -0
  273. package/esm/4_1/impl/prev.d.ts +2 -0
  274. package/esm/4_1/impl/prev.d.ts.map +1 -0
  275. package/esm/4_1/impl/prev.js +2 -0
  276. package/esm/4_1/impl/prev.js.map +1 -0
  277. package/esm/4_1/index.d.ts +101 -0
  278. package/esm/4_1/index.d.ts.map +1 -0
  279. package/esm/4_1/index.js +93 -0
  280. package/esm/4_1/index.js.map +1 -0
  281. package/esm/base/control-message-type-value.d.ts +5 -0
  282. package/esm/base/control-message-type-value.d.ts.map +1 -1
  283. package/esm/base/control-message-type-value.js +5 -0
  284. package/esm/base/control-message-type-value.js.map +1 -1
  285. package/esm/base/media.d.ts +8 -1
  286. package/esm/base/media.d.ts.map +1 -1
  287. package/esm/base/options.d.ts +6 -4
  288. package/esm/base/options.d.ts.map +1 -1
  289. package/esm/base/video.d.ts +1 -7
  290. package/esm/base/video.d.ts.map +1 -1
  291. package/esm/base/video.js +1 -13
  292. package/esm/base/video.js.map +1 -1
  293. package/esm/control/boolean.d.ts +10 -0
  294. package/esm/control/boolean.d.ts.map +1 -0
  295. package/esm/control/boolean.js +3 -0
  296. package/esm/control/boolean.js.map +1 -0
  297. package/esm/control/index.d.ts +2 -1
  298. package/esm/control/index.d.ts.map +1 -1
  299. package/esm/control/index.js +2 -1
  300. package/esm/control/index.js.map +1 -1
  301. package/esm/control/resize-display.d.ts +12 -0
  302. package/esm/control/resize-display.d.ts.map +1 -0
  303. package/esm/control/resize-display.js +8 -0
  304. package/esm/control/resize-display.js.map +1 -0
  305. package/esm/control/serializer.d.ts +8 -2
  306. package/esm/control/serializer.d.ts.map +1 -1
  307. package/esm/control/serializer.js +30 -4
  308. package/esm/control/serializer.js.map +1 -1
  309. package/esm/control/writer.d.ts +8 -2
  310. package/esm/control/writer.d.ts.map +1 -1
  311. package/esm/control/writer.js +17 -2
  312. package/esm/control/writer.js.map +1 -1
  313. package/esm/index.d.ts +2 -0
  314. package/esm/index.d.ts.map +1 -1
  315. package/esm/index.js +2 -0
  316. package/esm/index.js.map +1 -1
  317. package/esm/latest.d.ts +2 -2
  318. package/esm/latest.d.ts.map +1 -1
  319. package/esm/latest.js +2 -2
  320. package/esm/latest.js.map +1 -1
  321. package/esm/utils/omit.d.ts +1 -1
  322. package/esm/utils/omit.d.ts.map +1 -1
  323. package/esm/video/codec-id.d.ts +6 -0
  324. package/esm/video/codec-id.d.ts.map +1 -0
  325. package/esm/video/codec-id.js +6 -0
  326. package/esm/video/codec-id.js.map +1 -0
  327. package/esm/video/index.d.ts +4 -0
  328. package/esm/video/index.d.ts.map +1 -1
  329. package/esm/video/index.js +12 -0
  330. package/esm/video/index.js.map +1 -1
  331. package/esm/video/size.d.ts +8 -9
  332. package/esm/video/size.d.ts.map +1 -1
  333. package/esm/video/size.js +2 -2
  334. package/esm/video/size.js.map +1 -1
  335. package/package.json +7 -7
  336. package/src/1_15/impl/codec-options.ts +68 -17
  337. package/src/1_15/impl/compute-option-values.ts +26 -0
  338. package/src/1_15/impl/index.ts +2 -0
  339. package/src/1_15/impl/init.ts +11 -11
  340. package/src/1_15/impl/media-stream-transformer.ts +3 -3
  341. package/src/1_15/impl/parse-video-stream-metadata.ts +4 -4
  342. package/src/1_15/impl/set-display-power.ts +29 -0
  343. package/src/1_15/options.ts +45 -9
  344. package/src/1_17/options.ts +46 -10
  345. package/src/1_18/impl/init.ts +3 -3
  346. package/src/1_18/options.ts +46 -10
  347. package/src/1_21/impl/compute-option-values.ts +43 -0
  348. package/src/1_21/impl/index.ts +10 -1
  349. package/src/1_21/impl/init.ts +1 -1
  350. package/src/1_21/impl/serialize.ts +3 -3
  351. package/src/1_21/options.ts +46 -10
  352. package/src/1_22/impl/init.ts +3 -3
  353. package/src/1_22/impl/parse-video-stream-metadata.ts +4 -4
  354. package/src/1_22/options.ts +47 -11
  355. package/src/1_23/impl/init.ts +1 -1
  356. package/src/1_23/impl/media-stream-transformer.ts +3 -3
  357. package/src/1_23/options.ts +47 -11
  358. package/src/1_24/impl/init.ts +1 -1
  359. package/src/1_24/options.ts +47 -11
  360. package/src/1_25/options.ts +47 -11
  361. package/src/2_0/impl/defaults.ts +19 -23
  362. package/src/2_0/impl/index.ts +5 -1
  363. package/src/2_0/impl/init.ts +8 -8
  364. package/src/2_0/impl/parse-audio-stream-metadata.ts +34 -44
  365. package/src/2_0/impl/parse-video-stream-metadata.ts +24 -21
  366. package/src/2_0/options.ts +63 -12
  367. package/src/2_1/impl/defaults.ts +1 -1
  368. package/src/2_1/impl/init.ts +3 -3
  369. package/src/2_1/options.ts +66 -15
  370. package/src/2_2/generate-type-tests.js +106 -0
  371. package/src/2_2/impl/compute-option-values.ts +44 -0
  372. package/src/2_2/impl/defaults.ts +1 -1
  373. package/src/2_2/impl/index.ts +2 -0
  374. package/src/2_2/impl/init.ts +5 -5
  375. package/src/2_2/options.ts +66 -19
  376. package/src/2_3/impl/index.ts +4 -0
  377. package/src/2_3/impl/init.ts +2 -5
  378. package/src/2_3/impl/parse-audio-stream-metadata.ts +36 -0
  379. package/src/2_3/options.ts +66 -19
  380. package/src/2_4/options.ts +75 -23
  381. package/src/2_6/generate-type-tests.js +119 -0
  382. package/src/2_6/impl/compute-option-values.ts +48 -0
  383. package/src/2_6/impl/defaults.ts +1 -1
  384. package/src/2_6/impl/index.ts +9 -0
  385. package/src/2_6/impl/init.ts +3 -6
  386. package/src/2_6/options.ts +75 -27
  387. package/src/2_7/impl/index.ts +1 -0
  388. package/src/2_7/options.ts +75 -27
  389. package/src/3_0/impl/defaults.ts +12 -14
  390. package/src/3_0/impl/index.ts +5 -0
  391. package/src/3_0/impl/init.ts +4 -7
  392. package/src/3_0/impl/set-display-power.ts +23 -0
  393. package/src/3_0/options.ts +75 -27
  394. package/src/3_1/impl/defaults.ts +1 -1
  395. package/src/3_1/impl/index.ts +1 -0
  396. package/src/3_1/impl/init.ts +2 -2
  397. package/src/3_1/options.ts +75 -27
  398. package/src/3_2/impl/defaults.ts +1 -1
  399. package/src/3_2/impl/index.ts +1 -0
  400. package/src/3_2/impl/init.ts +2 -5
  401. package/src/3_2/options.ts +75 -27
  402. package/src/3_3_1/options.ts +75 -27
  403. package/src/4_0/impl/compute-option-values.ts +31 -0
  404. package/src/4_0/impl/control-message-types.ts +27 -0
  405. package/src/4_0/impl/defaults.ts +20 -0
  406. package/src/4_0/impl/index.ts +9 -0
  407. package/src/4_0/impl/init.ts +14 -0
  408. package/src/4_0/impl/media-stream-transformer.ts +58 -0
  409. package/src/4_0/impl/parse-video-stream-metadata.ts +34 -0
  410. package/src/4_0/impl/prev.ts +1 -0
  411. package/src/4_0/index.ts +226 -0
  412. package/src/4_1/impl/control-message-types.ts +28 -0
  413. package/src/4_1/impl/defaults.ts +8 -0
  414. package/src/4_1/impl/index.ts +6 -0
  415. package/src/4_1/impl/init.ts +7 -0
  416. package/src/4_1/impl/parse-video-stream-metadata.ts +23 -0
  417. package/src/4_1/impl/prev.ts +1 -0
  418. package/src/4_1/index.ts +226 -0
  419. package/src/base/control-message-type-value.ts +5 -0
  420. package/src/base/media.ts +12 -3
  421. package/src/base/options.ts +15 -5
  422. package/src/base/video.ts +2 -19
  423. package/src/control/boolean.ts +9 -0
  424. package/src/control/index.ts +2 -1
  425. package/src/control/resize-display.ts +16 -0
  426. package/src/control/serializer.ts +38 -8
  427. package/src/control/writer.ts +24 -6
  428. package/src/index.ts +2 -0
  429. package/src/latest.ts +4 -3
  430. package/src/utils/omit.ts +1 -1
  431. package/src/video/codec-id.ts +6 -0
  432. package/src/video/index.ts +19 -0
  433. package/src/video/size.ts +10 -4
  434. package/esm/control/set-screen-power-mode.d.ts +0 -11
  435. package/esm/control/set-screen-power-mode.d.ts.map +0 -1
  436. package/esm/control/set-screen-power-mode.js +0 -7
  437. package/esm/control/set-screen-power-mode.js.map +0 -1
  438. package/src/control/set-screen-power-mode.ts +0 -17
@@ -2,25 +2,28 @@ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
3
 
4
4
  import type {
5
+ MapBoolean,
5
6
  ScrcpyDisplay,
6
7
  ScrcpyEncoder,
7
- ScrcpyMediaStreamPacket,
8
8
  ScrcpyOptions,
9
9
  ScrcpyOptionsListEncoders,
10
10
  ScrcpyScrollController,
11
11
  ScrcpyVideoStream,
12
+ ScrcpyVideoStreamPacket,
12
13
  } from "../base/index.js";
13
14
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
14
15
  import type {
15
16
  ScrcpyBackOrScreenOnControlMessage,
16
17
  ScrcpyInjectTouchControlMessage,
17
18
  ScrcpySetClipboardControlMessage,
19
+ ScrcpySetDisplayPowerControlMessage,
18
20
  } from "../latest.js";
19
21
 
20
- import type { Init } from "./impl/index.js";
22
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
21
23
  import {
22
24
  AckClipboardHandler,
23
25
  ClipboardStream,
26
+ computeOptionValues,
24
27
  ControlMessageTypes,
25
28
  createMediaStreamTransformer,
26
29
  createScrollController,
@@ -33,24 +36,31 @@ import {
33
36
  serializeBackOrScreenOnControlMessage,
34
37
  serializeInjectTouchControlMessage,
35
38
  serializeSetClipboardControlMessage,
39
+ serializeSetDisplayPowerControlMessage,
36
40
  setListDisplays,
37
41
  setListEncoders,
38
42
  } from "./impl/index.js";
39
43
 
40
- export class ScrcpyOptions1_21
41
- implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
44
+ export class ScrcpyOptions1_21<TInit extends Init = Init>
45
+ implements
46
+ ScrcpyOptions<ScrcpyOptions1_21.Value<TInit>>,
47
+ ScrcpyOptionsListEncoders
42
48
  {
43
49
  static readonly Defaults = Defaults;
44
50
 
45
- readonly value: Required<Init>;
51
+ readonly value: ScrcpyOptions1_21.Value<TInit>;
46
52
 
47
53
  get controlMessageTypes(): typeof ControlMessageTypes {
48
54
  return ControlMessageTypes;
49
55
  }
50
56
 
51
57
  #clipboard: ClipboardStream | undefined;
52
- get clipboard(): ReadableStream<string> | undefined {
53
- return this.#clipboard;
58
+ get clipboard(): MapBoolean<
59
+ this["value"]["clipboardAutosync"],
60
+ ReadableStream<string>,
61
+ undefined
62
+ > {
63
+ return this.#clipboard as never;
54
64
  }
55
65
 
56
66
  #ackClipboardHandler: AckClipboardHandler | undefined;
@@ -60,8 +70,8 @@ export class ScrcpyOptions1_21
60
70
  return this.#deviceMessageParsers;
61
71
  }
62
72
 
63
- constructor(init: Init) {
64
- this.value = { ...Defaults, ...init };
73
+ constructor(init: TInit) {
74
+ this.value = computeOptionValues(init, Defaults);
65
75
 
66
76
  if (this.value.control) {
67
77
  if (this.value.clipboardAutosync) {
@@ -104,7 +114,7 @@ export class ScrcpyOptions1_21
104
114
 
105
115
  createMediaStreamTransformer(): TransformStream<
106
116
  Uint8Array,
107
- ScrcpyMediaStreamPacket
117
+ ScrcpyVideoStreamPacket
108
118
  > {
109
119
  return createMediaStreamTransformer(this.value);
110
120
  }
@@ -112,25 +122,46 @@ export class ScrcpyOptions1_21
112
122
  serializeInjectTouchControlMessage(
113
123
  message: ScrcpyInjectTouchControlMessage,
114
124
  ): Uint8Array {
125
+ if (!this.value.control) {
126
+ throw new Error("control is disabled");
127
+ }
115
128
  return serializeInjectTouchControlMessage(message);
116
129
  }
117
130
 
118
131
  serializeBackOrScreenOnControlMessage(
119
132
  message: ScrcpyBackOrScreenOnControlMessage,
120
133
  ): Uint8Array | undefined {
134
+ if (!this.value.control) {
135
+ throw new Error("control is disabled");
136
+ }
121
137
  return serializeBackOrScreenOnControlMessage(message);
122
138
  }
123
139
 
124
140
  serializeSetClipboardControlMessage(
125
141
  message: ScrcpySetClipboardControlMessage,
126
142
  ): Uint8Array | [Uint8Array, Promise<void>] {
143
+ if (!this.value.control) {
144
+ throw new Error("control is disabled");
145
+ }
127
146
  return serializeSetClipboardControlMessage(
128
147
  message,
129
148
  this.#ackClipboardHandler,
130
149
  );
131
150
  }
132
151
 
152
+ serializeSetDisplayPowerControlMessage(
153
+ message: ScrcpySetDisplayPowerControlMessage,
154
+ ): Uint8Array {
155
+ if (!this.value.control) {
156
+ throw new Error("control is disabled");
157
+ }
158
+ return serializeSetDisplayPowerControlMessage(message);
159
+ }
160
+
133
161
  createScrollController(): ScrcpyScrollController {
162
+ if (!this.value.control) {
163
+ throw new Error("control is disabled");
164
+ }
134
165
  return createScrollController();
135
166
  }
136
167
  }
@@ -139,4 +170,9 @@ type Init_ = Init;
139
170
 
140
171
  export namespace ScrcpyOptions1_21 {
141
172
  export type Init = Init_;
173
+
174
+ export type Value<TInit extends Init> = ComputeOptionTypes<
175
+ TInit,
176
+ typeof Defaults
177
+ >;
142
178
  }
@@ -1,19 +1,19 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
3
  export interface Init extends PrevImpl.Init {
4
- downsizeOnError?: boolean;
4
+ downsizeOnError?: boolean | undefined;
5
5
 
6
6
  /**
7
7
  * Send device name and size at start of video stream.
8
8
  *
9
9
  * @default true
10
10
  */
11
- sendDeviceMeta?: boolean;
11
+ sendDeviceMeta?: boolean | undefined;
12
12
 
13
13
  /**
14
14
  * Send a `0` byte on start of video stream to detect connection issues
15
15
  *
16
16
  * @default true
17
17
  */
18
- sendDummyByte?: boolean;
18
+ sendDummyByte?: boolean | undefined;
19
19
  }
@@ -1,16 +1,16 @@
1
1
  import type { ReadableStream } from "@yume-chan/stream-extra";
2
2
 
3
- import type { ScrcpyVideoStream } from "../../base/video.js";
4
- import { ScrcpyVideoCodecId } from "../../base/video.js";
3
+ import type { ScrcpyVideoStream } from "../../base/index.js";
4
+ import { ScrcpyVideoCodecId } from "../../video/index.js";
5
5
 
6
6
  import type { Init } from "./init.js";
7
7
  import { PrevImpl } from "./prev.js";
8
8
 
9
9
  export async function parseVideoStreamMetadata(
10
- options: Pick<Init, "sendDeviceMeta">,
11
10
  stream: ReadableStream<Uint8Array>,
11
+ sendDeviceMeta: Exclude<Init["sendDeviceMeta"], undefined>,
12
12
  ): Promise<ScrcpyVideoStream> {
13
- if (!options.sendDeviceMeta) {
13
+ if (!sendDeviceMeta) {
14
14
  return { stream, metadata: { codec: ScrcpyVideoCodecId.H264 } };
15
15
  } else {
16
16
  return PrevImpl.parseVideoStreamMetadata(stream);
@@ -2,25 +2,28 @@ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
3
 
4
4
  import type {
5
+ MapBoolean,
5
6
  ScrcpyDisplay,
6
7
  ScrcpyEncoder,
7
- ScrcpyMediaStreamPacket,
8
8
  ScrcpyOptions,
9
9
  ScrcpyOptionsListEncoders,
10
10
  ScrcpyScrollController,
11
11
  ScrcpyVideoStream,
12
+ ScrcpyVideoStreamPacket,
12
13
  } from "../base/index.js";
13
14
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
14
15
  import type {
15
16
  ScrcpyBackOrScreenOnControlMessage,
16
17
  ScrcpyInjectTouchControlMessage,
17
18
  ScrcpySetClipboardControlMessage,
19
+ ScrcpySetDisplayPowerControlMessage,
18
20
  } from "../latest.js";
19
21
 
20
- import type { Init } from "./impl/index.js";
22
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
21
23
  import {
22
24
  AckClipboardHandler,
23
25
  ClipboardStream,
26
+ computeOptionValues,
24
27
  ControlMessageTypes,
25
28
  createMediaStreamTransformer,
26
29
  createScrollController,
@@ -33,24 +36,31 @@ import {
33
36
  serializeBackOrScreenOnControlMessage,
34
37
  serializeInjectTouchControlMessage,
35
38
  serializeSetClipboardControlMessage,
39
+ serializeSetDisplayPowerControlMessage,
36
40
  setListDisplays,
37
41
  setListEncoders,
38
42
  } from "./impl/index.js";
39
43
 
40
- export class ScrcpyOptions1_22
41
- implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
44
+ export class ScrcpyOptions1_22<TInit extends Init = Init>
45
+ implements
46
+ ScrcpyOptions<ScrcpyOptions1_22.Value<TInit>>,
47
+ ScrcpyOptionsListEncoders
42
48
  {
43
49
  static readonly Defaults = Defaults;
44
50
 
45
- readonly value: Required<Init>;
51
+ readonly value: ScrcpyOptions1_22.Value<TInit>;
46
52
 
47
53
  get controlMessageTypes(): typeof ControlMessageTypes {
48
54
  return ControlMessageTypes;
49
55
  }
50
56
 
51
57
  #clipboard: ClipboardStream | undefined;
52
- get clipboard(): ReadableStream<string> | undefined {
53
- return this.#clipboard;
58
+ get clipboard(): MapBoolean<
59
+ this["value"]["clipboardAutosync"],
60
+ ReadableStream<string>,
61
+ undefined
62
+ > {
63
+ return this.#clipboard as never;
54
64
  }
55
65
 
56
66
  #ackClipboardHandler: AckClipboardHandler | undefined;
@@ -60,8 +70,8 @@ export class ScrcpyOptions1_22
60
70
  return this.#deviceMessageParsers;
61
71
  }
62
72
 
63
- constructor(init: Init) {
64
- this.value = { ...Defaults, ...init };
73
+ constructor(init: TInit) {
74
+ this.value = computeOptionValues(init, Defaults);
65
75
 
66
76
  if (this.value.control) {
67
77
  if (this.value.clipboardAutosync) {
@@ -99,12 +109,12 @@ export class ScrcpyOptions1_22
99
109
  parseVideoStreamMetadata(
100
110
  stream: ReadableStream<Uint8Array>,
101
111
  ): MaybePromiseLike<ScrcpyVideoStream> {
102
- return parseVideoStreamMetadata(this.value, stream);
112
+ return parseVideoStreamMetadata(stream, this.value.sendDeviceMeta);
103
113
  }
104
114
 
105
115
  createMediaStreamTransformer(): TransformStream<
106
116
  Uint8Array,
107
- ScrcpyMediaStreamPacket
117
+ ScrcpyVideoStreamPacket
108
118
  > {
109
119
  return createMediaStreamTransformer(this.value);
110
120
  }
@@ -112,25 +122,46 @@ export class ScrcpyOptions1_22
112
122
  serializeInjectTouchControlMessage(
113
123
  message: ScrcpyInjectTouchControlMessage,
114
124
  ): Uint8Array {
125
+ if (!this.value.control) {
126
+ throw new Error("control is disabled");
127
+ }
115
128
  return serializeInjectTouchControlMessage(message);
116
129
  }
117
130
 
118
131
  serializeBackOrScreenOnControlMessage(
119
132
  message: ScrcpyBackOrScreenOnControlMessage,
120
133
  ): Uint8Array | undefined {
134
+ if (!this.value.control) {
135
+ throw new Error("control is disabled");
136
+ }
121
137
  return serializeBackOrScreenOnControlMessage(message);
122
138
  }
123
139
 
124
140
  serializeSetClipboardControlMessage(
125
141
  message: ScrcpySetClipboardControlMessage,
126
142
  ): Uint8Array | [Uint8Array, Promise<void>] {
143
+ if (!this.value.control) {
144
+ throw new Error("control is disabled");
145
+ }
127
146
  return serializeSetClipboardControlMessage(
128
147
  message,
129
148
  this.#ackClipboardHandler,
130
149
  );
131
150
  }
132
151
 
152
+ serializeSetDisplayPowerControlMessage(
153
+ message: ScrcpySetDisplayPowerControlMessage,
154
+ ): Uint8Array {
155
+ if (!this.value.control) {
156
+ throw new Error("control is disabled");
157
+ }
158
+ return serializeSetDisplayPowerControlMessage(message);
159
+ }
160
+
133
161
  createScrollController(): ScrcpyScrollController {
162
+ if (!this.value.control) {
163
+ throw new Error("control is disabled");
164
+ }
134
165
  return createScrollController();
135
166
  }
136
167
  }
@@ -139,4 +170,9 @@ type Init_ = Init;
139
170
 
140
171
  export namespace ScrcpyOptions1_22 {
141
172
  export type Init = Init_;
173
+
174
+ export type Value<TInit extends Init> = ComputeOptionTypes<
175
+ TInit,
176
+ typeof Defaults
177
+ >;
142
178
  }
@@ -1,5 +1,5 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
3
  export interface Init extends PrevImpl.Init {
4
- cleanup?: boolean;
4
+ cleanup?: boolean | undefined;
5
5
  }
@@ -3,7 +3,7 @@ import {
3
3
  TransformStream,
4
4
  } from "@yume-chan/stream-extra";
5
5
 
6
- import type { ScrcpyMediaStreamPacket } from "../../base/index.js";
6
+ import type { ScrcpyVideoStreamPacket } from "../../base/index.js";
7
7
 
8
8
  import type { Init } from "./init.js";
9
9
  import { PrevImpl } from "./prev.js";
@@ -12,8 +12,8 @@ export const PtsKeyframe = 1n << 62n;
12
12
 
13
13
  export function createMediaStreamTransformer(
14
14
  options: Pick<Init, "sendFrameMeta">,
15
- ): TransformStream<Uint8Array, ScrcpyMediaStreamPacket> {
16
- // Optimized path for video frames only
15
+ ): TransformStream<Uint8Array, ScrcpyVideoStreamPacket> {
16
+ // Quick path for raw stream without frame meta
17
17
  if (!options.sendFrameMeta) {
18
18
  return new TransformStream({
19
19
  transform(chunk, controller) {
@@ -2,25 +2,28 @@ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
3
 
4
4
  import type {
5
+ MapBoolean,
5
6
  ScrcpyDisplay,
6
7
  ScrcpyEncoder,
7
- ScrcpyMediaStreamPacket,
8
8
  ScrcpyOptions,
9
9
  ScrcpyOptionsListEncoders,
10
10
  ScrcpyScrollController,
11
11
  ScrcpyVideoStream,
12
+ ScrcpyVideoStreamPacket,
12
13
  } from "../base/index.js";
13
14
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
14
15
  import type {
15
16
  ScrcpyBackOrScreenOnControlMessage,
16
17
  ScrcpyInjectTouchControlMessage,
17
18
  ScrcpySetClipboardControlMessage,
19
+ ScrcpySetDisplayPowerControlMessage,
18
20
  } from "../latest.js";
19
21
 
20
- import type { Init } from "./impl/index.js";
22
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
21
23
  import {
22
24
  AckClipboardHandler,
23
25
  ClipboardStream,
26
+ computeOptionValues,
24
27
  ControlMessageTypes,
25
28
  createMediaStreamTransformer,
26
29
  createScrollController,
@@ -33,24 +36,31 @@ import {
33
36
  serializeBackOrScreenOnControlMessage,
34
37
  serializeInjectTouchControlMessage,
35
38
  serializeSetClipboardControlMessage,
39
+ serializeSetDisplayPowerControlMessage,
36
40
  setListDisplays,
37
41
  setListEncoders,
38
42
  } from "./impl/index.js";
39
43
 
40
- export class ScrcpyOptions1_23
41
- implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
44
+ export class ScrcpyOptions1_23<TInit extends Init = Init>
45
+ implements
46
+ ScrcpyOptions<ScrcpyOptions1_23.Value<TInit>>,
47
+ ScrcpyOptionsListEncoders
42
48
  {
43
49
  static readonly Defaults = Defaults;
44
50
 
45
- readonly value: Required<Init>;
51
+ readonly value: ScrcpyOptions1_23.Value<TInit>;
46
52
 
47
53
  get controlMessageTypes(): typeof ControlMessageTypes {
48
54
  return ControlMessageTypes;
49
55
  }
50
56
 
51
57
  #clipboard: ClipboardStream | undefined;
52
- get clipboard(): ReadableStream<string> | undefined {
53
- return this.#clipboard;
58
+ get clipboard(): MapBoolean<
59
+ this["value"]["clipboardAutosync"],
60
+ ReadableStream<string>,
61
+ undefined
62
+ > {
63
+ return this.#clipboard as never;
54
64
  }
55
65
 
56
66
  #ackClipboardHandler: AckClipboardHandler | undefined;
@@ -60,8 +70,8 @@ export class ScrcpyOptions1_23
60
70
  return this.#deviceMessageParsers;
61
71
  }
62
72
 
63
- constructor(init: Init) {
64
- this.value = { ...Defaults, ...init };
73
+ constructor(init: TInit) {
74
+ this.value = computeOptionValues(init, Defaults);
65
75
 
66
76
  if (this.value.control) {
67
77
  if (this.value.clipboardAutosync) {
@@ -99,12 +109,12 @@ export class ScrcpyOptions1_23
99
109
  parseVideoStreamMetadata(
100
110
  stream: ReadableStream<Uint8Array>,
101
111
  ): MaybePromiseLike<ScrcpyVideoStream> {
102
- return parseVideoStreamMetadata(this.value, stream);
112
+ return parseVideoStreamMetadata(stream, this.value.sendDeviceMeta);
103
113
  }
104
114
 
105
115
  createMediaStreamTransformer(): TransformStream<
106
116
  Uint8Array,
107
- ScrcpyMediaStreamPacket
117
+ ScrcpyVideoStreamPacket
108
118
  > {
109
119
  return createMediaStreamTransformer(this.value);
110
120
  }
@@ -112,25 +122,46 @@ export class ScrcpyOptions1_23
112
122
  serializeInjectTouchControlMessage(
113
123
  message: ScrcpyInjectTouchControlMessage,
114
124
  ): Uint8Array {
125
+ if (!this.value.control) {
126
+ throw new Error("control is disabled");
127
+ }
115
128
  return serializeInjectTouchControlMessage(message);
116
129
  }
117
130
 
118
131
  serializeBackOrScreenOnControlMessage(
119
132
  message: ScrcpyBackOrScreenOnControlMessage,
120
133
  ): Uint8Array | undefined {
134
+ if (!this.value.control) {
135
+ throw new Error("control is disabled");
136
+ }
121
137
  return serializeBackOrScreenOnControlMessage(message);
122
138
  }
123
139
 
124
140
  serializeSetClipboardControlMessage(
125
141
  message: ScrcpySetClipboardControlMessage,
126
142
  ): Uint8Array | [Uint8Array, Promise<void>] {
143
+ if (!this.value.control) {
144
+ throw new Error("control is disabled");
145
+ }
127
146
  return serializeSetClipboardControlMessage(
128
147
  message,
129
148
  this.#ackClipboardHandler,
130
149
  );
131
150
  }
132
151
 
152
+ serializeSetDisplayPowerControlMessage(
153
+ message: ScrcpySetDisplayPowerControlMessage,
154
+ ): Uint8Array {
155
+ if (!this.value.control) {
156
+ throw new Error("control is disabled");
157
+ }
158
+ return serializeSetDisplayPowerControlMessage(message);
159
+ }
160
+
133
161
  createScrollController(): ScrcpyScrollController {
162
+ if (!this.value.control) {
163
+ throw new Error("control is disabled");
164
+ }
134
165
  return createScrollController();
135
166
  }
136
167
  }
@@ -139,4 +170,9 @@ type Init_ = Init;
139
170
 
140
171
  export namespace ScrcpyOptions1_23 {
141
172
  export type Init = Init_;
173
+
174
+ export type Value<TInit extends Init> = ComputeOptionTypes<
175
+ TInit,
176
+ typeof Defaults
177
+ >;
142
178
  }
@@ -1,5 +1,5 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
3
  export interface Init extends PrevImpl.Init {
4
- powerOn?: boolean;
4
+ powerOn?: boolean | undefined;
5
5
  }
@@ -2,25 +2,28 @@ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
3
 
4
4
  import type {
5
+ MapBoolean,
5
6
  ScrcpyDisplay,
6
7
  ScrcpyEncoder,
7
- ScrcpyMediaStreamPacket,
8
8
  ScrcpyOptions,
9
9
  ScrcpyOptionsListEncoders,
10
10
  ScrcpyScrollController,
11
11
  ScrcpyVideoStream,
12
+ ScrcpyVideoStreamPacket,
12
13
  } from "../base/index.js";
13
14
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
14
15
  import type {
15
16
  ScrcpyBackOrScreenOnControlMessage,
16
17
  ScrcpyInjectTouchControlMessage,
17
18
  ScrcpySetClipboardControlMessage,
19
+ ScrcpySetDisplayPowerControlMessage,
18
20
  } from "../latest.js";
19
21
 
20
- import type { Init } from "./impl/index.js";
22
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
21
23
  import {
22
24
  AckClipboardHandler,
23
25
  ClipboardStream,
26
+ computeOptionValues,
24
27
  ControlMessageTypes,
25
28
  createMediaStreamTransformer,
26
29
  createScrollController,
@@ -33,24 +36,31 @@ import {
33
36
  serializeBackOrScreenOnControlMessage,
34
37
  serializeInjectTouchControlMessage,
35
38
  serializeSetClipboardControlMessage,
39
+ serializeSetDisplayPowerControlMessage,
36
40
  setListDisplays,
37
41
  setListEncoders,
38
42
  } from "./impl/index.js";
39
43
 
40
- export class ScrcpyOptions1_24
41
- implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
44
+ export class ScrcpyOptions1_24<TInit extends Init = Init>
45
+ implements
46
+ ScrcpyOptions<ScrcpyOptions1_24.Value<TInit>>,
47
+ ScrcpyOptionsListEncoders
42
48
  {
43
49
  static readonly Defaults = Defaults;
44
50
 
45
- readonly value: Required<Init>;
51
+ readonly value: ScrcpyOptions1_24.Value<TInit>;
46
52
 
47
53
  get controlMessageTypes(): typeof ControlMessageTypes {
48
54
  return ControlMessageTypes;
49
55
  }
50
56
 
51
57
  #clipboard: ClipboardStream | undefined;
52
- get clipboard(): ReadableStream<string> | undefined {
53
- return this.#clipboard;
58
+ get clipboard(): MapBoolean<
59
+ this["value"]["clipboardAutosync"],
60
+ ReadableStream<string>,
61
+ undefined
62
+ > {
63
+ return this.#clipboard as never;
54
64
  }
55
65
 
56
66
  #ackClipboardHandler: AckClipboardHandler | undefined;
@@ -60,8 +70,8 @@ export class ScrcpyOptions1_24
60
70
  return this.#deviceMessageParsers;
61
71
  }
62
72
 
63
- constructor(init: Init) {
64
- this.value = { ...Defaults, ...init };
73
+ constructor(init: TInit) {
74
+ this.value = computeOptionValues(init, Defaults);
65
75
 
66
76
  if (this.value.control) {
67
77
  if (this.value.clipboardAutosync) {
@@ -99,12 +109,12 @@ export class ScrcpyOptions1_24
99
109
  parseVideoStreamMetadata(
100
110
  stream: ReadableStream<Uint8Array>,
101
111
  ): MaybePromiseLike<ScrcpyVideoStream> {
102
- return parseVideoStreamMetadata(this.value, stream);
112
+ return parseVideoStreamMetadata(stream, this.value.sendDeviceMeta);
103
113
  }
104
114
 
105
115
  createMediaStreamTransformer(): TransformStream<
106
116
  Uint8Array,
107
- ScrcpyMediaStreamPacket
117
+ ScrcpyVideoStreamPacket
108
118
  > {
109
119
  return createMediaStreamTransformer(this.value);
110
120
  }
@@ -112,25 +122,46 @@ export class ScrcpyOptions1_24
112
122
  serializeInjectTouchControlMessage(
113
123
  message: ScrcpyInjectTouchControlMessage,
114
124
  ): Uint8Array {
125
+ if (!this.value.control) {
126
+ throw new Error("control is disabled");
127
+ }
115
128
  return serializeInjectTouchControlMessage(message);
116
129
  }
117
130
 
118
131
  serializeBackOrScreenOnControlMessage(
119
132
  message: ScrcpyBackOrScreenOnControlMessage,
120
133
  ): Uint8Array | undefined {
134
+ if (!this.value.control) {
135
+ throw new Error("control is disabled");
136
+ }
121
137
  return serializeBackOrScreenOnControlMessage(message);
122
138
  }
123
139
 
124
140
  serializeSetClipboardControlMessage(
125
141
  message: ScrcpySetClipboardControlMessage,
126
142
  ): Uint8Array | [Uint8Array, Promise<void>] {
143
+ if (!this.value.control) {
144
+ throw new Error("control is disabled");
145
+ }
127
146
  return serializeSetClipboardControlMessage(
128
147
  message,
129
148
  this.#ackClipboardHandler,
130
149
  );
131
150
  }
132
151
 
152
+ serializeSetDisplayPowerControlMessage(
153
+ message: ScrcpySetDisplayPowerControlMessage,
154
+ ): Uint8Array {
155
+ if (!this.value.control) {
156
+ throw new Error("control is disabled");
157
+ }
158
+ return serializeSetDisplayPowerControlMessage(message);
159
+ }
160
+
133
161
  createScrollController(): ScrcpyScrollController {
162
+ if (!this.value.control) {
163
+ throw new Error("control is disabled");
164
+ }
134
165
  return createScrollController();
135
166
  }
136
167
  }
@@ -139,4 +170,9 @@ type Init_ = Init;
139
170
 
140
171
  export namespace ScrcpyOptions1_24 {
141
172
  export type Init = Init_;
173
+
174
+ export type Value<TInit extends Init> = ComputeOptionTypes<
175
+ TInit,
176
+ typeof Defaults
177
+ >;
142
178
  }