@yume-chan/scrcpy 2.3.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 (671) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/esm/1_15/impl/codec-options.d.ts +147 -0
  4. package/esm/1_15/impl/codec-options.d.ts.map +1 -0
  5. package/esm/1_15/impl/codec-options.js +231 -0
  6. package/esm/1_15/impl/codec-options.js.map +1 -0
  7. package/esm/1_15/impl/compute-option-values.d.ts +7 -0
  8. package/esm/1_15/impl/compute-option-values.d.ts.map +1 -0
  9. package/esm/1_15/impl/compute-option-values.js +12 -0
  10. package/esm/1_15/impl/compute-option-values.js.map +1 -0
  11. package/esm/1_15/impl/control-message-types.d.ts +13 -2
  12. package/esm/1_15/impl/control-message-types.d.ts.map +1 -1
  13. package/esm/1_15/impl/control-message-types.js +13 -14
  14. package/esm/1_15/impl/control-message-types.js.map +1 -1
  15. package/esm/1_15/impl/index.d.ts +3 -0
  16. package/esm/1_15/impl/index.d.ts.map +1 -1
  17. package/esm/1_15/impl/index.js +3 -0
  18. package/esm/1_15/impl/index.js.map +1 -1
  19. package/esm/1_15/impl/init.d.ts +12 -33
  20. package/esm/1_15/impl/init.d.ts.map +1 -1
  21. package/esm/1_15/impl/init.js +0 -39
  22. package/esm/1_15/impl/init.js.map +1 -1
  23. package/esm/1_15/impl/inject-touch.d.ts.map +1 -1
  24. package/esm/1_15/impl/inject-touch.js +1 -0
  25. package/esm/1_15/impl/inject-touch.js.map +1 -1
  26. package/esm/1_15/impl/media-stream-transformer.d.ts +2 -2
  27. package/esm/1_15/impl/media-stream-transformer.js +1 -1
  28. package/esm/1_15/impl/media-stream-transformer.js.map +1 -1
  29. package/esm/1_15/impl/parse-video-stream-metadata.js +4 -4
  30. package/esm/1_15/impl/parse-video-stream-metadata.js.map +1 -1
  31. package/esm/1_15/impl/scroll-controller.d.ts.map +1 -1
  32. package/esm/1_15/impl/scroll-controller.js +1 -0
  33. package/esm/1_15/impl/scroll-controller.js.map +1 -1
  34. package/esm/1_15/impl/set-clipboard.d.ts.map +1 -1
  35. package/esm/1_15/impl/set-clipboard.js +5 -1
  36. package/esm/1_15/impl/set-clipboard.js.map +1 -1
  37. package/esm/1_15/impl/set-display-power.d.ts +13 -0
  38. package/esm/1_15/impl/set-display-power.d.ts.map +1 -0
  39. package/esm/1_15/impl/set-display-power.js +16 -0
  40. package/esm/1_15/impl/set-display-power.js.map +1 -0
  41. package/esm/1_15/options.d.ts +13 -9
  42. package/esm/1_15/options.d.ts.map +1 -1
  43. package/esm/1_15/options.js +20 -2
  44. package/esm/1_15/options.js.map +1 -1
  45. package/esm/1_15_1.d.ts +1 -7
  46. package/esm/1_15_1.d.ts.map +1 -1
  47. package/esm/1_15_1.js +1 -6
  48. package/esm/1_15_1.js.map +1 -1
  49. package/esm/1_16.d.ts +1 -7
  50. package/esm/1_16.d.ts.map +1 -1
  51. package/esm/1_16.js +1 -6
  52. package/esm/1_16.js.map +1 -1
  53. package/esm/1_17/impl/defaults.d.ts.map +1 -1
  54. package/esm/1_17/impl/defaults.js +2 -2
  55. package/esm/1_17/impl/defaults.js.map +1 -1
  56. package/esm/1_17/options.d.ts +12 -9
  57. package/esm/1_17/options.d.ts.map +1 -1
  58. package/esm/1_17/options.js +20 -2
  59. package/esm/1_17/options.js.map +1 -1
  60. package/esm/1_18/impl/control-message-types.d.ts +14 -2
  61. package/esm/1_18/impl/control-message-types.d.ts.map +1 -1
  62. package/esm/1_18/impl/control-message-types.js +14 -7
  63. package/esm/1_18/impl/control-message-types.js.map +1 -1
  64. package/esm/1_18/impl/defaults.d.ts.map +1 -1
  65. package/esm/1_18/impl/defaults.js +2 -2
  66. package/esm/1_18/impl/defaults.js.map +1 -1
  67. package/esm/1_18/impl/init.d.ts +3 -3
  68. package/esm/1_18/impl/init.d.ts.map +1 -1
  69. package/esm/1_18/options.d.ts +12 -9
  70. package/esm/1_18/options.d.ts.map +1 -1
  71. package/esm/1_18/options.js +20 -2
  72. package/esm/1_18/options.js.map +1 -1
  73. package/esm/1_19.d.ts +1 -7
  74. package/esm/1_19.d.ts.map +1 -1
  75. package/esm/1_19.js +1 -6
  76. package/esm/1_19.js.map +1 -1
  77. package/esm/1_20.d.ts +1 -7
  78. package/esm/1_20.d.ts.map +1 -1
  79. package/esm/1_20.js +1 -6
  80. package/esm/1_20.js.map +1 -1
  81. package/esm/1_21/impl/compute-option-values.d.ts +23 -0
  82. package/esm/1_21/impl/compute-option-values.d.ts.map +1 -0
  83. package/esm/1_21/impl/compute-option-values.js +12 -0
  84. package/esm/1_21/impl/compute-option-values.js.map +1 -0
  85. package/esm/1_21/impl/defaults.d.ts.map +1 -1
  86. package/esm/1_21/impl/defaults.js +2 -2
  87. package/esm/1_21/impl/defaults.js.map +1 -1
  88. package/esm/1_21/impl/index.d.ts +3 -1
  89. package/esm/1_21/impl/index.d.ts.map +1 -1
  90. package/esm/1_21/impl/index.js +2 -1
  91. package/esm/1_21/impl/index.js.map +1 -1
  92. package/esm/1_21/impl/init.d.ts +1 -1
  93. package/esm/1_21/impl/init.d.ts.map +1 -1
  94. package/esm/1_21/impl/serialize.d.ts +1 -1
  95. package/esm/1_21/impl/serialize.d.ts.map +1 -1
  96. package/esm/1_21/impl/serialize.js.map +1 -1
  97. package/esm/1_21/impl/set-clipboard.d.ts +1 -0
  98. package/esm/1_21/impl/set-clipboard.d.ts.map +1 -1
  99. package/esm/1_21/impl/set-clipboard.js +7 -0
  100. package/esm/1_21/impl/set-clipboard.js.map +1 -1
  101. package/esm/1_21/options.d.ts +12 -9
  102. package/esm/1_21/options.d.ts.map +1 -1
  103. package/esm/1_21/options.js +25 -5
  104. package/esm/1_21/options.js.map +1 -1
  105. package/esm/1_22/impl/defaults.d.ts.map +1 -1
  106. package/esm/1_22/impl/defaults.js +2 -2
  107. package/esm/1_22/impl/defaults.js.map +1 -1
  108. package/esm/1_22/impl/init.d.ts +3 -3
  109. package/esm/1_22/impl/init.d.ts.map +1 -1
  110. package/esm/1_22/impl/parse-video-stream-metadata.d.ts +2 -2
  111. package/esm/1_22/impl/parse-video-stream-metadata.d.ts.map +1 -1
  112. package/esm/1_22/impl/parse-video-stream-metadata.js +3 -3
  113. package/esm/1_22/impl/parse-video-stream-metadata.js.map +1 -1
  114. package/esm/1_22/options.d.ts +12 -9
  115. package/esm/1_22/options.d.ts.map +1 -1
  116. package/esm/1_22/options.js +26 -6
  117. package/esm/1_22/options.js.map +1 -1
  118. package/esm/1_23/impl/defaults.d.ts.map +1 -1
  119. package/esm/1_23/impl/defaults.js +2 -2
  120. package/esm/1_23/impl/defaults.js.map +1 -1
  121. package/esm/1_23/impl/init.d.ts +1 -1
  122. package/esm/1_23/impl/init.d.ts.map +1 -1
  123. package/esm/1_23/impl/media-stream-transformer.d.ts +2 -2
  124. package/esm/1_23/impl/media-stream-transformer.js +1 -1
  125. package/esm/1_23/impl/media-stream-transformer.js.map +1 -1
  126. package/esm/1_23/options.d.ts +12 -9
  127. package/esm/1_23/options.d.ts.map +1 -1
  128. package/esm/1_23/options.js +26 -6
  129. package/esm/1_23/options.js.map +1 -1
  130. package/esm/1_24/impl/defaults.d.ts.map +1 -1
  131. package/esm/1_24/impl/defaults.js +2 -2
  132. package/esm/1_24/impl/defaults.js.map +1 -1
  133. package/esm/1_24/impl/init.d.ts +1 -1
  134. package/esm/1_24/impl/init.d.ts.map +1 -1
  135. package/esm/1_24/options.d.ts +12 -9
  136. package/esm/1_24/options.d.ts.map +1 -1
  137. package/esm/1_24/options.js +26 -6
  138. package/esm/1_24/options.js.map +1 -1
  139. package/esm/1_25/impl/scroll-controller.d.ts +2 -2
  140. package/esm/1_25/impl/scroll-controller.d.ts.map +1 -1
  141. package/esm/1_25/impl/scroll-controller.js +4 -4
  142. package/esm/1_25/impl/scroll-controller.js.map +1 -1
  143. package/esm/1_25/options.d.ts +12 -9
  144. package/esm/1_25/options.d.ts.map +1 -1
  145. package/esm/1_25/options.js +26 -6
  146. package/esm/1_25/options.js.map +1 -1
  147. package/esm/2_0/impl/defaults.d.ts +8 -11
  148. package/esm/2_0/impl/defaults.d.ts.map +1 -1
  149. package/esm/2_0/impl/defaults.js +2 -2
  150. package/esm/2_0/impl/defaults.js.map +1 -1
  151. package/esm/2_0/impl/index.d.ts +1 -1
  152. package/esm/2_0/impl/index.d.ts.map +1 -1
  153. package/esm/2_0/impl/index.js +1 -1
  154. package/esm/2_0/impl/index.js.map +1 -1
  155. package/esm/2_0/impl/init.d.ts +8 -8
  156. package/esm/2_0/impl/init.d.ts.map +1 -1
  157. package/esm/2_0/impl/inject-touch.d.ts +2 -2
  158. package/esm/2_0/impl/inject-touch.d.ts.map +1 -1
  159. package/esm/2_0/impl/inject-touch.js +4 -4
  160. package/esm/2_0/impl/inject-touch.js.map +1 -1
  161. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +4 -1
  162. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
  163. package/esm/2_0/impl/parse-audio-stream-metadata.js +30 -46
  164. package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
  165. package/esm/2_0/impl/parse-video-stream-metadata.d.ts +5 -2
  166. package/esm/2_0/impl/parse-video-stream-metadata.d.ts.map +1 -1
  167. package/esm/2_0/impl/parse-video-stream-metadata.js +14 -12
  168. package/esm/2_0/impl/parse-video-stream-metadata.js.map +1 -1
  169. package/esm/2_0/options.d.ts +20 -20
  170. package/esm/2_0/options.d.ts.map +1 -1
  171. package/esm/2_0/options.js +27 -7
  172. package/esm/2_0/options.js.map +1 -1
  173. package/esm/2_1/impl/defaults.d.ts +8 -11
  174. package/esm/2_1/impl/defaults.d.ts.map +1 -1
  175. package/esm/2_1/impl/defaults.js +2 -2
  176. package/esm/2_1/impl/defaults.js.map +1 -1
  177. package/esm/2_1/impl/init.d.ts +3 -3
  178. package/esm/2_1/impl/init.d.ts.map +1 -1
  179. package/esm/2_1/options.d.ts +22 -22
  180. package/esm/2_1/options.d.ts.map +1 -1
  181. package/esm/2_1/options.js +27 -7
  182. package/esm/2_1/options.js.map +1 -1
  183. package/esm/2_1_1.d.ts +1 -7
  184. package/esm/2_1_1.d.ts.map +1 -1
  185. package/esm/2_1_1.js +1 -6
  186. package/esm/2_1_1.js.map +1 -1
  187. package/esm/2_2/impl/compute-option-values.d.ts +22 -0
  188. package/esm/2_2/impl/compute-option-values.d.ts.map +1 -0
  189. package/esm/2_2/impl/compute-option-values.js +11 -0
  190. package/esm/2_2/impl/compute-option-values.js.map +1 -0
  191. package/esm/2_2/impl/defaults.d.ts +8 -11
  192. package/esm/2_2/impl/defaults.d.ts.map +1 -1
  193. package/esm/2_2/impl/defaults.js +2 -2
  194. package/esm/2_2/impl/defaults.js.map +1 -1
  195. package/esm/2_2/impl/index.d.ts +2 -0
  196. package/esm/2_2/impl/index.d.ts.map +1 -1
  197. package/esm/2_2/impl/index.js +1 -0
  198. package/esm/2_2/impl/index.js.map +1 -1
  199. package/esm/2_2/impl/init.d.ts +5 -5
  200. package/esm/2_2/impl/init.d.ts.map +1 -1
  201. package/esm/2_2/options.d.ts +22 -22
  202. package/esm/2_2/options.d.ts.map +1 -1
  203. package/esm/2_2/options.js +27 -10
  204. package/esm/2_2/options.js.map +1 -1
  205. package/esm/2_3/impl/index.d.ts +1 -0
  206. package/esm/2_3/impl/index.d.ts.map +1 -1
  207. package/esm/2_3/impl/index.js +1 -0
  208. package/esm/2_3/impl/index.js.map +1 -1
  209. package/esm/2_3/impl/init.d.ts +2 -2
  210. package/esm/2_3/impl/init.d.ts.map +1 -1
  211. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts +5 -0
  212. package/esm/2_3/impl/parse-audio-stream-metadata.d.ts.map +1 -0
  213. package/esm/2_3/impl/parse-audio-stream-metadata.js +31 -0
  214. package/esm/2_3/impl/parse-audio-stream-metadata.js.map +1 -0
  215. package/esm/2_3/options.d.ts +22 -22
  216. package/esm/2_3/options.d.ts.map +1 -1
  217. package/esm/2_3/options.js +27 -10
  218. package/esm/2_3/options.js.map +1 -1
  219. package/esm/2_3_1.d.ts +1 -7
  220. package/esm/2_3_1.d.ts.map +1 -1
  221. package/esm/2_3_1.js +1 -6
  222. package/esm/2_3_1.js.map +1 -1
  223. package/esm/2_4/impl/control-message-types.d.ts +17 -2
  224. package/esm/2_4/impl/control-message-types.d.ts.map +1 -1
  225. package/esm/2_4/impl/control-message-types.js +17 -8
  226. package/esm/2_4/impl/control-message-types.js.map +1 -1
  227. package/esm/2_4/impl/serialize-uhid-create.d.ts.map +1 -1
  228. package/esm/2_4/impl/serialize-uhid-create.js +1 -0
  229. package/esm/2_4/impl/serialize-uhid-create.js.map +1 -1
  230. package/esm/2_4/options.d.ts +23 -23
  231. package/esm/2_4/options.d.ts.map +1 -1
  232. package/esm/2_4/options.js +27 -9
  233. package/esm/2_4/options.js.map +1 -1
  234. package/esm/2_5.d.ts +1 -7
  235. package/esm/2_5.d.ts.map +1 -1
  236. package/esm/2_5.js +1 -6
  237. package/esm/2_5.js.map +1 -1
  238. package/esm/2_6/impl/compute-option-values.d.ts +29 -0
  239. package/esm/2_6/impl/compute-option-values.d.ts.map +1 -0
  240. package/esm/2_6/impl/compute-option-values.js +12 -0
  241. package/esm/2_6/impl/compute-option-values.js.map +1 -0
  242. package/esm/2_6/impl/defaults.d.ts +8 -11
  243. package/esm/2_6/impl/defaults.d.ts.map +1 -1
  244. package/esm/2_6/impl/defaults.js +2 -2
  245. package/esm/2_6/impl/defaults.js.map +1 -1
  246. package/esm/2_6/impl/index.d.ts +2 -0
  247. package/esm/2_6/impl/index.d.ts.map +1 -1
  248. package/esm/2_6/impl/index.js +1 -0
  249. package/esm/2_6/impl/index.js.map +1 -1
  250. package/esm/2_6/impl/init.d.ts +3 -3
  251. package/esm/2_6/impl/init.d.ts.map +1 -1
  252. package/esm/2_6/options.d.ts +23 -23
  253. package/esm/2_6/options.d.ts.map +1 -1
  254. package/esm/2_6/options.js +27 -12
  255. package/esm/2_6/options.js.map +1 -1
  256. package/esm/2_6_1.d.ts +1 -7
  257. package/esm/2_6_1.d.ts.map +1 -1
  258. package/esm/2_6_1.js +1 -6
  259. package/esm/2_6_1.js.map +1 -1
  260. package/esm/2_7/impl/control-message-types.d.ts +18 -2
  261. package/esm/2_7/impl/control-message-types.d.ts.map +1 -1
  262. package/esm/2_7/impl/control-message-types.js +18 -7
  263. package/esm/2_7/impl/control-message-types.js.map +1 -1
  264. package/esm/2_7/impl/index.d.ts.map +1 -1
  265. package/esm/2_7/impl/index.js.map +1 -1
  266. package/esm/2_7/impl/serialize-uhid-create.d.ts.map +1 -1
  267. package/esm/2_7/impl/serialize-uhid-create.js +1 -0
  268. package/esm/2_7/impl/serialize-uhid-create.js.map +1 -1
  269. package/esm/2_7/options.d.ts +23 -23
  270. package/esm/2_7/options.d.ts.map +1 -1
  271. package/esm/2_7/options.js +27 -12
  272. package/esm/2_7/options.js.map +1 -1
  273. package/esm/3_0/impl/control-message-types.d.ts +20 -2
  274. package/esm/3_0/impl/control-message-types.d.ts.map +1 -1
  275. package/esm/3_0/impl/control-message-types.js +20 -7
  276. package/esm/3_0/impl/control-message-types.js.map +1 -1
  277. package/esm/3_0/impl/defaults.d.ts +29 -33
  278. package/esm/3_0/impl/defaults.d.ts.map +1 -1
  279. package/esm/3_0/impl/defaults.js +2 -2
  280. package/esm/3_0/impl/defaults.js.map +1 -1
  281. package/esm/3_0/impl/index.d.ts +1 -0
  282. package/esm/3_0/impl/index.d.ts.map +1 -1
  283. package/esm/3_0/impl/index.js +1 -0
  284. package/esm/3_0/impl/index.js.map +1 -1
  285. package/esm/3_0/impl/init.d.ts +4 -4
  286. package/esm/3_0/impl/init.d.ts.map +1 -1
  287. package/esm/3_0/impl/set-display-power.d.ts +12 -0
  288. package/esm/3_0/impl/set-display-power.d.ts.map +1 -0
  289. package/esm/3_0/impl/set-display-power.js +10 -0
  290. package/esm/3_0/impl/set-display-power.js.map +1 -0
  291. package/esm/3_0/options.d.ts +44 -45
  292. package/esm/3_0/options.d.ts.map +1 -1
  293. package/esm/3_0/options.js +27 -12
  294. package/esm/3_0/options.js.map +1 -1
  295. package/esm/3_0_1.d.ts +1 -7
  296. package/esm/3_0_1.d.ts.map +1 -1
  297. package/esm/3_0_1.js +1 -6
  298. package/esm/3_0_1.js.map +1 -1
  299. package/esm/3_0_2.d.ts +1 -7
  300. package/esm/3_0_2.d.ts.map +1 -1
  301. package/esm/3_0_2.js +1 -6
  302. package/esm/3_0_2.js.map +1 -1
  303. package/esm/3_1/impl/defaults.d.ts +29 -33
  304. package/esm/3_1/impl/defaults.d.ts.map +1 -1
  305. package/esm/3_1/impl/defaults.js +2 -2
  306. package/esm/3_1/impl/defaults.js.map +1 -1
  307. package/esm/3_1/impl/index.d.ts.map +1 -1
  308. package/esm/3_1/impl/index.js.map +1 -1
  309. package/esm/3_1/impl/init.d.ts +2 -2
  310. package/esm/3_1/impl/init.d.ts.map +1 -1
  311. package/esm/3_1/impl/serialize-uhid-create.d.ts.map +1 -1
  312. package/esm/3_1/impl/serialize-uhid-create.js +1 -0
  313. package/esm/3_1/impl/serialize-uhid-create.js.map +1 -1
  314. package/esm/3_1/options.d.ts +44 -45
  315. package/esm/3_1/options.d.ts.map +1 -1
  316. package/esm/3_1/options.js +27 -12
  317. package/esm/3_1/options.js.map +1 -1
  318. package/esm/3_2/impl/defaults.d.ts +29 -33
  319. package/esm/3_2/impl/defaults.d.ts.map +1 -1
  320. package/esm/3_2/impl/defaults.js +2 -2
  321. package/esm/3_2/impl/defaults.js.map +1 -1
  322. package/esm/3_2/impl/index.d.ts.map +1 -1
  323. package/esm/3_2/impl/index.js.map +1 -1
  324. package/esm/3_2/impl/init.d.ts +2 -2
  325. package/esm/3_2/impl/init.d.ts.map +1 -1
  326. package/esm/3_2/options.d.ts +44 -45
  327. package/esm/3_2/options.d.ts.map +1 -1
  328. package/esm/3_2/options.js +27 -12
  329. package/esm/3_2/options.js.map +1 -1
  330. package/esm/3_3.d.ts +1 -7
  331. package/esm/3_3.d.ts.map +1 -1
  332. package/esm/3_3.js +1 -6
  333. package/esm/3_3.js.map +1 -1
  334. package/esm/3_3_1/options.d.ts +44 -45
  335. package/esm/3_3_1/options.d.ts.map +1 -1
  336. package/esm/3_3_1/options.js +27 -12
  337. package/esm/3_3_1/options.js.map +1 -1
  338. package/esm/3_3_2.d.ts +1 -7
  339. package/esm/3_3_2.d.ts.map +1 -1
  340. package/esm/3_3_2.js +1 -6
  341. package/esm/3_3_2.js.map +1 -1
  342. package/esm/3_3_4.d.ts +2 -0
  343. package/esm/3_3_4.d.ts.map +1 -0
  344. package/esm/3_3_4.js +2 -0
  345. package/esm/3_3_4.js.map +1 -0
  346. package/esm/4_0/impl/compute-option-values.d.ts +15 -0
  347. package/esm/4_0/impl/compute-option-values.d.ts.map +1 -0
  348. package/esm/4_0/impl/compute-option-values.js +9 -0
  349. package/esm/4_0/impl/compute-option-values.js.map +1 -0
  350. package/esm/4_0/impl/control-message-types.d.ts +25 -0
  351. package/esm/4_0/impl/control-message-types.d.ts.map +1 -0
  352. package/esm/4_0/impl/control-message-types.js +26 -0
  353. package/esm/4_0/impl/control-message-types.js.map +1 -0
  354. package/esm/4_0/impl/defaults.d.ts +58 -0
  355. package/esm/4_0/impl/defaults.d.ts.map +1 -0
  356. package/esm/4_0/impl/defaults.js +12 -0
  357. package/esm/4_0/impl/defaults.js.map +1 -0
  358. package/esm/4_0/impl/index.d.ts +9 -0
  359. package/esm/4_0/impl/index.d.ts.map +1 -0
  360. package/esm/4_0/impl/index.js +7 -0
  361. package/esm/4_0/impl/index.js.map +1 -0
  362. package/esm/4_0/impl/init.d.ts +10 -0
  363. package/esm/4_0/impl/init.d.ts.map +1 -0
  364. package/esm/4_0/impl/init.js +2 -0
  365. package/esm/4_0/impl/init.js.map +1 -0
  366. package/esm/4_0/impl/media-stream-transformer.d.ts +5 -0
  367. package/esm/4_0/impl/media-stream-transformer.d.ts.map +1 -0
  368. package/esm/4_0/impl/media-stream-transformer.js +39 -0
  369. package/esm/4_0/impl/media-stream-transformer.js.map +1 -0
  370. package/esm/4_0/impl/parse-video-stream-metadata.d.ts +6 -0
  371. package/esm/4_0/impl/parse-video-stream-metadata.d.ts.map +1 -0
  372. package/esm/4_0/impl/parse-video-stream-metadata.js +21 -0
  373. package/esm/4_0/impl/parse-video-stream-metadata.js.map +1 -0
  374. package/esm/4_0/impl/prev.d.ts +2 -0
  375. package/esm/4_0/impl/prev.d.ts.map +1 -0
  376. package/esm/4_0/impl/prev.js +2 -0
  377. package/esm/4_0/impl/prev.js.map +1 -0
  378. package/esm/4_0/index.d.ts +100 -0
  379. package/esm/4_0/index.d.ts.map +1 -0
  380. package/esm/4_0/index.js +93 -0
  381. package/esm/4_0/index.js.map +1 -0
  382. package/esm/4_1/impl/control-message-types.d.ts +26 -0
  383. package/esm/4_1/impl/control-message-types.d.ts.map +1 -0
  384. package/esm/4_1/impl/control-message-types.js +27 -0
  385. package/esm/4_1/impl/control-message-types.js.map +1 -0
  386. package/esm/4_1/impl/defaults.d.ts +59 -0
  387. package/esm/4_1/impl/defaults.d.ts.map +1 -0
  388. package/esm/4_1/impl/defaults.js +6 -0
  389. package/esm/4_1/impl/defaults.js.map +1 -0
  390. package/esm/4_1/impl/index.d.ts +6 -0
  391. package/esm/4_1/impl/index.d.ts.map +1 -0
  392. package/esm/4_1/impl/index.js +5 -0
  393. package/esm/4_1/impl/index.js.map +1 -0
  394. package/esm/4_1/impl/init.d.ts +6 -0
  395. package/esm/4_1/impl/init.d.ts.map +1 -0
  396. package/esm/4_1/impl/init.js +2 -0
  397. package/esm/4_1/impl/init.js.map +1 -0
  398. package/esm/4_1/impl/parse-video-stream-metadata.d.ts +4 -0
  399. package/esm/4_1/impl/parse-video-stream-metadata.d.ts.map +1 -0
  400. package/esm/4_1/impl/parse-video-stream-metadata.js +19 -0
  401. package/esm/4_1/impl/parse-video-stream-metadata.js.map +1 -0
  402. package/esm/4_1/impl/prev.d.ts +2 -0
  403. package/esm/4_1/impl/prev.d.ts.map +1 -0
  404. package/esm/4_1/impl/prev.js +2 -0
  405. package/esm/4_1/impl/prev.js.map +1 -0
  406. package/esm/4_1/index.d.ts +101 -0
  407. package/esm/4_1/index.d.ts.map +1 -0
  408. package/esm/4_1/index.js +93 -0
  409. package/esm/4_1/index.js.map +1 -0
  410. package/esm/android/key-code-value.d.ts +176 -0
  411. package/esm/android/key-code-value.d.ts.map +1 -0
  412. package/esm/android/key-code-value.js +180 -0
  413. package/esm/android/key-code-value.js.map +1 -0
  414. package/esm/android/key-event.d.ts +3 -164
  415. package/esm/android/key-event.d.ts.map +1 -1
  416. package/esm/android/key-event.js +2 -167
  417. package/esm/android/key-event.js.map +1 -1
  418. package/esm/base/control-message-type-value.d.ts +24 -0
  419. package/esm/base/control-message-type-value.d.ts.map +1 -0
  420. package/esm/base/control-message-type-value.js +24 -0
  421. package/esm/base/control-message-type-value.js.map +1 -0
  422. package/esm/base/control-message-type.d.ts +3 -21
  423. package/esm/base/control-message-type.d.ts.map +1 -1
  424. package/esm/base/control-message-type.js +2 -21
  425. package/esm/base/control-message-type.js.map +1 -1
  426. package/esm/base/media.d.ts +8 -1
  427. package/esm/base/media.d.ts.map +1 -1
  428. package/esm/base/options.d.ts +8 -5
  429. package/esm/base/options.d.ts.map +1 -1
  430. package/esm/base/video.d.ts +1 -7
  431. package/esm/base/video.d.ts.map +1 -1
  432. package/esm/base/video.js +1 -13
  433. package/esm/base/video.js.map +1 -1
  434. package/esm/control/boolean.d.ts +10 -0
  435. package/esm/control/boolean.d.ts.map +1 -0
  436. package/esm/control/boolean.js +3 -0
  437. package/esm/control/boolean.js.map +1 -0
  438. package/esm/control/index.d.ts +2 -2
  439. package/esm/control/index.d.ts.map +1 -1
  440. package/esm/control/index.js +2 -2
  441. package/esm/control/index.js.map +1 -1
  442. package/esm/control/inject-key-code.d.ts +2 -2
  443. package/esm/control/inject-key-code.d.ts.map +1 -1
  444. package/esm/control/inject-key-code.js +4 -4
  445. package/esm/control/inject-key-code.js.map +1 -1
  446. package/esm/control/inject-text.d.ts.map +1 -1
  447. package/esm/control/inject-text.js +5 -1
  448. package/esm/control/inject-text.js.map +1 -1
  449. package/esm/control/resize-display.d.ts +12 -0
  450. package/esm/control/resize-display.d.ts.map +1 -0
  451. package/esm/control/resize-display.js +8 -0
  452. package/esm/control/resize-display.js.map +1 -0
  453. package/esm/control/serializer.d.ts +10 -2
  454. package/esm/control/serializer.d.ts.map +1 -1
  455. package/esm/control/serializer.js +57 -23
  456. package/esm/control/serializer.js.map +1 -1
  457. package/esm/control/start-app.d.ts.map +1 -1
  458. package/esm/control/start-app.js +1 -0
  459. package/esm/control/start-app.js.map +1 -1
  460. package/esm/control/uhid.d.ts +2 -2
  461. package/esm/control/uhid.d.ts.map +1 -1
  462. package/esm/control/uhid.js +9 -5
  463. package/esm/control/uhid.js.map +1 -1
  464. package/esm/control/writer.d.ts +8 -2
  465. package/esm/control/writer.d.ts.map +1 -1
  466. package/esm/control/writer.js +17 -2
  467. package/esm/control/writer.js.map +1 -1
  468. package/esm/index.d.ts +4 -1
  469. package/esm/index.d.ts.map +1 -1
  470. package/esm/index.js +4 -1
  471. package/esm/index.js.map +1 -1
  472. package/esm/latest.d.ts +2 -2
  473. package/esm/latest.d.ts.map +1 -1
  474. package/esm/latest.js +2 -2
  475. package/esm/latest.js.map +1 -1
  476. package/esm/utils/omit.d.ts +1 -1
  477. package/esm/utils/omit.d.ts.map +1 -1
  478. package/esm/video/android.d.ts +69 -0
  479. package/esm/video/android.d.ts.map +1 -0
  480. package/esm/video/android.js +70 -0
  481. package/esm/video/android.js.map +1 -0
  482. package/esm/video/codec-id.d.ts +6 -0
  483. package/esm/video/codec-id.d.ts.map +1 -0
  484. package/esm/video/codec-id.js +6 -0
  485. package/esm/video/codec-id.js.map +1 -0
  486. package/esm/video/index.d.ts +7 -0
  487. package/esm/video/index.d.ts.map +1 -0
  488. package/esm/video/index.js +15 -0
  489. package/esm/video/index.js.map +1 -0
  490. package/esm/video/size.d.ts +20 -0
  491. package/esm/video/size.d.ts.map +1 -0
  492. package/esm/video/size.js +27 -0
  493. package/esm/video/size.js.map +1 -0
  494. package/package.json +11 -10
  495. package/src/1_15/impl/codec-options.ts +287 -0
  496. package/src/1_15/impl/compute-option-values.ts +26 -0
  497. package/src/1_15/impl/control-message-types.ts +14 -14
  498. package/src/1_15/impl/index.ts +3 -0
  499. package/src/1_15/impl/init.ts +13 -87
  500. package/src/1_15/impl/inject-touch.ts +1 -0
  501. package/src/1_15/impl/media-stream-transformer.ts +3 -3
  502. package/src/1_15/impl/parse-video-stream-metadata.ts +4 -4
  503. package/src/1_15/impl/scroll-controller.ts +1 -0
  504. package/src/1_15/impl/set-clipboard.ts +5 -1
  505. package/src/1_15/impl/set-display-power.ts +29 -0
  506. package/src/1_15/options.ts +46 -11
  507. package/src/1_15_1.ts +1 -11
  508. package/src/1_16.ts +1 -11
  509. package/src/1_17/impl/defaults.ts +4 -5
  510. package/src/1_17/options.ts +47 -12
  511. package/src/1_18/impl/control-message-types.ts +15 -8
  512. package/src/1_18/impl/defaults.ts +6 -7
  513. package/src/1_18/impl/init.ts +7 -5
  514. package/src/1_18/options.ts +47 -12
  515. package/src/1_19.ts +1 -11
  516. package/src/1_20.ts +1 -11
  517. package/src/1_21/impl/compute-option-values.ts +43 -0
  518. package/src/1_21/impl/defaults.ts +4 -5
  519. package/src/1_21/impl/index.ts +10 -0
  520. package/src/1_21/impl/init.ts +1 -1
  521. package/src/1_21/impl/serialize.ts +3 -3
  522. package/src/1_21/impl/set-clipboard.ts +14 -0
  523. package/src/1_21/options.ts +56 -17
  524. package/src/1_22/impl/defaults.ts +6 -7
  525. package/src/1_22/impl/init.ts +3 -3
  526. package/src/1_22/impl/parse-video-stream-metadata.ts +4 -4
  527. package/src/1_22/options.ts +57 -18
  528. package/src/1_23/impl/defaults.ts +4 -5
  529. package/src/1_23/impl/init.ts +1 -1
  530. package/src/1_23/impl/media-stream-transformer.ts +3 -3
  531. package/src/1_23/options.ts +57 -18
  532. package/src/1_24/impl/defaults.ts +4 -5
  533. package/src/1_24/impl/init.ts +1 -1
  534. package/src/1_24/options.ts +57 -18
  535. package/src/1_25/impl/scroll-controller.ts +14 -15
  536. package/src/1_25/options.ts +57 -18
  537. package/src/2_0/impl/defaults.ts +3 -2
  538. package/src/2_0/impl/index.ts +5 -1
  539. package/src/2_0/impl/init.ts +12 -10
  540. package/src/2_0/impl/inject-touch.ts +16 -17
  541. package/src/2_0/impl/parse-audio-stream-metadata.ts +37 -51
  542. package/src/2_0/impl/parse-video-stream-metadata.ts +24 -21
  543. package/src/2_0/options.ts +73 -19
  544. package/src/2_1/impl/defaults.ts +5 -6
  545. package/src/2_1/impl/init.ts +3 -3
  546. package/src/2_1/options.ts +76 -22
  547. package/src/2_1_1.ts +1 -14
  548. package/src/2_2/generate-type-tests.js +106 -0
  549. package/src/2_2/impl/compute-option-values.ts +44 -0
  550. package/src/2_2/impl/defaults.ts +13 -14
  551. package/src/2_2/impl/index.ts +2 -0
  552. package/src/2_2/impl/init.ts +5 -5
  553. package/src/2_2/options.ts +76 -26
  554. package/src/2_3/impl/index.ts +4 -0
  555. package/src/2_3/impl/init.ts +2 -3
  556. package/src/2_3/impl/parse-audio-stream-metadata.ts +36 -0
  557. package/src/2_3/options.ts +76 -26
  558. package/src/2_3_1.ts +1 -14
  559. package/src/2_4/impl/control-message-types.ts +18 -9
  560. package/src/2_4/impl/serialize-uhid-create.ts +1 -0
  561. package/src/2_4/options.ts +83 -30
  562. package/src/2_5.ts +1 -14
  563. package/src/2_6/generate-type-tests.js +119 -0
  564. package/src/2_6/impl/compute-option-values.ts +48 -0
  565. package/src/2_6/impl/defaults.ts +4 -5
  566. package/src/2_6/impl/index.ts +9 -0
  567. package/src/2_6/impl/init.ts +3 -4
  568. package/src/2_6/options.ts +83 -34
  569. package/src/2_6_1.ts +1 -14
  570. package/src/2_7/impl/control-message-types.ts +19 -8
  571. package/src/2_7/impl/index.ts +1 -0
  572. package/src/2_7/impl/serialize-uhid-create.ts +1 -0
  573. package/src/2_7/options.ts +83 -34
  574. package/src/3_0/impl/control-message-types.ts +21 -8
  575. package/src/3_0/impl/defaults.ts +4 -3
  576. package/src/3_0/impl/index.ts +5 -0
  577. package/src/3_0/impl/init.ts +4 -5
  578. package/src/3_0/impl/set-display-power.ts +23 -0
  579. package/src/3_0/options.ts +83 -34
  580. package/src/3_0_1.ts +1 -14
  581. package/src/3_0_2.ts +1 -14
  582. package/src/3_1/impl/defaults.ts +4 -5
  583. package/src/3_1/impl/index.ts +1 -0
  584. package/src/3_1/impl/init.ts +2 -2
  585. package/src/3_1/impl/serialize-uhid-create.ts +1 -0
  586. package/src/3_1/options.ts +83 -34
  587. package/src/3_2/impl/defaults.ts +4 -5
  588. package/src/3_2/impl/index.ts +1 -0
  589. package/src/3_2/impl/init.ts +2 -3
  590. package/src/3_2/options.ts +83 -34
  591. package/src/3_3.ts +1 -14
  592. package/src/3_3_1/options.ts +83 -34
  593. package/src/3_3_2.ts +1 -14
  594. package/src/3_3_4.ts +1 -0
  595. package/src/4_0/impl/compute-option-values.ts +31 -0
  596. package/src/4_0/impl/control-message-types.ts +27 -0
  597. package/src/4_0/impl/defaults.ts +20 -0
  598. package/src/4_0/impl/index.ts +9 -0
  599. package/src/4_0/impl/init.ts +14 -0
  600. package/src/4_0/impl/media-stream-transformer.ts +58 -0
  601. package/src/4_0/impl/parse-video-stream-metadata.ts +34 -0
  602. package/src/4_0/impl/prev.ts +1 -0
  603. package/src/4_0/index.ts +226 -0
  604. package/src/4_1/impl/control-message-types.ts +28 -0
  605. package/src/4_1/impl/defaults.ts +8 -0
  606. package/src/4_1/impl/index.ts +6 -0
  607. package/src/4_1/impl/init.ts +7 -0
  608. package/src/4_1/impl/parse-video-stream-metadata.ts +23 -0
  609. package/src/4_1/impl/prev.ts +1 -0
  610. package/src/4_1/index.ts +226 -0
  611. package/src/android/key-code-value.ts +194 -0
  612. package/src/android/key-event.ts +5 -182
  613. package/src/base/control-message-type-value.ts +23 -0
  614. package/src/base/control-message-type.ts +6 -22
  615. package/src/base/media.ts +12 -3
  616. package/src/base/options.ts +20 -6
  617. package/src/base/video.ts +2 -19
  618. package/src/control/boolean.ts +9 -0
  619. package/src/control/index.ts +2 -2
  620. package/src/control/inject-key-code.ts +11 -12
  621. package/src/control/inject-text.ts +5 -1
  622. package/src/control/resize-display.ts +16 -0
  623. package/src/control/serializer.ts +70 -44
  624. package/src/control/start-app.ts +1 -0
  625. package/src/control/uhid.ts +14 -12
  626. package/src/control/writer.ts +24 -6
  627. package/src/index.ts +4 -1
  628. package/src/latest.ts +4 -2
  629. package/src/utils/omit.ts +1 -1
  630. package/src/video/android.ts +72 -0
  631. package/src/video/codec-id.ts +6 -0
  632. package/src/video/index.ts +21 -0
  633. package/src/video/size.ts +46 -0
  634. package/tsconfig.build.json +0 -8
  635. package/CHANGELOG.md +0 -224
  636. package/esm/codec/av1.d.ts +0 -462
  637. package/esm/codec/av1.d.ts.map +0 -1
  638. package/esm/codec/av1.js +0 -622
  639. package/esm/codec/av1.js.map +0 -1
  640. package/esm/codec/h264.d.ts +0 -78
  641. package/esm/codec/h264.d.ts.map +0 -1
  642. package/esm/codec/h264.js +0 -254
  643. package/esm/codec/h264.js.map +0 -1
  644. package/esm/codec/h265.d.ts +0 -535
  645. package/esm/codec/h265.d.ts.map +0 -1
  646. package/esm/codec/h265.js +0 -1117
  647. package/esm/codec/h265.js.map +0 -1
  648. package/esm/codec/index.d.ts +0 -5
  649. package/esm/codec/index.d.ts.map +0 -1
  650. package/esm/codec/index.js +0 -5
  651. package/esm/codec/index.js.map +0 -1
  652. package/esm/codec/nalu.d.ts +0 -28
  653. package/esm/codec/nalu.d.ts.map +0 -1
  654. package/esm/codec/nalu.js +0 -250
  655. package/esm/codec/nalu.js.map +0 -1
  656. package/esm/control/message-type-map.d.ts +0 -15
  657. package/esm/control/message-type-map.d.ts.map +0 -1
  658. package/esm/control/message-type-map.js +0 -23
  659. package/esm/control/message-type-map.js.map +0 -1
  660. package/esm/control/set-screen-power-mode.d.ts +0 -11
  661. package/esm/control/set-screen-power-mode.d.ts.map +0 -1
  662. package/esm/control/set-screen-power-mode.js +0 -3
  663. package/esm/control/set-screen-power-mode.js.map +0 -1
  664. package/src/codec/av1.ts +0 -724
  665. package/src/codec/h264.ts +0 -317
  666. package/src/codec/h265.ts +0 -1410
  667. package/src/codec/index.ts +0 -4
  668. package/src/codec/nalu.ts +0 -304
  669. package/src/control/message-type-map.ts +0 -30
  670. package/src/control/set-screen-power-mode.ts +0 -13
  671. package/tsconfig.build.tsbuildinfo +0 -1
