@blockcast/mmt-container 0.3.0 → 0.4.0-main.1e94b11199ea

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.
Files changed (606) hide show
  1. package/README.md +33 -16
  2. package/dist/browser-runtime.js +14816 -14254
  3. package/dist/browser-runtime.js.map +4 -4
  4. package/dist/carp-catalog.d.ts +24 -19
  5. package/dist/carp-catalog.d.ts.map +1 -1
  6. package/dist/carp-catalog.js +32 -14
  7. package/dist/carp-catalog.js.map +4 -4
  8. package/dist/catalog-fec-params.d.ts +88 -28
  9. package/dist/catalog-fec-params.d.ts.map +1 -1
  10. package/dist/catalog-fec-params.js +60 -23
  11. package/dist/catalog-fec-params.js.map +4 -4
  12. package/dist/catalog-network-source.js +1 -7
  13. package/dist/catalog-network-source.js.map +4 -4
  14. package/dist/cmaf-block-assembler.d.ts +0 -2
  15. package/dist/cmaf-block-assembler.d.ts.map +1 -1
  16. package/dist/cmaf-block-assembler.js +0 -1
  17. package/dist/cmaf-block-assembler.js.map +2 -2
  18. package/dist/cmcd-producer.d.ts.map +1 -1
  19. package/dist/cmcd-producer.js +0 -4
  20. package/dist/cmcd-producer.js.map +2 -2
  21. package/dist/delivery-catalog.d.ts +124 -0
  22. package/dist/delivery-catalog.d.ts.map +1 -0
  23. package/dist/delivery-catalog.js +1857 -0
  24. package/dist/delivery-catalog.js.map +7 -0
  25. package/dist/delta-fallback-config.d.ts +42 -0
  26. package/dist/delta-fallback-config.d.ts.map +1 -0
  27. package/dist/delta-fallback-config.js +59 -0
  28. package/dist/delta-fallback-config.js.map +7 -0
  29. package/dist/fec-manager.d.ts +52 -30
  30. package/dist/fec-manager.d.ts.map +1 -1
  31. package/dist/fec-manager.js +338 -293
  32. package/dist/fec-manager.js.map +4 -4
  33. package/dist/fec-state.d.ts +19 -31
  34. package/dist/fec-state.d.ts.map +1 -1
  35. package/dist/fec-state.js +4 -10
  36. package/dist/fec-state.js.map +4 -4
  37. package/dist/fec-worker-setup.d.ts +18 -14
  38. package/dist/fec-worker-setup.d.ts.map +1 -1
  39. package/dist/fec-worker-setup.js +81 -96
  40. package/dist/fec-worker-setup.js.map +4 -4
  41. package/dist/index.d.ts +5 -3
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +16 -0
  44. package/dist/index.js.map +2 -2
  45. package/dist/iso-block-locator.js +1 -7
  46. package/dist/iso-block-locator.js.map +4 -4
  47. package/dist/media-router.d.ts +20 -8
  48. package/dist/media-router.d.ts.map +1 -1
  49. package/dist/media-router.js +46 -21
  50. package/dist/media-router.js.map +2 -2
  51. package/dist/mfu-reassembler.js +24 -30
  52. package/dist/mfu-reassembler.js.map +4 -4
  53. package/dist/mmtp-container-parser.d.ts +14 -11
  54. package/dist/mmtp-container-parser.d.ts.map +1 -1
  55. package/dist/mmtp-container-parser.js +126 -99
  56. package/dist/mmtp-container-parser.js.map +4 -4
  57. package/dist/mmtp-container-parser.no-modules.js +154 -108
  58. package/dist/mmtp-container-parser.no-modules.js.map +4 -4
  59. package/dist/mmtp-decode-pipeline.js +126 -99
  60. package/dist/mmtp-decode-pipeline.js.map +4 -4
  61. package/dist/mmtp-router.d.ts +51 -29
  62. package/dist/mmtp-router.d.ts.map +1 -1
  63. package/dist/mmtp-router.js +260 -326
  64. package/dist/mmtp-router.js.map +4 -4
  65. package/dist/multicast-input.js +1 -7
  66. package/dist/multicast-input.js.map +4 -4
  67. package/dist/multicast-manager.d.ts +72 -6
  68. package/dist/multicast-manager.d.ts.map +1 -1
  69. package/dist/multicast-manager.js +882 -673
  70. package/dist/multicast-manager.js.map +4 -4
  71. package/dist/multicast-transport.d.ts +1 -1
  72. package/dist/multicast-transport.d.ts.map +1 -1
  73. package/dist/multicast-transport.js +44 -26
  74. package/dist/multicast-transport.js.map +4 -4
  75. package/dist/multicast-unwrap.js +29 -35
  76. package/dist/multicast-unwrap.js.map +4 -4
  77. package/dist/no-modules.js +150 -106
  78. package/dist/no-modules.js.map +4 -4
  79. package/dist/repair-fetch.d.ts +116 -21
  80. package/dist/repair-fetch.d.ts.map +1 -1
  81. package/dist/repair-fetch.js +114 -34
  82. package/dist/repair-fetch.js.map +4 -4
  83. package/dist/repair-layers.d.ts +18 -7
  84. package/dist/repair-layers.d.ts.map +1 -1
  85. package/dist/repair-layers.js +12 -10
  86. package/dist/repair-layers.js.map +4 -4
  87. package/dist/signaling.js +2 -11
  88. package/dist/signaling.js.map +4 -4
  89. package/dist/timestamp-codec.js +24 -30
  90. package/dist/timestamp-codec.js.map +4 -4
  91. package/dist/track-session.d.ts +7 -0
  92. package/dist/track-session.d.ts.map +1 -1
  93. package/dist/track-session.js +15 -8
  94. package/dist/track-session.js.map +2 -2
  95. package/dist/wasm-mfu-reassembler.js +1 -7
  96. package/dist/wasm-mfu-reassembler.js.map +4 -4
  97. package/dist/wasm-mmtp-container-parser.js +126 -99
  98. package/dist/wasm-mmtp-container-parser.js.map +4 -4
  99. package/package.json +7 -14
  100. package/schemas/catalog.schema.json +3 -3
  101. package/src/carp-catalog.ts +51 -24
  102. package/src/catalog-fec-params.ts +173 -64
  103. package/src/cmaf-block-assembler.ts +1 -4
  104. package/src/cmcd-producer.ts +0 -6
  105. package/src/delivery-catalog.ts +498 -0
  106. package/src/delta-fallback-config.ts +72 -0
  107. package/src/fec-manager.ts +457 -334
  108. package/src/fec-state.ts +20 -32
  109. package/src/fec-worker-setup.ts +109 -90
  110. package/src/index.ts +32 -0
  111. package/src/media-router.ts +59 -21
  112. package/src/mmtp-container-parser.ts +106 -20
  113. package/src/mmtp-router.ts +189 -330
  114. package/src/multicast-manager.ts +265 -86
  115. package/src/multicast-transport.ts +16 -9
  116. package/src/repair-fetch.ts +273 -43
  117. package/src/repair-layers.ts +28 -8
  118. package/src/track-session.ts +28 -9
  119. package/test-vectors/catalog/README.md +44 -18
  120. package/test-vectors/catalog/negative/fec-block-profile-retired.json +52 -0
  121. package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +1 -1
  122. package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +1 -1
  123. package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +1 -1
  124. package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +1 -1
  125. package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +1 -1
  126. package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +1 -1
  127. package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +1 -1
  128. package/test-vectors/catalog/negative/multicast-endpoint-relay-address.json +39 -0
  129. package/test-vectors/catalog/negative/multicast-network-source-empty.json +1 -1
  130. package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +1 -1
  131. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +2 -1
  132. package/test-vectors/catalog/positive/fec-layered-repair.json +2 -2
  133. package/test-vectors/catalog/positive/fec-multicast.json +2 -1
  134. package/test-vectors/catalog/positive/multicast-amt-manual-relay.json +38 -0
  135. package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +2 -1
  136. package/test-vectors/catalog/section-codes.json +33 -0
  137. package/test-vectors/catalog-timing.json +356 -0
  138. package/test-vectors/catalog-validation.json +40 -5
  139. package/test-vectors/delivery-catalog/README.md +11 -0
  140. package/test-vectors/delivery-catalog/negative/missing-block-profile.json +58 -0
  141. package/test-vectors/delivery-catalog/negative/packet-id-signaling.json +59 -0
  142. package/test-vectors/delivery-catalog/negative/retired-k-padded-block-profile.json +59 -0
  143. package/test-vectors/delivery-catalog/positive/dash.json +56 -0
  144. package/test-vectors/delivery-catalog/positive/mmtp-source-only.json +43 -0
  145. package/node_modules/@blockcast/fec-worker/README.md +0 -223
  146. package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
  147. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +0 -38
  148. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +0 -1
  149. package/node_modules/@blockcast/fec-worker/dist/block-order.js +0 -78
  150. package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +0 -1
  151. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +0 -93
  152. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +0 -1
  153. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +0 -346
  154. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +0 -1
  155. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +0 -380
  156. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +0 -1
  157. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +0 -11
  158. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +0 -1
  159. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +0 -14
  160. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +0 -1
  161. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +0 -859
  162. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +0 -7
  163. package/node_modules/@blockcast/fec-worker/dist/index.d.ts +0 -10
  164. package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +0 -1
  165. package/node_modules/@blockcast/fec-worker/dist/index.js +0 -8
  166. package/node_modules/@blockcast/fec-worker/dist/index.js.map +0 -1
  167. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +0 -20
  168. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +0 -1
  169. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +0 -370
  170. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +0 -7
  171. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +0 -104
  172. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +0 -1
  173. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +0 -181
  174. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +0 -1
  175. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +0 -194
  176. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +0 -1
  177. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +0 -62
  178. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +0 -1
  179. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +0 -9
  180. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +0 -1
  181. package/node_modules/@blockcast/fec-worker/dist/transfer.js +0 -13
  182. package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +0 -1
  183. package/node_modules/@blockcast/fec-worker/package.json +0 -59
  184. package/node_modules/@blockcast/fec-worker/src/block-order.ts +0 -93
  185. package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +0 -392
  186. package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +0 -399
  187. package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +0 -1502
  188. package/node_modules/@blockcast/fec-worker/src/index.ts +0 -35
  189. package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +0 -589
  190. package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +0 -222
  191. package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +0 -209
  192. package/node_modules/@blockcast/fec-worker/src/transfer.ts +0 -12
  193. package/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
  194. package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  195. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +0 -57
  196. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
  197. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
  198. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
  199. package/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
  200. package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
  201. package/node_modules/@blockcast/mmt-base/README.md +0 -134
  202. package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  203. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +0 -55
  204. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
  205. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
  206. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
  207. package/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
  208. package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
  209. package/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
  210. package/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
  211. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
  212. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
  213. package/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
  214. package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
  215. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
  216. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
  217. package/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
  218. package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
  219. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
  220. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
  221. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
  222. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
  223. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
  224. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
  225. package/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
  226. package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
  227. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
  228. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
  229. package/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
  230. package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
  231. package/node_modules/@blockcast/mmt-base/package.json +0 -49
  232. package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
  233. package/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
  234. package/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
  235. package/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
  236. package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
  237. package/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
  238. package/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
  239. package/node_modules/@blockcast/mmt-fec/README.md +0 -271
  240. package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
  241. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +0 -82
  242. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +0 -1
  243. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +0 -296
  244. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +0 -1
  245. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +0 -106
  246. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +0 -1
  247. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +0 -288
  248. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +0 -1
  249. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +0 -46
  250. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +0 -1
  251. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +0 -96
  252. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +0 -1
  253. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +0 -33
  254. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +0 -1
  255. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +0 -57
  256. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +0 -1
  257. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +0 -205
  258. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +0 -1
  259. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +0 -240
  260. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +0 -1
  261. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +0 -28
  262. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +0 -1
  263. package/node_modules/@blockcast/mmt-fec/dist/index.js +0 -28
  264. package/node_modules/@blockcast/mmt-fec/dist/index.js.map +0 -1
  265. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +0 -20
  266. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +0 -1
  267. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +0 -28
  268. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +0 -1
  269. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +0 -258
  270. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +0 -1
  271. package/node_modules/@blockcast/mmt-fec/dist/oti.js +0 -382
  272. package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +0 -1
  273. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +0 -41
  274. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +0 -1
  275. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +0 -81
  276. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +0 -1
  277. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts +0 -82
  278. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts.map +0 -1
  279. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js +0 -170
  280. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js.map +0 -1
  281. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
  282. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  283. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +0 -57
  284. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
  285. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
  286. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
  287. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
  288. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
  289. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +0 -134
  290. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  291. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +0 -55
  292. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
  293. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
  294. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
  295. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
  296. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
  297. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
  298. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
  299. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
  300. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
  301. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
  302. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
  303. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
  304. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
  305. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
  306. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
  307. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
  308. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
  309. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
  310. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
  311. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
  312. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
  313. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
  314. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
  315. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
  316. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
  317. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
  318. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
  319. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +0 -49
  320. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
  321. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
  322. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
  323. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
  324. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
  325. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
  326. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
  327. package/node_modules/@blockcast/mmt-fec/package.json +0 -79
  328. package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +0 -371
  329. package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +0 -439
  330. package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +0 -127
  331. package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +0 -68
  332. package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +0 -310
  333. package/node_modules/@blockcast/mmt-fec/src/index.ts +0 -94
  334. package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +0 -34
  335. package/node_modules/@blockcast/mmt-fec/src/oti.ts +0 -463
  336. package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +0 -101
  337. package/node_modules/@blockcast/mmt-fec/src/repair-group.ts +0 -195
  338. package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
  339. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +0 -28
  340. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +0 -1
  341. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +0 -128
  342. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +0 -1
  343. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +0 -4
  344. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +0 -1
  345. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +0 -4
  346. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +0 -1
  347. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +0 -37
  348. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +0 -1
  349. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +0 -179
  350. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +0 -1
  351. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +0 -99
  352. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +0 -1
  353. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +0 -492
  354. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +0 -1
  355. package/node_modules/@blockcast/mmt-manifest-verify/package.json +0 -45
  356. package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +0 -171
  357. package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +0 -3
  358. package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +0 -230
  359. package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +0 -669
  360. package/node_modules/@noble/hashes/LICENSE +0 -21
  361. package/node_modules/@noble/hashes/README.md +0 -521
  362. package/node_modules/@noble/hashes/_assert.d.ts +0 -17
  363. package/node_modules/@noble/hashes/_assert.d.ts.map +0 -1
  364. package/node_modules/@noble/hashes/_assert.js +0 -18
  365. package/node_modules/@noble/hashes/_assert.js.map +0 -1
  366. package/node_modules/@noble/hashes/_blake.d.ts +0 -14
  367. package/node_modules/@noble/hashes/_blake.d.ts.map +0 -1
  368. package/node_modules/@noble/hashes/_blake.js +0 -50
  369. package/node_modules/@noble/hashes/_blake.js.map +0 -1
  370. package/node_modules/@noble/hashes/_md.d.ts +0 -51
  371. package/node_modules/@noble/hashes/_md.d.ts.map +0 -1
  372. package/node_modules/@noble/hashes/_md.js +0 -162
  373. package/node_modules/@noble/hashes/_md.js.map +0 -1
  374. package/node_modules/@noble/hashes/_u64.d.ts +0 -55
  375. package/node_modules/@noble/hashes/_u64.d.ts.map +0 -1
  376. package/node_modules/@noble/hashes/_u64.js +0 -90
  377. package/node_modules/@noble/hashes/_u64.js.map +0 -1
  378. package/node_modules/@noble/hashes/argon2.d.ts +0 -32
  379. package/node_modules/@noble/hashes/argon2.d.ts.map +0 -1
  380. package/node_modules/@noble/hashes/argon2.js +0 -401
  381. package/node_modules/@noble/hashes/argon2.js.map +0 -1
  382. package/node_modules/@noble/hashes/blake1.d.ts +0 -106
  383. package/node_modules/@noble/hashes/blake1.d.ts.map +0 -1
  384. package/node_modules/@noble/hashes/blake1.js +0 -459
  385. package/node_modules/@noble/hashes/blake1.js.map +0 -1
  386. package/node_modules/@noble/hashes/blake2.d.ts +0 -116
  387. package/node_modules/@noble/hashes/blake2.d.ts.map +0 -1
  388. package/node_modules/@noble/hashes/blake2.js +0 -420
  389. package/node_modules/@noble/hashes/blake2.js.map +0 -1
  390. package/node_modules/@noble/hashes/blake2b.d.ts +0 -11
  391. package/node_modules/@noble/hashes/blake2b.d.ts.map +0 -1
  392. package/node_modules/@noble/hashes/blake2b.js +0 -14
  393. package/node_modules/@noble/hashes/blake2b.js.map +0 -1
  394. package/node_modules/@noble/hashes/blake2s.d.ts +0 -20
  395. package/node_modules/@noble/hashes/blake2s.d.ts.map +0 -1
  396. package/node_modules/@noble/hashes/blake2s.js +0 -24
  397. package/node_modules/@noble/hashes/blake2s.js.map +0 -1
  398. package/node_modules/@noble/hashes/blake3.d.ts +0 -54
  399. package/node_modules/@noble/hashes/blake3.d.ts.map +0 -1
  400. package/node_modules/@noble/hashes/blake3.js +0 -255
  401. package/node_modules/@noble/hashes/blake3.js.map +0 -1
  402. package/node_modules/@noble/hashes/crypto.d.ts +0 -2
  403. package/node_modules/@noble/hashes/crypto.d.ts.map +0 -1
  404. package/node_modules/@noble/hashes/crypto.js +0 -5
  405. package/node_modules/@noble/hashes/crypto.js.map +0 -1
  406. package/node_modules/@noble/hashes/cryptoNode.d.ts +0 -2
  407. package/node_modules/@noble/hashes/cryptoNode.d.ts.map +0 -1
  408. package/node_modules/@noble/hashes/cryptoNode.js +0 -18
  409. package/node_modules/@noble/hashes/cryptoNode.js.map +0 -1
  410. package/node_modules/@noble/hashes/eskdf.d.ts +0 -47
  411. package/node_modules/@noble/hashes/eskdf.d.ts.map +0 -1
  412. package/node_modules/@noble/hashes/eskdf.js +0 -166
  413. package/node_modules/@noble/hashes/eskdf.js.map +0 -1
  414. package/node_modules/@noble/hashes/esm/_assert.d.ts +0 -17
  415. package/node_modules/@noble/hashes/esm/_assert.d.ts.map +0 -1
  416. package/node_modules/@noble/hashes/esm/_assert.js +0 -15
  417. package/node_modules/@noble/hashes/esm/_assert.js.map +0 -1
  418. package/node_modules/@noble/hashes/esm/_blake.d.ts +0 -14
  419. package/node_modules/@noble/hashes/esm/_blake.d.ts.map +0 -1
  420. package/node_modules/@noble/hashes/esm/_blake.js +0 -45
  421. package/node_modules/@noble/hashes/esm/_blake.js.map +0 -1
  422. package/node_modules/@noble/hashes/esm/_md.d.ts +0 -51
  423. package/node_modules/@noble/hashes/esm/_md.d.ts.map +0 -1
  424. package/node_modules/@noble/hashes/esm/_md.js +0 -155
  425. package/node_modules/@noble/hashes/esm/_md.js.map +0 -1
  426. package/node_modules/@noble/hashes/esm/_u64.d.ts +0 -55
  427. package/node_modules/@noble/hashes/esm/_u64.d.ts.map +0 -1
  428. package/node_modules/@noble/hashes/esm/_u64.js +0 -67
  429. package/node_modules/@noble/hashes/esm/_u64.js.map +0 -1
  430. package/node_modules/@noble/hashes/esm/argon2.d.ts +0 -32
  431. package/node_modules/@noble/hashes/esm/argon2.d.ts.map +0 -1
  432. package/node_modules/@noble/hashes/esm/argon2.js +0 -392
  433. package/node_modules/@noble/hashes/esm/argon2.js.map +0 -1
  434. package/node_modules/@noble/hashes/esm/blake1.d.ts +0 -106
  435. package/node_modules/@noble/hashes/esm/blake1.d.ts.map +0 -1
  436. package/node_modules/@noble/hashes/esm/blake1.js +0 -452
  437. package/node_modules/@noble/hashes/esm/blake1.js.map +0 -1
  438. package/node_modules/@noble/hashes/esm/blake2.d.ts +0 -116
  439. package/node_modules/@noble/hashes/esm/blake2.d.ts.map +0 -1
  440. package/node_modules/@noble/hashes/esm/blake2.js +0 -413
  441. package/node_modules/@noble/hashes/esm/blake2.js.map +0 -1
  442. package/node_modules/@noble/hashes/esm/blake2b.d.ts +0 -11
  443. package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +0 -1
  444. package/node_modules/@noble/hashes/esm/blake2b.js +0 -11
  445. package/node_modules/@noble/hashes/esm/blake2b.js.map +0 -1
  446. package/node_modules/@noble/hashes/esm/blake2s.d.ts +0 -20
  447. package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +0 -1
  448. package/node_modules/@noble/hashes/esm/blake2s.js +0 -21
  449. package/node_modules/@noble/hashes/esm/blake2s.js.map +0 -1
  450. package/node_modules/@noble/hashes/esm/blake3.d.ts +0 -54
  451. package/node_modules/@noble/hashes/esm/blake3.d.ts.map +0 -1
  452. package/node_modules/@noble/hashes/esm/blake3.js +0 -251
  453. package/node_modules/@noble/hashes/esm/blake3.js.map +0 -1
  454. package/node_modules/@noble/hashes/esm/crypto.d.ts +0 -2
  455. package/node_modules/@noble/hashes/esm/crypto.d.ts.map +0 -1
  456. package/node_modules/@noble/hashes/esm/crypto.js +0 -2
  457. package/node_modules/@noble/hashes/esm/crypto.js.map +0 -1
  458. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +0 -2
  459. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +0 -1
  460. package/node_modules/@noble/hashes/esm/cryptoNode.js +0 -15
  461. package/node_modules/@noble/hashes/esm/cryptoNode.js.map +0 -1
  462. package/node_modules/@noble/hashes/esm/eskdf.d.ts +0 -47
  463. package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +0 -1
  464. package/node_modules/@noble/hashes/esm/eskdf.js +0 -160
  465. package/node_modules/@noble/hashes/esm/eskdf.js.map +0 -1
  466. package/node_modules/@noble/hashes/esm/hkdf.d.ts +0 -36
  467. package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +0 -1
  468. package/node_modules/@noble/hashes/esm/hkdf.js +0 -82
  469. package/node_modules/@noble/hashes/esm/hkdf.js.map +0 -1
  470. package/node_modules/@noble/hashes/esm/hmac.d.ts +0 -35
  471. package/node_modules/@noble/hashes/esm/hmac.d.ts.map +0 -1
  472. package/node_modules/@noble/hashes/esm/hmac.js +0 -86
  473. package/node_modules/@noble/hashes/esm/hmac.js.map +0 -1
  474. package/node_modules/@noble/hashes/esm/index.d.ts +0 -2
  475. package/node_modules/@noble/hashes/esm/index.d.ts.map +0 -1
  476. package/node_modules/@noble/hashes/esm/index.js +0 -33
  477. package/node_modules/@noble/hashes/esm/index.js.map +0 -1
  478. package/node_modules/@noble/hashes/esm/legacy.d.ts +0 -71
  479. package/node_modules/@noble/hashes/esm/legacy.d.ts.map +0 -1
  480. package/node_modules/@noble/hashes/esm/legacy.js +0 -281
  481. package/node_modules/@noble/hashes/esm/legacy.js.map +0 -1
  482. package/node_modules/@noble/hashes/esm/package.json +0 -10
  483. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +0 -23
  484. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +0 -1
  485. package/node_modules/@noble/hashes/esm/pbkdf2.js +0 -97
  486. package/node_modules/@noble/hashes/esm/pbkdf2.js.map +0 -1
  487. package/node_modules/@noble/hashes/esm/ripemd160.d.ts +0 -13
  488. package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +0 -1
  489. package/node_modules/@noble/hashes/esm/ripemd160.js +0 -13
  490. package/node_modules/@noble/hashes/esm/ripemd160.js.map +0 -1
  491. package/node_modules/@noble/hashes/esm/scrypt.d.ts +0 -34
  492. package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +0 -1
  493. package/node_modules/@noble/hashes/esm/scrypt.js +0 -228
  494. package/node_modules/@noble/hashes/esm/scrypt.js.map +0 -1
  495. package/node_modules/@noble/hashes/esm/sha1.d.ts +0 -11
  496. package/node_modules/@noble/hashes/esm/sha1.d.ts.map +0 -1
  497. package/node_modules/@noble/hashes/esm/sha1.js +0 -11
  498. package/node_modules/@noble/hashes/esm/sha1.js.map +0 -1
  499. package/node_modules/@noble/hashes/esm/sha2.d.ts +0 -159
  500. package/node_modules/@noble/hashes/esm/sha2.d.ts.map +0 -1
  501. package/node_modules/@noble/hashes/esm/sha2.js +0 -375
  502. package/node_modules/@noble/hashes/esm/sha2.js.map +0 -1
  503. package/node_modules/@noble/hashes/esm/sha256.d.ts +0 -20
  504. package/node_modules/@noble/hashes/esm/sha256.d.ts.map +0 -1
  505. package/node_modules/@noble/hashes/esm/sha256.js +0 -20
  506. package/node_modules/@noble/hashes/esm/sha256.js.map +0 -1
  507. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +0 -142
  508. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +0 -1
  509. package/node_modules/@noble/hashes/esm/sha3-addons.js +0 -393
  510. package/node_modules/@noble/hashes/esm/sha3-addons.js.map +0 -1
  511. package/node_modules/@noble/hashes/esm/sha3.d.ts +0 -53
  512. package/node_modules/@noble/hashes/esm/sha3.d.ts.map +0 -1
  513. package/node_modules/@noble/hashes/esm/sha3.js +0 -234
  514. package/node_modules/@noble/hashes/esm/sha3.js.map +0 -1
  515. package/node_modules/@noble/hashes/esm/sha512.d.ts +0 -26
  516. package/node_modules/@noble/hashes/esm/sha512.d.ts.map +0 -1
  517. package/node_modules/@noble/hashes/esm/sha512.js +0 -26
  518. package/node_modules/@noble/hashes/esm/sha512.js.map +0 -1
  519. package/node_modules/@noble/hashes/esm/utils.d.ts +0 -161
  520. package/node_modules/@noble/hashes/esm/utils.d.ts.map +0 -1
  521. package/node_modules/@noble/hashes/esm/utils.js +0 -281
  522. package/node_modules/@noble/hashes/esm/utils.js.map +0 -1
  523. package/node_modules/@noble/hashes/hkdf.d.ts +0 -36
  524. package/node_modules/@noble/hashes/hkdf.d.ts.map +0 -1
  525. package/node_modules/@noble/hashes/hkdf.js +0 -88
  526. package/node_modules/@noble/hashes/hkdf.js.map +0 -1
  527. package/node_modules/@noble/hashes/hmac.d.ts +0 -35
  528. package/node_modules/@noble/hashes/hmac.d.ts.map +0 -1
  529. package/node_modules/@noble/hashes/hmac.js +0 -91
  530. package/node_modules/@noble/hashes/hmac.js.map +0 -1
  531. package/node_modules/@noble/hashes/index.d.ts +0 -1
  532. package/node_modules/@noble/hashes/index.d.ts.map +0 -1
  533. package/node_modules/@noble/hashes/index.js +0 -33
  534. package/node_modules/@noble/hashes/index.js.map +0 -1
  535. package/node_modules/@noble/hashes/legacy.d.ts +0 -71
  536. package/node_modules/@noble/hashes/legacy.d.ts.map +0 -1
  537. package/node_modules/@noble/hashes/legacy.js +0 -287
  538. package/node_modules/@noble/hashes/legacy.js.map +0 -1
  539. package/node_modules/@noble/hashes/package.json +0 -266
  540. package/node_modules/@noble/hashes/pbkdf2.d.ts +0 -23
  541. package/node_modules/@noble/hashes/pbkdf2.d.ts.map +0 -1
  542. package/node_modules/@noble/hashes/pbkdf2.js +0 -101
  543. package/node_modules/@noble/hashes/pbkdf2.js.map +0 -1
  544. package/node_modules/@noble/hashes/ripemd160.d.ts +0 -13
  545. package/node_modules/@noble/hashes/ripemd160.d.ts.map +0 -1
  546. package/node_modules/@noble/hashes/ripemd160.js +0 -16
  547. package/node_modules/@noble/hashes/ripemd160.js.map +0 -1
  548. package/node_modules/@noble/hashes/scrypt.d.ts +0 -34
  549. package/node_modules/@noble/hashes/scrypt.d.ts.map +0 -1
  550. package/node_modules/@noble/hashes/scrypt.js +0 -232
  551. package/node_modules/@noble/hashes/scrypt.js.map +0 -1
  552. package/node_modules/@noble/hashes/sha1.d.ts +0 -11
  553. package/node_modules/@noble/hashes/sha1.d.ts.map +0 -1
  554. package/node_modules/@noble/hashes/sha1.js +0 -14
  555. package/node_modules/@noble/hashes/sha1.js.map +0 -1
  556. package/node_modules/@noble/hashes/sha2.d.ts +0 -159
  557. package/node_modules/@noble/hashes/sha2.d.ts.map +0 -1
  558. package/node_modules/@noble/hashes/sha2.js +0 -384
  559. package/node_modules/@noble/hashes/sha2.js.map +0 -1
  560. package/node_modules/@noble/hashes/sha256.d.ts +0 -20
  561. package/node_modules/@noble/hashes/sha256.d.ts.map +0 -1
  562. package/node_modules/@noble/hashes/sha256.js +0 -23
  563. package/node_modules/@noble/hashes/sha256.js.map +0 -1
  564. package/node_modules/@noble/hashes/sha3-addons.d.ts +0 -142
  565. package/node_modules/@noble/hashes/sha3-addons.d.ts.map +0 -1
  566. package/node_modules/@noble/hashes/sha3-addons.js +0 -402
  567. package/node_modules/@noble/hashes/sha3-addons.js.map +0 -1
  568. package/node_modules/@noble/hashes/sha3.d.ts +0 -53
  569. package/node_modules/@noble/hashes/sha3.d.ts.map +0 -1
  570. package/node_modules/@noble/hashes/sha3.js +0 -239
  571. package/node_modules/@noble/hashes/sha3.js.map +0 -1
  572. package/node_modules/@noble/hashes/sha512.d.ts +0 -26
  573. package/node_modules/@noble/hashes/sha512.d.ts.map +0 -1
  574. package/node_modules/@noble/hashes/sha512.js +0 -29
  575. package/node_modules/@noble/hashes/sha512.js.map +0 -1
  576. package/node_modules/@noble/hashes/src/_assert.ts +0 -22
  577. package/node_modules/@noble/hashes/src/_blake.ts +0 -50
  578. package/node_modules/@noble/hashes/src/_md.ts +0 -176
  579. package/node_modules/@noble/hashes/src/_u64.ts +0 -91
  580. package/node_modules/@noble/hashes/src/argon2.ts +0 -497
  581. package/node_modules/@noble/hashes/src/blake1.ts +0 -534
  582. package/node_modules/@noble/hashes/src/blake2.ts +0 -486
  583. package/node_modules/@noble/hashes/src/blake2b.ts +0 -10
  584. package/node_modules/@noble/hashes/src/blake2s.ts +0 -20
  585. package/node_modules/@noble/hashes/src/blake3.ts +0 -272
  586. package/node_modules/@noble/hashes/src/crypto.ts +0 -9
  587. package/node_modules/@noble/hashes/src/cryptoNode.ts +0 -15
  588. package/node_modules/@noble/hashes/src/eskdf.ts +0 -187
  589. package/node_modules/@noble/hashes/src/hkdf.ts +0 -88
  590. package/node_modules/@noble/hashes/src/hmac.ts +0 -94
  591. package/node_modules/@noble/hashes/src/index.ts +0 -31
  592. package/node_modules/@noble/hashes/src/legacy.ts +0 -293
  593. package/node_modules/@noble/hashes/src/pbkdf2.ts +0 -122
  594. package/node_modules/@noble/hashes/src/ripemd160.ts +0 -12
  595. package/node_modules/@noble/hashes/src/scrypt.ts +0 -257
  596. package/node_modules/@noble/hashes/src/sha1.ts +0 -10
  597. package/node_modules/@noble/hashes/src/sha2.ts +0 -402
  598. package/node_modules/@noble/hashes/src/sha256.ts +0 -24
  599. package/node_modules/@noble/hashes/src/sha3-addons.ts +0 -499
  600. package/node_modules/@noble/hashes/src/sha3.ts +0 -258
  601. package/node_modules/@noble/hashes/src/sha512.ts +0 -34
  602. package/node_modules/@noble/hashes/src/utils.ts +0 -395
  603. package/node_modules/@noble/hashes/utils.d.ts +0 -161
  604. package/node_modules/@noble/hashes/utils.d.ts.map +0 -1
  605. package/node_modules/@noble/hashes/utils.js +0 -313
  606. package/node_modules/@noble/hashes/utils.js.map +0 -1
