chore: integrate ESLint

This commit is contained in:
Simon Chan 2022-12-22 01:42:24 +08:00
parent 8bcd0ab913
commit aa033e4de6
No known key found for this signature in database
GPG key ID: A8B69F750B9BCEDD
177 changed files with 5604 additions and 3798 deletions

View file

@ -0,0 +1,11 @@
module.exports = {
"extends": [
"@yume-chan"
],
parserOptions: {
tsconfigRootDir: __dirname,
project: [
"./tsconfig.test.json"
],
},
}

View file

@ -0,0 +1,16 @@
.rush
# Test
coverage
**/*.spec.ts
**/*.spec.js
**/*.spec.js.map
**/__helpers__
jest.config.js
.eslintrc.cjs
tsconfig.json
tsconfig.test.json
# Logs
*.log

View file

@ -29,6 +29,7 @@
"build": "tsc -b tsconfig.build.json",
"build:watch": "tsc -b tsconfig.build.json",
"//test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --coverage",
"lint": "eslint src/**/*.ts --fix",
"prepublishOnly": "npm run build"
},
"dependencies": {
@ -39,10 +40,12 @@
},
"devDependencies": {
"@jest/globals": "^29.3.1",
"@yume-chan/ts-package-builder": "workspace:^1.0.0",
"@yume-chan/eslint-config": "workspace:^1.0.0",
"@yume-chan/tsconfig": "workspace:^1.0.0",
"cross-env": "^7.0.3",
"eslint": "^8.30.0",
"jest": "^29.3.1",
"ts-jest": "^29.0.3",
"typescript": "^4.8.4"
"typescript": "^4.9.4"
}
}

View file

@ -1,8 +1,11 @@
import type { H264Configuration, ScrcpyVideoStreamPacket } from '@yume-chan/scrcpy';
import { WritableStream } from '@yume-chan/stream-extra';
import {
type H264Configuration,
type ScrcpyVideoStreamPacket,
} from "@yume-chan/scrcpy";
import { WritableStream } from "@yume-chan/stream-extra";
function toHex(value: number) {
return value.toString(16).padStart(2, '0').toUpperCase();
return value.toString(16).padStart(2, "0").toUpperCase();
}
export class WebCodecsDecoder {
@ -12,25 +15,31 @@ export class WebCodecsDecoder {
public readonly maxLevel = undefined;
private _writable: WritableStream<ScrcpyVideoStreamPacket>;
public get writable() { return this._writable; }
public get writable() {
return this._writable;
}
private _renderer: HTMLCanvasElement;
public get renderer() { return this._renderer; }
public get renderer() {
return this._renderer;
}
private _frameRendered = 0;
public get frameRendered() { return this._frameRendered; }
public get frameRendered() {
return this._frameRendered;
}
private context: CanvasRenderingContext2D;
private decoder: VideoDecoder;
// Limit FPS to system refresh rate
private lastFrame: VideoFrame | undefined;
private animationFrame: number = 0;
private animationFrame = 0;
public constructor() {
this._renderer = document.createElement('canvas');
this._renderer = document.createElement("canvas");
this.context = this._renderer.getContext('2d')!;
this.context = this._renderer.getContext("2d")!;
this.decoder = new VideoDecoder({
output: (frame) => {
if (this.lastFrame) {
@ -43,25 +52,30 @@ export class WebCodecsDecoder {
this.render();
}
},
error() { },
error(e) {
void e;
},
});
this._writable = new WritableStream<ScrcpyVideoStreamPacket>({
write: async (packet) => {
write: (packet) => {
switch (packet.type) {
case 'configuration':
case "configuration":
this.configure(packet.data);
break;
case 'frame':
this.decoder.decode(new EncodedVideoChunk({
// Treat `undefined` as `key`, otherwise won't decode.
type: packet.keyframe === false ? 'delta' : 'key',
timestamp: 0,
data: packet.data,
}));
case "frame":
this.decoder.decode(
new EncodedVideoChunk({
// Treat `undefined` as `key`, otherwise won't decode.
type:
packet.keyframe === false ? "delta" : "key",
timestamp: 0,
data: packet.data,
})
);
break;
}
}
},
});
}
@ -84,7 +98,9 @@ export class WebCodecsDecoder {
// https://www.rfc-editor.org/rfc/rfc6381#section-3.3
// ISO Base Media File Format Name Space
const codec = `avc1.${[profileIndex, constraintSet, levelIndex].map(toHex).join('')}`;
const codec = `avc1.${[profileIndex, constraintSet, levelIndex]
.map(toHex)
.join("")}`;
this.decoder.configure({
codec: codec,
optimizeForLatency: true,

View file

@ -1,5 +1,5 @@
{
"extends": "./node_modules/@yume-chan/ts-package-builder/tsconfig.base.json",
"extends": "./node_modules/@yume-chan/tsconfig/tsconfig.base.json",
"compilerOptions": {
"lib": [
"ESNext",

View file

@ -1,8 +1,6 @@
{
"extends": "./tsconfig.build.json",
"compilerOptions": {
"types": [
],
},
"exclude": []
}