@yume-chan/scrcpy 1.0.0 → 2.0.0

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 (386) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +1 -1
  3. package/esm/1_15/impl/back-or-screen-on.d.ts +1 -1
  4. package/esm/1_15/impl/clipboard-stream.d.ts +3 -3
  5. package/esm/1_15/impl/defaults.d.ts +1 -2
  6. package/esm/1_15/impl/defaults.d.ts.map +1 -1
  7. package/esm/1_15/impl/defaults.js +2 -2
  8. package/esm/1_15/impl/defaults.js.map +1 -1
  9. package/esm/1_15/impl/init.d.ts +10 -2
  10. package/esm/1_15/impl/init.d.ts.map +1 -1
  11. package/esm/1_15/impl/init.js +15 -0
  12. package/esm/1_15/impl/init.js.map +1 -1
  13. package/esm/1_15/impl/inject-touch.d.ts +9 -9
  14. package/esm/1_15/impl/inject-touch.d.ts.map +1 -1
  15. package/esm/1_15/impl/inject-touch.js +14 -18
  16. package/esm/1_15/impl/inject-touch.js.map +1 -1
  17. package/esm/1_15/impl/media-stream-transformer.d.ts +3 -3
  18. package/esm/1_15/impl/scroll-controller.d.ts +5 -5
  19. package/esm/1_15/impl/scroll-controller.js +2 -2
  20. package/esm/1_15/impl/scroll-controller.js.map +1 -1
  21. package/esm/1_15/impl/set-clipboard.d.ts +3 -3
  22. package/esm/1_15/index.d.ts +0 -1
  23. package/esm/1_15/index.d.ts.map +1 -1
  24. package/esm/1_15/index.js +0 -1
  25. package/esm/1_15/index.js.map +1 -1
  26. package/esm/1_15/options.d.ts +3 -3
  27. package/esm/1_15/options.d.ts.map +1 -1
  28. package/esm/1_15/options.js.map +1 -1
  29. package/esm/1_15_1.d.ts +8 -0
  30. package/esm/1_15_1.d.ts.map +1 -0
  31. package/esm/1_15_1.js +7 -0
  32. package/esm/1_15_1.js.map +1 -0
  33. package/esm/1_16.d.ts +7 -1
  34. package/esm/1_16.d.ts.map +1 -1
  35. package/esm/1_16.js +6 -1
  36. package/esm/1_16.js.map +1 -1
  37. package/esm/1_17/impl/defaults.d.ts +1 -2
  38. package/esm/1_17/impl/defaults.d.ts.map +1 -1
  39. package/esm/1_17/index.d.ts +0 -1
  40. package/esm/1_17/index.d.ts.map +1 -1
  41. package/esm/1_17/index.js +0 -1
  42. package/esm/1_17/index.js.map +1 -1
  43. package/esm/1_17/options.d.ts +5 -5
  44. package/esm/1_17/options.d.ts.map +1 -1
  45. package/esm/1_17/options.js.map +1 -1
  46. package/esm/1_18/impl/back-or-screen-on.d.ts +5 -3
  47. package/esm/1_18/impl/back-or-screen-on.d.ts.map +1 -1
  48. package/esm/1_18/impl/back-or-screen-on.js +2 -5
  49. package/esm/1_18/impl/back-or-screen-on.js.map +1 -1
  50. package/esm/1_18/impl/defaults.d.ts +1 -2
  51. package/esm/1_18/impl/defaults.d.ts.map +1 -1
  52. package/esm/1_18/index.d.ts +0 -1
  53. package/esm/1_18/index.d.ts.map +1 -1
  54. package/esm/1_18/index.js +0 -1
  55. package/esm/1_18/index.js.map +1 -1
  56. package/esm/1_18/options.d.ts +5 -5
  57. package/esm/1_18/options.d.ts.map +1 -1
  58. package/esm/1_18/options.js.map +1 -1
  59. package/esm/1_19.d.ts +7 -1
  60. package/esm/1_19.d.ts.map +1 -1
  61. package/esm/1_19.js +6 -1
  62. package/esm/1_19.js.map +1 -1
  63. package/esm/1_20.d.ts +7 -1
  64. package/esm/1_20.d.ts.map +1 -1
  65. package/esm/1_20.js +6 -1
  66. package/esm/1_20.js.map +1 -1
  67. package/esm/1_21/impl/defaults.d.ts +1 -2
  68. package/esm/1_21/impl/defaults.d.ts.map +1 -1
  69. package/esm/1_21/impl/set-clipboard.d.ts +6 -6
  70. package/esm/1_21/index.d.ts +0 -1
  71. package/esm/1_21/index.d.ts.map +1 -1
  72. package/esm/1_21/index.js +0 -1
  73. package/esm/1_21/index.js.map +1 -1
  74. package/esm/1_21/options.d.ts +5 -5
  75. package/esm/1_21/options.d.ts.map +1 -1
  76. package/esm/1_21/options.js.map +1 -1
  77. package/esm/1_22/impl/defaults.d.ts +1 -2
  78. package/esm/1_22/impl/defaults.d.ts.map +1 -1
  79. package/esm/1_22/impl/index.d.ts +1 -1
  80. package/esm/1_22/impl/index.d.ts.map +1 -1
  81. package/esm/1_22/impl/index.js +1 -1
  82. package/esm/1_22/impl/index.js.map +1 -1
  83. package/esm/1_22/impl/scroll-controller.d.ts +10 -6
  84. package/esm/1_22/impl/scroll-controller.d.ts.map +1 -1
  85. package/esm/1_22/impl/scroll-controller.js +5 -5
  86. package/esm/1_22/impl/scroll-controller.js.map +1 -1
  87. package/esm/1_22/index.d.ts +0 -1
  88. package/esm/1_22/index.d.ts.map +1 -1
  89. package/esm/1_22/index.js +0 -1
  90. package/esm/1_22/index.js.map +1 -1
  91. package/esm/1_22/options.d.ts +5 -5
  92. package/esm/1_22/options.d.ts.map +1 -1
  93. package/esm/1_22/options.js.map +1 -1
  94. package/esm/1_23/impl/defaults.d.ts +1 -2
  95. package/esm/1_23/impl/defaults.d.ts.map +1 -1
  96. package/esm/1_23/index.d.ts +0 -1
  97. package/esm/1_23/index.d.ts.map +1 -1
  98. package/esm/1_23/index.js +0 -1
  99. package/esm/1_23/index.js.map +1 -1
  100. package/esm/1_23/options.d.ts +5 -5
  101. package/esm/1_23/options.d.ts.map +1 -1
  102. package/esm/1_23/options.js.map +1 -1
  103. package/esm/1_24/impl/defaults.d.ts +1 -2
  104. package/esm/1_24/impl/defaults.d.ts.map +1 -1
  105. package/esm/1_24/index.d.ts +0 -1
  106. package/esm/1_24/index.d.ts.map +1 -1
  107. package/esm/1_24/index.js +0 -1
  108. package/esm/1_24/index.js.map +1 -1
  109. package/esm/1_24/options.d.ts +5 -5
  110. package/esm/1_24/options.d.ts.map +1 -1
  111. package/esm/1_24/options.js.map +1 -1
  112. package/esm/1_25/impl/index.d.ts +1 -1
  113. package/esm/1_25/impl/index.d.ts.map +1 -1
  114. package/esm/1_25/impl/index.js +1 -1
  115. package/esm/1_25/impl/index.js.map +1 -1
  116. package/esm/1_25/impl/scroll-controller.d.ts +12 -11
  117. package/esm/1_25/impl/scroll-controller.d.ts.map +1 -1
  118. package/esm/1_25/impl/scroll-controller.js +17 -18
  119. package/esm/1_25/impl/scroll-controller.js.map +1 -1
  120. package/esm/1_25/index.d.ts +0 -1
  121. package/esm/1_25/index.d.ts.map +1 -1
  122. package/esm/1_25/index.js +0 -1
  123. package/esm/1_25/index.js.map +1 -1
  124. package/esm/1_25/options.d.ts +5 -5
  125. package/esm/1_25/options.d.ts.map +1 -1
  126. package/esm/1_25/options.js.map +1 -1
  127. package/esm/2_0/impl/defaults.d.ts +4 -6
  128. package/esm/2_0/impl/defaults.d.ts.map +1 -1
  129. package/esm/2_0/impl/defaults.js +3 -4
  130. package/esm/2_0/impl/defaults.js.map +1 -1
  131. package/esm/2_0/impl/init.d.ts +3 -3
  132. package/esm/2_0/impl/init.d.ts.map +1 -1
  133. package/esm/2_0/impl/inject-touch.d.ts +11 -11
  134. package/esm/2_0/impl/inject-touch.js +2 -2
  135. package/esm/2_0/impl/inject-touch.js.map +1 -1
  136. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +1 -1
  137. package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
  138. package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
  139. package/esm/2_0/index.d.ts +0 -1
  140. package/esm/2_0/index.d.ts.map +1 -1
  141. package/esm/2_0/index.js +0 -1
  142. package/esm/2_0/index.js.map +1 -1
  143. package/esm/2_0/options.d.ts +8 -8
  144. package/esm/2_0/options.d.ts.map +1 -1
  145. package/esm/2_0/options.js.map +1 -1
  146. package/esm/2_1/impl/defaults.d.ts +4 -5
  147. package/esm/2_1/impl/defaults.d.ts.map +1 -1
  148. package/esm/2_1/impl/defaults.js.map +1 -1
  149. package/esm/2_1/impl/init.d.ts +2 -2
  150. package/esm/2_1/impl/init.d.ts.map +1 -1
  151. package/esm/2_1/index.d.ts +0 -1
  152. package/esm/2_1/index.d.ts.map +1 -1
  153. package/esm/2_1/index.js +0 -1
  154. package/esm/2_1/index.js.map +1 -1
  155. package/esm/2_1/options.d.ts +12 -12
  156. package/esm/2_1/options.d.ts.map +1 -1
  157. package/esm/2_1/options.js.map +1 -1
  158. package/esm/2_1_1.d.ts +8 -0
  159. package/esm/2_1_1.d.ts.map +1 -0
  160. package/esm/2_1_1.js +7 -0
  161. package/esm/2_1_1.js.map +1 -0
  162. package/esm/2_2/impl/defaults.d.ts +4 -5
  163. package/esm/2_2/impl/defaults.d.ts.map +1 -1
  164. package/esm/2_2/impl/defaults.js.map +1 -1
  165. package/esm/2_2/impl/init.d.ts +1 -1
  166. package/esm/2_2/impl/init.d.ts.map +1 -1
  167. package/esm/2_2/index.d.ts +0 -1
  168. package/esm/2_2/index.d.ts.map +1 -1
  169. package/esm/2_2/index.js +0 -1
  170. package/esm/2_2/index.js.map +1 -1
  171. package/esm/2_2/options.d.ts +12 -12
  172. package/esm/2_2/options.d.ts.map +1 -1
  173. package/esm/2_2/options.js.map +1 -1
  174. package/esm/2_3/impl/init.d.ts +2 -2
  175. package/esm/2_3/impl/init.d.ts.map +1 -1
  176. package/esm/2_3/index.d.ts +0 -1
  177. package/esm/2_3/index.d.ts.map +1 -1
  178. package/esm/2_3/index.js +0 -1
  179. package/esm/2_3/index.js.map +1 -1
  180. package/esm/2_3/options.d.ts +12 -12
  181. package/esm/2_3/options.d.ts.map +1 -1
  182. package/esm/2_3/options.js.map +1 -1
  183. package/esm/2_3_1.d.ts +8 -0
  184. package/esm/2_3_1.d.ts.map +1 -0
  185. package/esm/2_3_1.js +7 -0
  186. package/esm/2_3_1.js.map +1 -0
  187. package/esm/2_4/impl/serialize-uhid-create.d.ts +3 -3
  188. package/esm/2_4/impl/uhid-output-stream.d.ts +3 -3
  189. package/esm/2_4/index.d.ts +0 -1
  190. package/esm/2_4/index.d.ts.map +1 -1
  191. package/esm/2_4/index.js +0 -1
  192. package/esm/2_4/index.js.map +1 -1
  193. package/esm/2_4/options.d.ts +12 -12
  194. package/esm/2_4/options.d.ts.map +1 -1
  195. package/esm/2_4/options.js.map +1 -1
  196. package/esm/2_5.d.ts +7 -1
  197. package/esm/2_5.d.ts.map +1 -1
  198. package/esm/2_5.js +6 -1
  199. package/esm/2_5.js.map +1 -1
  200. package/esm/2_6/impl/defaults.d.ts +4 -5
  201. package/esm/2_6/impl/defaults.d.ts.map +1 -1
  202. package/esm/2_6/impl/defaults.js.map +1 -1
  203. package/esm/2_6/impl/init.d.ts +2 -2
  204. package/esm/2_6/impl/init.d.ts.map +1 -1
  205. package/esm/2_6/index.d.ts +0 -1
  206. package/esm/2_6/index.d.ts.map +1 -1
  207. package/esm/2_6/index.js +0 -1
  208. package/esm/2_6/index.js.map +1 -1
  209. package/esm/2_6/options.d.ts +12 -12
  210. package/esm/2_6/options.d.ts.map +1 -1
  211. package/esm/2_6/options.js.map +1 -1
  212. package/esm/2_6_1.d.ts +8 -0
  213. package/esm/2_6_1.d.ts.map +1 -0
  214. package/esm/2_6_1.js +7 -0
  215. package/esm/2_6_1.js.map +1 -0
  216. package/esm/2_7/impl/serialize-uhid-create.d.ts +7 -7
  217. package/esm/2_7/index.d.ts +0 -1
  218. package/esm/2_7/index.d.ts.map +1 -1
  219. package/esm/2_7/index.js +0 -1
  220. package/esm/2_7/index.js.map +1 -1
  221. package/esm/2_7/options.d.ts +12 -12
  222. package/esm/2_7/options.d.ts.map +1 -1
  223. package/esm/2_7/options.js.map +1 -1
  224. package/esm/3_0/impl/defaults.d.ts +5 -7
  225. package/esm/3_0/impl/defaults.d.ts.map +1 -1
  226. package/esm/3_0/impl/defaults.js +1 -2
  227. package/esm/3_0/impl/defaults.js.map +1 -1
  228. package/esm/3_0/impl/init.d.ts +3 -3
  229. package/esm/3_0/impl/init.d.ts.map +1 -1
  230. package/esm/3_0/index.d.ts +0 -1
  231. package/esm/3_0/index.d.ts.map +1 -1
  232. package/esm/3_0/index.js +0 -1
  233. package/esm/3_0/index.js.map +1 -1
  234. package/esm/3_0/options.d.ts +13 -13
  235. package/esm/3_0/options.d.ts.map +1 -1
  236. package/esm/3_0/options.js.map +1 -1
  237. package/esm/3_0_1.d.ts +8 -0
  238. package/esm/3_0_1.d.ts.map +1 -0
  239. package/esm/3_0_1.js +7 -0
  240. package/esm/3_0_1.js.map +1 -0
  241. package/esm/3_0_2.d.ts +8 -0
  242. package/esm/3_0_2.d.ts.map +1 -0
  243. package/esm/3_0_2.js +7 -0
  244. package/esm/3_0_2.js.map +1 -0
  245. package/esm/3_1/impl/defaults.d.ts +56 -0
  246. package/esm/3_1/impl/defaults.d.ts.map +1 -0
  247. package/esm/3_1/impl/defaults.js +6 -0
  248. package/esm/3_1/impl/defaults.js.map +1 -0
  249. package/esm/3_1/impl/index.d.ts +5 -0
  250. package/esm/3_1/impl/index.d.ts.map +1 -0
  251. package/esm/3_1/impl/index.js +4 -0
  252. package/esm/3_1/impl/index.js.map +1 -0
  253. package/esm/3_1/impl/init.d.ts +5 -0
  254. package/esm/3_1/impl/init.d.ts.map +1 -0
  255. package/esm/3_1/impl/init.js +2 -0
  256. package/esm/3_1/impl/init.js.map +1 -0
  257. package/esm/3_1/impl/prev.d.ts +2 -0
  258. package/esm/3_1/impl/prev.d.ts.map +1 -0
  259. package/esm/3_1/impl/prev.js +2 -0
  260. package/esm/3_1/impl/prev.js.map +1 -0
  261. package/esm/3_1/impl/serialize-uhid-create.d.ts +20 -0
  262. package/esm/3_1/impl/serialize-uhid-create.d.ts.map +1 -0
  263. package/esm/3_1/impl/serialize-uhid-create.js +14 -0
  264. package/esm/3_1/impl/serialize-uhid-create.js.map +1 -0
  265. package/esm/3_1/index.d.ts +2 -0
  266. package/esm/3_1/index.d.ts.map +1 -0
  267. package/esm/3_1/index.js +2 -0
  268. package/esm/3_1/index.js.map +1 -0
  269. package/esm/3_1/options.d.ts +90 -0
  270. package/esm/3_1/options.d.ts.map +1 -0
  271. package/esm/3_1/options.js +92 -0
  272. package/esm/3_1/options.js.map +1 -0
  273. package/esm/android/key-event.d.ts.map +1 -1
  274. package/esm/android/key-event.js +3 -2
  275. package/esm/android/key-event.js.map +1 -1
  276. package/esm/base/option-value.js +2 -2
  277. package/esm/base/option-value.js.map +1 -1
  278. package/esm/base/options.d.ts +6 -4
  279. package/esm/base/options.d.ts.map +1 -1
  280. package/esm/codec/h265.d.ts +23 -2
  281. package/esm/codec/h265.d.ts.map +1 -1
  282. package/esm/codec/h265.js +25 -3
  283. package/esm/codec/h265.js.map +1 -1
  284. package/esm/control/empty.d.ts +1 -1
  285. package/esm/control/inject-key-code.d.ts +9 -9
  286. package/esm/control/inject-text.d.ts +3 -3
  287. package/esm/control/set-screen-power-mode.d.ts +3 -3
  288. package/esm/control/start-app.d.ts +3 -3
  289. package/esm/control/uhid.d.ts +6 -6
  290. package/esm/index.d.ts +7 -0
  291. package/esm/index.d.ts.map +1 -1
  292. package/esm/index.js +7 -0
  293. package/esm/index.js.map +1 -1
  294. package/esm/latest.d.ts +8 -1
  295. package/esm/latest.d.ts.map +1 -1
  296. package/esm/latest.js +7 -1
  297. package/esm/latest.js.map +1 -1
  298. package/esm/utils/index.d.ts +0 -1
  299. package/esm/utils/index.d.ts.map +1 -1
  300. package/esm/utils/index.js +0 -1
  301. package/esm/utils/index.js.map +1 -1
  302. package/package.json +8 -8
  303. package/src/1_15/impl/defaults.ts +2 -2
  304. package/src/1_15/impl/init.ts +20 -2
  305. package/src/1_15/impl/inject-touch.ts +13 -12
  306. package/src/1_15/impl/scroll-controller.ts +2 -2
  307. package/src/1_15/index.ts +0 -1
  308. package/src/1_15/options.ts +2 -2
  309. package/src/1_15_1.ts +11 -0
  310. package/src/1_16.ts +11 -4
  311. package/src/1_17/index.ts +0 -1
  312. package/src/1_17/options.ts +6 -3
  313. package/src/1_18/impl/back-or-screen-on.ts +5 -9
  314. package/src/1_18/index.ts +0 -1
  315. package/src/1_18/options.ts +6 -3
  316. package/src/1_19.ts +11 -4
  317. package/src/1_20.ts +11 -4
  318. package/src/1_21/index.ts +0 -1
  319. package/src/1_21/options.ts +6 -3
  320. package/src/1_22/impl/index.ts +1 -0
  321. package/src/1_22/impl/scroll-controller.ts +10 -9
  322. package/src/1_22/index.ts +0 -1
  323. package/src/1_22/options.ts +6 -3
  324. package/src/1_23/index.ts +0 -1
  325. package/src/1_23/options.ts +6 -3
  326. package/src/1_24/index.ts +0 -1
  327. package/src/1_24/options.ts +6 -3
  328. package/src/1_25/impl/index.ts +1 -0
  329. package/src/1_25/impl/scroll-controller.ts +15 -10
  330. package/src/1_25/index.ts +0 -1
  331. package/src/1_25/options.ts +6 -3
  332. package/src/2_0/impl/defaults.ts +3 -4
  333. package/src/2_0/impl/init.ts +3 -3
  334. package/src/2_0/impl/inject-touch.ts +2 -2
  335. package/src/2_0/impl/parse-audio-stream-metadata.ts +1 -1
  336. package/src/2_0/index.ts +0 -1
  337. package/src/2_0/options.ts +6 -3
  338. package/src/2_1/impl/defaults.ts +1 -1
  339. package/src/2_1/impl/init.ts +2 -2
  340. package/src/2_1/index.ts +0 -1
  341. package/src/2_1/options.ts +12 -9
  342. package/src/2_1_1.ts +14 -0
  343. package/src/2_2/impl/defaults.ts +1 -1
  344. package/src/2_2/impl/init.ts +1 -1
  345. package/src/2_2/index.ts +0 -1
  346. package/src/2_2/options.ts +12 -9
  347. package/src/2_3/impl/init.ts +3 -2
  348. package/src/2_3/index.ts +0 -1
  349. package/src/2_3/options.ts +12 -9
  350. package/src/2_3_1.ts +14 -0
  351. package/src/2_4/index.ts +0 -1
  352. package/src/2_4/options.ts +12 -9
  353. package/src/2_5.ts +14 -4
  354. package/src/2_6/impl/defaults.ts +1 -1
  355. package/src/2_6/impl/init.ts +3 -2
  356. package/src/2_6/index.ts +0 -1
  357. package/src/2_6/options.ts +13 -10
  358. package/src/2_6_1.ts +14 -0
  359. package/src/2_7/index.ts +0 -1
  360. package/src/2_7/options.ts +12 -9
  361. package/src/3_0/impl/defaults.ts +2 -3
  362. package/src/3_0/impl/init.ts +4 -3
  363. package/src/3_0/index.ts +0 -1
  364. package/src/3_0/options.ts +12 -9
  365. package/src/3_0_1.ts +14 -0
  366. package/src/3_0_2.ts +14 -0
  367. package/src/3_1/impl/defaults.ts +8 -0
  368. package/src/3_1/impl/index.ts +7 -0
  369. package/src/3_1/impl/init.ts +5 -0
  370. package/src/3_1/impl/prev.ts +1 -0
  371. package/src/3_1/impl/serialize-uhid-create.ts +28 -0
  372. package/src/3_1/index.ts +1 -0
  373. package/src/3_1/options.ts +190 -0
  374. package/src/android/key-event.ts +3 -2
  375. package/src/base/option-value.ts +2 -2
  376. package/src/base/options.ts +11 -6
  377. package/src/codec/h265.ts +31 -5
  378. package/src/index.ts +7 -0
  379. package/src/latest.ts +17 -1
  380. package/src/utils/index.ts +0 -1
  381. package/tsconfig.build.tsbuildinfo +1 -1
  382. package/esm/utils/wrapper.d.ts +0 -37
  383. package/esm/utils/wrapper.d.ts.map +0 -1
  384. package/esm/utils/wrapper.js +0 -76
  385. package/esm/utils/wrapper.js.map +0 -1
  386. package/src/utils/wrapper.ts +0 -131