@@ -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,69 +60,25 @@ 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);
87
77
 
88
78
  const stream = buffered.release();
89
- const reader = stream.getReader();
90
- while (true) {
91
- const { done, value } = await reader.read();
92
- if (done) {
93
- break;
94
- }
95
- await controller.enqueue(value);
79
+
80
+ for await (const chunk of stream) {
81
+ await controller.enqueue(chunk);
96
82
  }
97
83
  }),
98
84
  };
@@ -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
- ScrcpyControlMessageType,
7
7
  ScrcpyDisplay,
8
8
  ScrcpyEncoder,
9
- ScrcpyMediaStreamPacket,
10
9
  ScrcpyOptions,
11
10
  ScrcpyOptionsListEncoders,
12
11
  ScrcpyScrollController,
13
12
  ScrcpyVideoStream,
13
+ ScrcpyVideoStreamPacket,
14
14
  } from "../base/index.js";
15
15
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
16
16
  import type {
17
17
  ScrcpyBackOrScreenOnControlMessage,
18
18
  ScrcpyInjectTouchControlMessage,
19
19
  ScrcpySetClipboardControlMessage,
20
+ ScrcpySetDisplayPowerControlMessage,
20
21
  } from "../latest.js";
21
22
 
22
- import type { Init } from "./impl/index.js";
23
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
23
24
  import {
24
25
  AckClipboardHandler,
25
26
  ClipboardStream,
27
+ computeOptionValues,
26
28
  ControlMessageTypes,
27
29
  createMediaStreamTransformer,
28
30
  createScrollController,
29
31
  Defaults,
32
+ parseAudioCodecOption,
33
+ parseAudioMetadataCodec,
30
34
  parseAudioStreamMetadata,
31
35
  parseDisplay,
32
36
  parseEncoder,
37
+ parseVideoCodecOption,
33
38
  parseVideoStreamMetadata,
39
+ parseVideoStreamMetadataAsync,
34
40
  serialize,
35
41
  serializeBackOrScreenOnControlMessage,
36
42
  serializeInjectTouchControlMessage,
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
- get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
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,13 +75,15 @@ 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
- if (this.value.control && this.value.clipboardAutosync) {
68
- this.#clipboard = this.#deviceMessageParsers.add(
69
- new ClipboardStream(),
70
- );
81
+ if (this.value.control) {
82
+ if (this.value.clipboardAutosync) {
83
+ this.#clipboard = this.#deviceMessageParsers.add(
84
+ new ClipboardStream(),
85
+ );
86
+ }
71
87
 
72
88
  this.#ackClipboardHandler = this.#deviceMessageParsers.add(
73
89
  new AckClipboardHandler(),
@@ -98,18 +114,29 @@ export class ScrcpyOptions2_0
98
114
  parseVideoStreamMetadata(
99
115
  stream: ReadableStream<Uint8Array>,
100
116
  ): MaybePromiseLike<ScrcpyVideoStream> {
101
- 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
+ );
102
124
  }
