@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,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_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
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_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
81
  if (this.value.control) {
68
82
  if (this.value.clipboardAutosync) {
@@ -78,7 +92,7 @@ export class ScrcpyOptions2_1<TVideo extends boolean>
78
92
  }
79
93
 
80
94
  serialize(): string[] {
81
- return serialize<Init<boolean>>(this.value, Defaults);
95
+ return serialize(this.value, Defaults);
82
96
  }
83
97
 
84
98
  setListDisplays(): void {
@@ -100,18 +114,29 @@ export class ScrcpyOptions2_1<TVideo extends boolean>
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,31 +144,57 @@ export class ScrcpyOptions2_1<TVideo extends boolean>
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
  }
144
190
 
145
- type Init_<TVideo extends boolean> = Init<TVideo>;
191
+ type Init_ = Init;
146
192
 
147
193
  export namespace ScrcpyOptions2_1 {
148
- 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
+ >;
149
200
  }
@@ -0,0 +1,106 @@
1
+ /// <reference types="node" />
2
+
3
+ import { writeFileSync } from "node:fs";
4
+ import { format } from "prettier";
5
+
6
+ let content = `
7
+ // Generated by generate-type-tests.js. Do not edit manually.
8
+
9
+ import type {ReadableStream} from "@yume-chan/stream-extra";
10
+
11
+ import type {ScrcpyOptions2_2} from "./options.js";
12
+
13
+ type Equal<X, Y> =
14
+ (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2
15
+ ? true
16
+ : false;
17
+
18
+ function expectTrue<T extends true>(value?: T) { void value; }
19
+
20
+ `;
21
+
22
+ const controlValues = ["true", "false", "undefined"];
23
+ const videoSourceValues = [`"display"`, `"camera"`, "undefined"];
24
+
25
+ /**
26
+ * @param {string[]} values
27
+ */
28
+ function* powerSetExceptEmpty(values) {
29
+ /**
30
+ * @param {number} start
31
+ * @param {string[]} combo
32
+ * @returns {Generator<string[], void, unknown>}
33
+ */
34
+ function* backtrack(start, combo) {
35
+ if (combo.length > 0) {
36
+ yield [...combo];
37
+ }
38
+
39
+ for (let i = start; i < values.length; i++) {
40
+ combo.push(values[i]);
41
+ yield* backtrack(i + 1, combo);
42
+ combo.pop();
43
+ }
44
+ }
45
+
46
+ yield* backtrack(0, []);
47
+ }
48
+
49
+ /**
50
+ *
51
+ * @param {string[]} control
52
+ * @param {string[]} videoSource
53
+ * @param {string} expectedType
54
+ * @returns {string}
55
+ */
56
+ function generateCase(control, videoSource, expectedType) {
57
+ return `
58
+ expectTrue<Equal<ScrcpyOptions2_2<{control:${control.join("|")}, videoSource:${videoSource.join("|")}}>["clipboard"], ${expectedType}>>();
59
+ `.trim();
60
+ }
61
+
62
+ for (const control of powerSetExceptEmpty(controlValues)) {
63
+ content += `\n// #region control: ${control.join(" | ")}\n`;
64
+
65
+ for (const videoSource of powerSetExceptEmpty(videoSourceValues)) {
66
+ const willDisableControl =
67
+ videoSource.length === 1 && videoSource[0] === `"camera"`;
68
+ if (willDisableControl) {
69
+ content += generateCase(control, videoSource, "undefined");
70
+ continue;
71
+ }
72
+
73
+ const controlDefinitelyDisabled =
74
+ control.length === 1 && control[0] === "false";
75
+
76
+ const mayDisableControl = videoSource.includes(`"camera"`);
77
+ if (mayDisableControl) {
78
+ content += generateCase(
79
+ control,
80
+ videoSource,
81
+ controlDefinitelyDisabled
82
+ ? "undefined"
83
+ : "ReadableStream<string> | undefined",
84
+ );
85
+ continue;
86
+ }
87
+
88
+ const controlMaybeDisabled = control.includes("false");
89
+
90
+ content += generateCase(
91
+ control,
92
+ videoSource,
93
+ controlDefinitelyDisabled
94
+ ? "undefined"
95
+ : controlMaybeDisabled
96
+ ? "ReadableStream<string> | undefined"
97
+ : "ReadableStream<string>",
98
+ );
99
+ }
100
+
101
+ content += `\n// #endregion\n`;
102
+ }
103
+
104
+ content = await format(content, { parser: "typescript", tabWidth: 4 });
105
+
106
+ writeFileSync(new URL("./type-tests.spec.ts", import.meta.url), content);
@@ -0,0 +1,44 @@
1
+ import type { ComputeOptionTypes as ComputeOptionTypes1_15 } from "../../1_15/impl/index.js";
2
+ import { computeOptionValues as computeOptionValues1_15 } from "../../1_15/impl/index.js";
3
+
4
+ import { PrevImpl } from "./prev.js";
5
+
6
+ // Distributive Conditional Types
7
+ // (https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types)
8
+ type ComputeControl<TVideoSource, TControl> = TVideoSource extends "camera"
9
+ ? false
10
+ : TControl;
11
+
12
+ type OverrideControl<T> = Omit<T, "control"> & {
13
+ control: ComputeControl<
14
+ T extends { videoSource: infer TVideoSource } ? TVideoSource : never,
15
+ T extends { control: infer TControl } ? TControl : never
16
+ >;
17
+ };
18
+
19
+ export type ComputeOptionTypes<
20
+ T extends object,
21
+ TDefaults extends object,
22
+ > = PrevImpl.OverrideClipboardAutosync<
23
+ OverrideControl<ComputeOptionTypes1_15<T, TDefaults>>
24
+ >;
25
+
26
+ export function computeOptionValues<
27
+ T extends {
28
+ videoSource?: string | undefined;
29
+ control?: boolean | undefined;
30
+ clipboardAutosync?: boolean | undefined;
31
+ },
32
+ TDefaults extends {
33
+ videoSource: string;
34
+ control: boolean;
35
+ clipboardAutosync: boolean;
36
+ },
37
+ >(options: T, defaults: TDefaults): ComputeOptionTypes<T, TDefaults> {
38
+ const value = computeOptionValues1_15(options, defaults);
39
+ if (value.videoSource !== "display") {
40
+ value.control = false as never;
41
+ }
42
+ PrevImpl.overrideClipboardAutosync(value as never);
43
+ return value as never;
44
+ }
@@ -13,4 +13,4 @@ export const Defaults = {
13
13
  cameraHighSpeed: false,
14
14
  listCameras: false,
15
15
  listCameraSizes: false,
16
- } as const satisfies Required<Init<true>>;
16
+ } as const satisfies Required<Init>;
@@ -1,4 +1,6 @@
1
1
  export * from "../../2_1/impl/index.js";
