From ea5002bc87e6ebafa2e3d3001ee9a290bba1c3ef Mon Sep 17 00:00:00 2001 From: Simon Chan <1330321+yume-chan@users.noreply.github.com> Date: Fri, 29 Nov 2024 22:40:08 +0800 Subject: [PATCH] chore: small cleanups --- .changeset/nice-humans-reply.md | 5 +++++ .changeset/poor-kiwis-flash.md | 5 +++++ .changeset/pretty-llamas-stare.md | 5 +++++ libraries/adb-credential-web/src/index.ts | 2 -- libraries/adb-daemon-webusb/README.md | 2 +- libraries/adb-daemon-webusb/src/device.ts | 2 -- libraries/adb-daemon-webusb/src/manager.ts | 7 ------- libraries/adb-daemon-webusb/src/observer.ts | 2 -- libraries/adb-server-node-tcp/README.md | 2 +- libraries/adb-server-node-tcp/src/index.ts | 2 -- libraries/adb/src/adb.ts | 4 ---- libraries/adb/src/commands/reverse.ts | 12 +----------- libraries/adb/src/daemon/transport.ts | 4 ---- libraries/adb/src/server/client.ts | 10 ---------- .../scrcpy-decoder-webcodecs/src/video/codec/h265.ts | 1 + libraries/scrcpy/src/1_15/options.ts | 2 ++ libraries/scrcpy/src/1_17/options.ts | 2 ++ libraries/scrcpy/src/1_18/options.ts | 2 ++ libraries/scrcpy/src/1_21/options.ts | 2 ++ libraries/scrcpy/src/1_22/options.ts | 2 ++ libraries/scrcpy/src/1_23/options.ts | 2 ++ libraries/scrcpy/src/1_24/options.ts | 2 ++ libraries/scrcpy/src/1_25/options.ts | 2 ++ libraries/scrcpy/src/2_0/options.ts | 2 ++ libraries/scrcpy/src/2_1/options.ts | 2 ++ libraries/scrcpy/src/2_2/options.ts | 2 ++ libraries/scrcpy/src/2_3/options.ts | 2 ++ libraries/scrcpy/src/2_4/options.ts | 2 ++ libraries/scrcpy/src/2_6/options.ts | 2 ++ libraries/scrcpy/src/2_7/options.ts | 2 ++ libraries/scrcpy/src/3_0/options.ts | 2 ++ libraries/stream-extra/src/stream.ts | 3 +++ toolchain/side-effect-test/package.json | 1 + 33 files changed, 55 insertions(+), 46 deletions(-) create mode 100644 .changeset/nice-humans-reply.md create mode 100644 .changeset/poor-kiwis-flash.md create mode 100644 .changeset/pretty-llamas-stare.md diff --git a/.changeset/nice-humans-reply.md b/.changeset/nice-humans-reply.md new file mode 100644 index 00000000..66fe5564 --- /dev/null +++ b/.changeset/nice-humans-reply.md @@ -0,0 +1,5 @@ +--- +"@yume-chan/stream-extra": patch +--- + +Polyfill `ReadableStream.from` and `ReadableStream.prototype.values` diff --git a/.changeset/poor-kiwis-flash.md b/.changeset/poor-kiwis-flash.md new file mode 100644 index 00000000..c19d6674 --- /dev/null +++ b/.changeset/poor-kiwis-flash.md @@ -0,0 +1,5 @@ +--- +"@yume-chan/fetch-scrcpy-server": patch +--- + +Mark `BIN` field as pure diff --git a/.changeset/pretty-llamas-stare.md b/.changeset/pretty-llamas-stare.md new file mode 100644 index 00000000..1a2eddc1 --- /dev/null +++ b/.changeset/pretty-llamas-stare.md @@ -0,0 +1,5 @@ +--- +"@yume-chan/scrcpy": patch +--- + +Add support up to Scrcpy version 3.0 diff --git a/libraries/adb-credential-web/src/index.ts b/libraries/adb-credential-web/src/index.ts index 0aaa5921..370b4787 100644 --- a/libraries/adb-credential-web/src/index.ts +++ b/libraries/adb-credential-web/src/index.ts @@ -66,8 +66,6 @@ async function getAllKeys() { /** * An `AdbCredentialStore` implementation that creates RSA private keys using Web Crypto API * and stores them in IndexedDB. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/credential-store/) */ export default class AdbWebCredentialStore implements AdbCredentialStore { #appName: string; diff --git a/libraries/adb-daemon-webusb/README.md b/libraries/adb-daemon-webusb/README.md index cce776fe..8d11f245 100644 --- a/libraries/adb-daemon-webusb/README.md +++ b/libraries/adb-daemon-webusb/README.md @@ -30,7 +30,7 @@ This package is part of [Tango ADB](https://github.com/yume-chan/ya-webadb). Gen ## Documentation -Check the latest documentation at https://docs.tangoapp.dev/tango/daemon/usb/device-manager/ +Check the latest documentation at https://docs.tangoapp.dev/tango/daemon/usb/ ## Sponsors diff --git a/libraries/adb-daemon-webusb/src/device.ts b/libraries/adb-daemon-webusb/src/device.ts index cb830b90..b03d91df 100644 --- a/libraries/adb-daemon-webusb/src/device.ts +++ b/libraries/adb-daemon-webusb/src/device.ts @@ -344,8 +344,6 @@ export class AdbDaemonWebUsbDevice implements AdbDaemonDevice { /** * Open the device and create a new connection to the ADB Daemon. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/usb/create-connection/) */ async connect(): Promise { const [inEndpoint, outEndpoint] = await this.#claimInterface(); diff --git a/libraries/adb-daemon-webusb/src/manager.ts b/libraries/adb-daemon-webusb/src/manager.ts index f86f3e36..f036fe1a 100644 --- a/libraries/adb-daemon-webusb/src/manager.ts +++ b/libraries/adb-daemon-webusb/src/manager.ts @@ -9,9 +9,6 @@ export namespace AdbDaemonWebUsbDeviceManager { } } -/** - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/usb/device-manager/) - */ export class AdbDaemonWebUsbDeviceManager { /** * Gets the instance of {@link AdbDaemonWebUsbDeviceManager} using browser WebUSB implementation. @@ -36,8 +33,6 @@ export class AdbDaemonWebUsbDeviceManager { /** * Call `USB#requestDevice()` to prompt the user to select a device. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/usb/request-device/) */ async requestDevice( options: AdbDaemonWebUsbDeviceManager.RequestDeviceOptions = {}, @@ -62,8 +57,6 @@ export class AdbDaemonWebUsbDeviceManager { /** * Get all connected and requested devices that match the specified filters. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/usb/get-devices/) */ getDevices(filters?: USBDeviceFilter[]): Promise; async getDevices( diff --git a/libraries/adb-daemon-webusb/src/observer.ts b/libraries/adb-daemon-webusb/src/observer.ts index d597443d..51cba34b 100644 --- a/libraries/adb-daemon-webusb/src/observer.ts +++ b/libraries/adb-daemon-webusb/src/observer.ts @@ -8,8 +8,6 @@ import { matchesFilters } from "./utils.js"; /** * A watcher that listens for new WebUSB devices and notifies the callback when * a new device is connected or disconnected. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/usb/watch-devices/) */ export class AdbDaemonWebUsbDeviceObserver implements DeviceObserver diff --git a/libraries/adb-server-node-tcp/README.md b/libraries/adb-server-node-tcp/README.md index 6fa6744e..2c37f174 100644 --- a/libraries/adb-server-node-tcp/README.md +++ b/libraries/adb-server-node-tcp/README.md @@ -30,7 +30,7 @@ This package is part of [Tango ADB](https://github.com/yume-chan/ya-webadb). Gen ## Documentation -Check the latest documentation at https://docs.tangoapp.dev/tango/server/client/ +Check the latest documentation at https://docs.tangoapp.dev/tango/server/ ## Sponsors diff --git a/libraries/adb-server-node-tcp/src/index.ts b/libraries/adb-server-node-tcp/src/index.ts index 42b514f6..7d15d9b2 100644 --- a/libraries/adb-server-node-tcp/src/index.ts +++ b/libraries/adb-server-node-tcp/src/index.ts @@ -58,8 +58,6 @@ function nodeSocketToConnection( /** * An `AdbServerClient.ServerConnector` implementation for Node.js. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/server/client/) */ export class AdbServerNodeTcpConnector implements AdbServerClient.ServerConnector diff --git a/libraries/adb/src/adb.ts b/libraries/adb/src/adb.ts index a1fabd4d..f38842fd 100644 --- a/libraries/adb/src/adb.ts +++ b/libraries/adb/src/adb.ts @@ -24,8 +24,6 @@ export interface Closeable { /** * Represents an ADB socket. - * - * [Online Documentation](https://docs.tangoapp.dev/api/socket/) */ export interface AdbSocket extends ReadableWritablePair>, @@ -112,8 +110,6 @@ export class Adb implements Closeable { /** * Creates a new ADB Socket to the specified service or socket address. - * - * [Online Documentation](https://docs.tangoapp.dev/api/socket/#forward-tunnel) */ async createSocket(service: string): Promise { return this.transport.connect(service); diff --git a/libraries/adb/src/commands/reverse.ts b/libraries/adb/src/commands/reverse.ts index dfbcb403..64f0c243 100644 --- a/libraries/adb/src/commands/reverse.ts +++ b/libraries/adb/src/commands/reverse.ts @@ -25,7 +25,7 @@ const AdbReverseStringResponse = struct( content: string({ field: "length", convert(value: string) { - return Number.parseInt(value); + return Number.parseInt(value, 16); }, back(value) { return value.toString(16).padStart(4, "0"); @@ -108,8 +108,6 @@ export class AdbReverseCommand { /** * Get a list of all reverse port forwarding on the device. - * - * [Online Documentation](https://docs.tangoapp.dev/api/reverse/list/) */ async list(): Promise { const stream = await this.createBufferedStream("reverse:list-forward"); @@ -130,8 +128,6 @@ export class AdbReverseCommand { /** * Add a reverse port forwarding for a program that already listens on a port. - * - * [Online Documentation](https://docs.tangoapp.dev/api/reverse/add/#addexternal) */ async addExternal(deviceAddress: string, localAddress: string) { const stream = await this.sendRequest( @@ -165,8 +161,6 @@ export class AdbReverseCommand { /** * Add a reverse port forwarding. - * - * [Online Documentation](https://docs.tangoapp.dev/api/reverse/add/) */ async add( deviceAddress: string, @@ -190,8 +184,6 @@ export class AdbReverseCommand { /** * Remove a reverse port forwarding. - * - * [Online Documentation](https://docs.tangoapp.dev/api/reverse/remove/#remove-one-port-forwarding) */ async remove(deviceAddress: string): Promise { const localAddress = @@ -207,8 +199,6 @@ export class AdbReverseCommand { /** * Remove all reverse port forwarding, including the ones added by other programs. - * - * [Online Documentation](https://docs.tangoapp.dev/api/reverse/remove/#remove-all-port-forwardings) */ async removeAll(): Promise { await this.adb.transport.clearReverseTunnels(); diff --git a/libraries/adb/src/daemon/transport.ts b/libraries/adb/src/daemon/transport.ts index e98dd691..3e192f78 100644 --- a/libraries/adb/src/daemon/transport.ts +++ b/libraries/adb/src/daemon/transport.ts @@ -151,14 +151,10 @@ interface AdbDaemonSocketConnectorConstructionOptions { /** * An ADB Transport that connects to ADB Daemons directly. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/) */ export class AdbDaemonTransport implements AdbTransport { /** * Authenticate with the ADB Daemon and create a new transport. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/daemon/connect-device/) */ static async authenticate({ serial, diff --git a/libraries/adb/src/server/client.ts b/libraries/adb/src/server/client.ts index c8e09ac8..6d6997a4 100644 --- a/libraries/adb/src/server/client.ts +++ b/libraries/adb/src/server/client.ts @@ -115,8 +115,6 @@ class AdbServerStream { /** * Client for the ADB Server. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/server/client/) */ export class AdbServerClient { static readonly VERSION = 41; @@ -275,8 +273,6 @@ export class AdbServerClient { * Get a list of connected devices from ADB Server. * * Equivalent ADB Command: `adb devices -l` - * - * [Online Documentation](https://docs.tangoapp.dev/tango/server/devices/) */ async getDevices(): Promise { const connection = await this.createConnection("host:devices-l"); @@ -290,8 +286,6 @@ export class AdbServerClient { /** * Monitors device list changes. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/server/watch/) */ async trackDevices(): Promise> { const connection = await this.createConnection("host:track-devices-l"); @@ -520,8 +514,6 @@ export class AdbServerClient { /** * Creates an ADB Transport for the specified device. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/server/transport/) */ async createTransport( device: AdbServerClient.DeviceSelector, @@ -613,8 +605,6 @@ export namespace AdbServerClient { /** * A union type for selecting a device. - * - * [Online Documentation](https://docs.tangoapp.dev/tango/server/selector/) */ export type DeviceSelector = | { transportId: bigint } diff --git a/libraries/scrcpy-decoder-webcodecs/src/video/codec/h265.ts b/libraries/scrcpy-decoder-webcodecs/src/video/codec/h265.ts index eb087cc2..3b81f9f8 100644 --- a/libraries/scrcpy-decoder-webcodecs/src/video/codec/h265.ts +++ b/libraries/scrcpy-decoder-webcodecs/src/video/codec/h265.ts @@ -41,6 +41,7 @@ export class H265Decoder extends H26xDecoder { ].join("."); this.#decoder.configure({ codec, + // Microsoft Edge requires explicit size to work codedWidth: croppedWidth, codedHeight: croppedHeight, optimizeForLatency: true, diff --git a/libraries/scrcpy/src/1_15/options.ts b/libraries/scrcpy/src/1_15/options.ts index 26605de3..6d39f48b 100644 --- a/libraries/scrcpy/src/1_15/options.ts +++ b/libraries/scrcpy/src/1_15/options.ts @@ -34,6 +34,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_15 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/1_17/options.ts b/libraries/scrcpy/src/1_17/options.ts index d2f7a30d..05de4162 100644 --- a/libraries/scrcpy/src/1_17/options.ts +++ b/libraries/scrcpy/src/1_17/options.ts @@ -38,6 +38,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_17 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/1_18/options.ts b/libraries/scrcpy/src/1_18/options.ts index a476cf19..1e199add 100644 --- a/libraries/scrcpy/src/1_18/options.ts +++ b/libraries/scrcpy/src/1_18/options.ts @@ -38,6 +38,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_18 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/1_21/options.ts b/libraries/scrcpy/src/1_21/options.ts index 3577642b..f56b7d5e 100644 --- a/libraries/scrcpy/src/1_21/options.ts +++ b/libraries/scrcpy/src/1_21/options.ts @@ -37,6 +37,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_21 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/1_22/options.ts b/libraries/scrcpy/src/1_22/options.ts index 0da8c0ae..fb505a62 100644 --- a/libraries/scrcpy/src/1_22/options.ts +++ b/libraries/scrcpy/src/1_22/options.ts @@ -37,6 +37,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_22 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/1_23/options.ts b/libraries/scrcpy/src/1_23/options.ts index 71061274..47452f39 100644 --- a/libraries/scrcpy/src/1_23/options.ts +++ b/libraries/scrcpy/src/1_23/options.ts @@ -37,6 +37,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_23 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/1_24/options.ts b/libraries/scrcpy/src/1_24/options.ts index cec27799..84eab20e 100644 --- a/libraries/scrcpy/src/1_24/options.ts +++ b/libraries/scrcpy/src/1_24/options.ts @@ -37,6 +37,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_24 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/1_25/options.ts b/libraries/scrcpy/src/1_25/options.ts index 85ff7162..7b50f63b 100644 --- a/libraries/scrcpy/src/1_25/options.ts +++ b/libraries/scrcpy/src/1_25/options.ts @@ -37,6 +37,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions1_25 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/2_0/options.ts b/libraries/scrcpy/src/2_0/options.ts index 37e959e9..2b5016e0 100644 --- a/libraries/scrcpy/src/2_0/options.ts +++ b/libraries/scrcpy/src/2_0/options.ts @@ -38,6 +38,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions2_0 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/2_1/options.ts b/libraries/scrcpy/src/2_1/options.ts index 73c2adf8..7ff0863b 100644 --- a/libraries/scrcpy/src/2_1/options.ts +++ b/libraries/scrcpy/src/2_1/options.ts @@ -38,6 +38,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions2_1 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/2_2/options.ts b/libraries/scrcpy/src/2_2/options.ts index 199ce2f5..3825b9de 100644 --- a/libraries/scrcpy/src/2_2/options.ts +++ b/libraries/scrcpy/src/2_2/options.ts @@ -38,6 +38,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions2_2 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/2_3/options.ts b/libraries/scrcpy/src/2_3/options.ts index 8ab38779..d353acb1 100644 --- a/libraries/scrcpy/src/2_3/options.ts +++ b/libraries/scrcpy/src/2_3/options.ts @@ -38,6 +38,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions2_3 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/2_4/options.ts b/libraries/scrcpy/src/2_4/options.ts index 53ed2719..7618318c 100644 --- a/libraries/scrcpy/src/2_4/options.ts +++ b/libraries/scrcpy/src/2_4/options.ts @@ -42,6 +42,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions2_4 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/2_6/options.ts b/libraries/scrcpy/src/2_6/options.ts index ac0c92f0..11df0f97 100644 --- a/libraries/scrcpy/src/2_6/options.ts +++ b/libraries/scrcpy/src/2_6/options.ts @@ -42,6 +42,8 @@ import { import type { Init } from "./impl/index.js"; export class ScrcpyOptions2_6 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/2_7/options.ts b/libraries/scrcpy/src/2_7/options.ts index e4833b92..4d8595c3 100644 --- a/libraries/scrcpy/src/2_7/options.ts +++ b/libraries/scrcpy/src/2_7/options.ts @@ -42,6 +42,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions2_7 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/scrcpy/src/3_0/options.ts b/libraries/scrcpy/src/3_0/options.ts index b717bcd0..047ee1e1 100644 --- a/libraries/scrcpy/src/3_0/options.ts +++ b/libraries/scrcpy/src/3_0/options.ts @@ -42,6 +42,8 @@ import { } from "./impl/index.js"; export class ScrcpyOptions3_0 implements ScrcpyOptions { + static readonly Defaults = Defaults; + readonly value: Required; get controlMessageTypes(): readonly ScrcpyControlMessageType[] { diff --git a/libraries/stream-extra/src/stream.ts b/libraries/stream-extra/src/stream.ts index 778d1aed..c8c87d92 100644 --- a/libraries/stream-extra/src/stream.ts +++ b/libraries/stream-extra/src/stream.ts @@ -84,6 +84,9 @@ const ReadableStream = /* #__PURE__ */ (() => { yield value; } } finally { + // Calling `iterator.return` will enter this `finally` block. + // We don't need to care about the parameter to `iterator.return`, + // it will be returned as the final `result.value` automatically. if (!options?.preventCancel) { await reader.cancel(); } diff --git a/toolchain/side-effect-test/package.json b/toolchain/side-effect-test/package.json index 9740316e..02ead8eb 100644 --- a/toolchain/side-effect-test/package.json +++ b/toolchain/side-effect-test/package.json @@ -1,6 +1,7 @@ { "name": "side-effect-test", "version": "1.0.0", + "private": true, "description": "", "main": "index.js", "scripts": {