103
125
 
104
126
  parseAudioStreamMetadata(
105
127
  stream: ReadableStream<Uint8Array>,
106
128
  ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
107
- return parseAudioStreamMetadata(stream, this.value);
129
+ return parseAudioStreamMetadata(
130
+ stream,
131
+ this.value.sendCodecMeta,
132
+ parseAudioMetadataCodec,
133
+ parseAudioCodecOption(this.value.audioCodec),
134
+ );
108
135
  }
109
136
 
110
137
  createMediaStreamTransformer(): TransformStream<
111
138
  Uint8Array,
112
- ScrcpyMediaStreamPacket
139
+ ScrcpyVideoStreamPacket
113
140
  > {
114
141
  return createMediaStreamTransformer(this.value);
115
142
  }
@@ -117,24 +144,46 @@ export class ScrcpyOptions2_0
117
144
  serializeInjectTouchControlMessage(
118
145
  message: ScrcpyInjectTouchControlMessage,
119
146
  ): Uint8Array {
147
+ if (!this.value.control) {
148
+ throw new Error("control is disabled");
149
+ }
120
150
  return serializeInjectTouchControlMessage(message);
121
151
  }
122
152
 
123
153
  serializeBackOrScreenOnControlMessage(
124
154
  message: ScrcpyBackOrScreenOnControlMessage,
125
155
  ): Uint8Array | undefined {
156
+ if (!this.value.control) {
157
+ throw new Error("control is disabled");
158
+ }
126
159
  return serializeBackOrScreenOnControlMessage(message);
127
160
  }
