@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
@@ -55,6 +55,10 @@ import type {
55
55
  SubgroupStream,
56
56
  UnknownParam,
57
57
  } from "./types.js";
58
+
59
+ const textEncoder = /* @__PURE__ */ new TextEncoder();
60
+ const textDecoder = /* @__PURE__ */ new TextDecoder();
61
+
58
62
  // ─── Setup Parameter Encoding/Decoding (even/odd convention) ────────────────────
59
63
 
60
64
  function encodeSetupParams(params: Draft12SetupParams, w: BufferWriter): void {
@@ -67,7 +71,7 @@ function encodeSetupParams(params: Draft12SetupParams, w: BufferWriter): void {
67
71
 
68
72
  if (params.path !== undefined) {
69
73
  w.writeVarInt(SETUP_PARAM_PATH);
70
- const encoded = new TextEncoder().encode(params.path);
74
+ const encoded = textEncoder.encode(params.path);
71
75
  w.writeVarInt(encoded.byteLength);
72
76
  w.writeBytes(encoded);
73
77
  }
@@ -117,7 +121,7 @@ function decodeSetupParams(r: BufferReader): Draft12SetupParams {
117
121
  const length = Number(r.readVarInt());
118
122
  const bytes = r.readBytes(length);
119
123
  if (paramType === SETUP_PARAM_PATH) {
120
- result.path = new TextDecoder().decode(bytes);
124
+ result.path = textDecoder.decode(bytes);
121
125
  } else {
122
126
  unknown.push({ id: `0x${paramType.toString(16)}`, length, raw_hex: bytesToHex(bytes) });
123
127
  }
@@ -144,7 +148,7 @@ function encodeParams(params: Draft12Params, w: BufferWriter): void {
144
148
  const tmpW = new BufferWriter(64);
145
149
  tmpW.writeVarInt(at.alias_type);
146
150
  tmpW.writeVarInt(at.token_type);
147
- const tokenBytes = new TextEncoder().encode(at.token_value);
151
+ const tokenBytes = textEncoder.encode(at.token_value);
148
152
  tmpW.writeBytes(tokenBytes);
149
153
  const raw = tmpW.finish();
150
154
  w.writeVarInt(raw.byteLength);
@@ -210,7 +214,7 @@ function decodeParams(r: BufferReader): Draft12Params {
210
214
  result.authorization_token = {
211
215
  alias_type,
212
216
  token_type,
213
- token_value: new TextDecoder().decode(tokenBytes),
217
+ token_value: textDecoder.decode(tokenBytes),
214
218
  };
215
219
  } else if (paramType === PARAM_DELIVERY_TIMEOUT) {
216
220
  const blob = r.readBytes(length);
@@ -930,9 +934,9 @@ export function encodeMessage(message: Draft12Message): Uint8Array {
930
934
 
931
935
  const payloadWriter = new BufferWriter();
932
936
  encodePayload(message, payloadWriter);
933
- const payload = payloadWriter.finish();
937
+ const payload = payloadWriter.finishView();
934
938
 
935
- const writer = new BufferWriter();
939
+ const writer = new BufferWriter(payload.byteLength + 16);
936
940
  writer.writeVarInt(typeId);
937
941
 
938
942
  if (payload.byteLength > 0xffff) {
@@ -1055,25 +1059,30 @@ import { encodeSubgroupStream, encodeDatagram, encodeFetchStream, decodeSubgroup
1055
1059
 
1056
1060
  export function createStreamDecoder(): TransformStream<Uint8Array, Draft12Message> {
1057
1061
  let buffer = new Uint8Array(0);
1062
+ let offset = 0;
1058
1063
  return new TransformStream<Uint8Array, Draft12Message>({
1059
1064
  transform(chunk, controller) {
1065
+ if (offset > 0) {
1066
+ buffer = buffer.subarray(offset);
1067
+ offset = 0;
1068
+ }
1060
1069
  const newBuffer = new Uint8Array(buffer.length + chunk.length);
1061
1070
  newBuffer.set(buffer, 0);
1062
1071
  newBuffer.set(chunk, buffer.length);
1063
1072
  buffer = newBuffer;
1064
- while (buffer.length > 0) {
1065
- const result = decodeMessage(buffer);
1073
+ while (offset < buffer.length) {
1074
+ const result = decodeMessage(buffer.subarray(offset));
1066
1075
  if (!result.ok) {
1067
1076
  if (result.error.code === "UNEXPECTED_END") break;
1068
1077
  controller.error(result.error);
1069
1078
  return;
1070
1079
  }
1071
1080
  controller.enqueue(result.value);
1072
- buffer = buffer.slice(result.bytesRead);
1081
+ offset += result.bytesRead;
1073
1082
  }
1074
1083
  },
1075
1084
  flush(controller) {
1076
- if (buffer.length > 0)
1085
+ if (offset < buffer.length)
1077
1086
  controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
1078
1087
  },
1079
1088
  });
@@ -1,275 +1,275 @@
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
- Draft12DataStream,
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
-
23
- const extensionsPresent = (typeId & 0x01) !== 0;
24
- const hasSubgroupField = (typeId & 0x04) !== 0;
25
-
26
- w.writeVarInt(stream.trackAlias);
27
- w.writeVarInt(stream.groupId);
28
- if (hasSubgroupField) w.writeVarInt(stream.subgroupId);
29
- w.writeUint8(stream.publisherPriority);
30
- for (const obj of stream.objects) {
31
- w.writeVarInt(obj.objectId);
32
- if (extensionsPresent) {
33
- w.writeVarInt(BigInt(obj.extensionData.length));
34
- if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
35
- }
36
- w.writeVarInt(obj.payloadLength);
37
- if (obj.payloadLength === 0) {
38
- w.writeVarInt(obj.status ?? 0n);
39
- } else {
40
- w.writeBytes(obj.payload);
41
- }
42
- }
43
- return w.finish();
44
- }
45
-
46
- export function encodeDatagram(dg: DatagramObject): Uint8Array {
47
- const w = new BufferWriter();
48
- w.writeVarInt(BigInt(dg.streamTypeId));
49
- w.writeVarInt(dg.trackAlias);
50
- w.writeVarInt(dg.groupId);
51
- w.writeVarInt(dg.objectId);
52
- w.writeUint8(dg.publisherPriority);
53
- if (dg.streamTypeId === 0x02) {
54
- w.writeVarInt(dg.objectStatus ?? 0n);
55
- } else {
56
- w.writeBytes(dg.payload);
57
- }
58
- return w.finish();
59
- }
60
-
61
- export function encodeFetchStream(stream: FetchStream): Uint8Array {
62
- const w = new BufferWriter();
63
- w.writeVarInt(FETCH_STREAM_TYPE);
64
- w.writeVarInt(stream.requestId);
65
- for (const obj of stream.objects) {
66
- w.writeVarInt(obj.groupId);
67
- w.writeVarInt(obj.subgroupId);
68
- w.writeVarInt(obj.objectId);
69
- w.writeUint8(obj.publisherPriority);
70
- w.writeVarInt(BigInt(obj.extensionData.length));
71
- if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
72
- w.writeVarInt(obj.payloadLength);
73
- w.writeBytes(obj.payload);
74
- }
75
- return w.finish();
76
- }
77
-
78
- export function decodeSubgroupStream(bytes: Uint8Array): DecodeResult<SubgroupStream> {
79
- try {
80
- const r = new BufferReader(bytes);
81
- const streamTypeId = Number(r.readVarInt());
82
-
83
- // Valid types: 0x10-0x15, 0x18-0x1D (bits 1:2 = 0b11 is reserved → 0x16,0x17 invalid)
84
- const validRange1 = streamTypeId >= 0x10 && streamTypeId <= 0x15;
85
- const validRange2 = streamTypeId >= 0x18 && streamTypeId <= 0x1d;
86
- if (!validRange1 && !validRange2) {
87
- return {
88
- ok: false,
89
- error: new DecodeError(
90
- "CONSTRAINT_VIOLATION",
91
- `Expected subgroup type 0x10-0x15 or 0x18-0x1D, got 0x${streamTypeId.toString(16)}`,
92
- 0,
93
- ),
94
- };
95
- }
96
-
97
- const extensionsPresent = (streamTypeId & 0x01) !== 0;
98
- const hasSubgroupField = (streamTypeId & 0x04) !== 0;
99
- const subgroupIsFirstObjId = (streamTypeId & 0x02) !== 0 && !hasSubgroupField;
100
-
101
- const trackAlias = r.readVarInt();
102
- const groupId = r.readVarInt();
103
- let subgroupId = 0n;
104
- if (hasSubgroupField) subgroupId = r.readVarInt();
105
- const publisherPriority = r.readUint8();
106
- const objects: ObjectPayload[] = [];
107
- let firstObject = true;
108
- while (r.remaining > 0) {
109
- const byteOffset = r.offset;
110
- const objectId = r.readVarInt();
111
- if (subgroupIsFirstObjId && firstObject) {
112
- subgroupId = objectId;
113
- }
114
- firstObject = false;
115
- let extensionData = new Uint8Array(0);
116
- if (extensionsPresent) {
117
- const extLen = Number(r.readVarInt());
118
- extensionData = extLen > 0 ? r.readBytes(extLen) : new Uint8Array(0);
119
- }
120
- const payloadLength = Number(r.readVarInt());
121
- let payload: Uint8Array;
122
- let status: bigint | undefined;
123
- let payloadByteOffset: number;
124
- if (payloadLength === 0) {
125
- status = r.readVarInt();
126
- payloadByteOffset = r.offset;
127
- payload = new Uint8Array(0);
128
- } else {
129
- payloadByteOffset = r.offset;
130
- payload = r.readBytes(payloadLength);
131
- }
132
- const obj: ObjectPayload = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, extensionData, payload };
133
- if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status;
134
- objects.push(obj);
135
- }
136
- return {
137
- ok: true,
138
- value: {
139
- type: "subgroup",
140
- streamTypeId,
141
- trackAlias,
142
- groupId,
143
- subgroupId,
144
- publisherPriority,
145
- objects,
146
- },
147
- bytesRead: r.offset,
148
- };
149
- } catch (e) {
150
- if (e instanceof DecodeError) return { ok: false, error: e };
151
- throw e;
152
- }
153
- }
154
-
155
- export function decodeDatagram(bytes: Uint8Array): DecodeResult<DatagramObject> {
156
- try {
157
- const r = new BufferReader(bytes);
158
- const streamTypeId = Number(r.readVarInt());
159
- if (streamTypeId !== 0x00 && streamTypeId !== 0x02) {
160
- return {
161
- ok: false,
162
- error: new DecodeError(
163
- "CONSTRAINT_VIOLATION",
164
- `Expected datagram type 0x00 or 0x02, got 0x${streamTypeId.toString(16)}`,
165
- 0,
166
- ),
167
- };
168
- }
169
- const trackAlias = r.readVarInt();
170
- const groupId = r.readVarInt();
171
- const objectId = r.readVarInt();
172
- const publisherPriority = r.readUint8();
173
- let objectStatus: bigint | undefined;
174
- let payload: Uint8Array;
175
- if (streamTypeId === 0x02) {
176
- objectStatus = r.readVarInt();
177
- payload = new Uint8Array(0);
178
- } else {
179
- payload = r.readBytes(r.remaining);
180
- }
181
- const result: DatagramObject = {
182
- type: "datagram",
183
- streamTypeId,
184
- trackAlias,
185
- groupId,
186
- objectId,
187
- publisherPriority,
188
- payloadLength: payload.byteLength,
189
- payload,
190
- };
191
- if (objectStatus !== undefined)
192
- (result as unknown as Record<string, unknown>).objectStatus = objectStatus;
193
- return { ok: true, value: result, bytesRead: r.offset };
194
- } catch (e) {
195
- if (e instanceof DecodeError) return { ok: false, error: e };
196
- throw e;
197
- }
198
- }
199
-
200
- export function decodeFetchStream(bytes: Uint8Array): DecodeResult<FetchStream> {
201
- try {
202
- const r = new BufferReader(bytes);
203
- const streamType = r.readVarInt();
204
- if (streamType !== FETCH_STREAM_TYPE) {
205
- return {
206
- ok: false,
207
- error: new DecodeError(
208
- "CONSTRAINT_VIOLATION",
209
- `Expected fetch type 0x05, got 0x${streamType.toString(16)}`,
210
- 0,
211
- ),
212
- };
213
- }
214
- const requestId = r.readVarInt();
215
- const objects: FetchObjectPayload[] = [];
216
- while (r.remaining > 0) {
217
- const byteOffset = r.offset;
218
- const groupId = r.readVarInt();
219
- const subgroupId = r.readVarInt();
220
- const objectId = r.readVarInt();
221
- const publisherPriority = r.readUint8();
222
- const extensionHeadersLength = r.readVarInt();
223
- const extensionData = extensionHeadersLength > 0n ? r.readBytes(Number(extensionHeadersLength)) : new Uint8Array(0);
224
- const payloadLength = Number(r.readVarInt());
225
- let payload: Uint8Array;
226
- let objectStatus: bigint | undefined;
227
- let payloadByteOffset: number;
228
- if (payloadLength === 0) {
229
- objectStatus = r.readVarInt();
230
- payloadByteOffset = r.offset;
231
- payload = new Uint8Array(0);
232
- } else {
233
- payloadByteOffset = r.offset;
234
- payload = r.readBytes(payloadLength);
235
- }
236
- const obj: FetchObjectPayload = {
237
- type: "object",
238
- byteOffset,
239
- payloadByteOffset,
240
- groupId,
241
- subgroupId,
242
- objectId,
243
- publisherPriority,
244
- extensionData,
245
- payloadLength,
246
- payload,
247
- };
248
- if (objectStatus !== undefined)
249
- (obj as unknown as Record<string, unknown>).objectStatus = objectStatus;
250
- objects.push(obj);
251
- }
252
- return { ok: true, value: { type: "fetch", requestId, objects }, bytesRead: r.offset };
253
- } catch (e) {
254
- if (e instanceof DecodeError) return { ok: false, error: e };
255
- throw e;
256
- }
257
- }
258
-
259
- export function decodeDataStream(
260
- streamType: "subgroup" | "datagram" | "fetch",
261
- bytes: Uint8Array,
262
- ): DecodeResult<Draft12DataStream> {
263
- switch (streamType) {
264
- case "subgroup":
265
- return decodeSubgroupStream(bytes);
266
- case "datagram":
267
- return decodeDatagram(bytes);
268
- case "fetch":
269
- return decodeFetchStream(bytes);
270
- default: {
271
- const _: never = streamType;
272
- throw new Error(`Unknown: ${_}`);
273
- }
274
- }
275
- }
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
+ Draft12DataStream,
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
+
23
+ const extensionsPresent = (typeId & 0x01) !== 0;
24
+ const hasSubgroupField = (typeId & 0x04) !== 0;
25
+
26
+ w.writeVarInt(stream.trackAlias);
27
+ w.writeVarInt(stream.groupId);
28
+ if (hasSubgroupField) w.writeVarInt(stream.subgroupId);
29
+ w.writeUint8(stream.publisherPriority);
30
+ for (const obj of stream.objects) {
31
+ w.writeVarInt(obj.objectId);
32
+ if (extensionsPresent) {
33
+ w.writeVarInt(BigInt(obj.extensionData.length));
34
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
35
+ }
36
+ w.writeVarInt(obj.payloadLength);
37
+ if (obj.payloadLength === 0) {
38
+ w.writeVarInt(obj.status ?? 0n);
39
+ } else {
40
+ w.writeBytes(obj.payload);
41
+ }
42
+ }
43
+ return w.finish();
44
+ }
45
+
46
+ export function encodeDatagram(dg: DatagramObject): Uint8Array {
47
+ const w = new BufferWriter();
48
+ w.writeVarInt(BigInt(dg.streamTypeId));
49
+ w.writeVarInt(dg.trackAlias);
50
+ w.writeVarInt(dg.groupId);
51
+ w.writeVarInt(dg.objectId);
52
+ w.writeUint8(dg.publisherPriority);
53
+ if (dg.streamTypeId === 0x02) {
54
+ w.writeVarInt(dg.objectStatus ?? 0n);
55
+ } else {
56
+ w.writeBytes(dg.payload);
57
+ }
58
+ return w.finish();
59
+ }
60
+
61
+ export function encodeFetchStream(stream: FetchStream): Uint8Array {
62
+ const w = new BufferWriter();
63
+ w.writeVarInt(FETCH_STREAM_TYPE);
64
+ w.writeVarInt(stream.requestId);
65
+ for (const obj of stream.objects) {
66
+ w.writeVarInt(obj.groupId);
67
+ w.writeVarInt(obj.subgroupId);
68
+ w.writeVarInt(obj.objectId);
69
+ w.writeUint8(obj.publisherPriority);
70
+ w.writeVarInt(BigInt(obj.extensionData.length));
71
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
72
+ w.writeVarInt(obj.payloadLength);
73
+ w.writeBytes(obj.payload);
74
+ }
75
+ return w.finish();
76
+ }
77
+
78
+ export function decodeSubgroupStream(bytes: Uint8Array): DecodeResult<SubgroupStream> {
79
+ try {
80
+ const r = new BufferReader(bytes);
81
+ const streamTypeId = Number(r.readVarInt());
82
+
83
+ // Valid types: 0x10-0x15, 0x18-0x1D (bits 1:2 = 0b11 is reserved → 0x16,0x17 invalid)
84
+ const validRange1 = streamTypeId >= 0x10 && streamTypeId <= 0x15;
85
+ const validRange2 = streamTypeId >= 0x18 && streamTypeId <= 0x1d;
86
+ if (!validRange1 && !validRange2) {
87
+ return {
88
+ ok: false,
89
+ error: new DecodeError(
90
+ "CONSTRAINT_VIOLATION",
91
+ `Expected subgroup type 0x10-0x15 or 0x18-0x1D, got 0x${streamTypeId.toString(16)}`,
92
+ 0,
93
+ ),
94
+ };
95
+ }
96
+
97
+ const extensionsPresent = (streamTypeId & 0x01) !== 0;
98
+ const hasSubgroupField = (streamTypeId & 0x04) !== 0;
99
+ const subgroupIsFirstObjId = (streamTypeId & 0x02) !== 0 && !hasSubgroupField;
100
+
101
+ const trackAlias = r.readVarInt();
102
+ const groupId = r.readVarInt();
103
+ let subgroupId = 0n;
104
+ if (hasSubgroupField) subgroupId = r.readVarInt();
105
+ const publisherPriority = r.readUint8();
106
+ const objects: ObjectPayload[] = [];
107
+ let firstObject = true;
108
+ while (r.remaining > 0) {
109
+ const byteOffset = r.offset;
110
+ const objectId = r.readVarInt();
111
+ if (subgroupIsFirstObjId && firstObject) {
112
+ subgroupId = objectId;
113
+ }
114
+ firstObject = false;
115
+ let extensionData = new Uint8Array(0);
116
+ if (extensionsPresent) {
117
+ const extLen = Number(r.readVarInt());
118
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
119
+ }
120
+ const payloadLength = Number(r.readVarInt());
121
+ let payload: Uint8Array;
122
+ let status: bigint | undefined;
123
+ let payloadByteOffset: number;
124
+ if (payloadLength === 0) {
125
+ status = r.readVarInt();
126
+ payloadByteOffset = r.offset;
127
+ payload = new Uint8Array(0);
128
+ } else {
129
+ payloadByteOffset = r.offset;
130
+ payload = r.readBytesView(payloadLength);
131
+ }
132
+ const obj: ObjectPayload = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, extensionData, payload };
133
+ if (status !== undefined) (obj as unknown as Record<string, unknown>).status = status;
134
+ objects.push(obj);
135
+ }
136
+ return {
137
+ ok: true,
138
+ value: {
139
+ type: "subgroup",
140
+ streamTypeId,
141
+ trackAlias,
142
+ groupId,
143
+ subgroupId,
144
+ publisherPriority,
145
+ objects,
146
+ },
147
+ bytesRead: r.offset,
148
+ };
149
+ } catch (e) {
150
+ if (e instanceof DecodeError) return { ok: false, error: e };
151
+ throw e;
152
+ }
153
+ }
154
+
155
+ export function decodeDatagram(bytes: Uint8Array): DecodeResult<DatagramObject> {
156
+ try {
157
+ const r = new BufferReader(bytes);
158
+ const streamTypeId = Number(r.readVarInt());
159
+ if (streamTypeId !== 0x00 && streamTypeId !== 0x02) {
160
+ return {
161
+ ok: false,
162
+ error: new DecodeError(
163
+ "CONSTRAINT_VIOLATION",
164
+ `Expected datagram type 0x00 or 0x02, got 0x${streamTypeId.toString(16)}`,
165
+ 0,
166
+ ),
167
+ };
168
+ }
169
+ const trackAlias = r.readVarInt();
170
+ const groupId = r.readVarInt();
171
+ const objectId = r.readVarInt();
172
+ const publisherPriority = r.readUint8();
173
+ let objectStatus: bigint | undefined;
174
+ let payload: Uint8Array;
175
+ if (streamTypeId === 0x02) {
176
+ objectStatus = r.readVarInt();
177
+ payload = new Uint8Array(0);
178
+ } else {
179
+ payload = r.readBytesView(r.remaining);
180
+ }
181
+ const result: DatagramObject = {
182
+ type: "datagram",
183
+ streamTypeId,
184
+ trackAlias,
185
+ groupId,
186
+ objectId,
187
+ publisherPriority,
188
+ payloadLength: payload.byteLength,
189
+ payload,
190
+ };
191
+ if (objectStatus !== undefined)
192
+ (result as unknown as Record<string, unknown>).objectStatus = objectStatus;
193
+ return { ok: true, value: result, bytesRead: r.offset };
194
+ } catch (e) {
195
+ if (e instanceof DecodeError) return { ok: false, error: e };
196
+ throw e;
197
+ }
198
+ }
199
+
200
+ export function decodeFetchStream(bytes: Uint8Array): DecodeResult<FetchStream> {
201
+ try {
202
+ const r = new BufferReader(bytes);
203
+ const streamType = r.readVarInt();
204
+ if (streamType !== FETCH_STREAM_TYPE) {
205
+ return {
206
+ ok: false,
207
+ error: new DecodeError(
208
+ "CONSTRAINT_VIOLATION",
209
+ `Expected fetch type 0x05, got 0x${streamType.toString(16)}`,
210
+ 0,
211
+ ),
212
+ };
213
+ }
214
+ const requestId = r.readVarInt();
215
+ const objects: FetchObjectPayload[] = [];
216
+ while (r.remaining > 0) {
217
+ const byteOffset = r.offset;
218
+ const groupId = r.readVarInt();
219
+ const subgroupId = r.readVarInt();
220
+ const objectId = r.readVarInt();
221
+ const publisherPriority = r.readUint8();
222
+ const extensionHeadersLength = r.readVarInt();
223
+ const extensionData = extensionHeadersLength > 0n ? r.readBytesView(Number(extensionHeadersLength)) : new Uint8Array(0);
224
+ const payloadLength = Number(r.readVarInt());
225
+ let payload: Uint8Array;
226
+ let objectStatus: bigint | undefined;
227
+ let payloadByteOffset: number;
228
+ if (payloadLength === 0) {
229
+ objectStatus = r.readVarInt();
230
+ payloadByteOffset = r.offset;
231
+ payload = new Uint8Array(0);
232
+ } else {
233
+ payloadByteOffset = r.offset;
234
+ payload = r.readBytesView(payloadLength);
235
+ }
236
+ const obj: FetchObjectPayload = {
237
+ type: "object",
238
+ byteOffset,
239
+ payloadByteOffset,
240
+ groupId,
241
+ subgroupId,
242
+ objectId,
243
+ publisherPriority,
244
+ extensionData,
245
+ payloadLength,
246
+ payload,
247
+ };
248
+ if (objectStatus !== undefined)
249
+ (obj as unknown as Record<string, unknown>).objectStatus = objectStatus;
250
+ objects.push(obj);
251
+ }
252
+ return { ok: true, value: { type: "fetch", requestId, objects }, bytesRead: r.offset };
253
+ } catch (e) {
254
+ if (e instanceof DecodeError) return { ok: false, error: e };
255
+ throw e;
256
+ }
257
+ }
258
+
259
+ export function decodeDataStream(
260
+ streamType: "subgroup" | "datagram" | "fetch",
261
+ bytes: Uint8Array,
262
+ ): DecodeResult<Draft12DataStream> {
263
+ switch (streamType) {
264
+ case "subgroup":
265
+ return decodeSubgroupStream(bytes);
266
+ case "datagram":
267
+ return decodeDatagram(bytes);
268
+ case "fetch":
269
+ return decodeFetchStream(bytes);
270
+ default: {
271
+ const _: never = streamType;
272
+ throw new Error(`Unknown: ${_}`);
273
+ }
274
+ }
275
+ }