diff --git a/libraries/adb-scrcpy/src/options/2_0.ts b/libraries/adb-scrcpy/src/options/2_0.ts index 2aa6a774..122d222e 100644 --- a/libraries/adb-scrcpy/src/options/2_0.ts +++ b/libraries/adb-scrcpy/src/options/2_0.ts @@ -27,7 +27,7 @@ export class AdbScrcpyOptions2_0 extends AdbScrcpyOptions< ): Promise { try { // Similar to `AdbScrcpyOptions1_16.getDisplays`, - // server start process won't complete and `start `will throw + // server start procedure won't complete and `start `will throw const client = await AdbScrcpyClient.start( adb, path, diff --git a/libraries/adb/src/daemon/crypto.ts b/libraries/adb/src/daemon/crypto.ts index 9720afb6..0402cc7c 100644 --- a/libraries/adb/src/daemon/crypto.ts +++ b/libraries/adb/src/daemon/crypto.ts @@ -38,6 +38,7 @@ export function getBigUint( * @param littleEndian If `false` or `undefined`, a big-endian value should be written, * otherwise a little-endian value should be written. */ +// eslint-disable-next-line max-params export function setBigUint( array: Uint8Array, byteOffset: number, diff --git a/libraries/android-bin/src/am.ts b/libraries/android-bin/src/am.ts index f762fff2..a3638088 100644 --- a/libraries/android-bin/src/am.ts +++ b/libraries/android-bin/src/am.ts @@ -41,7 +41,9 @@ export class ActivityManager extends AdbCommandBase { return this.adb.subprocess.spawn(args); } - async startActivity(options: ActivityManagerStartActivityOptions) { + async startActivity( + options: ActivityManagerStartActivityOptions, + ): Promise { let args = buildArguments( ["am", "start-activity", "-W"], options, diff --git a/libraries/android-bin/src/bug-report.ts b/libraries/android-bin/src/bug-report.ts index ec956ff5..e09bb0e9 100644 --- a/libraries/android-bin/src/bug-report.ts +++ b/libraries/android-bin/src/bug-report.ts @@ -32,15 +32,15 @@ export interface BugReportZOptions { } export class BugReport extends AdbCommandBase { - static VERSION_REGEX = /(\d+)\.(\d+)/; + static VERSION_REGEX: RegExp = /(\d+)\.(\d+)/; - static BEGIN_REGEX = /BEGIN:(.*)/; + static BEGIN_REGEX: RegExp = /BEGIN:(.*)/; - static PROGRESS_REGEX = /PROGRESS:(.*)\/(.*)/; + static PROGRESS_REGEX: RegExp = /PROGRESS:(.*)\/(.*)/; - static OK_REGEX = /OK:(.*)/; + static OK_REGEX: RegExp = /OK:(.*)/; - static FAIL_REGEX = /FAIL:(.*)/; + static FAIL_REGEX: RegExp = /FAIL:(.*)/; /** * Queries the device's bugreport capabilities. @@ -101,7 +101,7 @@ export class BugReport extends AdbCommandBase { * * Should be `true` for Android version <= 11. */ - get supportsBugReport() { + get supportsBugReport(): boolean { return this.#supportsBugReport; } @@ -111,7 +111,7 @@ export class BugReport extends AdbCommandBase { * * Will be `undefined` if BugReportZ is not supported. */ - get bugReportZVersion() { + get bugReportZVersion(): string | undefined { return this.#bugReportZVersion; } @@ -121,7 +121,7 @@ export class BugReport extends AdbCommandBase { * * Should be `true` for Android version >= 7. */ - get supportsBugReportZ() { + get supportsBugReportZ(): boolean { return this.#supportsBugReportZ; } @@ -131,7 +131,7 @@ export class BugReport extends AdbCommandBase { * * Should be `true` for Android version >= 8. */ - get supportsBugReportZProgress() { + get supportsBugReportZProgress(): boolean { return this.#supportsBugReportZProgress; } @@ -141,7 +141,7 @@ export class BugReport extends AdbCommandBase { * * Should be `true` for Android version >= 12. */ - get supportsBugReportZStream() { + get supportsBugReportZStream(): boolean { return this.#supportsBugReportZStream; } diff --git a/libraries/android-bin/src/cmd.ts b/libraries/android-bin/src/cmd.ts index 272eade9..4b8068f1 100644 --- a/libraries/android-bin/src/cmd.ts +++ b/libraries/android-bin/src/cmd.ts @@ -14,22 +14,22 @@ import { ConcatStringStream, TextDecoderStream } from "@yume-chan/stream-extra"; export class Cmd extends AdbCommandBase { #supportsShellV2: boolean; - get supportsShellV2() { + get supportsShellV2(): boolean { return this.#supportsShellV2; } #supportsCmd: boolean; - get supportsCmd() { + get supportsCmd(): boolean { return this.#supportsCmd; } #supportsAbb: boolean; - get supportsAbb() { + get supportsAbb(): boolean { return this.#supportsAbb; } #supportsAbbExec: boolean; - get supportsAbbExec() { + get supportsAbbExec(): boolean { return this.#supportsAbbExec; } diff --git a/libraries/android-bin/src/dumpsys.ts b/libraries/android-bin/src/dumpsys.ts index 7e2dc243..71379de1 100644 --- a/libraries/android-bin/src/dumpsys.ts +++ b/libraries/android-bin/src/dumpsys.ts @@ -65,7 +65,7 @@ export class DumpSys extends AdbCommandBase { }; } - async battery() { + async battery(): Promise { const output = await this.adb.subprocess.spawnAndWaitLegacy([ "dumpsys", "battery", diff --git a/libraries/android-bin/src/logcat.ts b/libraries/android-bin/src/logcat.ts index 77985d2a..51c115bc 100644 --- a/libraries/android-bin/src/logcat.ts +++ b/libraries/android-bin/src/logcat.ts @@ -404,12 +404,12 @@ export class Logcat extends AdbCommandBase { // TODO: logcat: Support output format before Android 10 // ref https://android-review.googlesource.com/c/platform/system/core/+/748128 - static readonly LOG_SIZE_REGEX_10 = + static readonly LOG_SIZE_REGEX_10: RegExp = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed\), max entry is (.*) B, max payload is (.*) B/; // Android 11 added `readable` part // ref https://android-review.googlesource.com/c/platform/system/core/+/1390940 - static readonly LOG_SIZE_REGEX_11 = + static readonly LOG_SIZE_REGEX_11: RegExp = /(.*): ring buffer is (.*) (.*)B \((.*) (.*)B consumed, (.*) (.*)B readable\), max entry is (.*) B, max payload is (.*) B/; async getLogSize(ids?: LogId[]): Promise { @@ -471,7 +471,7 @@ export class Logcat extends AdbCommandBase { return result; } - async clear(ids?: LogId[]) { + async clear(ids?: LogId[]): Promise { const args = ["logcat", "-c"]; if (ids && ids.length > 0) { args.push("-b", Logcat.joinLogId(ids)); diff --git a/libraries/android-bin/src/overlay-display.ts b/libraries/android-bin/src/overlay-display.ts index 27f96a64..ea4efdac 100644 --- a/libraries/android-bin/src/overlay-display.ts +++ b/libraries/android-bin/src/overlay-display.ts @@ -36,7 +36,7 @@ export class OverlayDisplay extends AdbCommandBase { p.literal("/"), { name: "density", format: p.digits() }, ), - 1, + { min: 1 }, ), }, { @@ -81,7 +81,7 @@ export class OverlayDisplay extends AdbCommandBase { })); } - async set(devices: OverlayDisplayDevice[]) { + async set(devices: OverlayDisplayDevice[]): Promise { await this.#settings.put( "global", OverlayDisplay.SETTING_KEY, diff --git a/libraries/android-bin/src/pm.ts b/libraries/android-bin/src/pm.ts index 3aa4ce78..080fd2b6 100644 --- a/libraries/android-bin/src/pm.ts +++ b/libraries/android-bin/src/pm.ts @@ -533,7 +533,9 @@ export class PackageManager extends AdbCommandBase { * @param options Options for the install session * @returns ID of the new install session */ - async sessionCreate(options?: Partial) { + async sessionCreate( + options?: Partial, + ): Promise { const args = this.#buildInstallArguments("install-create", options); const process = await this.#cmdOrSubprocess(args); @@ -550,7 +552,11 @@ export class PackageManager extends AdbCommandBase { return Number.parseInt(sessionIdString[1]!, 10); } - async sessionAddSplit(sessionId: number, splitName: string, path: string) { + async sessionAddSplit( + sessionId: number, + splitName: string, + path: string, + ): Promise { const args: string[] = [ "pm", "install-write", @@ -572,7 +578,7 @@ export class PackageManager extends AdbCommandBase { splitName: string, size: number, stream: ReadableStream>, - ) { + ): Promise { const args: string[] = [ "pm", "install-write", @@ -599,7 +605,7 @@ export class PackageManager extends AdbCommandBase { ]); } - async sessionCommit(sessionId: number) { + async sessionCommit(sessionId: number): Promise { const args: string[] = ["pm", "install-commit", sessionId.toString()]; const output = await this.adb.subprocess .spawnAndWaitLegacy(args) @@ -609,7 +615,7 @@ export class PackageManager extends AdbCommandBase { } } - async sessionAbandon(sessionId: number) { + async sessionAbandon(sessionId: number): Promise { const args: string[] = ["pm", "install-abandon", sessionId.toString()]; const output = await this.adb.subprocess .spawnAndWaitLegacy(args) @@ -624,7 +630,7 @@ export class PackageManagerInstallSession { static async create( packageManager: PackageManager, options?: Partial, - ) { + ): Promise { const id = await packageManager.sessionCreate(options); return new PackageManagerInstallSession(packageManager, id); } @@ -632,7 +638,7 @@ export class PackageManagerInstallSession { #packageManager: PackageManager; #id: number; - get id() { + get id(): number { return this.#id; } @@ -641,7 +647,7 @@ export class PackageManagerInstallSession { this.#id = id; } - addSplit(splitName: string, path: string) { + addSplit(splitName: string, path: string): Promise { return this.#packageManager.sessionAddSplit(this.#id, splitName, path); } @@ -649,7 +655,7 @@ export class PackageManagerInstallSession { splitName: string, size: number, stream: ReadableStream>, - ) { + ): Promise { return this.#packageManager.sessionAddSplitStream( this.#id, splitName, @@ -658,11 +664,11 @@ export class PackageManagerInstallSession { ); } - commit() { + commit(): Promise { return this.#packageManager.sessionCommit(this.#id); } - abandon() { + abandon(): Promise { return this.#packageManager.sessionAbandon(this.#id); } } diff --git a/libraries/android-bin/src/settings.ts b/libraries/android-bin/src/settings.ts index 3a6775b3..a9320653 100644 --- a/libraries/android-bin/src/settings.ts +++ b/libraries/android-bin/src/settings.ts @@ -66,7 +66,7 @@ export class Settings extends AdbCommandBase { namespace: SettingsNamespace, key: string, options?: SettingsOptions, - ) { + ): Promise { const output = await this.base("get", namespace, options, key); // Remove last \n return output.substring(0, output.length - 1); diff --git a/libraries/android-bin/src/string-format.ts b/libraries/android-bin/src/string-format.ts index 05f0a0c7..a9171d45 100644 --- a/libraries/android-bin/src/string-format.ts +++ b/libraries/android-bin/src/string-format.ts @@ -103,8 +103,7 @@ export const p = { separated: ( separator: string, format: Format, - min = 0, - max = Infinity, + { min = 0, max = Infinity }: { min?: number; max?: number } = {}, ): Format => ({ parse(reader: Reader) { const result: T[] = []; diff --git a/libraries/aoa/src/mouse.ts b/libraries/aoa/src/mouse.ts index 710f4a4b..b8466516 100644 --- a/libraries/aoa/src/mouse.ts +++ b/libraries/aoa/src/mouse.ts @@ -42,19 +42,19 @@ export class HidMouse { ], ); - static serializeInputReport( - movementX: number, - movementY: number, - buttons: number, - scrollX: number, - scrollY: number, - ): Uint8Array { + static serializeInputReport(report: { + movementX?: number; + movementY?: number; + buttons?: number; + scrollX?: number; + scrollY?: number; + }): Uint8Array { return new Uint8Array([ - buttons, - movementX, - movementY, - scrollY, - scrollX, + report.buttons ?? 0, + report.movementX ?? 0, + report.movementY ?? 0, + report.scrollY ?? 0, + report.scrollX ?? 0, ]); } } diff --git a/libraries/scrcpy-decoder-webcodecs/src/video/decoder.ts b/libraries/scrcpy-decoder-webcodecs/src/video/decoder.ts index de69977d..618ba30f 100644 --- a/libraries/scrcpy-decoder-webcodecs/src/video/decoder.ts +++ b/libraries/scrcpy-decoder-webcodecs/src/video/decoder.ts @@ -70,17 +70,23 @@ export class WebCodecsVideoDecoder implements ScrcpyVideoDecoder { * Enable this option may reduce performance. * @param canvas Optional render target cavas element or offscreen canvas */ - constructor(codec: ScrcpyVideoCodecId, enableCapture: boolean, canvas?: HTMLCanvasElement | OffscreenCanvas) { + constructor( + codec: ScrcpyVideoCodecId, + enableCapture: boolean, + canvas?: HTMLCanvasElement | OffscreenCanvas, + ) { this.#codec = codec; if (canvas) { - this.#canvas = canvas - } else if (typeof document !== 'undefined') { + this.#canvas = canvas; + } else if (typeof document !== "undefined") { this.#canvas = document.createElement("canvas"); - } else if (typeof OffscreenCanvas !== 'undefined') { + } else if (typeof OffscreenCanvas !== "undefined") { this.#canvas = new OffscreenCanvas(0, 0); } else { - throw new Error('no canvas input found nor any canvas can be created'); + throw new Error( + "no canvas input found nor any canvas can be created", + ); } try { diff --git a/libraries/scrcpy-decoder-webcodecs/src/video/render/webgl.ts b/libraries/scrcpy-decoder-webcodecs/src/video/render/webgl.ts index 9569b994..3acca3d3 100644 --- a/libraries/scrcpy-decoder-webcodecs/src/video/render/webgl.ts +++ b/libraries/scrcpy-decoder-webcodecs/src/video/render/webgl.ts @@ -33,7 +33,10 @@ export class WebGLFrameRenderer implements FrameRenderer { * Whether to allow capturing the canvas content using APIs like `readPixels` and `toDataURL`. * Enable this option may reduce performance. */ - constructor(canvas: HTMLCanvasElement | OffscreenCanvas, enableCapture: boolean) { + constructor( + canvas: HTMLCanvasElement | OffscreenCanvas, + enableCapture: boolean, + ) { const gl = canvas.getContext("webgl2", { alpha: false, diff --git a/libraries/struct/src/types/buffer/base.ts b/libraries/struct/src/types/buffer/base.ts index 4bbdce32..d7ec6735 100644 --- a/libraries/struct/src/types/buffer/base.ts +++ b/libraries/struct/src/types/buffer/base.ts @@ -169,6 +169,7 @@ export class BufferLikeFieldValue< > extends StructFieldValue { protected array: Uint8Array | undefined; + // eslint-disable-next-line max-params constructor( definition: TDefinition, options: Readonly, diff --git a/libraries/struct/src/types/buffer/variable-length.ts b/libraries/struct/src/types/buffer/variable-length.ts index 8035dda9..d31393f4 100644 --- a/libraries/struct/src/types/buffer/variable-length.ts +++ b/libraries/struct/src/types/buffer/variable-length.ts @@ -81,6 +81,7 @@ export class VariableLengthBufferLikeStructFieldValue< protected lengthFieldValue: VariableLengthBufferLikeFieldLengthValue; + // eslint-disable-next-line max-params constructor( definition: TDefinition, options: Readonly, diff --git a/toolchain/eslint-config/eslint.config.js b/toolchain/eslint-config/eslint.config.js index f7aece12..3defe9ad 100644 --- a/toolchain/eslint-config/eslint.config.js +++ b/toolchain/eslint-config/eslint.config.js @@ -25,6 +25,12 @@ export default tslint.config( maxBOF: 0, }, ], + "max-params": [ + "error", + { + max: 4, + }, + ], }, }, ...tslint.configs.recommendedTypeChecked,