128
161
 
129
162
  serializeSetClipboardControlMessage(
130
163
  message: ScrcpySetClipboardControlMessage,
131
164
  ): Uint8Array | [Uint8Array, Promise<void>] {
132
- return this.#ackClipboardHandler!.serializeSetClipboardControlMessage(
165
+ if (!this.value.control) {
166
+ throw new Error("control is disabled");
167
+ }
168
+ return serializeSetClipboardControlMessage(
133
169
  message,
170
+ this.#ackClipboardHandler,
134
171
  );
135
172
  }
136
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
+
137
183
  createScrollController(): ScrcpyScrollController {
184
+ if (!this.value.control) {
185
+ throw new Error("control is disabled");
186
+ }
138
187
  return createScrollController();
139
188
  }
140
189
  }
@@ -143,4 +192,9 @@ type Init_ = Init;
143
192
 
144
193
  export namespace ScrcpyOptions2_0 {
145
194
  export type Init = Init_;
195
+
196
+ export type Value<TInit extends Init> = ComputeOptionTypes<
197
+ TInit,
198
+ typeof Defaults
199
+ >;
146
200
  }
@@ -1,9 +1,8 @@
1
1
  import type { Init } from "./init.js";
2
2
  import { PrevImpl } from "./prev.js";
3
3
 