@@ -1,859 +0,0 @@
1
- // Self-contained worker bundle (no bare imports). See build.mjs.
2
-
3
- // src/transfer.ts
4
- function toOwnedArrayBuffer(view) {
5
- const copy = new Uint8Array(view.byteLength);
6
- copy.set(view);
7
- return copy.buffer;
8
- }
9
-
10
- // src/block-order.ts
11
- var SPAN = 4294967296;
12
- var HALF = 2147483648;
13
- function blockStart(sbn, k) {
14
- return sbn * k % SPAN;
15
- }
16
- function precedingDistance(a, b, k) {
17
- const distance = (blockStart(b, k) - blockStart(a, k) + SPAN) % SPAN;
18
- return distance !== 0 && distance < HALF ? distance : null;
19
- }
20
- function blockPrecedes(a, b, k) {
21
- return precedingDistance(a, b, k) !== null;
22
- }
23
- function blocksBehind(a, b, k) {
24
- const distance = precedingDistance(a, b, k);
25
- return distance === null ? 0 : Math.ceil(distance / k);
26
- }
27
- function serialDistance(from, to) {
28
- return (to - from + SPAN) % SPAN;
29
- }
30
- function serialPrecedes(a, b) {
31
- const distance = serialDistance(a, b);
32
- return distance !== 0 && distance < HALF;
33
- }
34
- function isoBlockContains(ssStart, ssbLength, ssId) {
35
- return serialDistance(ssStart, ssId) < ssbLength;
36
- }
37
- function isoBlocksOverlap(aStart, aLength, bStart, bLength) {
38
- return isoBlockContains(aStart, aLength, bStart) || isoBlockContains(bStart, bLength, aStart);
39
- }
40
- function isoBlocksBehind(a, b, kMax) {
41
- if (!Number.isSafeInteger(kMax) || kMax <= 0) {
42
- throw new Error(`iso-ssbg1-v1 block horizon needs a positive maximum K (got ${kMax})`);
43
- }
44
- return serialPrecedes(a, b) ? Math.floor(serialDistance(a, b) / kMax) : 0;
45
- }
46
-
47
- // src/fec-worker.ts
48
- var wasmDecoder = null;
49
- var config = null;
50
- var altaEnabled = false;
51
- var altaVerifier = null;
52
- var snapshotTimer = null;
53
- var blockUpdatesSubscribed = false;
54
- var blocks = /* @__PURE__ */ new Map();
55
- var acceptedSourceEsis = /* @__PURE__ */ new Map();
56
- var acceptedRepairEsis = /* @__PURE__ */ new Map();
57
- var unplacedSources = /* @__PURE__ */ new Map();
58
- var UINT32_MAX = 4294967295;
59
- var UINT24_MAX = 16777215;
60
- var SS_ID_SPAN = 4294967296;
61
- var SSBG1_LENGTH_FIELD_BYTES = 2;
62
- var MAX_INTERLEAVE_DEPTH = 255;
63
- var MAX_SYMBOL_SIZE = 65528;
64
- var MAX_RAPTORQ_SOURCE_SYMBOLS_PER_BLOCK = 56403;
65
- var sourceSymbols = 0;
66
- var repairSymbols = 0;
67
- var blocksComplete = 0;
68
- var blocksRecovered = 0;
69
- var blocksFailed = 0;
70
- var altaVerified = 0;
71
- var altaFailed = 0;
72
- var altaFailedDetails = [];
73
- var altaPending = 0;
74
- var altaPendingEvictedCap = 0;
75
- var altaPendingEvictedTtl = 0;
76
- var altaError = 0;
77
- var altaInitFailed = false;
78
- var relayBlocksVerified = 0;
79
- var relayBlocksFailed = 0;
80
- var liveSbn = 0;
81
- var liveSbnKnown = false;
82
- var repairSymbolSizeMismatch = 0;
83
- var sourceDroppedRetired = 0;
84
- var sourceDroppedTerminal = 0;
85
- var sourceDroppedDuplicate = 0;
86
- var sourceUnplacedRetired = 0;
87
- var recoveryTimes = [];
88
- var pendingVerify = /* @__PURE__ */ new Map();
89
- var pendingVerifyCap = 0;
90
- var pendingVerifyTtlMs = 0;
91
- function emit(event, transfer) {
92
- self.postMessage(event, transfer ?? []);
93
- }
94
- function isUint32(value) {
95
- return Number.isInteger(value) && value >= 0 && value <= UINT32_MAX;
96
- }
97
- function isTerminalBlock(block) {
98
- return block.state !== "collecting";
99
- }
100
- function retireAcceptedIds(sbn) {
101
- acceptedSourceEsis.delete(sbn);
102
- acceptedRepairEsis.delete(sbn);
103
- }
104
- function clearBlockTracking() {
105
- blocks.clear();
106
- acceptedSourceEsis.clear();
107
- acceptedRepairEsis.clear();
108
- unplacedSources.clear();
109
- pendingVerify.clear();
110
- recoveryTimes.length = 0;
111
- liveSbn = 0;
112
- liveSbnKnown = false;
113
- }
114
- function isRetiredSbn(sbn) {
115
- if (config === null || !liveSbnKnown) return false;
116
- return config.blockProfile === "iso-ssbg1-v1" ? isoBlocksBehind(sbn, liveSbn, config.k) > config.interleaveDepth : blocksBehind(sbn, liveSbn, config.k) > config.interleaveDepth;
117
- }
118
- function isIsoProfile() {
119
- return config?.blockProfile === "iso-ssbg1-v1";
120
- }
121
- function isoKnownLength(block) {
122
- return block.ssbLength ?? 1;
123
- }
124
- function findIsoBlock(ssId) {
125
- for (const block of blocks.values()) {
126
- if (isoBlockContains(block.sbn, isoKnownLength(block), ssId)) return block;
127
- }
128
- return void 0;
129
- }
130
- function isRetiredBlock(key, block) {
131
- return isIsoProfile() ? isRetiredSbn((key + isoKnownLength(block) - 1) % SS_ID_SPAN) : isRetiredSbn(key);
132
- }
133
- function trimBlockRetention() {
134
- for (const [sbn, block] of blocks) {
135
- if (!isTerminalBlock(block) || !isRetiredBlock(sbn, block)) continue;
136
- blocks.delete(sbn);
137
- retireAcceptedIds(sbn);
138
- }
139
- }
140
- function advanceMediaHorizon(sbn) {
141
- if (!config) return;
142
- if (liveSbnKnown) {
143
- const ahead = config.blockProfile === "iso-ssbg1-v1" ? serialPrecedes(liveSbn, sbn) : blockPrecedes(liveSbn, sbn, config.k);
144
- if (!ahead) return;
145
- }
146
- liveSbn = sbn;
147
- liveSbnKnown = true;
148
- trimBlockRetention();
149
- }
150
- function markBlockTerminal(block, state) {
151
- block.state = state;
152
- block.completedTs = performance.now();
153
- retireAcceptedIds(block.sbn);
154
- trimBlockRetention();
155
- }
156
- function synchronizeDecoderHorizon() {
157
- if (!wasmDecoder || !liveSbnKnown) return;
158
- const iso = isIsoProfile();
159
- const expired = iso ? wasmDecoder.cleanup_by_ss_start(liveSbn) : wasmDecoder.cleanup_by_sbn(liveSbn);
160
- for (const sbn of expired) {
161
- const block = blocks.get(sbn);
162
- if (!block || isTerminalBlock(block)) {
163
- retireAcceptedIds(sbn);
164
- continue;
165
- }
166
- markBlockTerminal(block, "failed");
167
- blocksFailed++;
168
- emitBlockUpdate(block);
169
- }
170
- if (iso) retireUnplacedSources();
171
- trimBlockRetention();
172
- }
173
- function retireUnplacedSources() {
174
- for (const ssId of unplacedSources.keys()) {
175
- const unreachable = ssId !== liveSbn && !serialPrecedes(ssId, liveSbn);
176
- if (!unreachable && !isRetiredSbn(ssId)) break;
177
- unplacedSources.delete(ssId);
178
- sourceUnplacedRetired++;
179
- }
180
- }
181
- function getOrCreateBlock(sbn, isoSsbLength) {
182
- let block = blocks.get(sbn);
183
- if (!block) {
184
- if (!config) throw new Error("[FecWorker] not configured");
185
- const now = performance.now();
186
- block = {
187
- sbn,
188
- state: "collecting",
189
- sourceReceived: 0,
190
- repairReceived: 0,
191
- k: isoSsbLength ?? config.k,
192
- repairCount: config.repairCount,
193
- firstSymbolTs: now,
194
- lastSymbolTs: now,
195
- deadlineTs: now + config.deliveryWindowMs,
196
- altaVerified: 0,
197
- relayBlockSigValid: null
198
- };
199
- if (isoSsbLength !== void 0) block.ssbLength = isoSsbLength;
200
- blocks.set(sbn, block);
201
- trimBlockRetention();
202
- }
203
- return block;
204
- }
205
- function buildStatsSnapshot() {
206
- if (!config) throw new Error("[FecWorker] not configured");
207
- const decoderStats = wasmDecoder?.get_stats();
208
- const decoder = decoderStats ? {
209
- sourcePackets: Number(decoderStats.source_packets),
210
- repairPackets: Number(decoderStats.repair_packets),
211
- blocksComplete: Number(decoderStats.blocks_complete),
212
- blocksRecovered: Number(decoderStats.blocks_recovered),
213
- blocksFailed: Number(decoderStats.blocks_failed),
214
- bytesRecovered: Number(decoderStats.bytes_recovered),
215
- pendingBlocks: wasmDecoder?.pending_blocks() ?? 0
216
- } : void 0;
217
- const avgRecoveryMs = recoveryTimes.length > 0 ? recoveryTimes.reduce((a, b) => a + b, 0) / recoveryTimes.length : 0;
218
- const maxRecoveryMs = recoveryTimes.length > 0 ? Math.max(...recoveryTimes) : 0;
219
- const maxBlocks = Math.max(config.interleaveDepth * 3, 24);
220
- const blockArray = Array.from(blocks.values()).sort((a, b) => b.sbn - a.sbn).slice(0, maxBlocks);
221
- return {
222
- config,
223
- sourceSymbols,
224
- repairSymbols,
225
- blocksComplete,
226
- blocksRecovered,
227
- blocksFailed,
228
- recoveryRate: blocksComplete + blocksRecovered > 0 ? Math.round(
229
- blocksRecovered / (blocksRecovered + blocksFailed) * 100
230
- ) || 0 : 0,
231
- altaVerified,
232
- altaFailed,
233
- altaPending,
234
- altaPendingEvictedCap,
235
- altaPendingEvictedTtl,
236
- altaError,
237
- altaInitFailed,
238
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
239
- altaFailedDetails: altaFailedDetails.slice(),
240
- relayBlocksVerified,
241
- relayBlocksFailed,
242
- liveSbn,
243
- blocks: blockArray,
244
- interleaveWindowBlocks: config.interleaveDepth,
245
- avgRecoveryMs: Math.round(avgRecoveryMs * 100) / 100,
246
- maxRecoveryMs: Math.round(maxRecoveryMs * 100) / 100,
247
- repairSymbolSizeMismatch,
248
- sourceDroppedRetired,
249
- sourceDroppedTerminal,
250
- sourceDroppedDuplicate,
251
- ...config.blockProfile === "iso-ssbg1-v1" ? { sourceUnplacedRetired } : {},
252
- decoder
253
- };
254
- }
255
- function emitSnapshot() {
256
- if (!config) return;
257
- emit({ type: "snapshot", stats: buildStatsSnapshot() });
258
- }
259
- function emitBlockUpdate(block) {
260
- if (!blockUpdatesSubscribed) return;
261
- emit({ type: "blockUpdate", block: { ...block } });
262
- }
263
- function emitRecoveredSymbols(sbn, recoveredBlock, block) {
264
- if (!config) return;
265
- const symbolSize = config.symbolSize;
266
- if (symbolSize <= 0) {
267
- emit({
268
- type: "error",
269
- code: "recovered-symbol-size-unconfigured",
270
- message: "[FecWorker] recovered block has no configured symbolSize"
271
- });
272
- return;
273
- }
274
- const ssbLength = block.ssbLength ?? config.k;
275
- if (recoveredBlock.byteLength !== symbolSize * ssbLength) {
276
- emit({
277
- type: "error",
278
- code: "recovered-block-too-short",
279
- message: `[FecWorker] recovered block has the wrong length: got ${recoveredBlock.byteLength}B, expected ${symbolSize * ssbLength}B (SSB_length=${ssbLength})`
280
- });
281
- return;
282
- }
283
- const iso = config.blockProfile === "iso-ssbg1-v1";
284
- for (let i = 0; i < ssbLength; i++) {
285
- const symbol = recoveredBlock.subarray(i * symbolSize, (i + 1) * symbolSize);
286
- if (iso) {
287
- const invalid = invalidSsbg1Symbol(symbol, symbolSize);
288
- if (invalid !== null) {
289
- emit({
290
- type: "error",
291
- code: "recovered-ssbg1-symbol-invalid",
292
- message: `[FecWorker] Dropping recovered ssbg_mode1 symbol (ssStart=${sbn}, esi=${i}, SSB_length=${ssbLength}): ${invalid}`
293
- });
294
- continue;
295
- }
296
- }
297
- const recoveredAltaVerified = null;
298
- if (altaEnabled) altaPending++;
299
- const buf = toOwnedArrayBuffer(symbol);
300
- const meta = {
301
- altaVerified: recoveredAltaVerified,
302
- recovered: true,
303
- sbn,
304
- esi: i,
305
- ssbLength
306
- };
307
- emit({ type: "frame", data: buf, meta }, [buf]);
308
- }
309
- }
310
- function invalidSsbg1Symbol(symbol, symbolSize) {
311
- const length = symbol[0] << 8 | symbol[1];
312
- const maxLength = symbolSize - SSBG1_LENGTH_FIELD_BYTES;
313
- if (length > maxLength) {
314
- return `length field ${length} exceeds T-2 = ${maxLength}`;
315
- }
316
- for (let j = SSBG1_LENGTH_FIELD_BYTES + length; j < symbolSize; j++) {
317
- if (symbol[j] !== 0) return `non-zero padding at byte ${j} after a ${length}-byte packet`;
318
- }
319
- return null;
320
- }
321
- function startSnapshotTimer() {
322
- if (snapshotTimer !== null) clearInterval(snapshotTimer);
323
- snapshotTimer = setInterval(() => emitSnapshot(), 200);
324
- }
325
- function resolveWasmBindings() {
326
- const bindings = self.__MMT_WASM_BINDINGS__;
327
- if (!bindings) {
328
- throw new Error(
329
- "[FecWorker] WASM bindings not available. Set self.__MMT_WASM_BINDINGS__ = { initSync, MmtFecDecoder } before configure."
330
- );
331
- }
332
- return bindings;
333
- }
334
- function verifyDecoderProfile(decoder, expected) {
335
- let actual;
336
- try {
337
- actual = decoder.get_block_profile();
338
- } catch (err) {
339
- decoder.free();
340
- throw new Error(
341
- `[FecWorker] configure: decoder cannot report its block profile (${err instanceof Error ? err.message : String(err)})`
342
- );
343
- }
344
- if (actual !== expected) {
345
- decoder.free();
346
- throw new Error(
347
- `[FecWorker] configure: decoder runs block profile ${JSON.stringify(actual)}, not the configured "${expected}"`
348
- );
349
- }
350
- }
351
- function acceptId(ids, key, id) {
352
- let set = ids.get(key);
353
- if (!set) {
354
- set = /* @__PURE__ */ new Set();
355
- ids.set(key, set);
356
- }
357
- set.add(id);
358
- }
359
- function recordRecovered(key, block, result) {
360
- const recovered = new Uint8Array(toOwnedArrayBuffer(result));
361
- const recoveryMs = performance.now() - block.firstSymbolTs;
362
- recoveryTimes.push(recoveryMs);
363
- if (recoveryTimes.length > 1e3) recoveryTimes.shift();
364
- if (block.state === "collecting") {
365
- markBlockTerminal(block, "recovered");
366
- blocksRecovered++;
367
- emitBlockUpdate(block);
368
- }
369
- emitRecoveredSymbols(key, recovered, block);
370
- }
371
- function settleSourceArrival(key, block, result) {
372
- const authoredLength = block.ssbLength ?? block.k;
373
- if (block.sourceReceived >= authoredLength && block.state === "collecting") {
374
- markBlockTerminal(block, "complete");
375
- blocksComplete++;
376
- emitBlockUpdate(block);
377
- }
378
- if (result && result.byteLength > 0 && block.sourceReceived < authoredLength) {
379
- recordRecovered(key, block, result);
380
- }
381
- synchronizeDecoderHorizon();
382
- }
383
- function settleRepairArrival(key, block, ssbLength, result) {
384
- if (block.sourceReceived >= ssbLength && block.state === "collecting") {
385
- markBlockTerminal(block, "complete");
386
- blocksComplete++;
387
- emitBlockUpdate(block);
388
- } else if (result && result.byteLength > 0) {
389
- recordRecovered(key, block, result);
390
- }
391
- synchronizeDecoderHorizon();
392
- }
393
- function feedIsoSource(cmd, view, decoder, cfg) {
394
- const maxPacketLength = cfg.symbolSize - SSBG1_LENGTH_FIELD_BYTES;
395
- if (view.byteLength > maxPacketLength) {
396
- throw new Error(
397
- `[FecWorker] feedSource: iso-ssbg1-v1 protected packet of ${view.byteLength}B exceeds T-2 = ${maxPacketLength}B`
398
- );
399
- }
400
- const block = findIsoBlock(cmd.ssId);
401
- if (!block) {
402
- if (isRetiredSbn(cmd.ssId)) {
403
- sourceDroppedRetired++;
404
- return;
405
- }
406
- if (unplacedSources.has(cmd.ssId)) {
407
- sourceDroppedDuplicate++;
408
- return;
409
- }
410
- const result2 = decoder.add_source(cmd.ssId, view, cmd.ts);
411
- advanceMediaHorizon(cmd.ssId);
412
- unplacedSources.set(cmd.ssId, performance.now());
413
- sourceSymbols++;
414
- if (altaEnabled) altaPending++;
415
- if (result2 && result2.byteLength > 0) {
416
- emit({
417
- type: "error",
418
- code: "recovered-block-unplaced",
419
- message: `[FecWorker] Dropping a ${result2.byteLength}B recovered block returned for SS_ID ${cmd.ssId}, which no known block contains`
420
- });
421
- }
422
- synchronizeDecoderHorizon();
423
- return;
424
- }
425
- const key = block.sbn;
426
- if (isRetiredSbn(key)) {
427
- sourceDroppedRetired++;
428
- return;
429
- }
430
- if (isTerminalBlock(block)) {
431
- sourceDroppedTerminal++;
432
- return;
433
- }
434
- const esi = serialDistance(key, cmd.ssId);
435
- if (acceptedSourceEsis.get(key)?.has(esi)) {
436
- sourceDroppedDuplicate++;
437
- return;
438
- }
439
- const result = decoder.add_source(cmd.ssId, view, cmd.ts);
440
- advanceMediaHorizon(cmd.ssId);
441
- acceptId(acceptedSourceEsis, key, esi);
442
- block.sourceReceived++;
443
- block.lastSymbolTs = performance.now();
444
- sourceSymbols++;
445
- if (altaEnabled) altaPending++;
446
- settleSourceArrival(key, block, result);
447
- }
448
- function findOverlappingIsoBlock(ssStart, ssbLength) {
449
- for (const block of blocks.values()) {
450
- if (isoBlocksOverlap(block.sbn, isoKnownLength(block), ssStart, ssbLength)) return block;
451
- }
452
- return void 0;
453
- }
454
- function placeIsoBlock(ssStart, ssbLength) {
455
- const block = getOrCreateBlock(ssStart, ssbLength);
456
- for (let esi = 0; esi < ssbLength; esi++) {
457
- const ssId = (ssStart + esi) % SS_ID_SPAN;
458
- const arrivalTs = unplacedSources.get(ssId);
459
- if (arrivalTs === void 0) continue;
460
- unplacedSources.delete(ssId);
461
- acceptId(acceptedSourceEsis, ssStart, esi);
462
- block.sourceReceived++;
463
- if (arrivalTs < block.firstSymbolTs) block.firstSymbolTs = arrivalTs;
464
- }
465
- return block;
466
- }
467
- function feedIsoRepair(cmd, view, decoder) {
468
- const key = cmd.ssStart;
469
- if (isRetiredSbn(key)) return;
470
- const existingBlock = blocks.get(key);
471
- if (existingBlock && isTerminalBlock(existingBlock)) return;
472
- if (existingBlock) {
473
- if (existingBlock.ssbLength !== cmd.ssbLength) {
474
- emit({
475
- type: "error",
476
- code: "repair-ssb-length-conflict",
477
- message: `[FecWorker] Dropping repair symbol whose SSB_length ${cmd.ssbLength} conflicts with ${existingBlock.ssbLength} (ssStart=${key})`
478
- });
479
- return;
480
- }
481
- } else {
482
- const overlapped = findOverlappingIsoBlock(key, cmd.ssbLength);
483
- if (overlapped) {
484
- emit({
485
- type: "error",
486
- code: "repair-block-overlap",
487
- message: `[FecWorker] Dropping repair symbol whose block (ssStart=${key}, SSB_length=${cmd.ssbLength}) overlaps known block (ssStart=${overlapped.sbn}, SSB_length=${isoKnownLength(overlapped)})`
488
- });
489
- return;
490
- }
491
- }
492
- const repairEsi = cmd.ssbLength + cmd.rsId;
493
- if (acceptedRepairEsis.get(key)?.has(repairEsi)) return;
494
- const result = decoder.add_repair(key, cmd.ssbLength, cmd.rsId, view, cmd.ts);
495
- advanceMediaHorizon(key);
496
- const block = existingBlock ?? placeIsoBlock(key, cmd.ssbLength);
497
- acceptId(acceptedRepairEsis, key, repairEsi);
498
- block.repairReceived++;
499
- block.lastSymbolTs = performance.now();
500
- repairSymbols++;
501
- settleRepairArrival(key, block, cmd.ssbLength, result);
502
- }
503
- async function handleConfigure(cmd) {
504
- if (!cmd.wasmModule) {
505
- throw new Error("[FecWorker] configure: wasmModule required");
506
- }
507
- if (!cmd.config) {
508
- throw new Error("[FecWorker] configure: config required");
509
- }
510
- const blockProfile = cmd.config.blockProfile;
511
- if (blockProfile === void 0) {
512
- throw new Error(
513
- '[FecWorker] configure: blockProfile is required: name the FEC block profile ("k-padded-v1" or "iso-ssbg1-v1")'
514
- );
515
- }
516
- if (blockProfile !== "k-padded-v1" && blockProfile !== "iso-ssbg1-v1") {
517
- throw new Error(
518
- `[FecWorker] configure: blockProfile must be "k-padded-v1" or "iso-ssbg1-v1" (got ${JSON.stringify(blockProfile)})`
519
- );
520
- }
521
- if (!Number.isFinite(cmd.config.interleaveDepth) || !Number.isInteger(cmd.config.interleaveDepth) || cmd.config.interleaveDepth <= 0 || cmd.config.interleaveDepth > MAX_INTERLEAVE_DEPTH) {
522
- throw new Error(
523
- `[FecWorker] configure: interleaveDepth must be an integer in 1..${MAX_INTERLEAVE_DEPTH} (got ${cmd.config.interleaveDepth})`
524
- );
525
- }
526
- if (!Number.isFinite(cmd.config.interleaveMs) || cmd.config.interleaveMs <= 0) {
527
- throw new Error(
528
- `[FecWorker] configure: interleaveMs must be finite and > 0 (got ${cmd.config.interleaveMs})`
529
- );
530
- }
531
- if (!Number.isFinite(cmd.config.deliveryWindowMs) || cmd.config.deliveryWindowMs <= 0) {
532
- throw new Error(
533
- `[FecWorker] configure: deliveryWindowMs must be > 0 (got ${cmd.config.deliveryWindowMs})`
534
- );
535
- }
536
- if (!Number.isInteger(cmd.config.k) || cmd.config.k <= 0 || cmd.config.k > MAX_RAPTORQ_SOURCE_SYMBOLS_PER_BLOCK) {
537
- throw new Error(
538
- `[FecWorker] configure: k must be an integer in 1..${MAX_RAPTORQ_SOURCE_SYMBOLS_PER_BLOCK} (got ${cmd.config.k})`
539
- );
540
- }
541
- if (!Number.isInteger(cmd.config.symbolSize) || cmd.config.symbolSize <= 0 || cmd.config.symbolSize > MAX_SYMBOL_SIZE || cmd.config.symbolSize % 8 !== 0) {
542
- throw new Error(
543
- `[FecWorker] configure: symbolSize must be an 8-byte-aligned integer in 8..${MAX_SYMBOL_SIZE} (got ${cmd.config.symbolSize})`
544
- );
545
- }
546
- const wasm = resolveWasmBindings();
547
- wasm.initSync({ module: cmd.wasmModule });
548
- wasmDecoder?.free();
549
- wasmDecoder = null;
550
- clearBlockTracking();
551
- const decoder = new wasm.MmtFecDecoder(cmd.config.interleaveDepth, blockProfile);
552
- verifyDecoderProfile(decoder, blockProfile);
553
- wasmDecoder = decoder;
554
- config = cmd.config;
555
- altaEnabled = !!cmd.altaPublicKey;
556
- pendingVerifyCap = Math.ceil(config.interleaveDepth * 1.5);
557
- pendingVerifyTtlMs = Math.ceil(config.interleaveMs * config.k * 1.5);
558
- altaVerifier = null;
559
- altaInitFailed = false;
560
- if (cmd.altaPublicKey && cmd.altaWasmModule) {
561
- try {
562
- const altaGlueUrl = "/wasm/alta/alta_rs.js";
563
- const altaGlue = await import(
564
- /* webpackIgnore: true */
565
- altaGlueUrl
566
- );
567
- altaGlue.initSync({ module: cmd.altaWasmModule });
568
- const keyBytes = new Uint8Array(cmd.altaPublicKey);
569
- altaVerifier = new altaGlue.JsAltaVerifier(keyBytes);
570
- } catch (e) {
571
- console.warn("[FecWorker] ALTA WASM init failed, verification disabled:", e);
572
- altaVerifier = null;
573
- altaEnabled = false;
574
- altaInitFailed = true;
575
- }
576
- }
577
- wasmDecoder.configure_params(config.k, config.symbolSize);
578
- emit({ type: "capabilities", commands: ["feedSymbols", "subscribeBlockUpdates"] });
579
- startSnapshotTimer();
580
- emitSnapshot();
581
- }
582
- function handleFeedSource(cmd) {
583
- if (!wasmDecoder) {
584
- throw new Error("[FecWorker] feedSource: not configured");
585
- }
586
- if (!config) {
587
- throw new Error("[FecWorker] feedSource: config missing");
588
- }
589
- if (!isUint32(cmd.ssId) || !(cmd.data instanceof ArrayBuffer)) {
590
- throw new Error("[FecWorker] feedSource: invalid source symbol");
591
- }
592
- const view = new Uint8Array(cmd.data);
593
- if (config.blockProfile === "iso-ssbg1-v1") {
594
- feedIsoSource(cmd, view, wasmDecoder, config);
595
- return;
596
- }
597
- const sbn = config.k > 0 ? Math.floor(cmd.ssId / config.k) : cmd.ssId;
598
- const esi = cmd.ssId % config.k;
599
- if (isRetiredSbn(sbn)) {
600
- sourceDroppedRetired++;
601
- return;
602
- }
603
- const existingBlock = blocks.get(sbn);
604
- if (existingBlock && isTerminalBlock(existingBlock)) {
605
- sourceDroppedTerminal++;
606
- return;
607
- }
608
- if (acceptedSourceEsis.get(sbn)?.has(esi)) {
609
- sourceDroppedDuplicate++;
610
- return;
611
- }
612
- const result = wasmDecoder.add_source(cmd.ssId, view, cmd.ts);
613
- advanceMediaHorizon(sbn);
614
- let sourceEsis = acceptedSourceEsis.get(sbn);
615
- if (!sourceEsis) {
616
- sourceEsis = /* @__PURE__ */ new Set();
617
- acceptedSourceEsis.set(sbn, sourceEsis);
618
- }
619
- sourceEsis.add(esi);
620
- const block = getOrCreateBlock(sbn);
621
- block.sourceReceived++;
622
- block.lastSymbolTs = performance.now();
623
- sourceSymbols++;
624
- if (altaEnabled) altaPending++;
625
- settleSourceArrival(sbn, block, result);
626
- }
627
- function handleFeedRepair(cmd) {
628
- if (!wasmDecoder) {
629
- throw new Error("[FecWorker] feedRepair: not configured");
630
- }
631
- if (!config) {
632
- throw new Error("[FecWorker] feedRepair: config missing");
633
- }
634
- const iso = config.blockProfile === "iso-ssbg1-v1";
635
- if (!isUint32(cmd.ssStart) || !isUint32(cmd.ssbLength) || cmd.ssbLength <= 0 || cmd.ssbLength > config.k || !iso && cmd.ssStart % config.k !== 0 || !isUint32(cmd.rsId) || (iso ? cmd.ssbLength : config.k) + cmd.rsId > UINT24_MAX || !(cmd.data instanceof ArrayBuffer)) {
636
- throw new Error("[FecWorker] feedRepair: invalid repair symbol");
637
- }
638
- const view = new Uint8Array(cmd.data);
639
- if (config.symbolSize > 0 && view.byteLength !== config.symbolSize) {
640
- repairSymbolSizeMismatch++;
641
- if (repairSymbolSizeMismatch <= 5 || repairSymbolSizeMismatch % 100 === 0) {
642
- emit({
643
- type: "error",
644
- code: "repair-symbol-size-mismatch",
645
- message: `[FecWorker] Dropping repair symbol with invalid size: got ${view.byteLength}B, expected ${config.symbolSize}B (ssStart=${cmd.ssStart}, ssbLength=${cmd.ssbLength}, rsId=${cmd.rsId})`
646
- });
647
- }
648
- return;
649
- }
650
- if (iso) {
651
- feedIsoRepair(cmd, view, wasmDecoder);
652
- return;
653
- }
654
- const sbn = Math.floor(cmd.ssStart / config.k);
655
- const repairEsi = config.k + cmd.rsId;
656
- if (isRetiredSbn(sbn)) return;
657
- const existingBlock = blocks.get(sbn);
658
- if (existingBlock && isTerminalBlock(existingBlock)) return;
659
- if (acceptedRepairEsis.get(sbn)?.has(repairEsi)) return;
660
- if (existingBlock?.ssbLength !== void 0 && existingBlock.ssbLength !== cmd.ssbLength) {
661
- emit({
662
- type: "error",
663
- code: "repair-ssb-length-conflict",
664
- message: `[FecWorker] Dropping repair symbol whose SSB_length ${cmd.ssbLength} conflicts with ${existingBlock.ssbLength} (sbn=${sbn})`
665
- });
666
- return;
667
- }
668
- const result = wasmDecoder.add_repair(
669
- cmd.ssStart,
670
- cmd.ssbLength,
671
- cmd.rsId,
672
- view,
673
- cmd.ts
674
- );
675
- advanceMediaHorizon(sbn);
676
- let repairEsis = acceptedRepairEsis.get(sbn);
677
- if (!repairEsis) {
678
- repairEsis = /* @__PURE__ */ new Set();
679
- acceptedRepairEsis.set(sbn, repairEsis);
680
- }
681
- repairEsis.add(repairEsi);
682
- const block = getOrCreateBlock(sbn);
683
- block.ssbLength = cmd.ssbLength;
684
- block.repairReceived++;
685
- block.lastSymbolTs = performance.now();
686
- repairSymbols++;
687
- settleRepairArrival(sbn, block, cmd.ssbLength, result);
688
- }
689
- function handleRelayBlockSig(cmd) {
690
- const block = blocks.get(cmd.sbn);
691
- if (block) {
692
- block.relayBlockSigValid = null;
693
- emitBlockUpdate(block);
694
- }
695
- }
696
- function handleCleanup(cmd) {
697
- if (!Array.isArray(cmd.sbns) || cmd.sbns.length === 0 || !cmd.sbns.every(isUint32)) {
698
- throw new Error("[FecWorker] cleanup: invalid SBNs");
699
- }
700
- const sbns = [...new Set(cmd.sbns)].sort((a, b) => a - b);
701
- const pendingSbns = sbns.filter((sbn) => !isRetiredSbn(sbn));
702
- try {
703
- if (!wasmDecoder) {
704
- throw new Error("[FecWorker] cleanup: not configured");
705
- }
706
- if (pendingSbns.length > 0) {
707
- wasmDecoder.cleanup_blocks_detailed(Uint32Array.from(pendingSbns));
708
- }
709
- for (const sbn of pendingSbns) {
710
- let currentBlock = blocks.get(sbn);
711
- if (currentBlock && isTerminalBlock(currentBlock)) {
712
- retireAcceptedIds(sbn);
713
- continue;
714
- }
715
- currentBlock ??= getOrCreateBlock(sbn);
716
- const authoredLength = isIsoProfile() ? currentBlock.ssbLength : currentBlock.k;
717
- if (authoredLength !== void 0 && currentBlock.sourceReceived >= authoredLength) {
718
- markBlockTerminal(currentBlock, "complete");
719
- blocksComplete++;
720
- } else {
721
- markBlockTerminal(currentBlock, "failed");
722
- blocksFailed++;
723
- }
724
- emitBlockUpdate(currentBlock);
725
- }
726
- } finally {
727
- emit({ type: "cleanupComplete", sbns });
728
- }
729
- }
730
- function handleDispose() {
731
- if (snapshotTimer !== null) {
732
- clearInterval(snapshotTimer);
733
- snapshotTimer = null;
734
- }
735
- if (altaVerifier) {
736
- try {
737
- altaVerifier.free();
738
- } catch (_e) {
739
- }
740
- altaVerifier = null;
741
- }
742
- if (wasmDecoder) {
743
- wasmDecoder.free();
744
- wasmDecoder = null;
745
- }
746
- pendingVerify.clear();
747
- pendingVerifyCap = 0;
748
- pendingVerifyTtlMs = 0;
749
- config = null;
750
- clearBlockTracking();
751
- }
752
- function handleReset() {
753
- try {
754
- wasmDecoder?.flush();
755
- wasmDecoder?.reset_stats();
756
- } catch (err) {
757
- emit({
758
- type: "error",
759
- code: "reset-failed",
760
- message: err instanceof Error ? `[FecWorker] reset failed: ${err.message}` : `[FecWorker] reset failed: ${String(err)}`
761
- });
762
- return;
763
- }
764
- clearBlockTracking();
765
- sourceSymbols = 0;
766
- repairSymbols = 0;
767
- blocksComplete = 0;
768
- blocksRecovered = 0;
769
- blocksFailed = 0;
770
- altaVerified = 0;
771
- altaFailed = 0;
772
- altaFailedDetails.length = 0;
773
- altaPending = 0;
774
- altaPendingEvictedCap = 0;
775
- altaPendingEvictedTtl = 0;
776
- altaError = 0;
777
- relayBlocksVerified = 0;
778
- relayBlocksFailed = 0;
779
- repairSymbolSizeMismatch = 0;
780
- sourceDroppedRetired = 0;
781
- sourceDroppedTerminal = 0;
782
- sourceDroppedDuplicate = 0;
783
- sourceUnplacedRetired = 0;
784
- emit({ type: "resetComplete" });
785
- if (config) emitSnapshot();
786
- }
787
- function handleFeedSymbols(cmd) {
788
- if (!Array.isArray(cmd.symbols)) {
789
- throw new Error("[FecWorker] feedSymbols: symbols must be an array");
790
- }
791
- for (const symbol of cmd.symbols) {
792
- try {
793
- if (symbol?.type === "feedSource") handleFeedSource(symbol);
794
- else if (symbol?.type === "feedRepair") handleFeedRepair(symbol);
795
- else {
796
- throw new Error(
797
- `[FecWorker] feedSymbols: unknown symbol type ${String(symbol?.type)}`
798
- );
799
- }
800
- } catch (err) {
801
- emit({
802
- type: "error",
803
- code: "command-failed",
804
- message: err instanceof Error ? err.message : `[FecWorker] ${String(err)}`
805
- });
806
- }
807
- }
808
- }
809
- async function dispatchCommand(cmd) {
810
- try {
811
- switch (cmd.type) {
812
- case "configure":
813
- await handleConfigure(cmd);
814
- break;
815
- case "feedSource":
816
- handleFeedSource(cmd);
817
- break;
818
- case "feedRepair":
819
- handleFeedRepair(cmd);
820
- break;
821
- case "feedSymbols":
822
- handleFeedSymbols(cmd);
823
- break;
824
- case "relayBlockSig":
825
- handleRelayBlockSig(cmd);
826
- break;
827
- case "cleanup":
828
- handleCleanup(cmd);
829
- break;
830
- case "reset":
831
- handleReset();
832
- break;
833
- case "subscribeBlockUpdates":
834
- blockUpdatesSubscribed = true;
835
- break;
836
- case "dispose":
837
- handleDispose();
838
- break;
839
- default:
840
- emit({
841
- type: "error",
842
- code: "unknown-command",
843
- message: `Unknown command type: ${cmd.type}`
844
- });
845
- }
846
- } catch (err) {
847
- emit({
848
- type: "error",
849
- code: "command-failed",
850
- message: err instanceof Error ? err.message : `[FecWorker] ${String(err)}`
851
- });
852
- }
853
- }
854
- var commandQueue = Promise.resolve();
855
- self.onmessage = (e) => {
856
- const cmd = e.data;
857
- commandQueue = commandQueue.then(() => dispatchCommand(cmd));
858
- };
859
- //# sourceMappingURL=fec-worker.js.map