diff --git a/ts/@live-compositor/web-wasm/.eslintignore b/ts/@live-compositor/web-wasm/.eslintignore deleted file mode 100644 index 1521c8b76..000000000 --- a/ts/@live-compositor/web-wasm/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -dist diff --git a/ts/@live-compositor/web-wasm/.eslintrc.json b/ts/@live-compositor/web-wasm/.eslintrc.json deleted file mode 100644 index ed5ec9dbf..000000000 --- a/ts/@live-compositor/web-wasm/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "../../.eslintrc.base.json" - ] -} diff --git a/ts/@live-compositor/web-wasm/package.json b/ts/@live-compositor/web-wasm/package.json index 670c14078..04b2a5f0c 100644 --- a/ts/@live-compositor/web-wasm/package.json +++ b/ts/@live-compositor/web-wasm/package.json @@ -9,7 +9,7 @@ "watch": "tsc --watch --preserveWatchOutput", "build": "tsc", "clean": "rimraf dist", - "prepublishOnly": "npm run clean && npm run build" + "prepublishOnly": "pnpm run clean && pnpm run build" }, "author": "", "license": "MIT", @@ -23,5 +23,8 @@ "live-compositor": "workspace:^0.1.0", "mp4box": "^0.5.2", "path-parser": "^6.1.0" + }, + "devDependencies": { + "@types/react": "^18.3.3" } } diff --git a/ts/@live-compositor/web-wasm/src/compositor.ts b/ts/@live-compositor/web-wasm/src/compositor.ts index 40ade2f38..18beb9bb8 100644 --- a/ts/@live-compositor/web-wasm/src/compositor.ts +++ b/ts/@live-compositor/web-wasm/src/compositor.ts @@ -1,9 +1,11 @@ import { Renderer } from '@live-compositor/browser-render'; import { LiveCompositor as CoreLiveCompositor } from '@live-compositor/core'; import WasmInstance from './manager/wasmInstance'; -import { intoRegisterOutput, RegisterOutput } from './output/registerOutput'; -import { intoRegisterInput, RegisterInput } from './input/registerInput'; -import { RegisterImage } from './renderers'; +import type { RegisterOutput } from './output/registerOutput'; +import { intoRegisterOutput } from './output/registerOutput'; +import type { RegisterInput } from './input/registerInput'; +import { intoRegisterInput } from './input/registerInput'; +import type { RegisterImage } from './renderers'; export type LiveCompositorOptions = { framerate?: Framerate; diff --git a/ts/@live-compositor/web-wasm/src/eventSender.ts b/ts/@live-compositor/web-wasm/src/eventSender.ts index 048850760..5bcd33758 100644 --- a/ts/@live-compositor/web-wasm/src/eventSender.ts +++ b/ts/@live-compositor/web-wasm/src/eventSender.ts @@ -1,4 +1,5 @@ -import { CompositorEvent, CompositorEventType } from 'live-compositor'; +import type { CompositorEvent } from 'live-compositor'; +import { CompositorEventType } from 'live-compositor'; export class EventSender { private eventCallback?: (event: object) => void; diff --git a/ts/@live-compositor/web-wasm/src/input/mp4/demuxer.ts b/ts/@live-compositor/web-wasm/src/input/mp4/demuxer.ts index f78a6bc44..47338d63a 100644 --- a/ts/@live-compositor/web-wasm/src/input/mp4/demuxer.ts +++ b/ts/@live-compositor/web-wasm/src/input/mp4/demuxer.ts @@ -1,4 +1,5 @@ -import MP4Box, { DataStream, MP4ArrayBuffer, MP4File, MP4Info, Sample } from 'mp4box'; +import type { MP4ArrayBuffer, MP4File, MP4Info, Sample } from 'mp4box'; +import MP4Box, { DataStream } from 'mp4box'; export type OnConfig = (config: VideoDecoderConfig) => void; diff --git a/ts/@live-compositor/web-wasm/src/input/mp4/source.ts b/ts/@live-compositor/web-wasm/src/input/mp4/source.ts index 42e9d48da..61a864b28 100644 --- a/ts/@live-compositor/web-wasm/src/input/mp4/source.ts +++ b/ts/@live-compositor/web-wasm/src/input/mp4/source.ts @@ -1,8 +1,8 @@ import { FrameFormat } from '@live-compositor/browser-render'; import { MP4Demuxer } from './demuxer'; import { H264Decoder } from '../decoder/h264Decoder'; -import { InputFrame } from '../input'; -import InputSource from '../source'; +import type { InputFrame } from '../input'; +import type InputSource from '../source'; export default class MP4Source implements InputSource { private fileUrl: string; diff --git a/ts/@live-compositor/web-wasm/src/input/registerInput.ts b/ts/@live-compositor/web-wasm/src/input/registerInput.ts index 1e0693593..cae44cd9a 100644 --- a/ts/@live-compositor/web-wasm/src/input/registerInput.ts +++ b/ts/@live-compositor/web-wasm/src/input/registerInput.ts @@ -1,4 +1,4 @@ -import { RegisterInput as InternalRegisterInput } from '@live-compositor/core'; +import type { RegisterInput as InternalRegisterInput } from '@live-compositor/core'; export type RegisterInput = { type: 'mp4' } & RegisterMP4Input; diff --git a/ts/@live-compositor/web-wasm/src/input/source.ts b/ts/@live-compositor/web-wasm/src/input/source.ts index 47dac36b0..13269be1f 100644 --- a/ts/@live-compositor/web-wasm/src/input/source.ts +++ b/ts/@live-compositor/web-wasm/src/input/source.ts @@ -1,5 +1,5 @@ -import { RegisterInputRequest } from '@live-compositor/core'; -import { InputFrame } from './input'; +import type { RegisterInputRequest } from '@live-compositor/core'; +import type { InputFrame } from './input'; import MP4Source from './mp4/source'; export default interface InputSource { diff --git a/ts/@live-compositor/web-wasm/src/manager/wasmInstance.ts b/ts/@live-compositor/web-wasm/src/manager/wasmInstance.ts index da18d3778..454dc8597 100644 --- a/ts/@live-compositor/web-wasm/src/manager/wasmInstance.ts +++ b/ts/@live-compositor/web-wasm/src/manager/wasmInstance.ts @@ -1,16 +1,17 @@ -import { +import type { ApiRequest, CompositorManager, RegisterInputRequest, RegisterOutputRequest, } from '@live-compositor/core'; -import { Renderer, Component, ImageSpec } from '@live-compositor/browser-render'; -import { Api } from 'live-compositor'; +import type { Renderer, Component, ImageSpec } from '@live-compositor/browser-render'; +import type { Api } from 'live-compositor'; import { Path } from 'path-parser'; -import { Queue, StopQueueFn } from '../queue'; +import type { StopQueueFn } from '../queue'; +import { Queue } from '../queue'; import { Input } from '../input/input'; import { EventSender } from '../eventSender'; -import { Framerate } from '../compositor'; +import type { Framerate } from '../compositor'; import { Output } from '../output/output'; import { sourceFromRequest } from '../input/source'; diff --git a/ts/@live-compositor/web-wasm/src/output/canvas.ts b/ts/@live-compositor/web-wasm/src/output/canvas.ts index 3def53a6c..5c7c0f7c1 100644 --- a/ts/@live-compositor/web-wasm/src/output/canvas.ts +++ b/ts/@live-compositor/web-wasm/src/output/canvas.ts @@ -1,5 +1,5 @@ -import { Frame } from '@live-compositor/browser-render'; -import { OutputSink } from './sink'; +import type { Frame } from '@live-compositor/browser-render'; +import type { OutputSink } from './sink'; export default class CanvasSink implements OutputSink { private ctx: CanvasRenderingContext2D; diff --git a/ts/@live-compositor/web-wasm/src/output/output.ts b/ts/@live-compositor/web-wasm/src/output/output.ts index 0a9682486..236106c75 100644 --- a/ts/@live-compositor/web-wasm/src/output/output.ts +++ b/ts/@live-compositor/web-wasm/src/output/output.ts @@ -1,7 +1,7 @@ -import { Frame, Resolution } from '@live-compositor/browser-render'; -import { OutputSink } from './sink'; +import type { Frame, Resolution } from '@live-compositor/browser-render'; +import type { OutputSink } from './sink'; import CanvasSink from './canvas'; -import { RegisterOutputRequest } from '@live-compositor/core'; +import type { RegisterOutputRequest } from '@live-compositor/core'; export class Output { private sink: OutputSink; diff --git a/ts/@live-compositor/web-wasm/src/output/registerOutput.ts b/ts/@live-compositor/web-wasm/src/output/registerOutput.ts index 87d37b1d8..c40682280 100644 --- a/ts/@live-compositor/web-wasm/src/output/registerOutput.ts +++ b/ts/@live-compositor/web-wasm/src/output/registerOutput.ts @@ -1,12 +1,13 @@ -import { Resolution } from '@live-compositor/browser-render'; -import { RegisterOutput as InternalRegisterOutput } from '@live-compositor/core'; +import type { Resolution } from '@live-compositor/browser-render'; +import type { RegisterOutput as InternalRegisterOutput } from '@live-compositor/core'; +import type { ReactElement } from 'react'; export type RegisterOutput = { type: 'canvas' } & RegisterCanvasOutput; export type RegisterCanvasOutput = { resolution: Resolution; canvas: HTMLCanvasElement; - root: React.ReactElement; + root: ReactElement; }; export function intoRegisterOutput(output: RegisterOutput): InternalRegisterOutput { diff --git a/ts/@live-compositor/web-wasm/src/output/sink.ts b/ts/@live-compositor/web-wasm/src/output/sink.ts index 8d7677d55..7f113a546 100644 --- a/ts/@live-compositor/web-wasm/src/output/sink.ts +++ b/ts/@live-compositor/web-wasm/src/output/sink.ts @@ -1,4 +1,4 @@ -import { Frame } from '@live-compositor/browser-render'; +import type { Frame } from '@live-compositor/browser-render'; export interface OutputSink { send(frame: Frame): Promise; diff --git a/ts/@live-compositor/web-wasm/src/queue.ts b/ts/@live-compositor/web-wasm/src/queue.ts index b15e2f482..390026b36 100644 --- a/ts/@live-compositor/web-wasm/src/queue.ts +++ b/ts/@live-compositor/web-wasm/src/queue.ts @@ -1,7 +1,7 @@ -import { FrameSet, InputId, OutputId, Renderer } from '@live-compositor/browser-render'; -import { Framerate } from './compositor'; -import { Input, InputFrame } from './input/input'; -import { Output } from './output/output'; +import type { FrameSet, InputId, OutputId, Renderer } from '@live-compositor/browser-render'; +import type { Framerate } from './compositor'; +import type { Input, InputFrame } from './input/input'; +import type { Output } from './output/output'; export type StopQueueFn = () => void; diff --git a/ts/@live-compositor/web-wasm/src/renderers.ts b/ts/@live-compositor/web-wasm/src/renderers.ts index dd5db0cb8..4112db962 100644 --- a/ts/@live-compositor/web-wasm/src/renderers.ts +++ b/ts/@live-compositor/web-wasm/src/renderers.ts @@ -1,3 +1,3 @@ -import { Renderers } from 'live-compositor'; +import type { Renderers } from 'live-compositor'; export type RegisterImage = Required>; diff --git a/ts/eslint.config.js b/ts/eslint.config.js index 95422988a..2a94483a4 100644 --- a/ts/eslint.config.js +++ b/ts/eslint.config.js @@ -56,6 +56,7 @@ export default [ '@typescript-eslint/no-floating-promises': ['error'], 'no-constant-condition': [0], 'no-unused-vars': 'off', + '@typescript-eslint/no-floating-promises': 'off', '@typescript-eslint/no-unused-vars': [ 'error', { diff --git a/ts/package.json b/ts/package.json index f686b47df..f4aeb0e78 100644 --- a/ts/package.json +++ b/ts/package.json @@ -36,4 +36,4 @@ "globby": "11.0.4" } } -} \ No newline at end of file +} diff --git a/ts/pnpm-lock.yaml b/ts/pnpm-lock.yaml index b9995587b..45adf12f3 100644 --- a/ts/pnpm-lock.yaml +++ b/ts/pnpm-lock.yaml @@ -152,6 +152,10 @@ importers: path-parser: specifier: ^6.1.0 version: 6.1.0 + devDependencies: + '@types/react': + specifier: ^18.3.3 + version: 18.3.12 create-live-compositor: dependencies: @@ -319,20 +323,20 @@ packages: resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==} engines: {node: '>= 16'} - '@babel/code-frame@7.26.0': - resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.0': - resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.0': - resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.25.9': @@ -369,8 +373,8 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.1': - resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -2557,23 +2561,23 @@ snapshots: '@types/json-schema': 7.0.15 js-yaml: 4.1.0 - '@babel/code-frame@7.26.0': + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.0': {} + '@babel/compat-data@7.26.2': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 @@ -2585,9 +2589,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.0': + '@babel/generator@7.26.2': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -2595,7 +2599,7 @@ snapshots: '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -2630,7 +2634,7 @@ snapshots: '@babel/template': 7.25.9 '@babel/types': 7.26.0 - '@babel/parser@7.26.1': + '@babel/parser@7.26.2': dependencies: '@babel/types': 7.26.0 @@ -2646,15 +2650,15 @@ snapshots: '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@babel/traverse@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/types': 7.26.0 debug: 4.3.7 @@ -2931,7 +2935,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -2943,7 +2947,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__traverse@7.20.6': @@ -4446,7 +4450,7 @@ snapshots: rollup: 4.24.3 typescript: 5.5.3 optionalDependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 rollup@4.24.3: dependencies: