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,203 @@
|
|
|
1
|
+
function isIndexed(addressing) {
|
|
2
|
+
return !Array.isArray(addressing) && addressing.kind === 'indexed';
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* An on-demand addressing whose index box has not been fetched yet: it
|
|
6
|
+
* carries no resolvable segments. Once the adapter parses the index it swaps
|
|
7
|
+
* this for an explicit array, so every consumer treats it as empty until then.
|
|
8
|
+
*/
|
|
9
|
+
function isUnresolved(addressing) {
|
|
10
|
+
return !Array.isArray(addressing) && addressing.kind === 'sidx';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Epochs for one rendition timeline across periods. A period boundary opens
|
|
14
|
+
* an epoch; inside a period, every segment flagged `discontinuity` opens
|
|
15
|
+
* another. One code path for both.
|
|
16
|
+
*/
|
|
17
|
+
export function buildEpochs(parts) {
|
|
18
|
+
const epochs = [];
|
|
19
|
+
for (const { period, rendition } of parts) {
|
|
20
|
+
const addressing = rendition.segments;
|
|
21
|
+
if (isIndexed(addressing)) {
|
|
22
|
+
const pto = (addressing.presentationTimeOffset ?? 0) / addressing.timescale;
|
|
23
|
+
epochs.push({
|
|
24
|
+
periodId: period.id,
|
|
25
|
+
firstSeq: addressing.startSeq,
|
|
26
|
+
presentationStart: period.start,
|
|
27
|
+
mediaStart: pto,
|
|
28
|
+
});
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (isUnresolved(addressing))
|
|
32
|
+
continue;
|
|
33
|
+
let open = false;
|
|
34
|
+
for (const segment of addressing) {
|
|
35
|
+
if (!open || segment.discontinuity === true) {
|
|
36
|
+
// A period-opening list that begins mid-timeline is a window into
|
|
37
|
+
// a longer stream (a live sliding window): media time is assumed
|
|
38
|
+
// continuous, so the offset is zero. A discontinuity restarts the
|
|
39
|
+
// media clock. tfdt reconciliation corrects both guesses with the
|
|
40
|
+
// bytes' truth once wired.
|
|
41
|
+
const mediaStart = open ? 0 : segment.start - period.start;
|
|
42
|
+
epochs.push({
|
|
43
|
+
periodId: period.id,
|
|
44
|
+
firstSeq: segment.seq,
|
|
45
|
+
presentationStart: segment.start,
|
|
46
|
+
mediaStart,
|
|
47
|
+
});
|
|
48
|
+
open = true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return epochs;
|
|
53
|
+
}
|
|
54
|
+
/** The epoch a sequence number belongs to, or null before the first epoch. */
|
|
55
|
+
export function epochForSeq(epochs, seq) {
|
|
56
|
+
let match = null;
|
|
57
|
+
for (const epoch of epochs) {
|
|
58
|
+
if (epoch.firstSeq <= seq)
|
|
59
|
+
match = epoch;
|
|
60
|
+
}
|
|
61
|
+
return match;
|
|
62
|
+
}
|
|
63
|
+
/** The timestampOffset an append from this epoch requires. */
|
|
64
|
+
export function timestampOffsetFor(epoch) {
|
|
65
|
+
return epoch.presentationStart - epoch.mediaStart;
|
|
66
|
+
}
|
|
67
|
+
export function mediaToPresentation(mediaTime, epoch) {
|
|
68
|
+
return mediaTime - epoch.mediaStart + epoch.presentationStart;
|
|
69
|
+
}
|
|
70
|
+
export function presentationToMedia(presentationTime, epoch) {
|
|
71
|
+
return presentationTime - epoch.presentationStart + epoch.mediaStart;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Corrects an epoch with a real baseMediaDecodeTime once mp4-box can read
|
|
75
|
+
* tfdt (Stage 07). Interface only for now: manifests promise timing, the
|
|
76
|
+
* bytes tell the truth.
|
|
77
|
+
*/
|
|
78
|
+
export function reconcileTfdt(epoch, baseMediaDecodeTime, timescale) {
|
|
79
|
+
return { ...epoch, mediaStart: baseMediaDecodeTime / timescale };
|
|
80
|
+
}
|
|
81
|
+
/** Materializes one segment from an indexed form. Null outside the window. */
|
|
82
|
+
export function segmentAt(addressing, seq, periodStart = 0) {
|
|
83
|
+
if (!isIndexed(addressing)) {
|
|
84
|
+
if (isUnresolved(addressing))
|
|
85
|
+
return null;
|
|
86
|
+
return addressing.find((segment) => segment.seq === seq) ?? null;
|
|
87
|
+
}
|
|
88
|
+
if (seq < addressing.startSeq)
|
|
89
|
+
return null;
|
|
90
|
+
if (addressing.endSeq !== null && seq > addressing.endSeq)
|
|
91
|
+
return null;
|
|
92
|
+
const { timescale } = addressing;
|
|
93
|
+
const pto = addressing.presentationTimeOffset ?? 0;
|
|
94
|
+
let startUnits;
|
|
95
|
+
let durationUnits;
|
|
96
|
+
if (addressing.timeline !== null) {
|
|
97
|
+
let cursor = addressing.startSeq;
|
|
98
|
+
let found = null;
|
|
99
|
+
for (const run of addressing.timeline) {
|
|
100
|
+
if (seq < cursor + run.count) {
|
|
101
|
+
found = { start: run.start + (seq - cursor) * run.duration, duration: run.duration };
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
cursor += run.count;
|
|
105
|
+
}
|
|
106
|
+
if (found === null)
|
|
107
|
+
return null;
|
|
108
|
+
startUnits = found.start;
|
|
109
|
+
durationUnits = found.duration;
|
|
110
|
+
}
|
|
111
|
+
else if (addressing.segmentDuration !== null) {
|
|
112
|
+
// Media time starts at the offset: the period's first segment carries
|
|
113
|
+
// it, so $Time$ expands with it and the subtraction below lands at the
|
|
114
|
+
// period start, not before it.
|
|
115
|
+
durationUnits = addressing.segmentDuration;
|
|
116
|
+
startUnits = pto + (seq - addressing.startSeq) * durationUnits;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
// $Number$ and $Time$, with the ISO/IEC 23009-1 %0<width>d format tag,
|
|
122
|
+
// then $$ unescaped last.
|
|
123
|
+
const url = addressing.urlTemplate
|
|
124
|
+
.replace(/\$(Number|Time)(?:%0(\d+)d)?\$/g, (_, name, width) => {
|
|
125
|
+
const text = String(name === 'Number' ? seq : startUnits);
|
|
126
|
+
return width === undefined ? text : text.padStart(Number(width), '0');
|
|
127
|
+
})
|
|
128
|
+
.replaceAll('$$', '$');
|
|
129
|
+
return {
|
|
130
|
+
seq,
|
|
131
|
+
start: periodStart + (startUnits - pto) / timescale,
|
|
132
|
+
duration: durationUnits / timescale,
|
|
133
|
+
url,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/** The first segment whose interval contains or follows `time`, or null past the end. */
|
|
137
|
+
export function segmentAtTime(addressing, time, periodStart = 0) {
|
|
138
|
+
if (!isIndexed(addressing)) {
|
|
139
|
+
if (isUnresolved(addressing))
|
|
140
|
+
return null;
|
|
141
|
+
for (const segment of addressing) {
|
|
142
|
+
if (segment.start + segment.duration > time)
|
|
143
|
+
return segment;
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
// Constant-duration templates index directly; timelines scan their runs.
|
|
148
|
+
if (addressing.timeline === null && addressing.segmentDuration !== null) {
|
|
149
|
+
const dur = addressing.segmentDuration / addressing.timescale;
|
|
150
|
+
const relative = Math.max(0, time - periodStart);
|
|
151
|
+
const seq = addressing.startSeq + Math.floor(relative / dur);
|
|
152
|
+
return segmentAt(addressing, Math.max(seq, addressing.startSeq), periodStart);
|
|
153
|
+
}
|
|
154
|
+
let seq = addressing.startSeq;
|
|
155
|
+
const last = addressing.endSeq;
|
|
156
|
+
while (last === null || seq <= last) {
|
|
157
|
+
const segment = segmentAt(addressing, seq, periodStart);
|
|
158
|
+
if (segment === null)
|
|
159
|
+
return null;
|
|
160
|
+
if (segment.start + segment.duration > time)
|
|
161
|
+
return segment;
|
|
162
|
+
seq += 1;
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The seekable window. VOD: zero to the announced or derivable duration.
|
|
168
|
+
* Live: the sliding window ending at the supplied edge; the kernel never
|
|
169
|
+
* computes the edge itself.
|
|
170
|
+
*/
|
|
171
|
+
export function seekableWindow(presentation, liveEdge) {
|
|
172
|
+
if (!presentation.isLive) {
|
|
173
|
+
if (presentation.duration !== undefined)
|
|
174
|
+
return { start: 0, end: presentation.duration };
|
|
175
|
+
let end = 0;
|
|
176
|
+
for (const period of presentation.periods) {
|
|
177
|
+
if (period.duration !== undefined)
|
|
178
|
+
end = Math.max(end, period.start + period.duration);
|
|
179
|
+
}
|
|
180
|
+
return { start: 0, end };
|
|
181
|
+
}
|
|
182
|
+
const edge = liveEdge ?? 0;
|
|
183
|
+
let windowStart = edge;
|
|
184
|
+
for (const period of presentation.periods) {
|
|
185
|
+
for (const track of period.tracks) {
|
|
186
|
+
for (const rendition of track.renditions) {
|
|
187
|
+
const addressing = rendition.segments;
|
|
188
|
+
if (isIndexed(addressing)) {
|
|
189
|
+
const first = segmentAt(addressing, addressing.startSeq, period.start);
|
|
190
|
+
if (first !== null)
|
|
191
|
+
windowStart = Math.min(windowStart, first.start);
|
|
192
|
+
}
|
|
193
|
+
else if (!isUnresolved(addressing)) {
|
|
194
|
+
const first = addressing[0];
|
|
195
|
+
if (first !== undefined)
|
|
196
|
+
windowStart = Math.min(windowStart, first.start);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return { start: Math.min(windowStart, edge), end: edge };
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/kernel/timeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The diagnostic ring buffer and its tooling. Because the reducer is pure, a
|
|
3
|
+
* recorded trace replays into a fresh reducer and must reproduce the same
|
|
4
|
+
* effects. That turns a production stall into a deterministic regression
|
|
5
|
+
* test.
|
|
6
|
+
*/
|
|
7
|
+
import type { KernelState, Reducer, TraceEntry } from '../types/kernel.js';
|
|
8
|
+
import type { Effect } from '../types/messages.js';
|
|
9
|
+
export declare const DEFAULT_TRACE_CAPACITY = 500;
|
|
10
|
+
export interface TraceBuffer {
|
|
11
|
+
push(entry: TraceEntry): void;
|
|
12
|
+
/** Entries oldest first. */
|
|
13
|
+
snapshot(): readonly TraceEntry[];
|
|
14
|
+
readonly capacity: number;
|
|
15
|
+
}
|
|
16
|
+
/** Fixed capacity, overwriting. Roughly 200 bytes of code for the whole payoff. */
|
|
17
|
+
export declare function createTraceBuffer(capacity?: number): TraceBuffer;
|
|
18
|
+
/**
|
|
19
|
+
* A cheap, stable hash of the state slices that matter for divergence
|
|
20
|
+
* detection. Stable across runs: it depends only on the state.
|
|
21
|
+
*/
|
|
22
|
+
export declare function digest(state: KernelState): string;
|
|
23
|
+
/**
|
|
24
|
+
* JSON for a bug report. Byte payloads are reduced to their length and
|
|
25
|
+
* non-plain objects to their constructor name; the shape of the
|
|
26
|
+
* interleaving is what matters, not the media bytes.
|
|
27
|
+
*/
|
|
28
|
+
export declare function exportTrace(entries: readonly TraceEntry[]): string;
|
|
29
|
+
export interface ReplayResult {
|
|
30
|
+
readonly ok: boolean;
|
|
31
|
+
/** Index of the first diverging entry, when not ok. */
|
|
32
|
+
readonly divergedAt?: number;
|
|
33
|
+
readonly expected?: readonly Effect[];
|
|
34
|
+
readonly actual?: readonly Effect[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Feeds a recorded message sequence into a fresh reducer and checks that the
|
|
38
|
+
* same effects come out. The reducer must be built with the same slices as
|
|
39
|
+
* the one that produced the trace.
|
|
40
|
+
*/
|
|
41
|
+
export declare function replay(entries: readonly TraceEntry[], reducer: Reducer, initial: KernelState): ReplayResult;
|
|
42
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/kernel/trace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,4BAA4B;IAC5B,QAAQ,IAAI,SAAS,UAAU,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAA+B,GAAG,WAAW,CAiBxF;AAiDD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAkBjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAgBlE;AA8BD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,WAAW,GACnB,YAAY,CAYd"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
export const DEFAULT_TRACE_CAPACITY = 500;
|
|
2
|
+
/** Fixed capacity, overwriting. Roughly 200 bytes of code for the whole payoff. */
|
|
3
|
+
export function createTraceBuffer(capacity = DEFAULT_TRACE_CAPACITY) {
|
|
4
|
+
const entries = [];
|
|
5
|
+
let head = 0;
|
|
6
|
+
return {
|
|
7
|
+
capacity,
|
|
8
|
+
push(entry) {
|
|
9
|
+
if (entries.length < capacity) {
|
|
10
|
+
entries.push(entry);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
entries[head] = entry;
|
|
14
|
+
head = (head + 1) % capacity;
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
snapshot() {
|
|
18
|
+
return [...entries.slice(head), ...entries.slice(0, head)];
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function isPlainObject(value) {
|
|
23
|
+
const proto = Object.getPrototypeOf(value);
|
|
24
|
+
return proto === Object.prototype || proto === null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Deterministic serialization for hashing: sorted object keys, sorted Map
|
|
28
|
+
* entries, opaque values tagged by constructor name. Not a wire format.
|
|
29
|
+
*/
|
|
30
|
+
function stableStringify(value) {
|
|
31
|
+
if (value === null || typeof value === 'number' || typeof value === 'boolean') {
|
|
32
|
+
return String(value);
|
|
33
|
+
}
|
|
34
|
+
if (typeof value === 'string')
|
|
35
|
+
return JSON.stringify(value);
|
|
36
|
+
if (value === undefined)
|
|
37
|
+
return 'undefined';
|
|
38
|
+
if (typeof value === 'function')
|
|
39
|
+
return '[function]';
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
return `[${value.map(stableStringify).join(',')}]`;
|
|
42
|
+
}
|
|
43
|
+
if (value instanceof Map) {
|
|
44
|
+
const parts = [...value.entries()]
|
|
45
|
+
.map(([k, v]) => `${stableStringify(k)}:${stableStringify(v)}`)
|
|
46
|
+
.sort();
|
|
47
|
+
return `Map{${parts.join(',')}}`;
|
|
48
|
+
}
|
|
49
|
+
if (value instanceof ArrayBuffer)
|
|
50
|
+
return `ArrayBuffer(${value.byteLength})`;
|
|
51
|
+
if (ArrayBuffer.isView(value))
|
|
52
|
+
return `${value.constructor.name}(${value.byteLength})`;
|
|
53
|
+
if (typeof value === 'object') {
|
|
54
|
+
if (!isPlainObject(value))
|
|
55
|
+
return `[${value.constructor?.name ?? 'opaque'}]`;
|
|
56
|
+
const parts = Object.keys(value)
|
|
57
|
+
.sort()
|
|
58
|
+
.map((k) => `${JSON.stringify(k)}:${stableStringify(value[k])}`);
|
|
59
|
+
return `{${parts.join(',')}}`;
|
|
60
|
+
}
|
|
61
|
+
return String(value);
|
|
62
|
+
}
|
|
63
|
+
/** 32-bit FNV-1a over a string, as fixed-width hex. */
|
|
64
|
+
function fnv1a(input) {
|
|
65
|
+
let hash = 0x811c9dc5;
|
|
66
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
67
|
+
hash ^= input.charCodeAt(i);
|
|
68
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
69
|
+
}
|
|
70
|
+
return hash.toString(16).padStart(8, '0');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A cheap, stable hash of the state slices that matter for divergence
|
|
74
|
+
* detection. Stable across runs: it depends only on the state.
|
|
75
|
+
*/
|
|
76
|
+
export function digest(state) {
|
|
77
|
+
return fnv1a(stableStringify({
|
|
78
|
+
phase: state.lifecycle.phase,
|
|
79
|
+
presentation: state.presentation?.id ?? null,
|
|
80
|
+
inflight: [...state.scheduling.inflight.keys()].sort(),
|
|
81
|
+
bufferGoal: state.scheduling.bufferGoal,
|
|
82
|
+
tokenSeq: state.scheduling.tokenSeq,
|
|
83
|
+
buffers: state.buffers,
|
|
84
|
+
tracks: state.tracks.active,
|
|
85
|
+
quality: {
|
|
86
|
+
pinned: state.quality.pinned,
|
|
87
|
+
active: state.quality.active,
|
|
88
|
+
constraints: [...state.quality.constraints.keys()].sort(),
|
|
89
|
+
},
|
|
90
|
+
currentTime: state.playback.currentTime,
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* JSON for a bug report. Byte payloads are reduced to their length and
|
|
95
|
+
* non-plain objects to their constructor name; the shape of the
|
|
96
|
+
* interleaving is what matters, not the media bytes.
|
|
97
|
+
*/
|
|
98
|
+
export function exportTrace(entries) {
|
|
99
|
+
return JSON.stringify(entries, (_key, value) => {
|
|
100
|
+
if (value instanceof ArrayBuffer)
|
|
101
|
+
return { $bytes: value.byteLength };
|
|
102
|
+
if (ArrayBuffer.isView(value))
|
|
103
|
+
return { $bytes: value.byteLength };
|
|
104
|
+
if (value instanceof Map)
|
|
105
|
+
return Object.fromEntries(value);
|
|
106
|
+
if (typeof value === 'function')
|
|
107
|
+
return { $opaque: 'function' };
|
|
108
|
+
if (typeof value === 'object' &&
|
|
109
|
+
value !== null &&
|
|
110
|
+
!Array.isArray(value) &&
|
|
111
|
+
!isPlainObject(value)) {
|
|
112
|
+
return { $opaque: value.constructor?.name ?? 'object' };
|
|
113
|
+
}
|
|
114
|
+
return value;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function buffersEqual(a, b) {
|
|
118
|
+
if (a.byteLength !== b.byteLength)
|
|
119
|
+
return false;
|
|
120
|
+
const va = new Uint8Array(a);
|
|
121
|
+
const vb = new Uint8Array(b);
|
|
122
|
+
for (let i = 0; i < va.length; i += 1) {
|
|
123
|
+
if (va[i] !== vb[i])
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
/** Structural equality over effect payloads: plain data plus ArrayBuffer. */
|
|
129
|
+
function deepEqual(a, b) {
|
|
130
|
+
if (Object.is(a, b))
|
|
131
|
+
return true;
|
|
132
|
+
if (a instanceof ArrayBuffer && b instanceof ArrayBuffer)
|
|
133
|
+
return buffersEqual(a, b);
|
|
134
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
135
|
+
return a.length === b.length && a.every((item, i) => deepEqual(item, b[i]));
|
|
136
|
+
}
|
|
137
|
+
if (typeof a === 'object' && typeof b === 'object' && a !== null && b !== null) {
|
|
138
|
+
const ka = Object.keys(a);
|
|
139
|
+
const kb = Object.keys(b);
|
|
140
|
+
if (ka.length !== kb.length)
|
|
141
|
+
return false;
|
|
142
|
+
return ka.every((k) => deepEqual(a[k], b[k]));
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Feeds a recorded message sequence into a fresh reducer and checks that the
|
|
148
|
+
* same effects come out. The reducer must be built with the same slices as
|
|
149
|
+
* the one that produced the trace.
|
|
150
|
+
*/
|
|
151
|
+
export function replay(entries, reducer, initial) {
|
|
152
|
+
let state = initial;
|
|
153
|
+
for (let i = 0; i < entries.length; i += 1) {
|
|
154
|
+
const entry = entries[i];
|
|
155
|
+
if (entry === undefined)
|
|
156
|
+
continue;
|
|
157
|
+
const [next, effects] = reducer(state, entry.msg);
|
|
158
|
+
if (!deepEqual(effects, entry.effects)) {
|
|
159
|
+
return { ok: false, divergedAt: i, expected: entry.effects, actual: effects };
|
|
160
|
+
}
|
|
161
|
+
state = next;
|
|
162
|
+
}
|
|
163
|
+
return { ok: true };
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/kernel/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic track enumeration and selection, the engine.tracks surface.
|
|
3
|
+
* Tracks whose content type has no registered sink are enumerated but not
|
|
4
|
+
* selectable: that is how a deployment without text-webvtt degrades
|
|
5
|
+
* gracefully instead of crashing.
|
|
6
|
+
*/
|
|
7
|
+
import type { TracksApi } from '../types/facade.js';
|
|
8
|
+
import type { ContentType, TrackId } from '../types/ir.js';
|
|
9
|
+
import type { KernelState } from '../types/kernel.js';
|
|
10
|
+
import type { Command } from '../types/messages.js';
|
|
11
|
+
export interface TrackRegistryDeps {
|
|
12
|
+
getState(): KernelState;
|
|
13
|
+
dispatch(cmd: Command): void;
|
|
14
|
+
emitEvent(event: string, payload: unknown): void;
|
|
15
|
+
/** Whether a sink is registered for the content type, from the bus registry. */
|
|
16
|
+
hasSink(contentType: ContentType): boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface TrackRegistry extends TracksApi {
|
|
19
|
+
selectable(trackId: TrackId): boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function createTrackRegistry(deps: TrackRegistryDeps): TrackRegistry;
|
|
22
|
+
//# sourceMappingURL=track-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track-registry.d.ts","sourceRoot":"","sources":["../../src/kernel/track-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAS,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,WAAW,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACjD,gFAAgF;IAChF,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;CACvC;AAOD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,aAAa,CAmC1E"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function allTracks(state) {
|
|
2
|
+
if (state.presentation === null)
|
|
3
|
+
return [];
|
|
4
|
+
return state.presentation.periods.flatMap((period) => period.tracks);
|
|
5
|
+
}
|
|
6
|
+
export function createTrackRegistry(deps) {
|
|
7
|
+
function find(trackId) {
|
|
8
|
+
return allTracks(deps.getState()).find((track) => track.id === trackId) ?? null;
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
get available() {
|
|
12
|
+
return allTracks(deps.getState());
|
|
13
|
+
},
|
|
14
|
+
active(contentType) {
|
|
15
|
+
const activeId = deps.getState().tracks.active.get(contentType);
|
|
16
|
+
if (activeId === undefined)
|
|
17
|
+
return null;
|
|
18
|
+
return find(activeId);
|
|
19
|
+
},
|
|
20
|
+
selectable(trackId) {
|
|
21
|
+
const track = find(trackId);
|
|
22
|
+
return track !== null && deps.hasSink(track.contentType);
|
|
23
|
+
},
|
|
24
|
+
select(trackId) {
|
|
25
|
+
const track = find(trackId);
|
|
26
|
+
if (track !== null && !deps.hasSink(track.contentType)) {
|
|
27
|
+
// Selecting a track nothing can render is refused up front; the
|
|
28
|
+
// reducer cannot see the sink registry, so the check lives here.
|
|
29
|
+
deps.emitEvent('command:rejected', {
|
|
30
|
+
command: 'SELECT_TRACK',
|
|
31
|
+
reason: `no sink registered for '${track.contentType}'`,
|
|
32
|
+
});
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
deps.dispatch({ type: 'SELECT_TRACK', trackId });
|
|
36
|
+
},
|
|
37
|
+
deselect(contentType) {
|
|
38
|
+
deps.dispatch({ type: 'DESELECT_TRACK', contentType });
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=track-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track-registry.js","sourceRoot":"","sources":["../../src/kernel/track-registry.ts"],"names":[],"mappings":"AAuBA,SAAS,SAAS,CAAC,KAAkB;IACnC,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC3C,OAAO,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAuB;IACzD,SAAS,IAAI,CAAC,OAAgB;QAC5B,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;IAClF,CAAC;IAED,OAAO;QACL,IAAI,SAAS;YACX,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,WAAW;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAChE,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QACD,UAAU,CAAC,OAAO;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,CAAC,OAAO;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvD,gEAAgE;gBAChE,iEAAiE;gBACjE,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;oBACjC,OAAO,EAAE,cAAc;oBACvB,MAAM,EAAE,2BAA2B,KAAK,CAAC,WAAW,GAAG;iBACxD,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,QAAQ,CAAC,WAAW;YAClB,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fetch wrapper. Executes fetch effects, feeds results back as facts,
|
|
3
|
+
* and owns per-token AbortControllers so the abort effect can target any
|
|
4
|
+
* request, including one stalled in a timeout or waiting out a backoff.
|
|
5
|
+
*
|
|
6
|
+
* Extension points, used by cmcd, content-steering, and the playground's
|
|
7
|
+
* fault injector:
|
|
8
|
+
* - request hooks mutate a draft (url, headers, timeout) before dispatch
|
|
9
|
+
* - response hooks observe the outcome (status, rtt, size) after it
|
|
10
|
+
* - fetchImpl replaces the network entirely, which is how tests and the
|
|
11
|
+
* fault injector produce deterministic bad networks
|
|
12
|
+
*
|
|
13
|
+
* Example:
|
|
14
|
+
* transport.addRequestHook((req) => {
|
|
15
|
+
* req.headers['CMCD-Request'] = `sid=${sessionId}`;
|
|
16
|
+
* });
|
|
17
|
+
*/
|
|
18
|
+
import type { InflightRequest } from '../types/kernel.js';
|
|
19
|
+
import type { Fact } from '../types/messages.js';
|
|
20
|
+
import type { EffectRunner } from './effects.js';
|
|
21
|
+
/** Retry policy as data, not code. */
|
|
22
|
+
export interface RetryPolicy {
|
|
23
|
+
/** Total attempts including the first. */
|
|
24
|
+
readonly maxAttempts: number;
|
|
25
|
+
readonly baseDelayMs: number;
|
|
26
|
+
readonly factor: number;
|
|
27
|
+
readonly maxDelayMs: number;
|
|
28
|
+
/** HTTP statuses worth retrying. Network errors and timeouts always retry. */
|
|
29
|
+
readonly retryStatuses: readonly number[];
|
|
30
|
+
}
|
|
31
|
+
export declare const DEFAULT_RETRY_POLICY: RetryPolicy;
|
|
32
|
+
/** Backoff delay before retry `attempt` (1 = first retry). Exported so tests pin the schedule. */
|
|
33
|
+
export declare function backoffDelayMs(policy: RetryPolicy, attempt: number): number;
|
|
34
|
+
/** The mutable draft request hooks receive before dispatch. */
|
|
35
|
+
export interface TransportRequestDraft {
|
|
36
|
+
url: string;
|
|
37
|
+
headers: Record<string, string>;
|
|
38
|
+
timeoutMs: number | null;
|
|
39
|
+
readonly token: string;
|
|
40
|
+
readonly attempt: number;
|
|
41
|
+
}
|
|
42
|
+
export interface TransportResponseInfo {
|
|
43
|
+
readonly token: string;
|
|
44
|
+
readonly url: string;
|
|
45
|
+
readonly status: number | null;
|
|
46
|
+
readonly rtt: number;
|
|
47
|
+
readonly size: number;
|
|
48
|
+
readonly outcome: 'success' | 'failure' | 'timeout';
|
|
49
|
+
readonly attempt: number;
|
|
50
|
+
}
|
|
51
|
+
export type RequestHook = (req: TransportRequestDraft) => void;
|
|
52
|
+
export type ResponseHook = (res: TransportResponseInfo) => void;
|
|
53
|
+
export type FetchImpl = (url: string, init: RequestInit) => Promise<Response>;
|
|
54
|
+
export interface TransportOptions {
|
|
55
|
+
readonly absorb: (fact: Fact) => void;
|
|
56
|
+
/** Correlates a token with its request record from kernel state. */
|
|
57
|
+
readonly inflight: (token: string) => InflightRequest | undefined;
|
|
58
|
+
readonly retry?: Partial<RetryPolicy>;
|
|
59
|
+
/** Default timeout when the fetch effect carries none. Null disables. */
|
|
60
|
+
readonly defaultTimeoutMs?: number | null;
|
|
61
|
+
readonly fetchImpl?: FetchImpl;
|
|
62
|
+
readonly now?: () => number;
|
|
63
|
+
/**
|
|
64
|
+
* Decides from the response Content-Type whether the manifest request's
|
|
65
|
+
* body is worth reading. Returning false fails the request as an
|
|
66
|
+
* unsupported manifest before the body downloads, so an audio file
|
|
67
|
+
* handed to `load` costs one round of headers, not the whole file. Only
|
|
68
|
+
* the request on the `manifest` track is checked; segments never are.
|
|
69
|
+
*/
|
|
70
|
+
readonly acceptManifestType?: (contentType: string) => boolean;
|
|
71
|
+
}
|
|
72
|
+
export interface Transport {
|
|
73
|
+
registerHandlers(runner: EffectRunner): void;
|
|
74
|
+
addRequestHook(hook: RequestHook): () => void;
|
|
75
|
+
addResponseHook(hook: ResponseHook): () => void;
|
|
76
|
+
/**
|
|
77
|
+
* A one-off request through the same request hooks and fetchImpl as
|
|
78
|
+
* segments, for license and steering fetches. Not correlated to a token
|
|
79
|
+
* or the reducer; the caller awaits the Response directly.
|
|
80
|
+
*/
|
|
81
|
+
request(url: string, init: {
|
|
82
|
+
method?: string;
|
|
83
|
+
headers?: Record<string, string>;
|
|
84
|
+
body?: ArrayBuffer | Uint8Array | string;
|
|
85
|
+
}): Promise<Response>;
|
|
86
|
+
/** Tokens with live network activity or a pending retry. For tests and diagnostics. */
|
|
87
|
+
pending(): readonly string[];
|
|
88
|
+
}
|
|
89
|
+
export declare function createTransport(options: TransportOptions): Transport;
|
|
90
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/kernel/transport.ts"],"names":[],"mappings":"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"}
|