@yume-chan/scrcpy
Version:
TypeScript implementation of Scrcpy client.
31 lines (26 loc) • 931 B
text/typescript
import type { ScrcpyControlMessageType, ScrcpyOptions } from "../base/index.js";
/**
* Scrcpy control message types have different values between versions.
*
* This class provides a way to get the actual value for a given type.
*/
export class ScrcpyControlMessageTypeMap {
#types: readonly ScrcpyControlMessageType[];
constructor(options: ScrcpyOptions<object>) {
this.#types = options.controlMessageTypes;
}
get(type: ScrcpyControlMessageType): number {
const value = this.#types.indexOf(type);
if (value === -1) {
throw new TypeError("Invalid or unsupported control message type");
}
return value;
}
fillMessageType<T extends { type: ScrcpyControlMessageType }>(
message: Omit<T, "type">,
type: T["type"],
): T {
(message as T).type = this.get(type) as ScrcpyControlMessageType;
return message as T;
}
}