@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/draft14/messages.ts
8
12
  var MSG_SUBSCRIBE_UPDATE = 0x02n;
@@ -74,21 +78,666 @@ var MESSAGE_ID_MAP = new Map(
74
78
  [...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
75
79
  );
76
80
 
77
- // src/drafts/draft14/codec.ts
78
- function bytesToHex(bytes) {
79
- let hex = "";
80
- for (let i = 0; i < bytes.byteLength; i++) {
81
- hex += bytes[i].toString(16).padStart(2, "0");
81
+ // src/drafts/draft14/data-streams.ts
82
+ var FETCH_STREAM_TYPE = 0x05n;
83
+ function isValidSubgroupType(t) {
84
+ return t >= 16 && t <= 21 || t >= 24 && t <= 29;
85
+ }
86
+ function encodeSubgroupStream(stream) {
87
+ const w = new BufferWriter();
88
+ w.writeVarInt(BigInt(stream.headerType));
89
+ w.writeVarInt(stream.trackAlias);
90
+ w.writeVarInt(stream.groupId);
91
+ const hasSubgroupField = (stream.headerType & 4) !== 0;
92
+ const extensionsPresent = (stream.headerType & 1) !== 0;
93
+ if (hasSubgroupField) {
94
+ w.writeVarInt(stream.subgroupId);
95
+ }
96
+ w.writeUint8(stream.publisherPriority);
97
+ let prevObjectId = -1n;
98
+ let first = true;
99
+ for (const obj of stream.objects) {
100
+ const delta = first ? obj.objectId : obj.objectId - prevObjectId - 1n;
101
+ w.writeVarInt(delta);
102
+ first = false;
103
+ prevObjectId = obj.objectId;
104
+ if (extensionsPresent) {
105
+ w.writeVarInt(BigInt(obj.extensionData.length));
106
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
107
+ }
108
+ if (obj.payloadLength === 0) {
109
+ w.writeVarInt(0);
110
+ w.writeVarInt(obj.status ?? 0n);
111
+ } else {
112
+ w.writeVarInt(obj.payloadLength);
113
+ w.writeBytes(obj.payload);
114
+ }
115
+ }
116
+ return w.finish();
117
+ }
118
+ function encodeDatagram(dg) {
119
+ const w = new BufferWriter();
120
+ w.writeVarInt(BigInt(dg.datagramType));
121
+ w.writeVarInt(dg.trackAlias);
122
+ w.writeVarInt(dg.groupId);
123
+ const objectIdPresent = (dg.datagramType & 4) === 0;
124
+ const isStatus = dg.datagramType >= 32;
125
+ const extensionsPresent = (dg.datagramType & 1) !== 0;
126
+ if (objectIdPresent) {
127
+ w.writeVarInt(dg.objectId);
128
+ }
129
+ w.writeUint8(dg.publisherPriority);
130
+ if (extensionsPresent) {
131
+ w.writeVarInt(0);
132
+ }
133
+ if (isStatus) {
134
+ w.writeVarInt(dg.objectStatus ?? 0n);
135
+ } else {
136
+ w.writeBytes(dg.payload);
137
+ }
138
+ return w.finish();
139
+ }
140
+ function encodeFetchStream(stream) {
141
+ const w = new BufferWriter();
142
+ w.writeVarInt(FETCH_STREAM_TYPE);
143
+ w.writeVarInt(stream.requestId);
144
+ for (const obj of stream.objects) {
145
+ w.writeVarInt(obj.groupId);
146
+ w.writeVarInt(obj.subgroupId);
147
+ w.writeVarInt(obj.objectId);
148
+ w.writeUint8(obj.publisherPriority);
149
+ w.writeVarInt(BigInt(obj.extensionData.length));
150
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
151
+ if (obj.payloadLength === 0) {
152
+ w.writeVarInt(0);
153
+ w.writeVarInt(obj.status ?? 0n);
154
+ } else {
155
+ w.writeVarInt(obj.payloadLength);
156
+ w.writeBytes(obj.payload);
157
+ }
158
+ }
159
+ return w.finish();
160
+ }
161
+ function decodeSubgroupStream(bytes) {
162
+ try {
163
+ const r = new BufferReader(bytes);
164
+ const streamType = Number(r.readVarInt());
165
+ if (!isValidSubgroupType(streamType)) {
166
+ return {
167
+ ok: false,
168
+ error: new DecodeError(
169
+ "CONSTRAINT_VIOLATION",
170
+ `Expected subgroup stream type 0x10-0x1D, got 0x${streamType.toString(16)}`,
171
+ 0
172
+ )
173
+ };
174
+ }
175
+ const extensionsPresent = (streamType & 1) !== 0;
176
+ const hasSubgroupField = (streamType & 4) !== 0;
177
+ const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
178
+ const trackAlias = r.readVarInt();
179
+ const groupId = r.readVarInt();
180
+ let subgroupId = 0n;
181
+ if (hasSubgroupField) {
182
+ subgroupId = r.readVarInt();
183
+ }
184
+ const publisherPriority = r.readUint8();
185
+ const objects = [];
186
+ let prevObjectId = -1n;
187
+ let firstObject = true;
188
+ while (r.remaining > 0) {
189
+ const byteOffset = r.offset;
190
+ const delta = r.readVarInt();
191
+ let objectId;
192
+ if (firstObject) {
193
+ objectId = delta;
194
+ if (subgroupIsFirstObjId) {
195
+ subgroupId = objectId;
196
+ }
197
+ firstObject = false;
198
+ } else {
199
+ objectId = prevObjectId + 1n + delta;
200
+ }
201
+ let extensionData = new Uint8Array(0);
202
+ if (extensionsPresent) {
203
+ const extLen = Number(r.readVarInt());
204
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
205
+ }
206
+ const payloadLength = Number(r.readVarInt());
207
+ let payload;
208
+ let status;
209
+ let payloadByteOffset;
210
+ if (payloadLength === 0) {
211
+ status = r.readVarInt();
212
+ payloadByteOffset = r.offset;
213
+ payload = new Uint8Array(0);
214
+ } else {
215
+ payloadByteOffset = r.offset;
216
+ payload = r.readBytesView(payloadLength);
217
+ }
218
+ const obj = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, payload, extensionData };
219
+ if (status !== void 0) obj.status = status;
220
+ objects.push(obj);
221
+ prevObjectId = objectId;
222
+ }
223
+ return {
224
+ ok: true,
225
+ value: {
226
+ type: "subgroup",
227
+ headerType: streamType,
228
+ trackAlias,
229
+ groupId,
230
+ subgroupId,
231
+ publisherPriority,
232
+ objects
233
+ },
234
+ bytesRead: r.offset
235
+ };
236
+ } catch (e) {
237
+ if (e instanceof DecodeError) return { ok: false, error: e };
238
+ throw e;
82
239
  }
83
- return hex;
84
240
  }
85
- function hexToBytes(hex) {
86
- const bytes = new Uint8Array(hex.length / 2);
87
- for (let i = 0; i < hex.length; i += 2) {
88
- bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
241
+ function decodeDatagram(bytes) {
242
+ try {
243
+ const r = new BufferReader(bytes);
244
+ const dgType = Number(r.readVarInt());
245
+ const validDatagram = dgType >= 0 && dgType <= 7 || dgType === 32 || dgType === 33;
246
+ if (!validDatagram) {
247
+ return {
248
+ ok: false,
249
+ error: new DecodeError(
250
+ "CONSTRAINT_VIOLATION",
251
+ `Expected datagram type 0x00-0x07 or 0x20-0x21, got 0x${dgType.toString(16)}`,
252
+ 0
253
+ )
254
+ };
255
+ }
256
+ const objectIdPresent = (dgType & 4) === 0;
257
+ const endOfGroup = (dgType & 2) !== 0;
258
+ const extensionsPresent = (dgType & 1) !== 0;
259
+ const isStatus = dgType >= 32;
260
+ const trackAlias = r.readVarInt();
261
+ const groupId = r.readVarInt();
262
+ let objectId = 0n;
263
+ if (objectIdPresent) {
264
+ objectId = r.readVarInt();
265
+ }
266
+ const publisherPriority = r.readUint8();
267
+ if (extensionsPresent) {
268
+ const extLen = Number(r.readVarInt());
269
+ if (extLen > 0) {
270
+ r.readBytesView(extLen);
271
+ }
272
+ }
273
+ let objectStatus;
274
+ let payload;
275
+ if (isStatus) {
276
+ objectStatus = r.readVarInt();
277
+ payload = new Uint8Array(0);
278
+ } else {
279
+ payload = r.readBytesView(r.remaining);
280
+ }
281
+ const payloadLength = payload.byteLength;
282
+ const result = {
283
+ type: "datagram",
284
+ datagramType: dgType,
285
+ trackAlias,
286
+ groupId,
287
+ objectId,
288
+ publisherPriority,
289
+ payloadLength,
290
+ payload
291
+ };
292
+ if (endOfGroup) result.endOfGroup = true;
293
+ if (objectStatus !== void 0)
294
+ result.objectStatus = objectStatus;
295
+ return { ok: true, value: result, bytesRead: r.offset };
296
+ } catch (e) {
297
+ if (e instanceof DecodeError) return { ok: false, error: e };
298
+ throw e;
89
299
  }
90
- return bytes;
91
300
  }
301
+ function decodeFetchStream(bytes) {
302
+ try {
303
+ const r = new BufferReader(bytes);
304
+ const streamType = r.readVarInt();
305
+ if (streamType !== FETCH_STREAM_TYPE) {
306
+ return {
307
+ ok: false,
308
+ error: new DecodeError(
309
+ "CONSTRAINT_VIOLATION",
310
+ `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
311
+ 0
312
+ )
313
+ };
314
+ }
315
+ const requestId = r.readVarInt();
316
+ const objects = [];
317
+ while (r.remaining > 0) {
318
+ const byteOffset = r.offset;
319
+ const groupId = r.readVarInt();
320
+ const subgroupId = r.readVarInt();
321
+ const objectId = r.readVarInt();
322
+ const publisherPriority = r.readUint8();
323
+ const extLen = Number(r.readVarInt());
324
+ const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
325
+ const payloadLength = Number(r.readVarInt());
326
+ let payload;
327
+ let status;
328
+ let payloadByteOffset;
329
+ if (payloadLength === 0) {
330
+ status = r.readVarInt();
331
+ payloadByteOffset = r.offset;
332
+ payload = new Uint8Array(0);
333
+ } else {
334
+ payloadByteOffset = r.offset;
335
+ payload = r.readBytesView(payloadLength);
336
+ }
337
+ const obj = {
338
+ type: "object",
339
+ byteOffset,
340
+ payloadByteOffset,
341
+ groupId,
342
+ subgroupId,
343
+ objectId,
344
+ publisherPriority,
345
+ payloadLength,
346
+ payload,
347
+ extensionData
348
+ };
349
+ if (status !== void 0) obj.status = status;
350
+ objects.push(obj);
351
+ }
352
+ return {
353
+ ok: true,
354
+ value: { type: "fetch", requestId, objects },
355
+ bytesRead: r.offset
356
+ };
357
+ } catch (e) {
358
+ if (e instanceof DecodeError) return { ok: false, error: e };
359
+ throw e;
360
+ }
361
+ }
362
+ function decodeDataStream(streamType, bytes) {
363
+ switch (streamType) {
364
+ case "subgroup":
365
+ return decodeSubgroupStream(bytes);
366
+ case "datagram":
367
+ return decodeDatagram(bytes);
368
+ case "fetch":
369
+ return decodeFetchStream(bytes);
370
+ default: {
371
+ const _exhaustive = streamType;
372
+ throw new Error(`Unknown stream type: ${_exhaustive}`);
373
+ }
374
+ }
375
+ }
376
+ function createSubgroupStreamDecoder() {
377
+ let buffer = new Uint8Array(0);
378
+ let offset = 0;
379
+ let headerEmitted = false;
380
+ let extensionsPresent = false;
381
+ let prevObjectId = -1n;
382
+ let firstObject = true;
383
+ return new TransformStream({
384
+ transform(chunk, controller) {
385
+ if (offset > 0) {
386
+ buffer = buffer.subarray(offset);
387
+ offset = 0;
388
+ }
389
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
390
+ newBuffer.set(buffer, 0);
391
+ newBuffer.set(chunk, buffer.length);
392
+ buffer = newBuffer;
393
+ if (!headerEmitted) {
394
+ try {
395
+ const r = new BufferReader(buffer.subarray(offset));
396
+ const streamType = Number(r.readVarInt());
397
+ if (!isValidSubgroupType(streamType)) {
398
+ controller.error(
399
+ new DecodeError(
400
+ "CONSTRAINT_VIOLATION",
401
+ `Expected subgroup stream type 0x10-0x1D, got 0x${streamType.toString(16)}`,
402
+ 0
403
+ )
404
+ );
405
+ return;
406
+ }
407
+ extensionsPresent = (streamType & 1) !== 0;
408
+ const hasSubgroupField = (streamType & 4) !== 0;
409
+ const trackAlias = r.readVarInt();
410
+ const groupId = r.readVarInt();
411
+ let subgroupId = 0n;
412
+ if (hasSubgroupField) {
413
+ subgroupId = r.readVarInt();
414
+ }
415
+ const publisherPriority = r.readUint8();
416
+ controller.enqueue({
417
+ type: "subgroup_header",
418
+ headerType: streamType,
419
+ trackAlias,
420
+ groupId,
421
+ subgroupId,
422
+ publisherPriority
423
+ });
424
+ headerEmitted = true;
425
+ offset += r.offset;
426
+ } catch (e) {
427
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
428
+ return;
429
+ }
430
+ controller.error(e);
431
+ return;
432
+ }
433
+ }
434
+ while (offset < buffer.length) {
435
+ try {
436
+ const r = new BufferReader(buffer.subarray(offset));
437
+ const byteOffset = r.offset;
438
+ const delta = r.readVarInt();
439
+ const objectId = firstObject ? delta : prevObjectId + 1n + delta;
440
+ firstObject = false;
441
+ let extensionData = new Uint8Array(0);
442
+ if (extensionsPresent) {
443
+ const extLen = Number(r.readVarInt());
444
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
445
+ }
446
+ const payloadLength = Number(r.readVarInt());
447
+ let payload;
448
+ let status;
449
+ let payloadByteOffset;
450
+ if (payloadLength === 0) {
451
+ status = r.readVarInt();
452
+ payloadByteOffset = r.offset;
453
+ payload = new Uint8Array(0);
454
+ } else {
455
+ payloadByteOffset = r.offset;
456
+ payload = r.readBytesView(payloadLength);
457
+ }
458
+ const obj = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, payload, extensionData };
459
+ if (status !== void 0) obj.status = status;
460
+ controller.enqueue(obj);
461
+ prevObjectId = objectId;
462
+ offset += r.offset;
463
+ } catch (e) {
464
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
465
+ break;
466
+ }
467
+ controller.error(e);
468
+ return;
469
+ }
470
+ }
471
+ },
472
+ flush(controller) {
473
+ if (offset < buffer.length) {
474
+ controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
475
+ }
476
+ }
477
+ });
478
+ }
479
+ function createFetchStreamDecoder() {
480
+ let buffer = new Uint8Array(0);
481
+ let offset = 0;
482
+ let headerEmitted = false;
483
+ return new TransformStream({
484
+ transform(chunk, controller) {
485
+ if (offset > 0) {
486
+ buffer = buffer.subarray(offset);
487
+ offset = 0;
488
+ }
489
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
490
+ newBuffer.set(buffer, 0);
491
+ newBuffer.set(chunk, buffer.length);
492
+ buffer = newBuffer;
493
+ if (!headerEmitted) {
494
+ try {
495
+ const r = new BufferReader(buffer.subarray(offset));
496
+ const streamType = r.readVarInt();
497
+ if (streamType !== FETCH_STREAM_TYPE) {
498
+ controller.error(
499
+ new DecodeError(
500
+ "CONSTRAINT_VIOLATION",
501
+ `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
502
+ 0
503
+ )
504
+ );
505
+ return;
506
+ }
507
+ const requestId = r.readVarInt();
508
+ controller.enqueue({ type: "fetch_header", requestId });
509
+ headerEmitted = true;
510
+ offset += r.offset;
511
+ } catch (e) {
512
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
513
+ return;
514
+ }
515
+ controller.error(e);
516
+ return;
517
+ }
518
+ }
519
+ while (offset < buffer.length) {
520
+ try {
521
+ const r = new BufferReader(buffer.subarray(offset));
522
+ const byteOffset = r.offset;
523
+ const groupId = r.readVarInt();
524
+ const subgroupId = r.readVarInt();
525
+ const objectId = r.readVarInt();
526
+ const publisherPriority = r.readUint8();
527
+ const extLen = Number(r.readVarInt());
528
+ const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
529
+ const payloadLength = Number(r.readVarInt());
530
+ let payload;
531
+ let status;
532
+ let payloadByteOffset;
533
+ if (payloadLength === 0) {
534
+ status = r.readVarInt();
535
+ payloadByteOffset = r.offset;
536
+ payload = new Uint8Array(0);
537
+ } else {
538
+ payloadByteOffset = r.offset;
539
+ payload = r.readBytesView(payloadLength);
540
+ }
541
+ const obj = {
542
+ type: "object",
543
+ byteOffset,
544
+ payloadByteOffset,
545
+ groupId,
546
+ subgroupId,
547
+ objectId,
548
+ publisherPriority,
549
+ payloadLength,
550
+ payload,
551
+ extensionData
552
+ };
553
+ if (status !== void 0) obj.status = status;
554
+ controller.enqueue(obj);
555
+ offset += r.offset;
556
+ } catch (e) {
557
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
558
+ break;
559
+ }
560
+ controller.error(e);
561
+ return;
562
+ }
563
+ }
564
+ },
565
+ flush(controller) {
566
+ if (offset < buffer.length) {
567
+ controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
568
+ }
569
+ }
570
+ });
571
+ }
572
+ function createDataStreamDecoder() {
573
+ let buffer = new Uint8Array(0);
574
+ let offset = 0;
575
+ let detectedType = null;
576
+ let headerEmitted = false;
577
+ let extensionsPresent = false;
578
+ let prevObjectId = -1n;
579
+ let firstObject = true;
580
+ return new TransformStream({
581
+ transform(chunk, controller) {
582
+ if (offset > 0) {
583
+ buffer = buffer.subarray(offset);
584
+ offset = 0;
585
+ }
586
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
587
+ newBuffer.set(buffer, 0);
588
+ newBuffer.set(chunk, buffer.length);
589
+ buffer = newBuffer;
590
+ if (detectedType === null) {
591
+ try {
592
+ const r = new BufferReader(buffer.subarray(offset));
593
+ const streamType = Number(r.readVarInt());
594
+ if (isValidSubgroupType(streamType)) {
595
+ detectedType = "subgroup";
596
+ } else if (streamType === 5) {
597
+ detectedType = "fetch";
598
+ } else {
599
+ controller.error(
600
+ new DecodeError(
601
+ "CONSTRAINT_VIOLATION",
602
+ `Unknown data stream type: 0x${streamType.toString(16)}`,
603
+ 0
604
+ )
605
+ );
606
+ return;
607
+ }
608
+ } catch (e) {
609
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
610
+ return;
611
+ }
612
+ controller.error(e);
613
+ return;
614
+ }
615
+ }
616
+ if (detectedType === "subgroup") {
617
+ if (!headerEmitted) {
618
+ try {
619
+ const r = new BufferReader(buffer.subarray(offset));
620
+ const streamType = Number(r.readVarInt());
621
+ extensionsPresent = (streamType & 1) !== 0;
622
+ const hasSubgroupField = (streamType & 4) !== 0;
623
+ const trackAlias = r.readVarInt();
624
+ const groupId = r.readVarInt();
625
+ let subgroupId = 0n;
626
+ if (hasSubgroupField) subgroupId = r.readVarInt();
627
+ const publisherPriority = r.readUint8();
628
+ controller.enqueue({
629
+ type: "subgroup_header",
630
+ headerType: streamType,
631
+ trackAlias,
632
+ groupId,
633
+ subgroupId,
634
+ publisherPriority
635
+ });
636
+ headerEmitted = true;
637
+ offset += r.offset;
638
+ } catch (e) {
639
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") return;
640
+ controller.error(e);
641
+ return;
642
+ }
643
+ }
644
+ while (offset < buffer.length) {
645
+ try {
646
+ const r = new BufferReader(buffer.subarray(offset));
647
+ const byteOffset = r.offset;
648
+ const delta = r.readVarInt();
649
+ const objectId = firstObject ? delta : prevObjectId + 1n + delta;
650
+ firstObject = false;
651
+ let extensionData = new Uint8Array(0);
652
+ if (extensionsPresent) {
653
+ const extLen = Number(r.readVarInt());
654
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
655
+ }
656
+ const payloadLength = Number(r.readVarInt());
657
+ let payload;
658
+ let status;
659
+ let payloadByteOffset;
660
+ if (payloadLength === 0) {
661
+ status = r.readVarInt();
662
+ payloadByteOffset = r.offset;
663
+ payload = new Uint8Array(0);
664
+ } else {
665
+ payloadByteOffset = r.offset;
666
+ payload = r.readBytesView(payloadLength);
667
+ }
668
+ const obj = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, payload, extensionData };
669
+ if (status !== void 0)
670
+ obj.status = status;
671
+ controller.enqueue(obj);
672
+ prevObjectId = objectId;
673
+ offset += r.offset;
674
+ } catch (e) {
675
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") break;
676
+ controller.error(e);
677
+ return;
678
+ }
679
+ }
680
+ } else {
681
+ if (!headerEmitted) {
682
+ try {
683
+ const r = new BufferReader(buffer.subarray(offset));
684
+ r.readVarInt();
685
+ const requestId = r.readVarInt();
686
+ controller.enqueue({ type: "fetch_header", requestId });
687
+ headerEmitted = true;
688
+ offset += r.offset;
689
+ } catch (e) {
690
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") return;
691
+ controller.error(e);
692
+ return;
693
+ }
694
+ }
695
+ while (offset < buffer.length) {
696
+ try {
697
+ const r = new BufferReader(buffer.subarray(offset));
698
+ const byteOffset = r.offset;
699
+ const groupId = r.readVarInt();
700
+ const subgroupId = r.readVarInt();
701
+ const objectId = r.readVarInt();
702
+ const publisherPriority = r.readUint8();
703
+ const extLen = Number(r.readVarInt());
704
+ const extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
705
+ const payloadLength = Number(r.readVarInt());
706
+ let payload;
707
+ let status;
708
+ let payloadByteOffset;
709
+ if (payloadLength === 0) {
710
+ status = r.readVarInt();
711
+ payloadByteOffset = r.offset;
712
+ payload = new Uint8Array(0);
713
+ } else {
714
+ payloadByteOffset = r.offset;
715
+ payload = r.readBytesView(payloadLength);
716
+ }
717
+ const obj = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, payload, extensionData };
718
+ if (status !== void 0)
719
+ obj.status = status;
720
+ controller.enqueue(obj);
721
+ offset += r.offset;
722
+ } catch (e) {
723
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") break;
724
+ controller.error(e);
725
+ return;
726
+ }
727
+ }
728
+ }
729
+ },
730
+ flush(controller) {
731
+ if (offset < buffer.length) {
732
+ controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
733
+ }
734
+ }
735
+ });
736
+ }
737
+
738
+ // src/drafts/draft14/codec.ts
739
+ var textEncoder = /* @__PURE__ */ new TextEncoder();
740
+ var textDecoder = /* @__PURE__ */ new TextDecoder();
92
741
  function encodeParams(params, writer) {
93
742
  let count = 0;
94
743
  if (params.role !== void 0) count++;
@@ -102,7 +751,7 @@ function encodeParams(params, writer) {
102
751
  }
103
752
  if (params.path !== void 0) {
104
753
  writer.writeVarInt(PARAM_PATH);
105
- const encoded = new TextEncoder().encode(params.path);
754
+ const encoded = textEncoder.encode(params.path);
106
755
  writer.writeVarInt(encoded.byteLength);
107
756
  writer.writeBytes(encoded);
108
757
  }
@@ -146,7 +795,7 @@ function decodeParams(reader) {
146
795
  const length = Number(reader.readVarInt());
147
796
  const bytes = reader.readBytes(length);
148
797
  if (paramType === PARAM_PATH) {
149
- result.path = new TextDecoder().decode(bytes);
798
+ result.path = textDecoder.decode(bytes);
150
799
  } else {
151
800
  unknown.push({
152
801
  id: `0x${paramType.toString(16)}`,
@@ -642,11 +1291,11 @@ function encodeMessage(message) {
642
1291
  }
643
1292
  const payloadWriter = new BufferWriter();
644
1293
  encodePayload(message, payloadWriter);
645
- const payload = payloadWriter.finish();
1294
+ const payload = payloadWriter.finishView();
646
1295
  if (payload.byteLength > 65535) {
647
1296
  throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
648
1297
  }
649
- const writer = new BufferWriter();
1298
+ const writer = new BufferWriter(payload.byteLength + 16);
650
1299
  writer.writeVarInt(typeId);
651
1300
  writer.writeUint8(payload.byteLength >> 8 & 255);
652
1301
  writer.writeUint8(payload.byteLength & 255);
@@ -704,195 +1353,67 @@ function encodePayload(msg, w) {
704
1353
  case "fetch_cancel":
705
1354
  return encodeFetchCancelPayload(msg, w);
706
1355
  case "track_status":
707
- return encodeTrackStatusPayload(msg, w);
708
- case "track_status_ok":
709
- return encodeTrackStatusOkPayload(msg, w);
710
- case "track_status_error":
711
- return encodeTrackStatusErrorPayload(msg, w);
712
- case "goaway":
713
- return encodeGoAwayPayload(msg, w);
714
- case "max_request_id":
715
- return encodeMaxRequestIdPayload(msg, w);
716
- case "requests_blocked":
717
- return encodeRequestsBlockedPayload(msg, w);
718
- default: {
719
- const _exhaustive = msg;
720
- throw new Error(`Unhandled message type: ${_exhaustive.type}`);
721
- }
722
- }
723
- }
724
- function decodeMessage(bytes) {
725
- try {
726
- const reader = new BufferReader(bytes);
727
- const typeId = reader.readVarInt();
728
- const lenHi = reader.readUint8();
729
- const lenLo = reader.readUint8();
730
- const payloadLength = lenHi << 8 | lenLo;
731
- const payloadBytes = reader.readBytes(payloadLength);
732
- const payloadReader = new BufferReader(payloadBytes);
733
- const decoder = payloadDecoders.get(typeId);
734
- if (!decoder) {
735
- return {
736
- ok: false,
737
- error: new DecodeError(
738
- "UNKNOWN_MESSAGE_TYPE",
739
- `Unknown message type ID: 0x${typeId.toString(16)}`,
740
- 0
741
- )
742
- };
743
- }
744
- const message = decoder(payloadReader);
745
- return { ok: true, value: message, bytesRead: reader.offset };
746
- } catch (e) {
747
- if (e instanceof DecodeError) {
748
- return { ok: false, error: e };
749
- }
750
- throw e;
751
- }
752
- }
753
- function encodeSubgroupStream(stream) {
754
- const w = new BufferWriter();
755
- w.writeVarInt(0n);
756
- w.writeVarInt(stream.trackAlias);
757
- w.writeVarInt(stream.groupId);
758
- w.writeVarInt(stream.subgroupId);
759
- w.writeUint8(stream.publisherPriority);
760
- for (const obj of stream.objects) {
761
- w.writeVarInt(obj.objectId);
762
- w.writeVarInt(obj.payloadLength);
763
- w.writeBytes(obj.payload);
764
- }
765
- return w.finish();
766
- }
767
- function encodeDatagram(dg) {
768
- const w = new BufferWriter();
769
- w.writeVarInt(dg.trackAlias);
770
- w.writeVarInt(dg.groupId);
771
- w.writeVarInt(dg.objectId);
772
- w.writeVarInt(dg.payloadLength);
773
- w.writeBytes(dg.payload);
774
- return w.finish();
775
- }
776
- function encodeFetchStream(stream) {
777
- const w = new BufferWriter();
778
- w.writeVarInt(2n);
779
- w.writeVarInt(stream.subscribeRequestId);
780
- for (const obj of stream.objects) {
781
- w.writeVarInt(obj.objectId);
782
- w.writeVarInt(obj.payloadLength);
783
- w.writeBytes(obj.payload);
784
- }
785
- return w.finish();
786
- }
787
- function decodeSubgroupStream(bytes) {
788
- try {
789
- const r = new BufferReader(bytes);
790
- const streamType = r.readVarInt();
791
- if (streamType !== 0n) {
792
- return {
793
- ok: false,
794
- error: new DecodeError(
795
- "CONSTRAINT_VIOLATION",
796
- `Expected subgroup stream type 0, got ${streamType}`,
797
- 0
798
- )
799
- };
800
- }
801
- const trackAlias = r.readVarInt();
802
- const groupId = r.readVarInt();
803
- const subgroupId = r.readVarInt();
804
- const publisherPriority = r.readUint8();
805
- const objects = [];
806
- while (r.remaining > 0) {
807
- const objectId = r.readVarInt();
808
- const payloadLength = Number(r.readVarInt());
809
- const payload = r.readBytes(payloadLength);
810
- objects.push({ type: "object", objectId, payloadLength, payload });
811
- }
812
- return {
813
- ok: true,
814
- value: { type: "subgroup", trackAlias, groupId, subgroupId, publisherPriority, objects },
815
- bytesRead: r.offset
816
- };
817
- } catch (e) {
818
- if (e instanceof DecodeError) return { ok: false, error: e };
819
- throw e;
820
- }
821
- }
822
- function decodeDatagram(bytes) {
823
- try {
824
- const r = new BufferReader(bytes);
825
- const trackAlias = r.readVarInt();
826
- const groupId = r.readVarInt();
827
- const objectId = r.readVarInt();
828
- const payloadLength = Number(r.readVarInt());
829
- const payload = r.readBytes(payloadLength);
830
- return {
831
- ok: true,
832
- value: { type: "datagram", trackAlias, groupId, objectId, payloadLength, payload },
833
- bytesRead: r.offset
834
- };
835
- } catch (e) {
836
- if (e instanceof DecodeError) return { ok: false, error: e };
837
- throw e;
1356
+ return encodeTrackStatusPayload(msg, w);
1357
+ case "track_status_ok":
1358
+ return encodeTrackStatusOkPayload(msg, w);
1359
+ case "track_status_error":
1360
+ return encodeTrackStatusErrorPayload(msg, w);
1361
+ case "goaway":
1362
+ return encodeGoAwayPayload(msg, w);
1363
+ case "max_request_id":
1364
+ return encodeMaxRequestIdPayload(msg, w);
1365
+ case "requests_blocked":
1366
+ return encodeRequestsBlockedPayload(msg, w);
1367
+ default: {
1368
+ const _exhaustive = msg;
1369
+ throw new Error(`Unhandled message type: ${_exhaustive.type}`);
1370
+ }
838
1371
  }
839
1372
  }
840
- function decodeFetchStream(bytes) {
1373
+ function decodeMessage(bytes) {
841
1374
  try {
842
- const r = new BufferReader(bytes);
843
- const streamType = r.readVarInt();
844
- if (streamType !== 2n) {
1375
+ const reader = new BufferReader(bytes);
1376
+ const typeId = reader.readVarInt();
1377
+ const lenHi = reader.readUint8();
1378
+ const lenLo = reader.readUint8();
1379
+ const payloadLength = lenHi << 8 | lenLo;
1380
+ const payloadBytes = reader.readBytes(payloadLength);
1381
+ const payloadReader = new BufferReader(payloadBytes);
1382
+ const decoder = payloadDecoders.get(typeId);
1383
+ if (!decoder) {
845
1384
  return {
846
1385
  ok: false,
847
1386
  error: new DecodeError(
848
- "CONSTRAINT_VIOLATION",
849
- `Expected fetch stream type 2, got ${streamType}`,
1387
+ "UNKNOWN_MESSAGE_TYPE",
1388
+ `Unknown message type ID: 0x${typeId.toString(16)}`,
850
1389
  0
851
1390
  )
852
1391
  };
853
1392
  }
854
- const subscribeRequestId = r.readVarInt();
855
- const objects = [];
856
- while (r.remaining > 0) {
857
- const objectId = r.readVarInt();
858
- const payloadLength = Number(r.readVarInt());
859
- const payload = r.readBytes(payloadLength);
860
- objects.push({ type: "object", objectId, payloadLength, payload });
861
- }
862
- return {
863
- ok: true,
864
- value: { type: "fetch", subscribeRequestId, objects },
865
- bytesRead: r.offset
866
- };
1393
+ const message = decoder(payloadReader);
1394
+ return { ok: true, value: message, bytesRead: reader.offset };
867
1395
  } catch (e) {
868
- if (e instanceof DecodeError) return { ok: false, error: e };
869
- throw e;
870
- }
871
- }
872
- function decodeDataStream(streamType, bytes) {
873
- switch (streamType) {
874
- case "subgroup":
875
- return decodeSubgroupStream(bytes);
876
- case "datagram":
877
- return decodeDatagram(bytes);
878
- case "fetch":
879
- return decodeFetchStream(bytes);
880
- default: {
881
- const _exhaustive = streamType;
882
- throw new Error(`Unknown stream type: ${_exhaustive}`);
1396
+ if (e instanceof DecodeError) {
1397
+ return { ok: false, error: e };
883
1398
  }
1399
+ throw e;
884
1400
  }
885
1401
  }
886
1402
  function createStreamDecoder() {
887
1403
  let buffer = new Uint8Array(0);
1404
+ let offset = 0;
888
1405
  return new TransformStream({
889
1406
  transform(chunk, controller) {
1407
+ if (offset > 0) {
1408
+ buffer = buffer.subarray(offset);
1409
+ offset = 0;
1410
+ }
890
1411
  const newBuffer = new Uint8Array(buffer.length + chunk.length);
891
1412
  newBuffer.set(buffer, 0);
892
1413
  newBuffer.set(chunk, buffer.length);
893
1414
  buffer = newBuffer;
894
- while (buffer.length > 0) {
895
- const result = decodeMessage(buffer);
1415
+ while (offset < buffer.length) {
1416
+ const result = decodeMessage(buffer.subarray(offset));
896
1417
  if (!result.ok) {
897
1418
  if (result.error.code === "UNEXPECTED_END") {
898
1419
  break;
@@ -901,11 +1422,11 @@ function createStreamDecoder() {
901
1422
  return;
902
1423
  }
903
1424
  controller.enqueue(result.value);
904
- buffer = buffer.slice(result.bytesRead);
1425
+ offset += result.bytesRead;
905
1426
  }
906
1427
  },
907
1428
  flush(controller) {
908
- if (buffer.length > 0) {
1429
+ if (offset < buffer.length) {
909
1430
  controller.error(
910
1431
  new DecodeError("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
911
1432
  );
@@ -913,239 +1434,6 @@ function createStreamDecoder() {
913
1434
  }
914
1435
  });
915
1436
  }
916
- function createSubgroupStreamDecoder() {
917
- let buffer = new Uint8Array(0);
918
- let headerEmitted = false;
919
- return new TransformStream({
920
- transform(chunk, controller) {
921
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
922
- newBuffer.set(buffer, 0);
923
- newBuffer.set(chunk, buffer.length);
924
- buffer = newBuffer;
925
- if (!headerEmitted) {
926
- try {
927
- const r = new BufferReader(buffer);
928
- const streamType = r.readVarInt();
929
- if (streamType !== 0n) {
930
- controller.error(
931
- new DecodeError(
932
- "CONSTRAINT_VIOLATION",
933
- `Expected subgroup stream type 0, got ${streamType}`,
934
- 0
935
- )
936
- );
937
- return;
938
- }
939
- const trackAlias = r.readVarInt();
940
- const groupId = r.readVarInt();
941
- const subgroupId = r.readVarInt();
942
- const publisherPriority = r.readUint8();
943
- controller.enqueue({
944
- type: "subgroup_header",
945
- trackAlias,
946
- groupId,
947
- subgroupId,
948
- publisherPriority
949
- });
950
- headerEmitted = true;
951
- buffer = buffer.slice(r.offset);
952
- } catch (e) {
953
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
954
- return;
955
- }
956
- controller.error(e);
957
- return;
958
- }
959
- }
960
- while (buffer.length > 0) {
961
- try {
962
- const r = new BufferReader(buffer);
963
- const objectId = r.readVarInt();
964
- const payloadLength = Number(r.readVarInt());
965
- const payload = r.readBytes(payloadLength);
966
- controller.enqueue({ type: "object", objectId, payloadLength, payload });
967
- buffer = buffer.slice(r.offset);
968
- } catch (e) {
969
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
970
- break;
971
- }
972
- controller.error(e);
973
- return;
974
- }
975
- }
976
- },
977
- flush(controller) {
978
- if (buffer.length > 0) {
979
- controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
980
- }
981
- }
982
- });
983
- }
984
- function createFetchStreamDecoder() {
985
- let buffer = new Uint8Array(0);
986
- let headerEmitted = false;
987
- return new TransformStream({
988
- transform(chunk, controller) {
989
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
990
- newBuffer.set(buffer, 0);
991
- newBuffer.set(chunk, buffer.length);
992
- buffer = newBuffer;
993
- if (!headerEmitted) {
994
- try {
995
- const r = new BufferReader(buffer);
996
- const streamType = r.readVarInt();
997
- if (streamType !== 2n) {
998
- controller.error(
999
- new DecodeError(
1000
- "CONSTRAINT_VIOLATION",
1001
- `Expected fetch stream type 2, got ${streamType}`,
1002
- 0
1003
- )
1004
- );
1005
- return;
1006
- }
1007
- const subscribeRequestId = r.readVarInt();
1008
- controller.enqueue({
1009
- type: "fetch_header",
1010
- subscribeRequestId
1011
- });
1012
- headerEmitted = true;
1013
- buffer = buffer.slice(r.offset);
1014
- } catch (e) {
1015
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1016
- return;
1017
- }
1018
- controller.error(e);
1019
- return;
1020
- }
1021
- }
1022
- while (buffer.length > 0) {
1023
- try {
1024
- const r = new BufferReader(buffer);
1025
- const objectId = r.readVarInt();
1026
- const payloadLength = Number(r.readVarInt());
1027
- const payload = r.readBytes(payloadLength);
1028
- controller.enqueue({ type: "object", objectId, payloadLength, payload });
1029
- buffer = buffer.slice(r.offset);
1030
- } catch (e) {
1031
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1032
- break;
1033
- }
1034
- controller.error(e);
1035
- return;
1036
- }
1037
- }
1038
- },
1039
- flush(controller) {
1040
- if (buffer.length > 0) {
1041
- controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
1042
- }
1043
- }
1044
- });
1045
- }
1046
- function createDataStreamDecoder() {
1047
- let buffer = new Uint8Array(0);
1048
- let detectedType = null;
1049
- let headerEmitted = false;
1050
- return new TransformStream({
1051
- transform(chunk, controller) {
1052
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
1053
- newBuffer.set(buffer, 0);
1054
- newBuffer.set(chunk, buffer.length);
1055
- buffer = newBuffer;
1056
- if (detectedType === null) {
1057
- try {
1058
- const r = new BufferReader(buffer);
1059
- const streamType = r.readVarInt();
1060
- if (streamType === 0n) {
1061
- detectedType = "subgroup";
1062
- } else if (streamType === 2n) {
1063
- detectedType = "fetch";
1064
- } else {
1065
- controller.error(
1066
- new DecodeError("CONSTRAINT_VIOLATION", `Unknown data stream type: ${streamType}`, 0)
1067
- );
1068
- return;
1069
- }
1070
- } catch (e) {
1071
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1072
- return;
1073
- }
1074
- controller.error(e);
1075
- return;
1076
- }
1077
- }
1078
- if (detectedType === "subgroup") {
1079
- if (!headerEmitted) {
1080
- try {
1081
- const r = new BufferReader(buffer);
1082
- r.readVarInt();
1083
- const trackAlias = r.readVarInt();
1084
- const groupId = r.readVarInt();
1085
- const subgroupId = r.readVarInt();
1086
- const publisherPriority = r.readUint8();
1087
- controller.enqueue({
1088
- type: "subgroup_header",
1089
- trackAlias,
1090
- groupId,
1091
- subgroupId,
1092
- publisherPriority
1093
- });
1094
- headerEmitted = true;
1095
- buffer = buffer.slice(r.offset);
1096
- } catch (e) {
1097
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1098
- return;
1099
- }
1100
- controller.error(e);
1101
- return;
1102
- }
1103
- }
1104
- } else {
1105
- if (!headerEmitted) {
1106
- try {
1107
- const r = new BufferReader(buffer);
1108
- r.readVarInt();
1109
- const subscribeRequestId = r.readVarInt();
1110
- controller.enqueue({
1111
- type: "fetch_header",
1112
- subscribeRequestId
1113
- });
1114
- headerEmitted = true;
1115
- buffer = buffer.slice(r.offset);
1116
- } catch (e) {
1117
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1118
- return;
1119
- }
1120
- controller.error(e);
1121
- return;
1122
- }
1123
- }
1124
- }
1125
- while (buffer.length > 0) {
1126
- try {
1127
- const r = new BufferReader(buffer);
1128
- const objectId = r.readVarInt();
1129
- const payloadLength = Number(r.readVarInt());
1130
- const payload = r.readBytes(payloadLength);
1131
- controller.enqueue({ type: "object", objectId, payloadLength, payload });
1132
- buffer = buffer.slice(r.offset);
1133
- } catch (e) {
1134
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1135
- break;
1136
- }
1137
- controller.error(e);
1138
- return;
1139
- }
1140
- }
1141
- },
1142
- flush(controller) {
1143
- if (buffer.length > 0) {
1144
- controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
1145
- }
1146
- }
1147
- });
1148
- }
1149
1437
  function createDraft14Codec() {
1150
1438
  return {
1151
1439
  draft: "draft-ietf-moq-transport-14",
@@ -1201,8 +1489,6 @@ export {
1201
1489
  PARAM_MAX_REQUEST_ID,
1202
1490
  MESSAGE_TYPE_MAP,
1203
1491
  MESSAGE_ID_MAP,
1204
- encodeMessage,
1205
- decodeMessage,
1206
1492
  encodeSubgroupStream,
1207
1493
  encodeDatagram,
1208
1494
  encodeFetchStream,
@@ -1210,9 +1496,11 @@ export {
1210
1496
  decodeDatagram,
1211
1497
  decodeFetchStream,
1212
1498
  decodeDataStream,
1213
- createStreamDecoder,
1214
1499
  createSubgroupStreamDecoder,
1215
1500
  createFetchStreamDecoder,
1216
1501
  createDataStreamDecoder,
1502
+ encodeMessage,
1503
+ decodeMessage,
1504
+ createStreamDecoder,
1217
1505
  createDraft14Codec
1218
1506
  };