@blockcast/mmt-container 0.1.0 → 0.3.0-main.d9354616fdf2
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/README.md +524 -0
- package/dist/.build-stamp +0 -0
- package/dist/__tests__/test-utils.d.ts +71 -0
- package/dist/__tests__/test-utils.d.ts.map +1 -0
- package/dist/align.d.ts +152 -0
- package/dist/align.d.ts.map +1 -0
- package/dist/align.js +88 -0
- package/dist/align.js.map +7 -0
- package/dist/audio-init-parser.d.ts +66 -0
- package/dist/audio-init-parser.d.ts.map +1 -0
- package/dist/audio-init-parser.js +118 -0
- package/dist/audio-init-parser.js.map +7 -0
- package/dist/audio-ring-buffer.d.ts +50 -0
- package/dist/audio-ring-buffer.d.ts.map +1 -0
- package/dist/audio-ring-buffer.js +80 -0
- package/dist/audio-ring-buffer.js.map +7 -0
- package/dist/authored-timing.d.ts +32 -0
- package/dist/authored-timing.d.ts.map +1 -0
- package/dist/authored-timing.js +32 -0
- package/dist/authored-timing.js.map +7 -0
- package/dist/block-policy.d.ts +314 -0
- package/dist/block-policy.d.ts.map +1 -0
- package/dist/block-policy.js +466 -0
- package/dist/block-policy.js.map +7 -0
- package/dist/browser-runtime.js +26549 -0
- package/dist/browser-runtime.js.map +7 -0
- package/dist/carp-catalog.d.ts +429 -0
- package/dist/carp-catalog.d.ts.map +1 -0
- package/dist/carp-catalog.js +985 -0
- package/dist/carp-catalog.js.map +7 -0
- package/dist/catalog-fec-params.d.ts +275 -0
- package/dist/catalog-fec-params.d.ts.map +1 -0
- package/dist/catalog-fec-params.js +702 -0
- package/dist/catalog-fec-params.js.map +7 -0
- package/dist/catalog-network-source.d.ts +42 -0
- package/dist/catalog-network-source.d.ts.map +1 -0
- package/dist/catalog-network-source.js +47 -0
- package/dist/catalog-network-source.js.map +7 -0
- package/dist/catalog-validator.d.ts +18 -0
- package/dist/catalog-validator.d.ts.map +1 -0
- package/dist/catalog-validator.js +7747 -0
- package/dist/catalog-validator.js.map +7 -0
- package/dist/cmaf-block-assembler.d.ts +285 -0
- package/dist/cmaf-block-assembler.d.ts.map +1 -0
- package/dist/cmaf-block-assembler.js +1966 -0
- package/dist/cmaf-block-assembler.js.map +7 -0
- package/dist/cmaf-group-batcher.d.ts +38 -0
- package/dist/cmaf-group-batcher.d.ts.map +1 -0
- package/dist/cmaf-group-batcher.js +176 -0
- package/dist/cmaf-group-batcher.js.map +7 -0
- package/dist/cmcd-producer.d.ts +104 -0
- package/dist/cmcd-producer.d.ts.map +1 -0
- package/dist/cmcd-producer.js +183 -0
- package/dist/cmcd-producer.js.map +7 -0
- package/dist/codec-utils.d.ts +384 -0
- package/dist/codec-utils.d.ts.map +1 -0
- package/dist/codec-utils.js +1546 -0
- package/dist/codec-utils.js.map +7 -0
- package/dist/conceal-timeline.d.ts +146 -0
- package/dist/conceal-timeline.d.ts.map +1 -0
- package/dist/conceal-timeline.js +137 -0
- package/dist/conceal-timeline.js.map +7 -0
- package/dist/delivery-gap.d.ts +75 -0
- package/dist/delivery-gap.d.ts.map +1 -0
- package/dist/delivery-gap.js +88 -0
- package/dist/delivery-gap.js.map +7 -0
- package/dist/duplicate-ledger.d.ts +197 -0
- package/dist/duplicate-ledger.d.ts.map +1 -0
- package/dist/duplicate-ledger.js +226 -0
- package/dist/duplicate-ledger.js.map +7 -0
- package/dist/fec-codec.d.ts +32 -0
- package/dist/fec-codec.d.ts.map +1 -0
- package/dist/fec-codec.js +47 -0
- package/dist/fec-codec.js.map +7 -0
- package/dist/fec-manager.d.ts +583 -0
- package/dist/fec-manager.d.ts.map +1 -0
- package/dist/fec-manager.js +3899 -0
- package/dist/fec-manager.js.map +7 -0
- package/dist/fec-starvation-detector.d.ts +59 -0
- package/dist/fec-starvation-detector.d.ts.map +1 -0
- package/dist/fec-starvation-detector.js +60 -0
- package/dist/fec-starvation-detector.js.map +7 -0
- package/dist/fec-state.d.ts +131 -0
- package/dist/fec-state.d.ts.map +1 -0
- package/dist/fec-state.js +87 -0
- package/dist/fec-state.js.map +7 -0
- package/dist/fec-worker-setup.d.ts +94 -0
- package/dist/fec-worker-setup.d.ts.map +1 -0
- package/dist/fec-worker-setup.js +673 -0
- package/dist/fec-worker-setup.js.map +7 -0
- package/dist/fmp4-completion.d.ts +30 -0
- package/dist/fmp4-completion.d.ts.map +1 -0
- package/dist/fmp4-completion.js +21 -0
- package/dist/fmp4-completion.js.map +7 -0
- package/dist/fmp4-reader.d.ts +37 -0
- package/dist/fmp4-reader.d.ts.map +1 -0
- package/dist/fmp4-reader.js +100 -0
- package/dist/fmp4-reader.js.map +7 -0
- package/dist/index.d.ts +44 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +460 -14
- package/dist/index.js.map +7 -1
- package/dist/iso-block-locator.d.ts +118 -0
- package/dist/iso-block-locator.d.ts.map +1 -0
- package/dist/iso-block-locator.js +289 -0
- package/dist/iso-block-locator.js.map +7 -0
- package/dist/iso-bmff-timing.d.ts +78 -0
- package/dist/iso-bmff-timing.d.ts.map +1 -0
- package/dist/iso-bmff-timing.js +593 -0
- package/dist/iso-bmff-timing.js.map +7 -0
- package/dist/loc.d.ts +70 -75
- package/dist/loc.d.ts.map +1 -1
- package/dist/loc.js +106 -192
- package/dist/loc.js.map +7 -1
- package/dist/manifest-auth-plan.d.ts +30 -0
- package/dist/manifest-auth-plan.d.ts.map +1 -0
- package/dist/manifest-auth-plan.js +1266 -0
- package/dist/manifest-auth-plan.js.map +7 -0
- package/dist/media-router.d.ts +262 -0
- package/dist/media-router.d.ts.map +1 -0
- package/dist/media-router.js +584 -0
- package/dist/media-router.js.map +7 -0
- package/dist/mfu-reassembler.d.ts +313 -9
- package/dist/mfu-reassembler.d.ts.map +1 -1
- package/dist/mfu-reassembler.js +3051 -285
- package/dist/mfu-reassembler.js.map +7 -1
- package/dist/mfu-reassembly-policy.d.ts +24 -0
- package/dist/mfu-reassembly-policy.d.ts.map +1 -0
- package/dist/mfu-reassembly-policy.js +99 -0
- package/dist/mfu-reassembly-policy.js.map +7 -0
- package/dist/mmtp-container-parser.d.ts +568 -0
- package/dist/mmtp-container-parser.d.ts.map +1 -0
- package/dist/mmtp-container-parser.js +6580 -0
- package/dist/mmtp-container-parser.js.map +7 -0
- package/dist/mmtp-container-parser.no-modules.js +9616 -0
- package/dist/mmtp-container-parser.no-modules.js.map +7 -0
- package/dist/mmtp-decode-pipeline.d.ts +138 -0
- package/dist/mmtp-decode-pipeline.d.ts.map +1 -0
- package/dist/mmtp-decode-pipeline.js +6814 -0
- package/dist/mmtp-decode-pipeline.js.map +7 -0
- package/dist/mmtp-router.d.ts +679 -0
- package/dist/mmtp-router.d.ts.map +1 -0
- package/dist/mmtp-router.js +11278 -0
- package/dist/mmtp-router.js.map +7 -0
- package/dist/mmtp-to-cmaf.d.ts +187 -0
- package/dist/mmtp-to-cmaf.d.ts.map +1 -0
- package/dist/mmtp-to-cmaf.js +716 -0
- package/dist/mmtp-to-cmaf.js.map +7 -0
- package/dist/multicast-auth-catalog.d.ts +115 -0
- package/dist/multicast-auth-catalog.d.ts.map +1 -0
- package/dist/multicast-auth-catalog.js +202 -0
- package/dist/multicast-auth-catalog.js.map +7 -0
- package/dist/multicast-input.d.ts +141 -0
- package/dist/multicast-input.d.ts.map +1 -0
- package/dist/multicast-input.js +390 -0
- package/dist/multicast-input.js.map +7 -0
- package/dist/multicast-manager.d.ts +669 -0
- package/dist/multicast-manager.d.ts.map +1 -0
- package/dist/multicast-manager.js +19101 -0
- package/dist/multicast-manager.js.map +7 -0
- package/dist/multicast-transport.d.ts +271 -0
- package/dist/multicast-transport.d.ts.map +1 -0
- package/dist/multicast-transport.js +2264 -0
- package/dist/multicast-transport.js.map +7 -0
- package/dist/multicast-unwrap.d.ts +57 -0
- package/dist/multicast-unwrap.d.ts.map +1 -0
- package/dist/multicast-unwrap.js +418 -0
- package/dist/multicast-unwrap.js.map +7 -0
- package/dist/no-modules.d.ts +10 -0
- package/dist/no-modules.d.ts.map +1 -0
- package/dist/no-modules.js +9491 -0
- package/dist/no-modules.js.map +7 -0
- package/dist/phase14-catalog-override.d.ts +126 -0
- package/dist/phase14-catalog-override.d.ts.map +1 -0
- package/dist/phase14-catalog-override.js +155 -0
- package/dist/phase14-catalog-override.js.map +7 -0
- package/dist/repair-fetch.d.ts +270 -0
- package/dist/repair-fetch.d.ts.map +1 -0
- package/dist/repair-fetch.js +381 -0
- package/dist/repair-fetch.js.map +7 -0
- package/dist/repair-layers.d.ts +158 -0
- package/dist/repair-layers.d.ts.map +1 -0
- package/dist/repair-layers.js +344 -0
- package/dist/repair-layers.js.map +7 -0
- package/dist/sample-combiner.d.ts +212 -0
- package/dist/sample-combiner.d.ts.map +1 -0
- package/dist/sample-combiner.js +595 -0
- package/dist/sample-combiner.js.map +7 -0
- package/dist/signaling.d.ts +29 -0
- package/dist/signaling.d.ts.map +1 -0
- package/dist/signaling.js +572 -0
- package/dist/signaling.js.map +7 -0
- package/dist/source-auth.d.ts +2 -0
- package/dist/source-auth.d.ts.map +1 -0
- package/dist/source-auth.js +1209 -0
- package/dist/source-auth.js.map +7 -0
- package/dist/switching-set-alignment.d.ts +61 -0
- package/dist/switching-set-alignment.d.ts.map +1 -0
- package/dist/switching-set-alignment.js +70 -0
- package/dist/switching-set-alignment.js.map +7 -0
- package/dist/timestamp-codec.d.ts +34 -0
- package/dist/timestamp-codec.d.ts.map +1 -0
- package/dist/timestamp-codec.js +473 -0
- package/dist/timestamp-codec.js.map +7 -0
- package/dist/track-pipeline-setup.d.ts +83 -0
- package/dist/track-pipeline-setup.d.ts.map +1 -0
- package/dist/track-pipeline-setup.js +291 -0
- package/dist/track-pipeline-setup.js.map +7 -0
- package/dist/track-pipeline.d.ts +121 -0
- package/dist/track-pipeline.d.ts.map +1 -0
- package/dist/track-pipeline.js +209 -0
- package/dist/track-pipeline.js.map +7 -0
- package/dist/track-session.d.ts +414 -0
- package/dist/track-session.d.ts.map +1 -0
- package/dist/track-session.js +754 -0
- package/dist/track-session.js.map +7 -0
- package/dist/transport-pool.d.ts +69 -0
- package/dist/transport-pool.d.ts.map +1 -0
- package/dist/transport-pool.js +74 -0
- package/dist/transport-pool.js.map +7 -0
- package/dist/wasm-mfu-reassembler.d.ts +97 -0
- package/dist/wasm-mfu-reassembler.d.ts.map +1 -0
- package/dist/wasm-mfu-reassembler.js +2133 -0
- package/dist/wasm-mfu-reassembler.js.map +7 -0
- package/dist/wasm-mmtp-container-parser.d.ts +10 -0
- package/dist/wasm-mmtp-container-parser.d.ts.map +1 -0
- package/dist/wasm-mmtp-container-parser.js +6834 -0
- package/dist/wasm-mmtp-container-parser.js.map +7 -0
- package/node_modules/@blockcast/fec-worker/README.md +223 -0
- package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +38 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.js +78 -0
- package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +93 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +346 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +380 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +11 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +14 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +859 -0
- package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +7 -0
- package/node_modules/@blockcast/fec-worker/dist/index.d.ts +10 -0
- package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/index.js +8 -0
- package/node_modules/@blockcast/fec-worker/dist/index.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +20 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +370 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +7 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +104 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +181 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +194 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +62 -0
- package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +9 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +1 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.js +13 -0
- package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +1 -0
- package/node_modules/@blockcast/fec-worker/package.json +59 -0
- package/node_modules/@blockcast/fec-worker/src/block-order.ts +93 -0
- package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +392 -0
- package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +399 -0
- package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +1502 -0
- package/node_modules/@blockcast/fec-worker/src/index.ts +35 -0
- package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +589 -0
- package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +222 -0
- package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +209 -0
- package/node_modules/@blockcast/fec-worker/src/transfer.ts +12 -0
- package/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
- package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
- package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
- package/node_modules/@blockcast/mmt-base/README.md +134 -0
- package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +55 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +128 -0
- package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts +7 -0
- package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/index.js +7 -0
- package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +292 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js +612 -0
- package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
- package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
- package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
- package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
- package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
- package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
- package/node_modules/@blockcast/mmt-base/package.json +49 -0
- package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +145 -0
- package/node_modules/@blockcast/mmt-base/src/index.ts +6 -0
- package/node_modules/@blockcast/mmt-base/src/mmtp.ts +892 -0
- package/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
- package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
- package/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
- package/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
- package/node_modules/@blockcast/mmt-fec/README.md +271 -0
- package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +82 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +296 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +106 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +288 -0
- package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +46 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +96 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +33 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +57 -0
- package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +205 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +240 -0
- package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +28 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.js +28 -0
- package/node_modules/@blockcast/mmt-fec/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +20 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +28 -0
- package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +258 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.js +382 -0
- package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +41 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +81 -0
- package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts +82 -0
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.js +170 -0
- package/node_modules/@blockcast/mmt-fec/dist/repair-group.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +134 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +55 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +128 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +7 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +7 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +292 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +612 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +49 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +145 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +6 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +892 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
- package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
- package/node_modules/@blockcast/mmt-fec/package.json +79 -0
- package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +371 -0
- package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +439 -0
- package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +127 -0
- package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +68 -0
- package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +310 -0
- package/node_modules/@blockcast/mmt-fec/src/index.ts +94 -0
- package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +34 -0
- package/node_modules/@blockcast/mmt-fec/src/oti.ts +463 -0
- package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +101 -0
- package/node_modules/@blockcast/mmt-fec/src/repair-group.ts +195 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +28 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +128 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +4 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +4 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +37 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +179 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +99 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +492 -0
- package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +1 -0
- package/node_modules/@blockcast/mmt-manifest-verify/package.json +45 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +171 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +3 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +230 -0
- package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +669 -0
- package/node_modules/@noble/hashes/LICENSE +21 -0
- package/node_modules/@noble/hashes/README.md +521 -0
- package/node_modules/@noble/hashes/_assert.d.ts +17 -0
- package/node_modules/@noble/hashes/_assert.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_assert.js +18 -0
- package/node_modules/@noble/hashes/_assert.js.map +1 -0
- package/node_modules/@noble/hashes/_blake.d.ts +14 -0
- package/node_modules/@noble/hashes/_blake.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_blake.js +50 -0
- package/node_modules/@noble/hashes/_blake.js.map +1 -0
- package/node_modules/@noble/hashes/_md.d.ts +51 -0
- package/node_modules/@noble/hashes/_md.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_md.js +162 -0
- package/node_modules/@noble/hashes/_md.js.map +1 -0
- package/node_modules/@noble/hashes/_u64.d.ts +55 -0
- package/node_modules/@noble/hashes/_u64.d.ts.map +1 -0
- package/node_modules/@noble/hashes/_u64.js +90 -0
- package/node_modules/@noble/hashes/_u64.js.map +1 -0
- package/node_modules/@noble/hashes/argon2.d.ts +32 -0
- package/node_modules/@noble/hashes/argon2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/argon2.js +401 -0
- package/node_modules/@noble/hashes/argon2.js.map +1 -0
- package/node_modules/@noble/hashes/blake1.d.ts +106 -0
- package/node_modules/@noble/hashes/blake1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake1.js +459 -0
- package/node_modules/@noble/hashes/blake1.js.map +1 -0
- package/node_modules/@noble/hashes/blake2.d.ts +116 -0
- package/node_modules/@noble/hashes/blake2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake2.js +420 -0
- package/node_modules/@noble/hashes/blake2.js.map +1 -0
- package/node_modules/@noble/hashes/blake2b.d.ts +11 -0
- package/node_modules/@noble/hashes/blake2b.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake2b.js +14 -0
- package/node_modules/@noble/hashes/blake2b.js.map +1 -0
- package/node_modules/@noble/hashes/blake2s.d.ts +20 -0
- package/node_modules/@noble/hashes/blake2s.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake2s.js +24 -0
- package/node_modules/@noble/hashes/blake2s.js.map +1 -0
- package/node_modules/@noble/hashes/blake3.d.ts +54 -0
- package/node_modules/@noble/hashes/blake3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/blake3.js +255 -0
- package/node_modules/@noble/hashes/blake3.js.map +1 -0
- package/node_modules/@noble/hashes/crypto.d.ts +2 -0
- package/node_modules/@noble/hashes/crypto.d.ts.map +1 -0
- package/node_modules/@noble/hashes/crypto.js +5 -0
- package/node_modules/@noble/hashes/crypto.js.map +1 -0
- package/node_modules/@noble/hashes/cryptoNode.d.ts +2 -0
- package/node_modules/@noble/hashes/cryptoNode.d.ts.map +1 -0
- package/node_modules/@noble/hashes/cryptoNode.js +18 -0
- package/node_modules/@noble/hashes/cryptoNode.js.map +1 -0
- package/node_modules/@noble/hashes/eskdf.d.ts +47 -0
- package/node_modules/@noble/hashes/eskdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/eskdf.js +166 -0
- package/node_modules/@noble/hashes/eskdf.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_assert.d.ts +17 -0
- package/node_modules/@noble/hashes/esm/_assert.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_assert.js +15 -0
- package/node_modules/@noble/hashes/esm/_assert.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_blake.d.ts +14 -0
- package/node_modules/@noble/hashes/esm/_blake.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_blake.js +45 -0
- package/node_modules/@noble/hashes/esm/_blake.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_md.d.ts +51 -0
- package/node_modules/@noble/hashes/esm/_md.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_md.js +155 -0
- package/node_modules/@noble/hashes/esm/_md.js.map +1 -0
- package/node_modules/@noble/hashes/esm/_u64.d.ts +55 -0
- package/node_modules/@noble/hashes/esm/_u64.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/_u64.js +67 -0
- package/node_modules/@noble/hashes/esm/_u64.js.map +1 -0
- package/node_modules/@noble/hashes/esm/argon2.d.ts +32 -0
- package/node_modules/@noble/hashes/esm/argon2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/argon2.js +392 -0
- package/node_modules/@noble/hashes/esm/argon2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake1.d.ts +106 -0
- package/node_modules/@noble/hashes/esm/blake1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake1.js +452 -0
- package/node_modules/@noble/hashes/esm/blake1.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2.d.ts +116 -0
- package/node_modules/@noble/hashes/esm/blake2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2.js +413 -0
- package/node_modules/@noble/hashes/esm/blake2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2b.d.ts +11 -0
- package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2b.js +11 -0
- package/node_modules/@noble/hashes/esm/blake2b.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2s.d.ts +20 -0
- package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake2s.js +21 -0
- package/node_modules/@noble/hashes/esm/blake2s.js.map +1 -0
- package/node_modules/@noble/hashes/esm/blake3.d.ts +54 -0
- package/node_modules/@noble/hashes/esm/blake3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/blake3.js +251 -0
- package/node_modules/@noble/hashes/esm/blake3.js.map +1 -0
- package/node_modules/@noble/hashes/esm/crypto.d.ts +2 -0
- package/node_modules/@noble/hashes/esm/crypto.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/crypto.js +2 -0
- package/node_modules/@noble/hashes/esm/crypto.js.map +1 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +2 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.js +15 -0
- package/node_modules/@noble/hashes/esm/cryptoNode.js.map +1 -0
- package/node_modules/@noble/hashes/esm/eskdf.d.ts +47 -0
- package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/eskdf.js +160 -0
- package/node_modules/@noble/hashes/esm/eskdf.js.map +1 -0
- package/node_modules/@noble/hashes/esm/hkdf.d.ts +36 -0
- package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/hkdf.js +82 -0
- package/node_modules/@noble/hashes/esm/hkdf.js.map +1 -0
- package/node_modules/@noble/hashes/esm/hmac.d.ts +35 -0
- package/node_modules/@noble/hashes/esm/hmac.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/hmac.js +86 -0
- package/node_modules/@noble/hashes/esm/hmac.js.map +1 -0
- package/node_modules/@noble/hashes/esm/index.d.ts +2 -0
- package/node_modules/@noble/hashes/esm/index.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/index.js +33 -0
- package/node_modules/@noble/hashes/esm/index.js.map +1 -0
- package/node_modules/@noble/hashes/esm/legacy.d.ts +71 -0
- package/node_modules/@noble/hashes/esm/legacy.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/legacy.js +281 -0
- package/node_modules/@noble/hashes/esm/legacy.js.map +1 -0
- package/node_modules/@noble/hashes/esm/package.json +10 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +23 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.js +97 -0
- package/node_modules/@noble/hashes/esm/pbkdf2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/ripemd160.d.ts +13 -0
- package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/ripemd160.js +13 -0
- package/node_modules/@noble/hashes/esm/ripemd160.js.map +1 -0
- package/node_modules/@noble/hashes/esm/scrypt.d.ts +34 -0
- package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/scrypt.js +228 -0
- package/node_modules/@noble/hashes/esm/scrypt.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha1.d.ts +11 -0
- package/node_modules/@noble/hashes/esm/sha1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha1.js +11 -0
- package/node_modules/@noble/hashes/esm/sha1.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha2.d.ts +159 -0
- package/node_modules/@noble/hashes/esm/sha2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha2.js +375 -0
- package/node_modules/@noble/hashes/esm/sha2.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha256.d.ts +20 -0
- package/node_modules/@noble/hashes/esm/sha256.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha256.js +20 -0
- package/node_modules/@noble/hashes/esm/sha256.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +142 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.js +393 -0
- package/node_modules/@noble/hashes/esm/sha3-addons.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3.d.ts +53 -0
- package/node_modules/@noble/hashes/esm/sha3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha3.js +234 -0
- package/node_modules/@noble/hashes/esm/sha3.js.map +1 -0
- package/node_modules/@noble/hashes/esm/sha512.d.ts +26 -0
- package/node_modules/@noble/hashes/esm/sha512.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/sha512.js +26 -0
- package/node_modules/@noble/hashes/esm/sha512.js.map +1 -0
- package/node_modules/@noble/hashes/esm/utils.d.ts +161 -0
- package/node_modules/@noble/hashes/esm/utils.d.ts.map +1 -0
- package/node_modules/@noble/hashes/esm/utils.js +281 -0
- package/node_modules/@noble/hashes/esm/utils.js.map +1 -0
- package/node_modules/@noble/hashes/hkdf.d.ts +36 -0
- package/node_modules/@noble/hashes/hkdf.d.ts.map +1 -0
- package/node_modules/@noble/hashes/hkdf.js +88 -0
- package/node_modules/@noble/hashes/hkdf.js.map +1 -0
- package/node_modules/@noble/hashes/hmac.d.ts +35 -0
- package/node_modules/@noble/hashes/hmac.d.ts.map +1 -0
- package/node_modules/@noble/hashes/hmac.js +91 -0
- package/node_modules/@noble/hashes/hmac.js.map +1 -0
- package/node_modules/@noble/hashes/index.d.ts +1 -0
- package/node_modules/@noble/hashes/index.d.ts.map +1 -0
- package/node_modules/@noble/hashes/index.js +33 -0
- package/node_modules/@noble/hashes/index.js.map +1 -0
- package/node_modules/@noble/hashes/legacy.d.ts +71 -0
- package/node_modules/@noble/hashes/legacy.d.ts.map +1 -0
- package/node_modules/@noble/hashes/legacy.js +287 -0
- package/node_modules/@noble/hashes/legacy.js.map +1 -0
- package/node_modules/@noble/hashes/package.json +266 -0
- package/node_modules/@noble/hashes/pbkdf2.d.ts +23 -0
- package/node_modules/@noble/hashes/pbkdf2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/pbkdf2.js +101 -0
- package/node_modules/@noble/hashes/pbkdf2.js.map +1 -0
- package/node_modules/@noble/hashes/ripemd160.d.ts +13 -0
- package/node_modules/@noble/hashes/ripemd160.d.ts.map +1 -0
- package/node_modules/@noble/hashes/ripemd160.js +16 -0
- package/node_modules/@noble/hashes/ripemd160.js.map +1 -0
- package/node_modules/@noble/hashes/scrypt.d.ts +34 -0
- package/node_modules/@noble/hashes/scrypt.d.ts.map +1 -0
- package/node_modules/@noble/hashes/scrypt.js +232 -0
- package/node_modules/@noble/hashes/scrypt.js.map +1 -0
- package/node_modules/@noble/hashes/sha1.d.ts +11 -0
- package/node_modules/@noble/hashes/sha1.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha1.js +14 -0
- package/node_modules/@noble/hashes/sha1.js.map +1 -0
- package/node_modules/@noble/hashes/sha2.d.ts +159 -0
- package/node_modules/@noble/hashes/sha2.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha2.js +384 -0
- package/node_modules/@noble/hashes/sha2.js.map +1 -0
- package/node_modules/@noble/hashes/sha256.d.ts +20 -0
- package/node_modules/@noble/hashes/sha256.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha256.js +23 -0
- package/node_modules/@noble/hashes/sha256.js.map +1 -0
- package/node_modules/@noble/hashes/sha3-addons.d.ts +142 -0
- package/node_modules/@noble/hashes/sha3-addons.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha3-addons.js +402 -0
- package/node_modules/@noble/hashes/sha3-addons.js.map +1 -0
- package/node_modules/@noble/hashes/sha3.d.ts +53 -0
- package/node_modules/@noble/hashes/sha3.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha3.js +239 -0
- package/node_modules/@noble/hashes/sha3.js.map +1 -0
- package/node_modules/@noble/hashes/sha512.d.ts +26 -0
- package/node_modules/@noble/hashes/sha512.d.ts.map +1 -0
- package/node_modules/@noble/hashes/sha512.js +29 -0
- package/node_modules/@noble/hashes/sha512.js.map +1 -0
- package/node_modules/@noble/hashes/src/_assert.ts +22 -0
- package/node_modules/@noble/hashes/src/_blake.ts +50 -0
- package/node_modules/@noble/hashes/src/_md.ts +176 -0
- package/node_modules/@noble/hashes/src/_u64.ts +91 -0
- package/node_modules/@noble/hashes/src/argon2.ts +497 -0
- package/node_modules/@noble/hashes/src/blake1.ts +534 -0
- package/node_modules/@noble/hashes/src/blake2.ts +486 -0
- package/node_modules/@noble/hashes/src/blake2b.ts +10 -0
- package/node_modules/@noble/hashes/src/blake2s.ts +20 -0
- package/node_modules/@noble/hashes/src/blake3.ts +272 -0
- package/node_modules/@noble/hashes/src/crypto.ts +9 -0
- package/node_modules/@noble/hashes/src/cryptoNode.ts +15 -0
- package/node_modules/@noble/hashes/src/eskdf.ts +187 -0
- package/node_modules/@noble/hashes/src/hkdf.ts +88 -0
- package/node_modules/@noble/hashes/src/hmac.ts +94 -0
- package/node_modules/@noble/hashes/src/index.ts +31 -0
- package/node_modules/@noble/hashes/src/legacy.ts +293 -0
- package/node_modules/@noble/hashes/src/pbkdf2.ts +122 -0
- package/node_modules/@noble/hashes/src/ripemd160.ts +12 -0
- package/node_modules/@noble/hashes/src/scrypt.ts +257 -0
- package/node_modules/@noble/hashes/src/sha1.ts +10 -0
- package/node_modules/@noble/hashes/src/sha2.ts +402 -0
- package/node_modules/@noble/hashes/src/sha256.ts +24 -0
- package/node_modules/@noble/hashes/src/sha3-addons.ts +499 -0
- package/node_modules/@noble/hashes/src/sha3.ts +258 -0
- package/node_modules/@noble/hashes/src/sha512.ts +34 -0
- package/node_modules/@noble/hashes/src/utils.ts +395 -0
- package/node_modules/@noble/hashes/utils.d.ts +161 -0
- package/node_modules/@noble/hashes/utils.d.ts.map +1 -0
- package/node_modules/@noble/hashes/utils.js +313 -0
- package/node_modules/@noble/hashes/utils.js.map +1 -0
- package/package.json +179 -8
- package/schemas/catalog.schema.json +357 -0
- package/src/align.ts +239 -0
- package/src/audio-init-parser.ts +189 -0
- package/src/audio-ring-buffer.ts +120 -0
- package/src/authored-timing.ts +63 -0
- package/src/block-policy.ts +903 -0
- package/src/carp-catalog.ts +1065 -0
- package/src/catalog-fec-params.ts +729 -0
- package/src/catalog-network-source.ts +74 -0
- package/src/catalog-validator.ts +34 -0
- package/src/cmaf-block-assembler.ts +1255 -0
- package/src/cmaf-group-batcher.ts +104 -0
- package/src/cmcd-producer.ts +329 -0
- package/src/codec-utils.ts +1984 -0
- package/src/conceal-timeline.ts +293 -0
- package/src/delivery-gap.ts +147 -0
- package/src/duplicate-ledger.ts +372 -0
- package/src/fec-codec.ts +61 -0
- package/src/fec-manager.ts +4298 -0
- package/src/fec-starvation-detector.ts +128 -0
- package/src/fec-state.ts +219 -0
- package/src/fec-worker-setup.ts +283 -0
- package/src/fmp4-completion.ts +47 -0
- package/src/fmp4-reader.ts +112 -0
- package/src/index.ts +590 -21
- package/src/iso-block-locator.ts +329 -0
- package/src/iso-bmff-timing.ts +813 -0
- package/src/loc.ts +128 -154
- package/src/manifest-auth-plan.ts +107 -0
- package/src/media-router.ts +841 -0
- package/src/mfu-reassembler.ts +3480 -155
- package/src/mfu-reassembly-policy.ts +134 -0
- package/src/mmtp-container-parser.ts +2380 -0
- package/src/mmtp-decode-pipeline.ts +406 -0
- package/src/mmtp-router.ts +4860 -0
- package/src/mmtp-to-cmaf.ts +977 -0
- package/src/multicast-auth-catalog.ts +340 -0
- package/src/multicast-input.ts +793 -0
- package/src/multicast-manager.ts +2783 -0
- package/src/multicast-transport.ts +1058 -0
- package/src/multicast-unwrap.ts +132 -0
- package/src/no-modules.ts +21 -0
- package/src/phase14-catalog-override.ts +336 -0
- package/src/repair-fetch.ts +772 -0
- package/src/repair-layers.ts +533 -0
- package/src/sample-combiner.ts +938 -0
- package/src/signaling.ts +78 -0
- package/src/source-auth.ts +1 -0
- package/src/switching-set-alignment.ts +109 -0
- package/src/timestamp-codec.ts +265 -0
- package/src/track-pipeline-setup.ts +205 -0
- package/src/track-pipeline.ts +332 -0
- package/src/track-session.ts +1010 -0
- package/src/transport-pool.ts +128 -0
- package/src/wasm-mfu-reassembler.ts +405 -0
- package/src/wasm-mmtp-container-parser.ts +23 -0
- package/test-vectors/align.json +199 -0
- package/test-vectors/catalog/README.md +106 -0
- package/test-vectors/catalog/negative/archive-origin-with-path.json +33 -0
- package/test-vectors/catalog/negative/archive-unknown-field.json +34 -0
- package/test-vectors/catalog/negative/fec-block-profile-missing.json +51 -0
- package/test-vectors/catalog/negative/fec-block-profile-unknown.json +52 -0
- package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +28 -0
- package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +33 -0
- package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +31 -0
- package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +32 -0
- package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +34 -0
- package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +24 -0
- package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +33 -0
- package/test-vectors/catalog/negative/legacy-selection-params.json +15 -0
- package/test-vectors/catalog/negative/media-track-repair-layer.json +16 -0
- package/test-vectors/catalog/negative/missing-mmtp-fields.json +12 -0
- package/test-vectors/catalog/negative/multicast-auth-padded-key.json +37 -0
- package/test-vectors/catalog/negative/multicast-auth-reused-track-format.json +53 -0
- package/test-vectors/catalog/negative/multicast-auth-trailing-pad-bits.json +37 -0
- package/test-vectors/catalog/negative/multicast-endpoint-missing-protocol-and-source.json +24 -0
- package/test-vectors/catalog/negative/multicast-network-source-empty.json +44 -0
- package/test-vectors/catalog/negative/multicast-packet-id-signaling.json +26 -0
- package/test-vectors/catalog/negative/network-source-object.json +25 -0
- package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +24 -0
- package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +27 -0
- package/test-vectors/catalog/negative/repair-track-legacy-shape.json +19 -0
- package/test-vectors/catalog/negative/track-role-empty.json +16 -0
- package/test-vectors/catalog/negative/track-role-non-string.json +16 -0
- package/test-vectors/catalog/positive/archive-origin.json +34 -0
- package/test-vectors/catalog/positive/fec-iso-ssbg1.json +52 -0
- package/test-vectors/catalog/positive/fec-layered-repair.json +106 -0
- package/test-vectors/catalog/positive/fec-multicast.json +52 -0
- package/test-vectors/catalog/positive/flat-av.json +30 -0
- package/test-vectors/catalog/positive/multicast-auth-rotation.json +55 -0
- package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +43 -0
- package/test-vectors/catalog/positive/ticks-and-mixed-timescales.json +39 -0
- package/test-vectors/catalog/positive/track-role.json +49 -0
- package/test-vectors/catalog/releases/moqcast-native-v16-v1/catalog.json +65 -0
- package/test-vectors/catalog/releases/moqcast-native-v16-v1.archive.sha256 +1 -0
- package/test-vectors/catalog-multicast-auth-v1.json +26 -0
- package/test-vectors/catalog-validation.json +732 -0
- package/test-vectors/catalog-validator-public-api.mjs +25 -0
- package/test-vectors/generate-source-auth-fixture.mjs +114 -0
- package/test-vectors/hevc-x265-repeat-headers-v1.json +40 -0
- package/test-vectors/source-auth-v1.json +61 -0
- package/test-vectors/source-contiguity-v1.json +131 -0
- package/test-vectors/subsample-placement-v1.json +230 -0
- package/dist/mmtp.d.ts +0 -73
- package/dist/mmtp.d.ts.map +0 -1
- package/dist/mmtp.js +0 -210
- package/dist/mmtp.js.map +0 -1
- package/src/mmtp.ts +0 -277
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { type AmtDiscovery, type MulticastCatalogConfig, type MulticastProtocol, type MulticastTrackObject, type NetworkSource } from "./carp-catalog.js";
|
|
2
|
+
/**
|
|
3
|
+
* Strict typed input for one multicast endpoint. The publisher provides
|
|
4
|
+
* this shape (env vars / CLI / config record), the helper validates and
|
|
5
|
+
* lifts it into a `MulticastEndpoint` ready to embed in the catalog.
|
|
6
|
+
*/
|
|
7
|
+
export interface MulticastEndpointInput {
|
|
8
|
+
readonly protocol: MulticastProtocol;
|
|
9
|
+
readonly sourceAddress?: string;
|
|
10
|
+
readonly groupAddress: string;
|
|
11
|
+
readonly port: number;
|
|
12
|
+
/** New emitters MUST use the object form (name + packetId). */
|
|
13
|
+
readonly tracks: ReadonlyArray<MulticastTrackObject>;
|
|
14
|
+
/**
|
|
15
|
+
* AMT relay for this endpoint.
|
|
16
|
+
*
|
|
17
|
+
* Publisher-side input only — it is LIFTED into the catalog-level
|
|
18
|
+
* `multicast.networkSource` and is never written onto the emitted endpoint
|
|
19
|
+
* (the normative endpoint model carries no relay field). Because
|
|
20
|
+
* `networkSource` is catalog-level, a relay that differs from the catalog's
|
|
21
|
+
* AMT relay cannot be expressed and is rejected with `conflicting_amt_relay`.
|
|
22
|
+
*
|
|
23
|
+
* Prefer declaring `MulticastInput.networkSource` directly.
|
|
24
|
+
*/
|
|
25
|
+
readonly relayAddress?: string;
|
|
26
|
+
/** Aggregate bandwidth in bits per second. RECOMMENDED per draft §4.1. */
|
|
27
|
+
readonly bandwidth?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Strict typed input for the catalog-level multicast extension.
|
|
31
|
+
*
|
|
32
|
+
* `version` (monotonic) + `validUntil` (unix ms) support the catalog
|
|
33
|
+
* freshness model: subscribers refetch before expiry, and publishers
|
|
34
|
+
* MUST republish (with bumped `version`) on any endpoint mutation.
|
|
35
|
+
*/
|
|
36
|
+
export interface MulticastInput {
|
|
37
|
+
readonly enabled?: boolean;
|
|
38
|
+
readonly endpoints: ReadonlyArray<MulticastEndpointInput>;
|
|
39
|
+
/**
|
|
40
|
+
* Canonical relay/tuning declaration (draft-ramadan-moq-multicast §4.1).
|
|
41
|
+
* When omitted, one is derived from `amtFallback` and any endpoint
|
|
42
|
+
* `relayAddress`; when present no derivation happens. Either way every entry
|
|
43
|
+
* is validated, and an endpoint `relayAddress` it does not carry is
|
|
44
|
+
* rejected (`conflicting_amt_relay`). Omit it entirely for native
|
|
45
|
+
* multicast: it describes alternate bearers only (BLO-37926).
|
|
46
|
+
*/
|
|
47
|
+
readonly networkSource?: ReadonlyArray<NetworkSource>;
|
|
48
|
+
/** @deprecated Lifted into `networkSource`; no longer emitted. */
|
|
49
|
+
readonly amtFallback?: {
|
|
50
|
+
readonly discovery: AmtDiscovery;
|
|
51
|
+
readonly relayDns?: string;
|
|
52
|
+
};
|
|
53
|
+
readonly version?: number;
|
|
54
|
+
readonly validUntil?: number;
|
|
55
|
+
}
|
|
56
|
+
export type MulticastInputErrorKind = "empty_endpoints"
|
|
57
|
+
/**
|
|
58
|
+
* `endpoints` was not an array at all. Distinct from `empty_endpoints`,
|
|
59
|
+
* which reports a well-formed array that declares nothing: a caller
|
|
60
|
+
* handling these programmatically needs "you passed the wrong shape"
|
|
61
|
+
* apart from "you passed nothing".
|
|
62
|
+
*/
|
|
63
|
+
| "invalid_endpoints" | "ssm_requires_source"
|
|
64
|
+
/**
|
|
65
|
+
* Deliberately overloaded, unlike its one-site mirror
|
|
66
|
+
* `atsc3_requires_tuning`: an AMT relay can be missing at two layers, and
|
|
67
|
+
* both mean "this endpoint names a relay nobody can reach". Raised for an
|
|
68
|
+
* `amt` endpoint with no `networkSource` entry of type `"amt"`, and for an
|
|
69
|
+
* entry whose `discovery: "manual"` names no `relay`. Splitting them would
|
|
70
|
+
* make callers handle two kinds for one operator-visible fault.
|
|
71
|
+
*/
|
|
72
|
+
| "amt_requires_relay"
|
|
73
|
+
/**
|
|
74
|
+
* An `atsc3` endpoint with no `networkSource` entry of type `"atsc3"`. The
|
|
75
|
+
* ATSC3 entry carries the frequency, PLP, service id and SLS URI — the only
|
|
76
|
+
* tuning information there is — so without it the endpoint names a broadcast
|
|
77
|
+
* nobody can tune to. The AMT mirror of this is `amt_requires_relay`; native
|
|
78
|
+
* joins ("ssm", "asm") describe no bearer and are exempt (BLO-37926).
|
|
79
|
+
*/
|
|
80
|
+
| "atsc3_requires_tuning"
|
|
81
|
+
/**
|
|
82
|
+
* An endpoint `relayAddress` is not the relay of any AMT `networkSource`
|
|
83
|
+
* entry (another endpoint's relay, `amtFallback.relayDns`, or an explicit
|
|
84
|
+
* entry won). `networkSource` is catalog-level, so per-endpoint relays
|
|
85
|
+
* cannot be represented; fail closed rather than silently drop one.
|
|
86
|
+
*/
|
|
87
|
+
| "conflicting_amt_relay"
|
|
88
|
+
/**
|
|
89
|
+
* A `networkSource` AMT entry's `discovery` was not `"driad"` or `"manual"`,
|
|
90
|
+
* the schema enum. Checked on explicit and derived entries alike.
|
|
91
|
+
*/
|
|
92
|
+
| "invalid_amt_discovery"
|
|
93
|
+
/**
|
|
94
|
+
* A `networkSource` entry the schema rejects: unknown `type`, a key outside
|
|
95
|
+
* its `type`'s shape, a blank `relay`, or an out-of-range ATSC3 field.
|
|
96
|
+
*/
|
|
97
|
+
| "invalid_network_source" | "invalid_group_address" | "ssm_group_out_of_range" | "invalid_port" | "empty_tracks" | "invalid_track_name" | "invalid_packet_id"
|
|
98
|
+
/**
|
|
99
|
+
* A track advertised on `MMTP_SIGNALING_PACKET_ID` (0), the MMTP signaling
|
|
100
|
+
* flow. Distinct from `invalid_packet_id` so the reason is legible: 0 is a
|
|
101
|
+
* well-formed 16-bit value, it is just not a track's to claim.
|
|
102
|
+
*/
|
|
103
|
+
| "signaling_packet_id" | "duplicate_packet_id" | "duplicate_endpoint_tuple" | "invalid_bandwidth" | "invalid_valid_until" | "invalid_version" | "invalid_env_shape";
|
|
104
|
+
export declare class MulticastInputError extends Error {
|
|
105
|
+
readonly kind: MulticastInputErrorKind;
|
|
106
|
+
readonly endpointIndex: number | null;
|
|
107
|
+
constructor(kind: MulticastInputErrorKind, endpointIndex: number | null, message: string);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Validate a typed publisher input and lift it into a
|
|
111
|
+
* `MulticastCatalogConfig` ready for `catalog.multicast = …`.
|
|
112
|
+
*
|
|
113
|
+
* Throws `MulticastInputError` on any invariant violation. Fail-fast
|
|
114
|
+
* at config-load time, never at runtime — silent fallbacks hide bugs
|
|
115
|
+
* upstream (per the project's "no anti-patterns" directive).
|
|
116
|
+
*/
|
|
117
|
+
export declare function multicastFromConfig(input: MulticastInput): MulticastCatalogConfig;
|
|
118
|
+
/**
|
|
119
|
+
* Read `MOQCAST_MULTICAST_*` env vars and return a
|
|
120
|
+
* `MulticastCatalogConfig`. Returns `undefined` when no per-endpoint
|
|
121
|
+
* key is set.
|
|
122
|
+
*
|
|
123
|
+
* Env contract — per-endpoint keys take an optional non-negative index:
|
|
124
|
+
*
|
|
125
|
+
* MOQCAST_MULTICAST[_<idx>]_PROTOCOL=ssm
|
|
126
|
+
* MOQCAST_MULTICAST[_<idx>]_GROUP=232.1.1.1
|
|
127
|
+
* MOQCAST_MULTICAST[_<idx>]_PORT=5004
|
|
128
|
+
* MOQCAST_MULTICAST[_<idx>]_SOURCE=10.0.0.20 (required for ssm)
|
|
129
|
+
* MOQCAST_MULTICAST[_<idx>]_RELAY=amt.example.com (required for amt)
|
|
130
|
+
* MOQCAST_MULTICAST[_<idx>]_TRACKS=video:1,audio:3
|
|
131
|
+
* MOQCAST_MULTICAST[_<idx>]_BANDWIDTH=8000000 (optional, bps)
|
|
132
|
+
*
|
|
133
|
+
* MOQCAST_MULTICAST_AMT_DISCOVERY=driad (catalog-level)
|
|
134
|
+
* MOQCAST_MULTICAST_AMT_RELAY_DNS=relay.example.com (catalog-level)
|
|
135
|
+
*
|
|
136
|
+
* The unindexed form (`MOQCAST_MULTICAST_GROUP`) is exactly index 0;
|
|
137
|
+
* mixing it with explicit `_0_` keys is rejected as ambiguous. Indices
|
|
138
|
+
* need not be contiguous; observed indices are sorted ascending.
|
|
139
|
+
*/
|
|
140
|
+
export declare function multicastFromEnv(env?: Record<string, string | undefined>): MulticastCatalogConfig | undefined;
|
|
141
|
+
//# sourceMappingURL=multicast-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multicast-input.d.ts","sourceRoot":"","sources":["../src/multicast-input.ts"],"names":[],"mappings":"AAyDA,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAE3B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IACrD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC1D;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACtD,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,uBAAuB,GAChC,iBAAiB;AACnB;;;;;GAKG;GACD,mBAAmB,GACnB,qBAAqB;AACvB;;;;;;;GAOG;GACD,oBAAoB;AACtB;;;;;;GAMG;GACD,uBAAuB;AACzB;;;;;GAKG;GACD,uBAAuB;AACzB;;;GAGG;GACD,uBAAuB;AACzB;;;GAGG;GACD,wBAAwB,GACxB,uBAAuB,GACvB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,oBAAoB,GACpB,mBAAmB;AACrB;;;;GAIG;GACD,qBAAqB,GACrB,qBAAqB,GACrB,0BAA0B,GAC1B,mBAAmB,GACnB,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,CAAC;AAEvB,qBAAa,mBAAoB,SAAQ,KAAK;aAE5B,IAAI,EAAE,uBAAuB;aAC7B,aAAa,EAAE,MAAM,GAAG,IAAI;gBAD5B,IAAI,EAAE,uBAAuB,EAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5C,OAAO,EAAE,MAAM;CAKhB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,sBAAsB,CAyLjF;AAiPD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC/B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CACqB,GACzD,sBAAsB,GAAG,SAAS,CAgDpC"}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
// ../mmt-alta-parse/dist/index.js
|
|
2
|
+
var MPU_HEADER_SIZE = 8;
|
|
3
|
+
var MPU_LENGTH_FIELD_SIZE = 2;
|
|
4
|
+
var MPU_HEADER_REMAINDER_SIZE = MPU_HEADER_SIZE - MPU_LENGTH_FIELD_SIZE;
|
|
5
|
+
|
|
6
|
+
// ../mmt-base/dist/mmtp.js
|
|
7
|
+
var MPU_HEADER_SIZE2 = 8;
|
|
8
|
+
var MPU_LENGTH_FIELD_SIZE2 = 2;
|
|
9
|
+
var MPU_HEADER_REMAINDER_SIZE2 = MPU_HEADER_SIZE2 - MPU_LENGTH_FIELD_SIZE2;
|
|
10
|
+
var MMTP_SIGNALING_PACKET_ID = 0;
|
|
11
|
+
var MMTP_PACKET_ID_MAX = 65535;
|
|
12
|
+
|
|
13
|
+
// ../mmt-base/dist/ntp-short.js
|
|
14
|
+
var NTP_SHORT_BITS = 32;
|
|
15
|
+
var NTP_SHORT_MODULUS = 2 ** NTP_SHORT_BITS;
|
|
16
|
+
var NTP_SHORT_HALF_RANGE = 2 ** (NTP_SHORT_BITS - 1);
|
|
17
|
+
|
|
18
|
+
// ../mmt-base/dist/fec-block-profile.js
|
|
19
|
+
var FEC_BLOCK_PROFILES = Object.freeze([
|
|
20
|
+
"k-padded-v1",
|
|
21
|
+
"iso-ssbg1-v1"
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
// src/multicast-input.ts
|
|
25
|
+
var MulticastInputError = class extends Error {
|
|
26
|
+
constructor(kind, endpointIndex, message) {
|
|
27
|
+
super(message);
|
|
28
|
+
this.kind = kind;
|
|
29
|
+
this.endpointIndex = endpointIndex;
|
|
30
|
+
this.name = "MulticastInputError";
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
function multicastFromConfig(input) {
|
|
34
|
+
if (!Array.isArray(input.endpoints)) {
|
|
35
|
+
throw new MulticastInputError(
|
|
36
|
+
"invalid_endpoints",
|
|
37
|
+
null,
|
|
38
|
+
`endpoints must be an array of endpoint objects; got ${typeof input.endpoints}`
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
if (input.networkSource !== void 0 && !Array.isArray(input.networkSource)) {
|
|
42
|
+
throw new MulticastInputError(
|
|
43
|
+
"invalid_network_source",
|
|
44
|
+
null,
|
|
45
|
+
`networkSource must be an array of entries; got ${typeof input.networkSource} \u2014 a single entry still goes in a one-element array`
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
if (input.endpoints.length === 0) {
|
|
49
|
+
throw new MulticastInputError(
|
|
50
|
+
"empty_endpoints",
|
|
51
|
+
null,
|
|
52
|
+
"endpoints[] must be non-empty \u2014 a multicast field with zero endpoints declares nothing"
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
if (input.version !== void 0 && (!Number.isInteger(input.version) || input.version < 0)) {
|
|
56
|
+
throw new MulticastInputError("invalid_version", null, `version must be a non-negative integer; got ${input.version}`);
|
|
57
|
+
}
|
|
58
|
+
if (input.validUntil !== void 0) {
|
|
59
|
+
if (!Number.isFinite(input.validUntil) || input.validUntil <= 0) {
|
|
60
|
+
throw new MulticastInputError(
|
|
61
|
+
"invalid_valid_until",
|
|
62
|
+
null,
|
|
63
|
+
`validUntil must be a positive unix-ms timestamp; got ${input.validUntil}`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const seenTuples = /* @__PURE__ */ new Set();
|
|
68
|
+
const endpoints = input.endpoints.map((ep, idx) => validateEndpoint(ep, idx, seenTuples));
|
|
69
|
+
const out = { endpoints };
|
|
70
|
+
const { entries: networkSource, relayFrom } = resolveNetworkSource(input);
|
|
71
|
+
networkSource.forEach(validateNetworkSourceEntry);
|
|
72
|
+
if (networkSource.length > 0) out.networkSource = networkSource;
|
|
73
|
+
const amtRelays = new Set(
|
|
74
|
+
networkSource.flatMap((s) => s.type === "amt" && s.discovery !== "driad" && s.relay?.trim() ? [s.relay.trim()] : []).slice(0, 1)
|
|
75
|
+
);
|
|
76
|
+
input.endpoints.forEach((ep, idx) => {
|
|
77
|
+
const relay = ep.relayAddress?.trim();
|
|
78
|
+
if (!relay || amtRelays.has(relay)) return;
|
|
79
|
+
const demoted = networkSource.some(
|
|
80
|
+
(s) => s.type === "amt" && s.discovery === "driad" && s.relay?.trim() === relay
|
|
81
|
+
);
|
|
82
|
+
const shadowed = networkSource.some(
|
|
83
|
+
(s) => s.type === "amt" && s.discovery !== "driad" && s.relay?.trim() === relay
|
|
84
|
+
);
|
|
85
|
+
const derived = input.networkSource === void 0;
|
|
86
|
+
const fromAmtFallback = ", derived from amtFallback/MOQCAST_MULTICAST_AMT_*";
|
|
87
|
+
const fromRelay = relayFrom === "amtFallback.relayDns" ? fromAmtFallback : relayFrom === "endpoint.relayAddress" ? ", derived from the endpoint relayAddress values" : "";
|
|
88
|
+
const relayDns = input.amtFallback?.relayDns?.trim();
|
|
89
|
+
const outranked = relayFrom === "amtFallback.relayDns" && relayDns !== relay;
|
|
90
|
+
throw new MulticastInputError(
|
|
91
|
+
"conflicting_amt_relay",
|
|
92
|
+
idx,
|
|
93
|
+
`endpoint[${idx}] relayAddress ${JSON.stringify(relay)} ` + (demoted ? `is carried only by a multicast.networkSource AMT entry with discovery="driad"${derived ? fromAmtFallback : ""}, whose relay is a DRIAD discovery hint that both readers skip, so the catalog names no relay to join; to join it, add a manual entry beside the driad one: [{type:"amt",discovery:"manual",relay:${JSON.stringify(relay)}},{type:"amt",discovery:"driad"}]` : shadowed ? `is carried by a multicast.networkSource AMT entry that is not the first one: both readers join the first AMT entry (${[...amtRelays].join(", ")}) and ignore the rest, so this relay is never joined; keep a single AMT entry, or put this one first` : `is not the relay of any multicast.networkSource AMT entry (${[...amtRelays].join(", ") || "none"})${fromRelay}; ` + (outranked ? `amtFallback.relayDns/MOQCAST_MULTICAST_AMT_RELAY_DNS (${relayDns}) outranks an endpoint relay when networkSource is derived -- drop one, or make them agree` : "networkSource is catalog-level and cannot represent per-endpoint relays"))
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
input.endpoints.forEach((ep, idx) => {
|
|
97
|
+
if (ep.protocol !== "amt" && ep.protocol !== "atsc3") return;
|
|
98
|
+
if (networkSource.some((s) => s.type === ep.protocol)) return;
|
|
99
|
+
throw new MulticastInputError(
|
|
100
|
+
ep.protocol === "amt" ? "amt_requires_relay" : "atsc3_requires_tuning",
|
|
101
|
+
idx,
|
|
102
|
+
`endpoint[${idx}] protocol=${ep.protocol} requires a multicast.networkSource entry of type "${ep.protocol}"` + (ep.protocol === "atsc3" ? " carrying frequency, plpId, serviceId and slsUri \u2014 an ATSC3 endpoint is not tunable without them" : "")
|
|
103
|
+
);
|
|
104
|
+
});
|
|
105
|
+
if (input.enabled !== void 0) out.enabled = input.enabled;
|
|
106
|
+
if (input.version !== void 0) out.version = input.version;
|
|
107
|
+
if (input.validUntil !== void 0) out.validUntil = input.validUntil;
|
|
108
|
+
return out;
|
|
109
|
+
}
|
|
110
|
+
function resolveNetworkSource(input) {
|
|
111
|
+
if (input.networkSource !== void 0) {
|
|
112
|
+
return { entries: input.networkSource.map((s) => ({ ...s })), relayFrom: null };
|
|
113
|
+
}
|
|
114
|
+
const relayDns = input.amtFallback?.relayDns?.trim();
|
|
115
|
+
const relay = relayDns || input.endpoints.map((ep) => ep.relayAddress?.trim()).find((r) => !!r);
|
|
116
|
+
const discovery = input.amtFallback?.discovery ?? (relay ? "manual" : void 0);
|
|
117
|
+
if (discovery === void 0) return { entries: [], relayFrom: null };
|
|
118
|
+
return {
|
|
119
|
+
entries: [{ type: "amt", discovery, ...relay ? { relay } : {} }],
|
|
120
|
+
relayFrom: !relay ? null : relayDns ? "amtFallback.relayDns" : "endpoint.relayAddress"
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
var AMT_SOURCE_KEYS = /* @__PURE__ */ new Set(["type", "discovery", "relay", "port"]);
|
|
124
|
+
var ATSC3_SOURCE_KEYS = /* @__PURE__ */ new Set(["type", "frequency", "plpId", "serviceId", "slsUri"]);
|
|
125
|
+
function validateNetworkSourceEntry(s, i) {
|
|
126
|
+
const err = (kind, why) => new MulticastInputError(kind, null, `networkSource[${i}] ${why}`);
|
|
127
|
+
const keys = s?.type === "amt" ? AMT_SOURCE_KEYS : s?.type === "atsc3" ? ATSC3_SOURCE_KEYS : void 0;
|
|
128
|
+
if (!keys) throw err("invalid_network_source", `type must be "amt" or "atsc3"; got ${JSON.stringify(s?.type)}`);
|
|
129
|
+
const extra = Object.keys(s).filter((k) => !keys.has(k) && s[k] !== void 0);
|
|
130
|
+
if (extra.length > 0) throw err("invalid_network_source", `has keys the schema rejects: ${extra.join(", ")}`);
|
|
131
|
+
if (s.type === "amt") {
|
|
132
|
+
if (s.discovery !== "driad" && s.discovery !== "manual") {
|
|
133
|
+
throw err("invalid_amt_discovery", `discovery must be "driad" or "manual"; got ${JSON.stringify(s.discovery)}`);
|
|
134
|
+
}
|
|
135
|
+
if (s.relay !== void 0) {
|
|
136
|
+
const relay = typeof s.relay === "string" ? s.relay.trim() : "";
|
|
137
|
+
if (!relay) {
|
|
138
|
+
throw err("invalid_network_source", `relay must be non-blank when present; got ${JSON.stringify(s.relay)}`);
|
|
139
|
+
}
|
|
140
|
+
s.relay = relay;
|
|
141
|
+
}
|
|
142
|
+
if (s.discovery === "manual" && s.relay === void 0) {
|
|
143
|
+
throw err("amt_requires_relay", `discovery="manual" requires a relay ("driad" resolves it at runtime)`);
|
|
144
|
+
}
|
|
145
|
+
if (s.port !== void 0 && (!Number.isInteger(s.port) || s.port < 1 || s.port > 65535)) {
|
|
146
|
+
throw err("invalid_port", `port must be 1..65535; got ${s.port}`);
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
const inRange = (v, min, max) => Number.isInteger(v) && v >= min && v <= max;
|
|
151
|
+
if (!inRange(s.frequency, 1, Number.MAX_SAFE_INTEGER)) {
|
|
152
|
+
throw err("invalid_network_source", `frequency must be a positive integer; got ${s.frequency}`);
|
|
153
|
+
}
|
|
154
|
+
if (!inRange(s.plpId, 0, 63)) throw err("invalid_network_source", `plpId must be 0..63; got ${s.plpId}`);
|
|
155
|
+
if (!inRange(s.serviceId, 0, 65535)) {
|
|
156
|
+
throw err("invalid_network_source", `serviceId must be 0..65535; got ${s.serviceId}`);
|
|
157
|
+
}
|
|
158
|
+
if (typeof s.slsUri !== "string" || !isAbsoluteUri(s.slsUri)) {
|
|
159
|
+
throw err("invalid_network_source", `slsUri must be an absolute URI; got ${JSON.stringify(s.slsUri)}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function isAbsoluteUri(value) {
|
|
163
|
+
try {
|
|
164
|
+
new URL(value);
|
|
165
|
+
return true;
|
|
166
|
+
} catch {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function validateEndpoint(ep, idx, seenTuples) {
|
|
171
|
+
if (ep.protocol === "ssm" && (!ep.sourceAddress || ep.sourceAddress.length === 0)) {
|
|
172
|
+
throw new MulticastInputError(
|
|
173
|
+
"ssm_requires_source",
|
|
174
|
+
idx,
|
|
175
|
+
`endpoint[${idx}] protocol=ssm requires sourceAddress`
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
if (!isMulticastGroupAddress(ep.groupAddress)) {
|
|
179
|
+
throw new MulticastInputError(
|
|
180
|
+
"invalid_group_address",
|
|
181
|
+
idx,
|
|
182
|
+
`endpoint[${idx}] groupAddress "${ep.groupAddress}" is not a valid multicast address`
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
if (ep.protocol === "ssm" && !isSsmGroupAddress(ep.groupAddress)) {
|
|
186
|
+
throw new MulticastInputError(
|
|
187
|
+
"ssm_group_out_of_range",
|
|
188
|
+
idx,
|
|
189
|
+
`endpoint[${idx}] protocol=ssm requires groupAddress in 232.0.0.0/8 (IPv4) or ff3x::/32 (IPv6); got "${ep.groupAddress}"`
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
if (!Number.isInteger(ep.port) || ep.port < 1 || ep.port > 65535) {
|
|
193
|
+
throw new MulticastInputError("invalid_port", idx, `endpoint[${idx}] port must be 1..65535; got ${ep.port}`);
|
|
194
|
+
}
|
|
195
|
+
if (ep.tracks.length === 0) {
|
|
196
|
+
throw new MulticastInputError("empty_tracks", idx, `endpoint[${idx}] tracks must be non-empty`);
|
|
197
|
+
}
|
|
198
|
+
const seenPids = /* @__PURE__ */ new Set();
|
|
199
|
+
for (const t of ep.tracks) {
|
|
200
|
+
if (typeof t.name !== "string" || t.name.length === 0) {
|
|
201
|
+
throw new MulticastInputError(
|
|
202
|
+
"invalid_track_name",
|
|
203
|
+
idx,
|
|
204
|
+
`endpoint[${idx}] track name must be a non-empty string`
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
if (t.packetId === MMTP_SIGNALING_PACKET_ID) {
|
|
208
|
+
throw new MulticastInputError(
|
|
209
|
+
"signaling_packet_id",
|
|
210
|
+
idx,
|
|
211
|
+
`endpoint[${idx}] track "${t.name}" packetId ${t.packetId} is the MMTP signaling flow and must not be advertised for a track; packetId must be 1..${MMTP_PACKET_ID_MAX}`
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
if (!Number.isInteger(t.packetId) || t.packetId < 1 || t.packetId > MMTP_PACKET_ID_MAX) {
|
|
215
|
+
throw new MulticastInputError(
|
|
216
|
+
"invalid_packet_id",
|
|
217
|
+
idx,
|
|
218
|
+
`endpoint[${idx}] track "${t.name}" packetId must be 1..${MMTP_PACKET_ID_MAX}; got ${t.packetId}`
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
if (seenPids.has(t.packetId)) {
|
|
222
|
+
throw new MulticastInputError(
|
|
223
|
+
"duplicate_packet_id",
|
|
224
|
+
idx,
|
|
225
|
+
`endpoint[${idx}] duplicate packetId ${t.packetId}`
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
seenPids.add(t.packetId);
|
|
229
|
+
}
|
|
230
|
+
if (ep.bandwidth !== void 0 && (!Number.isFinite(ep.bandwidth) || ep.bandwidth <= 0)) {
|
|
231
|
+
throw new MulticastInputError(
|
|
232
|
+
"invalid_bandwidth",
|
|
233
|
+
idx,
|
|
234
|
+
`endpoint[${idx}] bandwidth must be positive; got ${ep.bandwidth}`
|
|
235
|
+
);
|
|
236
|
+
}
|
|
237
|
+
const tupleKey = `${ep.sourceAddress ?? ""}|${ep.groupAddress}|${ep.port}`;
|
|
238
|
+
if (seenTuples.has(tupleKey)) {
|
|
239
|
+
throw new MulticastInputError(
|
|
240
|
+
"duplicate_endpoint_tuple",
|
|
241
|
+
idx,
|
|
242
|
+
`endpoint[${idx}] duplicates (sourceAddress, groupAddress, port) tuple "${tupleKey}"`
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
seenTuples.add(tupleKey);
|
|
246
|
+
const out = {
|
|
247
|
+
protocol: ep.protocol,
|
|
248
|
+
groupAddress: ep.groupAddress,
|
|
249
|
+
port: ep.port,
|
|
250
|
+
tracks: ep.tracks.map((t) => ({ name: t.name, packetId: t.packetId }))
|
|
251
|
+
};
|
|
252
|
+
if (ep.sourceAddress !== void 0) out.sourceAddress = ep.sourceAddress;
|
|
253
|
+
if (ep.bandwidth !== void 0) out.bandwidth = ep.bandwidth;
|
|
254
|
+
return out;
|
|
255
|
+
}
|
|
256
|
+
function isMulticastGroupAddress(addr) {
|
|
257
|
+
if (addr.includes(":")) {
|
|
258
|
+
return /^ff[0-9a-f]{2}:/i.test(addr);
|
|
259
|
+
}
|
|
260
|
+
const m = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(addr);
|
|
261
|
+
if (!m) return false;
|
|
262
|
+
for (let i = 1; i <= 4; i++) {
|
|
263
|
+
const v = Number(m[i]);
|
|
264
|
+
if (!Number.isInteger(v) || v < 0 || v > 255) return false;
|
|
265
|
+
}
|
|
266
|
+
const first = Number(m[1]);
|
|
267
|
+
return first >= 224 && first <= 239;
|
|
268
|
+
}
|
|
269
|
+
function isSsmGroupAddress(addr) {
|
|
270
|
+
if (addr.includes(":")) {
|
|
271
|
+
return /^ff3[0-9a-f]:0{0,4}:/i.test(addr);
|
|
272
|
+
}
|
|
273
|
+
const m = /^(\d{1,3})\./.exec(addr);
|
|
274
|
+
return m !== null && Number(m[1]) === 232;
|
|
275
|
+
}
|
|
276
|
+
function multicastFromEnv(env = globalThis.process?.env ?? {}) {
|
|
277
|
+
const indices = collectMulticastIndices(env);
|
|
278
|
+
const amtDiscovery = env["MOQCAST_MULTICAST_AMT_DISCOVERY"]?.trim() || void 0;
|
|
279
|
+
const amtRelayDns = env["MOQCAST_MULTICAST_AMT_RELAY_DNS"]?.trim() || void 0;
|
|
280
|
+
const hasCatalogAmt = amtDiscovery !== void 0 || amtRelayDns !== void 0;
|
|
281
|
+
if (indices.length === 0) {
|
|
282
|
+
if (hasCatalogAmt) {
|
|
283
|
+
throw new MulticastInputError(
|
|
284
|
+
"invalid_env_shape",
|
|
285
|
+
null,
|
|
286
|
+
"MOQCAST_MULTICAST_AMT_* env keys are set but no per-endpoint keys (MOQCAST_MULTICAST_GROUP / _PROTOCOL / _PORT / _TRACKS) were found. AMT discovery is a catalog-level fallback for endpoints; declaring it with zero endpoints is a misconfiguration."
|
|
287
|
+
);
|
|
288
|
+
}
|
|
289
|
+
return void 0;
|
|
290
|
+
}
|
|
291
|
+
const endpoints = indices.map((idx) => readEndpointAt(env, idx));
|
|
292
|
+
const input = {
|
|
293
|
+
endpoints,
|
|
294
|
+
...hasCatalogAmt ? {
|
|
295
|
+
amtFallback: {
|
|
296
|
+
// `"manual"` mirrors `resolveNetworkSource`: a relay named in
|
|
297
|
+
// the catalog is, by definition, not discovered.
|
|
298
|
+
discovery: amtDiscovery ?? "manual",
|
|
299
|
+
...amtRelayDns ? { relayDns: amtRelayDns } : {}
|
|
300
|
+
}
|
|
301
|
+
} : {}
|
|
302
|
+
};
|
|
303
|
+
return multicastFromConfig(input);
|
|
304
|
+
}
|
|
305
|
+
var ENV_PER_FIELD = ["PROTOCOL", "GROUP", "PORT", "SOURCE", "RELAY", "TRACKS", "BANDWIDTH"];
|
|
306
|
+
var ENV_CATALOG_LEVEL = /* @__PURE__ */ new Set(["AMT_DISCOVERY", "AMT_RELAY_DNS"]);
|
|
307
|
+
function collectMulticastIndices(env) {
|
|
308
|
+
const indices = /* @__PURE__ */ new Set();
|
|
309
|
+
let hasUnindexed = false;
|
|
310
|
+
let hasZeroIndexed = false;
|
|
311
|
+
for (const [key, val] of Object.entries(env)) {
|
|
312
|
+
if (val === void 0) continue;
|
|
313
|
+
if (!key.startsWith("MOQCAST_MULTICAST_")) continue;
|
|
314
|
+
const suffix = key.slice("MOQCAST_MULTICAST_".length);
|
|
315
|
+
if (ENV_CATALOG_LEVEL.has(suffix)) continue;
|
|
316
|
+
const m = /^(\d+)_(.+)$/.exec(suffix);
|
|
317
|
+
if (m) {
|
|
318
|
+
const idx = Number(m[1]);
|
|
319
|
+
const field = m[2];
|
|
320
|
+
if (!ENV_PER_FIELD.includes(field)) continue;
|
|
321
|
+
if (idx === 0) hasZeroIndexed = true;
|
|
322
|
+
indices.add(idx);
|
|
323
|
+
} else if (ENV_PER_FIELD.includes(suffix)) {
|
|
324
|
+
hasUnindexed = true;
|
|
325
|
+
indices.add(0);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (hasUnindexed && hasZeroIndexed) {
|
|
329
|
+
throw new MulticastInputError(
|
|
330
|
+
"invalid_env_shape",
|
|
331
|
+
null,
|
|
332
|
+
"MOQCAST_MULTICAST_* env contract: cannot mix unindexed keys (MOQCAST_MULTICAST_GROUP) with explicitly-indexed keys at index 0 (MOQCAST_MULTICAST_0_GROUP) \u2014 they refer to the same endpoint. Use one form consistently."
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
return [...indices].sort((a, b) => a - b);
|
|
336
|
+
}
|
|
337
|
+
function readEndpointAt(env, idx) {
|
|
338
|
+
const lookup = (field) => {
|
|
339
|
+
if (idx === 0) {
|
|
340
|
+
return env[`MOQCAST_MULTICAST_${field}`] ?? env[`MOQCAST_MULTICAST_0_${field}`];
|
|
341
|
+
}
|
|
342
|
+
return env[`MOQCAST_MULTICAST_${idx}_${field}`];
|
|
343
|
+
};
|
|
344
|
+
const portStr = lookup("PORT");
|
|
345
|
+
const port = portStr !== void 0 ? Number(portStr) : NaN;
|
|
346
|
+
const tracks = parseTracksEnv(lookup("TRACKS"), idx);
|
|
347
|
+
const bandwidthStr = lookup("BANDWIDTH");
|
|
348
|
+
const bandwidth = bandwidthStr !== void 0 ? Number(bandwidthStr) : void 0;
|
|
349
|
+
const source = lookup("SOURCE");
|
|
350
|
+
const relay = lookup("RELAY");
|
|
351
|
+
return {
|
|
352
|
+
protocol: lookup("PROTOCOL"),
|
|
353
|
+
groupAddress: lookup("GROUP") ?? "",
|
|
354
|
+
port,
|
|
355
|
+
tracks,
|
|
356
|
+
...source ? { sourceAddress: source } : {},
|
|
357
|
+
...relay ? { relayAddress: relay } : {},
|
|
358
|
+
...bandwidth !== void 0 ? { bandwidth } : {}
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
function parseTracksEnv(raw, endpointIdx) {
|
|
362
|
+
if (!raw || raw.length === 0) return [];
|
|
363
|
+
return raw.split(",").map((entry, i) => {
|
|
364
|
+
const colon = entry.lastIndexOf(":");
|
|
365
|
+
if (colon < 0) {
|
|
366
|
+
throw new MulticastInputError(
|
|
367
|
+
"invalid_track_name",
|
|
368
|
+
endpointIdx,
|
|
369
|
+
`endpoint[${endpointIdx}] TRACKS[${i}] missing ":" \u2014 expected "name:packetId", got ${JSON.stringify(entry)}`
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
const name = entry.slice(0, colon).trim();
|
|
373
|
+
const idStr = entry.slice(colon + 1).trim();
|
|
374
|
+
const packetId = Number(idStr);
|
|
375
|
+
if (!name || idStr.length === 0 || !Number.isFinite(packetId) || !Number.isInteger(packetId)) {
|
|
376
|
+
throw new MulticastInputError(
|
|
377
|
+
"invalid_packet_id",
|
|
378
|
+
endpointIdx,
|
|
379
|
+
`endpoint[${endpointIdx}] TRACKS[${i}] entry malformed (need "name:integer"): ${JSON.stringify(entry)}`
|
|
380
|
+
);
|
|
381
|
+
}
|
|
382
|
+
return { name, packetId };
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
export {
|
|
386
|
+
MulticastInputError,
|
|
387
|
+
multicastFromConfig,
|
|
388
|
+
multicastFromEnv
|
|
389
|
+
};
|
|
390
|
+
//# sourceMappingURL=multicast-input.js.map
|