@moqtap/codec 0.2.2 → 0.2.3

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 (576) hide show
  1. package/dist/{chunk-LH4NTURO.js → chunk-2GODRVT5.js} +699 -589
  2. package/dist/{chunk-4RIXXEII.js → chunk-2ZT6CVSE.js} +274 -242
  3. package/dist/{chunk-XUUCOLWU.cjs → chunk-4N4INRE7.cjs} +332 -321
  4. package/dist/{chunk-PJRA2TQ5.js → chunk-73MWUKSJ.js} +274 -228
  5. package/dist/{chunk-NGVE2RZT.js → chunk-77MNXX3M.js} +549 -538
  6. package/dist/{chunk-A27S7HW7.js → chunk-7L43FE6P.js} +24 -3
  7. package/dist/{chunk-RVJAGE4S.cjs → chunk-ACQ4CUJP.cjs} +297 -265
  8. package/dist/{chunk-IBVM4DMJ.cjs → chunk-BGWGVINJ.cjs} +332 -321
  9. package/dist/{chunk-KFTCU2P6.js → chunk-C6KUWLQC.js} +0 -3
  10. package/dist/{chunk-CXDHOMHG.js → chunk-CEH7ESNC.js} +549 -538
  11. package/dist/{chunk-ZBKE2QRQ.js → chunk-E6P74GDT.js} +686 -599
  12. package/dist/{chunk-FUFTMAQD.cjs → chunk-FPISPJ5N.cjs} +785 -497
  13. package/dist/{chunk-7IVGHMKJ.cjs → chunk-FZDIEHQL.cjs} +300 -124
  14. package/dist/{chunk-ZSPO2GF2.cjs → chunk-GLBQDG4L.cjs} +971 -884
  15. package/dist/chunk-HDWJ2GDE.js +24 -0
  16. package/dist/{chunk-4YJANAXU.cjs → chunk-JGG7CMSZ.cjs} +469 -434
  17. package/dist/{chunk-IV2H5CFI.cjs → chunk-JTVCOMBI.cjs} +298 -266
  18. package/dist/chunk-KNDYS3DK.cjs +24 -0
  19. package/dist/{chunk-BPNL5YFQ.cjs → chunk-KZCYQ7ED.cjs} +5 -5
  20. package/dist/{chunk-U2B3B42P.js → chunk-MC7W6PMI.js} +709 -421
  21. package/dist/{chunk-MFAP7R6L.js → chunk-MRJWLGYH.js} +1 -1
  22. package/dist/{chunk-RWQ43Z4F.cjs → chunk-MZ7VU52O.cjs} +0 -3
  23. package/dist/{chunk-TMNGRIPL.js → chunk-N2KBF5Q2.js} +285 -109
  24. package/dist/{chunk-IV2HRJVT.js → chunk-PZBPH2D7.js} +274 -242
  25. package/dist/{chunk-FWISIR26.cjs → chunk-RUPCJTC3.cjs} +24 -3
  26. package/dist/{chunk-G26SJ6XS.cjs → chunk-S74DWJE2.cjs} +1001 -925
  27. package/dist/{chunk-NUX5BHWO.js → chunk-U3IPZYPX.js} +1113 -1037
  28. package/dist/{chunk-HSVYF6XX.cjs → chunk-VJUUZ4W2.cjs} +1106 -996
  29. package/dist/{chunk-ST24APEO.js → chunk-XSNX2IUJ.js} +574 -539
  30. package/dist/{chunk-K4OLITS2.cjs → chunk-YIG2C3LF.cjs} +295 -249
  31. package/dist/{drafts/draft15/codec.d.ts → codec-B2cH-f5V.d.cts} +11 -10
  32. package/dist/codec-B5K73Bdj.d.ts +30 -0
  33. package/dist/{codec-C_HMXNK_.d.ts → codec-BFeliJFc.d.ts} +4 -10
  34. package/dist/codec-BUMjz0J4.d.cts +30 -0
  35. package/dist/{codec-D0x8-SCw.d.cts → codec-Bap882Fh.d.cts} +3 -9
  36. package/dist/codec-BdVMRMOI.d.ts +34 -0
  37. package/dist/codec-Bq-tLtfP.d.ts +30 -0
  38. package/dist/codec-BwFgpeQu.d.ts +23 -0
  39. package/dist/{codec-95k8CAu5.d.cts → codec-C4n1PS09.d.cts} +3 -9
  40. package/dist/{codec-BECYPfY8.d.ts → codec-CPlK3Pi5.d.ts} +3 -9
  41. package/dist/{drafts/draft08/codec.d.ts → codec-CPvPq0sb.d.cts} +11 -9
  42. package/dist/codec-DNUIgLqc.d.cts +23 -0
  43. package/dist/codec-DRcsBCsb.d.ts +23 -0
  44. package/dist/{codec-CAevkgf5.d.cts → codec-DY4QH364.d.cts} +4 -10
  45. package/dist/codec-DZhZSIii.d.cts +30 -0
  46. package/dist/{drafts/draft14/codec.d.ts → codec-FvGCxIhr.d.ts} +11 -10
  47. package/dist/codec-HgBgHkFI.d.cts +23 -0
  48. package/dist/codec-KXHvXZVb.d.cts +35 -0
  49. package/dist/{codec-BC5jfvMb.d.ts → codec-R8GrCPt2.d.ts} +3 -9
  50. package/dist/{codec-BsPU1vNC.d.ts → codec-SKBeHQk7.d.ts} +3 -11
  51. package/dist/draft10-session.d.cts +1 -1
  52. package/dist/draft10-session.d.ts +1 -1
  53. package/dist/draft10.cjs +4 -3
  54. package/dist/draft10.d.cts +15 -5
  55. package/dist/draft10.d.ts +15 -5
  56. package/dist/draft10.js +3 -2
  57. package/dist/draft11-session.d.cts +1 -1
  58. package/dist/draft11-session.d.ts +1 -1
  59. package/dist/draft11.cjs +4 -3
  60. package/dist/draft11.d.cts +13 -5
  61. package/dist/draft11.d.ts +13 -5
  62. package/dist/draft11.js +3 -2
  63. package/dist/draft12-session.d.cts +1 -1
  64. package/dist/draft12-session.d.ts +1 -1
  65. package/dist/draft12.cjs +4 -3
  66. package/dist/draft12.d.cts +13 -5
  67. package/dist/draft12.d.ts +13 -5
  68. package/dist/draft12.js +3 -2
  69. package/dist/draft13-session.d.cts +1 -1
  70. package/dist/draft13-session.d.ts +1 -1
  71. package/dist/draft13.cjs +4 -3
  72. package/dist/draft13.d.cts +13 -5
  73. package/dist/draft13.d.ts +13 -5
  74. package/dist/draft13.js +3 -2
  75. package/dist/draft14-session.d.cts +1 -1
  76. package/dist/draft14-session.d.ts +1 -1
  77. package/dist/draft14.cjs +4 -3
  78. package/dist/draft14.d.cts +59 -5
  79. package/dist/draft14.d.ts +59 -5
  80. package/dist/draft14.js +3 -2
  81. package/dist/draft15-session.d.cts +1 -1
  82. package/dist/draft15-session.d.ts +1 -1
  83. package/dist/draft15.cjs +4 -3
  84. package/dist/draft15.d.cts +48 -5
  85. package/dist/draft15.d.ts +48 -5
  86. package/dist/draft15.js +3 -2
  87. package/dist/draft16-session.d.cts +1 -1
  88. package/dist/draft16-session.d.ts +1 -1
  89. package/dist/draft16.cjs +4 -3
  90. package/dist/draft16.d.cts +37 -5
  91. package/dist/draft16.d.ts +37 -5
  92. package/dist/draft16.js +3 -2
  93. package/dist/draft17-session.d.cts +1 -1
  94. package/dist/draft17-session.d.ts +1 -1
  95. package/dist/draft17.cjs +4 -3
  96. package/dist/draft17.d.cts +16 -5
  97. package/dist/draft17.d.ts +16 -5
  98. package/dist/draft17.js +3 -2
  99. package/dist/draft7-session.cjs +3 -3
  100. package/dist/draft7-session.js +2 -2
  101. package/dist/draft7.cjs +18 -6
  102. package/dist/draft7.d.cts +84 -8
  103. package/dist/draft7.d.ts +84 -8
  104. package/dist/draft7.js +15 -3
  105. package/dist/draft8-session.d.cts +1 -1
  106. package/dist/draft8-session.d.ts +1 -1
  107. package/dist/draft8.cjs +4 -3
  108. package/dist/draft8.d.cts +15 -5
  109. package/dist/draft8.d.ts +15 -5
  110. package/dist/draft8.js +3 -2
  111. package/dist/draft9-session.d.cts +1 -1
  112. package/dist/draft9-session.d.ts +1 -1
  113. package/dist/draft9.cjs +4 -3
  114. package/dist/draft9.d.cts +15 -5
  115. package/dist/draft9.d.ts +15 -5
  116. package/dist/draft9.js +3 -2
  117. package/dist/index.cjs +25 -24
  118. package/dist/index.d.cts +20 -20
  119. package/dist/index.d.ts +38 -46
  120. package/dist/index.js +111 -93
  121. package/dist/session.cjs +3 -3
  122. package/dist/session.d.ts +8 -4
  123. package/dist/session.js +26 -32
  124. package/dist/{types-ERexTpT8.d.cts → types-8gUGeMgs.d.cts} +4 -1
  125. package/dist/{types-ERexTpT8.d.ts → types-8gUGeMgs.d.ts} +4 -1
  126. package/dist/{types-Cw4WE9dh.d.ts → types-B0FT5Qs2.d.cts} +9 -1
  127. package/dist/{types-Cw4WE9dh.d.cts → types-B0FT5Qs2.d.ts} +9 -1
  128. package/dist/{types-DqCDFqgB.d.cts → types-B9A2g05r.d.cts} +4 -1
  129. package/dist/{types-DqCDFqgB.d.ts → types-B9A2g05r.d.ts} +4 -1
  130. package/dist/{types-Bg6QYNVt.d.cts → types-BeAVNU-F.d.cts} +7 -2
  131. package/dist/{types-Bg6QYNVt.d.ts → types-BeAVNU-F.d.ts} +7 -2
  132. package/dist/{types-C_1HrqBl.d.ts → types-CDa7F5ct.d.cts} +7 -2
  133. package/dist/{types-C_1HrqBl.d.cts → types-CDa7F5ct.d.ts} +7 -2
  134. package/dist/{types-r-CasCf1.d.cts → types-D1dI_oTX.d.cts} +8 -1
  135. package/dist/{types-r-CasCf1.d.ts → types-D1dI_oTX.d.ts} +8 -1
  136. package/dist/{types-BTFeKYCb.d.ts → types-DKpsfD3i.d.cts} +19 -4
  137. package/dist/{types-BTFeKYCb.d.cts → types-DKpsfD3i.d.ts} +19 -4
  138. package/dist/{types-4VxSL2Ho.d.ts → types-DxSFvL2b.d.cts} +7 -1
  139. package/dist/{types-4VxSL2Ho.d.cts → types-DxSFvL2b.d.ts} +7 -1
  140. package/dist/{types-B2afJZM-.d.ts → types-Pme7sua0.d.cts} +4 -1
  141. package/dist/{types-B2afJZM-.d.cts → types-Pme7sua0.d.ts} +4 -1
  142. package/dist/{types-D5gNQiDj.d.ts → types-gQsr0AAA.d.cts} +9 -1
  143. package/dist/{types-D5gNQiDj.d.cts → types-gQsr0AAA.d.ts} +9 -1
  144. package/package.json +192 -192
  145. package/src/core/buffer-reader.ts +130 -114
  146. package/src/core/buffer-writer.ts +100 -91
  147. package/src/core/hex.ts +7 -3
  148. package/src/drafts/draft07/codec.ts +14 -9
  149. package/src/drafts/draft07/data-streams.ts +240 -240
  150. package/src/drafts/draft07/varint.ts +51 -23
  151. package/src/drafts/draft08/codec.ts +19 -10
  152. package/src/drafts/draft08/data-streams.ts +359 -359
  153. package/src/drafts/draft09/codec.ts +19 -10
  154. package/src/drafts/draft09/data-streams.ts +332 -332
  155. package/src/drafts/draft10/codec.ts +19 -10
  156. package/src/drafts/draft10/data-streams.ts +332 -332
  157. package/src/drafts/draft11/codec.ts +19 -10
  158. package/src/drafts/draft11/data-streams.ts +269 -269
  159. package/src/drafts/draft12/codec.ts +19 -10
  160. package/src/drafts/draft12/data-streams.ts +275 -275
  161. package/src/drafts/draft13/codec.ts +19 -10
  162. package/src/drafts/draft13/data-streams.ts +275 -275
  163. package/src/drafts/draft14/codec.ts +19 -10
  164. package/src/drafts/draft14/data-streams.ts +813 -798
  165. package/src/drafts/draft15/codec.ts +21 -12
  166. package/src/drafts/draft15/data-streams.ts +794 -778
  167. package/src/drafts/draft16/codec.ts +21 -12
  168. package/src/drafts/draft16/data-streams.ts +789 -773
  169. package/src/drafts/draft17/codec.ts +21 -12
  170. package/src/drafts/draft17/data-streams.ts +758 -742
  171. package/dist/codec-AFuOxfsO.d.ts +0 -60
  172. package/dist/codec-B-UJ5Iow.d.cts +0 -75
  173. package/dist/codec-BvpuF-6u.d.cts +0 -39
  174. package/dist/codec-C8jZI5Cx.d.cts +0 -39
  175. package/dist/codec-CSUqCrRs.d.ts +0 -39
  176. package/dist/codec-CpuvYTSV.d.cts +0 -86
  177. package/dist/codec-D7ARhpG1.d.ts +0 -75
  178. package/dist/codec-DNAUGshO.d.cts +0 -60
  179. package/dist/codec-DPx_QNn0.d.ts +0 -31
  180. package/dist/codec-DRhCx_hw.d.ts +0 -86
  181. package/dist/codec-Db7YPe3l.d.ts +0 -31
  182. package/dist/codec-axkJpb7D.d.cts +0 -31
  183. package/dist/codec-ujAbFaep.d.cts +0 -31
  184. package/dist/core/buffer-reader.d.ts +0 -15
  185. package/dist/core/buffer-reader.d.ts.map +0 -1
  186. package/dist/core/buffer-reader.js +0 -98
  187. package/dist/core/buffer-reader.js.map +0 -1
  188. package/dist/core/buffer-writer.d.ts +0 -16
  189. package/dist/core/buffer-writer.d.ts.map +0 -1
  190. package/dist/core/buffer-writer.js +0 -86
  191. package/dist/core/buffer-writer.js.map +0 -1
  192. package/dist/core/errors.d.ts +0 -2
  193. package/dist/core/errors.d.ts.map +0 -1
  194. package/dist/core/errors.js +0 -2
  195. package/dist/core/errors.js.map +0 -1
  196. package/dist/core/hex.d.ts +0 -5
  197. package/dist/core/hex.d.ts.map +0 -1
  198. package/dist/core/hex.js +0 -17
  199. package/dist/core/hex.js.map +0 -1
  200. package/dist/core/session-types.d.ts +0 -99
  201. package/dist/core/session-types.d.ts.map +0 -1
  202. package/dist/core/session-types.js +0 -2
  203. package/dist/core/session-types.js.map +0 -1
  204. package/dist/core/types.d.ts +0 -235
  205. package/dist/core/types.d.ts.map +0 -1
  206. package/dist/core/types.js +0 -11
  207. package/dist/core/types.js.map +0 -1
  208. package/dist/drafts/draft07/announce-fsm.d.ts +0 -2
  209. package/dist/drafts/draft07/announce-fsm.d.ts.map +0 -1
  210. package/dist/drafts/draft07/announce-fsm.js +0 -2
  211. package/dist/drafts/draft07/announce-fsm.js.map +0 -1
  212. package/dist/drafts/draft07/codec.d.ts +0 -17
  213. package/dist/drafts/draft07/codec.d.ts.map +0 -1
  214. package/dist/drafts/draft07/codec.js +0 -722
  215. package/dist/drafts/draft07/codec.js.map +0 -1
  216. package/dist/drafts/draft07/data-streams.d.ts +0 -9
  217. package/dist/drafts/draft07/data-streams.d.ts.map +0 -1
  218. package/dist/drafts/draft07/data-streams.js +0 -228
  219. package/dist/drafts/draft07/data-streams.js.map +0 -1
  220. package/dist/drafts/draft07/index.d.ts +0 -14
  221. package/dist/drafts/draft07/index.d.ts.map +0 -1
  222. package/dist/drafts/draft07/index.js +0 -18
  223. package/dist/drafts/draft07/index.js.map +0 -1
  224. package/dist/drafts/draft07/messages.d.ts +0 -32
  225. package/dist/drafts/draft07/messages.d.ts.map +0 -1
  226. package/dist/drafts/draft07/messages.js +0 -42
  227. package/dist/drafts/draft07/messages.js.map +0 -1
  228. package/dist/drafts/draft07/parameters.d.ts +0 -4
  229. package/dist/drafts/draft07/parameters.d.ts.map +0 -1
  230. package/dist/drafts/draft07/parameters.js +0 -10
  231. package/dist/drafts/draft07/parameters.js.map +0 -1
  232. package/dist/drafts/draft07/rules.d.ts +0 -8
  233. package/dist/drafts/draft07/rules.d.ts.map +0 -1
  234. package/dist/drafts/draft07/rules.js +0 -95
  235. package/dist/drafts/draft07/rules.js.map +0 -1
  236. package/dist/drafts/draft07/session-fsm.d.ts +0 -38
  237. package/dist/drafts/draft07/session-fsm.d.ts.map +0 -1
  238. package/dist/drafts/draft07/session-fsm.js +0 -354
  239. package/dist/drafts/draft07/session-fsm.js.map +0 -1
  240. package/dist/drafts/draft07/session.d.ts +0 -4
  241. package/dist/drafts/draft07/session.d.ts.map +0 -1
  242. package/dist/drafts/draft07/session.js +0 -5
  243. package/dist/drafts/draft07/session.js.map +0 -1
  244. package/dist/drafts/draft07/subscription-fsm.d.ts +0 -2
  245. package/dist/drafts/draft07/subscription-fsm.d.ts.map +0 -1
  246. package/dist/drafts/draft07/subscription-fsm.js +0 -2
  247. package/dist/drafts/draft07/subscription-fsm.js.map +0 -1
  248. package/dist/drafts/draft07/types.d.ts +0 -61
  249. package/dist/drafts/draft07/types.d.ts.map +0 -1
  250. package/dist/drafts/draft07/types.js +0 -4
  251. package/dist/drafts/draft07/types.js.map +0 -1
  252. package/dist/drafts/draft07/varint.d.ts +0 -4
  253. package/dist/drafts/draft07/varint.d.ts.map +0 -1
  254. package/dist/drafts/draft07/varint.js +0 -22
  255. package/dist/drafts/draft07/varint.js.map +0 -1
  256. package/dist/drafts/draft08/codec.d.ts.map +0 -1
  257. package/dist/drafts/draft08/codec.js +0 -729
  258. package/dist/drafts/draft08/codec.js.map +0 -1
  259. package/dist/drafts/draft08/data-streams.d.ts +0 -12
  260. package/dist/drafts/draft08/data-streams.d.ts.map +0 -1
  261. package/dist/drafts/draft08/data-streams.js +0 -345
  262. package/dist/drafts/draft08/data-streams.js.map +0 -1
  263. package/dist/drafts/draft08/index.d.ts +0 -9
  264. package/dist/drafts/draft08/index.d.ts.map +0 -1
  265. package/dist/drafts/draft08/index.js +0 -7
  266. package/dist/drafts/draft08/index.js.map +0 -1
  267. package/dist/drafts/draft08/messages.d.ts +0 -34
  268. package/dist/drafts/draft08/messages.d.ts.map +0 -1
  269. package/dist/drafts/draft08/messages.js +0 -66
  270. package/dist/drafts/draft08/messages.js.map +0 -1
  271. package/dist/drafts/draft08/rules.d.ts +0 -8
  272. package/dist/drafts/draft08/rules.d.ts.map +0 -1
  273. package/dist/drafts/draft08/rules.js +0 -83
  274. package/dist/drafts/draft08/rules.js.map +0 -1
  275. package/dist/drafts/draft08/session-fsm.d.ts +0 -47
  276. package/dist/drafts/draft08/session-fsm.d.ts.map +0 -1
  277. package/dist/drafts/draft08/session-fsm.js +0 -483
  278. package/dist/drafts/draft08/session-fsm.js.map +0 -1
  279. package/dist/drafts/draft08/session.d.ts +0 -5
  280. package/dist/drafts/draft08/session.d.ts.map +0 -1
  281. package/dist/drafts/draft08/session.js +0 -5
  282. package/dist/drafts/draft08/session.js.map +0 -1
  283. package/dist/drafts/draft08/types.d.ts +0 -268
  284. package/dist/drafts/draft08/types.d.ts.map +0 -1
  285. package/dist/drafts/draft08/types.js +0 -4
  286. package/dist/drafts/draft08/types.js.map +0 -1
  287. package/dist/drafts/draft09/codec.d.ts +0 -21
  288. package/dist/drafts/draft09/codec.d.ts.map +0 -1
  289. package/dist/drafts/draft09/codec.js +0 -721
  290. package/dist/drafts/draft09/codec.js.map +0 -1
  291. package/dist/drafts/draft09/data-streams.d.ts +0 -12
  292. package/dist/drafts/draft09/data-streams.d.ts.map +0 -1
  293. package/dist/drafts/draft09/data-streams.js +0 -307
  294. package/dist/drafts/draft09/data-streams.js.map +0 -1
  295. package/dist/drafts/draft09/index.d.ts +0 -9
  296. package/dist/drafts/draft09/index.d.ts.map +0 -1
  297. package/dist/drafts/draft09/index.js +0 -7
  298. package/dist/drafts/draft09/index.js.map +0 -1
  299. package/dist/drafts/draft09/messages.d.ts +0 -34
  300. package/dist/drafts/draft09/messages.d.ts.map +0 -1
  301. package/dist/drafts/draft09/messages.js +0 -66
  302. package/dist/drafts/draft09/messages.js.map +0 -1
  303. package/dist/drafts/draft09/rules.d.ts +0 -8
  304. package/dist/drafts/draft09/rules.d.ts.map +0 -1
  305. package/dist/drafts/draft09/rules.js +0 -83
  306. package/dist/drafts/draft09/rules.js.map +0 -1
  307. package/dist/drafts/draft09/session-fsm.d.ts +0 -47
  308. package/dist/drafts/draft09/session-fsm.d.ts.map +0 -1
  309. package/dist/drafts/draft09/session-fsm.js +0 -483
  310. package/dist/drafts/draft09/session-fsm.js.map +0 -1
  311. package/dist/drafts/draft09/session.d.ts +0 -5
  312. package/dist/drafts/draft09/session.d.ts.map +0 -1
  313. package/dist/drafts/draft09/session.js +0 -5
  314. package/dist/drafts/draft09/session.js.map +0 -1
  315. package/dist/drafts/draft09/types.d.ts +0 -268
  316. package/dist/drafts/draft09/types.d.ts.map +0 -1
  317. package/dist/drafts/draft09/types.js +0 -4
  318. package/dist/drafts/draft09/types.js.map +0 -1
  319. package/dist/drafts/draft10/codec.d.ts +0 -21
  320. package/dist/drafts/draft10/codec.d.ts.map +0 -1
  321. package/dist/drafts/draft10/codec.js +0 -721
  322. package/dist/drafts/draft10/codec.js.map +0 -1
  323. package/dist/drafts/draft10/data-streams.d.ts +0 -12
  324. package/dist/drafts/draft10/data-streams.d.ts.map +0 -1
  325. package/dist/drafts/draft10/data-streams.js +0 -307
  326. package/dist/drafts/draft10/data-streams.js.map +0 -1
  327. package/dist/drafts/draft10/index.d.ts +0 -9
  328. package/dist/drafts/draft10/index.d.ts.map +0 -1
  329. package/dist/drafts/draft10/index.js +0 -7
  330. package/dist/drafts/draft10/index.js.map +0 -1
  331. package/dist/drafts/draft10/messages.d.ts +0 -34
  332. package/dist/drafts/draft10/messages.d.ts.map +0 -1
  333. package/dist/drafts/draft10/messages.js +0 -66
  334. package/dist/drafts/draft10/messages.js.map +0 -1
  335. package/dist/drafts/draft10/rules.d.ts +0 -8
  336. package/dist/drafts/draft10/rules.d.ts.map +0 -1
  337. package/dist/drafts/draft10/rules.js +0 -83
  338. package/dist/drafts/draft10/rules.js.map +0 -1
  339. package/dist/drafts/draft10/session-fsm.d.ts +0 -47
  340. package/dist/drafts/draft10/session-fsm.d.ts.map +0 -1
  341. package/dist/drafts/draft10/session-fsm.js +0 -483
  342. package/dist/drafts/draft10/session-fsm.js.map +0 -1
  343. package/dist/drafts/draft10/session.d.ts +0 -5
  344. package/dist/drafts/draft10/session.d.ts.map +0 -1
  345. package/dist/drafts/draft10/session.js +0 -5
  346. package/dist/drafts/draft10/session.js.map +0 -1
  347. package/dist/drafts/draft10/types.d.ts +0 -268
  348. package/dist/drafts/draft10/types.d.ts.map +0 -1
  349. package/dist/drafts/draft10/types.js +0 -4
  350. package/dist/drafts/draft10/types.js.map +0 -1
  351. package/dist/drafts/draft11/codec.d.ts +0 -25
  352. package/dist/drafts/draft11/codec.d.ts.map +0 -1
  353. package/dist/drafts/draft11/codec.js +0 -775
  354. package/dist/drafts/draft11/codec.js.map +0 -1
  355. package/dist/drafts/draft11/data-streams.d.ts +0 -10
  356. package/dist/drafts/draft11/data-streams.d.ts.map +0 -1
  357. package/dist/drafts/draft11/data-streams.js +0 -253
  358. package/dist/drafts/draft11/data-streams.js.map +0 -1
  359. package/dist/drafts/draft11/index.d.ts +0 -9
  360. package/dist/drafts/draft11/index.d.ts.map +0 -1
  361. package/dist/drafts/draft11/index.js +0 -7
  362. package/dist/drafts/draft11/index.js.map +0 -1
  363. package/dist/drafts/draft11/messages.d.ts +0 -33
  364. package/dist/drafts/draft11/messages.d.ts.map +0 -1
  365. package/dist/drafts/draft11/messages.js +0 -65
  366. package/dist/drafts/draft11/messages.js.map +0 -1
  367. package/dist/drafts/draft11/rules.d.ts +0 -8
  368. package/dist/drafts/draft11/rules.d.ts.map +0 -1
  369. package/dist/drafts/draft11/rules.js +0 -88
  370. package/dist/drafts/draft11/rules.js.map +0 -1
  371. package/dist/drafts/draft11/session-fsm.d.ts +0 -52
  372. package/dist/drafts/draft11/session-fsm.d.ts.map +0 -1
  373. package/dist/drafts/draft11/session-fsm.js +0 -530
  374. package/dist/drafts/draft11/session-fsm.js.map +0 -1
  375. package/dist/drafts/draft11/session.d.ts +0 -5
  376. package/dist/drafts/draft11/session.d.ts.map +0 -1
  377. package/dist/drafts/draft11/session.js +0 -5
  378. package/dist/drafts/draft11/session.js.map +0 -1
  379. package/dist/drafts/draft11/types.d.ts +0 -266
  380. package/dist/drafts/draft11/types.d.ts.map +0 -1
  381. package/dist/drafts/draft11/types.js +0 -4
  382. package/dist/drafts/draft11/types.js.map +0 -1
  383. package/dist/drafts/draft12/codec.d.ts +0 -27
  384. package/dist/drafts/draft12/codec.d.ts.map +0 -1
  385. package/dist/drafts/draft12/codec.js +0 -918
  386. package/dist/drafts/draft12/codec.js.map +0 -1
  387. package/dist/drafts/draft12/data-streams.d.ts +0 -10
  388. package/dist/drafts/draft12/data-streams.d.ts.map +0 -1
  389. package/dist/drafts/draft12/data-streams.js +0 -254
  390. package/dist/drafts/draft12/data-streams.js.map +0 -1
  391. package/dist/drafts/draft12/index.d.ts +0 -9
  392. package/dist/drafts/draft12/index.d.ts.map +0 -1
  393. package/dist/drafts/draft12/index.js +0 -7
  394. package/dist/drafts/draft12/index.js.map +0 -1
  395. package/dist/drafts/draft12/messages.d.ts +0 -37
  396. package/dist/drafts/draft12/messages.d.ts.map +0 -1
  397. package/dist/drafts/draft12/messages.js +0 -77
  398. package/dist/drafts/draft12/messages.js.map +0 -1
  399. package/dist/drafts/draft12/rules.d.ts +0 -8
  400. package/dist/drafts/draft12/rules.d.ts.map +0 -1
  401. package/dist/drafts/draft12/rules.js +0 -94
  402. package/dist/drafts/draft12/rules.js.map +0 -1
  403. package/dist/drafts/draft12/session-fsm.d.ts +0 -55
  404. package/dist/drafts/draft12/session-fsm.d.ts.map +0 -1
  405. package/dist/drafts/draft12/session-fsm.js +0 -569
  406. package/dist/drafts/draft12/session-fsm.js.map +0 -1
  407. package/dist/drafts/draft12/session.d.ts +0 -5
  408. package/dist/drafts/draft12/session.d.ts.map +0 -1
  409. package/dist/drafts/draft12/session.js +0 -5
  410. package/dist/drafts/draft12/session.js.map +0 -1
  411. package/dist/drafts/draft12/types.d.ts +0 -294
  412. package/dist/drafts/draft12/types.d.ts.map +0 -1
  413. package/dist/drafts/draft12/types.js +0 -4
  414. package/dist/drafts/draft12/types.js.map +0 -1
  415. package/dist/drafts/draft13/codec.d.ts +0 -27
  416. package/dist/drafts/draft13/codec.d.ts.map +0 -1
  417. package/dist/drafts/draft13/codec.js +0 -1000
  418. package/dist/drafts/draft13/codec.js.map +0 -1
  419. package/dist/drafts/draft13/data-streams.d.ts +0 -10
  420. package/dist/drafts/draft13/data-streams.d.ts.map +0 -1
  421. package/dist/drafts/draft13/data-streams.js +0 -254
  422. package/dist/drafts/draft13/data-streams.js.map +0 -1
  423. package/dist/drafts/draft13/index.d.ts +0 -9
  424. package/dist/drafts/draft13/index.d.ts.map +0 -1
  425. package/dist/drafts/draft13/index.js +0 -7
  426. package/dist/drafts/draft13/index.js.map +0 -1
  427. package/dist/drafts/draft13/messages.d.ts +0 -38
  428. package/dist/drafts/draft13/messages.d.ts.map +0 -1
  429. package/dist/drafts/draft13/messages.js +0 -79
  430. package/dist/drafts/draft13/messages.js.map +0 -1
  431. package/dist/drafts/draft13/rules.d.ts +0 -8
  432. package/dist/drafts/draft13/rules.d.ts.map +0 -1
  433. package/dist/drafts/draft13/rules.js +0 -96
  434. package/dist/drafts/draft13/rules.js.map +0 -1
  435. package/dist/drafts/draft13/session-fsm.d.ts +0 -56
  436. package/dist/drafts/draft13/session-fsm.d.ts.map +0 -1
  437. package/dist/drafts/draft13/session-fsm.js +0 -581
  438. package/dist/drafts/draft13/session-fsm.js.map +0 -1
  439. package/dist/drafts/draft13/session.d.ts +0 -5
  440. package/dist/drafts/draft13/session.d.ts.map +0 -1
  441. package/dist/drafts/draft13/session.js +0 -5
  442. package/dist/drafts/draft13/session.js.map +0 -1
  443. package/dist/drafts/draft13/types.d.ts +0 -310
  444. package/dist/drafts/draft13/types.d.ts.map +0 -1
  445. package/dist/drafts/draft13/types.js +0 -4
  446. package/dist/drafts/draft13/types.js.map +0 -1
  447. package/dist/drafts/draft14/codec.d.ts.map +0 -1
  448. package/dist/drafts/draft14/codec.js +0 -752
  449. package/dist/drafts/draft14/codec.js.map +0 -1
  450. package/dist/drafts/draft14/data-streams.d.ts +0 -56
  451. package/dist/drafts/draft14/data-streams.d.ts.map +0 -1
  452. package/dist/drafts/draft14/data-streams.js +0 -729
  453. package/dist/drafts/draft14/data-streams.js.map +0 -1
  454. package/dist/drafts/draft14/index.d.ts +0 -9
  455. package/dist/drafts/draft14/index.d.ts.map +0 -1
  456. package/dist/drafts/draft14/index.js +0 -7
  457. package/dist/drafts/draft14/index.js.map +0 -1
  458. package/dist/drafts/draft14/messages.d.ts +0 -36
  459. package/dist/drafts/draft14/messages.d.ts.map +0 -1
  460. package/dist/drafts/draft14/messages.js +0 -71
  461. package/dist/drafts/draft14/messages.js.map +0 -1
  462. package/dist/drafts/draft14/rules.d.ts +0 -8
  463. package/dist/drafts/draft14/rules.d.ts.map +0 -1
  464. package/dist/drafts/draft14/rules.js +0 -101
  465. package/dist/drafts/draft14/rules.js.map +0 -1
  466. package/dist/drafts/draft14/session-fsm.d.ts +0 -58
  467. package/dist/drafts/draft14/session-fsm.d.ts.map +0 -1
  468. package/dist/drafts/draft14/session-fsm.js +0 -648
  469. package/dist/drafts/draft14/session-fsm.js.map +0 -1
  470. package/dist/drafts/draft14/session.d.ts +0 -5
  471. package/dist/drafts/draft14/session.d.ts.map +0 -1
  472. package/dist/drafts/draft14/session.js +0 -5
  473. package/dist/drafts/draft14/session.js.map +0 -1
  474. package/dist/drafts/draft14/types.d.ts +0 -263
  475. package/dist/drafts/draft14/types.d.ts.map +0 -1
  476. package/dist/drafts/draft14/types.js +0 -4
  477. package/dist/drafts/draft14/types.js.map +0 -1
  478. package/dist/drafts/draft15/codec.d.ts.map +0 -1
  479. package/dist/drafts/draft15/codec.js +0 -742
  480. package/dist/drafts/draft15/codec.js.map +0 -1
  481. package/dist/drafts/draft15/data-streams.d.ts +0 -45
  482. package/dist/drafts/draft15/data-streams.d.ts.map +0 -1
  483. package/dist/drafts/draft15/data-streams.js +0 -675
  484. package/dist/drafts/draft15/data-streams.js.map +0 -1
  485. package/dist/drafts/draft15/index.d.ts +0 -9
  486. package/dist/drafts/draft15/index.d.ts.map +0 -1
  487. package/dist/drafts/draft15/index.js +0 -7
  488. package/dist/drafts/draft15/index.js.map +0 -1
  489. package/dist/drafts/draft15/messages.d.ts +0 -31
  490. package/dist/drafts/draft15/messages.d.ts.map +0 -1
  491. package/dist/drafts/draft15/messages.js +0 -59
  492. package/dist/drafts/draft15/messages.js.map +0 -1
  493. package/dist/drafts/draft15/rules.d.ts +0 -8
  494. package/dist/drafts/draft15/rules.d.ts.map +0 -1
  495. package/dist/drafts/draft15/rules.js +0 -83
  496. package/dist/drafts/draft15/rules.js.map +0 -1
  497. package/dist/drafts/draft15/session-fsm.d.ts +0 -48
  498. package/dist/drafts/draft15/session-fsm.d.ts.map +0 -1
  499. package/dist/drafts/draft15/session-fsm.js +0 -479
  500. package/dist/drafts/draft15/session-fsm.js.map +0 -1
  501. package/dist/drafts/draft15/session.d.ts +0 -5
  502. package/dist/drafts/draft15/session.d.ts.map +0 -1
  503. package/dist/drafts/draft15/session.js +0 -5
  504. package/dist/drafts/draft15/session.js.map +0 -1
  505. package/dist/drafts/draft15/types.d.ts +0 -232
  506. package/dist/drafts/draft15/types.d.ts.map +0 -1
  507. package/dist/drafts/draft15/types.js +0 -4
  508. package/dist/drafts/draft15/types.js.map +0 -1
  509. package/dist/drafts/draft16/codec.d.ts +0 -29
  510. package/dist/drafts/draft16/codec.d.ts.map +0 -1
  511. package/dist/drafts/draft16/codec.js +0 -747
  512. package/dist/drafts/draft16/codec.js.map +0 -1
  513. package/dist/drafts/draft16/data-streams.d.ts +0 -34
  514. package/dist/drafts/draft16/data-streams.d.ts.map +0 -1
  515. package/dist/drafts/draft16/data-streams.js +0 -667
  516. package/dist/drafts/draft16/data-streams.js.map +0 -1
  517. package/dist/drafts/draft16/index.d.ts +0 -9
  518. package/dist/drafts/draft16/index.d.ts.map +0 -1
  519. package/dist/drafts/draft16/index.js +0 -7
  520. package/dist/drafts/draft16/index.js.map +0 -1
  521. package/dist/drafts/draft16/messages.d.ts +0 -32
  522. package/dist/drafts/draft16/messages.d.ts.map +0 -1
  523. package/dist/drafts/draft16/messages.js +0 -62
  524. package/dist/drafts/draft16/messages.js.map +0 -1
  525. package/dist/drafts/draft16/rules.d.ts +0 -8
  526. package/dist/drafts/draft16/rules.d.ts.map +0 -1
  527. package/dist/drafts/draft16/rules.js +0 -84
  528. package/dist/drafts/draft16/rules.js.map +0 -1
  529. package/dist/drafts/draft16/session-fsm.d.ts +0 -48
  530. package/dist/drafts/draft16/session-fsm.d.ts.map +0 -1
  531. package/dist/drafts/draft16/session-fsm.js +0 -474
  532. package/dist/drafts/draft16/session-fsm.js.map +0 -1
  533. package/dist/drafts/draft16/session.d.ts +0 -5
  534. package/dist/drafts/draft16/session.d.ts.map +0 -1
  535. package/dist/drafts/draft16/session.js +0 -5
  536. package/dist/drafts/draft16/session.js.map +0 -1
  537. package/dist/drafts/draft16/types.d.ts +0 -238
  538. package/dist/drafts/draft16/types.d.ts.map +0 -1
  539. package/dist/drafts/draft16/types.js +0 -4
  540. package/dist/drafts/draft16/types.js.map +0 -1
  541. package/dist/drafts/draft17/codec.d.ts +0 -29
  542. package/dist/drafts/draft17/codec.d.ts.map +0 -1
  543. package/dist/drafts/draft17/codec.js +0 -799
  544. package/dist/drafts/draft17/codec.js.map +0 -1
  545. package/dist/drafts/draft17/data-streams.d.ts +0 -13
  546. package/dist/drafts/draft17/data-streams.d.ts.map +0 -1
  547. package/dist/drafts/draft17/data-streams.js +0 -633
  548. package/dist/drafts/draft17/data-streams.js.map +0 -1
  549. package/dist/drafts/draft17/index.d.ts +0 -8
  550. package/dist/drafts/draft17/index.d.ts.map +0 -1
  551. package/dist/drafts/draft17/index.js +0 -6
  552. package/dist/drafts/draft17/index.js.map +0 -1
  553. package/dist/drafts/draft17/messages.d.ts +0 -25
  554. package/dist/drafts/draft17/messages.d.ts.map +0 -1
  555. package/dist/drafts/draft17/messages.js +0 -48
  556. package/dist/drafts/draft17/messages.js.map +0 -1
  557. package/dist/drafts/draft17/rules.d.ts +0 -8
  558. package/dist/drafts/draft17/rules.d.ts.map +0 -1
  559. package/dist/drafts/draft17/rules.js +0 -71
  560. package/dist/drafts/draft17/rules.js.map +0 -1
  561. package/dist/drafts/draft17/session-fsm.d.ts +0 -45
  562. package/dist/drafts/draft17/session-fsm.d.ts.map +0 -1
  563. package/dist/drafts/draft17/session-fsm.js +0 -328
  564. package/dist/drafts/draft17/session-fsm.js.map +0 -1
  565. package/dist/drafts/draft17/session.d.ts +0 -5
  566. package/dist/drafts/draft17/session.d.ts.map +0 -1
  567. package/dist/drafts/draft17/session.js +0 -6
  568. package/dist/drafts/draft17/session.js.map +0 -1
  569. package/dist/drafts/draft17/types.d.ts +0 -219
  570. package/dist/drafts/draft17/types.d.ts.map +0 -1
  571. package/dist/drafts/draft17/types.js +0 -3
  572. package/dist/drafts/draft17/types.js.map +0 -1
  573. package/dist/index.d.ts.map +0 -1
  574. package/dist/index.js.map +0 -1
  575. package/dist/session.d.ts.map +0 -1
  576. package/dist/session.js.map +0 -1
