@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_25
41
- implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
44
+ export class ScrcpyOptions1_25<TInit extends Init = Init>
45
+ implements
46
+ ScrcpyOptions<ScrcpyOptions1_25.Value<TInit>>,
47
+ ScrcpyOptionsListEncoders
42
48
  {
43
49
  static readonly Defaults = Defaults;
44
50
 
45
- readonly value: Required<Init>;
51
+ readonly value: ScrcpyOptions1_25.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_25
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_25
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_25
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_25 {
141
172
  export type Init = Init_;
173
+
174
+ export type Value<TInit extends Init> = ComputeOptionTypes<
175
+ TInit,
176
+ typeof Defaults
177
+ >;
142
178
  }
@@ -1,30 +1,26 @@
1
+ import { omit } from "../../utils/omit.js";
2
+
1
3
  import type { Init } from "./init.js";
2
4
  import { PrevImpl } from "./prev.js";
3
5
 
4
- export const Defaults = {
5
- ...{
6
- ...PrevImpl.Defaults,
7
- // Remove obsolete values
8
- // relies on the minifier to flatten the nested spread
9
- bitRate: undefined,
10
- codecOptions: undefined,
11
- encoderName: undefined,
12
- },
6
+ export const Defaults = /* #__PURE__*/ (() =>
7
+ ({
8
+ ...omit(PrevImpl.Defaults, "bitRate", "codecOptions", "encoderName"),
13
9
 
14
- scid: undefined,
10
+ scid: undefined,
15
11
 
16
- videoCodec: "h264",
17
- videoBitRate: 8000000,
18
- videoCodecOptions: undefined,
19
- videoEncoder: undefined,
12
+ videoCodec: "h264",
13
+ videoBitRate: 8000000,
14
+ videoCodecOptions: undefined,
15
+ videoEncoder: undefined,
20
16
 
21
- audio: true,
22
- audioCodec: "opus",
23
- audioBitRate: 128000,
24
- audioCodecOptions: undefined,
25
- audioEncoder: undefined,
17
+ audio: true,
18
+ audioCodec: "opus",
19
+ audioBitRate: 128000,
20
+ audioCodecOptions: undefined,
21
+ audioEncoder: undefined,
26
22
 
27
- listEncoders: false,
28
- listDisplays: false,
29
- sendCodecMeta: true,
30
- } as const satisfies Required<Init>;
23
+ listEncoders: false,
24
+ listDisplays: false,
25
+ sendCodecMeta: true,
26
+ }) as const satisfies Required<Init>)();
@@ -8,6 +8,10 @@ export {
8
8
  export * from "./parse-audio-stream-metadata.js";
9
9
  export { parseDisplay } from "./parse-display.js";
10
10
  export { parseEncoder } from "./parse-encoder.js";
11
- export { parseVideoStreamMetadata } from "./parse-video-stream-metadata.js";
11
+ export {
12
+ parseVideoCodecOption,
13
+ parseVideoStreamMetadata,
14
+ parseVideoStreamMetadataAsync,
15
+ } from "./parse-video-stream-metadata.js";
12
16
  export { setListDisplays } from "./set-list-display.js";
13
17
  export { setListEncoders } from "./set-list-encoder.js";
@@ -30,18 +30,18 @@ export interface Init extends Omit<
30
30
  > {
31
31
  scid?: InstanceId | string | undefined;
32
32
 
33
- videoCodec?: "h264" | "h265" | "av1";
34
- videoBitRate?: number;
33
+ videoCodec?: "h264" | "h265" | "av1" | undefined;
34
+ videoBitRate?: number | undefined;
35
35
  videoCodecOptions?: PrevImpl.CodecOptions | string | undefined;
36
36
  videoEncoder?: string | undefined;
37
37
 
38
- audio?: boolean;
39
- audioCodec?: "raw" | "opus" | "aac";
40
- audioBitRate?: number;
38
+ audio?: boolean | undefined;
39
+ audioCodec?: "raw" | "opus" | "aac" | undefined;
40
+ audioBitRate?: number | undefined;
41
41
  audioCodecOptions?: PrevImpl.CodecOptions | string | undefined;
42
42
  audioEncoder?: string | undefined;
43
43
 
44
- listEncoders?: boolean;
45
- listDisplays?: boolean;
46
- sendCodecMeta?: boolean;
44
+ listEncoders?: boolean | undefined;
45
+ listDisplays?: boolean | undefined;
46
+ sendCodecMeta?: boolean | undefined;
47
47
  }
@@ -9,9 +9,39 @@ import type { Init } from "../../2_3/impl/init.js";
9
9
  import type { ScrcpyAudioStreamMetadata } from "../../base/index.js";
10
10
  import { ScrcpyAudioCodec } from "../../base/index.js";
11
11
 
12
+ export function parseAudioMetadataCodec(codec: number): ScrcpyAudioCodec {
13
+ switch (codec) {
14
+ case ScrcpyAudioCodec.Raw.metadataValue:
15
+ return ScrcpyAudioCodec.Raw;
16
+ case ScrcpyAudioCodec.Opus.metadataValue:
17
+ return ScrcpyAudioCodec.Opus;
18
+ case ScrcpyAudioCodec.Aac.metadataValue:
19
+ return ScrcpyAudioCodec.Aac;
20
+ default:
21
+ throw new Error(`Unknown audio codec metadata value: ${codec}`);
22
+ }
23
+ }
24
+
25
+ export function parseAudioCodecOption(
26
+ audioCodec: Exclude<Init["audioCodec"], undefined>,
27
+ ): ScrcpyAudioCodec {
28
+ switch (audioCodec) {
29
+ case "raw":
30
+ return ScrcpyAudioCodec.Raw;
31
+ case "opus":
32
+ return ScrcpyAudioCodec.Opus;
33
+ case "aac":
34
+ return ScrcpyAudioCodec.Aac;
35
+ default:
36
+ throw new Error(`Unknown audio codec: ${audioCodec}`);
37
+ }
38
+ }
39
+
12
40
  export async function parseAudioStreamMetadata(
13
41
  stream: ReadableStream<Uint8Array>,
14
- options: Pick<Required<Init<boolean>>, "sendCodecMeta" | "audioCodec">,
42
+ sendCodecMeta: Exclude<Init["sendCodecMeta"], undefined>,
43
+ parseMetadataCodec: (codec: number) => ScrcpyAudioCodec,
44
+ fallbackCodec: ScrcpyAudioCodec,
15
45
  ): Promise<ScrcpyAudioStreamMetadata> {
16
46
  const buffered = new BufferedReadableStream(stream);
17
47
 
@@ -30,57 +60,17 @@ export async function parseAudioStreamMetadata(
30
60
  };
31
61
  }
32
62
 
33
- if (options.sendCodecMeta) {
34
- let codec: ScrcpyAudioCodec;
35
- switch (codecMetadataValue) {
36
- case ScrcpyAudioCodec.Raw.metadataValue:
37
- codec = ScrcpyAudioCodec.Raw;
38
- break;
39
- case ScrcpyAudioCodec.Opus.metadataValue:
40
- codec = ScrcpyAudioCodec.Opus;
41
- break;
42
- case ScrcpyAudioCodec.Aac.metadataValue:
43
- codec = ScrcpyAudioCodec.Aac;
44
- break;
45
- case ScrcpyAudioCodec.Flac.metadataValue:
46
- codec = ScrcpyAudioCodec.Flac;
47
- break;
48
- default:
49
- throw new Error(
50
- `Unknown audio codec metadata value: ${codecMetadataValue}`,
51
- );
52
- }
63
+ if (sendCodecMeta) {
53
64
  return {
54
65
  type: "success",
55
- codec,
66
+ codec: parseMetadataCodec(codecMetadataValue),
56
67
  stream: buffered.release(),
57
68
  };
58
69
  }
59
70
 
60
- // Infer codec from `audioCodec` option
61
- let codec: ScrcpyAudioCodec;
62
- switch (options.audioCodec as string) {
63
- case "raw":
64
- codec = ScrcpyAudioCodec.Raw;
65
- break;
66
- case "opus":
67
- codec = ScrcpyAudioCodec.Opus;
68
- break;
69
- case "aac":
70
- codec = ScrcpyAudioCodec.Aac;
71
- break;
72
- case "flac":
73
- codec = ScrcpyAudioCodec.Flac;
74
- break;
75
- default:
76
- throw new Error(
77
- `Unknown audio codec metadata value: ${codecMetadataValue}`,
78
- );
79
- }
80
-
81
71
  return {
82
72
  type: "success",
83
- codec,
73
+ codec: fallbackCodec,
84
74
  stream: new PushReadableStream<Uint8Array>(async (controller) => {
85
75
  // Put the first 4 bytes back
86
76
  await controller.enqueue(buffer);
@@ -2,50 +2,52 @@ import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream } from "@yume-chan/stream-extra";
3
3
  import { BufferedReadableStream } from "@yume-chan/stream-extra";
4
4
 
5
- import type { ScrcpyVideoStream } from "../../base/video.js";
6
- import { ScrcpyVideoCodecId } from "../../base/video.js";
5
+ import type { ScrcpyVideoStream } from "../../base/index.js";
6
+ import { ScrcpyVideoCodecId } from "../../video/index.js";
7
7
 
8
8
  import type { Init } from "./init.js";
9
9
  import { PrevImpl } from "./prev.js";
10
10
 
11
- function toCodecId(codec: string): ScrcpyVideoCodecId {
11
+ export function parseVideoCodecOption(
12
+ codec: Exclude<Init["videoCodec"], undefined>,
13
+ ): ScrcpyVideoCodecId {
12
14
  switch (codec) {
13
15
  case "h264":
14
16
  return ScrcpyVideoCodecId.H264;
15
17
  case "h265":
16
18
  return ScrcpyVideoCodecId.H265;
17
19
  case "av1":
18
- return ScrcpyVideoCodecId.AV1;
20
+ return ScrcpyVideoCodecId.Av1;
19
21
  default:
22
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
20
23
  throw new Error(`Unknown video codec: ${codec}`);
21
24
  }
22
25
  }
23
26
 
24
- async function parseAsync(
25
- options: Pick<
26
- Required<Init>,
27
- "sendDeviceMeta" | "sendCodecMeta" | "videoCodec"
28
- >,
27
+ export async function parseVideoStreamMetadataAsync(
29
28
  stream: ReadableStream<Uint8Array>,
30
- ) {
29
+ sendDeviceMeta: Exclude<Init["sendDeviceMeta"], undefined>,
30
+ sendCodecMeta: Exclude<Init["sendCodecMeta"], undefined>,
31
+ fallbackCodec: ScrcpyVideoCodecId,
32
+ ): Promise<ScrcpyVideoStream> {
31
33
  const buffered = new BufferedReadableStream(stream);
32
34
 
33
35
  // `sendDeviceMeta` now only contains device name,
34
- // can't use `super.parseVideoStreamMetadata` here
36
+ // can't use `PrevImpl.parseVideoStreamMetadata` here
35
37
  let deviceName: string | undefined;
36
- if (options.sendDeviceMeta) {
38
+ if (sendDeviceMeta) {
37
39
  deviceName = await PrevImpl.readString(buffered, 64);
38
40
  }
39
41
 
40
42
  let codec: ScrcpyVideoCodecId;
41
43
  let width: number | undefined;
42
44
  let height: number | undefined;
43
- if (options.sendCodecMeta) {
45
+ if (sendCodecMeta) {
44
46
  codec = (await PrevImpl.readU32(buffered)) as ScrcpyVideoCodecId;
45
47
  width = await PrevImpl.readU32(buffered);
46
48
  height = await PrevImpl.readU32(buffered);
47
49
  } else {
48
- codec = toCodecId(options.videoCodec);
50
+ codec = fallbackCodec;
49
51
  }
50
52
 
51
53
  return {
@@ -54,19 +56,20 @@ async function parseAsync(
54
56
  };
55
57
  }
56
58
 
59
+ // eslint-disable-next-line @typescript-eslint/max-params
57
60
  export function parseVideoStreamMetadata(
58
- options: Pick<
59
- Required<Init>,
60
- "sendDeviceMeta" | "sendCodecMeta" | "videoCodec"
61
- >,
62
61
  stream: ReadableStream<Uint8Array>,
62
+ sendDeviceMeta: Exclude<Init["sendDeviceMeta"], undefined>,
63
+ sendCodecMeta: Exclude<Init["sendCodecMeta"], undefined>,
64
+ fallbackCodec: ScrcpyVideoCodecId,
65
+ parseAsync: typeof parseVideoStreamMetadataAsync,
63
66
  ): MaybePromiseLike<ScrcpyVideoStream> {
64
- if (!options.sendDeviceMeta && !options.sendCodecMeta) {
67
+ if (!sendDeviceMeta && !sendCodecMeta) {
65
68
  return {
66
69
  stream,
67
- metadata: { codec: toCodecId(options.videoCodec) },
70
+ metadata: { codec: fallbackCodec },
68
71
  };
69
72
  }
70
73
 
71
- return parseAsync(options, stream);
74
+ return parseAsync(stream, sendDeviceMeta, sendCodecMeta, fallbackCodec);
72
75
  }
@@ -2,56 +2,70 @@ 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
  ScrcpyAudioStreamMetadata,
6
7
  ScrcpyDisplay,
7
8
  ScrcpyEncoder,
8
- ScrcpyMediaStreamPacket,
9
9
  ScrcpyOptions,
10
10
  ScrcpyOptionsListEncoders,
11
11
  ScrcpyScrollController,
12
12
  ScrcpyVideoStream,
13
+ ScrcpyVideoStreamPacket,
13
14
  } from "../base/index.js";
14
15
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
15
16
  import type {
16
17
  ScrcpyBackOrScreenOnControlMessage,
17
18
  ScrcpyInjectTouchControlMessage,
18
19
  ScrcpySetClipboardControlMessage,
20
+ ScrcpySetDisplayPowerControlMessage,
19
21
  } from "../latest.js";
20
22
 
21
- import type { Init } from "./impl/index.js";
23
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
22
24
  import {
23
25
  AckClipboardHandler,
24
26
  ClipboardStream,
27
+ computeOptionValues,
25
28
  ControlMessageTypes,
26
29
  createMediaStreamTransformer,
27
30
  createScrollController,
28
31
  Defaults,
32
+ parseAudioCodecOption,
33
+ parseAudioMetadataCodec,
29
34
  parseAudioStreamMetadata,
30
35
  parseDisplay,
31
36
  parseEncoder,
37
+ parseVideoCodecOption,
32
38
  parseVideoStreamMetadata,
39
+ parseVideoStreamMetadataAsync,
33
40
  serialize,
34
41
  serializeBackOrScreenOnControlMessage,
35
42
  serializeInjectTouchControlMessage,
36
43
  serializeSetClipboardControlMessage,
44
+ serializeSetDisplayPowerControlMessage,
37
45
  setListDisplays,
38
46
  setListEncoders,
39
47
  } from "./impl/index.js";
40
48
 
41
- export class ScrcpyOptions2_0
42
- implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
49
+ export class ScrcpyOptions2_0<TInit extends Init = Init>
50
+ implements
51
+ ScrcpyOptions<ScrcpyOptions2_0.Value<TInit>>,
52
+ ScrcpyOptionsListEncoders
43
53
  {
44
54
  static readonly Defaults = Defaults;
45
55
 
46
- readonly value: Required<Init>;
56
+ readonly value: ScrcpyOptions2_0.Value<TInit>;
47
57
 
48
58
  get controlMessageTypes(): typeof ControlMessageTypes {
49
59
  return ControlMessageTypes;
50
60
  }
51
61
 
52
62
  #clipboard: ClipboardStream | undefined;
53
- get clipboard(): ReadableStream<string> | undefined {
54
- return this.#clipboard;
63
+ get clipboard(): MapBoolean<
64
+ this["value"]["clipboardAutosync"],
65
+ ReadableStream<string>,
66
+ undefined
67
+ > {
68
+ return this.#clipboard as never;
55
69
  }
56
70
 
57
71
  #ackClipboardHandler: AckClipboardHandler | undefined;
@@ -61,8 +75,8 @@ export class ScrcpyOptions2_0
61
75
  return this.#deviceMessageParsers;
62
76
  }
63
77
 
64
- constructor(init: Init) {
65
- this.value = { ...Defaults, ...init };
78
+ constructor(init: TInit) {
79
+ this.value = computeOptionValues(init, Defaults);
66
80
 
67
81
  if (this.value.control) {
68
82
  if (this.value.clipboardAutosync) {
@@ -100,18 +114,29 @@ export class ScrcpyOptions2_0
100
114
  parseVideoStreamMetadata(
101
115
  stream: ReadableStream<Uint8Array>,
102
116
  ): MaybePromiseLike<ScrcpyVideoStream> {
103
- return parseVideoStreamMetadata(this.value, stream);
117
+ return parseVideoStreamMetadata(
118
+ stream,
119
+ this.value.sendDeviceMeta,
120
+ this.value.sendCodecMeta,
121
+ parseVideoCodecOption(this.value.videoCodec),
122
+ parseVideoStreamMetadataAsync,
123
+ );
104
124
  }
105
125
 
106
126
  parseAudioStreamMetadata(
107
127
  stream: ReadableStream<Uint8Array>,
108
128
  ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
109
- return parseAudioStreamMetadata(stream, this.value);
129
+ return parseAudioStreamMetadata(
130
+ stream,
131
+ this.value.sendCodecMeta,
132
+ parseAudioMetadataCodec,
133
+ parseAudioCodecOption(this.value.audioCodec),
134
+ );
110
135
  }
111
136
 
112
137
  createMediaStreamTransformer(): TransformStream<
113
138
  Uint8Array,
114
- ScrcpyMediaStreamPacket
139
+ ScrcpyVideoStreamPacket
115
140
  > {
116
141
  return createMediaStreamTransformer(this.value);
117
142
  }
@@ -119,25 +144,46 @@ export class ScrcpyOptions2_0
119
144
  serializeInjectTouchControlMessage(
120
145
  message: ScrcpyInjectTouchControlMessage,
121
146
  ): Uint8Array {
147
+ if (!this.value.control) {
148
+ throw new Error("control is disabled");
149
+ }
122
150
  return serializeInjectTouchControlMessage(message);
123
151
  }
124
152
 
125
153
  serializeBackOrScreenOnControlMessage(
126
154
  message: ScrcpyBackOrScreenOnControlMessage,
127
155
  ): Uint8Array | undefined {
156
+ if (!this.value.control) {
157
+ throw new Error("control is disabled");
158
+ }
128
159
  return serializeBackOrScreenOnControlMessage(message);
129
160
  }
130
161
 
131
162
  serializeSetClipboardControlMessage(
132
163
  message: ScrcpySetClipboardControlMessage,
133
164
  ): Uint8Array | [Uint8Array, Promise<void>] {
165
+ if (!this.value.control) {
166
+ throw new Error("control is disabled");
167
+ }
134
168
  return serializeSetClipboardControlMessage(
135
169
  message,
136
170
  this.#ackClipboardHandler,
137
171
  );
138
172
  }
139
173
 
174
+ serializeSetDisplayPowerControlMessage(
175
+ message: ScrcpySetDisplayPowerControlMessage,
176
+ ): Uint8Array {
177
+ if (!this.value.control) {
178
+ throw new Error("control is disabled");
179
+ }
180
+ return serializeSetDisplayPowerControlMessage(message);
181
+ }
182
+
140
183
  createScrollController(): ScrcpyScrollController {
184
+ if (!this.value.control) {
185
+ throw new Error("control is disabled");
186
+ }
141
187
  return createScrollController();
142
188
  }
143
189
  }
@@ -146,4 +192,9 @@ type Init_ = Init;
146
192
 
147
193
  export namespace ScrcpyOptions2_0 {
148
194
  export type Init = Init_;
195
+
196
+ export type Value<TInit extends Init> = ComputeOptionTypes<
197
+ TInit,
198
+ typeof Defaults
199
+ >;
149
200
  }
@@ -5,4 +5,4 @@ export const Defaults = {
5
5
  ...PrevImpl.Defaults,
6
6
  video: true,
7
7
  audioSource: "output",
8
- } as const satisfies Required<Init<true>>;
8
+ } as const satisfies Required<Init>;
@@ -1,6 +1,6 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
- export interface Init<TVideo extends boolean> extends PrevImpl.Init {
4
- video?: TVideo;
5
- audioSource?: "output" | "mic";
3
+ export interface Init extends PrevImpl.Init {
4
+ video?: boolean | undefined;
5
+ audioSource?: "output" | "mic" | undefined;
6
6
  }