4
- export const Defaults = /* #__PURE__ */ (() =>
5
- ({
6
- ...PrevImpl.Defaults,
7
- video: true,
8
- audioSource: "output",
9
- }) as const satisfies Required<Init<true>>)();
4
+ export const Defaults = {
5
+ ...PrevImpl.Defaults,
6
+ video: true,
7
+ audioSource: "output",
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
  }
@@ -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
- ScrcpyControlMessageType,
7
7
  ScrcpyDisplay,
8
8
  ScrcpyEncoder,
9
- ScrcpyMediaStreamPacket,
10
9
  ScrcpyOptions,
11
10
  ScrcpyOptionsListEncoders,
12
11
  ScrcpyScrollController,
13
12
  ScrcpyVideoStream,
13
+ ScrcpyVideoStreamPacket,
14
14
  } from "../base/index.js";
15
15
  import { ScrcpyDeviceMessageParsers } from "../base/index.js";
16
16
  import type {
17
17
  ScrcpyBackOrScreenOnControlMessage,
18
18
  ScrcpyInjectTouchControlMessage,
19
19
  ScrcpySetClipboardControlMessage,
20
+ ScrcpySetDisplayPowerControlMessage,
20
21
  } from "../latest.js";
21
22
 
22
- import type { Init } from "./impl/index.js";
23
+ import type { ComputeOptionTypes, Init } from "./impl/index.js";
23
24
  import {
24
25
  AckClipboardHandler,
25
26
  ClipboardStream,
27
+ computeOptionValues,
26
28
  ControlMessageTypes,
27
29
  createMediaStreamTransformer,
28
30
  createScrollController,
29
31
  Defaults,
32
+ parseAudioCodecOption,
33
+ parseAudioMetadataCodec,
30
34
  parseAudioStreamMetadata,
31
35
  parseDisplay,
32
36
  parseEncoder,
37
+ parseVideoCodecOption,
33
38
  parseVideoStreamMetadata,
39
+ parseVideoStreamMetadataAsync,
34
40
  serialize,
35
41
  serializeBackOrScreenOnControlMessage,
36
42
  serializeInjectTouchControlMessage,
43
+ serializeSetClipboardControlMessage,
44
+ serializeSetDisplayPowerControlMessage,
37
45
  setListDisplays,
38
46
  setListEncoders,
39
47
  } from "./impl/index.js";