@@ -1,8 +1,12 @@
1
+ import {
2
+ bytesToHex,
3
+ hexToBytes
4
+ } from "./chunk-HDWJ2GDE.js";
1
5
  import {
2
6
  BufferReader,
3
7
  BufferWriter,
4
8
  DecodeError
5
- } from "./chunk-A27S7HW7.js";
9
+ } from "./chunk-7L43FE6P.js";
6
10
 
7
11
  // src/drafts/draft16/messages.ts
8
12
  var MSG_REQUEST_UPDATE = 0x02n;
@@ -64,21 +68,671 @@ var MESSAGE_ID_MAP = new Map(
64
68
  [...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
65
69
  );
66
70
 
71
+ // src/drafts/draft16/data-streams.ts
72
+ var FETCH_STREAM_TYPE = 0x05n;
73
+ function encodeSubgroupStream(stream) {
74
+ const w = new BufferWriter();
75
+ const streamType = stream.headerType;
76
+ w.writeVarInt(BigInt(streamType));
77
+ const extensionsPresent = (streamType & 1) !== 0;
78
+ const hasSubgroupField = (streamType & 4) !== 0;
79
+ const hasPriority = streamType < 48;
80
+ w.writeVarInt(stream.trackAlias);
81
+ w.writeVarInt(stream.groupId);
82
+ if (hasSubgroupField) {
83
+ w.writeVarInt(stream.subgroupId);
84
+ }
85
+ if (hasPriority) {
86
+ w.writeUint8(stream.publisherPriority);
87
+ }
88
+ let prevObjectId = -1n;
89
+ for (const obj of stream.objects) {
90
+ const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
91
+ w.writeVarInt(delta);
92
+ if (extensionsPresent) {
93
+ w.writeVarInt(BigInt(obj.extensionData.length));
94
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
95
+ }
96
+ w.writeVarInt(obj.payloadLength);
97
+ if (obj.payloadLength === 0) {
98
+ w.writeVarInt(obj.status ?? 0n);
99
+ } else {
100
+ w.writeBytes(obj.payload);
101
+ }
102
+ prevObjectId = obj.objectId;
103
+ }
104
+ return w.finish();
105
+ }
106
+ function encodeDatagram(dg) {
107
+ const w = new BufferWriter();
108
+ const dgType = dg.datagramType;
109
+ w.writeVarInt(BigInt(dgType));
110
+ w.writeVarInt(dg.trackAlias);
111
+ w.writeVarInt(dg.groupId);
112
+ const objectIdAbsent = (dgType & 4) !== 0;
113
+ const isStatus = (dgType & 32) !== 0;
114
+ if (!objectIdAbsent) {
115
+ w.writeVarInt(dg.objectId);
116
+ }
117
+ w.writeUint8(dg.publisherPriority);
118
+ if (isStatus) {
119
+ w.writeVarInt(dg.objectStatus ?? 0n);
120
+ } else {
121
+ w.writeBytes(dg.payload);
122
+ }
123
+ return w.finish();
124
+ }
125
+ function encodeFetchStream(stream) {
126
+ const w = new BufferWriter();
127
+ w.writeVarInt(FETCH_STREAM_TYPE);
128
+ w.writeVarInt(stream.requestId);
129
+ for (const obj of stream.objects) {
130
+ w.writeVarInt(BigInt(obj.serializationFlags));
131
+ const flags = obj.serializationFlags;
132
+ if (flags >= 128) {
133
+ w.writeVarInt(obj.groupId);
134
+ w.writeVarInt(obj.objectId);
135
+ w.writeVarInt(BigInt(obj.payloadLength));
136
+ } else {
137
+ if (flags & 8) w.writeVarInt(obj.groupId);
138
+ const subgroupEncoding = flags & 3;
139
+ if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
140
+ if (flags & 4) w.writeVarInt(obj.objectId);
141
+ if (flags & 16) w.writeUint8(obj.publisherPriority);
142
+ if (flags & 32) {
143
+ w.writeVarInt(BigInt(obj.extensionData.length));
144
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
145
+ }
146
+ w.writeVarInt(BigInt(obj.payloadLength));
147
+ if (obj.payloadLength > 0) {
148
+ w.writeBytes(obj.payload);
149
+ }
150
+ }
151
+ }
152
+ return w.finish();
153
+ }
154
+ function decodeSubgroupStream(bytes) {
155
+ try {
156
+ const r = new BufferReader(bytes);
157
+ const streamType = Number(r.readVarInt());
158
+ if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61) || (streamType & 6) === 6) {
159
+ return {
160
+ ok: false,
161
+ error: new DecodeError(
162
+ "CONSTRAINT_VIOLATION",
163
+ `Expected subgroup stream type 0x10-0x15/0x18-0x1D/0x30-0x35/0x38-0x3D, got 0x${streamType.toString(16)}`,
164
+ 0
165
+ )
166
+ };
167
+ }
168
+ const extensionsPresent = (streamType & 1) !== 0;
169
+ const hasSubgroupField = (streamType & 4) !== 0;
170
+ const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
171
+ const hasPriority = streamType < 48;
172
+ const trackAlias = r.readVarInt();
173
+ const groupId = r.readVarInt();
174
+ let subgroupId = 0n;
175
+ if (hasSubgroupField) {
176
+ subgroupId = r.readVarInt();
177
+ }
178
+ let publisherPriority = 128;
179
+ if (hasPriority) {
180
+ publisherPriority = r.readUint8();
181
+ }
182
+ const objects = [];
183
+ let prevObjectId = -1n;
184
+ let firstObject = true;
185
+ while (r.remaining > 0) {
186
+ const byteOffset = r.offset;
187
+ const delta = r.readVarInt();
188
+ let objectId;
189
+ if (firstObject) {
190
+ objectId = delta;
191
+ if (subgroupIsFirstObjId && firstObject) {
192
+ subgroupId = objectId;
193
+ }
194
+ firstObject = false;
195
+ } else {
196
+ objectId = prevObjectId + 1n + delta;
197
+ }
198
+ let extensionData = new Uint8Array(0);
199
+ if (extensionsPresent) {
200
+ const extLen = Number(r.readVarInt());
201
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
202
+ }
203
+ const payloadLength = Number(r.readVarInt());
204
+ let payload;
205
+ let status;
206
+ let payloadByteOffset;
207
+ if (payloadLength === 0) {
208
+ status = r.readVarInt();
209
+ payloadByteOffset = r.offset;
210
+ payload = new Uint8Array(0);
211
+ } else {
212
+ payloadByteOffset = r.offset;
213
+ payload = r.readBytesView(payloadLength);
214
+ }
215
+ const obj = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, extensionData, payload };
216
+ if (status !== void 0) obj.status = status;
217
+ objects.push(obj);
218
+ prevObjectId = objectId;
219
+ }
220
+ return {
221
+ ok: true,
222
+ value: {
223
+ type: "subgroup",
224
+ headerType: streamType,
225
+ trackAlias,
226
+ groupId,
227
+ subgroupId,
228
+ publisherPriority,
229
+ objects
230
+ },
231
+ bytesRead: r.offset
232
+ };
233
+ } catch (e) {
234
+ if (e instanceof DecodeError) return { ok: false, error: e };
235
+ throw e;
236
+ }
237
+ }
238
+ function decodeDatagram(bytes) {
239
+ try {
240
+ const r = new BufferReader(bytes);
241
+ const dgType = Number(r.readVarInt());
242
+ const objectIdAbsent = (dgType & 4) !== 0;
243
+ const endOfGroup = (dgType & 2) !== 0;
244
+ const isStatus = (dgType & 32) !== 0;
245
+ const trackAlias = r.readVarInt();
246
+ const groupId = r.readVarInt();
247
+ let objectId = 0n;
248
+ if (!objectIdAbsent) {
249
+ objectId = r.readVarInt();
250
+ }
251
+ const publisherPriority = r.readUint8();
252
+ let objectStatus;
253
+ let payload;
254
+ if (isStatus) {
255
+ objectStatus = r.readVarInt();
256
+ payload = new Uint8Array(0);
257
+ } else {
258
+ payload = r.readBytesView(r.remaining);
259
+ }
260
+ const payloadLength = payload.byteLength;
261
+ const result = {
262
+ type: "datagram",
263
+ datagramType: dgType,
264
+ trackAlias,
265
+ groupId,
266
+ objectId,
267
+ publisherPriority,
268
+ payloadLength,
269
+ payload
270
+ };
271
+ if (endOfGroup) result.endOfGroup = true;
272
+ if (objectStatus !== void 0)
273
+ result.objectStatus = objectStatus;
274
+ return { ok: true, value: result, bytesRead: r.offset };
275
+ } catch (e) {
276
+ if (e instanceof DecodeError) return { ok: false, error: e };
277
+ throw e;
278
+ }
279
+ }
280
+ function decodeFetchStream(bytes) {
281
+ try {
282
+ const r = new BufferReader(bytes);
283
+ const streamType = r.readVarInt();
284
+ if (streamType !== FETCH_STREAM_TYPE) {
285
+ return {
286
+ ok: false,
287
+ error: new DecodeError(
288
+ "CONSTRAINT_VIOLATION",
289
+ `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
290
+ 0
291
+ )
292
+ };
293
+ }
294
+ const requestId = r.readVarInt();
295
+ const objects = [];
296
+ let prevGroupId = 0n;
297
+ let prevSubgroupId = 0n;
298
+ let prevObjectId = 0n;
299
+ let prevPriority = 128;
300
+ let first = true;
301
+ while (r.remaining > 0) {
302
+ const byteOffset = r.offset;
303
+ const flags = Number(r.readVarInt());
304
+ let groupId = prevGroupId;
305
+ let subgroupId = prevSubgroupId;
306
+ let objectId = prevObjectId + 1n;
307
+ let payloadLength;
308
+ let payload;
309
+ if (flags >= 128) {
310
+ if (flags !== 140 && flags !== 268) {
311
+ return {
312
+ ok: false,
313
+ error: new DecodeError(
314
+ "CONSTRAINT_VIOLATION",
315
+ `Unknown serialization flags value: 0x${flags.toString(16)}`,
316
+ r.offset
317
+ )
318
+ };
319
+ }
320
+ groupId = r.readVarInt();
321
+ objectId = r.readVarInt();
322
+ payloadLength = Number(r.readVarInt());
323
+ const payloadByteOffset = r.offset;
324
+ payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
325
+ objects.push({
326
+ type: "object",
327
+ byteOffset,
328
+ payloadByteOffset,
329
+ serializationFlags: flags,
330
+ groupId,
331
+ subgroupId,
332
+ objectId,
333
+ publisherPriority: prevPriority,
334
+ payloadLength,
335
+ extensionData: new Uint8Array(0),
336
+ payload
337
+ });
338
+ } else {
339
+ const subgroupEncoding = flags & 3;
340
+ const objectIdPresent = (flags & 4) !== 0;
341
+ const groupIdPresent = (flags & 8) !== 0;
342
+ const priorityPresent = (flags & 16) !== 0;
343
+ const extensionsPresent = (flags & 32) !== 0;
344
+ if (flags & 64) {
345
+ return {
346
+ ok: false,
347
+ error: new DecodeError(
348
+ "CONSTRAINT_VIOLATION",
349
+ "Reserved bits set in fetch object flags",
350
+ r.offset
351
+ )
352
+ };
353
+ }
354
+ if (groupIdPresent) {
355
+ groupId = r.readVarInt();
356
+ } else if (first) {
357
+ return {
358
+ ok: false,
359
+ error: new DecodeError(
360
+ "CONSTRAINT_VIOLATION",
361
+ "First fetch object must include groupId",
362
+ r.offset
363
+ )
364
+ };
365
+ }
366
+ if (subgroupEncoding === 0) {
367
+ subgroupId = 0n;
368
+ } else if (subgroupEncoding === 1) {
369
+ if (first) {
370
+ return {
371
+ ok: false,
372
+ error: new DecodeError(
373
+ "CONSTRAINT_VIOLATION",
374
+ "First fetch object cannot reference prior subgroupId",
375
+ r.offset
376
+ )
377
+ };
378
+ }
379
+ } else if (subgroupEncoding === 2) {
380
+ if (first) {
381
+ return {
382
+ ok: false,
383
+ error: new DecodeError(
384
+ "CONSTRAINT_VIOLATION",
385
+ "First fetch object cannot reference prior subgroupId",
386
+ r.offset
387
+ )
388
+ };
389
+ }
390
+ subgroupId = prevSubgroupId + 1n;
391
+ } else {
392
+ subgroupId = r.readVarInt();
393
+ }
394
+ if (objectIdPresent) {
395
+ objectId = r.readVarInt();
396
+ } else if (first) {
397
+ return {
398
+ ok: false,
399
+ error: new DecodeError(
400
+ "CONSTRAINT_VIOLATION",
401
+ "First fetch object must include objectId",
402
+ r.offset
403
+ )
404
+ };
405
+ }
406
+ if (priorityPresent) {
407
+ prevPriority = r.readUint8();
408
+ }
409
+ let extensionData = new Uint8Array(0);
410
+ if (extensionsPresent) {
411
+ const extLen = Number(r.readVarInt());
412
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
413
+ }
414
+ payloadLength = Number(r.readVarInt());
415
+ const payloadByteOffset = r.offset;
416
+ payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
417
+ objects.push({
418
+ type: "object",
419
+ byteOffset,
420
+ payloadByteOffset,
421
+ serializationFlags: flags,
422
+ groupId,
423
+ subgroupId,
424
+ objectId,
425
+ publisherPriority: prevPriority,
426
+ payloadLength,
427
+ extensionData,
428
+ payload
429
+ });
430
+ }
431
+ prevGroupId = groupId;
432
+ prevSubgroupId = subgroupId;
433
+ prevObjectId = objectId;
434
+ first = false;
435
+ }
436
+ return {
437
+ ok: true,
438
+ value: { type: "fetch", requestId, objects },
439
+ bytesRead: r.offset
440
+ };
441
+ } catch (e) {
442
+ if (e instanceof DecodeError) return { ok: false, error: e };
443
+ throw e;
444
+ }
445
+ }
446
+ function decodeDataStream(streamType, bytes) {
447
+ switch (streamType) {
448
+ case "subgroup":
449
+ return decodeSubgroupStream(bytes);
450
+ case "datagram":
451
+ return decodeDatagram(bytes);
452
+ case "fetch":
453
+ return decodeFetchStream(bytes);
454
+ default: {
455
+ const _exhaustive = streamType;
456
+ throw new Error(`Unknown stream type: ${_exhaustive}`);
457
+ }
458
+ }
459
+ }
460
+ function createSubgroupStreamDecoder() {
461
+ let buffer = new Uint8Array(0);
462
+ let offset = 0;
463
+ let headerEmitted = false;
464
+ let prevObjectId = -1n;
465
+ let firstObject = true;
466
+ let _subgroupIsFirstObjId = false;
467
+ let _extensionsPresent = false;
468
+ return new TransformStream({
469
+ transform(chunk, controller) {
470
+ if (offset > 0) {
471
+ buffer = buffer.subarray(offset);
472
+ offset = 0;
473
+ }
474
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
475
+ newBuffer.set(buffer, 0);
476
+ newBuffer.set(chunk, buffer.length);
477
+ buffer = newBuffer;
478
+ if (!headerEmitted) {
479
+ try {
480
+ const r = new BufferReader(buffer.subarray(offset));
481
+ const streamType = Number(r.readVarInt());
482
+ if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
483
+ controller.error(
484
+ new DecodeError(
485
+ "CONSTRAINT_VIOLATION",
486
+ `Expected subgroup stream type, got 0x${streamType.toString(16)}`,
487
+ 0
488
+ )
489
+ );
490
+ return;
491
+ }
492
+ _extensionsPresent = (streamType & 1) !== 0;
493
+ const hasSubgroupField = (streamType & 4) !== 0;
494
+ _subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
495
+ const hasPriority = streamType < 48;
496
+ const trackAlias = r.readVarInt();
497
+ const groupId = r.readVarInt();
498
+ let subgroupId = 0n;
499
+ if (hasSubgroupField) {
500
+ subgroupId = r.readVarInt();
501
+ }
502
+ let publisherPriority = 128;
503
+ if (hasPriority) {
504
+ publisherPriority = r.readUint8();
505
+ }
506
+ controller.enqueue({
507
+ type: "subgroup_header",
508
+ trackAlias,
509
+ groupId,
510
+ subgroupId,
511
+ publisherPriority
512
+ });
513
+ headerEmitted = true;
514
+ offset += r.offset;
515
+ } catch (e) {
516
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
517
+ return;
518
+ }
519
+ controller.error(e);
520
+ return;
521
+ }
522
+ }
523
+ while (offset < buffer.length) {
524
+ try {
525
+ const r = new BufferReader(buffer.subarray(offset));
526
+ const delta = r.readVarInt();
527
+ let objectId;
528
+ if (firstObject) {
529
+ objectId = delta;
530
+ firstObject = false;
531
+ } else {
532
+ objectId = prevObjectId + 1n + delta;
533
+ }
534
+ let extensionData = new Uint8Array(0);
535
+ if (_extensionsPresent) {
536
+ const extLen = Number(r.readVarInt());
537
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
538
+ }
539
+ const payloadLength = Number(r.readVarInt());
540
+ let payloadByteOffset;
541
+ let status;
542
+ if (payloadLength === 0) {
543
+ status = r.readVarInt();
544
+ payloadByteOffset = r.offset;
545
+ } else {
546
+ payloadByteOffset = r.offset;
547
+ }
548
+ const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
549
+ const obj = { type: "object", byteOffset: 0, payloadByteOffset, objectId, payloadLength, payload, extensionData };
550
+ if (status !== void 0) obj.status = status;
551
+ controller.enqueue(obj);
552
+ offset += r.offset;
553
+ prevObjectId = objectId;
554
+ } catch (e) {
555
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
556
+ break;
557
+ }
558
+ controller.error(e);
559
+ return;
560
+ }
561
+ }
562
+ },
563
+ flush(controller) {
564
+ if (offset < buffer.length) {
565
+ controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
566
+ }
567
+ }
568
+ });
569
+ }
570
+ function createFetchStreamDecoder() {
571
+ let buffer = new Uint8Array(0);
572
+ let offset = 0;
573
+ let headerEmitted = false;
574
+ return new TransformStream({
575
+ transform(chunk, controller) {
576
+ if (offset > 0) {
577
+ buffer = buffer.subarray(offset);
578
+ offset = 0;
579
+ }
580
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
581
+ newBuffer.set(buffer, 0);
582
+ newBuffer.set(chunk, buffer.length);
583
+ buffer = newBuffer;
584
+ if (!headerEmitted) {
585
+ try {
586
+ const r = new BufferReader(buffer.subarray(offset));
587
+ const streamType = r.readVarInt();
588
+ if (streamType !== FETCH_STREAM_TYPE) {
589
+ controller.error(
590
+ new DecodeError(
591
+ "CONSTRAINT_VIOLATION",
592
+ `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
593
+ 0
594
+ )
595
+ );
596
+ return;
597
+ }
598
+ const requestId = r.readVarInt();
599
+ controller.enqueue({ type: "fetch_header", requestId });
600
+ headerEmitted = true;
601
+ offset += r.offset;
602
+ } catch (e) {
603
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
604
+ return;
605
+ }
606
+ controller.error(e);
607
+ return;
608
+ }
609
+ }
610
+ while (offset < buffer.length) {
611
+ try {
612
+ const r = new BufferReader(buffer.subarray(offset));
613
+ const flags = Number(r.readVarInt());
614
+ const objectIdPresent = (flags & 4) !== 0;
615
+ const groupIdPresent = (flags & 8) !== 0;
616
+ const priorityPresent = (flags & 16) !== 0;
617
+ const extensionsPresent = (flags & 32) !== 0;
618
+ const subgroupEncoding = flags & 3;
619
+ if (groupIdPresent) r.readVarInt();
620
+ if (subgroupEncoding === 3) r.readVarInt();
621
+ let objectId = 0n;
622
+ if (objectIdPresent) objectId = r.readVarInt();
623
+ if (priorityPresent) r.readUint8();
624
+ let extensionData = new Uint8Array(0);
625
+ if (extensionsPresent) {
626
+ const extLen = Number(r.readVarInt());
627
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
628
+ }
629
+ const payloadLength = Number(r.readVarInt());
630
+ const payloadByteOffset = r.offset;
631
+ const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
632
+ controller.enqueue({ type: "object", byteOffset: 0, payloadByteOffset, objectId, payloadLength, payload, extensionData });
633
+ offset += r.offset;
634
+ } catch (e) {
635
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
636
+ break;
637
+ }
638
+ controller.error(e);
639
+ return;
640
+ }
641
+ }
642
+ },
643
+ flush(controller) {
644
+ if (offset < buffer.length) {
645
+ controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
646
+ }
647
+ }
648
+ });
649
+ }
650
+ function createDataStreamDecoder() {
651
+ let buffer = new Uint8Array(0);
652
+ let offset = 0;
653
+ let inner = null;
654
+ return new TransformStream({
655
+ transform(chunk, controller) {
656
+ if (offset > 0) {
657
+ buffer = buffer.subarray(offset);
658
+ offset = 0;
659
+ }
660
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
661
+ newBuffer.set(buffer, 0);
662
+ newBuffer.set(chunk, buffer.length);
663
+ buffer = newBuffer;
664
+ if (inner === null) {
665
+ if (offset >= buffer.length) return;
666
+ const firstByte = buffer[offset];
667
+ if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
668
+ const decoder = createSubgroupStreamDecoder();
669
+ inner = decoder;
670
+ } else if (firstByte === 5) {
671
+ const decoder = createFetchStreamDecoder();
672
+ inner = decoder;
673
+ } else {
674
+ controller.error(
675
+ new DecodeError(
676
+ "CONSTRAINT_VIOLATION",
677
+ `Unknown data stream type: 0x${firstByte.toString(16)}`,
678
+ 0
679
+ )
680
+ );
681
+ return;
682
+ }
683
+ }
684
+ },
685
+ flush(controller) {
686
+ if (offset >= buffer.length) return;
687
+ const view = buffer.subarray(offset);
688
+ const firstByte = view[0];
689
+ let result;
690
+ if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
691
+ result = decodeSubgroupStream(view);
692
+ } else if (firstByte === 5) {
693
+ result = decodeFetchStream(view);
694
+ } else {
695
+ controller.error(
696
+ new DecodeError(
697
+ "CONSTRAINT_VIOLATION",
698
+ `Unknown data stream type: 0x${firstByte.toString(16)}`,
699
+ 0
700
+ )
701
+ );
702
+ return;
703
+ }
704
+ if (!result.ok) {
705
+ controller.error(result.error);
706
+ return;
707
+ }
708
+ const stream = result.value;
709
+ if (stream.type === "subgroup") {
710
+ controller.enqueue({
711
+ type: "subgroup_header",
712
+ trackAlias: stream.trackAlias,
713
+ groupId: stream.groupId,
714
+ subgroupId: stream.subgroupId,
715
+ publisherPriority: stream.publisherPriority
716
+ });
717
+ for (const obj of stream.objects) {
718
+ controller.enqueue(obj);
719
+ }
720
+ } else if (stream.type === "fetch") {
721
+ controller.enqueue({
722
+ type: "fetch_header",
723
+ requestId: stream.requestId
724
+ });
725
+ for (const obj of stream.objects) {
726
+ controller.enqueue(obj);
727
+ }
728
+ }
729
+ }
730
+ });
731
+ }
732
+
67
733
  // src/drafts/draft16/codec.ts
