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