@blockcast/mmt-container 0.3.0 → 0.4.0-main.d6f2737828fc

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 (588) hide show
  1. package/README.md +22 -8
  2. package/dist/browser-runtime.js +1185 -1049
  3. package/dist/browser-runtime.js.map +4 -4
  4. package/dist/carp-catalog.d.ts +24 -8
  5. package/dist/carp-catalog.d.ts.map +1 -1
  6. package/dist/carp-catalog.js +21 -8
  7. package/dist/carp-catalog.js.map +2 -2
  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 +59 -17
  11. package/dist/catalog-fec-params.js.map +3 -3
  12. package/dist/catalog-network-source.js +0 -1
  13. package/dist/catalog-network-source.js.map +2 -2
  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/delta-fallback-config.d.ts +42 -0
  19. package/dist/delta-fallback-config.d.ts.map +1 -0
  20. package/dist/delta-fallback-config.js +59 -0
  21. package/dist/delta-fallback-config.js.map +7 -0
  22. package/dist/fec-manager.d.ts +35 -26
  23. package/dist/fec-manager.d.ts.map +1 -1
  24. package/dist/fec-manager.js +300 -273
  25. package/dist/fec-manager.js.map +2 -2
  26. package/dist/fec-state.d.ts +19 -31
  27. package/dist/fec-state.d.ts.map +1 -1
  28. package/dist/fec-state.js +3 -4
  29. package/dist/fec-state.js.map +2 -2
  30. package/dist/fec-worker-setup.d.ts +16 -6
  31. package/dist/fec-worker-setup.d.ts.map +1 -1
  32. package/dist/fec-worker-setup.js +72 -34
  33. package/dist/fec-worker-setup.js.map +2 -2
  34. package/dist/index.d.ts +4 -3
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +12 -0
  37. package/dist/index.js.map +2 -2
  38. package/dist/iso-block-locator.js +0 -1
  39. package/dist/iso-block-locator.js.map +2 -2
  40. package/dist/media-router.d.ts +20 -8
  41. package/dist/media-router.d.ts.map +1 -1
  42. package/dist/media-router.js +46 -21
  43. package/dist/media-router.js.map +2 -2
  44. package/dist/mfu-reassembler.js +0 -1
  45. package/dist/mfu-reassembler.js.map +2 -2
  46. package/dist/mmtp-container-parser.d.ts +5 -0
  47. package/dist/mmtp-container-parser.d.ts.map +1 -1
  48. package/dist/mmtp-container-parser.js +22 -1
  49. package/dist/mmtp-container-parser.js.map +2 -2
  50. package/dist/mmtp-container-parser.no-modules.js +37 -9
  51. package/dist/mmtp-container-parser.no-modules.js.map +2 -2
  52. package/dist/mmtp-decode-pipeline.js +22 -1
  53. package/dist/mmtp-decode-pipeline.js.map +2 -2
  54. package/dist/mmtp-router.d.ts +36 -16
  55. package/dist/mmtp-router.d.ts.map +1 -1
  56. package/dist/mmtp-router.js +126 -213
  57. package/dist/mmtp-router.js.map +2 -2
  58. package/dist/multicast-input.js +0 -1
  59. package/dist/multicast-input.js.map +2 -2
  60. package/dist/multicast-manager.d.ts +33 -3
  61. package/dist/multicast-manager.d.ts.map +1 -1
  62. package/dist/multicast-manager.js +660 -529
  63. package/dist/multicast-manager.js.map +4 -4
  64. package/dist/multicast-transport.d.ts +1 -1
  65. package/dist/multicast-transport.d.ts.map +1 -1
  66. package/dist/multicast-transport.js +42 -14
  67. package/dist/multicast-transport.js.map +3 -3
  68. package/dist/multicast-unwrap.js +0 -1
  69. package/dist/multicast-unwrap.js.map +2 -2
  70. package/dist/no-modules.js +36 -8
  71. package/dist/no-modules.js.map +2 -2
  72. package/dist/repair-fetch.d.ts +30 -19
  73. package/dist/repair-fetch.d.ts.map +1 -1
  74. package/dist/repair-fetch.js +32 -18
  75. package/dist/repair-fetch.js.map +3 -3
  76. package/dist/repair-layers.d.ts +18 -7
  77. package/dist/repair-layers.d.ts.map +1 -1
  78. package/dist/repair-layers.js +11 -4
  79. package/dist/repair-layers.js.map +2 -2
  80. package/dist/signaling.js +0 -4
  81. package/dist/signaling.js.map +2 -2
  82. package/dist/timestamp-codec.js +0 -1
  83. package/dist/timestamp-codec.js.map +2 -2
  84. package/dist/track-session.d.ts +7 -0
  85. package/dist/track-session.d.ts.map +1 -1
  86. package/dist/track-session.js +15 -8
  87. package/dist/track-session.js.map +2 -2
  88. package/dist/wasm-mfu-reassembler.js +0 -1
  89. package/dist/wasm-mfu-reassembler.js.map +2 -2
  90. package/dist/wasm-mmtp-container-parser.js +22 -1
  91. package/dist/wasm-mmtp-container-parser.js.map +2 -2
  92. package/package.json +8 -14
  93. package/schemas/catalog.schema.json +3 -3
  94. package/src/carp-catalog.ts +35 -13
  95. package/src/catalog-fec-params.ts +173 -64
  96. package/src/cmaf-block-assembler.ts +1 -4
  97. package/src/delta-fallback-config.ts +72 -0
  98. package/src/fec-manager.ts +413 -317
  99. package/src/fec-state.ts +20 -32
  100. package/src/fec-worker-setup.ts +105 -55
  101. package/src/index.ts +10 -0
  102. package/src/media-router.ts +59 -21
  103. package/src/mmtp-container-parser.ts +26 -0
  104. package/src/mmtp-router.ts +145 -303
  105. package/src/multicast-manager.ts +172 -60
  106. package/src/multicast-transport.ts +16 -9
  107. package/src/repair-fetch.ts +46 -27
  108. package/src/repair-layers.ts +28 -8
  109. package/src/track-session.ts +28 -9
  110. package/test-vectors/catalog/README.md +34 -17
  111. package/test-vectors/catalog/negative/fec-block-profile-retired.json +52 -0
  112. package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +1 -1
  113. package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +1 -1
  114. package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +1 -1
  115. package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +1 -1
  116. package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +1 -1
  117. package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +1 -1
  118. package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +1 -1
  119. package/test-vectors/catalog/negative/multicast-network-source-empty.json +1 -1
  120. package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +1 -1
  121. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +1 -1
  122. package/test-vectors/catalog/positive/fec-layered-repair.json +2 -2
  123. package/test-vectors/catalog/positive/fec-multicast.json +2 -1
  124. package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +2 -1
  125. package/test-vectors/catalog-timing.json +356 -0
  126. package/test-vectors/catalog-validation.json +40 -5
  127. package/node_modules/@blockcast/fec-worker/README.md +0 -223
  128. package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
  129. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +0 -38
  130. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +0 -1
  131. package/node_modules/@blockcast/fec-worker/dist/block-order.js +0 -78
  132. package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +0 -1
  133. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +0 -93
  134. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +0 -1
  135. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +0 -346
  136. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +0 -1
  137. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +0 -380
  138. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +0 -1
  139. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +0 -11
  140. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +0 -1
  141. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +0 -14
  142. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +0 -1
  143. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +0 -859
  144. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +0 -7
  145. package/node_modules/@blockcast/fec-worker/dist/index.d.ts +0 -10
  146. package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +0 -1
  147. package/node_modules/@blockcast/fec-worker/dist/index.js +0 -8
  148. package/node_modules/@blockcast/fec-worker/dist/index.js.map +0 -1
  149. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +0 -20
  150. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +0 -1
  151. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +0 -370
  152. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +0 -7
  153. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +0 -104
  154. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +0 -1
  155. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +0 -181
  156. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +0 -1
  157. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +0 -194
  158. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +0 -1
  159. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +0 -62
  160. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +0 -1
  161. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +0 -9
  162. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +0 -1
  163. package/node_modules/@blockcast/fec-worker/dist/transfer.js +0 -13
  164. package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +0 -1
  165. package/node_modules/@blockcast/fec-worker/package.json +0 -59
  166. package/node_modules/@blockcast/fec-worker/src/block-order.ts +0 -93
  167. package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +0 -392
  168. package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +0 -399
  169. package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +0 -1502
  170. package/node_modules/@blockcast/fec-worker/src/index.ts +0 -35
  171. package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +0 -589
  172. package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +0 -222
  173. package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +0 -209
  174. package/node_modules/@blockcast/fec-worker/src/transfer.ts +0 -12
  175. package/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
  176. package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  177. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +0 -57
  178. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
  179. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
  180. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
  181. package/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
  182. package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
  183. package/node_modules/@blockcast/mmt-base/README.md +0 -134
  184. package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  185. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +0 -55
  186. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
  187. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
  188. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
  189. package/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
  190. package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
  191. package/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
  192. package/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
  193. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
  194. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
  195. package/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
  196. package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
  197. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
  198. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
  199. package/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
  200. package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
  201. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
  202. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
  203. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
  204. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
  205. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
  206. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
  207. package/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
  208. package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
  209. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
  210. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
  211. package/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
  212. package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
  213. package/node_modules/@blockcast/mmt-base/package.json +0 -49
  214. package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
  215. package/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
  216. package/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
  217. package/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
  218. package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
  219. package/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
  220. package/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
  221. package/node_modules/@blockcast/mmt-fec/README.md +0 -271
  222. package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
  223. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +0 -82
  224. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +0 -1
  225. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +0 -296
  226. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +0 -1
  227. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +0 -106
  228. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +0 -1
  229. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +0 -288
  230. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +0 -1
  231. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +0 -46
  232. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +0 -1
  233. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +0 -96
  234. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +0 -1
  235. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +0 -33
  236. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +0 -1
  237. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +0 -57
  238. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +0 -1
  239. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +0 -205
  240. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +0 -1
  241. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +0 -240
  242. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +0 -1
  243. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +0 -28
  244. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +0 -1
  245. package/node_modules/@blockcast/mmt-fec/dist/index.js +0 -28
  246. package/node_modules/@blockcast/mmt-fec/dist/index.js.map +0 -1
  247. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +0 -20
  248. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +0 -1
  249. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +0 -28
  250. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +0 -1
  251. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +0 -258
  252. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +0 -1
  253. package/node_modules/@blockcast/mmt-fec/dist/oti.js +0 -382
  254. package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +0 -1
  255. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +0 -41
  256. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +0 -1
  257. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +0 -81
  258. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +0 -1
  259. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts +0 -82
  260. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts.map +0 -1
  261. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js +0 -170
  262. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js.map +0 -1
  263. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
  264. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  265. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +0 -57
  266. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
  267. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
  268. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
  269. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
  270. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
  271. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +0 -134
  272. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  273. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +0 -55
  274. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
  275. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
  276. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
  277. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
  278. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
  279. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
  280. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
  281. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
  282. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
  283. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
  284. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
  285. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
  286. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
  287. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
  288. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
  289. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
  290. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
  291. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
  292. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
  293. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
  294. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
  295. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
  296. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
  297. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
  298. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
  299. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
  300. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
  301. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +0 -49
  302. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
  303. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
  304. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
  305. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
  306. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
  307. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
  308. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
  309. package/node_modules/@blockcast/mmt-fec/package.json +0 -79
  310. package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +0 -371
  311. package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +0 -439
  312. package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +0 -127
  313. package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +0 -68
  314. package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +0 -310
  315. package/node_modules/@blockcast/mmt-fec/src/index.ts +0 -94
  316. package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +0 -34
  317. package/node_modules/@blockcast/mmt-fec/src/oti.ts +0 -463
  318. package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +0 -101
  319. package/node_modules/@blockcast/mmt-fec/src/repair-group.ts +0 -195
  320. package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
  321. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +0 -28
  322. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +0 -1
  323. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +0 -128
  324. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +0 -1
  325. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +0 -4
  326. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +0 -1
  327. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +0 -4
  328. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +0 -1
  329. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +0 -37
  330. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +0 -1
  331. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +0 -179
  332. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +0 -1
  333. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +0 -99
  334. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +0 -1
  335. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +0 -492
  336. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +0 -1
  337. package/node_modules/@blockcast/mmt-manifest-verify/package.json +0 -45
  338. package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +0 -171
  339. package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +0 -3
  340. package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +0 -230
  341. package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +0 -669
  342. package/node_modules/@noble/hashes/LICENSE +0 -21
  343. package/node_modules/@noble/hashes/README.md +0 -521
  344. package/node_modules/@noble/hashes/_assert.d.ts +0 -17
  345. package/node_modules/@noble/hashes/_assert.d.ts.map +0 -1
  346. package/node_modules/@noble/hashes/_assert.js +0 -18
  347. package/node_modules/@noble/hashes/_assert.js.map +0 -1
  348. package/node_modules/@noble/hashes/_blake.d.ts +0 -14
  349. package/node_modules/@noble/hashes/_blake.d.ts.map +0 -1
  350. package/node_modules/@noble/hashes/_blake.js +0 -50
  351. package/node_modules/@noble/hashes/_blake.js.map +0 -1
  352. package/node_modules/@noble/hashes/_md.d.ts +0 -51
  353. package/node_modules/@noble/hashes/_md.d.ts.map +0 -1
  354. package/node_modules/@noble/hashes/_md.js +0 -162
  355. package/node_modules/@noble/hashes/_md.js.map +0 -1
  356. package/node_modules/@noble/hashes/_u64.d.ts +0 -55
  357. package/node_modules/@noble/hashes/_u64.d.ts.map +0 -1
  358. package/node_modules/@noble/hashes/_u64.js +0 -90
  359. package/node_modules/@noble/hashes/_u64.js.map +0 -1
  360. package/node_modules/@noble/hashes/argon2.d.ts +0 -32
  361. package/node_modules/@noble/hashes/argon2.d.ts.map +0 -1
  362. package/node_modules/@noble/hashes/argon2.js +0 -401
  363. package/node_modules/@noble/hashes/argon2.js.map +0 -1
  364. package/node_modules/@noble/hashes/blake1.d.ts +0 -106
  365. package/node_modules/@noble/hashes/blake1.d.ts.map +0 -1
  366. package/node_modules/@noble/hashes/blake1.js +0 -459
  367. package/node_modules/@noble/hashes/blake1.js.map +0 -1
  368. package/node_modules/@noble/hashes/blake2.d.ts +0 -116
  369. package/node_modules/@noble/hashes/blake2.d.ts.map +0 -1
  370. package/node_modules/@noble/hashes/blake2.js +0 -420
  371. package/node_modules/@noble/hashes/blake2.js.map +0 -1
  372. package/node_modules/@noble/hashes/blake2b.d.ts +0 -11
  373. package/node_modules/@noble/hashes/blake2b.d.ts.map +0 -1
  374. package/node_modules/@noble/hashes/blake2b.js +0 -14
  375. package/node_modules/@noble/hashes/blake2b.js.map +0 -1
  376. package/node_modules/@noble/hashes/blake2s.d.ts +0 -20
  377. package/node_modules/@noble/hashes/blake2s.d.ts.map +0 -1
  378. package/node_modules/@noble/hashes/blake2s.js +0 -24
  379. package/node_modules/@noble/hashes/blake2s.js.map +0 -1
  380. package/node_modules/@noble/hashes/blake3.d.ts +0 -54
  381. package/node_modules/@noble/hashes/blake3.d.ts.map +0 -1
  382. package/node_modules/@noble/hashes/blake3.js +0 -255
  383. package/node_modules/@noble/hashes/blake3.js.map +0 -1
  384. package/node_modules/@noble/hashes/crypto.d.ts +0 -2
  385. package/node_modules/@noble/hashes/crypto.d.ts.map +0 -1
  386. package/node_modules/@noble/hashes/crypto.js +0 -5
  387. package/node_modules/@noble/hashes/crypto.js.map +0 -1
  388. package/node_modules/@noble/hashes/cryptoNode.d.ts +0 -2
  389. package/node_modules/@noble/hashes/cryptoNode.d.ts.map +0 -1
  390. package/node_modules/@noble/hashes/cryptoNode.js +0 -18
  391. package/node_modules/@noble/hashes/cryptoNode.js.map +0 -1
  392. package/node_modules/@noble/hashes/eskdf.d.ts +0 -47
  393. package/node_modules/@noble/hashes/eskdf.d.ts.map +0 -1
  394. package/node_modules/@noble/hashes/eskdf.js +0 -166
  395. package/node_modules/@noble/hashes/eskdf.js.map +0 -1
  396. package/node_modules/@noble/hashes/esm/_assert.d.ts +0 -17
  397. package/node_modules/@noble/hashes/esm/_assert.d.ts.map +0 -1
  398. package/node_modules/@noble/hashes/esm/_assert.js +0 -15
  399. package/node_modules/@noble/hashes/esm/_assert.js.map +0 -1
  400. package/node_modules/@noble/hashes/esm/_blake.d.ts +0 -14
  401. package/node_modules/@noble/hashes/esm/_blake.d.ts.map +0 -1
  402. package/node_modules/@noble/hashes/esm/_blake.js +0 -45
  403. package/node_modules/@noble/hashes/esm/_blake.js.map +0 -1
  404. package/node_modules/@noble/hashes/esm/_md.d.ts +0 -51
  405. package/node_modules/@noble/hashes/esm/_md.d.ts.map +0 -1
  406. package/node_modules/@noble/hashes/esm/_md.js +0 -155
  407. package/node_modules/@noble/hashes/esm/_md.js.map +0 -1
  408. package/node_modules/@noble/hashes/esm/_u64.d.ts +0 -55
  409. package/node_modules/@noble/hashes/esm/_u64.d.ts.map +0 -1
  410. package/node_modules/@noble/hashes/esm/_u64.js +0 -67
  411. package/node_modules/@noble/hashes/esm/_u64.js.map +0 -1
  412. package/node_modules/@noble/hashes/esm/argon2.d.ts +0 -32
  413. package/node_modules/@noble/hashes/esm/argon2.d.ts.map +0 -1
  414. package/node_modules/@noble/hashes/esm/argon2.js +0 -392
  415. package/node_modules/@noble/hashes/esm/argon2.js.map +0 -1
  416. package/node_modules/@noble/hashes/esm/blake1.d.ts +0 -106
  417. package/node_modules/@noble/hashes/esm/blake1.d.ts.map +0 -1
  418. package/node_modules/@noble/hashes/esm/blake1.js +0 -452
  419. package/node_modules/@noble/hashes/esm/blake1.js.map +0 -1
  420. package/node_modules/@noble/hashes/esm/blake2.d.ts +0 -116
  421. package/node_modules/@noble/hashes/esm/blake2.d.ts.map +0 -1
  422. package/node_modules/@noble/hashes/esm/blake2.js +0 -413
  423. package/node_modules/@noble/hashes/esm/blake2.js.map +0 -1
  424. package/node_modules/@noble/hashes/esm/blake2b.d.ts +0 -11
  425. package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +0 -1
  426. package/node_modules/@noble/hashes/esm/blake2b.js +0 -11
  427. package/node_modules/@noble/hashes/esm/blake2b.js.map +0 -1
  428. package/node_modules/@noble/hashes/esm/blake2s.d.ts +0 -20
  429. package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +0 -1
  430. package/node_modules/@noble/hashes/esm/blake2s.js +0 -21
  431. package/node_modules/@noble/hashes/esm/blake2s.js.map +0 -1
  432. package/node_modules/@noble/hashes/esm/blake3.d.ts +0 -54
  433. package/node_modules/@noble/hashes/esm/blake3.d.ts.map +0 -1
  434. package/node_modules/@noble/hashes/esm/blake3.js +0 -251
  435. package/node_modules/@noble/hashes/esm/blake3.js.map +0 -1
  436. package/node_modules/@noble/hashes/esm/crypto.d.ts +0 -2
  437. package/node_modules/@noble/hashes/esm/crypto.d.ts.map +0 -1
  438. package/node_modules/@noble/hashes/esm/crypto.js +0 -2
  439. package/node_modules/@noble/hashes/esm/crypto.js.map +0 -1
  440. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +0 -2
  441. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +0 -1
  442. package/node_modules/@noble/hashes/esm/cryptoNode.js +0 -15
  443. package/node_modules/@noble/hashes/esm/cryptoNode.js.map +0 -1
  444. package/node_modules/@noble/hashes/esm/eskdf.d.ts +0 -47
  445. package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +0 -1
  446. package/node_modules/@noble/hashes/esm/eskdf.js +0 -160
  447. package/node_modules/@noble/hashes/esm/eskdf.js.map +0 -1
  448. package/node_modules/@noble/hashes/esm/hkdf.d.ts +0 -36
  449. package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +0 -1
  450. package/node_modules/@noble/hashes/esm/hkdf.js +0 -82
  451. package/node_modules/@noble/hashes/esm/hkdf.js.map +0 -1
  452. package/node_modules/@noble/hashes/esm/hmac.d.ts +0 -35
  453. package/node_modules/@noble/hashes/esm/hmac.d.ts.map +0 -1
  454. package/node_modules/@noble/hashes/esm/hmac.js +0 -86
  455. package/node_modules/@noble/hashes/esm/hmac.js.map +0 -1
  456. package/node_modules/@noble/hashes/esm/index.d.ts +0 -2
  457. package/node_modules/@noble/hashes/esm/index.d.ts.map +0 -1
  458. package/node_modules/@noble/hashes/esm/index.js +0 -33
  459. package/node_modules/@noble/hashes/esm/index.js.map +0 -1
  460. package/node_modules/@noble/hashes/esm/legacy.d.ts +0 -71
  461. package/node_modules/@noble/hashes/esm/legacy.d.ts.map +0 -1
  462. package/node_modules/@noble/hashes/esm/legacy.js +0 -281
  463. package/node_modules/@noble/hashes/esm/legacy.js.map +0 -1
  464. package/node_modules/@noble/hashes/esm/package.json +0 -10
  465. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +0 -23
  466. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +0 -1
  467. package/node_modules/@noble/hashes/esm/pbkdf2.js +0 -97
  468. package/node_modules/@noble/hashes/esm/pbkdf2.js.map +0 -1
  469. package/node_modules/@noble/hashes/esm/ripemd160.d.ts +0 -13
  470. package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +0 -1
  471. package/node_modules/@noble/hashes/esm/ripemd160.js +0 -13
  472. package/node_modules/@noble/hashes/esm/ripemd160.js.map +0 -1
  473. package/node_modules/@noble/hashes/esm/scrypt.d.ts +0 -34
  474. package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +0 -1
  475. package/node_modules/@noble/hashes/esm/scrypt.js +0 -228
  476. package/node_modules/@noble/hashes/esm/scrypt.js.map +0 -1
  477. package/node_modules/@noble/hashes/esm/sha1.d.ts +0 -11
  478. package/node_modules/@noble/hashes/esm/sha1.d.ts.map +0 -1
  479. package/node_modules/@noble/hashes/esm/sha1.js +0 -11
  480. package/node_modules/@noble/hashes/esm/sha1.js.map +0 -1
  481. package/node_modules/@noble/hashes/esm/sha2.d.ts +0 -159
  482. package/node_modules/@noble/hashes/esm/sha2.d.ts.map +0 -1
  483. package/node_modules/@noble/hashes/esm/sha2.js +0 -375
  484. package/node_modules/@noble/hashes/esm/sha2.js.map +0 -1
  485. package/node_modules/@noble/hashes/esm/sha256.d.ts +0 -20
  486. package/node_modules/@noble/hashes/esm/sha256.d.ts.map +0 -1
  487. package/node_modules/@noble/hashes/esm/sha256.js +0 -20
  488. package/node_modules/@noble/hashes/esm/sha256.js.map +0 -1
  489. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +0 -142
  490. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +0 -1
  491. package/node_modules/@noble/hashes/esm/sha3-addons.js +0 -393
  492. package/node_modules/@noble/hashes/esm/sha3-addons.js.map +0 -1
  493. package/node_modules/@noble/hashes/esm/sha3.d.ts +0 -53
  494. package/node_modules/@noble/hashes/esm/sha3.d.ts.map +0 -1
  495. package/node_modules/@noble/hashes/esm/sha3.js +0 -234
  496. package/node_modules/@noble/hashes/esm/sha3.js.map +0 -1
  497. package/node_modules/@noble/hashes/esm/sha512.d.ts +0 -26
  498. package/node_modules/@noble/hashes/esm/sha512.d.ts.map +0 -1
  499. package/node_modules/@noble/hashes/esm/sha512.js +0 -26
  500. package/node_modules/@noble/hashes/esm/sha512.js.map +0 -1
  501. package/node_modules/@noble/hashes/esm/utils.d.ts +0 -161
  502. package/node_modules/@noble/hashes/esm/utils.d.ts.map +0 -1
  503. package/node_modules/@noble/hashes/esm/utils.js +0 -281
  504. package/node_modules/@noble/hashes/esm/utils.js.map +0 -1
  505. package/node_modules/@noble/hashes/hkdf.d.ts +0 -36
  506. package/node_modules/@noble/hashes/hkdf.d.ts.map +0 -1
  507. package/node_modules/@noble/hashes/hkdf.js +0 -88
  508. package/node_modules/@noble/hashes/hkdf.js.map +0 -1
  509. package/node_modules/@noble/hashes/hmac.d.ts +0 -35
  510. package/node_modules/@noble/hashes/hmac.d.ts.map +0 -1
  511. package/node_modules/@noble/hashes/hmac.js +0 -91
  512. package/node_modules/@noble/hashes/hmac.js.map +0 -1
  513. package/node_modules/@noble/hashes/index.d.ts +0 -1
  514. package/node_modules/@noble/hashes/index.d.ts.map +0 -1
  515. package/node_modules/@noble/hashes/index.js +0 -33
  516. package/node_modules/@noble/hashes/index.js.map +0 -1
  517. package/node_modules/@noble/hashes/legacy.d.ts +0 -71
  518. package/node_modules/@noble/hashes/legacy.d.ts.map +0 -1
  519. package/node_modules/@noble/hashes/legacy.js +0 -287
  520. package/node_modules/@noble/hashes/legacy.js.map +0 -1
  521. package/node_modules/@noble/hashes/package.json +0 -266
  522. package/node_modules/@noble/hashes/pbkdf2.d.ts +0 -23
  523. package/node_modules/@noble/hashes/pbkdf2.d.ts.map +0 -1
  524. package/node_modules/@noble/hashes/pbkdf2.js +0 -101
  525. package/node_modules/@noble/hashes/pbkdf2.js.map +0 -1
  526. package/node_modules/@noble/hashes/ripemd160.d.ts +0 -13
  527. package/node_modules/@noble/hashes/ripemd160.d.ts.map +0 -1
  528. package/node_modules/@noble/hashes/ripemd160.js +0 -16
  529. package/node_modules/@noble/hashes/ripemd160.js.map +0 -1
  530. package/node_modules/@noble/hashes/scrypt.d.ts +0 -34
  531. package/node_modules/@noble/hashes/scrypt.d.ts.map +0 -1
  532. package/node_modules/@noble/hashes/scrypt.js +0 -232
  533. package/node_modules/@noble/hashes/scrypt.js.map +0 -1
  534. package/node_modules/@noble/hashes/sha1.d.ts +0 -11
  535. package/node_modules/@noble/hashes/sha1.d.ts.map +0 -1
  536. package/node_modules/@noble/hashes/sha1.js +0 -14
  537. package/node_modules/@noble/hashes/sha1.js.map +0 -1
  538. package/node_modules/@noble/hashes/sha2.d.ts +0 -159
  539. package/node_modules/@noble/hashes/sha2.d.ts.map +0 -1
  540. package/node_modules/@noble/hashes/sha2.js +0 -384
  541. package/node_modules/@noble/hashes/sha2.js.map +0 -1
  542. package/node_modules/@noble/hashes/sha256.d.ts +0 -20
  543. package/node_modules/@noble/hashes/sha256.d.ts.map +0 -1
  544. package/node_modules/@noble/hashes/sha256.js +0 -23
  545. package/node_modules/@noble/hashes/sha256.js.map +0 -1
  546. package/node_modules/@noble/hashes/sha3-addons.d.ts +0 -142
  547. package/node_modules/@noble/hashes/sha3-addons.d.ts.map +0 -1
  548. package/node_modules/@noble/hashes/sha3-addons.js +0 -402
  549. package/node_modules/@noble/hashes/sha3-addons.js.map +0 -1
  550. package/node_modules/@noble/hashes/sha3.d.ts +0 -53
  551. package/node_modules/@noble/hashes/sha3.d.ts.map +0 -1
  552. package/node_modules/@noble/hashes/sha3.js +0 -239
  553. package/node_modules/@noble/hashes/sha3.js.map +0 -1
  554. package/node_modules/@noble/hashes/sha512.d.ts +0 -26
  555. package/node_modules/@noble/hashes/sha512.d.ts.map +0 -1
  556. package/node_modules/@noble/hashes/sha512.js +0 -29
  557. package/node_modules/@noble/hashes/sha512.js.map +0 -1
  558. package/node_modules/@noble/hashes/src/_assert.ts +0 -22
  559. package/node_modules/@noble/hashes/src/_blake.ts +0 -50
  560. package/node_modules/@noble/hashes/src/_md.ts +0 -176
  561. package/node_modules/@noble/hashes/src/_u64.ts +0 -91
  562. package/node_modules/@noble/hashes/src/argon2.ts +0 -497
  563. package/node_modules/@noble/hashes/src/blake1.ts +0 -534
  564. package/node_modules/@noble/hashes/src/blake2.ts +0 -486
  565. package/node_modules/@noble/hashes/src/blake2b.ts +0 -10
  566. package/node_modules/@noble/hashes/src/blake2s.ts +0 -20
  567. package/node_modules/@noble/hashes/src/blake3.ts +0 -272
  568. package/node_modules/@noble/hashes/src/crypto.ts +0 -9
  569. package/node_modules/@noble/hashes/src/cryptoNode.ts +0 -15
  570. package/node_modules/@noble/hashes/src/eskdf.ts +0 -187
  571. package/node_modules/@noble/hashes/src/hkdf.ts +0 -88
  572. package/node_modules/@noble/hashes/src/hmac.ts +0 -94
  573. package/node_modules/@noble/hashes/src/index.ts +0 -31
  574. package/node_modules/@noble/hashes/src/legacy.ts +0 -293
  575. package/node_modules/@noble/hashes/src/pbkdf2.ts +0 -122
  576. package/node_modules/@noble/hashes/src/ripemd160.ts +0 -12
  577. package/node_modules/@noble/hashes/src/scrypt.ts +0 -257
  578. package/node_modules/@noble/hashes/src/sha1.ts +0 -10
  579. package/node_modules/@noble/hashes/src/sha2.ts +0 -402
  580. package/node_modules/@noble/hashes/src/sha256.ts +0 -24
  581. package/node_modules/@noble/hashes/src/sha3-addons.ts +0 -499
  582. package/node_modules/@noble/hashes/src/sha3.ts +0 -258
  583. package/node_modules/@noble/hashes/src/sha512.ts +0 -34
  584. package/node_modules/@noble/hashes/src/utils.ts +0 -395
  585. package/node_modules/@noble/hashes/utils.d.ts +0 -161
  586. package/node_modules/@noble/hashes/utils.d.ts.map +0 -1
  587. package/node_modules/@noble/hashes/utils.js +0 -313
  588. 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