@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
@@ -52,6 +52,10 @@ import type {
52
52
  SubgroupStream,
53
53
  UnknownParam,
54
54
  } from "./types.js";
55
+
56
+ const textEncoder = /* @__PURE__ */ new TextEncoder();
57
+ const textDecoder = /* @__PURE__ */ new TextDecoder();
58
+
55
59
  // ─── Setup Parameter Encoding/Decoding (even/odd convention) ────────────────────
56
60
 
57
61
  function encodeSetupParams(params: Draft11SetupParams, w: BufferWriter): void {
@@ -64,7 +68,7 @@ function encodeSetupParams(params: Draft11SetupParams, w: BufferWriter): void {
64
68
 
65
69
  if (params.path !== undefined) {
66
70
  w.writeVarInt(SETUP_PARAM_PATH);
67
- const encoded = new TextEncoder().encode(params.path);
71
+ const encoded = textEncoder.encode(params.path);
68
72
  w.writeVarInt(encoded.byteLength);
69
73
  w.writeBytes(encoded);
70
74
  }
@@ -114,7 +118,7 @@ function decodeSetupParams(r: BufferReader): Draft11SetupParams {
114
118
  const length = Number(r.readVarInt());
115
119
  const bytes = r.readBytes(length);
116
120
  if (paramType === SETUP_PARAM_PATH) {
117
- result.path = new TextDecoder().decode(bytes);
121
+ result.path = textDecoder.decode(bytes);
118
122
  } else {
119
123
  unknown.push({ id: `0x${paramType.toString(16)}`, length, raw_hex: bytesToHex(bytes) });
120
124
  }
@@ -141,7 +145,7 @@ function encodeParams(params: Draft11Params, w: BufferWriter): void {
141
145
  const tmpW = new BufferWriter(64);
142
146
  tmpW.writeVarInt(at.alias_type);
143
147
  tmpW.writeVarInt(at.token_type);
144
- const tokenBytes = new TextEncoder().encode(at.token_value);
148
+ const tokenBytes = textEncoder.encode(at.token_value);
145
149
  tmpW.writeBytes(tokenBytes);
146
150
  const raw = tmpW.finish();
147
151
  w.writeVarInt(raw.byteLength);
@@ -207,7 +211,7 @@ function decodeParams(r: BufferReader): Draft11Params {
207
211
  result.authorization_token = {
208
212
  alias_type,
209
213
  token_type,
210
- token_value: new TextDecoder().decode(tokenBytes),
214
+ token_value: textDecoder.decode(tokenBytes),
211
215
  };
212
216
  } else {
213
217
  const bytes = r.readBytes(length);
@@ -802,12 +806,17 @@ export function encodeMessage(message: Draft11Message): Uint8Array {
802
806
 
803
807
  const payloadWriter = new BufferWriter();
804
808
  encodePayload(message, payloadWriter);
805
- const payload = payloadWriter.finish();
809
+ const payload = payloadWriter.finishView();
810
+
811
+ if (payload.byteLength > 0xffff) {
812
+ throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
813
+ }
806
814
 
807
- // Draft-11 uses varint framing (not uint16 BE like draft-14/15)
808
- const writer = new BufferWriter();
815
+ // Write framed message: type(varint) + length(uint16 BE) + payload
816
+ const writer = new BufferWriter(payload.byteLength + 16);
809
817
  writer.writeVarInt(typeId);
810
- writer.writeVarInt(payload.byteLength);
818
+ writer.writeUint8((payload.byteLength >> 8) & 0xff);
819
+ writer.writeUint8(payload.byteLength & 0xff);
811
820
  writer.writeBytes(payload);
812
821
  return writer.finish();
813
822
  }
@@ -874,13 +883,18 @@ function encodePayload(msg: Draft11Message, w: BufferWriter): void {
874
883
  }
875
884
 
876
885
  /**
877
- * Decode a draft-11 control message from bytes (type + varint length + payload).
886
+ * Decode a draft-11 control message from bytes (type + uint16 length + payload).
878
887
  */
879
888
  export function decodeMessage(bytes: Uint8Array): DecodeResult<Draft11Message> {
880
889
  try {
881
890
  const reader = new BufferReader(bytes);
882
891
  const typeId = reader.readVarInt();
883
- const payloadLength = Number(reader.readVarInt());
892
+
893
+ // Read 16-bit big-endian payload length
894
+ const lenHi = reader.readUint8();
895
+ const lenLo = reader.readUint8();
896
+ const payloadLength = (lenHi << 8) | lenLo;
897
+
884
898
  const payloadBytes = reader.readBytes(payloadLength);
885
899
  const payloadReader = new BufferReader(payloadBytes);
886
900
 
@@ -911,25 +925,30 @@ import { encodeSubgroupStream, encodeDatagram, encodeFetchStream, decodeSubgroup
911
925
 
912
926
  export function createStreamDecoder(): TransformStream<Uint8Array, Draft11Message> {
913
927
  let buffer = new Uint8Array(0);
928
+ let offset = 0;
914
929
  return new TransformStream<Uint8Array, Draft11Message>({
915
930
  transform(chunk, controller) {
931
+ if (offset > 0) {
932
+ buffer = buffer.subarray(offset);
933
+ offset = 0;
934
+ }
916
935
  const newBuffer = new Uint8Array(buffer.length + chunk.length);
917
936
  newBuffer.set(buffer, 0);
918
937
  newBuffer.set(chunk, buffer.length);
919
938
  buffer = newBuffer;
920
- while (buffer.length > 0) {
921
- const result = decodeMessage(buffer);
939
+ while (offset < buffer.length) {
940
+ const result = decodeMessage(buffer.subarray(offset));
922
941
  if (!result.ok) {
923
942
  if (result.error.code === "UNEXPECTED_END") break;
924
943
  controller.error(result.error);
925
944
  return;
926
945
  }
927
946
  controller.enqueue(result.value);
928
- buffer = buffer.slice(result.bytesRead);
947
+ offset += result.bytesRead;
929
948
  }
930
949
  },
931
950
  flush(controller) {
932
- if (buffer.length > 0)
951
+ if (offset < buffer.length)
933
952
  controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
934
953
  },
935
954
  });
@@ -1,269 +1,269 @@
1
- import { BufferReader } from "../../core/buffer-reader.js";
2
- import { BufferWriter } from "../../core/buffer-writer.js";
3
- import type { DecodeResult } from "../../core/types.js";
4
- import { DecodeError } from "../../core/types.js";
5
- import type {
6
- DatagramObject,
7
- Draft11DataStream,
8
- FetchObjectPayload,
9
- FetchStream,
10
- ObjectPayload,
11
- SubgroupStream,
12
- } from "./types.js";
13
-
14
- // ─── Data Stream Encoding/Decoding ─────────────────────────────────────────────
15
-
16
- const FETCH_STREAM_TYPE = 0x05n;
17
-
18
- export function encodeSubgroupStream(stream: SubgroupStream): Uint8Array {
19
- const w = new BufferWriter();
20
- const typeId = stream.streamTypeId;
21
- w.writeVarInt(BigInt(typeId));
22
- w.writeVarInt(stream.trackAlias);
23
- w.writeVarInt(stream.groupId);
24
- const extensionsPresent = (typeId & 0x01) !== 0;
25
- const hasSubgroupField = (typeId & 0x04) !== 0;
26
- if (hasSubgroupField) w.writeVarInt(stream.subgroupId);
27
- w.writeUint8(stream.publisherPriority);
28
- for (const obj of stream.objects) {
29
- w.writeVarInt(obj.objectId);
30
- if (extensionsPresent) {
31
- w.writeVarInt(BigInt(obj.extensionData.length));
32
- if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
33
- }
34
- w.writeVarInt(obj.payloadLength);
35
- if (obj.payloadLength === 0 && obj.status !== undefined) {
36
- w.writeVarInt(obj.status);
37
- } else {
38
- w.writeBytes(obj.payload);
39
- }
40
- }
41
- return w.finish();
42
- }
43
-
44
- export function encodeDatagram(dg: DatagramObject): Uint8Array {
45
- const w = new BufferWriter();
46
- w.writeVarInt(BigInt(dg.streamTypeId));
47
- w.writeVarInt(dg.trackAlias);
48
- w.writeVarInt(dg.groupId);
49
- w.writeVarInt(dg.objectId);
50
- w.writeUint8(dg.publisherPriority);
51
- if (dg.streamTypeId === 0x02) {
52
- // Datagram status — write status varint
53
- w.writeVarInt(dg.objectStatus ?? 0n);
54
- } else {
55
- w.writeBytes(dg.payload);
56
- }
57
- return w.finish();
58
- }
59
-
60
- export function encodeFetchStream(stream: FetchStream): Uint8Array {
61
- const w = new BufferWriter();
62
- w.writeVarInt(FETCH_STREAM_TYPE);
63
- w.writeVarInt(stream.requestId);
64
- for (const obj of stream.objects) {
65
- w.writeVarInt(obj.groupId);
66
- w.writeVarInt(obj.subgroupId);
67
- w.writeVarInt(obj.objectId);
68
- w.writeUint8(obj.publisherPriority);
69
- w.writeVarInt(BigInt(obj.extensionData.length));
70
- if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
71
- w.writeVarInt(obj.payloadLength);
72
- w.writeBytes(obj.payload);
73
- }
74
- return w.finish();
75
- }
76
-
77
- export function decodeSubgroupStream(bytes: Uint8Array): DecodeResult<SubgroupStream> {
78
- try {
79
- const r = new BufferReader(bytes);
80
- const streamTypeId = Number(r.readVarInt());
81
- if (streamTypeId < 0x08 || streamTypeId > 0x0d) {
82
- return {
83
- ok: false,
84
- error: new DecodeError(
85
- "CONSTRAINT_VIOLATION",
86
- `Expected subgroup type 0x08-0x0D, got 0x${streamTypeId.toString(16)}`,
87
- 0,
88
- ),
89
- };
90
- }
91
- const extensionsPresent = (streamTypeId & 0x01) !== 0;
92
- const hasSubgroupField = (streamTypeId & 0x04) !== 0;
93
- const subgroupIsFirstObjId = (streamTypeId & 0x02) !== 0 && !hasSubgroupField;
94
- const trackAlias = r.readVarInt();
95
- const groupId = r.readVarInt();
96
- let subgroupId = 0n;
97
- if (hasSubgroupField) subgroupId = r.readVarInt();
98
- const publisherPriority = r.readUint8();
99
- const objects: ObjectPayload[] = [];
100
- let firstObject = true;
101
- while (r.remaining > 0) {
102
- const byteOffset = r.offset;
103
- const objectId = r.readVarInt();
104
- if (firstObject && subgroupIsFirstObjId) {
105
- subgroupId = objectId;
106
- firstObject = false;
107
- }
108
- let extensionData = new Uint8Array(0);
109
- if (extensionsPresent) {
110
- const extLen = Number(r.readVarInt());
111
- extensionData = extLen > 0 ? r.readBytes(extLen) : new Uint8Array(0);
112
- }
113
- const payloadLength = Number(r.readVarInt());
114
- let payload: Uint8Array;
115
- let status: bigint | undefined;
116
- let payloadByteOffset: number;
117
- if (payloadLength === 0) {
118
- status = r.readVarInt();
119
- payloadByteOffset = r.offset;
120
- payload = new Uint8Array(0);
121
- } else {
122
- payloadByteOffset = r.offset;
123
- payload = r.readBytes(payloadLength);
124
- }
125
- const obj: ObjectPayload = { type: "object", byteOffset, payloadByteOffset, objectId, extensionData, payloadLength, payload };
126
- if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status;
127
- objects.push(obj);
128
- }
129
- return {
130
- ok: true,
131
- value: {
132
- type: "subgroup",
133
- streamTypeId,
134
- trackAlias,
135
- groupId,
136
- subgroupId,
137
- publisherPriority,
138
- objects,
139
- },
140
- bytesRead: r.offset,
141
- };
142
- } catch (e) {
143
- if (e instanceof DecodeError) return { ok: false, error: e };
144
- throw e;
145
- }
146
- }
147
-
148
- export function decodeDatagram(bytes: Uint8Array): DecodeResult<DatagramObject> {
149
- try {
150
- const r = new BufferReader(bytes);
151
- const streamTypeId = Number(r.readVarInt());
152
- if (streamTypeId !== 0x00 && streamTypeId !== 0x02) {
153
- return {
154
- ok: false,
155
- error: new DecodeError(
156
- "CONSTRAINT_VIOLATION",
157
- `Expected datagram type 0x00 or 0x02, got 0x${streamTypeId.toString(16)}`,
158
- 0,
159
- ),
160
- };
161
- }
162
- const trackAlias = r.readVarInt();
163
- const groupId = r.readVarInt();
164
- const objectId = r.readVarInt();
165
- const publisherPriority = r.readUint8();
166
- let objectStatus: bigint | undefined;
167
- let payload: Uint8Array;
168
- if (streamTypeId === 0x02) {
169
- objectStatus = r.readVarInt();
170
- payload = new Uint8Array(0);
171
- } else {
172
- payload = r.readBytes(r.remaining);
173
- }
174
- const result: DatagramObject = {
175
- type: "datagram",
176
- streamTypeId,
177
- trackAlias,
178
- groupId,
179
- objectId,
180
- publisherPriority,
181
- payloadLength: payload.byteLength,
182
- payload,
183
- };
184
- if (objectStatus !== undefined)
185
- (result as unknown as Record<string, unknown>).objectStatus = objectStatus;
186
- return { ok: true, value: result, bytesRead: r.offset };
187
- } catch (e) {
188
- if (e instanceof DecodeError) return { ok: false, error: e };
189
- throw e;
190
- }
191
- }
192
-
193
- export function decodeFetchStream(bytes: Uint8Array): DecodeResult<FetchStream> {
194
- try {
195
- const r = new BufferReader(bytes);
196
- const streamType = r.readVarInt();
197
- if (streamType !== FETCH_STREAM_TYPE) {
198
- return {
199
- ok: false,
200
- error: new DecodeError(
201
- "CONSTRAINT_VIOLATION",
202
- `Expected fetch type 0x05, got 0x${streamType.toString(16)}`,
203
- 0,
204
- ),
205
- };
206
- }
207
- const requestId = r.readVarInt();
208
- const objects: FetchObjectPayload[] = [];
209
- while (r.remaining > 0) {
210
- const byteOffset = r.offset;
211
- const groupId = r.readVarInt();
212
- const subgroupId = r.readVarInt();
213
- const objectId = r.readVarInt();
214
- const publisherPriority = r.readUint8();
215
- const extensionHeadersLength = r.readVarInt();
216
- const extensionData = extensionHeadersLength > 0n ? r.readBytes(Number(extensionHeadersLength)) : new Uint8Array(0);
217
- const payloadLength = Number(r.readVarInt());
218
- let payload: Uint8Array;
219
- let objectStatus: bigint | undefined;
220
- let payloadByteOffset: number;
221
- if (payloadLength === 0) {
222
- objectStatus = r.readVarInt();
223
- payloadByteOffset = r.offset;
224
- payload = new Uint8Array(0);
225
- } else {
226
- payloadByteOffset = r.offset;
227
- payload = r.readBytes(payloadLength);
228
- }
229
- const obj: FetchObjectPayload = {
230
- type: "object",
231
- byteOffset,
232
- payloadByteOffset,
233
- groupId,
234
- subgroupId,
235
- objectId,
236
- publisherPriority,
237
- extensionHeadersLength,
238
- extensionData,
239
- payloadLength,
240
- payload,
241
- };
242
- if (objectStatus !== undefined)
243
- (obj as unknown as Record<string, unknown>).objectStatus = objectStatus;
244
- objects.push(obj);
245
- }
246
- return { ok: true, value: { type: "fetch", requestId, objects }, bytesRead: r.offset };
247
- } catch (e) {
248
- if (e instanceof DecodeError) return { ok: false, error: e };
249
- throw e;
250
- }
251
- }
252
-
253
- export function decodeDataStream(
254
- streamType: "subgroup" | "datagram" | "fetch",
255
- bytes: Uint8Array,
256
- ): DecodeResult<Draft11DataStream> {
257
- switch (streamType) {
258
- case "subgroup":
259
- return decodeSubgroupStream(bytes);
260
- case "datagram":
261
- return decodeDatagram(bytes);
262
- case "fetch":
263
- return decodeFetchStream(bytes);
264
- default: {
265
- const _: never = streamType;
266
- throw new Error(`Unknown: ${_}`);
267
- }
268
- }
269
- }
1
+ import { BufferReader } from "../../core/buffer-reader.js";
2
+ import { BufferWriter } from "../../core/buffer-writer.js";
3
+ import type { DecodeResult } from "../../core/types.js";
4
+ import { DecodeError } from "../../core/types.js";
5
+ import type {
6
+ DatagramObject,
7
+ Draft11DataStream,
8
+ FetchObjectPayload,
9
+ FetchStream,
10
+ ObjectPayload,
11
+ SubgroupStream,
12
+ } from "./types.js";
13
+
14
+ // ─── Data Stream Encoding/Decoding ─────────────────────────────────────────────
15
+
16
+ const FETCH_STREAM_TYPE = 0x05n;
17
+
18
+ export function encodeSubgroupStream(stream: SubgroupStream): Uint8Array {
19
+ const w = new BufferWriter();
20
+ const typeId = stream.streamTypeId;
21
+ w.writeVarInt(BigInt(typeId));
22
+ w.writeVarInt(stream.trackAlias);
23
+ w.writeVarInt(stream.groupId);
24
+ const extensionsPresent = (typeId & 0x01) !== 0;
25
+ const hasSubgroupField = (typeId & 0x04) !== 0;
26
+ if (hasSubgroupField) w.writeVarInt(stream.subgroupId);
27
+ w.writeUint8(stream.publisherPriority);
28
+ for (const obj of stream.objects) {
29
+ w.writeVarInt(obj.objectId);
30
+ if (extensionsPresent) {
31
+ w.writeVarInt(BigInt(obj.extensionData.length));
32
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
33
+ }
34
+ w.writeVarInt(obj.payloadLength);
35
+ if (obj.payloadLength === 0 && obj.status !== undefined) {
36
+ w.writeVarInt(obj.status);
37
+ } else {
38
+ w.writeBytes(obj.payload);
39
+ }
40
+ }
41
+ return w.finish();
42
+ }
43
+
44
+ export function encodeDatagram(dg: DatagramObject): Uint8Array {
45
+ const w = new BufferWriter();
46
+ w.writeVarInt(BigInt(dg.streamTypeId));
47
+ w.writeVarInt(dg.trackAlias);
48
+ w.writeVarInt(dg.groupId);
49
+ w.writeVarInt(dg.objectId);
50
+ w.writeUint8(dg.publisherPriority);
51
+ if (dg.streamTypeId === 0x02) {
52
+ // Datagram status — write status varint
53
+ w.writeVarInt(dg.objectStatus ?? 0n);
54
+ } else {
55
+ w.writeBytes(dg.payload);
56
+ }
57
+ return w.finish();
58
+ }
59
+
60
+ export function encodeFetchStream(stream: FetchStream): Uint8Array {
61
+ const w = new BufferWriter();
62
+ w.writeVarInt(FETCH_STREAM_TYPE);
63
+ w.writeVarInt(stream.requestId);
64
+ for (const obj of stream.objects) {
65
+ w.writeVarInt(obj.groupId);
66
+ w.writeVarInt(obj.subgroupId);
67
+ w.writeVarInt(obj.objectId);
68
+ w.writeUint8(obj.publisherPriority);
69
+ w.writeVarInt(BigInt(obj.extensionData.length));
70
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
71
+ w.writeVarInt(obj.payloadLength);
72
+ w.writeBytes(obj.payload);
73
+ }
74
+ return w.finish();
75
+ }
76
+
77
+ export function decodeSubgroupStream(bytes: Uint8Array): DecodeResult<SubgroupStream> {
78
+ try {
79
+ const r = new BufferReader(bytes);
80
+ const streamTypeId = Number(r.readVarInt());
81
+ if (streamTypeId < 0x08 || streamTypeId > 0x0d) {
82
+ return {
83
+ ok: false,
84
+ error: new DecodeError(
85
+ "CONSTRAINT_VIOLATION",
86
+ `Expected subgroup type 0x08-0x0D, got 0x${streamTypeId.toString(16)}`,
87
+ 0,
88
+ ),
89
+ };
90
+ }
91
+ const extensionsPresent = (streamTypeId & 0x01) !== 0;
92
+ const hasSubgroupField = (streamTypeId & 0x04) !== 0;
93
+ const subgroupIsFirstObjId = (streamTypeId & 0x02) !== 0 && !hasSubgroupField;
94
+ const trackAlias = r.readVarInt();
95
+ const groupId = r.readVarInt();
96
+ let subgroupId = 0n;
97
+ if (hasSubgroupField) subgroupId = r.readVarInt();
98
+ const publisherPriority = r.readUint8();
99
+ const objects: ObjectPayload[] = [];
100
+ let firstObject = true;
101
+ while (r.remaining > 0) {
102
+ const byteOffset = r.offset;
103
+ const objectId = r.readVarInt();
104
+ if (firstObject && subgroupIsFirstObjId) {
105
+ subgroupId = objectId;
106
+ firstObject = false;
107
+ }
108
+ let extensionData = new Uint8Array(0);
109
+ if (extensionsPresent) {
110
+ const extLen = Number(r.readVarInt());
111
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
112
+ }
113
+ const payloadLength = Number(r.readVarInt());
114
+ let payload: Uint8Array;
115
+ let status: bigint | undefined;
116
+ let payloadByteOffset: number;
117
+ if (payloadLength === 0) {
118
+ status = r.readVarInt();
119
+ payloadByteOffset = r.offset;
120
+ payload = new Uint8Array(0);
121
+ } else {
122
+ payloadByteOffset = r.offset;
123
+ payload = r.readBytesView(payloadLength);
124
+ }
125
+ const obj: ObjectPayload = { type: "object", byteOffset, payloadByteOffset, objectId, extensionData, payloadLength, payload };
126
+ if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status;
127
+ objects.push(obj);
128
+ }
129
+ return {
130
+ ok: true,
131
+ value: {
132
+ type: "subgroup",
133
+ streamTypeId,
134
+ trackAlias,
135
+ groupId,
136
+ subgroupId,
137
+ publisherPriority,
138
+ objects,
139
+ },
140
+ bytesRead: r.offset,
141
+ };
142
+ } catch (e) {
143
+ if (e instanceof DecodeError) return { ok: false, error: e };
144
+ throw e;
145
+ }
146
+ }
147
+
148
+ export function decodeDatagram(bytes: Uint8Array): DecodeResult<DatagramObject> {
149
+ try {
150
+ const r = new BufferReader(bytes);
151
+ const streamTypeId = Number(r.readVarInt());
152
+ if (streamTypeId !== 0x00 && streamTypeId !== 0x02) {
153
+ return {
154
+ ok: false,
155
+ error: new DecodeError(
156
+ "CONSTRAINT_VIOLATION",
157
+ `Expected datagram type 0x00 or 0x02, got 0x${streamTypeId.toString(16)}`,
158
+ 0,
159
+ ),
160
+ };
161
+ }
162
+ const trackAlias = r.readVarInt();
163
+ const groupId = r.readVarInt();
164
+ const objectId = r.readVarInt();
165
+ const publisherPriority = r.readUint8();
166
+ let objectStatus: bigint | undefined;
167
+ let payload: Uint8Array;
168
+ if (streamTypeId === 0x02) {
169
+ objectStatus = r.readVarInt();
170
+ payload = new Uint8Array(0);
171
+ } else {
172
+ payload = r.readBytesView(r.remaining);
173
+ }
174
+ const result: DatagramObject = {
175
+ type: "datagram",
176
+ streamTypeId,
177
+ trackAlias,
178
+ groupId,
179
+ objectId,
180
+ publisherPriority,
181
+ payloadLength: payload.byteLength,
182
+ payload,
183
+ };
184
+ if (objectStatus !== undefined)
185
+ (result as unknown as Record<string, unknown>).objectStatus = objectStatus;
186
+ return { ok: true, value: result, bytesRead: r.offset };
187
+ } catch (e) {
188
+ if (e instanceof DecodeError) return { ok: false, error: e };
189
+ throw e;
190
+ }
191
+ }
192
+
193
+ export function decodeFetchStream(bytes: Uint8Array): DecodeResult<FetchStream> {
194
+ try {
195
+ const r = new BufferReader(bytes);
196
+ const streamType = r.readVarInt();
197
+ if (streamType !== FETCH_STREAM_TYPE) {
198
+ return {
199
+ ok: false,
200
+ error: new DecodeError(
201
+ "CONSTRAINT_VIOLATION",
202
+ `Expected fetch type 0x05, got 0x${streamType.toString(16)}`,
203
+ 0,
204
+ ),
205
+ };
206
+ }
207
+ const requestId = r.readVarInt();
208
+ const objects: FetchObjectPayload[] = [];
209
+ while (r.remaining > 0) {
210
+ const byteOffset = r.offset;
211
+ const groupId = r.readVarInt();
212
+ const subgroupId = r.readVarInt();
213
+ const objectId = r.readVarInt();
214
+ const publisherPriority = r.readUint8();
215
+ const extensionHeadersLength = r.readVarInt();
216
+ const extensionData = extensionHeadersLength > 0n ? r.readBytesView(Number(extensionHeadersLength)) : new Uint8Array(0);
217
+ const payloadLength = Number(r.readVarInt());
218
+ let payload: Uint8Array;
219
+ let objectStatus: bigint | undefined;
220
+ let payloadByteOffset: number;
221
+ if (payloadLength === 0) {
222
+ objectStatus = r.readVarInt();
223
+ payloadByteOffset = r.offset;
224
+ payload = new Uint8Array(0);
225
+ } else {
226
+ payloadByteOffset = r.offset;
227
+ payload = r.readBytesView(payloadLength);
228
+ }
229
+ const obj: FetchObjectPayload = {
230
+ type: "object",
231
+ byteOffset,
232
+ payloadByteOffset,
233
+ groupId,
234
+ subgroupId,
235
+ objectId,
236
+ publisherPriority,
237
+ extensionHeadersLength,
238
+ extensionData,
239
+ payloadLength,
240
+ payload,
241
+ };
242
+ if (objectStatus !== undefined)
243
+ (obj as unknown as Record<string, unknown>).objectStatus = objectStatus;
244
+ objects.push(obj);
245
+ }
246
+ return { ok: true, value: { type: "fetch", requestId, objects }, bytesRead: r.offset };
247
+ } catch (e) {
248
+ if (e instanceof DecodeError) return { ok: false, error: e };
249
+ throw e;
250
+ }
251
+ }
252
+
253
+ export function decodeDataStream(
254
+ streamType: "subgroup" | "datagram" | "fetch",
255
+ bytes: Uint8Array,
256
+ ): DecodeResult<Draft11DataStream> {
257
+ switch (streamType) {
258
+ case "subgroup":
259
+ return decodeSubgroupStream(bytes);
260
+ case "datagram":
261
+ return decodeDatagram(bytes);
262
+ case "fetch":
263
+ return decodeFetchStream(bytes);
264
+ default: {
265
+ const _: never = streamType;
266
+ throw new Error(`Unknown: ${_}`);
267
+ }
268
+ }
269
+ }