68
- function bytesToHex(bytes) {
69
- let hex = "";
70
- for (let i = 0; i < bytes.byteLength; i++) {
71
- hex += bytes[i].toString(16).padStart(2, "0");
72
- }
73
- return hex;
74
- }
75
- function hexToBytes(hex) {
76
- const bytes = new Uint8Array(hex.length / 2);
77
- for (let i = 0; i < hex.length; i += 2) {
78
- bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
79
- }
80
- return bytes;
81
- }
734
+ var textEncoder = /* @__PURE__ */ new TextEncoder();
735
+ var textDecoder = /* @__PURE__ */ new TextDecoder();
82
736
  function encodeSetupParams(params, writer) {
83
737
  let count = 0;
84
738
  if (params.path !== void 0) count++;
@@ -90,7 +744,7 @@ function encodeSetupParams(params, writer) {
90
744
  writer.writeVarInt(count);
91
745
  if (params.path !== void 0) {
92
746
  writer.writeVarInt(SETUP_PARAM_PATH);
93
- const encoded = new TextEncoder().encode(params.path);
747
+ const encoded = textEncoder.encode(params.path);
94
748
  writer.writeVarInt(encoded.byteLength);
95
749
  writer.writeBytes(encoded);
96
750
  }
@@ -104,13 +758,13 @@ function encodeSetupParams(params, writer) {
104
758
  }
105
759
  if (params.authority !== void 0) {
106
760
  writer.writeVarInt(SETUP_PARAM_AUTHORITY);
107
- const encoded = new TextEncoder().encode(params.authority);
761
+ const encoded = textEncoder.encode(params.authority);
108
762
  writer.writeVarInt(encoded.byteLength);
109
763
  writer.writeBytes(encoded);
110
764
  }
111
765
  if (params.moqt_implementation !== void 0) {
112
766
  writer.writeVarInt(SETUP_PARAM_MOQT_IMPLEMENTATION);
113
- const encoded = new TextEncoder().encode(params.moqt_implementation);
767
+ const encoded = textEncoder.encode(params.moqt_implementation);
114
768
  writer.writeVarInt(encoded.byteLength);
115
769
  writer.writeBytes(encoded);
116
770
  }
@@ -157,11 +811,11 @@ function decodeSetupParams(reader) {
157
811
  const length = Number(reader.readVarInt());
158
812
  const bytes = reader.readBytes(length);
159
813
  if (paramType === SETUP_PARAM_PATH) {
160
- result.path = new TextDecoder().decode(bytes);
814
+ result.path = textDecoder.decode(bytes);
161
815
  } else if (paramType === SETUP_PARAM_AUTHORITY) {
162
- result.authority = new TextDecoder().decode(bytes);
816
+ result.authority = textDecoder.decode(bytes);
163
817
  } else if (paramType === SETUP_PARAM_MOQT_IMPLEMENTATION) {
164
- result.moqt_implementation = new TextDecoder().decode(bytes);
818
+ result.moqt_implementation = textDecoder.decode(bytes);
165
819
  } else {
166
820
  unknown.push({
167
821
  id: `0x${paramType.toString(16)}`,
@@ -618,11 +1272,11 @@ function encodeMessage(message) {
618
1272
  }
619
1273
  const payloadWriter = new BufferWriter();
620
1274
  encodePayload(message, payloadWriter);
621
- const payload = payloadWriter.finish();
1275
+ const payload = payloadWriter.finishView();
622
1276
  if (payload.byteLength > 65535) {
623
1277
  throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
624
1278
  }
625
- const writer = new BufferWriter();
1279
+ const writer = new BufferWriter(payload.byteLength + 16);
626
1280
  writer.writeVarInt(typeId);
627
1281
  writer.writeUint8(payload.byteLength >> 8 & 255);
628
1282
  writer.writeUint8(payload.byteLength & 255);
@@ -698,344 +1352,37 @@ function decodeMessage(bytes) {
698
1352
  if (!decoder) {
699
1353
  return {
700
1354
  ok: false,
701
- error: new DecodeError(
702
- "UNKNOWN_MESSAGE_TYPE",
703
- `Unknown message type ID: 0x${typeId.toString(16)}`,
704
- 0
705
- )
706
- };
707
- }
708
- const message = decoder(payloadReader);
709
- return { ok: true, value: message, bytesRead: reader.offset };
710
- } catch (e) {
711
- if (e instanceof DecodeError) {
712
- return { ok: false, error: e };
713
- }
714
- throw e;
715
- }
716
- }
717
- var FETCH_STREAM_TYPE = 0x05n;
718
- function encodeSubgroupStream(stream) {
719
- const w = new BufferWriter();
720
- const streamType = stream.headerType;
721
- w.writeVarInt(BigInt(streamType));
722
- const hasSubgroupField = (streamType & 4) !== 0;
723
- const hasPriority = streamType < 48;
724
- w.writeVarInt(stream.trackAlias);
725
- w.writeVarInt(stream.groupId);
726
- if (hasSubgroupField) {
727
- w.writeVarInt(stream.subgroupId);
728
- }
729
- if (hasPriority) {
730
- w.writeUint8(stream.publisherPriority);
731
- }
732
- let prevObjectId = -1n;
733
- for (const obj of stream.objects) {
734
- const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
735
- w.writeVarInt(delta);
736
- w.writeVarInt(obj.payloadLength);
737
- if (obj.payloadLength === 0) {
738
- w.writeVarInt(obj.status ?? 0n);
739
- } else {
740
- w.writeBytes(obj.payload);
741
- }
742
- prevObjectId = obj.objectId;
743
- }
744
- return w.finish();
745
- }
746
- function encodeDatagram(dg) {
747
- const w = new BufferWriter();
748
- const dgType = dg.datagramType;
749
- w.writeVarInt(BigInt(dgType));
750
- w.writeVarInt(dg.trackAlias);
751
- w.writeVarInt(dg.groupId);
752
- const objectIdAbsent = (dgType & 4) !== 0;
753
- const isStatus = (dgType & 32) !== 0;
754
- if (!objectIdAbsent) {
755
- w.writeVarInt(dg.objectId);
756
- }
757
- w.writeUint8(dg.publisherPriority);
758
- if (isStatus) {
759
- w.writeVarInt(dg.objectStatus ?? 0n);
760
- } else {
761
- w.writeBytes(dg.payload);
762
- }
763
- return w.finish();
764
- }
765
- function encodeFetchStream(stream) {
766
- const w = new BufferWriter();
767
- w.writeVarInt(FETCH_STREAM_TYPE);
768
- w.writeVarInt(stream.requestId);
769
- for (const obj of stream.objects) {
770
- w.writeUint8(obj.serializationFlags);
771
- const flags = obj.serializationFlags;
772
- if (flags & 8) w.writeVarInt(obj.groupId);
773
- const subgroupEncoding = flags & 3;
774
- if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
775
- if (flags & 4) w.writeVarInt(obj.objectId);
776
- if (flags & 16) w.writeUint8(obj.publisherPriority);
777
- w.writeVarInt(obj.payloadLength);
778
- if (obj.payloadLength === 0) {
779
- w.writeVarInt(obj.status ?? 0n);
780
- } else {
781
- w.writeBytes(obj.payload);
782
- }
783
- }
784
- return w.finish();
785
- }
786
- function decodeSubgroupStream(bytes) {
787
- try {
788
- const r = new BufferReader(bytes);
789
- const streamType = Number(r.readVarInt());
790
- if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
791
- return {
792
- ok: false,
793
- error: new DecodeError(
794
- "CONSTRAINT_VIOLATION",
795
- `Expected subgroup stream type 0x10-0x1D or 0x30-0x3D, got 0x${streamType.toString(16)}`,
796
- 0
797
- )
798
- };
799
- }
800
- const hasSubgroupField = (streamType & 4) !== 0;
801
- const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
802
- const hasPriority = streamType < 48;
803
- const trackAlias = r.readVarInt();
804
- const groupId = r.readVarInt();
805
- let subgroupId = 0n;
806
- if (hasSubgroupField) {
807
- subgroupId = r.readVarInt();
808
- }
809
- let publisherPriority = 128;
810
- if (hasPriority) {
811
- publisherPriority = r.readUint8();
812
- }
813
- const objects = [];
814
- let prevObjectId = -1n;
815
- let firstObject = true;
816
- while (r.remaining > 0) {
817
- const delta = r.readVarInt();
818
- let objectId;
819
- if (firstObject) {
820
- objectId = delta;
821
- if (subgroupIsFirstObjId && firstObject) {
822
- subgroupId = objectId;
823
- }
824
- firstObject = false;
825
- } else {
826
- objectId = prevObjectId + 1n + delta;
827
- }
828
- const payloadLength = Number(r.readVarInt());
829
- let payload;
830
- let status;
831
- if (payloadLength === 0) {
832
- status = r.readVarInt();
833
- payload = new Uint8Array(0);
834
- } else {
835
- payload = r.readBytes(payloadLength);
836
- }
837
- const obj = { type: "object", objectId, payloadLength, payload };
838
- if (status !== void 0) obj.status = status;
839
- objects.push(obj);
840
- prevObjectId = objectId;
841
- }
842
- return {
843
- ok: true,
844
- value: {
845
- type: "subgroup",
846
- headerType: streamType,
847
- trackAlias,
848
- groupId,
849
- subgroupId,
850
- publisherPriority,
851
- objects
852
- },
853
- bytesRead: r.offset
854
- };
855
- } catch (e) {
856
- if (e instanceof DecodeError) return { ok: false, error: e };
857
- throw e;
858
- }
859
- }
860
- function decodeDatagram(bytes) {
861
- try {
862
- const r = new BufferReader(bytes);
863
- const dgType = Number(r.readVarInt());
864
- const objectIdAbsent = (dgType & 4) !== 0;
865
- const endOfGroup = (dgType & 2) !== 0;
866
- const isStatus = (dgType & 32) !== 0;
867
- const trackAlias = r.readVarInt();
868
- const groupId = r.readVarInt();
869
- let objectId = 0n;
870
- if (!objectIdAbsent) {
871
- objectId = r.readVarInt();
872
- }
873
- const publisherPriority = r.readUint8();
874
- let objectStatus;
875
- let payload;
876
- if (isStatus) {
877
- objectStatus = r.readVarInt();
878
- payload = new Uint8Array(0);
879
- } else {
880
- payload = r.readBytes(r.remaining);
881
- }
882
- const payloadLength = payload.byteLength;
883
- const result = {
884
- type: "datagram",
885
- datagramType: dgType,
886
- trackAlias,
887
- groupId,
888
- objectId,
889
- publisherPriority,
890
- payloadLength,
891
- payload
892
- };
893
- if (endOfGroup) result.endOfGroup = true;
894
- if (objectStatus !== void 0)
895
- result.objectStatus = objectStatus;
896
- return { ok: true, value: result, bytesRead: r.offset };
897
- } catch (e) {
898
- if (e instanceof DecodeError) return { ok: false, error: e };
899
- throw e;
900
- }
901
- }
902
- function decodeFetchStream(bytes) {
903
- try {
904
- const r = new BufferReader(bytes);
905
- const streamType = r.readVarInt();
906
- if (streamType !== FETCH_STREAM_TYPE) {
907
- return {
908
- ok: false,
909
- error: new DecodeError(
910
- "CONSTRAINT_VIOLATION",
911
- `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
912
- 0
913
- )
914
- };
915
- }
916
- const requestId = r.readVarInt();
917
- const objects = [];
918
- let prevGroupId = 0n;
919
- let prevSubgroupId = 0n;
920
- let prevObjectId = 0n;
921
- let prevPriority = 128;
922
- let first = true;
923
- while (r.remaining > 0) {
924
- const flags = r.readUint8();
925
- const subgroupEncoding = flags & 3;
926
- const objectIdPresent = (flags & 4) !== 0;
927
- const groupIdPresent = (flags & 8) !== 0;
928
- const priorityPresent = (flags & 16) !== 0;
929
- const extensionsPresent = (flags & 32) !== 0;
930
- if (flags & 192) {
931
- return {
932
- ok: false,
933
- error: new DecodeError(
934
- "CONSTRAINT_VIOLATION",
935
- "Reserved bits set in fetch object flags",
936
- r.offset
937
- )
938
- };
939
- }
940
- let groupId = prevGroupId;
941
- if (groupIdPresent) {
942
- groupId = r.readVarInt();
943
- } else if (first) {
944
- return {
945
- ok: false,
946
- error: new DecodeError(
947
- "CONSTRAINT_VIOLATION",
948
- "First fetch object must include groupId",
949
- r.offset
950
- )
951
- };
952
- }
953
- let subgroupId = prevSubgroupId;
954
- if (subgroupEncoding === 3) {
955
- subgroupId = r.readVarInt();
956
- }
957
- let objectId = prevObjectId + 1n;
958
- if (objectIdPresent) {
959
- objectId = r.readVarInt();
960
- } else if (first) {
961
- return {
962
- ok: false,
963
- error: new DecodeError(
964
- "CONSTRAINT_VIOLATION",
965
- "First fetch object must include objectId",
966
- r.offset
967
- )
968
- };
969
- }
970
- if (priorityPresent) {
971
- prevPriority = r.readUint8();
972
- }
973
- if (extensionsPresent) {
974
- const extLen = Number(r.readVarInt());
975
- if (extLen > 0) {
976
- r.readBytes(extLen);
977
- }
978
- }
979
- const payloadLength = Number(r.readVarInt());
980
- let payload;
981
- let status;
982
- if (payloadLength > 0) {
983
- payload = r.readBytes(payloadLength);
984
- } else {
985
- status = r.readVarInt();
986
- payload = new Uint8Array(0);
987
- }
988
- const obj = {
989
- type: "object",
990
- serializationFlags: flags,
991
- groupId,
992
- subgroupId,
993
- objectId,
994
- publisherPriority: prevPriority,
995
- payloadLength,
996
- payload
1355
+ error: new DecodeError(
1356
+ "UNKNOWN_MESSAGE_TYPE",
1357
+ `Unknown message type ID: 0x${typeId.toString(16)}`,
1358
+ 0
1359
+ )
997
1360
  };
998
- if (status !== void 0) obj.status = status;
999
- objects.push(obj);
1000
- prevGroupId = groupId;
1001
- prevSubgroupId = subgroupId;
1002
- prevObjectId = objectId;
1003
- first = false;
1004
1361
  }
1005
- return {
1006
- ok: true,
1007
- value: { type: "fetch", requestId, objects },
1008
- bytesRead: r.offset
1009
- };
1362
+ const message = decoder(payloadReader);
1363
+ return { ok: true, value: message, bytesRead: reader.offset };
1010
1364
  } catch (e) {
1011
- if (e instanceof DecodeError) return { ok: false, error: e };
1012
- throw e;
1013
- }
1014
- }
1015
- function decodeDataStream(streamType, bytes) {
1016
- switch (streamType) {
1017
- case "subgroup":
1018
- return decodeSubgroupStream(bytes);
1019
- case "datagram":
1020
- return decodeDatagram(bytes);
1021
- case "fetch":
1022
- return decodeFetchStream(bytes);
1023
- default: {
1024
- const _exhaustive = streamType;
1025
- throw new Error(`Unknown stream type: ${_exhaustive}`);
1365
+ if (e instanceof DecodeError) {
1366
+ return { ok: false, error: e };
1026
1367
  }
1368
+ throw e;
1027
1369
  }
1028
1370
  }
1029
1371
  function createStreamDecoder() {
1030
1372
  let buffer = new Uint8Array(0);
1373
+ let offset = 0;
1031
1374
  return new TransformStream({
1032
1375
  transform(chunk, controller) {
1376
+ if (offset > 0) {
1377
+ buffer = buffer.subarray(offset);
1378
+ offset = 0;
1379
+ }
1033
1380
  const newBuffer = new Uint8Array(buffer.length + chunk.length);
1034
1381
  newBuffer.set(buffer, 0);
1035
1382
  newBuffer.set(chunk, buffer.length);
1036
1383
  buffer = newBuffer;
1037
- while (buffer.length > 0) {
1038
- const result = decodeMessage(buffer);
1384
+ while (offset < buffer.length) {
1385
+ const result = decodeMessage(buffer.subarray(offset));
1039
1386
  if (!result.ok) {
1040
1387
  if (result.error.code === "UNEXPECTED_END") {
1041
1388
  break;
@@ -1044,11 +1391,11 @@ function createStreamDecoder() {
1044
1391
  return;
1045
1392
  }
1046
1393
  controller.enqueue(result.value);
1047
- buffer = buffer.slice(result.bytesRead);
1394
+ offset += result.bytesRead;
1048
1395
  }
1049
1396
  },
1050
1397
  flush(controller) {
1051
- if (buffer.length > 0) {
1398
+ if (offset < buffer.length) {
1052
1399
  controller.error(
1053
1400
  new DecodeError("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
1054
1401
  );
@@ -1056,243 +1403,6 @@ function createStreamDecoder() {
1056
1403
  }
1057
1404
  });
1058
1405
  }
1059
- function createSubgroupStreamDecoder() {
1060
- let buffer = new Uint8Array(0);
1061
- let headerEmitted = false;
1062
- let prevObjectId = -1n;
1063
- let firstObject = true;
1064
- let _subgroupIsFirstObjId = false;
1065
- return new TransformStream({
1066
- transform(chunk, controller) {
1067
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
1068
- newBuffer.set(buffer, 0);
1069
- newBuffer.set(chunk, buffer.length);
1070
- buffer = newBuffer;
1071
- if (!headerEmitted) {
1072
- try {
1073
- const r = new BufferReader(buffer);
1074
- const streamType = Number(r.readVarInt());
1075
- if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
1076
- controller.error(
1077
- new DecodeError(
1078
- "CONSTRAINT_VIOLATION",
1079
- `Expected subgroup stream type, got 0x${streamType.toString(16)}`,
1080
- 0
1081
- )
1082
- );
1083
- return;
1084
- }
1085
- const hasSubgroupField = (streamType & 4) !== 0;
1086
- _subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
1087
- const hasPriority = streamType < 48;
1088
- const trackAlias = r.readVarInt();
1089
- const groupId = r.readVarInt();
1090
- let subgroupId = 0n;
1091
- if (hasSubgroupField) {
1092
- subgroupId = r.readVarInt();
1093
- }
1094
- let publisherPriority = 128;
1095
- if (hasPriority) {
1096
- publisherPriority = r.readUint8();
1097
- }
1098
- controller.enqueue({
1099
- type: "subgroup_header",
1100
- trackAlias,
1101
- groupId,
1102
- subgroupId,
1103
- publisherPriority
1104
- });
1105
- headerEmitted = true;
1106
- buffer = buffer.slice(r.offset);
1107
- } catch (e) {
1108
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1109
- return;
1110
- }
1111
- controller.error(e);
1112
- return;
1113
- }
1114
- }
1115
- while (buffer.length > 0) {
1116
- try {
1117
- const r = new BufferReader(buffer);
1118
- const delta = r.readVarInt();
1119
- let objectId;
1120
- if (firstObject) {
1121
- objectId = delta;
1122
- firstObject = false;
1123
- } else {
1124
- objectId = prevObjectId + 1n + delta;
1125
- }
1126
- const payloadLength = Number(r.readVarInt());
1127
- const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
1128
- controller.enqueue({ type: "object", objectId, payloadLength, payload });
1129
- buffer = buffer.slice(r.offset);
1130
- prevObjectId = objectId;
1131
- } catch (e) {
1132
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1133
- break;
1134
- }
1135
- controller.error(e);
1136
- return;
1137
- }
1138
- }
1139
- },
1140
- flush(controller) {
1141
- if (buffer.length > 0) {
1142
- controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
1143
- }
1144
- }
1145
- });
1146
- }
1147
- function createFetchStreamDecoder() {
1148
- let buffer = new Uint8Array(0);
1149
- let headerEmitted = false;
1150
- return new TransformStream({
1151
- transform(chunk, controller) {
1152
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
1153
- newBuffer.set(buffer, 0);
1154
- newBuffer.set(chunk, buffer.length);
1155
- buffer = newBuffer;
1156
- if (!headerEmitted) {
1157
- try {
1158
- const r = new BufferReader(buffer);
1159
- const streamType = r.readVarInt();
1160
- if (streamType !== FETCH_STREAM_TYPE) {
1161
- controller.error(
1162
- new DecodeError(
1163
- "CONSTRAINT_VIOLATION",
1164
- `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
1165
- 0
1166
- )
1167
- );
1168
- return;
1169
- }
1170
- const requestId = r.readVarInt();
1171
- controller.enqueue({ type: "fetch_header", requestId });
1172
- headerEmitted = true;
1173
- buffer = buffer.slice(r.offset);
1174
- } catch (e) {
1175
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1176
- return;
1177
- }
1178
- controller.error(e);
1179
- return;
1180
- }
1181
- }
1182
- while (buffer.length > 0) {
1183
- try {
1184
- const r = new BufferReader(buffer);
1185
- const flags = r.readUint8();
1186
- const objectIdPresent = (flags & 4) !== 0;
1187
- const groupIdPresent = (flags & 8) !== 0;
1188
- const priorityPresent = (flags & 16) !== 0;
1189
- const extensionsPresent = (flags & 32) !== 0;
1190
- const subgroupEncoding = flags & 3;
1191
- if (groupIdPresent) r.readVarInt();
1192
- if (subgroupEncoding === 3) r.readVarInt();
1193
- let objectId = 0n;
1194
- if (objectIdPresent) objectId = r.readVarInt();
1195
- if (priorityPresent) r.readUint8();
1196
- if (extensionsPresent) {
1197
- const extLen = Number(r.readVarInt());
1198
- if (extLen > 0) r.readBytes(extLen);
1199
- }
1200
- const payloadLength = Number(r.readVarInt());
1201
- const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
1202
- controller.enqueue({ type: "object", objectId, payloadLength, payload });
1203
- buffer = buffer.slice(r.offset);
1204
- } catch (e) {
1205
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1206
- break;
1207
- }
1208
- controller.error(e);
1209
- return;
1210
- }
1211
- }
1212
- },
1213
- flush(controller) {
1214
- if (buffer.length > 0) {
1215
- controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
1216
- }
1217
- }
1218
- });
1219
- }
1220
- function createDataStreamDecoder() {
1221
- let buffer = new Uint8Array(0);
1222
- let inner = null;
1223
- return new TransformStream({
1224
- transform(chunk, controller) {
1225
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
1226
- newBuffer.set(buffer, 0);
1227
- newBuffer.set(chunk, buffer.length);
1228
- buffer = newBuffer;
1229
- if (inner === null) {
1230
- if (buffer.length === 0) return;
1231
- const firstByte = buffer[0];
1232
- if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
1233
- const decoder = createSubgroupStreamDecoder();
1234
- inner = decoder;
1235
- } else if (firstByte === 5) {
1236
- const decoder = createFetchStreamDecoder();
1237
- inner = decoder;
1238
- } else {
1239
- controller.error(
1240
- new DecodeError(
1241
- "CONSTRAINT_VIOLATION",
1242
- `Unknown data stream type: 0x${firstByte.toString(16)}`,
1243
- 0
1244
- )
1245
- );
1246
- return;
1247
- }
1248
- }
1249
- },
1250
- flush(controller) {
1251
- if (buffer.length === 0) return;
1252
- const firstByte = buffer[0];
1253
- let result;
1254
- if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
1255
- result = decodeSubgroupStream(buffer);
1256
- } else if (firstByte === 5) {
1257
- result = decodeFetchStream(buffer);
1258
- } else {
1259
- controller.error(
1260
- new DecodeError(
1261
- "CONSTRAINT_VIOLATION",
1262
- `Unknown data stream type: 0x${firstByte.toString(16)}`,
1263
- 0
1264
- )
1265
- );
1266
- return;
1267
- }
1268
- if (!result.ok) {
1269
- controller.error(result.error);
1270
- return;
1271
- }
1272
- const stream = result.value;
1273
- if (stream.type === "subgroup") {
1274
- controller.enqueue({
1275
- type: "subgroup_header",
1276
- trackAlias: stream.trackAlias,
1277
- groupId: stream.groupId,
1278
- subgroupId: stream.subgroupId,
1279
- publisherPriority: stream.publisherPriority
1280
- });
1281
- for (const obj of stream.objects) {
1282
- controller.enqueue(obj);
1283
- }
1284
- } else if (stream.type === "fetch") {
1285
- controller.enqueue({
1286
- type: "fetch_header",
1287
- requestId: stream.requestId
1288
- });
1289
- for (const obj of stream.objects) {
1290
- controller.enqueue(obj);
1291
- }
1292
- }
1293
- }
1294
- });
1295
- }
1296
1406
  function createDraft16Codec() {
1297
1407
  return {
1298
1408
  draft: "draft-ietf-moq-transport-16",
@@ -1344,8 +1454,6 @@ export {
1344
1454
  SETUP_PARAM_MOQT_IMPLEMENTATION,
1345
1455
  MESSAGE_TYPE_MAP,
1346
1456
  MESSAGE_ID_MAP,
1347
- encodeMessage,
1348
- decodeMessage,
1349
1457
  encodeSubgroupStream,
1350
1458
  encodeDatagram,
1351
1459
  encodeFetchStream,
@@ -1353,9 +1461,11 @@ export {
1353
1461
  decodeDatagram,
1354
1462
  decodeFetchStream,
1355
1463
  decodeDataStream,
1356
- createStreamDecoder,
1357
1464
  createSubgroupStreamDecoder,
1358
1465
  createFetchStreamDecoder,
1359
1466
  createDataStreamDecoder,
1467
+ encodeMessage,
1468
+ decodeMessage,
1469
+ createStreamDecoder,
1360
1470
  createDraft16Codec
1361
1471
  };