2
+ export { computeOptionValues } from "./compute-option-values.js";
3
+ export type { ComputeOptionTypes } from "./compute-option-values.js";
2
4
  export { Defaults } from "./defaults.js";
3
5
  export type { Init } from "./init.js";
4
6
  export { parseDisplay } from "./parse-display.js";
@@ -1,14 +1,14 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
- export interface Init<TVideo extends boolean> extends PrevImpl.Init<TVideo> {
4
- videoSource?: "display" | "camera";
3
+ export interface Init extends PrevImpl.Init {
4
+ videoSource?: "display" | "camera" | undefined;
5
5
  cameraId?: string | undefined;
6
6
  cameraSize?: string | undefined;
7
7
  cameraFacing?: "front" | "back" | "external" | undefined;
8
8
  cameraAr?: string | undefined;
9
9
  cameraFps?: number | undefined;
10
- cameraHighSpeed?: boolean;
10
+ cameraHighSpeed?: boolean | undefined;
11
11
 
12
- listCameras?: boolean;
13
- listCameraSizes?: boolean;
12
+ listCameras?: boolean | undefined;
13
+ listCameraSizes?: boolean | undefined;
14
14
  }
@@ -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_2<TVideo extends boolean>
42
- implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
49
+ export class ScrcpyOptions2_2<TInit extends Init = Init>
50
+ implements
51
+ ScrcpyOptions<ScrcpyOptions2_2.Value<TInit>>,
52
+ ScrcpyOptionsListEncoders
43
53
  {
44
54
  static readonly Defaults = Defaults;
45
55
 
46
- readonly value: Required<Init<TVideo>>;
56
+ readonly value: ScrcpyOptions2_2.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,12 +75,8 @@ export class ScrcpyOptions2_2<TVideo extends boolean>
61
75
  return this.#deviceMessageParsers;
62
76
  }
63
77
 
64
- constructor(init: Init<TVideo>) {
65
- this.value = { ...Defaults, ...init } as never;
66
-
67
- if (this.value.videoSource === "camera") {
68
- this.value.control = false;
69
- }
78
+ constructor(init: TInit) {
79
+ this.value = computeOptionValues(init, Defaults);
70
80
 
71
81
  if (this.value.control) {
72
82
  if (this.value.clipboardAutosync) {
@@ -82,7 +92,7 @@ export class ScrcpyOptions2_2<TVideo extends boolean>
82
92
  }
83
93
 
84
94
  serialize(): string[] {
85
- return serialize<Init<boolean>>(this.value, Defaults);
95
+ return serialize(this.value, Defaults);
86
96
  }
87
97
 
88
98
  setListDisplays(): void {
@@ -104,18 +114,29 @@ export class ScrcpyOptions2_2<TVideo extends boolean>
104
114
  parseVideoStreamMetadata(
105
115
  stream: ReadableStream<Uint8Array>,
106
116
  ): MaybePromiseLike<ScrcpyVideoStream> {
107
- 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
+ );
108
124
  }
109
125
 
110
126
  parseAudioStreamMetadata(
111
127
  stream: ReadableStream<Uint8Array>,
112
128
  ): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
113
- return parseAudioStreamMetadata(stream, this.value);
129
+ return parseAudioStreamMetadata(
130
+ stream,
131
+ this.value.sendCodecMeta,
132
+ parseAudioMetadataCodec,
133
+ parseAudioCodecOption(this.value.audioCodec),
134
+ );
114
135
  }
115
136
 
116
137
  createMediaStreamTransformer(): TransformStream<
117
138
  Uint8Array,
118
- ScrcpyMediaStreamPacket
139
+ ScrcpyVideoStreamPacket
119
140
  > {
120
141
  return createMediaStreamTransformer(this.value);
121
142
  }
@@ -123,31 +144,57 @@ export class ScrcpyOptions2_2<TVideo extends boolean>
123
144
  serializeInjectTouchControlMessage(
124
145
  message: ScrcpyInjectTouchControlMessage,
125
146
  ): Uint8Array {
147
+ if (!this.value.control) {
148
+ throw new Error("control is disabled");
149
+ }
126
150
  return serializeInjectTouchControlMessage(message);
127
151
  }
128
152
 
129
153
  serializeBackOrScreenOnControlMessage(
130
154
  message: ScrcpyBackOrScreenOnControlMessage,
131
155
  ): Uint8Array | undefined {
156
+ if (!this.value.control) {
157
+ throw new Error("control is disabled");
158
+ }
132
159
  return serializeBackOrScreenOnControlMessage(message);
133
160
  }
134
161
 
135
162
  serializeSetClipboardControlMessage(
136
163
  message: ScrcpySetClipboardControlMessage,
137
164
  ): Uint8Array | [Uint8Array, Promise<void>] {
165
+ if (!this.value.control) {
166
+ throw new Error("control is disabled");
167
+ }
138
168
  return serializeSetClipboardControlMessage(
139
169
  message,
140
170
  this.#ackClipboardHandler,
141
171
  );
142
172
  }
143
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
+
144
183
  createScrollController(): ScrcpyScrollController {
184
+ if (!this.value.control) {
185
+ throw new Error("control is disabled");
186
+ }
145
187
  return createScrollController();
146
188
  }
147
189
  }
148
190
 
149
- type Init_<TVideo extends boolean> = Init<TVideo>;
191
+ type Init_ = Init;
150
192
 
151
193
  export namespace ScrcpyOptions2_2 {
152
- 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
+ >;
153
200
  }
@@ -1,2 +1,6 @@
1
1
  export * from "../../2_2/impl/index.js";
2
2
  export type { Init } from "./init.js";
3
+ export {
4
+ parseAudioCodecOption,
5
+ parseAudioMetadataCodec,
6
+ } from "./parse-audio-stream-metadata.js";
@@ -1,8 +1,5 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
- export interface Init<TVideo extends boolean> extends Omit<
4
- PrevImpl.Init<TVideo>,
5
- "audioCodec"
6
- > {
7
- audioCodec?: PrevImpl.Init<TVideo>["audioCodec"] | "flac";
3
+ export interface Init extends Omit<PrevImpl.Init, "audioCodec"> {
4
+ audioCodec?: PrevImpl.Init["audioCodec"] | "flac";
8
5
  }
@@ -0,0 +1,36 @@
1
+ import { ScrcpyAudioCodec } from "../../base/index.js";
2
+
3
+ import type { Init } from "./init.js";
4
+
5
+ export function parseAudioMetadataCodec(codec: number): ScrcpyAudioCodec {
6
+ switch (codec) {
7
+ case ScrcpyAudioCodec.Raw.metadataValue:
8
+ return ScrcpyAudioCodec.Raw;
9
+ case ScrcpyAudioCodec.Opus.metadataValue:
10
+ return ScrcpyAudioCodec.Opus;
11
+ case ScrcpyAudioCodec.Aac.metadataValue:
12
+ return ScrcpyAudioCodec.Aac;
13
+ case ScrcpyAudioCodec.Flac.metadataValue:
14
+ return ScrcpyAudioCodec.Flac;
15
+ default:
16
+ throw new Error(`Unknown audio codec metadata value: ${codec}`);
17
+ }
18
+ }
19
+
20
+ export function parseAudioCodecOption(
21
+ audioCodec: Exclude<Init["audioCodec"], undefined>,
22
+ ): ScrcpyAudioCodec {
23
+ switch (audioCodec) {
24
+ case "raw":
25
+ return ScrcpyAudioCodec.Raw;
26
+ case "opus":
27
+ return ScrcpyAudioCodec.Opus;
28
+ case "aac":
29
+ return ScrcpyAudioCodec.Aac;
30
+ case "flac":
31
+ return ScrcpyAudioCodec.Flac;
32
+ default:
33
+ // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
34
+ throw new Error(`Unknown audio codec: ${audioCodec}`);
35
+ }
36
+ }