Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 92472007 authored by Simon Chan's avatar Simon Chan
Browse files

refactor(scrcpy): rewrite option classes to improve tree-shaking

parent db8466f6
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -10,12 +10,12 @@ import type {
    ScrcpyDisplay,
    ScrcpyEncoder,
    ScrcpyMediaStreamPacket,
    ScrcpyOptionsInit1_16,
    ScrcpyOptions1_15,
    ScrcpyVideoStreamMetadata,
} from "@yume-chan/scrcpy";
import {
    Av1,
    DEFAULT_SERVER_PATH,
    DefaultServerPath,
    ScrcpyControlMessageWriter,
    ScrcpyVideoCodecId,
    h264ParseConfiguration,
@@ -104,7 +104,7 @@ export class AdbScrcpyClient {
    static async pushServer(
        adb: Adb,
        file: ReadableStream<MaybeConsumable<Uint8Array>>,
        filename = DEFAULT_SERVER_PATH,
        filename = DefaultServerPath,
    ) {
        const sync = await adb.sync();
        try {
@@ -121,7 +121,9 @@ export class AdbScrcpyClient {
        adb: Adb,
        path: string,
        version: string,
        options: AdbScrcpyOptions<Pick<ScrcpyOptionsInit1_16, "tunnelForward">>,
        options: AdbScrcpyOptions<
            Pick<ScrcpyOptions1_15.Init, "tunnelForward">
        >,
    ) {
        let connection: AdbScrcpyConnection | undefined;
        let process: AdbSubprocessProtocol | undefined;
@@ -342,7 +344,7 @@ export class AdbScrcpyClient {
                    type = result[0]!;
                } catch (e) {
                    if (e instanceof ExactReadableEndedError) {
                        await this.#options.endDeviceMessageStream();
                        this.#options.endDeviceMessageStream();
                        break;
                    }
                    throw e;
@@ -350,7 +352,7 @@ export class AdbScrcpyClient {
                await this.#options.parseDeviceMessage(type, buffered);
            }
        } catch (e) {
            await this.#options.endDeviceMessageStream(e);
            this.#options.endDeviceMessageStream(e);
            buffered.cancel(e).catch(() => {});
        }
    }
+8 −4
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ import type { Adb } from "@yume-chan/adb";
import type {
    ScrcpyDisplay,
    ScrcpyEncoder,
    ScrcpyOptionsInit1_16,
    ScrcpyOptions1_16Impl,
} from "@yume-chan/scrcpy";
import { WritableStream } from "@yume-chan/stream-extra";

@@ -21,7 +21,7 @@ import { AdbScrcpyOptions } from "./types.js";
export class AdbScrcpyOptions1_16 extends AdbScrcpyOptions<
    // Only pick options that are used in this class,
    // so changes in `ScrcpyOptionsInitX_XX` won't affect type assignability with this class
    Pick<ScrcpyOptionsInit1_16, "tunnelForward">
    Pick<ScrcpyOptions1_16Impl.Init, "tunnelForward">
> {
    static createConnection(
        adb: Adb,
@@ -39,7 +39,9 @@ export class AdbScrcpyOptions1_16 extends AdbScrcpyOptions<
        adb: Adb,
        path: string,
        version: string,
        options: AdbScrcpyOptions<Pick<ScrcpyOptionsInit1_16, "tunnelForward">>,
        options: AdbScrcpyOptions<
            Pick<ScrcpyOptions1_16Impl.Init, "tunnelForward">
        >,
    ): Promise<ScrcpyEncoder[]> {
        const client = await AdbScrcpyClient.start(adb, path, version, options);

@@ -62,7 +64,9 @@ export class AdbScrcpyOptions1_16 extends AdbScrcpyOptions<
        adb: Adb,
        path: string,
        version: string,
        options: AdbScrcpyOptions<Pick<ScrcpyOptionsInit1_16, "tunnelForward">>,
        options: AdbScrcpyOptions<
            Pick<ScrcpyOptions1_16Impl.Init, "tunnelForward">
        >,
    ): Promise<ScrcpyDisplay[]> {
        try {
            // Server will exit before opening connections when an invalid display id was given
+5 −2
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ import type { Adb } from "@yume-chan/adb";
import type {
    ScrcpyDisplay,
    ScrcpyEncoder,
    ScrcpyOptionsInit1_22,
    ScrcpyOptions1_22Impl,
} from "@yume-chan/scrcpy";

import type { AdbScrcpyConnection } from "../connection.js";
@@ -13,7 +13,10 @@ import { AdbScrcpyOptions } from "./types.js";
export class AdbScrcpyOptions1_22 extends AdbScrcpyOptions<
    // Only pick options that are used in this class,
    // so changes in `ScrcpyOptionsInitX_XX` won't affect type assignability with this class
    Pick<ScrcpyOptionsInit1_22, "tunnelForward" | "control" | "sendDummyByte">
    Pick<
        ScrcpyOptions1_22Impl.Init,
        "tunnelForward" | "control" | "sendDummyByte"
    >
> {
    override getEncoders(
        adb: Adb,
+6 −4
Original line number Diff line number Diff line
@@ -2,8 +2,8 @@ import type { Adb } from "@yume-chan/adb";
import type {
    ScrcpyDisplay,
    ScrcpyEncoder,
    ScrcpyOptionsInit1_16,
    ScrcpyOptionsInit2_0,
    ScrcpyOptions1_16Impl,
    ScrcpyOptions2_0Impl,
} from "@yume-chan/scrcpy";

import { AdbScrcpyClient, AdbScrcpyExitedError } from "../client.js";
@@ -16,7 +16,7 @@ export class AdbScrcpyOptions2_0 extends AdbScrcpyOptions<
    // Only pick options that are used in this class,
    // so changes in `ScrcpyOptionsInitX_XX` won't affect type assignability with this class
    Pick<
        ScrcpyOptionsInit2_0,
        ScrcpyOptions2_0Impl.Init,
        "tunnelForward" | "control" | "sendDummyByte" | "scid" | "audio"
    >
> {
@@ -24,7 +24,9 @@ export class AdbScrcpyOptions2_0 extends AdbScrcpyOptions<
        adb: Adb,
        path: string,
        version: string,
        options: AdbScrcpyOptions<Pick<ScrcpyOptionsInit1_16, "tunnelForward">>,
        options: AdbScrcpyOptions<
            Pick<ScrcpyOptions1_16Impl.Init, "tunnelForward">
        >,
    ): Promise<ScrcpyEncoder[]> {
        try {
            // Similar to `AdbScrcpyOptions1_16.getDisplays`,
+2 −2
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ import type { Adb } from "@yume-chan/adb";
import type {
    ScrcpyDisplay,
    ScrcpyEncoder,
    ScrcpyOptionsInit2_1,
    ScrcpyOptions2_1Impl,
} from "@yume-chan/scrcpy";

import type { AdbScrcpyConnection } from "../connection.js";
@@ -15,7 +15,7 @@ export class AdbScrcpyOptions2_1 extends AdbScrcpyOptions<
    // Only pick options that are used in this class,
    // so changes in `ScrcpyOptionsInitX_XX` won't affect type assignability with this class
    Pick<
        ScrcpyOptionsInit2_1,
        ScrcpyOptions2_1Impl.Init,
        | "tunnelForward"
        | "control"
        | "sendDummyByte"
Loading