@@ -11,7 +11,7 @@ import { ScrcpyAudioCodec } from "../../base/index.js";
11
11
 
12
12
  export async function parseAudioStreamMetadata(
13
13
  stream: ReadableStream<Uint8Array>,
14
- options: Pick<Required<Init>, "sendCodecMeta" | "audioCodec">,
14
+ options: Pick<Required<Init<boolean>>, "sendCodecMeta" | "audioCodec">,
15
15
  ): Promise<ScrcpyAudioStreamMetadata> {
16
16
  const buffered = new BufferedReadableStream(stream);
17
17
 
package/src/2_0/index.ts CHANGED
@@ -1,2 +1 @@
1
- export * as ScrcpyOptions2_0Impl from "./impl/index.js";
2
1
  export * from "./options.js";
@@ -1,6 +1,6 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable } from "@yume-chan/struct";
3
+ import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
4
 
5
5
  import type {
6
6
  ScrcpyAudioStreamMetadata,
@@ -9,6 +9,7 @@ import type {
9
9
  ScrcpyEncoder,
10
10
  ScrcpyMediaStreamPacket,
11
11
  ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
12
13
  ScrcpyScrollController,
13
14
  ScrcpyVideoStream,
14
15
  } from "../base/index.js";
@@ -37,7 +38,9 @@ import {
37
38
  setListEncoders,
38
39
  } from "./impl/index.js";
39
40
 
40
- export class ScrcpyOptions2_0 implements ScrcpyOptions<Init> {
41
+ export class ScrcpyOptions2_0
42
+ implements ScrcpyOptions<Init>, ScrcpyOptionsListEncoders
43
+ {
41
44
  static readonly Defaults = Defaults;
42
45
 
43
46
  readonly value: Required<Init>;
@@ -96,7 +99,7 @@ export class ScrcpyOptions2_0 implements ScrcpyOptions<Init> {
96
99
 
97
100
  async parseDeviceMessage(
98
101
  id: number,
99
- stream: AsyncExactReadable,
102
+ stream: ExactReadable | AsyncExactReadable,
100
103
  ): Promise<void> {
101
104
  if (await this.#clipboard?.parse(id, stream)) {
102
105
  return;
@@ -6,4 +6,4 @@ export const Defaults = /* #__PURE__ */ (() =>
6
6
  ...PrevImpl.Defaults,
7
7
  video: true,
8
8
  audioSource: "output",
9
- }) as const satisfies Required<Init>)();
9
+ }) as const satisfies Required<Init<true>>)();
@@ -1,6 +1,6 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
- export interface Init extends PrevImpl.Init {
4
- video?: boolean;
3
+ export interface Init<TVideo extends boolean> extends PrevImpl.Init {
4
+ video?: TVideo;
5
5
  audioSource?: "output" | "mic";
6
6
  }
package/src/2_1/index.ts CHANGED
@@ -1,2 +1 @@
1
- export * as ScrcpyOptions2_1Impl from "./impl/index.js";
2
1
  export * from "./options.js";
@@ -1,6 +1,6 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable } from "@yume-chan/struct";
3
+ import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
4
 
5
5
  import type {
6
6
  ScrcpyAudioStreamMetadata,
@@ -9,6 +9,7 @@ import type {
9
9
  ScrcpyEncoder,
10
10
  ScrcpyMediaStreamPacket,
11
11
  ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
12
13
  ScrcpyScrollController,
13
14
  ScrcpyVideoStream,
14
15
  } from "../base/index.js";
@@ -37,10 +38,12 @@ import {
37
38
  setListEncoders,
38
39
  } from "./impl/index.js";
39
40
 
40
- export class ScrcpyOptions2_1 implements ScrcpyOptions<Init> {
41
+ export class ScrcpyOptions2_1<TVideo extends boolean>
42
+ implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
43
+ {
41
44
  static readonly Defaults = Defaults;
42
45
 
43
- readonly value: Required<Init>;
46
+ readonly value: Required<Init<TVideo>>;
44
47
 
45
48
  get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
46
49
  return ControlMessageTypes;
@@ -53,8 +56,8 @@ export class ScrcpyOptions2_1 implements ScrcpyOptions<Init> {
53
56
 
54
57
  #ackClipboardHandler: AckClipboardHandler | undefined;
55
58
 
56
- constructor(init: Init) {
57
- this.value = { ...Defaults, ...init };
59
+ constructor(init: Init<TVideo>) {
60
+ this.value = { ...Defaults, ...init } as never;
58
61
 
59
62
  if (this.value.control && this.value.clipboardAutosync) {
60
63
  this.#clipboard = new ClipboardStream();
@@ -63,7 +66,7 @@ export class ScrcpyOptions2_1 implements ScrcpyOptions<Init> {
63
66
  }
64
67
 
65
68
  serialize(): string[] {
66
- return serialize(this.value, Defaults);
69
+ return serialize<Init<boolean>>(this.value, Defaults);
67
70
  }
68
71
 
69
72
  setListDisplays(): void {
@@ -96,7 +99,7 @@ export class ScrcpyOptions2_1 implements ScrcpyOptions<Init> {
96
99
 
97
100
  async parseDeviceMessage(
98
101
  id: number,
99
- stream: AsyncExactReadable,
102
+ stream: ExactReadable | AsyncExactReadable,
100
103
  ): Promise<void> {
101
104
  if (await this.#clipboard?.parse(id, stream)) {
102
105
  return;
@@ -151,8 +154,8 @@ export class ScrcpyOptions2_1 implements ScrcpyOptions<Init> {
151
154
  }
152
155
  }
153
156
 
154
- type Init_ = Init;
157
+ type Init_<TVideo extends boolean> = Init<TVideo>;
155
158
 
156
159
  export namespace ScrcpyOptions2_1 {
157
- export type Init = Init_;
160
+ export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
158
161
  }
package/src/2_1_1.ts ADDED
@@ -0,0 +1,14 @@
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
+ }
@@ -14,4 +14,4 @@ export const Defaults = /* #__PURE__ */ (() =>
14
14
  cameraHighSpeed: false,
15
15
  listCameras: false,
16
16
  listCameraSizes: false,
17
- }) as const satisfies Required<Init>)();
17
+ }) as const satisfies Required<Init<true>>)();
@@ -1,6 +1,6 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
- export interface Init extends PrevImpl.Init {
3
+ export interface Init<TVideo extends boolean> extends PrevImpl.Init<TVideo> {
4
4
  videoSource?: "display" | "camera";
5
5
  cameraId?: string | undefined;
6
6
  cameraSize?: string | undefined;
package/src/2_2/index.ts CHANGED
@@ -1,2 +1 @@
1
- export * as ScrcpyOptions2_2Impl from "./impl/index.js";
2
1
  export * from "./options.js";
@@ -1,6 +1,6 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable } from "@yume-chan/struct";
3
+ import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
4
 
5
5
  import type {
6
6
  ScrcpyAudioStreamMetadata,
@@ -9,6 +9,7 @@ import type {
9
9
  ScrcpyEncoder,
10
10
  ScrcpyMediaStreamPacket,
11
11
  ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
12
13
  ScrcpyScrollController,
13
14
  ScrcpyVideoStream,
14
15
  } from "../base/index.js";
@@ -37,10 +38,12 @@ import {
37
38
  setListEncoders,
38
39
  } from "./impl/index.js";
39
40
 
40
- export class ScrcpyOptions2_2 implements ScrcpyOptions<Init> {
41
+ export class ScrcpyOptions2_2<TVideo extends boolean>
42
+ implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
43
+ {
41
44
  static readonly Defaults = Defaults;
42
45
 
43
- readonly value: Required<Init>;
46
+ readonly value: Required<Init<TVideo>>;
44
47
 
45
48
  get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
46
49
  return ControlMessageTypes;
@@ -53,8 +56,8 @@ export class ScrcpyOptions2_2 implements ScrcpyOptions<Init> {
53
56
 
54
57
  #ackClipboardHandler: AckClipboardHandler | undefined;
55
58
 
56
- constructor(init: Init) {
57
- this.value = { ...Defaults, ...init };
59
+ constructor(init: Init<TVideo>) {
60
+ this.value = { ...Defaults, ...init } as never;
58
61
 
59
62
  if (this.value.videoSource === "camera") {
60
63
  this.value.control = false;
@@ -67,7 +70,7 @@ export class ScrcpyOptions2_2 implements ScrcpyOptions<Init> {
67
70
  }
68
71
 
69
72
  serialize(): string[] {
70
- return serialize(this.value, Defaults);
73
+ return serialize<Init<boolean>>(this.value, Defaults);
71
74
  }
72
75
 
73
76
  setListDisplays(): void {
@@ -100,7 +103,7 @@ export class ScrcpyOptions2_2 implements ScrcpyOptions<Init> {
100
103
 
101
104
  async parseDeviceMessage(
102
105
  id: number,
103
- stream: AsyncExactReadable,
106
+ stream: ExactReadable | AsyncExactReadable,
104
107
  ): Promise<void> {
105
108
  if (await this.#clipboard?.parse(id, stream)) {
106
109
  return;
@@ -155,8 +158,8 @@ export class ScrcpyOptions2_2 implements ScrcpyOptions<Init> {
155
158
  }
156
159
  }
157
160
 
158
- type Init_ = Init;
161
+ type Init_<TVideo extends boolean> = Init<TVideo>;
159
162
 
160
163
  export namespace ScrcpyOptions2_2 {
161
- export type Init = Init_;
164
+ export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
162
165
  }
@@ -1,5 +1,6 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
- export interface Init extends Omit<PrevImpl.Init, "audioCodec"> {
4
- audioCodec?: PrevImpl.Init["audioCodec"] | "flac";
3
+ export interface Init<TVideo extends boolean>
4
+ extends Omit<PrevImpl.Init<TVideo>, "audioCodec"> {
5
+ audioCodec?: PrevImpl.Init<TVideo>["audioCodec"] | "flac";
5
6
  }
package/src/2_3/index.ts CHANGED
@@ -1,2 +1 @@
1
- export * as ScrcpyOptions2_3Impl from "./impl/index.js";
2
1
  export * from "./options.js";
@@ -1,6 +1,6 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable } from "@yume-chan/struct";
3
+ import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
4
 
5
5
  import type {
6
6
  ScrcpyAudioStreamMetadata,
@@ -9,6 +9,7 @@ import type {
9
9
  ScrcpyEncoder,
10
10
  ScrcpyMediaStreamPacket,
11
11
  ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
12
13
  ScrcpyScrollController,
13
14
  ScrcpyVideoStream,
14
15
  } from "../base/index.js";
@@ -37,10 +38,12 @@ import {
37
38
  setListEncoders,
38
39
  } from "./impl/index.js";
39
40
 
40
- export class ScrcpyOptions2_3 implements ScrcpyOptions<Init> {
41
+ export class ScrcpyOptions2_3<TVideo extends boolean>
42
+ implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
43
+ {
41
44
  static readonly Defaults = Defaults;
42
45
 
43
- readonly value: Required<Init>;
46
+ readonly value: Required<Init<TVideo>>;
44
47
 
45
48
  get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
46
49
  return ControlMessageTypes;
@@ -53,8 +56,8 @@ export class ScrcpyOptions2_3 implements ScrcpyOptions<Init> {
53
56
 
54
57
  #ackClipboardHandler: AckClipboardHandler | undefined;
55
58
 
56
- constructor(init: Init) {
57
- this.value = { ...Defaults, ...init };
59
+ constructor(init: Init<TVideo>) {
60
+ this.value = { ...Defaults, ...init } as never;
58
61
 
59
62
  if (this.value.videoSource === "camera") {
60
63
  this.value.control = false;
@@ -67,7 +70,7 @@ export class ScrcpyOptions2_3 implements ScrcpyOptions<Init> {
67
70
  }
68
71
 
69
72
  serialize(): string[] {
70
- return serialize(this.value, Defaults);
73
+ return serialize<Init<boolean>>(this.value, Defaults);
71
74
  }
72
75
 
73
76
  setListDisplays(): void {
@@ -100,7 +103,7 @@ export class ScrcpyOptions2_3 implements ScrcpyOptions<Init> {
100
103
 
101
104
  async parseDeviceMessage(
102
105
  id: number,
103
- stream: AsyncExactReadable,
106
+ stream: ExactReadable | AsyncExactReadable,
104
107
  ): Promise<void> {
105
108
  if (await this.#clipboard?.parse(id, stream)) {
106
109
  return;
@@ -155,8 +158,8 @@ export class ScrcpyOptions2_3 implements ScrcpyOptions<Init> {
155
158
  }
156
159
  }
157
160
 
158
- type Init_ = Init;
161
+ type Init_<TVideo extends boolean> = Init<TVideo>;
159
162
 
160
163
  export namespace ScrcpyOptions2_3 {
161
- export type Init = Init_;
164
+ export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
162
165
  }
package/src/2_3_1.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { ScrcpyOptions2_3 } from "./2_3/index.js";
2
+
3
+ export class ScrcpyOptions2_3_1<
4
+ TVideo extends boolean,
5
+ > extends ScrcpyOptions2_3<TVideo> {
6
+ constructor(init: ScrcpyOptions2_3.Init<TVideo>) {
7
+ super(init);
8
+ }
9
+ }
10
+
11
+ export namespace ScrcpyOptions2_3_1 {
12
+ export type Init<TVideo extends boolean = boolean> =
13
+ ScrcpyOptions2_3.Init<TVideo>;
14
+ }
package/src/2_4/index.ts CHANGED
@@ -1,2 +1 @@
1
- export * as ScrcpyOptions2_4Impl from "./impl/index.js";
2
1
  export * from "./options.js";
@@ -1,6 +1,6 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable } from "@yume-chan/struct";
3
+ import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
4
 
5
5
  import type {
6
6
  ScrcpyAudioStreamMetadata,
@@ -9,6 +9,7 @@ import type {
9
9
  ScrcpyEncoder,
10
10
  ScrcpyMediaStreamPacket,
11
11
  ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
12
13
  ScrcpyScrollController,
13
14
  ScrcpyVideoStream,
14
15
  } from "../base/index.js";
@@ -41,10 +42,12 @@ import {
41
42
  UHidOutputStream,
42
43
  } from "./impl/index.js";
43
44
 
44
- export class ScrcpyOptions2_4 implements ScrcpyOptions<Init> {
45
+ export class ScrcpyOptions2_4<TVideo extends boolean>
46
+ implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
47
+ {
45
48
  static readonly Defaults = Defaults;
46
49
 
47
- readonly value: Required<Init>;
50
+ readonly value: Required<Init<TVideo>>;
48
51
 
49
52
  get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
50
53
  return ControlMessageTypes;
@@ -64,8 +67,8 @@ export class ScrcpyOptions2_4 implements ScrcpyOptions<Init> {
64
67
  return this.#uHidOutput;
65
68
  }
66
69
 
67
- constructor(init: Init) {
68
- this.value = { ...Defaults, ...init };
70
+ constructor(init: Init<TVideo>) {
71
+ this.value = { ...Defaults, ...init } as never;
69
72
 
70
73
  if (this.value.videoSource === "camera") {
71
74
  this.value.control = false;
@@ -82,7 +85,7 @@ export class ScrcpyOptions2_4 implements ScrcpyOptions<Init> {
82
85
  }
83
86
 
84
87
  serialize(): string[] {
85
- return serialize(this.value, Defaults);
88
+ return serialize<Init<boolean>>(this.value, Defaults);
86
89
  }
87
90
 
88
91
  setListDisplays(): void {
@@ -115,7 +118,7 @@ export class ScrcpyOptions2_4 implements ScrcpyOptions<Init> {
115
118
 
116
119
  async parseDeviceMessage(
117
120
  id: number,
118
- stream: AsyncExactReadable,
121
+ stream: ExactReadable | AsyncExactReadable,
119
122
  ): Promise<void> {
120
123
  if (await this.#clipboard?.parse(id, stream)) {
121
124
  return;
@@ -182,8 +185,8 @@ export class ScrcpyOptions2_4 implements ScrcpyOptions<Init> {
182
185
  }
183
186
  }
184
187
 
185
- type Init_ = Init;
188
+ type Init_<TVideo extends boolean> = Init<TVideo>;
186
189
 
187
190
  export namespace ScrcpyOptions2_4 {
188
- export type Init = Init_;
191
+ export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
189
192
  }
package/src/2_5.ts CHANGED
@@ -1,4 +1,14 @@
1
- export {
2
- ScrcpyOptions2_4 as ScrcpyOptions2_5,
3
- ScrcpyOptions2_4Impl as ScrcpyOptions2_5Impl,
4
- } from "./2_4/index.js";
1
+ import { ScrcpyOptions2_4 } from "./2_4/index.js";
2
+
3
+ export class ScrcpyOptions2_5<
4
+ TVideo extends boolean,
5
+ > extends ScrcpyOptions2_4<TVideo> {
6
+ constructor(init: ScrcpyOptions2_4.Init<TVideo>) {
7
+ super(init);
8
+ }
9
+ }
10
+
11
+ export namespace ScrcpyOptions2_5 {
12
+ export type Init<TVideo extends boolean = boolean> =
13
+ ScrcpyOptions2_4.Init<TVideo>;
14
+ }
@@ -5,4 +5,4 @@ export const Defaults = /* #__PURE__ */ (() =>
5
5
  ({
6
6
  ...PrevImpl.Defaults,
7
7
  audioDup: false,
8
- }) as const satisfies Required<Init>)();
8
+ }) as const satisfies Required<Init<true>>)();
@@ -1,6 +1,7 @@
1
1
  import type { PrevImpl } from "./prev.js";
2
2
 
3
- export interface Init extends Omit<PrevImpl.Init, "audioSource"> {
4
- audioSource?: PrevImpl.Init["audioSource"] | "playback";
3
+ export interface Init<TVideo extends boolean>
4
+ extends Omit<PrevImpl.Init<TVideo>, "audioSource"> {
5
+ audioSource?: PrevImpl.Init<TVideo>["audioSource"] | "playback";
5
6
  audioDup?: boolean;
6
7
  }
package/src/2_6/index.ts CHANGED
@@ -1,2 +1 @@
1
- export * as ScrcpyOptions2_6Impl from "./impl/index.js";
2
1
  export * from "./options.js";
@@ -1,6 +1,6 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable } from "@yume-chan/struct";
3
+ import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
4
 
5
5
  import type {
6
6
  ScrcpyAudioStreamMetadata,
@@ -9,6 +9,7 @@ import type {
9
9
  ScrcpyEncoder,
10
10
  ScrcpyMediaStreamPacket,
11
11
  ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
12
13
  ScrcpyScrollController,
13
14
  ScrcpyVideoStream,
14
15
  } from "../base/index.js";
@@ -20,6 +21,7 @@ import type {
20
21
  ScrcpyUHidOutputDeviceMessage,
21
22
  } from "../latest.js";
22
23
 
24
+ import type { Init } from "./impl/index.js";
23
25
  import {
24
26
  AckClipboardHandler,
25
27
  ClipboardStream,
@@ -39,12 +41,13 @@ import {
39
41
  setListEncoders,
40
42
  UHidOutputStream,
41
43
  } from "./impl/index.js";
42
- import type { Init } from "./impl/index.js";
43
44
 
44
- export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
45
+ export class ScrcpyOptions2_6<TVideo extends boolean>
46
+ implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
47
+ {
45
48
  static readonly Defaults = Defaults;
46
49
 
47
- readonly value: Required<Init>;
50
+ readonly value: Required<Init<TVideo>>;
48
51
 
49
52
  get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
50
53
  return ControlMessageTypes;
@@ -64,8 +67,8 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
64
67
  return this.#uHidOutput;
65
68
  }
66
69
 
67
- constructor(init: Init) {
68
- this.value = { ...Defaults, ...init };
70
+ constructor(init: Init<TVideo>) {
71
+ this.value = { ...Defaults, ...init } as never;
69
72
 
70
73
  if (this.value.videoSource === "camera") {
71
74
  this.value.control = false;
@@ -86,7 +89,7 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
86
89
  }
87
90
 
88
91
  serialize(): string[] {
89
- return serialize(this.value, Defaults);
92
+ return serialize<Init<boolean>>(this.value, Defaults);
90
93
  }
91
94
 
92
95
  setListDisplays(): void {
@@ -119,7 +122,7 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
119
122
 
120
123
  async parseDeviceMessage(
121
124
  id: number,
122
- stream: AsyncExactReadable,
125
+ stream: ExactReadable | AsyncExactReadable,
123
126
  ): Promise<void> {
124
127
  if (await this.#clipboard?.parse(id, stream)) {
125
128
  return;
@@ -180,8 +183,8 @@ export class ScrcpyOptions2_6 implements ScrcpyOptions<Init> {
180
183
  }
181
184
  }
182
185
 
183
- type Init_ = Init;
186
+ type Init_<TVideo extends boolean> = Init<TVideo>;
184
187
 
185
188
  export namespace ScrcpyOptions2_6 {
186
- export type Init = Init_;
189
+ export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
187
190
  }
package/src/2_6_1.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { ScrcpyOptions2_6 } from "./2_6/index.js";
2
+
3
+ export class ScrcpyOptions2_6_1<
4
+ TVideo extends boolean,
5
+ > extends ScrcpyOptions2_6<TVideo> {
6
+ constructor(init: ScrcpyOptions2_6.Init<TVideo>) {
7
+ super(init);
8
+ }
9
+ }
10
+
11
+ export namespace ScrcpyOptions2_6_1 {
12
+ export type Init<TVideo extends boolean = boolean> =
13
+ ScrcpyOptions2_6.Init<TVideo>;
14
+ }
package/src/2_7/index.ts CHANGED
@@ -1,2 +1 @@
1
- export * as ScrcpyOptions2_7Impl from "./impl/index.js";
2
1
  export * from "./options.js";
@@ -1,6 +1,6 @@
1
1
  import type { MaybePromiseLike } from "@yume-chan/async";
2
2
  import type { ReadableStream, TransformStream } from "@yume-chan/stream-extra";
3
- import type { AsyncExactReadable } from "@yume-chan/struct";
3
+ import type { AsyncExactReadable, ExactReadable } from "@yume-chan/struct";
4
4
 
5
5
  import type {
6
6
  ScrcpyAudioStreamMetadata,
@@ -9,6 +9,7 @@ import type {
9
9
  ScrcpyEncoder,
10
10
  ScrcpyMediaStreamPacket,
11
11
  ScrcpyOptions,
12
+ ScrcpyOptionsListEncoders,
12
13
  ScrcpyScrollController,
13
14
  ScrcpyVideoStream,
14
15
  } from "../base/index.js";
@@ -41,10 +42,12 @@ import {
41
42
  UHidOutputStream,
42
43
  } from "./impl/index.js";
43
44
 
44
- export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
45
+ export class ScrcpyOptions2_7<TVideo extends boolean>
46
+ implements ScrcpyOptions<Init<TVideo>>, ScrcpyOptionsListEncoders
47
+ {
45
48
  static readonly Defaults = Defaults;
46
49
 
47
- readonly value: Required<Init>;
50
+ readonly value: Required<Init<TVideo>>;
48
51
 
49
52
  get controlMessageTypes(): readonly ScrcpyControlMessageType[] {
50
53
  return ControlMessageTypes;
@@ -64,8 +67,8 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
64
67
  return this.#uHidOutput;
65
68
  }
66
69
 
67
- constructor(init: Init) {
68
- this.value = { ...Defaults, ...init };
70
+ constructor(init: Init<TVideo>) {
71
+ this.value = { ...Defaults, ...init } as never;
69
72
 
70
73
  if (this.value.videoSource === "camera") {
71
74
  this.value.control = false;
@@ -86,7 +89,7 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
86
89
  }
87
90
 
88
91
  serialize(): string[] {
89
- return serialize(this.value, Defaults);
92
+ return serialize<Init<boolean>>(this.value, Defaults);
90
93
  }
91
94
 
92
95
  setListDisplays(): void {
@@ -119,7 +122,7 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
119
122
 
120
123
  async parseDeviceMessage(
121
124
  id: number,
122
- stream: AsyncExactReadable,
125
+ stream: ExactReadable | AsyncExactReadable,
123
126
  ): Promise<void> {
124
127
  if (await this.#clipboard?.parse(id, stream)) {
125
128
  return;
@@ -180,8 +183,8 @@ export class ScrcpyOptions2_7 implements ScrcpyOptions<Init> {
180
183
  }
181
184
  }
182
185
 
183
- type Init_ = Init;
186
+ type Init_<TVideo extends boolean> = Init<TVideo>;
184
187
 
185
188
  export namespace ScrcpyOptions2_7 {
186
- export type Init = Init_;
189
+ export type Init<TVideo extends boolean = boolean> = Init_<TVideo>;
187
190
  }
@@ -1,16 +1,15 @@
1
1
  import { omit } from "../../utils/index.js";
2
2
 
3
3
  import type { Init } from "./init.js";
4
- import { CaptureOrientation } from "./init.js";
5
4
  import { PrevImpl } from "./prev.js";
6
5
 
7
6
  export const Defaults = /* #__PURE__ */ (() =>
8
7
  ({
9
8
  ...omit(PrevImpl.Defaults, "lockVideoOrientation"),
10
- captureOrientation: CaptureOrientation.Unlocked,
9
+ captureOrientation: undefined,
11
10
  angle: 0,
12
11
  screenOffTimeout: undefined,
13
12
  listApps: false,
14
13
  newDisplay: undefined,
15
14
  vdSystemDecorations: true,
16
- }) as const satisfies Required<Init>)();
15
+ }) as const satisfies Required<Init<true>>)();