40
48
 
41
- export class ScrcpyOptions2_1<TVideo extends boolean>
42
- implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
49
+ export class ScrcpyOptions2_1<TInit extends Init = Init>
50
+ implements
51
+ ScrcpyOptions<ScrcpyOptions2_1.Value<TInit>>,
52
+ ScrcpyOptionsListEncoders
43
53
  {
44
54
  static readonly Defaults = Defaults;
45
55
 
46
- readonly value: Required<Init<TVideo>>;
56
+ readonly value: ScrcpyOptions2_1.Value<TInit>;
47
57
 
48
- get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
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,13 +75,15 @@ export class ScrcpyOptions2_1<TVideo extends boolean>
61
75
  return this.#deviceMessageParsers;
62
76
  }
63
77
 
64
- constructor(init: Init<TVideo>) {
65
- this.value = { ...Defaults, ...init } as never;
78
+ constructor(init: TInit) {
79
+ this.value = computeOptionValues(init, Defaults);
66
80
 
67
- if (this.value.control && this.value.clipboardAutosync) {
68
- this.#clipboard = this.#deviceMessageParsers.add(
69
- new ClipboardStream(),
70
- );
81
+ if (this.value.control) {
82
+ if (this.value.clipboardAutosync) {
83
+ this.#clipboard = this.#deviceMessageParsers.add(
84
+ new ClipboardStream(),
85
+ );
86
+ }
71
87
 
72
88
  this.#ackClipboardHandler = this.#deviceMessageParsers.add(
73
89
  new AckClipboardHandler(),
@@ -76,7 +92,7 @@ export class ScrcpyOptions2_1<TVideo extends boolean>
76
92
  }
77
93
 
78
94
  serialize(): string[] {
79
- return serialize<Init<boolean>>(this.value, Defaults);
95
+ return serialize(this.value, Defaults);
80
96
  }
81
97
 
82
98
  setListDisplays(): void {
@@ -98,18 +114,29 @@ export class ScrcpyOptions2_1<TVideo extends boolean>
98
114
  parseVideoStreamMetadata(
99
115
  stream: ReadableStream<Uint8Array>,
100
116
  ): MaybePromiseLike<ScrcpyVideoStream> {
101
- 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
+ );
102
124
  }
103
125
 
104
126
  parseAudioStreamMetadata(
105
127
  stream: ReadableStream<Uint8Array>,
106
128
  ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
107
- return parseAudioStreamMetadata(stream, this.value);
129
+ return parseAudioStreamMetadata(
130
+ stream,
131
+ this.value.sendCodecMeta,
132
+ parseAudioMetadataCodec,
133
+ parseAudioCodecOption(this.value.audioCodec),
134
+ );
108
135
  }
109
136
 
110
137
  createMediaStreamTransformer(): TransformStream<
111
138
  Uint8Array,
112
- ScrcpyMediaStreamPacket
139
+ ScrcpyVideoStreamPacket
113
140
  > {
114
141
  return createMediaStreamTransformer(this.value);
115
142
  }
@@ -117,30 +144,57 @@ export class ScrcpyOptions2_1<TVideo extends boolean>
117
144
  serializeInjectTouchControlMessage(
118
145
  message: ScrcpyInjectTouchControlMessage,
119
146
  ): Uint8Array {
147
+ if (!this.value.control) {
148
+ throw new Error("control is disabled");
149
+ }
120
150
  return serializeInjectTouchControlMessage(message);
121
151
  }
122
152
 
123
153
  serializeBackOrScreenOnControlMessage(
124
154
  message: ScrcpyBackOrScreenOnControlMessage,
125
155
  ): Uint8Array | undefined {
156
+ if (!this.value.control) {
157
+ throw new Error("control is disabled");
158
+ }
126
159
  return serializeBackOrScreenOnControlMessage(message);
127
160
  }
128
161
 
129
162
  serializeSetClipboardControlMessage(
130
163
  message: ScrcpySetClipboardControlMessage,
131
164
  ): Uint8Array | [Uint8Array, Promise<void>] {
132
- return this.#ackClipboardHandler!.serializeSetClipboardControlMessage(
165
+ if (!this.value.control) {
166
+ throw new Error("control is disabled");
167
+ }
168
+ return serializeSetClipboardControlMessage(
133
169
  message,
170
+ this.#ackClipboardHandler,
134
171
  );
135
172
  }
136
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
+
137
183
  createScrollController(): ScrcpyScrollController {
184
+ if (!this.value.control) {
185
+ throw new Error("control is disabled");
186
+ }
138
187
  return createScrollController();
139
188
  }
140
189
  }
141
190
 
142
- type Init_<TVideo extends boolean> = Init<TVideo>;
191
+ type Init_ = Init;
143
192
 
144
193
  export namespace ScrcpyOptions2_1 {
145
- export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
194
+ export type Init = Init_;
195
+
196
+ export type Value<TInit extends Init> = ComputeOptionTypes<
197
+ TInit,
198
+ typeof Defaults
199
+ >;
146
200
  }
package/src/2_1_1.ts CHANGED
@@ -1,14 +1 @@
1
- import { ScrcpyOptions2_1 } from "./2_1/index.js";
2
-
3
- export class ScrcpyOptions2_1_1<
4
- TVideo extends boolean,
5
- > extends ScrcpyOptions2_1<TVideo> {
6
- constructor(init: ScrcpyOptions2_1.Init<TVideo>) {
7
- super(init);
8
- }
9
- }
10
-
11
- export namespace ScrcpyOptions2_1_1 {
12
- export type Init<TVideo extends boolean = boolean> =
13
- ScrcpyOptions2_1.Init<TVideo>;
14
- }
1
+ export { ScrcpyOptions2_1 as ScrcpyOptions2_1_1 } from "./2_1/index.js";