@rivmux/runtime-worker 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,17 +1,25 @@
1
1
  //#region src/index.ts
2
2
  const REQUEST_TIMEOUT_MS = 5e3;
3
3
  var WorkerClient = class {
4
+ worker;
5
+ hooks;
6
+ handleMessage = (event) => {
7
+ this.handleWorkerMessage(event.data);
8
+ };
9
+ handleError = (event) => {
10
+ const error = createRuntimeWorkerError("RIVMUX_WORKER_ERROR", event.message || "Worker runtime failed.", true, event.error);
11
+ this.rejectAll(error);
12
+ this.hooks.onError(error);
13
+ };
14
+ pendingAttach;
15
+ pendingStop;
16
+ pendingDestroy;
17
+ workerReady = false;
18
+ queuedCommands = [];
19
+ attachTimer;
20
+ stoppedTimer;
21
+ destroyedTimer;
4
22
  constructor(worker, hooks) {
5
- this.handleMessage = (event) => {
6
- this.handleWorkerMessage(event.data);
7
- };
8
- this.handleError = (event) => {
9
- const error = createRuntimeWorkerError("RIVMUX_WORKER_ERROR", event.message || "Worker runtime failed.", true, event.error);
10
- this.rejectAll(error);
11
- this.hooks.onError(error);
12
- };
13
- this.workerReady = false;
14
- this.queuedCommands = [];
15
23
  this.worker = worker;
16
24
  this.hooks = hooks;
17
25
  this.worker.addEventListener("message", this.handleMessage);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { NormalizedRivmuxPlayerOptions, PlayerError, WorkerCommand, WorkerMessage } from '@rivmux/protocol'\n\nexport type WorkerLike = Pick<Worker, 'addEventListener' | 'postMessage' | 'removeEventListener' | 'terminate'>\n\nexport type RuntimeWorkerFactory = (options: NormalizedRivmuxPlayerOptions) => WorkerLike\n\ntype PendingRequest = {\n resolve: () => void\n reject: (error: PlayerError) => void\n}\n\nexport type WorkerClientHooks = {\n onMessage(message: WorkerMessage): void\n onError(error: PlayerError): void\n}\n\nconst REQUEST_TIMEOUT_MS = 5000\n\nexport class WorkerClient {\n private readonly worker: WorkerLike\n private readonly hooks: WorkerClientHooks\n private readonly handleMessage = (event: MessageEvent<WorkerMessage>): void => {\n this.handleWorkerMessage(event.data)\n }\n private readonly handleError = (event: ErrorEvent): void => {\n const error = createRuntimeWorkerError('RIVMUX_WORKER_ERROR', event.message || 'Worker runtime failed.', true, event.error)\n this.rejectAll(error)\n this.hooks.onError(error)\n }\n private pendingAttach?: PendingRequest\n private pendingStop?: PendingRequest\n private pendingDestroy?: PendingRequest\n private workerReady = false\n private queuedCommands: WorkerCommand[] = []\n private attachTimer?: ReturnType<typeof setTimeout>\n private stoppedTimer?: ReturnType<typeof setTimeout>\n private destroyedTimer?: ReturnType<typeof setTimeout>\n\n constructor(worker: WorkerLike, hooks: WorkerClientHooks) {\n this.worker = worker\n this.hooks = hooks\n this.worker.addEventListener('message', this.handleMessage as EventListener)\n this.worker.addEventListener('error', this.handleError as EventListener)\n }\n\n post(command: WorkerCommand): void {\n if (!this.workerReady) {\n this.queuedCommands.push(command)\n return\n }\n\n this.worker.postMessage(command)\n }\n\n waitForMediaSourceHandle(command: WorkerCommand): Promise<void> {\n if (this.pendingAttach !== undefined) {\n return Promise.reject(createRuntimeWorkerError('RIVMUX_ATTACH_IN_PROGRESS', 'A media source attach request is already pending.', false))\n }\n\n return new Promise((resolve, reject) => {\n this.pendingAttach = { resolve, reject }\n this.attachTimer = this.startTimeout('RIVMUX_ATTACH_TIMEOUT', 'Timed out waiting for worker MediaSourceHandle.', reject)\n this.post(command)\n })\n }\n\n waitForStopped(command: WorkerCommand): Promise<void> {\n if (this.pendingStop !== undefined) {\n return Promise.reject(createRuntimeWorkerError('RIVMUX_STOP_IN_PROGRESS', 'A stop request is already pending.', false))\n }\n\n return new Promise((resolve, reject) => {\n this.pendingStop = { resolve, reject }\n this.stoppedTimer = this.startTimeout('RIVMUX_STOP_TIMEOUT', 'Timed out waiting for worker stop.', reject)\n this.post(command)\n })\n }\n\n waitForDestroyed(command: WorkerCommand): Promise<void> {\n if (this.pendingDestroy !== undefined) {\n return Promise.reject(createRuntimeWorkerError('RIVMUX_DESTROY_IN_PROGRESS', 'A destroy request is already pending.', false))\n }\n\n return new Promise((resolve, reject) => {\n this.pendingDestroy = { resolve, reject }\n this.destroyedTimer = this.startTimeout('RIVMUX_DESTROY_TIMEOUT', 'Timed out waiting for worker destroy.', reject)\n this.post(command)\n })\n }\n\n dispose(): void {\n this.rejectAll(createRuntimeWorkerError('RIVMUX_WORKER_DISPOSED', 'Worker client was disposed.', true))\n this.worker.removeEventListener('message', this.handleMessage as EventListener)\n this.worker.removeEventListener('error', this.handleError as EventListener)\n this.worker.terminate()\n }\n\n private handleWorkerMessage(message: WorkerMessage): void {\n if (message.type === 'worker-ready') {\n this.flushQueuedCommands()\n return\n }\n\n this.hooks.onMessage(message)\n\n if (message.type === 'media-source-handle') {\n this.resolveAttach()\n return\n }\n\n if (message.type === 'stopped') {\n this.resolveStop()\n return\n }\n\n if (message.type === 'destroyed') {\n this.resolveDestroy()\n return\n }\n\n if (message.type === 'error') {\n this.rejectPendingForWorkerError(message.error)\n }\n }\n\n private rejectPendingForWorkerError(error: PlayerError): void {\n if (!error.terminal) {\n return\n }\n\n this.rejectAll(error)\n }\n\n private resolveAttach(): void {\n this.clearAttachTimer()\n this.pendingAttach?.resolve()\n this.pendingAttach = undefined\n }\n\n private resolveStop(): void {\n this.clearStoppedTimer()\n this.pendingStop?.resolve()\n this.pendingStop = undefined\n }\n\n private resolveDestroy(): void {\n this.clearDestroyedTimer()\n this.pendingDestroy?.resolve()\n this.pendingDestroy = undefined\n }\n\n private rejectAll(error: PlayerError): void {\n this.queuedCommands = []\n this.clearAttachTimer()\n this.clearStoppedTimer()\n this.clearDestroyedTimer()\n this.pendingAttach?.reject(error)\n this.pendingStop?.reject(error)\n this.pendingDestroy?.reject(error)\n this.pendingAttach = undefined\n this.pendingStop = undefined\n this.pendingDestroy = undefined\n }\n\n private flushQueuedCommands(): void {\n if (this.workerReady) {\n return\n }\n\n this.workerReady = true\n const commands = this.queuedCommands\n this.queuedCommands = []\n for (const command of commands) {\n this.worker.postMessage(command)\n }\n }\n\n private startTimeout(code: string, message: string, reject: (error: PlayerError) => void): ReturnType<typeof setTimeout> {\n return setTimeout(() => {\n const error = createRuntimeWorkerError(code, message, true)\n reject(error)\n this.rejectAll(error)\n }, REQUEST_TIMEOUT_MS)\n }\n\n private clearAttachTimer(): void {\n if (this.attachTimer !== undefined) {\n clearTimeout(this.attachTimer)\n this.attachTimer = undefined\n }\n }\n\n private clearStoppedTimer(): void {\n if (this.stoppedTimer !== undefined) {\n clearTimeout(this.stoppedTimer)\n this.stoppedTimer = undefined\n }\n }\n\n private clearDestroyedTimer(): void {\n if (this.destroyedTimer !== undefined) {\n clearTimeout(this.destroyedTimer)\n this.destroyedTimer = undefined\n }\n }\n}\n\nexport function createRuntimeWorker(options: NormalizedRivmuxPlayerOptions): WorkerLike {\n const url = options.runtime.workerUrl === undefined ? new URL('./rivmux-runtime-worker.js', import.meta.url) : options.runtime.workerUrl\n\n return new Worker(url, {\n name: 'rivmux-runtime-worker',\n type: 'module',\n })\n}\n\nfunction createRuntimeWorkerError(code: string, message: string, terminal: boolean, cause?: unknown): PlayerError {\n return cause === undefined ? { kind: 'runtime', code, message, terminal } : { kind: 'runtime', code, message, terminal, cause }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { NormalizedRivmuxPlayerOptions, PlayerError, WorkerCommand, WorkerMessage } from '@rivmux/protocol'\n\nexport type WorkerLike = Pick<Worker, 'addEventListener' | 'postMessage' | 'removeEventListener' | 'terminate'>\n\nexport type RuntimeWorkerFactory = (options: NormalizedRivmuxPlayerOptions) => WorkerLike\n\ntype PendingRequest = {\n resolve: () => void\n reject: (error: PlayerError) => void\n}\n\nexport type WorkerClientHooks = {\n onMessage(message: WorkerMessage): void\n onError(error: PlayerError): void\n}\n\nconst REQUEST_TIMEOUT_MS = 5000\n\nexport class WorkerClient {\n private readonly worker: WorkerLike\n private readonly hooks: WorkerClientHooks\n private readonly handleMessage = (event: MessageEvent<WorkerMessage>): void => {\n this.handleWorkerMessage(event.data)\n }\n private readonly handleError = (event: ErrorEvent): void => {\n const error = createRuntimeWorkerError('RIVMUX_WORKER_ERROR', event.message || 'Worker runtime failed.', true, event.error)\n this.rejectAll(error)\n this.hooks.onError(error)\n }\n private pendingAttach?: PendingRequest\n private pendingStop?: PendingRequest\n private pendingDestroy?: PendingRequest\n private workerReady = false\n private queuedCommands: WorkerCommand[] = []\n private attachTimer?: ReturnType<typeof setTimeout>\n private stoppedTimer?: ReturnType<typeof setTimeout>\n private destroyedTimer?: ReturnType<typeof setTimeout>\n\n constructor(worker: WorkerLike, hooks: WorkerClientHooks) {\n this.worker = worker\n this.hooks = hooks\n this.worker.addEventListener('message', this.handleMessage as EventListener)\n this.worker.addEventListener('error', this.handleError as EventListener)\n }\n\n post(command: WorkerCommand): void {\n if (!this.workerReady) {\n this.queuedCommands.push(command)\n return\n }\n\n this.worker.postMessage(command)\n }\n\n waitForMediaSourceHandle(command: WorkerCommand): Promise<void> {\n if (this.pendingAttach !== undefined) {\n return Promise.reject(createRuntimeWorkerError('RIVMUX_ATTACH_IN_PROGRESS', 'A media source attach request is already pending.', false))\n }\n\n return new Promise((resolve, reject) => {\n this.pendingAttach = { resolve, reject }\n this.attachTimer = this.startTimeout('RIVMUX_ATTACH_TIMEOUT', 'Timed out waiting for worker MediaSourceHandle.', reject)\n this.post(command)\n })\n }\n\n waitForStopped(command: WorkerCommand): Promise<void> {\n if (this.pendingStop !== undefined) {\n return Promise.reject(createRuntimeWorkerError('RIVMUX_STOP_IN_PROGRESS', 'A stop request is already pending.', false))\n }\n\n return new Promise((resolve, reject) => {\n this.pendingStop = { resolve, reject }\n this.stoppedTimer = this.startTimeout('RIVMUX_STOP_TIMEOUT', 'Timed out waiting for worker stop.', reject)\n this.post(command)\n })\n }\n\n waitForDestroyed(command: WorkerCommand): Promise<void> {\n if (this.pendingDestroy !== undefined) {\n return Promise.reject(createRuntimeWorkerError('RIVMUX_DESTROY_IN_PROGRESS', 'A destroy request is already pending.', false))\n }\n\n return new Promise((resolve, reject) => {\n this.pendingDestroy = { resolve, reject }\n this.destroyedTimer = this.startTimeout('RIVMUX_DESTROY_TIMEOUT', 'Timed out waiting for worker destroy.', reject)\n this.post(command)\n })\n }\n\n dispose(): void {\n this.rejectAll(createRuntimeWorkerError('RIVMUX_WORKER_DISPOSED', 'Worker client was disposed.', true))\n this.worker.removeEventListener('message', this.handleMessage as EventListener)\n this.worker.removeEventListener('error', this.handleError as EventListener)\n this.worker.terminate()\n }\n\n private handleWorkerMessage(message: WorkerMessage): void {\n if (message.type === 'worker-ready') {\n this.flushQueuedCommands()\n return\n }\n\n this.hooks.onMessage(message)\n\n if (message.type === 'media-source-handle') {\n this.resolveAttach()\n return\n }\n\n if (message.type === 'stopped') {\n this.resolveStop()\n return\n }\n\n if (message.type === 'destroyed') {\n this.resolveDestroy()\n return\n }\n\n if (message.type === 'error') {\n this.rejectPendingForWorkerError(message.error)\n }\n }\n\n private rejectPendingForWorkerError(error: PlayerError): void {\n if (!error.terminal) {\n return\n }\n\n this.rejectAll(error)\n }\n\n private resolveAttach(): void {\n this.clearAttachTimer()\n this.pendingAttach?.resolve()\n this.pendingAttach = undefined\n }\n\n private resolveStop(): void {\n this.clearStoppedTimer()\n this.pendingStop?.resolve()\n this.pendingStop = undefined\n }\n\n private resolveDestroy(): void {\n this.clearDestroyedTimer()\n this.pendingDestroy?.resolve()\n this.pendingDestroy = undefined\n }\n\n private rejectAll(error: PlayerError): void {\n this.queuedCommands = []\n this.clearAttachTimer()\n this.clearStoppedTimer()\n this.clearDestroyedTimer()\n this.pendingAttach?.reject(error)\n this.pendingStop?.reject(error)\n this.pendingDestroy?.reject(error)\n this.pendingAttach = undefined\n this.pendingStop = undefined\n this.pendingDestroy = undefined\n }\n\n private flushQueuedCommands(): void {\n if (this.workerReady) {\n return\n }\n\n this.workerReady = true\n const commands = this.queuedCommands\n this.queuedCommands = []\n for (const command of commands) {\n this.worker.postMessage(command)\n }\n }\n\n private startTimeout(code: string, message: string, reject: (error: PlayerError) => void): ReturnType<typeof setTimeout> {\n return setTimeout(() => {\n const error = createRuntimeWorkerError(code, message, true)\n reject(error)\n this.rejectAll(error)\n }, REQUEST_TIMEOUT_MS)\n }\n\n private clearAttachTimer(): void {\n if (this.attachTimer !== undefined) {\n clearTimeout(this.attachTimer)\n this.attachTimer = undefined\n }\n }\n\n private clearStoppedTimer(): void {\n if (this.stoppedTimer !== undefined) {\n clearTimeout(this.stoppedTimer)\n this.stoppedTimer = undefined\n }\n }\n\n private clearDestroyedTimer(): void {\n if (this.destroyedTimer !== undefined) {\n clearTimeout(this.destroyedTimer)\n this.destroyedTimer = undefined\n }\n }\n}\n\nexport function createRuntimeWorker(options: NormalizedRivmuxPlayerOptions): WorkerLike {\n const url = options.runtime.workerUrl === undefined ? new URL('./rivmux-runtime-worker.js', import.meta.url) : options.runtime.workerUrl\n\n return new Worker(url, {\n name: 'rivmux-runtime-worker',\n type: 'module',\n })\n}\n\nfunction createRuntimeWorkerError(code: string, message: string, terminal: boolean, cause?: unknown): PlayerError {\n return cause === undefined ? { kind: 'runtime', code, message, terminal } : { kind: 'runtime', code, message, terminal, cause }\n}\n"],"mappings":"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"}
@@ -1,18 +1,5 @@
1
1
  import { NormalizedNetworkOptions, NormalizedRivmuxPlayerOptions, PlayerError, WorkerCommand, WorkerMessage } from "@rivmux/protocol";
2
2
 
3
- //#region src/fixtures/m1-static-fmp4.d.ts
4
- type M1StaticFmp4Fixture = {
5
- mimeType: string;
6
- codec: string;
7
- width: number;
8
- height: number;
9
- duration: number;
10
- initSegment: ArrayBuffer;
11
- mediaSegment: ArrayBuffer;
12
- };
13
- declare const M1_VIDEO_MIME = "video/mp4; codecs=\"avc1.42C01E\"";
14
- declare function createM1StaticFmp4Fixture(): M1StaticFmp4Fixture;
15
- //#endregion
16
3
  //#region src/latency/buffer-ranges.d.ts
17
4
  type BufferedRange = {
18
5
  start: number;
@@ -167,7 +154,6 @@ type RuntimeMseController = {
167
154
  readonly bufferedRanges: BufferedRange[];
168
155
  readonly bufferedRangeCount: number;
169
156
  createMediaSourceHandle(): Promise<MediaSourceHandle>;
170
- appendFixture(fixture: ReturnType<typeof createM1StaticFmp4Fixture>): Promise<void>;
171
157
  appendInitSegment(segment: Extract<CoreEvent, {
172
158
  type: 'initSegment';
173
159
  }>['data']): Promise<void>;
@@ -283,7 +269,6 @@ declare class MseController {
283
269
  get bufferedRanges(): BufferedRange[];
284
270
  get bufferedRangeCount(): number;
285
271
  createMediaSourceHandle(): Promise<MediaSourceHandle>;
286
- appendFixture(fixture: M1StaticFmp4Fixture): Promise<void>;
287
272
  appendInitSegment(segment: CoreInitSegment): Promise<void>;
288
273
  appendMediaSegment(segment: CoreMediaSegment): Promise<void>;
289
274
  cleanupBefore(cutoff: number, options?: MseCleanupOptions): Promise<void>;
@@ -325,7 +310,7 @@ declare class SourceBufferQueue {
325
310
  declare function isMseSupported(mimeType: string): boolean;
326
311
  //#endregion
327
312
  //#region src/wasm/wasm-loader.d.ts
328
- declare function createWasmTransmuxCoreHost(Core: TransmuxCoreWasmConstructor | undefined): TransmuxCoreHost | undefined;
313
+ declare function createWasmTransmuxCoreHost(Core: TransmuxCoreWasmConstructor | undefined): TransmuxCoreHost;
329
314
  //#endregion
330
315
  //#region src/worker-entry.d.ts
331
316
  type DedicatedWorkerScopeLike = {
@@ -335,5 +320,5 @@ type DedicatedWorkerScopeLike = {
335
320
  };
336
321
  declare function startRuntimeWorker(scope: DedicatedWorkerScopeLike): RuntimeWorker;
337
322
  //#endregion
338
- export { type CoreEvent, HttpFlvLoader, HttpFlvLoaderError, M1_VIDEO_MIME, MseController, RuntimeWorker, SourceBufferQueue, type StreamChunk, type StreamLoader, type StreamLoaderConfig, type StreamLoaderStats, type TransmuxCoreHost, type TransmuxCoreWasmConstructor, WasmTransmuxCoreHost, createM1StaticFmp4Fixture, createWasmTransmuxCoreHost, isMseSupported, normalizeCoreEvents, startRuntimeWorker };
323
+ export { type CoreEvent, HttpFlvLoader, HttpFlvLoaderError, MseController, RuntimeWorker, SourceBufferQueue, type StreamChunk, type StreamLoader, type StreamLoaderConfig, type StreamLoaderStats, type TransmuxCoreHost, type TransmuxCoreWasmConstructor, WasmTransmuxCoreHost, createWasmTransmuxCoreHost, isMseSupported, normalizeCoreEvents, startRuntimeWorker };
339
324
  //# sourceMappingURL=rivmux-runtime-worker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rivmux-runtime-worker.d.ts","names":[],"sources":["../src/fixtures/m1-static-fmp4.ts","../src/latency/buffer-ranges.ts","../src/loader/loader.ts","../src/wasm/rivmux-transmux-wasm.ts","../src/runtime.ts","../src/loader/http-flv-loader.ts","../src/mse/mse-controller.ts","../src/mse/source-buffer-queue.ts","../src/mse/mime.ts","../src/wasm/wasm-loader.ts","../src/worker-entry.ts"],"mappings":"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"}
1
+ {"version":3,"file":"rivmux-runtime-worker.d.ts","names":[],"sources":["../src/latency/buffer-ranges.ts","../src/loader/loader.ts","../src/wasm/rivmux-transmux-wasm.ts","../src/runtime.ts","../src/loader/http-flv-loader.ts","../src/mse/mse-controller.ts","../src/mse/source-buffer-queue.ts","../src/mse/mime.ts","../src/wasm/wasm-loader.ts","../src/worker-entry.ts"],"mappings":"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"}