mattebox 0.1.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/LICENSE +21 -0
- package/README.md +106 -0
- package/dist/cdn/mattebox.dash-drm.min.js +2 -0
- package/dist/cdn/mattebox.dash.min.js +2 -0
- package/dist/cdn/mattebox.dual-drm.min.js +2 -0
- package/dist/cdn/mattebox.dual-ts-drm.min.js +3 -0
- package/dist/cdn/mattebox.dual-ts.min.js +3 -0
- package/dist/cdn/mattebox.dual.min.js +2 -0
- package/dist/cdn/mattebox.hls-drm.min.js +2 -0
- package/dist/cdn/mattebox.hls-ts-drm.min.js +3 -0
- package/dist/cdn/mattebox.hls-ts.min.js +3 -0
- package/dist/cdn/mattebox.hls.min.js +2 -0
- package/dist/cdn/mattebox.kernel.min.js +1 -0
- package/dist/cdn/mattebox.min.js +6 -0
- package/dist/cdn/transmux.worker.js +1 -0
- package/dist/containers/adts.d.ts +33 -0
- package/dist/containers/adts.d.ts.map +1 -0
- package/dist/containers/adts.js +66 -0
- package/dist/containers/adts.js.map +1 -0
- package/dist/containers/captions.d.ts +27 -0
- package/dist/containers/captions.d.ts.map +1 -0
- package/dist/containers/captions.js +36 -0
- package/dist/containers/captions.js.map +1 -0
- package/dist/containers/codec-probe/index.d.ts +35 -0
- package/dist/containers/codec-probe/index.d.ts.map +1 -0
- package/dist/containers/codec-probe/index.js +222 -0
- package/dist/containers/codec-probe/index.js.map +1 -0
- package/dist/containers/fmp4/writer.d.ts +62 -0
- package/dist/containers/fmp4/writer.d.ts.map +1 -0
- package/dist/containers/fmp4/writer.js +201 -0
- package/dist/containers/fmp4/writer.js.map +1 -0
- package/dist/containers/id3.d.ts +25 -0
- package/dist/containers/id3.d.ts.map +1 -0
- package/dist/containers/id3.js +75 -0
- package/dist/containers/id3.js.map +1 -0
- package/dist/containers/mp4-box/index.d.ts +79 -0
- package/dist/containers/mp4-box/index.d.ts.map +1 -0
- package/dist/containers/mp4-box/index.js +231 -0
- package/dist/containers/mp4-box/index.js.map +1 -0
- package/dist/containers/packed-audio/index.d.ts +7 -0
- package/dist/containers/packed-audio/index.d.ts.map +1 -0
- package/dist/containers/packed-audio/index.js +63 -0
- package/dist/containers/packed-audio/index.js.map +1 -0
- package/dist/containers/sei.d.ts +26 -0
- package/dist/containers/sei.d.ts.map +1 -0
- package/dist/containers/sei.js +100 -0
- package/dist/containers/sei.js.map +1 -0
- package/dist/containers/ts-transmux/demux.d.ts +49 -0
- package/dist/containers/ts-transmux/demux.d.ts.map +1 -0
- package/dist/containers/ts-transmux/demux.js +222 -0
- package/dist/containers/ts-transmux/demux.js.map +1 -0
- package/dist/containers/ts-transmux/h264.d.ts +48 -0
- package/dist/containers/ts-transmux/h264.d.ts.map +1 -0
- package/dist/containers/ts-transmux/h264.js +211 -0
- package/dist/containers/ts-transmux/h264.js.map +1 -0
- package/dist/containers/ts-transmux/index.d.ts +17 -0
- package/dist/containers/ts-transmux/index.d.ts.map +1 -0
- package/dist/containers/ts-transmux/index.js +34 -0
- package/dist/containers/ts-transmux/index.js.map +1 -0
- package/dist/containers/ts-transmux/runner.d.ts +23 -0
- package/dist/containers/ts-transmux/runner.d.ts.map +1 -0
- package/dist/containers/ts-transmux/runner.js +99 -0
- package/dist/containers/ts-transmux/runner.js.map +1 -0
- package/dist/containers/ts-transmux/transmux.d.ts +24 -0
- package/dist/containers/ts-transmux/transmux.d.ts.map +1 -0
- package/dist/containers/ts-transmux/transmux.js +212 -0
- package/dist/containers/ts-transmux/transmux.js.map +1 -0
- package/dist/containers/ts-transmux/transmux.worker.d.ts +2 -0
- package/dist/containers/ts-transmux/transmux.worker.d.ts.map +1 -0
- package/dist/containers/ts-transmux/transmux.worker.js +19 -0
- package/dist/containers/ts-transmux/transmux.worker.js.map +1 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/asyncToGenerator.js +27 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/defineProperty.js +12 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectSpread2.js +25 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectWithoutProperties.js +13 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectWithoutPropertiesLoose.js +12 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/toPrimitive.js +14 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/toPropertyKey.js +9 -0
- package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/typeof.js +11 -0
- package/dist/es2015/containers/adts.js +77 -0
- package/dist/es2015/containers/captions.js +36 -0
- package/dist/es2015/containers/codec-probe/index.js +220 -0
- package/dist/es2015/containers/fmp4/writer.js +165 -0
- package/dist/es2015/containers/id3.js +72 -0
- package/dist/es2015/containers/mp4-box/index.js +209 -0
- package/dist/es2015/containers/packed-audio/index.js +67 -0
- package/dist/es2015/containers/sei.js +79 -0
- package/dist/es2015/containers/ts-transmux/demux.js +211 -0
- package/dist/es2015/containers/ts-transmux/h264.js +204 -0
- package/dist/es2015/containers/ts-transmux/index.js +37 -0
- package/dist/es2015/containers/ts-transmux/runner.js +95 -0
- package/dist/es2015/containers/ts-transmux/transmux.js +210 -0
- package/dist/es2015/containers/ts-transmux/transmux.worker.js +26 -0
- package/dist/es2015/index.js +356 -0
- package/dist/es2015/kernel/append-queue.js +148 -0
- package/dist/es2015/kernel/bus.js +134 -0
- package/dist/es2015/kernel/context.js +92 -0
- package/dist/es2015/kernel/effects.js +62 -0
- package/dist/es2015/kernel/evictor.js +67 -0
- package/dist/es2015/kernel/lifecycle.js +122 -0
- package/dist/es2015/kernel/loader.js +108 -0
- package/dist/es2015/kernel/mime.js +20 -0
- package/dist/es2015/kernel/mse.js +426 -0
- package/dist/es2015/kernel/reducer.js +1051 -0
- package/dist/es2015/kernel/rendition-select.js +263 -0
- package/dist/es2015/kernel/scheduler.js +82 -0
- package/dist/es2015/kernel/sinks/metadata-sink.js +7 -0
- package/dist/es2015/kernel/sinks/mse-sink.js +31 -0
- package/dist/es2015/kernel/sinks/text-track-sink.js +167 -0
- package/dist/es2015/kernel/timeline.js +127 -0
- package/dist/es2015/kernel/trace.js +134 -0
- package/dist/es2015/kernel/track-registry.js +47 -0
- package/dist/es2015/kernel/transport.js +242 -0
- package/dist/es2015/kernel/watchdog.js +38 -0
- package/dist/es2015/presets/dash/index.js +9 -0
- package/dist/es2015/presets/dash-drm/index.js +13 -0
- package/dist/es2015/presets/define.js +45 -0
- package/dist/es2015/presets/dual/index.js +14 -0
- package/dist/es2015/presets/dual-drm/index.js +14 -0
- package/dist/es2015/presets/dual-ts/index.js +14 -0
- package/dist/es2015/presets/dual-ts-drm/index.js +15 -0
- package/dist/es2015/presets/full/index.js +28 -0
- package/dist/es2015/presets/hls/index.js +9 -0
- package/dist/es2015/presets/hls-drm/index.js +13 -0
- package/dist/es2015/presets/hls-ts/index.js +13 -0
- package/dist/es2015/presets/hls-ts-drm/index.js +14 -0
- package/dist/es2015/presets/kernel/index.js +10 -0
- package/dist/es2015/presets/storage.js +24 -0
- package/dist/es2015/presets/tiers.js +93 -0
- package/dist/es2015/protocols/dash-cmaf/index.js +161 -0
- package/dist/es2015/protocols/dash-cmaf/parse.js +491 -0
- package/dist/es2015/protocols/dash-live/index.js +192 -0
- package/dist/es2015/protocols/hls-cmaf/index.js +168 -0
- package/dist/es2015/protocols/hls-cmaf/lexer.js +72 -0
- package/dist/es2015/protocols/hls-cmaf/parse.js +457 -0
- package/dist/es2015/protocols/hls-live/index.js +296 -0
- package/dist/es2015/protocols/live-shared.js +29 -0
- package/dist/es2015/stages/abr/index.js +126 -0
- package/dist/es2015/stages/abr-cap-size/index.js +22 -0
- package/dist/es2015/stages/abr-persist/index.js +52 -0
- package/dist/es2015/stages/aes-128/index.js +76 -0
- package/dist/es2015/stages/alt-audio/index.js +80 -0
- package/dist/es2015/stages/cmaf-timing/index.js +55 -0
- package/dist/es2015/stages/cmcd/index.js +70 -0
- package/dist/es2015/stages/codec-probe/index.js +65 -0
- package/dist/es2015/stages/codec-switch/index.js +48 -0
- package/dist/es2015/stages/content-steering/index.js +179 -0
- package/dist/es2015/stages/drm-shared.js +18 -0
- package/dist/es2015/stages/eme-cenc/index.js +46 -0
- package/dist/es2015/stages/eme-core/index.js +237 -0
- package/dist/es2015/stages/eme-fairplay/index.js +52 -0
- package/dist/es2015/stages/meta-id3/index.js +37 -0
- package/dist/es2015/stages/mp4-box/index.js +27 -0
- package/dist/es2015/stages/nal-scan/index.js +121 -0
- package/dist/es2015/stages/pdt/index.js +34 -0
- package/dist/es2015/stages/recovery/index.js +283 -0
- package/dist/es2015/stages/text-cea608/decode.js +201 -0
- package/dist/es2015/stages/text-cea608/index.js +71 -0
- package/dist/es2015/stages/text-webvtt/index.js +82 -0
- package/dist/es2015/stages/text-webvtt/parse.js +60 -0
- package/dist/es2015/stages/text-webvtt-segmented/index.js +57 -0
- package/dist/es2015/stages/thumbnails/index.js +73 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +423 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel/append-queue.d.ts +47 -0
- package/dist/kernel/append-queue.d.ts.map +1 -0
- package/dist/kernel/append-queue.js +180 -0
- package/dist/kernel/append-queue.js.map +1 -0
- package/dist/kernel/bus.d.ts +50 -0
- package/dist/kernel/bus.d.ts.map +1 -0
- package/dist/kernel/bus.js +147 -0
- package/dist/kernel/bus.js.map +1 -0
- package/dist/kernel/context.d.ts +45 -0
- package/dist/kernel/context.d.ts.map +1 -0
- package/dist/kernel/context.js +116 -0
- package/dist/kernel/context.js.map +1 -0
- package/dist/kernel/effects.d.ts +33 -0
- package/dist/kernel/effects.d.ts.map +1 -0
- package/dist/kernel/effects.js +65 -0
- package/dist/kernel/effects.js.map +1 -0
- package/dist/kernel/evictor.d.ts +46 -0
- package/dist/kernel/evictor.d.ts.map +1 -0
- package/dist/kernel/evictor.js +92 -0
- package/dist/kernel/evictor.js.map +1 -0
- package/dist/kernel/lifecycle.d.ts +41 -0
- package/dist/kernel/lifecycle.d.ts.map +1 -0
- package/dist/kernel/lifecycle.js +129 -0
- package/dist/kernel/lifecycle.js.map +1 -0
- package/dist/kernel/loader.d.ts +28 -0
- package/dist/kernel/loader.d.ts.map +1 -0
- package/dist/kernel/loader.js +126 -0
- package/dist/kernel/loader.js.map +1 -0
- package/dist/kernel/mime.d.ts +13 -0
- package/dist/kernel/mime.d.ts.map +1 -0
- package/dist/kernel/mime.js +18 -0
- package/dist/kernel/mime.js.map +1 -0
- package/dist/kernel/mse.d.ts +62 -0
- package/dist/kernel/mse.d.ts.map +1 -0
- package/dist/kernel/mse.js +490 -0
- package/dist/kernel/mse.js.map +1 -0
- package/dist/kernel/reducer.d.ts +39 -0
- package/dist/kernel/reducer.d.ts.map +1 -0
- package/dist/kernel/reducer.js +1316 -0
- package/dist/kernel/reducer.js.map +1 -0
- package/dist/kernel/rendition-select.d.ts +102 -0
- package/dist/kernel/rendition-select.d.ts.map +1 -0
- package/dist/kernel/rendition-select.js +295 -0
- package/dist/kernel/rendition-select.js.map +1 -0
- package/dist/kernel/scheduler.d.ts +57 -0
- package/dist/kernel/scheduler.d.ts.map +1 -0
- package/dist/kernel/scheduler.js +98 -0
- package/dist/kernel/scheduler.js.map +1 -0
- package/dist/kernel/sinks/metadata-sink.d.ts +7 -0
- package/dist/kernel/sinks/metadata-sink.d.ts.map +1 -0
- package/dist/kernel/sinks/metadata-sink.js +5 -0
- package/dist/kernel/sinks/metadata-sink.js.map +1 -0
- package/dist/kernel/sinks/mse-sink.d.ts +17 -0
- package/dist/kernel/sinks/mse-sink.d.ts.map +1 -0
- package/dist/kernel/sinks/mse-sink.js +20 -0
- package/dist/kernel/sinks/mse-sink.js.map +1 -0
- package/dist/kernel/sinks/text-track-sink.d.ts +45 -0
- package/dist/kernel/sinks/text-track-sink.d.ts.map +1 -0
- package/dist/kernel/sinks/text-track-sink.js +184 -0
- package/dist/kernel/sinks/text-track-sink.js.map +1 -0
- package/dist/kernel/timeline.d.ts +57 -0
- package/dist/kernel/timeline.d.ts.map +1 -0
- package/dist/kernel/timeline.js +203 -0
- package/dist/kernel/timeline.js.map +1 -0
- package/dist/kernel/trace.d.ts +42 -0
- package/dist/kernel/trace.d.ts.map +1 -0
- package/dist/kernel/trace.js +165 -0
- package/dist/kernel/trace.js.map +1 -0
- package/dist/kernel/track-registry.d.ts +22 -0
- package/dist/kernel/track-registry.d.ts.map +1 -0
- package/dist/kernel/track-registry.js +42 -0
- package/dist/kernel/track-registry.js.map +1 -0
- package/dist/kernel/transport.d.ts +90 -0
- package/dist/kernel/transport.d.ts.map +1 -0
- package/dist/kernel/transport.js +256 -0
- package/dist/kernel/transport.js.map +1 -0
- package/dist/kernel/watchdog.d.ts +35 -0
- package/dist/kernel/watchdog.d.ts.map +1 -0
- package/dist/kernel/watchdog.js +43 -0
- package/dist/kernel/watchdog.js.map +1 -0
- package/dist/presets/dash/index.d.ts +4 -0
- package/dist/presets/dash/index.d.ts.map +1 -0
- package/dist/presets/dash/index.js +8 -0
- package/dist/presets/dash/index.js.map +1 -0
- package/dist/presets/dash-drm/index.d.ts +4 -0
- package/dist/presets/dash-drm/index.d.ts.map +1 -0
- package/dist/presets/dash-drm/index.js +8 -0
- package/dist/presets/dash-drm/index.js.map +1 -0
- package/dist/presets/define.d.ts +36 -0
- package/dist/presets/define.d.ts.map +1 -0
- package/dist/presets/define.js +39 -0
- package/dist/presets/define.js.map +1 -0
- package/dist/presets/dual/index.d.ts +4 -0
- package/dist/presets/dual/index.d.ts.map +1 -0
- package/dist/presets/dual/index.js +9 -0
- package/dist/presets/dual/index.js.map +1 -0
- package/dist/presets/dual-drm/index.d.ts +4 -0
- package/dist/presets/dual-drm/index.d.ts.map +1 -0
- package/dist/presets/dual-drm/index.js +13 -0
- package/dist/presets/dual-drm/index.js.map +1 -0
- package/dist/presets/dual-ts/index.d.ts +4 -0
- package/dist/presets/dual-ts/index.d.ts.map +1 -0
- package/dist/presets/dual-ts/index.js +8 -0
- package/dist/presets/dual-ts/index.js.map +1 -0
- package/dist/presets/dual-ts-drm/index.d.ts +4 -0
- package/dist/presets/dual-ts-drm/index.d.ts.map +1 -0
- package/dist/presets/dual-ts-drm/index.js +14 -0
- package/dist/presets/dual-ts-drm/index.js.map +1 -0
- package/dist/presets/full/index.d.ts +4 -0
- package/dist/presets/full/index.d.ts.map +1 -0
- package/dist/presets/full/index.js +27 -0
- package/dist/presets/full/index.js.map +1 -0
- package/dist/presets/hls/index.d.ts +4 -0
- package/dist/presets/hls/index.d.ts.map +1 -0
- package/dist/presets/hls/index.js +8 -0
- package/dist/presets/hls/index.js.map +1 -0
- package/dist/presets/hls-drm/index.d.ts +4 -0
- package/dist/presets/hls-drm/index.d.ts.map +1 -0
- package/dist/presets/hls-drm/index.js +8 -0
- package/dist/presets/hls-drm/index.js.map +1 -0
- package/dist/presets/hls-ts/index.d.ts +4 -0
- package/dist/presets/hls-ts/index.d.ts.map +1 -0
- package/dist/presets/hls-ts/index.js +8 -0
- package/dist/presets/hls-ts/index.js.map +1 -0
- package/dist/presets/hls-ts-drm/index.d.ts +4 -0
- package/dist/presets/hls-ts-drm/index.d.ts.map +1 -0
- package/dist/presets/hls-ts-drm/index.js +13 -0
- package/dist/presets/hls-ts-drm/index.js.map +1 -0
- package/dist/presets/kernel/index.d.ts +4 -0
- package/dist/presets/kernel/index.d.ts.map +1 -0
- package/dist/presets/kernel/index.js +9 -0
- package/dist/presets/kernel/index.js.map +1 -0
- package/dist/presets/storage.d.ts +9 -0
- package/dist/presets/storage.d.ts.map +1 -0
- package/dist/presets/storage.js +24 -0
- package/dist/presets/storage.js.map +1 -0
- package/dist/presets/tiers.d.ts +22 -0
- package/dist/presets/tiers.d.ts.map +1 -0
- package/dist/presets/tiers.js +78 -0
- package/dist/presets/tiers.js.map +1 -0
- package/dist/protocols/dash-cmaf/index.d.ts +20 -0
- package/dist/protocols/dash-cmaf/index.d.ts.map +1 -0
- package/dist/protocols/dash-cmaf/index.js +176 -0
- package/dist/protocols/dash-cmaf/index.js.map +1 -0
- package/dist/protocols/dash-cmaf/parse.d.ts +24 -0
- package/dist/protocols/dash-cmaf/parse.d.ts.map +1 -0
- package/dist/protocols/dash-cmaf/parse.js +586 -0
- package/dist/protocols/dash-cmaf/parse.js.map +1 -0
- package/dist/protocols/dash-live/index.d.ts +4 -0
- package/dist/protocols/dash-live/index.d.ts.map +1 -0
- package/dist/protocols/dash-live/index.js +188 -0
- package/dist/protocols/dash-live/index.js.map +1 -0
- package/dist/protocols/hls-cmaf/index.d.ts +17 -0
- package/dist/protocols/hls-cmaf/index.d.ts.map +1 -0
- package/dist/protocols/hls-cmaf/index.js +189 -0
- package/dist/protocols/hls-cmaf/index.js.map +1 -0
- package/dist/protocols/hls-cmaf/lexer.d.ts +25 -0
- package/dist/protocols/hls-cmaf/lexer.d.ts.map +1 -0
- package/dist/protocols/hls-cmaf/lexer.js +81 -0
- package/dist/protocols/hls-cmaf/lexer.js.map +1 -0
- package/dist/protocols/hls-cmaf/parse.d.ts +57 -0
- package/dist/protocols/hls-cmaf/parse.d.ts.map +1 -0
- package/dist/protocols/hls-cmaf/parse.js +572 -0
- package/dist/protocols/hls-cmaf/parse.js.map +1 -0
- package/dist/protocols/hls-live/index.d.ts +4 -0
- package/dist/protocols/hls-live/index.d.ts.map +1 -0
- package/dist/protocols/hls-live/index.js +309 -0
- package/dist/protocols/hls-live/index.js.map +1 -0
- package/dist/protocols/live-shared.d.ts +21 -0
- package/dist/protocols/live-shared.d.ts.map +1 -0
- package/dist/protocols/live-shared.js +32 -0
- package/dist/protocols/live-shared.js.map +1 -0
- package/dist/stages/abr/index.d.ts +16 -0
- package/dist/stages/abr/index.d.ts.map +1 -0
- package/dist/stages/abr/index.js +176 -0
- package/dist/stages/abr/index.js.map +1 -0
- package/dist/stages/abr-cap-size/index.d.ts +8 -0
- package/dist/stages/abr-cap-size/index.d.ts.map +1 -0
- package/dist/stages/abr-cap-size/index.js +21 -0
- package/dist/stages/abr-cap-size/index.js.map +1 -0
- package/dist/stages/abr-persist/index.d.ts +8 -0
- package/dist/stages/abr-persist/index.d.ts.map +1 -0
- package/dist/stages/abr-persist/index.js +44 -0
- package/dist/stages/abr-persist/index.js.map +1 -0
- package/dist/stages/aes-128/index.d.ts +15 -0
- package/dist/stages/aes-128/index.d.ts.map +1 -0
- package/dist/stages/aes-128/index.js +78 -0
- package/dist/stages/aes-128/index.js.map +1 -0
- package/dist/stages/alt-audio/index.d.ts +4 -0
- package/dist/stages/alt-audio/index.d.ts.map +1 -0
- package/dist/stages/alt-audio/index.js +90 -0
- package/dist/stages/alt-audio/index.js.map +1 -0
- package/dist/stages/cmaf-timing/index.d.ts +3 -0
- package/dist/stages/cmaf-timing/index.d.ts.map +1 -0
- package/dist/stages/cmaf-timing/index.js +56 -0
- package/dist/stages/cmaf-timing/index.js.map +1 -0
- package/dist/stages/cmcd/index.d.ts +22 -0
- package/dist/stages/cmcd/index.d.ts.map +1 -0
- package/dist/stages/cmcd/index.js +92 -0
- package/dist/stages/cmcd/index.js.map +1 -0
- package/dist/stages/codec-probe/index.d.ts +9 -0
- package/dist/stages/codec-probe/index.d.ts.map +1 -0
- package/dist/stages/codec-probe/index.js +68 -0
- package/dist/stages/codec-probe/index.js.map +1 -0
- package/dist/stages/codec-switch/index.d.ts +6 -0
- package/dist/stages/codec-switch/index.d.ts.map +1 -0
- package/dist/stages/codec-switch/index.js +59 -0
- package/dist/stages/codec-switch/index.js.map +1 -0
- package/dist/stages/content-steering/index.d.ts +4 -0
- package/dist/stages/content-steering/index.d.ts.map +1 -0
- package/dist/stages/content-steering/index.js +174 -0
- package/dist/stages/content-steering/index.js.map +1 -0
- package/dist/stages/drm-shared.d.ts +46 -0
- package/dist/stages/drm-shared.d.ts.map +1 -0
- package/dist/stages/drm-shared.js +28 -0
- package/dist/stages/drm-shared.js.map +1 -0
- package/dist/stages/eme-cenc/index.d.ts +12 -0
- package/dist/stages/eme-cenc/index.d.ts.map +1 -0
- package/dist/stages/eme-cenc/index.js +53 -0
- package/dist/stages/eme-cenc/index.js.map +1 -0
- package/dist/stages/eme-core/index.d.ts +29 -0
- package/dist/stages/eme-core/index.d.ts.map +1 -0
- package/dist/stages/eme-core/index.js +244 -0
- package/dist/stages/eme-core/index.js.map +1 -0
- package/dist/stages/eme-fairplay/index.d.ts +20 -0
- package/dist/stages/eme-fairplay/index.d.ts.map +1 -0
- package/dist/stages/eme-fairplay/index.js +59 -0
- package/dist/stages/eme-fairplay/index.js.map +1 -0
- package/dist/stages/meta-id3/index.d.ts +14 -0
- package/dist/stages/meta-id3/index.d.ts.map +1 -0
- package/dist/stages/meta-id3/index.js +30 -0
- package/dist/stages/meta-id3/index.js.map +1 -0
- package/dist/stages/mp4-box/index.d.ts +3 -0
- package/dist/stages/mp4-box/index.d.ts.map +1 -0
- package/dist/stages/mp4-box/index.js +19 -0
- package/dist/stages/mp4-box/index.js.map +1 -0
- package/dist/stages/nal-scan/index.d.ts +3 -0
- package/dist/stages/nal-scan/index.d.ts.map +1 -0
- package/dist/stages/nal-scan/index.js +123 -0
- package/dist/stages/nal-scan/index.js.map +1 -0
- package/dist/stages/pdt/index.d.ts +14 -0
- package/dist/stages/pdt/index.d.ts.map +1 -0
- package/dist/stages/pdt/index.js +34 -0
- package/dist/stages/pdt/index.js.map +1 -0
- package/dist/stages/recovery/index.d.ts +16 -0
- package/dist/stages/recovery/index.d.ts.map +1 -0
- package/dist/stages/recovery/index.js +270 -0
- package/dist/stages/recovery/index.js.map +1 -0
- package/dist/stages/text-cea608/decode.d.ts +44 -0
- package/dist/stages/text-cea608/decode.d.ts.map +1 -0
- package/dist/stages/text-cea608/decode.js +225 -0
- package/dist/stages/text-cea608/decode.js.map +1 -0
- package/dist/stages/text-cea608/index.d.ts +3 -0
- package/dist/stages/text-cea608/index.d.ts.map +1 -0
- package/dist/stages/text-cea608/index.js +84 -0
- package/dist/stages/text-cea608/index.js.map +1 -0
- package/dist/stages/text-webvtt/index.d.ts +3 -0
- package/dist/stages/text-webvtt/index.d.ts.map +1 -0
- package/dist/stages/text-webvtt/index.js +82 -0
- package/dist/stages/text-webvtt/index.js.map +1 -0
- package/dist/stages/text-webvtt/parse.d.ts +19 -0
- package/dist/stages/text-webvtt/parse.d.ts.map +1 -0
- package/dist/stages/text-webvtt/parse.js +62 -0
- package/dist/stages/text-webvtt/parse.js.map +1 -0
- package/dist/stages/text-webvtt-segmented/index.d.ts +5 -0
- package/dist/stages/text-webvtt-segmented/index.d.ts.map +1 -0
- package/dist/stages/text-webvtt-segmented/index.js +63 -0
- package/dist/stages/text-webvtt-segmented/index.js.map +1 -0
- package/dist/stages/thumbnails/index.d.ts +34 -0
- package/dist/stages/thumbnails/index.d.ts.map +1 -0
- package/dist/stages/thumbnails/index.js +58 -0
- package/dist/stages/thumbnails/index.js.map +1 -0
- package/dist/types/error.d.ts +33 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +7 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/facade.d.ts +104 -0
- package/dist/types/facade.d.ts.map +1 -0
- package/dist/types/facade.js +2 -0
- package/dist/types/facade.js.map +1 -0
- package/dist/types/ir.d.ts +238 -0
- package/dist/types/ir.d.ts.map +1 -0
- package/dist/types/ir.js +7 -0
- package/dist/types/ir.js.map +1 -0
- package/dist/types/kernel.d.ts +217 -0
- package/dist/types/kernel.d.ts.map +1 -0
- package/dist/types/kernel.js +2 -0
- package/dist/types/kernel.js.map +1 -0
- package/dist/types/messages.d.ts +288 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +2 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/quality.d.ts +108 -0
- package/dist/types/quality.d.ts.map +1 -0
- package/dist/types/quality.js +2 -0
- package/dist/types/quality.js.map +1 -0
- package/dist/types/sink.d.ts +27 -0
- package/dist/types/sink.d.ts.map +1 -0
- package/dist/types/sink.js +2 -0
- package/dist/types/sink.js.map +1 -0
- package/dist/types/stage.d.ts +139 -0
- package/dist/types/stage.d.ts.map +1 -0
- package/dist/types/stage.js +2 -0
- package/dist/types/stage.js.map +1 -0
- package/package.json +132 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import _objectSpread2 from "../_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectSpread2.js";
|
|
2
|
+
//#region src/kernel/append-queue.ts
|
|
3
|
+
function isQuotaError(err) {
|
|
4
|
+
return err instanceof DOMException && err.name === "QuotaExceededError";
|
|
5
|
+
}
|
|
6
|
+
function isInvalidState(err) {
|
|
7
|
+
return err instanceof DOMException && err.name === "InvalidStateError";
|
|
8
|
+
}
|
|
9
|
+
function createAppendQueue(sbId, sb, cb) {
|
|
10
|
+
const ops = [];
|
|
11
|
+
let quotaAttempts = 0;
|
|
12
|
+
let destroyed = false;
|
|
13
|
+
let pumping = false;
|
|
14
|
+
function execute(op) {
|
|
15
|
+
try {
|
|
16
|
+
switch (op.op) {
|
|
17
|
+
case "append":
|
|
18
|
+
sb.appendBuffer(op.data);
|
|
19
|
+
quotaAttempts = 0;
|
|
20
|
+
return true;
|
|
21
|
+
case "remove": {
|
|
22
|
+
const { buffered } = sb;
|
|
23
|
+
if (buffered.length === 0 || op.start >= buffered.end(buffered.length - 1)) return false;
|
|
24
|
+
sb.remove(op.start, op.end);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
case "changeType":
|
|
28
|
+
sb.changeType(op.type);
|
|
29
|
+
return false;
|
|
30
|
+
case "setTimestampOffset":
|
|
31
|
+
sb.timestampOffset = op.offset;
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
} catch (err) {
|
|
35
|
+
if (op.op === "append" && isQuotaError(err)) {
|
|
36
|
+
ops.unshift(op);
|
|
37
|
+
quotaAttempts += 1;
|
|
38
|
+
cb.onQuota(sbId, quotaAttempts);
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (isInvalidState(err)) {
|
|
42
|
+
destroy();
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
cb.absorb({
|
|
46
|
+
type: "SOURCEBUFFER_ERROR",
|
|
47
|
+
sbId,
|
|
48
|
+
error: {
|
|
49
|
+
category: "media",
|
|
50
|
+
code: "MEDIA_APPEND_FAILED",
|
|
51
|
+
fatal: true,
|
|
52
|
+
recoverable: false,
|
|
53
|
+
context: {
|
|
54
|
+
operation: op.op,
|
|
55
|
+
message: String(err)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
function pump() {
|
|
64
|
+
if (destroyed || pumping) return;
|
|
65
|
+
pumping = true;
|
|
66
|
+
try {
|
|
67
|
+
while (!sb.updating && !destroyed) {
|
|
68
|
+
const op = ops.shift();
|
|
69
|
+
if (op === void 0) {
|
|
70
|
+
cb.onIdle(sbId);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (execute(op)) return;
|
|
74
|
+
if (op.op === "append" && ops[0] === op) return;
|
|
75
|
+
}
|
|
76
|
+
} finally {
|
|
77
|
+
pumping = false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function snapshotRanges() {
|
|
81
|
+
try {
|
|
82
|
+
const out = [];
|
|
83
|
+
const { buffered } = sb;
|
|
84
|
+
for (let i = 0; i < buffered.length; i += 1) out.push({
|
|
85
|
+
start: buffered.start(i),
|
|
86
|
+
end: buffered.end(i)
|
|
87
|
+
});
|
|
88
|
+
return out;
|
|
89
|
+
} catch (_unused) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function onUpdateEnd() {
|
|
94
|
+
if (destroyed) return;
|
|
95
|
+
const ranges = snapshotRanges();
|
|
96
|
+
cb.absorb(_objectSpread2({
|
|
97
|
+
type: "SOURCEBUFFER_UPDATEEND",
|
|
98
|
+
sbId
|
|
99
|
+
}, ranges !== void 0 ? { ranges } : {}));
|
|
100
|
+
pump();
|
|
101
|
+
}
|
|
102
|
+
function onError() {
|
|
103
|
+
if (destroyed) return;
|
|
104
|
+
cb.absorb({
|
|
105
|
+
type: "SOURCEBUFFER_ERROR",
|
|
106
|
+
sbId,
|
|
107
|
+
error: {
|
|
108
|
+
category: "media",
|
|
109
|
+
code: "MEDIA_APPEND_FAILED",
|
|
110
|
+
fatal: false,
|
|
111
|
+
recoverable: true
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function destroy() {
|
|
116
|
+
if (destroyed) return;
|
|
117
|
+
destroyed = true;
|
|
118
|
+
ops.length = 0;
|
|
119
|
+
sb.removeEventListener("updateend", onUpdateEnd);
|
|
120
|
+
sb.removeEventListener("error", onError);
|
|
121
|
+
}
|
|
122
|
+
sb.addEventListener("updateend", onUpdateEnd);
|
|
123
|
+
sb.addEventListener("error", onError);
|
|
124
|
+
return {
|
|
125
|
+
enqueue(op) {
|
|
126
|
+
if (destroyed) return;
|
|
127
|
+
ops.push(op);
|
|
128
|
+
pump();
|
|
129
|
+
},
|
|
130
|
+
enqueueFront(op) {
|
|
131
|
+
if (destroyed) return;
|
|
132
|
+
ops.unshift(op);
|
|
133
|
+
pump();
|
|
134
|
+
},
|
|
135
|
+
abort() {
|
|
136
|
+
if (destroyed) return;
|
|
137
|
+
ops.length = 0;
|
|
138
|
+
quotaAttempts = 0;
|
|
139
|
+
try {
|
|
140
|
+
sb.abort();
|
|
141
|
+
} catch (_unused2) {}
|
|
142
|
+
},
|
|
143
|
+
destroy,
|
|
144
|
+
idle: () => !destroyed && ops.length === 0 && !sb.updating
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
//#endregion
|
|
148
|
+
export { createAppendQueue };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { createTraceBuffer, digest } from "./trace.js";
|
|
2
|
+
//#region src/kernel/bus.ts
|
|
3
|
+
function createBus(options) {
|
|
4
|
+
var _options$now, _options$traceCapacit;
|
|
5
|
+
let reducer = options.reducer;
|
|
6
|
+
const now = (_options$now = options.now) !== null && _options$now !== void 0 ? _options$now : (() => globalThis.performance.now());
|
|
7
|
+
const traceBuffer = createTraceBuffer((_options$traceCapacit = options.traceCapacity) !== null && _options$traceCapacit !== void 0 ? _options$traceCapacit : 500);
|
|
8
|
+
let state = options.initial;
|
|
9
|
+
let effectSink = () => void 0;
|
|
10
|
+
const queue = [];
|
|
11
|
+
let processing = false;
|
|
12
|
+
const listeners = /* @__PURE__ */ new Map();
|
|
13
|
+
const capabilities = [];
|
|
14
|
+
const sinks = /* @__PURE__ */ new Map();
|
|
15
|
+
const parsers = /* @__PURE__ */ new Map();
|
|
16
|
+
const transformSteps = [];
|
|
17
|
+
const namespaceMap = /* @__PURE__ */ new Map();
|
|
18
|
+
function flush() {
|
|
19
|
+
if (processing) return;
|
|
20
|
+
processing = true;
|
|
21
|
+
try {
|
|
22
|
+
let msg = queue.shift();
|
|
23
|
+
while (msg !== void 0) {
|
|
24
|
+
const [next, effects] = reducer(state, msg);
|
|
25
|
+
state = next;
|
|
26
|
+
traceBuffer.push({
|
|
27
|
+
t: now(),
|
|
28
|
+
msg,
|
|
29
|
+
effects,
|
|
30
|
+
digest: digest(state)
|
|
31
|
+
});
|
|
32
|
+
effectSink(effects);
|
|
33
|
+
msg = queue.shift();
|
|
34
|
+
}
|
|
35
|
+
} finally {
|
|
36
|
+
processing = false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function enqueue(msg) {
|
|
40
|
+
queue.push(msg);
|
|
41
|
+
flush();
|
|
42
|
+
}
|
|
43
|
+
function emitEvent(event, payload) {
|
|
44
|
+
const set = listeners.get(event);
|
|
45
|
+
if (set === void 0) return;
|
|
46
|
+
for (const fn of [...set]) try {
|
|
47
|
+
fn(payload);
|
|
48
|
+
} catch (_unused) {}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
dispatch(cmd) {
|
|
52
|
+
enqueue(cmd);
|
|
53
|
+
},
|
|
54
|
+
absorb(fact) {
|
|
55
|
+
enqueue(fact);
|
|
56
|
+
},
|
|
57
|
+
route(msg) {
|
|
58
|
+
enqueue(msg);
|
|
59
|
+
},
|
|
60
|
+
getState() {
|
|
61
|
+
return state;
|
|
62
|
+
},
|
|
63
|
+
trace() {
|
|
64
|
+
return traceBuffer.snapshot();
|
|
65
|
+
},
|
|
66
|
+
setEffectSink(sink) {
|
|
67
|
+
effectSink = sink;
|
|
68
|
+
},
|
|
69
|
+
setReducer(next) {
|
|
70
|
+
reducer = next;
|
|
71
|
+
},
|
|
72
|
+
on(event, fn) {
|
|
73
|
+
let set = listeners.get(event);
|
|
74
|
+
if (set === void 0) {
|
|
75
|
+
set = /* @__PURE__ */ new Set();
|
|
76
|
+
listeners.set(event, set);
|
|
77
|
+
}
|
|
78
|
+
set.add(fn);
|
|
79
|
+
return () => {
|
|
80
|
+
set.delete(fn);
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
emitEvent,
|
|
84
|
+
registerCapability(capability) {
|
|
85
|
+
capabilities.push(capability);
|
|
86
|
+
},
|
|
87
|
+
capabilities() {
|
|
88
|
+
return [...capabilities];
|
|
89
|
+
},
|
|
90
|
+
registerSink(contentType, factory) {
|
|
91
|
+
if (sinks.has(contentType)) throw new Error(`duplicate sink for '${contentType}'`);
|
|
92
|
+
sinks.set(contentType, factory);
|
|
93
|
+
},
|
|
94
|
+
unregisterSink(contentType) {
|
|
95
|
+
sinks.delete(contentType);
|
|
96
|
+
},
|
|
97
|
+
sinkFor(contentType) {
|
|
98
|
+
return sinks.get(contentType);
|
|
99
|
+
},
|
|
100
|
+
registerParser(mimeType, parse) {
|
|
101
|
+
if (parsers.has(mimeType)) throw new Error(`duplicate parser for '${mimeType}'`);
|
|
102
|
+
parsers.set(mimeType, parse);
|
|
103
|
+
},
|
|
104
|
+
unregisterParser(mimeType) {
|
|
105
|
+
parsers.delete(mimeType);
|
|
106
|
+
},
|
|
107
|
+
parserFor(mimeType) {
|
|
108
|
+
return parsers.get(mimeType);
|
|
109
|
+
},
|
|
110
|
+
registerTransform(step) {
|
|
111
|
+
transformSteps.push(step);
|
|
112
|
+
transformSteps.sort((a, b) => a.order - b.order);
|
|
113
|
+
},
|
|
114
|
+
unregisterTransform(step) {
|
|
115
|
+
const index = transformSteps.indexOf(step);
|
|
116
|
+
if (index >= 0) transformSteps.splice(index, 1);
|
|
117
|
+
},
|
|
118
|
+
transforms() {
|
|
119
|
+
return [...transformSteps];
|
|
120
|
+
},
|
|
121
|
+
registerNamespace(name, api) {
|
|
122
|
+
if (namespaceMap.has(name)) throw new Error(`duplicate namespace '${name}'`);
|
|
123
|
+
namespaceMap.set(name, api);
|
|
124
|
+
},
|
|
125
|
+
unregisterNamespace(name) {
|
|
126
|
+
namespaceMap.delete(name);
|
|
127
|
+
},
|
|
128
|
+
namespaces() {
|
|
129
|
+
return namespaceMap;
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
export { createBus };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//#region src/kernel/context.ts
|
|
2
|
+
/**
|
|
3
|
+
* Builds one stage's context and returns the registrations' own teardown,
|
|
4
|
+
* combined by the caller with whatever the stage's install returns.
|
|
5
|
+
*/
|
|
6
|
+
function createStageContext(deps) {
|
|
7
|
+
const unsubscribes = [];
|
|
8
|
+
const namespaceNames = [];
|
|
9
|
+
const sinkTypes = [];
|
|
10
|
+
const parserTypes = [];
|
|
11
|
+
const transformSteps = [];
|
|
12
|
+
let registeredChooser = false;
|
|
13
|
+
let registeredPolicy = false;
|
|
14
|
+
let registeredProbe = false;
|
|
15
|
+
return {
|
|
16
|
+
ctx: {
|
|
17
|
+
element: deps.element,
|
|
18
|
+
registerSink(contentType, factory) {
|
|
19
|
+
deps.bus.registerSink(contentType, factory);
|
|
20
|
+
sinkTypes.push(contentType);
|
|
21
|
+
},
|
|
22
|
+
registerParser(mimeType, parse) {
|
|
23
|
+
deps.bus.registerParser(mimeType, parse);
|
|
24
|
+
parserTypes.push(mimeType);
|
|
25
|
+
},
|
|
26
|
+
registerTransform(step) {
|
|
27
|
+
deps.bus.registerTransform(step);
|
|
28
|
+
transformSteps.push(step);
|
|
29
|
+
},
|
|
30
|
+
getState() {
|
|
31
|
+
return deps.bus.getState();
|
|
32
|
+
},
|
|
33
|
+
addRequestHook(hook) {
|
|
34
|
+
const off = deps.addRequestHook(hook);
|
|
35
|
+
unsubscribes.push(off);
|
|
36
|
+
return off;
|
|
37
|
+
},
|
|
38
|
+
request(url, init) {
|
|
39
|
+
return deps.request(url, init);
|
|
40
|
+
},
|
|
41
|
+
registerNamespace(name, api) {
|
|
42
|
+
deps.bus.registerNamespace(name, api);
|
|
43
|
+
deps.facade[name] = api;
|
|
44
|
+
namespaceNames.push(name);
|
|
45
|
+
},
|
|
46
|
+
registerChooser(chooser) {
|
|
47
|
+
if (deps.hooks.abr != null) throw new Error("an abr chooser is already registered");
|
|
48
|
+
deps.hooks.abr = chooser;
|
|
49
|
+
registeredChooser = true;
|
|
50
|
+
},
|
|
51
|
+
registerSwitchPolicy(policy) {
|
|
52
|
+
if (deps.hooks.switchPolicy != null) throw new Error("a switch policy is already registered");
|
|
53
|
+
deps.hooks.switchPolicy = policy;
|
|
54
|
+
registeredPolicy = true;
|
|
55
|
+
},
|
|
56
|
+
registerTypeProbe(probe) {
|
|
57
|
+
if (deps.hooks.typeProbe != null) throw new Error("a type probe is already registered");
|
|
58
|
+
deps.hooks.typeProbe = probe;
|
|
59
|
+
registeredProbe = true;
|
|
60
|
+
},
|
|
61
|
+
reduce(slice, reducer) {
|
|
62
|
+
deps.slices.push([slice, reducer]);
|
|
63
|
+
},
|
|
64
|
+
dispatch(cmd) {
|
|
65
|
+
deps.bus.dispatch(cmd);
|
|
66
|
+
},
|
|
67
|
+
emit(event, payload) {
|
|
68
|
+
deps.bus.emitEvent(event, payload);
|
|
69
|
+
},
|
|
70
|
+
on(event, fn) {
|
|
71
|
+
const off = deps.bus.on(event, fn);
|
|
72
|
+
unsubscribes.push(off);
|
|
73
|
+
return off;
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
teardown() {
|
|
77
|
+
for (const off of unsubscribes) off();
|
|
78
|
+
for (const name of namespaceNames) {
|
|
79
|
+
delete deps.facade[name];
|
|
80
|
+
deps.bus.unregisterNamespace(name);
|
|
81
|
+
}
|
|
82
|
+
for (const contentType of sinkTypes) deps.bus.unregisterSink(contentType);
|
|
83
|
+
for (const mimeType of parserTypes) deps.bus.unregisterParser(mimeType);
|
|
84
|
+
for (const step of transformSteps) deps.bus.unregisterTransform(step);
|
|
85
|
+
if (registeredChooser) deps.hooks.abr = null;
|
|
86
|
+
if (registeredPolicy) deps.hooks.switchPolicy = null;
|
|
87
|
+
if (registeredProbe) deps.hooks.typeProbe = null;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
export { createStageContext };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
//#region src/kernel/effects.ts
|
|
2
|
+
function createEffectRunner(options = {}) {
|
|
3
|
+
var _options$onEvent;
|
|
4
|
+
const onEvent = (_options$onEvent = options.onEvent) !== null && _options$onEvent !== void 0 ? _options$onEvent : (() => void 0);
|
|
5
|
+
const handlers = /* @__PURE__ */ new Map();
|
|
6
|
+
const cancels = /* @__PURE__ */ new Map();
|
|
7
|
+
function cancel(token) {
|
|
8
|
+
const fn = cancels.get(token);
|
|
9
|
+
if (fn === void 0) return;
|
|
10
|
+
cancels.delete(token);
|
|
11
|
+
try {
|
|
12
|
+
fn();
|
|
13
|
+
} catch (err) {
|
|
14
|
+
onEvent("kernel:effect-error", {
|
|
15
|
+
kind: "abort",
|
|
16
|
+
message: String(err)
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
register(kind, handler) {
|
|
22
|
+
if (handlers.has(kind)) throw new Error(`duplicate handler for '${kind}'`);
|
|
23
|
+
handlers.set(kind, handler);
|
|
24
|
+
},
|
|
25
|
+
run(effects) {
|
|
26
|
+
for (const effect of effects) {
|
|
27
|
+
if (effect.kind === "abort") {
|
|
28
|
+
var _handlers$get;
|
|
29
|
+
cancel(effect.token);
|
|
30
|
+
(_handlers$get = handlers.get("abort")) === null || _handlers$get === void 0 || _handlers$get(effect);
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const handler = handlers.get(effect.kind);
|
|
34
|
+
if (handler === void 0) {
|
|
35
|
+
onEvent("kernel:effect-unhandled", { kind: effect.kind });
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
const cancelFn = handler(effect);
|
|
40
|
+
if (cancelFn !== void 0 && "token" in effect) cancels.set(effect.token, cancelFn);
|
|
41
|
+
} catch (err) {
|
|
42
|
+
onEvent("kernel:effect-error", {
|
|
43
|
+
kind: effect.kind,
|
|
44
|
+
message: String(err)
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
cancel,
|
|
50
|
+
forget(token) {
|
|
51
|
+
cancels.delete(token);
|
|
52
|
+
},
|
|
53
|
+
cancelAll() {
|
|
54
|
+
for (const token of [...cancels.keys()]) cancel(token);
|
|
55
|
+
},
|
|
56
|
+
pending() {
|
|
57
|
+
return [...cancels.keys()];
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//#endregion
|
|
62
|
+
export { createEffectRunner };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//#region src/kernel/evictor.ts
|
|
2
|
+
const DEFAULT_BACK_BUFFER = 30;
|
|
3
|
+
const DEFAULT_MAX_PASSES = 3;
|
|
4
|
+
/** Seconds behind the playhead that are never removed. */
|
|
5
|
+
const KEEPOUT_BEHIND_SECONDS = 1;
|
|
6
|
+
/** Seconds ahead of the playhead kept when the last pass drops forward buffer. */
|
|
7
|
+
const FORWARD_KEEP_SECONDS = 10;
|
|
8
|
+
function createEvictor(options = {}) {
|
|
9
|
+
var _options$backBufferSe, _options$maxPasses;
|
|
10
|
+
const backBuffer = (_options$backBufferSe = options.backBufferSeconds) !== null && _options$backBufferSe !== void 0 ? _options$backBufferSe : DEFAULT_BACK_BUFFER;
|
|
11
|
+
const maxPasses = (_options$maxPasses = options.maxPasses) !== null && _options$maxPasses !== void 0 ? _options$maxPasses : DEFAULT_MAX_PASSES;
|
|
12
|
+
let streaming = true;
|
|
13
|
+
function clamp(_sb, start, end, currentTime) {
|
|
14
|
+
if (end === Number.POSITIVE_INFINITY) return {
|
|
15
|
+
start,
|
|
16
|
+
end
|
|
17
|
+
};
|
|
18
|
+
const clampedEnd = Math.min(end, currentTime - KEEPOUT_BEHIND_SECONDS);
|
|
19
|
+
if (clampedEnd <= start) return null;
|
|
20
|
+
return {
|
|
21
|
+
start,
|
|
22
|
+
end: clampedEnd
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function overlapsBuffered(sb, entry) {
|
|
26
|
+
const { buffered } = sb;
|
|
27
|
+
for (let i = 0; i < buffered.length; i += 1) if (entry.start < buffered.end(i) && entry.end > buffered.start(i)) return true;
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
clamp,
|
|
32
|
+
plan(sb, currentTime, attempt) {
|
|
33
|
+
if (attempt > maxPasses) return null;
|
|
34
|
+
const entries = [];
|
|
35
|
+
const behind = clamp(sb, 0, currentTime - (attempt === 1 ? backBuffer : attempt === 2 ? backBuffer / 4 : KEEPOUT_BEHIND_SECONDS), currentTime);
|
|
36
|
+
if (behind !== null) entries.push(behind);
|
|
37
|
+
if (attempt >= 3) {
|
|
38
|
+
const aheadStart = currentTime + FORWARD_KEEP_SECONDS;
|
|
39
|
+
const { buffered } = sb;
|
|
40
|
+
const bufferedEnd = buffered.length > 0 ? buffered.end(buffered.length - 1) : 0;
|
|
41
|
+
if (bufferedEnd > aheadStart) entries.push({
|
|
42
|
+
start: aheadStart,
|
|
43
|
+
end: bufferedEnd
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return entries.filter((entry) => overlapsBuffered(sb, entry));
|
|
47
|
+
},
|
|
48
|
+
observeManaged(ms, onTrim) {
|
|
49
|
+
const onStart = () => {
|
|
50
|
+
streaming = true;
|
|
51
|
+
};
|
|
52
|
+
const onEnd = () => {
|
|
53
|
+
streaming = false;
|
|
54
|
+
onTrim();
|
|
55
|
+
};
|
|
56
|
+
ms.addEventListener("startstreaming", onStart);
|
|
57
|
+
ms.addEventListener("endstreaming", onEnd);
|
|
58
|
+
return () => {
|
|
59
|
+
ms.removeEventListener("startstreaming", onStart);
|
|
60
|
+
ms.removeEventListener("endstreaming", onEnd);
|
|
61
|
+
};
|
|
62
|
+
},
|
|
63
|
+
streaming: () => streaming
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { createEvictor };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { createStageContext } from "./context.js";
|
|
2
|
+
import { createReducer } from "./reducer.js";
|
|
3
|
+
import { createPlaybackWatchdog } from "./watchdog.js";
|
|
4
|
+
//#region src/kernel/lifecycle.ts
|
|
5
|
+
function snapshot(ranges) {
|
|
6
|
+
const out = [];
|
|
7
|
+
for (let i = 0; i < ranges.length; i += 1) out.push({
|
|
8
|
+
start: ranges.start(i),
|
|
9
|
+
end: ranges.end(i)
|
|
10
|
+
});
|
|
11
|
+
return out;
|
|
12
|
+
}
|
|
13
|
+
function createLifecycle(deps) {
|
|
14
|
+
let element = null;
|
|
15
|
+
let teardowns = [];
|
|
16
|
+
let stopWatchdog = null;
|
|
17
|
+
const elementListeners = [];
|
|
18
|
+
function listen(el, type, fn) {
|
|
19
|
+
el.addEventListener(type, fn);
|
|
20
|
+
elementListeners.push({
|
|
21
|
+
type,
|
|
22
|
+
fn
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function attach(el) {
|
|
26
|
+
if (element !== null) throw Object.assign(/* @__PURE__ */ new Error("this engine is already attached"), {
|
|
27
|
+
category: "config",
|
|
28
|
+
code: "CONFIG_ELEMENT_OCCUPIED"
|
|
29
|
+
});
|
|
30
|
+
const slices = [];
|
|
31
|
+
const stageTeardowns = [];
|
|
32
|
+
for (const stage of deps.composition.order) {
|
|
33
|
+
const { ctx, teardown } = createStageContext({
|
|
34
|
+
bus: deps.bus,
|
|
35
|
+
element: el,
|
|
36
|
+
facade: deps.facade,
|
|
37
|
+
slices,
|
|
38
|
+
hooks: deps.hooks,
|
|
39
|
+
addRequestHook: deps.addRequestHook,
|
|
40
|
+
request: deps.request
|
|
41
|
+
});
|
|
42
|
+
const returned = stage.install(ctx);
|
|
43
|
+
if (typeof returned === "function") stageTeardowns.push(returned);
|
|
44
|
+
stageTeardowns.push(teardown);
|
|
45
|
+
}
|
|
46
|
+
deps.bus.setReducer(createReducer(slices, deps.config, deps.hooks));
|
|
47
|
+
teardowns = stageTeardowns;
|
|
48
|
+
deps.bus.dispatch({
|
|
49
|
+
type: "ATTACH",
|
|
50
|
+
element: el
|
|
51
|
+
});
|
|
52
|
+
try {
|
|
53
|
+
deps.mse.attach(el);
|
|
54
|
+
} catch (err) {
|
|
55
|
+
for (const fn of [...teardowns].reverse()) fn();
|
|
56
|
+
teardowns = [];
|
|
57
|
+
deps.bus.dispatch({ type: "DETACH" });
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
60
|
+
element = el;
|
|
61
|
+
const absorb = (fact) => deps.bus.absorb(fact);
|
|
62
|
+
listen(el, "timeupdate", () => {
|
|
63
|
+
absorb({
|
|
64
|
+
type: "TIME_UPDATE",
|
|
65
|
+
currentTime: el.currentTime,
|
|
66
|
+
buffered: snapshot(el.buffered),
|
|
67
|
+
wallClock: Date.now() / 1e3
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
listen(el, "ended", () => {
|
|
71
|
+
absorb({
|
|
72
|
+
type: "ENDED",
|
|
73
|
+
at: el.currentTime
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
listen(el, "seeking", () => {
|
|
77
|
+
absorb({
|
|
78
|
+
type: "SEEKING",
|
|
79
|
+
to: el.currentTime
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
listen(el, "seeked", () => {
|
|
83
|
+
absorb({
|
|
84
|
+
type: "SEEKED",
|
|
85
|
+
at: el.currentTime
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
listen(el, "waiting", () => {
|
|
89
|
+
absorb({
|
|
90
|
+
type: "STALLED",
|
|
91
|
+
at: el.currentTime
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
listen(el, "error", () => {
|
|
95
|
+
var _deps$onMediaError;
|
|
96
|
+
(_deps$onMediaError = deps.onMediaError) === null || _deps$onMediaError === void 0 || _deps$onMediaError.call(deps, el);
|
|
97
|
+
});
|
|
98
|
+
stopWatchdog = createPlaybackWatchdog(el, absorb);
|
|
99
|
+
deps.register(el);
|
|
100
|
+
}
|
|
101
|
+
function detach() {
|
|
102
|
+
if (element === null) return;
|
|
103
|
+
const el = element;
|
|
104
|
+
deps.bus.dispatch({ type: "DETACH" });
|
|
105
|
+
stopWatchdog === null || stopWatchdog === void 0 || stopWatchdog();
|
|
106
|
+
stopWatchdog = null;
|
|
107
|
+
for (const fn of [...teardowns].reverse()) fn();
|
|
108
|
+
teardowns = [];
|
|
109
|
+
deps.mse.detach();
|
|
110
|
+
for (const { type, fn } of elementListeners) el.removeEventListener(type, fn);
|
|
111
|
+
elementListeners.length = 0;
|
|
112
|
+
deps.unregister(el);
|
|
113
|
+
element = null;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
attach,
|
|
117
|
+
detach,
|
|
118
|
+
element: () => element
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//#endregion
|
|
122
|
+
export { createLifecycle };
|