@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.
- package/esm/1_15/impl/codec-options.d.ts +12 -11
- package/esm/1_15/impl/codec-options.d.ts.map +1 -1
- package/esm/1_15/impl/codec-options.js +50 -11
- package/esm/1_15/impl/codec-options.js.map +1 -1
- package/esm/1_15/impl/compute-option-values.d.ts +7 -0
- package/esm/1_15/impl/compute-option-values.d.ts.map +1 -0
- package/esm/1_15/impl/compute-option-values.js +12 -0
- package/esm/1_15/impl/compute-option-values.js.map +1 -0
- package/esm/1_15/impl/index.d.ts +2 -0
- package/esm/1_15/impl/index.d.ts.map +1 -1
- package/esm/1_15/impl/index.js +2 -0
- package/esm/1_15/impl/index.js.map +1 -1
- package/esm/1_15/impl/init.d.ts +11 -11
- package/esm/1_15/impl/init.d.ts.map +1 -1
- package/esm/1_15/impl/media-stream-transformer.d.ts +2 -2
- package/esm/1_15/impl/media-stream-transformer.js +1 -1
- package/esm/1_15/impl/media-stream-transformer.js.map +1 -1
- package/esm/1_15/impl/parse-video-stream-metadata.js +4 -4
- package/esm/1_15/impl/parse-video-stream-metadata.js.map +1 -1
- package/esm/1_15/impl/set-display-power.d.ts +13 -0
- package/esm/1_15/impl/set-display-power.d.ts.map +1 -0
- package/esm/1_15/impl/set-display-power.js +16 -0
- package/esm/1_15/impl/set-display-power.js.map +1 -0
- package/esm/1_15/options.d.ts +12 -9
- package/esm/1_15/options.d.ts.map +1 -1
- package/esm/1_15/options.js +20 -2
- package/esm/1_15/options.js.map +1 -1
- package/esm/1_17/options.d.ts +11 -9
- package/esm/1_17/options.d.ts.map +1 -1
- package/esm/1_17/options.js +20 -2
- package/esm/1_17/options.js.map +1 -1
- package/esm/1_18/impl/init.d.ts +3 -3
- package/esm/1_18/impl/init.d.ts.map +1 -1
- package/esm/1_18/options.d.ts +11 -9
- package/esm/1_18/options.d.ts.map +1 -1
- package/esm/1_18/options.js +20 -2
- package/esm/1_18/options.js.map +1 -1
- package/esm/1_21/impl/compute-option-values.d.ts +23 -0
- package/esm/1_21/impl/compute-option-values.d.ts.map +1 -0
- package/esm/1_21/impl/compute-option-values.js +12 -0
- package/esm/1_21/impl/compute-option-values.js.map +1 -0
- package/esm/1_21/impl/index.d.ts +3 -1
- package/esm/1_21/impl/index.d.ts.map +1 -1
- package/esm/1_21/impl/index.js +2 -1
- package/esm/1_21/impl/index.js.map +1 -1
- package/esm/1_21/impl/init.d.ts +1 -1
- package/esm/1_21/impl/init.d.ts.map +1 -1
- package/esm/1_21/impl/serialize.d.ts +1 -1
- package/esm/1_21/impl/serialize.d.ts.map +1 -1
- package/esm/1_21/impl/serialize.js.map +1 -1
- package/esm/1_21/options.d.ts +11 -9
- package/esm/1_21/options.d.ts.map +1 -1
- package/esm/1_21/options.js +20 -2
- package/esm/1_21/options.js.map +1 -1
- package/esm/1_22/impl/init.d.ts +3 -3
- package/esm/1_22/impl/init.d.ts.map +1 -1
- package/esm/1_22/impl/parse-video-stream-metadata.d.ts +2 -2
- package/esm/1_22/impl/parse-video-stream-metadata.d.ts.map +1 -1
- package/esm/1_22/impl/parse-video-stream-metadata.js +3 -3
- package/esm/1_22/impl/parse-video-stream-metadata.js.map +1 -1
- package/esm/1_22/options.d.ts +11 -9
- package/esm/1_22/options.d.ts.map +1 -1
- package/esm/1_22/options.js +21 -3
- package/esm/1_22/options.js.map +1 -1
- package/esm/1_23/impl/init.d.ts +1 -1
- package/esm/1_23/impl/init.d.ts.map +1 -1
- package/esm/1_23/impl/media-stream-transformer.d.ts +2 -2
- package/esm/1_23/impl/media-stream-transformer.js +1 -1
- package/esm/1_23/impl/media-stream-transformer.js.map +1 -1
- package/esm/1_23/options.d.ts +11 -9
- package/esm/1_23/options.d.ts.map +1 -1
- package/esm/1_23/options.js +21 -3
- package/esm/1_23/options.js.map +1 -1
- package/esm/1_24/impl/init.d.ts +1 -1
- package/esm/1_24/impl/init.d.ts.map +1 -1
- package/esm/1_24/options.d.ts +11 -9
- package/esm/1_24/options.d.ts.map +1 -1
- package/esm/1_24/options.js +21 -3
- package/esm/1_24/options.js.map +1 -1
- package/esm/1_25/options.d.ts +11 -9
- package/esm/1_25/options.d.ts.map +1 -1
- package/esm/1_25/options.js +21 -3
- package/esm/1_25/options.js.map +1 -1
- package/esm/2_0/impl/defaults.d.ts +8 -11
- package/esm/2_0/impl/defaults.d.ts.map +1 -1
- package/esm/2_0/impl/defaults.js +4 -10
- package/esm/2_0/impl/defaults.js.map +1 -1
- package/esm/2_0/impl/index.d.ts +1 -1
- package/esm/2_0/impl/index.d.ts.map +1 -1
- package/esm/2_0/impl/index.js +1 -1
- package/esm/2_0/impl/index.js.map +1 -1
- package/esm/2_0/impl/init.d.ts +8 -8
- package/esm/2_0/impl/init.d.ts.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts +4 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.d.ts.map +1 -1
- package/esm/2_0/impl/parse-audio-stream-metadata.js +28 -39
- package/esm/2_0/impl/parse-audio-stream-metadata.js.map +1 -1
- package/esm/2_0/impl/parse-video-stream-metadata.d.ts +5 -2
- package/esm/2_0/impl/parse-video-stream-metadata.d.ts.map +1 -1
- package/esm/2_0/impl/parse-video-stream-metadata.js +14 -12
- package/esm/2_0/impl/parse-video-stream-metadata.js.map +1 -1
- package/esm/2_0/options.d.ts +19 -20
- package/esm/2_0/options.d.ts.map +1 -1
- package/esm/2_0/options.js +22 -4
- package/esm/2_0/options.js.map +1 -1
- package/esm/2_1/impl/defaults.d.ts +8 -11
- package/esm/2_1/impl/defaults.d.ts.map +1 -1
- package/esm/2_1/impl/defaults.js.map +1 -1
- package/esm/2_1/impl/init.d.ts +3 -3
- package/esm/2_1/impl/init.d.ts.map +1 -1
- package/esm/2_1/options.d.ts +21 -22
- package/esm/2_1/options.d.ts.map +1 -1
- package/esm/2_1/options.js +22 -4
- package/esm/2_1/options.js.map +1 -1
- package/esm/2_2/impl/compute-option-values.d.ts +22 -0
- package/esm/2_2/impl/compute-option-values.d.ts.map +1 -0
- package/esm/2_2/impl/compute-option-values.js +11 -0
- package/esm/2_2/impl/compute-option-values.js.map +1 -0
- package/esm/2_2/impl/defaults.d.ts +8 -11
- package/esm/2_2/impl/defaults.d.ts.map +1 -1
- package/esm/2_2/impl/defaults.js.map +1 -1
- package/esm/2_2/impl/index.d.ts +2 -0
- package/esm/2_2/impl/index.d.ts.map +1 -1
- package/esm/2_2/impl/index.js +1 -0
- package/esm/2_2/impl/index.js.map +1 -1
- package/esm/2_2/impl/init.d.ts +5 -5
- package/esm/2_2/impl/init.d.ts.map +1 -1
- package/esm/2_2/options.d.ts +21 -22
- package/esm/2_2/options.d.ts.map +1 -1
- package/esm/2_2/options.js +22 -7
- package/esm/2_2/options.js.map +1 -1
- package/esm/2_3/impl/index.d.ts +1 -0
- package/esm/2_3/impl/index.d.ts.map +1 -1
- package/esm/2_3/impl/index.js +1 -0
- package/esm/2_3/impl/index.js.map +1 -1
- package/esm/2_3/impl/init.d.ts +2 -2
- package/esm/2_3/impl/init.d.ts.map +1 -1
- package/esm/2_3/impl/parse-audio-stream-metadata.d.ts +5 -0
- package/esm/2_3/impl/parse-audio-stream-metadata.d.ts.map +1 -0
- package/esm/2_3/impl/parse-audio-stream-metadata.js +31 -0
- package/esm/2_3/impl/parse-audio-stream-metadata.js.map +1 -0
- package/esm/2_3/options.d.ts +21 -22
- package/esm/2_3/options.d.ts.map +1 -1
- package/esm/2_3/options.js +22 -7
- package/esm/2_3/options.js.map +1 -1
- package/esm/2_4/options.d.ts +22 -23
- package/esm/2_4/options.d.ts.map +1 -1
- package/esm/2_4/options.js +25 -7
- package/esm/2_4/options.js.map +1 -1
- package/esm/2_6/impl/compute-option-values.d.ts +29 -0
- package/esm/2_6/impl/compute-option-values.d.ts.map +1 -0
- package/esm/2_6/impl/compute-option-values.js +12 -0
- package/esm/2_6/impl/compute-option-values.js.map +1 -0
- package/esm/2_6/impl/defaults.d.ts +8 -11
- package/esm/2_6/impl/defaults.d.ts.map +1 -1
- package/esm/2_6/impl/defaults.js.map +1 -1
- package/esm/2_6/impl/index.d.ts +2 -0
- package/esm/2_6/impl/index.d.ts.map +1 -1
- package/esm/2_6/impl/index.js +1 -0
- package/esm/2_6/impl/index.js.map +1 -1
- package/esm/2_6/impl/init.d.ts +3 -3
- package/esm/2_6/impl/init.d.ts.map +1 -1
- package/esm/2_6/options.d.ts +22 -23
- package/esm/2_6/options.d.ts.map +1 -1
- package/esm/2_6/options.js +25 -10
- package/esm/2_6/options.js.map +1 -1
- package/esm/2_7/impl/index.d.ts.map +1 -1
- package/esm/2_7/impl/index.js.map +1 -1
- package/esm/2_7/options.d.ts +22 -23
- package/esm/2_7/options.d.ts.map +1 -1
- package/esm/2_7/options.js +25 -10
- package/esm/2_7/options.js.map +1 -1
- package/esm/3_0/impl/defaults.d.ts +29 -33
- package/esm/3_0/impl/defaults.d.ts.map +1 -1
- package/esm/3_0/impl/defaults.js +4 -8
- package/esm/3_0/impl/defaults.js.map +1 -1
- package/esm/3_0/impl/index.d.ts +1 -0
- package/esm/3_0/impl/index.d.ts.map +1 -1
- package/esm/3_0/impl/index.js +1 -0
- package/esm/3_0/impl/index.js.map +1 -1
- package/esm/3_0/impl/init.d.ts +4 -4
- package/esm/3_0/impl/init.d.ts.map +1 -1
- package/esm/3_0/impl/set-display-power.d.ts +12 -0
- package/esm/3_0/impl/set-display-power.d.ts.map +1 -0
- package/esm/3_0/impl/set-display-power.js +10 -0
- package/esm/3_0/impl/set-display-power.js.map +1 -0
- package/esm/3_0/options.d.ts +43 -45
- package/esm/3_0/options.d.ts.map +1 -1
- package/esm/3_0/options.js +25 -10
- package/esm/3_0/options.js.map +1 -1
- package/esm/3_1/impl/defaults.d.ts +29 -33
- package/esm/3_1/impl/defaults.d.ts.map +1 -1
- package/esm/3_1/impl/defaults.js.map +1 -1
- package/esm/3_1/impl/index.d.ts.map +1 -1
- package/esm/3_1/impl/index.js.map +1 -1
- package/esm/3_1/impl/init.d.ts +2 -2
- package/esm/3_1/impl/init.d.ts.map +1 -1
- package/esm/3_1/options.d.ts +43 -45
- package/esm/3_1/options.d.ts.map +1 -1
- package/esm/3_1/options.js +25 -10
- package/esm/3_1/options.js.map +1 -1
- package/esm/3_2/impl/defaults.d.ts +29 -33
- package/esm/3_2/impl/defaults.d.ts.map +1 -1
- package/esm/3_2/impl/defaults.js.map +1 -1
- package/esm/3_2/impl/index.d.ts.map +1 -1
- package/esm/3_2/impl/index.js.map +1 -1
- package/esm/3_2/impl/init.d.ts +2 -2
- package/esm/3_2/impl/init.d.ts.map +1 -1
- package/esm/3_2/options.d.ts +43 -45
- package/esm/3_2/options.d.ts.map +1 -1
- package/esm/3_2/options.js +25 -10
- package/esm/3_2/options.js.map +1 -1
- package/esm/3_3_1/options.d.ts +43 -45
- package/esm/3_3_1/options.d.ts.map +1 -1
- package/esm/3_3_1/options.js +25 -10
- package/esm/3_3_1/options.js.map +1 -1
- package/esm/4_0/impl/compute-option-values.d.ts +15 -0
- package/esm/4_0/impl/compute-option-values.d.ts.map +1 -0
- package/esm/4_0/impl/compute-option-values.js +9 -0
- package/esm/4_0/impl/compute-option-values.js.map +1 -0
- package/esm/4_0/impl/control-message-types.d.ts +25 -0
- package/esm/4_0/impl/control-message-types.d.ts.map +1 -0
- package/esm/4_0/impl/control-message-types.js +26 -0
- package/esm/4_0/impl/control-message-types.js.map +1 -0
- package/esm/4_0/impl/defaults.d.ts +58 -0
- package/esm/4_0/impl/defaults.d.ts.map +1 -0
- package/esm/4_0/impl/defaults.js +12 -0
- package/esm/4_0/impl/defaults.js.map +1 -0
- package/esm/4_0/impl/index.d.ts +9 -0
- package/esm/4_0/impl/index.d.ts.map +1 -0
- package/esm/4_0/impl/index.js +7 -0
- package/esm/4_0/impl/index.js.map +1 -0
- package/esm/4_0/impl/init.d.ts +10 -0
- package/esm/4_0/impl/init.d.ts.map +1 -0
- package/esm/4_0/impl/init.js +2 -0
- package/esm/4_0/impl/init.js.map +1 -0
- package/esm/4_0/impl/media-stream-transformer.d.ts +5 -0
- package/esm/4_0/impl/media-stream-transformer.d.ts.map +1 -0
- package/esm/4_0/impl/media-stream-transformer.js +39 -0
- package/esm/4_0/impl/media-stream-transformer.js.map +1 -0
- package/esm/4_0/impl/parse-video-stream-metadata.d.ts +6 -0
- package/esm/4_0/impl/parse-video-stream-metadata.d.ts.map +1 -0
- package/esm/4_0/impl/parse-video-stream-metadata.js +21 -0
- package/esm/4_0/impl/parse-video-stream-metadata.js.map +1 -0
- package/esm/4_0/impl/prev.d.ts +2 -0
- package/esm/4_0/impl/prev.d.ts.map +1 -0
- package/esm/4_0/impl/prev.js +2 -0
- package/esm/4_0/impl/prev.js.map +1 -0
- package/esm/4_0/index.d.ts +100 -0
- package/esm/4_0/index.d.ts.map +1 -0
- package/esm/4_0/index.js +93 -0
- package/esm/4_0/index.js.map +1 -0
- package/esm/4_1/impl/control-message-types.d.ts +26 -0
- package/esm/4_1/impl/control-message-types.d.ts.map +1 -0
- package/esm/4_1/impl/control-message-types.js +27 -0
- package/esm/4_1/impl/control-message-types.js.map +1 -0
- package/esm/4_1/impl/defaults.d.ts +59 -0
- package/esm/4_1/impl/defaults.d.ts.map +1 -0
- package/esm/4_1/impl/defaults.js +6 -0
- package/esm/4_1/impl/defaults.js.map +1 -0
- package/esm/4_1/impl/index.d.ts +6 -0
- package/esm/4_1/impl/index.d.ts.map +1 -0
- package/esm/4_1/impl/index.js +5 -0
- package/esm/4_1/impl/index.js.map +1 -0
- package/esm/4_1/impl/init.d.ts +6 -0
- package/esm/4_1/impl/init.d.ts.map +1 -0
- package/esm/4_1/impl/init.js +2 -0
- package/esm/4_1/impl/init.js.map +1 -0
- package/esm/4_1/impl/parse-video-stream-metadata.d.ts +4 -0
- package/esm/4_1/impl/parse-video-stream-metadata.d.ts.map +1 -0
- package/esm/4_1/impl/parse-video-stream-metadata.js +19 -0
- package/esm/4_1/impl/parse-video-stream-metadata.js.map +1 -0
- package/esm/4_1/impl/prev.d.ts +2 -0
- package/esm/4_1/impl/prev.d.ts.map +1 -0
- package/esm/4_1/impl/prev.js +2 -0
- package/esm/4_1/impl/prev.js.map +1 -0
- package/esm/4_1/index.d.ts +101 -0
- package/esm/4_1/index.d.ts.map +1 -0
- package/esm/4_1/index.js +93 -0
- package/esm/4_1/index.js.map +1 -0
- package/esm/base/control-message-type-value.d.ts +5 -0
- package/esm/base/control-message-type-value.d.ts.map +1 -1
- package/esm/base/control-message-type-value.js +5 -0
- package/esm/base/control-message-type-value.js.map +1 -1
- package/esm/base/media.d.ts +8 -1
- package/esm/base/media.d.ts.map +1 -1
- package/esm/base/options.d.ts +6 -4
- package/esm/base/options.d.ts.map +1 -1
- package/esm/base/video.d.ts +1 -7
- package/esm/base/video.d.ts.map +1 -1
- package/esm/base/video.js +1 -13
- package/esm/base/video.js.map +1 -1
- package/esm/control/boolean.d.ts +10 -0
- package/esm/control/boolean.d.ts.map +1 -0
- package/esm/control/boolean.js +3 -0
- package/esm/control/boolean.js.map +1 -0
- package/esm/control/index.d.ts +2 -1
- package/esm/control/index.d.ts.map +1 -1
- package/esm/control/index.js +2 -1
- package/esm/control/index.js.map +1 -1
- package/esm/control/resize-display.d.ts +12 -0
- package/esm/control/resize-display.d.ts.map +1 -0
- package/esm/control/resize-display.js +8 -0
- package/esm/control/resize-display.js.map +1 -0
- package/esm/control/serializer.d.ts +8 -2
- package/esm/control/serializer.d.ts.map +1 -1
- package/esm/control/serializer.js +30 -4
- package/esm/control/serializer.js.map +1 -1
- package/esm/control/writer.d.ts +8 -2
- package/esm/control/writer.d.ts.map +1 -1
- package/esm/control/writer.js +17 -2
- package/esm/control/writer.js.map +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/latest.d.ts +2 -2
- package/esm/latest.d.ts.map +1 -1
- package/esm/latest.js +2 -2
- package/esm/latest.js.map +1 -1
- package/esm/utils/omit.d.ts +1 -1
- package/esm/utils/omit.d.ts.map +1 -1
- package/esm/video/codec-id.d.ts +6 -0
- package/esm/video/codec-id.d.ts.map +1 -0
- package/esm/video/codec-id.js +6 -0
- package/esm/video/codec-id.js.map +1 -0
- package/esm/video/index.d.ts +4 -0
- package/esm/video/index.d.ts.map +1 -1
- package/esm/video/index.js +12 -0
- package/esm/video/index.js.map +1 -1
- package/esm/video/size.d.ts +8 -9
- package/esm/video/size.d.ts.map +1 -1
- package/esm/video/size.js +2 -2
- package/esm/video/size.js.map +1 -1
- package/package.json +7 -7
- package/src/1_15/impl/codec-options.ts +68 -17
- package/src/1_15/impl/compute-option-values.ts +26 -0
- package/src/1_15/impl/index.ts +2 -0
- package/src/1_15/impl/init.ts +11 -11
- package/src/1_15/impl/media-stream-transformer.ts +3 -3
- package/src/1_15/impl/parse-video-stream-metadata.ts +4 -4
- package/src/1_15/impl/set-display-power.ts +29 -0
- package/src/1_15/options.ts +45 -9
- package/src/1_17/options.ts +46 -10
- package/src/1_18/impl/init.ts +3 -3
- package/src/1_18/options.ts +46 -10
- package/src/1_21/impl/compute-option-values.ts +43 -0
- package/src/1_21/impl/index.ts +10 -1
- package/src/1_21/impl/init.ts +1 -1
- package/src/1_21/impl/serialize.ts +3 -3
- package/src/1_21/options.ts +46 -10
- package/src/1_22/impl/init.ts +3 -3
- package/src/1_22/impl/parse-video-stream-metadata.ts +4 -4
- package/src/1_22/options.ts +47 -11
- package/src/1_23/impl/init.ts +1 -1
- package/src/1_23/impl/media-stream-transformer.ts +3 -3
- package/src/1_23/options.ts +47 -11
- package/src/1_24/impl/init.ts +1 -1
- package/src/1_24/options.ts +47 -11
- package/src/1_25/options.ts +47 -11
- package/src/2_0/impl/defaults.ts +19 -23
- package/src/2_0/impl/index.ts +5 -1
- package/src/2_0/impl/init.ts +8 -8
- package/src/2_0/impl/parse-audio-stream-metadata.ts +34 -44
- package/src/2_0/impl/parse-video-stream-metadata.ts +24 -21
- package/src/2_0/options.ts +63 -12
- package/src/2_1/impl/defaults.ts +1 -1
- package/src/2_1/impl/init.ts +3 -3
- package/src/2_1/options.ts +66 -15
- package/src/2_2/generate-type-tests.js +106 -0
- package/src/2_2/impl/compute-option-values.ts +44 -0
- package/src/2_2/impl/defaults.ts +1 -1
- package/src/2_2/impl/index.ts +2 -0
- package/src/2_2/impl/init.ts +5 -5
- package/src/2_2/options.ts +66 -19
- package/src/2_3/impl/index.ts +4 -0
- package/src/2_3/impl/init.ts +2 -5
- package/src/2_3/impl/parse-audio-stream-metadata.ts +36 -0
- package/src/2_3/options.ts +66 -19
- package/src/2_4/options.ts +75 -23
- package/src/2_6/generate-type-tests.js +119 -0
- package/src/2_6/impl/compute-option-values.ts +48 -0
- package/src/2_6/impl/defaults.ts +1 -1
- package/src/2_6/impl/index.ts +9 -0
- package/src/2_6/impl/init.ts +3 -6
- package/src/2_6/options.ts +75 -27
- package/src/2_7/impl/index.ts +1 -0
- package/src/2_7/options.ts +75 -27
- package/src/3_0/impl/defaults.ts +12 -14
- package/src/3_0/impl/index.ts +5 -0
- package/src/3_0/impl/init.ts +4 -7
- package/src/3_0/impl/set-display-power.ts +23 -0
- package/src/3_0/options.ts +75 -27
- package/src/3_1/impl/defaults.ts +1 -1
- package/src/3_1/impl/index.ts +1 -0
- package/src/3_1/impl/init.ts +2 -2
- package/src/3_1/options.ts +75 -27
- package/src/3_2/impl/defaults.ts +1 -1
- package/src/3_2/impl/index.ts +1 -0
- package/src/3_2/impl/init.ts +2 -5
- package/src/3_2/options.ts +75 -27
- package/src/3_3_1/options.ts +75 -27
- package/src/4_0/impl/compute-option-values.ts +31 -0
- package/src/4_0/impl/control-message-types.ts +27 -0
- package/src/4_0/impl/defaults.ts +20 -0
- package/src/4_0/impl/index.ts +9 -0
- package/src/4_0/impl/init.ts +14 -0
- package/src/4_0/impl/media-stream-transformer.ts +58 -0
- package/src/4_0/impl/parse-video-stream-metadata.ts +34 -0
- package/src/4_0/impl/prev.ts +1 -0
- package/src/4_0/index.ts +226 -0
- package/src/4_1/impl/control-message-types.ts +28 -0
- package/src/4_1/impl/defaults.ts +8 -0
- package/src/4_1/impl/index.ts +6 -0
- package/src/4_1/impl/init.ts +7 -0
- package/src/4_1/impl/parse-video-stream-metadata.ts +23 -0
- package/src/4_1/impl/prev.ts +1 -0
- package/src/4_1/index.ts +226 -0
- package/src/base/control-message-type-value.ts +5 -0
- package/src/base/media.ts +12 -3
- package/src/base/options.ts +15 -5
- package/src/base/video.ts +2 -19
- package/src/control/boolean.ts +9 -0
- package/src/control/index.ts +2 -1
- package/src/control/resize-display.ts +16 -0
- package/src/control/serializer.ts +38 -8
- package/src/control/writer.ts +24 -6
- package/src/index.ts +2 -0
- package/src/latest.ts +4 -3
- package/src/utils/omit.ts +1 -1
- package/src/video/codec-id.ts +6 -0
- package/src/video/index.ts +19 -0
- package/src/video/size.ts +10 -4
- package/esm/control/set-screen-power-mode.d.ts +0 -11
- package/esm/control/set-screen-power-mode.d.ts.map +0 -1
- package/esm/control/set-screen-power-mode.js +0 -7
- package/esm/control/set-screen-power-mode.js.map +0 -1
- package/src/control/set-screen-power-mode.ts +0 -17
package/src/2_3/options.ts
CHANGED
|
@@ -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_3<
|
|
42
|
-
implements
|
|
49
|
+
export class ScrcpyOptions2_3<TInit extends Init = Init>
|
|
50
|
+
implements
|
|
51
|
+
ScrcpyOptions<ScrcpyOptions2_3.Value<TInit>>,
|
|
52
|
+
ScrcpyOptionsListEncoders
|
|
43
53
|
{
|
|
44
54
|
static readonly Defaults = Defaults;
|
|
45
55
|
|
|
46
|
-
readonly value:
|
|
56
|
+
readonly value: ScrcpyOptions2_3.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():
|
|
54
|
-
|
|
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_3<TVideo extends boolean>
|
|
|
61
75
|
return this.#deviceMessageParsers;
|
|
62
76
|
}
|
|
63
77
|
|
|
64
|
-
constructor(init:
|
|
65
|
-
this.value =
|
|
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_3<TVideo extends boolean>
|
|
|
82
92
|
}
|
|
83
93
|
|
|
84
94
|
serialize(): string[] {
|
|
85
|
-
return serialize
|
|
95
|
+
return serialize(this.value, Defaults);
|
|
86
96
|
}
|
|
87
97
|
|
|
88
98
|
setListDisplays(): void {
|
|
@@ -104,18 +114,29 @@ export class ScrcpyOptions2_3<TVideo extends boolean>
|
|
|
104
114
|
parseVideoStreamMetadata(
|
|
105
115
|
stream: ReadableStream<Uint8Array>,
|
|
106
116
|
): MaybePromiseLike<ScrcpyVideoStream> {
|
|
107
|
-
return parseVideoStreamMetadata(
|
|
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(
|
|
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
|
-
|
|
139
|
+
ScrcpyVideoStreamPacket
|
|
119
140
|
> {
|
|
120
141
|
return createMediaStreamTransformer(this.value);
|
|
121
142
|
}
|
|
@@ -123,31 +144,57 @@ export class ScrcpyOptions2_3<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_
|
|
191
|
+
type Init_ = Init;
|
|
150
192
|
|
|
151
193
|
export namespace ScrcpyOptions2_3 {
|
|
152
|
-
export type Init
|
|
194
|
+
export type Init = Init_;
|
|
195
|
+
|
|
196
|
+
export type Value<TInit extends Init> = ComputeOptionTypes<
|
|
197
|
+
TInit,
|
|
198
|
+
typeof Defaults
|
|
199
|
+
>;
|
|
153
200
|
}
|
package/src/2_4/options.ts
CHANGED
|
@@ -2,69 +2,85 @@ 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
|
ScrcpyUHidCreateControlMessage,
|
|
20
22
|
ScrcpyUHidOutputDeviceMessage,
|
|
21
23
|
} from "../latest.js";
|
|
22
24
|
|
|
23
|
-
import type { Init } from "./impl/index.js";
|
|
25
|
+
import type { ComputeOptionTypes, Init } from "./impl/index.js";
|
|
24
26
|
import {
|
|
25
27
|
AckClipboardHandler,
|
|
26
28
|
ClipboardStream,
|
|
29
|
+
computeOptionValues,
|
|
27
30
|
ControlMessageTypes,
|
|
28
31
|
createMediaStreamTransformer,
|
|
29
32
|
createScrollController,
|
|
30
33
|
Defaults,
|
|
34
|
+
parseAudioCodecOption,
|
|
35
|
+
parseAudioMetadataCodec,
|
|
31
36
|
parseAudioStreamMetadata,
|
|
32
37
|
parseDisplay,
|
|
33
38
|
parseEncoder,
|
|
39
|
+
parseVideoCodecOption,
|
|
34
40
|
parseVideoStreamMetadata,
|
|
41
|
+
parseVideoStreamMetadataAsync,
|
|
35
42
|
serialize,
|
|
36
43
|
serializeBackOrScreenOnControlMessage,
|
|
37
44
|
serializeInjectTouchControlMessage,
|
|
38
45
|
serializeSetClipboardControlMessage,
|
|
46
|
+
serializeSetDisplayPowerControlMessage,
|
|
39
47
|
serializeUHidCreateControlMessage,
|
|
40
48
|
setListDisplays,
|
|
41
49
|
setListEncoders,
|
|
42
50
|
UHidOutputStream,
|
|
43
51
|
} from "./impl/index.js";
|
|
44
52
|
|
|
45
|
-
export class ScrcpyOptions2_4<
|
|
46
|
-
implements
|
|
53
|
+
export class ScrcpyOptions2_4<TInit extends Init = Init>
|
|
54
|
+
implements
|
|
55
|
+
ScrcpyOptions<ScrcpyOptions2_4.Value<TInit>>,
|
|
56
|
+
ScrcpyOptionsListEncoders
|
|
47
57
|
{
|
|
48
58
|
static readonly Defaults = Defaults;
|
|
49
59
|
|
|
50
|
-
readonly value:
|
|
60
|
+
readonly value: ScrcpyOptions2_4.Value<TInit>;
|
|
51
61
|
|
|
52
62
|
get controlMessageTypes(): typeof ControlMessageTypes {
|
|
53
63
|
return ControlMessageTypes;
|
|
54
64
|
}
|
|
55
65
|
|
|
56
66
|
#clipboard: ClipboardStream | undefined;
|
|
57
|
-
get clipboard():
|
|
58
|
-
|
|
67
|
+
get clipboard(): MapBoolean<
|
|
68
|
+
this["value"]["clipboardAutosync"],
|
|
69
|
+
ReadableStream<string>,
|
|
70
|
+
undefined
|
|
71
|
+
> {
|
|
72
|
+
return this.#clipboard as never;
|
|
59
73
|
}
|
|
60
74
|
|
|
61
75
|
#ackClipboardHandler: AckClipboardHandler | undefined;
|
|
62
76
|
|
|
63
77
|
#uHidOutput: UHidOutputStream | undefined;
|
|
64
|
-
get uHidOutput():
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
78
|
+
get uHidOutput(): MapBoolean<
|
|
79
|
+
this["value"]["control"],
|
|
80
|
+
ReadableStream<ScrcpyUHidOutputDeviceMessage>,
|
|
81
|
+
undefined
|
|
82
|
+
> {
|
|
83
|
+
return this.#uHidOutput as never;
|
|
68
84
|
}
|
|
69
85
|
|
|
70
86
|
#deviceMessageParsers = new ScrcpyDeviceMessageParsers();
|
|
@@ -72,12 +88,8 @@ export class ScrcpyOptions2_4<TVideo extends boolean>
|
|
|
72
88
|
return this.#deviceMessageParsers;
|
|
73
89
|
}
|
|
74
90
|
|
|
75
|
-
constructor(init:
|
|
76
|
-
this.value =
|
|
77
|
-
|
|
78
|
-
if (this.value.videoSource === "camera") {
|
|
79
|
-
this.value.control = false;
|
|
80
|
-
}
|
|
91
|
+
constructor(init: TInit) {
|
|
92
|
+
this.value = computeOptionValues(init, Defaults);
|
|
81
93
|
|
|
82
94
|
if (this.value.control) {
|
|
83
95
|
if (this.value.clipboardAutosync) {
|
|
@@ -97,7 +109,7 @@ export class ScrcpyOptions2_4<TVideo extends boolean>
|
|
|
97
109
|
}
|
|
98
110
|
|
|
99
111
|
serialize(): string[] {
|
|
100
|
-
return serialize
|
|
112
|
+
return serialize(this.value, Defaults);
|
|
101
113
|
}
|
|
102
114
|
|
|
103
115
|
setListDisplays(): void {
|
|
@@ -119,18 +131,29 @@ export class ScrcpyOptions2_4<TVideo extends boolean>
|
|
|
119
131
|
parseVideoStreamMetadata(
|
|
120
132
|
stream: ReadableStream<Uint8Array>,
|
|
121
133
|
): MaybePromiseLike<ScrcpyVideoStream> {
|
|
122
|
-
return parseVideoStreamMetadata(
|
|
134
|
+
return parseVideoStreamMetadata(
|
|
135
|
+
stream,
|
|
136
|
+
this.value.sendDeviceMeta,
|
|
137
|
+
this.value.sendCodecMeta,
|
|
138
|
+
parseVideoCodecOption(this.value.videoCodec),
|
|
139
|
+
parseVideoStreamMetadataAsync,
|
|
140
|
+
);
|
|
123
141
|
}
|
|
124
142
|
|
|
125
143
|
parseAudioStreamMetadata(
|
|
126
144
|
stream: ReadableStream<Uint8Array>,
|
|
127
145
|
): MaybePromiseLike<ScrcpyAudioStreamMetadata> {
|
|
128
|
-
return parseAudioStreamMetadata(
|
|
146
|
+
return parseAudioStreamMetadata(
|
|
147
|
+
stream,
|
|
148
|
+
this.value.sendCodecMeta,
|
|
149
|
+
parseAudioMetadataCodec,
|
|
150
|
+
parseAudioCodecOption(this.value.audioCodec),
|
|
151
|
+
);
|
|
129
152
|
}
|
|
130
153
|
|
|
131
154
|
createMediaStreamTransformer(): TransformStream<
|
|
132
155
|
Uint8Array,
|
|
133
|
-
|
|
156
|
+
ScrcpyVideoStreamPacket
|
|
134
157
|
> {
|
|
135
158
|
return createMediaStreamTransformer(this.value);
|
|
136
159
|
}
|
|
@@ -138,37 +161,66 @@ export class ScrcpyOptions2_4<TVideo extends boolean>
|
|
|
138
161
|
serializeInjectTouchControlMessage(
|
|
139
162
|
message: ScrcpyInjectTouchControlMessage,
|
|
140
163
|
): Uint8Array {
|
|
164
|
+
if (!this.value.control) {
|
|
165
|
+
throw new Error("control is disabled");
|
|
166
|
+
}
|
|
141
167
|
return serializeInjectTouchControlMessage(message);
|
|
142
168
|
}
|
|
143
169
|
|
|
144
170
|
serializeBackOrScreenOnControlMessage(
|
|
145
171
|
message: ScrcpyBackOrScreenOnControlMessage,
|
|
146
172
|
): Uint8Array | undefined {
|
|
173
|
+
if (!this.value.control) {
|
|
174
|
+
throw new Error("control is disabled");
|
|
175
|
+
}
|
|
147
176
|
return serializeBackOrScreenOnControlMessage(message);
|
|
148
177
|
}
|
|
149
178
|
|
|
150
179
|
serializeSetClipboardControlMessage(
|
|
151
180
|
message: ScrcpySetClipboardControlMessage,
|
|
152
181
|
): Uint8Array | [Uint8Array, Promise<void>] {
|
|
182
|
+
if (!this.value.control) {
|
|
183
|
+
throw new Error("control is disabled");
|
|
184
|
+
}
|
|
153
185
|
return serializeSetClipboardControlMessage(
|
|
154
186
|
message,
|
|
155
187
|
this.#ackClipboardHandler,
|
|
156
188
|
);
|
|
157
189
|
}
|
|
158
190
|
|
|
191
|
+
serializeSetDisplayPowerControlMessage(
|
|
192
|
+
message: ScrcpySetDisplayPowerControlMessage,
|
|
193
|
+
): Uint8Array {
|
|
194
|
+
if (!this.value.control) {
|
|
195
|
+
throw new Error("control is disabled");
|
|
196
|
+
}
|
|
197
|
+
return serializeSetDisplayPowerControlMessage(message);
|
|
198
|
+
}
|
|
199
|
+
|
|
159
200
|
createScrollController(): ScrcpyScrollController {
|
|
201
|
+
if (!this.value.control) {
|
|
202
|
+
throw new Error("control is disabled");
|
|
203
|
+
}
|
|
160
204
|
return createScrollController();
|
|
161
205
|
}
|
|
162
206
|
|
|
163
207
|
serializeUHidCreateControlMessage(
|
|
164
208
|
message: ScrcpyUHidCreateControlMessage,
|
|
165
209
|
): Uint8Array {
|
|
210
|
+
if (!this.value.control) {
|
|
211
|
+
throw new Error("control is disabled");
|
|
212
|
+
}
|
|
166
213
|
return serializeUHidCreateControlMessage(message);
|
|
167
214
|
}
|
|
168
215
|
}
|
|
169
216
|
|
|
170
|
-
type Init_
|
|
217
|
+
type Init_ = Init;
|
|
171
218
|
|
|
172
219
|
export namespace ScrcpyOptions2_4 {
|
|
173
|
-
export type Init
|
|
220
|
+
export type Init = Init_;
|
|
221
|
+
|
|
222
|
+
export type Value<TInit extends Init> = ComputeOptionTypes<
|
|
223
|
+
TInit,
|
|
224
|
+
typeof Defaults
|
|
225
|
+
>;
|
|
174
226
|
}
|
|
@@ -0,0 +1,119 @@
|
|
|
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 {ScrcpyOptions2_6} from "./options.js";
|
|
10
|
+
|
|
11
|
+
type Equal<X, Y> =
|
|
12
|
+
(<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2
|
|
13
|
+
? true
|
|
14
|
+
: false;
|
|
15
|
+
|
|
16
|
+
function expectTrue<T extends true>(value?: T) { void value; }
|
|
17
|
+
|
|
18
|
+
`;
|
|
19
|
+
|
|
20
|
+
const audioDupValues = ["true", "false", "undefined"];
|
|
21
|
+
const audioSourceValues = [`"output"`, `"playback"`, `"mic"`, "undefined"];
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @param {string[]} values
|
|
25
|
+
*/
|
|
26
|
+
function* powerSetExceptEmpty(values) {
|
|
27
|
+
/**
|
|
28
|
+
* @param {number} start
|
|
29
|
+
* @param {string[]} combo
|
|
30
|
+
* @returns {Generator<string[], void, unknown>}
|
|
31
|
+
*/
|
|
32
|
+
function* backtrack(start, combo) {
|
|
33
|
+
if (combo.length > 0) {
|
|
34
|
+
yield [...combo];
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
for (let i = start; i < values.length; i++) {
|
|
38
|
+
combo.push(values[i]);
|
|
39
|
+
yield* backtrack(i + 1, combo);
|
|
40
|
+
combo.pop();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
yield* backtrack(0, []);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* @param {string[]} audioDup
|
|
50
|
+
* @param {string[]} audioSource
|
|
51
|
+
* @param {string} expectedType
|
|
52
|
+
* @returns {string}
|
|
53
|
+
*/
|
|
54
|
+
function generateCase(audioDup, audioSource, expectedType) {
|
|
55
|
+
return `
|
|
56
|
+
expectTrue<Equal<ScrcpyOptions2_6<{audioDup:${audioDup.join("|")}, audioSource:${audioSource.join("|")}}>["value"]["audioSource"], ${expectedType}>>();
|
|
57
|
+
`.trim();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
for (const audioDup of powerSetExceptEmpty(audioDupValues)) {
|
|
61
|
+
content += `\n// #region audioDup: ${audioDup.join(" | ")}\n`;
|
|
62
|
+
|
|
63
|
+
for (const audioSource of powerSetExceptEmpty(audioSourceValues)) {
|
|
64
|
+
const willOverrideAudioSource =
|
|
65
|
+
audioDup.length === 1 && audioDup[0] === "true";
|
|
66
|
+
if (willOverrideAudioSource) {
|
|
67
|
+
content += generateCase(audioDup, audioSource, `"playback"`);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const mayOverrideAudioSource = audioDup.includes(`true`);
|
|
72
|
+
if (mayOverrideAudioSource) {
|
|
73
|
+
const expected = new Set([`"playback"`]);
|
|
74
|
+
for (const source of audioSource) {
|
|
75
|
+
switch (source) {
|
|
76
|
+
case "undefined":
|
|
77
|
+
// add default value
|
|
78
|
+
expected.add(`"output"`);
|
|
79
|
+
break;
|
|
80
|
+
default:
|
|
81
|
+
expected.add(source);
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
content += generateCase(
|
|
87
|
+
audioDup,
|
|
88
|
+
audioSource,
|
|
89
|
+
Array.from(expected).join("|"),
|
|
90
|
+
);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const expected = new Set();
|
|
95
|
+
for (const source of audioSource) {
|
|
96
|
+
switch (source) {
|
|
97
|
+
case "undefined":
|
|
98
|
+
// add default value
|
|
99
|
+
expected.add(`"output"`);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
expected.add(source);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
content += generateCase(
|
|
108
|
+
audioDup,
|
|
109
|
+
audioSource,
|
|
110
|
+
Array.from(expected).join("|"),
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
content += `\n// #endregion\n`;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
content = await format(content, { parser: "typescript", tabWidth: 4 });
|
|
118
|
+
|
|
119
|
+
writeFileSync(new URL("./type-tests.spec.ts", import.meta.url), content);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { PrevImpl } from "./prev.js";
|
|
2
|
+
|
|
3
|
+
// Distributive Conditional Types
|
|
4
|
+
// (https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#distributive-conditional-types)
|
|
5
|
+
type ComputeAudioSource<TAudioDup, TAudioSource> = TAudioDup extends true
|
|
6
|
+
? "playback"
|
|
7
|
+
: TAudioSource;
|
|
8
|
+
|
|
9
|
+
export type OverrideAudioSource<T> = Omit<T, "audioSource"> & {
|
|
10
|
+
audioSource: ComputeAudioSource<
|
|
11
|
+
T extends { audioDup: infer TAudioDup } ? TAudioDup : never,
|
|
12
|
+
T extends { audioSource: infer TAudioSource } ? TAudioSource : never
|
|
13
|
+
>;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export type ComputeOptionTypes<
|
|
17
|
+
T extends object,
|
|
18
|
+
TDefaults extends object,
|
|
19
|
+
> = OverrideAudioSource<PrevImpl.ComputeOptionTypes<T, TDefaults>>;
|
|
20
|
+
|
|
21
|
+
export function overrideAudioSource<
|
|
22
|
+
T extends { audioDup: boolean; audioSource: string },
|
|
23
|
+
>(value: T) {
|
|
24
|
+
if (value.audioDup) {
|
|
25
|
+
value.audioSource = "playback";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function computeOptionValues<
|
|
30
|
+
T extends {
|
|
31
|
+
videoSource?: string | undefined;
|
|
32
|
+
control?: boolean | undefined;
|
|
33
|
+
clipboardAutosync?: boolean | undefined;
|
|
34
|
+
audioDup?: boolean | undefined;
|
|
35
|
+
audioSource?: string | undefined;
|
|
36
|
+
},
|
|
37
|
+
TDefaults extends {
|
|
38
|
+
videoSource: string;
|
|
39
|
+
control: boolean;
|
|
40
|
+
clipboardAutosync: boolean;
|
|
41
|
+
audioDup: boolean;
|
|
42
|
+
audioSource: string;
|
|
43
|
+
},
|
|
44
|
+
>(options: T, defaults: TDefaults): ComputeOptionTypes<T, TDefaults> {
|
|
45
|
+
const value = PrevImpl.computeOptionValues(options, defaults);
|
|
46
|
+
overrideAudioSource(value as never);
|
|
47
|
+
return value as never;
|
|
48
|
+
}
|
package/src/2_6/impl/defaults.ts
CHANGED
package/src/2_6/impl/index.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
export * from "../../2_4/impl/index.js";
|
|
2
|
+
|
|
3
|
+
export {
|
|
4
|
+
computeOptionValues,
|
|
5
|
+
overrideAudioSource,
|
|
6
|
+
} from "./compute-option-values.js";
|
|
7
|
+
export type {
|
|
8
|
+
ComputeOptionTypes,
|
|
9
|
+
OverrideAudioSource,
|
|
10
|
+
} from "./compute-option-values.js";
|
|
2
11
|
export { Defaults } from "./defaults.js";
|
|
3
12
|
export type { Init } from "./init.js";
|
package/src/2_6/impl/init.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import type { PrevImpl } from "./prev.js";
|
|
2
2
|
|
|
3
|
-
export interface Init
|
|
4
|
-
PrevImpl.Init
|
|
5
|
-
|
|
6
|
-
> {
|
|
7
|
-
audioSource?: PrevImpl.Init<TVideo>["audioSource"] | "playback";
|
|
8
|
-
audioDup?: boolean;
|
|
3
|
+
export interface Init extends Omit<PrevImpl.Init, "audioSource"> {
|
|
4
|
+
audioSource?: PrevImpl.Init["audioSource"] | "playback";
|
|
5
|
+
audioDup?: boolean | undefined;
|
|
9
6
|
}
|