@moqtap/codec 0.2.2 → 0.3.0

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 (716) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +100 -99
  3. package/dist/{chunk-RZHAPEXO.js → chunk-2A57DRXV.js} +36 -10
  4. package/dist/{chunk-PJRA2TQ5.js → chunk-2UTVXWFF.js} +388 -254
  5. package/dist/{chunk-IV2H5CFI.cjs → chunk-3XKO6PCR.cjs} +461 -322
  6. package/dist/{chunk-RVJAGE4S.cjs → chunk-4BDEU3D4.cjs} +415 -304
  7. package/dist/{chunk-XUUCOLWU.cjs → chunk-4HBKHNU2.cjs} +374 -329
  8. package/dist/{chunk-4RIXXEII.js → chunk-4IVZZOY3.js} +451 -312
  9. package/dist/{chunk-ZSPO2GF2.cjs → chunk-5O764MBD.cjs} +1320 -842
  10. package/dist/chunk-7KBAWOBA.js +1212 -0
  11. package/dist/{chunk-JSQM2MG3.js → chunk-7QOPNSDF.js} +44 -12
  12. package/dist/{chunk-SYHW3FLI.cjs → chunk-7RE6KSIY.cjs} +28 -8
  13. package/dist/{chunk-YG5KJESI.js → chunk-AY6IAHUM.js} +28 -8
  14. package/dist/{chunk-EFM5T7OM.js → chunk-BLQDWOSG.js} +36 -10
  15. package/dist/{chunk-KFTCU2P6.js → chunk-C6KUWLQC.js} +0 -3
  16. package/dist/{chunk-UYXTY6ZQ.cjs → chunk-E65QKRSN.cjs} +20 -12
  17. package/dist/{chunk-BISI45MN.cjs → chunk-EAHE3IOG.cjs} +44 -12
  18. package/dist/{chunk-IV2HRJVT.js → chunk-GCBFHZW6.js} +405 -294
  19. package/dist/{chunk-GXEW4COZ.cjs → chunk-H5NSL4MO.cjs} +36 -10
  20. package/dist/chunk-HZHSO7EW.cjs +1212 -0
  21. package/dist/{chunk-BPNL5YFQ.cjs → chunk-IILNSDEQ.cjs} +74 -46
  22. package/dist/{chunk-4XYGE53S.cjs → chunk-J3XCPBW3.cjs} +36 -10
  23. package/dist/{chunk-6AEHWULA.cjs → chunk-JKOEJZ5B.cjs} +28 -8
  24. package/dist/{chunk-FWISIR26.cjs → chunk-JL3NEW3O.cjs} +47 -4
  25. package/dist/{chunk-G7GI7LJA.js → chunk-LORZMJJB.js} +36 -10
  26. package/dist/{chunk-DUBCL3WF.cjs → chunk-LV5C6MEC.cjs} +36 -10
  27. package/dist/{chunk-ENURAVHI.cjs → chunk-MYXAD5JC.cjs} +44 -12
  28. package/dist/{chunk-FXZ2MYKJ.js → chunk-MZ7HUCGJ.js} +20 -12
  29. package/dist/{chunk-RWQ43Z4F.cjs → chunk-MZ7VU52O.cjs} +0 -3
  30. package/dist/{chunk-G26SJ6XS.cjs → chunk-OKG2HT25.cjs} +1193 -928
  31. package/dist/{chunk-IBVM4DMJ.cjs → chunk-PKEOQSSZ.cjs} +374 -329
  32. package/dist/{chunk-LH4NTURO.js → chunk-Q46ZURKX.js} +989 -602
  33. package/dist/{chunk-UR6JKS56.js → chunk-Q7IGWV3P.js} +41 -9
  34. package/dist/{chunk-ST24APEO.js → chunk-RW4UG7CN.js} +751 -682
  35. package/dist/{chunk-DWK5ZQZ4.js → chunk-RZTLQAKF.js} +28 -8
  36. package/dist/{chunk-UNS34PTA.cjs → chunk-S6IPIN66.cjs} +44 -12
  37. package/dist/{chunk-K4OLITS2.cjs → chunk-SDWRXXOO.cjs} +401 -267
  38. package/dist/{chunk-CXDHOMHG.js → chunk-SHMA4PBY.js} +476 -431
  39. package/dist/{chunk-U2B3B42P.js → chunk-U3ZVLT5L.js} +1176 -540
  40. package/dist/{chunk-HSVYF6XX.cjs → chunk-UJU63EFY.cjs} +1524 -1137
  41. package/dist/{chunk-A27S7HW7.js → chunk-VOU7PNHI.js} +47 -4
  42. package/dist/{chunk-E6E3NQYU.js → chunk-WRHGCVYN.js} +44 -12
  43. package/dist/chunk-XNWYLVGU.cjs +1854 -0
  44. package/dist/{chunk-NUX5BHWO.js → chunk-XS77RBY7.js} +1160 -895
  45. package/dist/{chunk-4YJANAXU.cjs → chunk-XZE5R57R.cjs} +829 -760
  46. package/dist/{chunk-NGVE2RZT.js → chunk-Y6KCSM3V.js} +476 -431
  47. package/dist/{chunk-TLYNOOQP.cjs → chunk-YTPZZI2M.cjs} +41 -9
  48. package/dist/{chunk-7DUBLRXC.js → chunk-YWRCSQBA.js} +44 -12
  49. package/dist/{chunk-MFAP7R6L.js → chunk-Z3VKP3PJ.js} +70 -42
  50. package/dist/{chunk-ZBKE2QRQ.js → chunk-Z6U26IRI.js} +1107 -629
  51. package/dist/codec-25u4_1HS.d.ts +35 -0
  52. package/dist/codec-3Ppy_5Gd.d.ts +23 -0
  53. package/dist/codec-BB0U8MF2.d.cts +34 -0
  54. package/dist/codec-BHHfBTnV.d.ts +34 -0
  55. package/dist/codec-BN6jk0Td.d.cts +30 -0
  56. package/dist/codec-BU0gaSZm.d.ts +29 -0
  57. package/dist/codec-C-Yk2RNa.d.ts +30 -0
  58. package/dist/codec-CFWQY9Lj.d.cts +18 -0
  59. package/dist/codec-COy4uuPO.d.cts +29 -0
  60. package/dist/codec-CewFCsEy.d.ts +18 -0
  61. package/dist/codec-Ck7ZwFF1.d.cts +35 -0
  62. package/dist/codec-D2QVSH9D.d.ts +30 -0
  63. package/dist/codec-DDUBJGn0.d.cts +23 -0
  64. package/dist/codec-DNfml-se.d.ts +27 -0
  65. package/dist/codec-DoOGjjDq.d.cts +29 -0
  66. package/dist/codec-J7ekOSMc.d.ts +29 -0
  67. package/dist/codec-R9TJCq-E.d.cts +31 -0
  68. package/dist/codec-ZwV-Njt6.d.ts +23 -0
  69. package/dist/codec-j819z_hL.d.cts +23 -0
  70. package/dist/codec-w8z2j_uo.d.cts +27 -0
  71. package/dist/codec-wtt6WF1K.d.ts +31 -0
  72. package/dist/codec-z6_2PSzi.d.cts +30 -0
  73. package/dist/draft10-session.cjs +2 -2
  74. package/dist/draft10-session.d.cts +6 -6
  75. package/dist/draft10-session.d.ts +6 -6
  76. package/dist/draft10-session.js +1 -1
  77. package/dist/draft10.cjs +8 -4
  78. package/dist/draft10.d.cts +23 -11
  79. package/dist/draft10.d.ts +23 -11
  80. package/dist/draft10.js +16 -12
  81. package/dist/draft11-session.cjs +2 -2
  82. package/dist/draft11-session.d.cts +6 -6
  83. package/dist/draft11-session.d.ts +6 -6
  84. package/dist/draft11-session.js +1 -1
  85. package/dist/draft11.cjs +8 -4
  86. package/dist/draft11.d.cts +21 -11
  87. package/dist/draft11.d.ts +21 -11
  88. package/dist/draft11.js +16 -12
  89. package/dist/draft12-session.cjs +2 -2
  90. package/dist/draft12-session.d.cts +6 -6
  91. package/dist/draft12-session.d.ts +6 -6
  92. package/dist/draft12-session.js +1 -1
  93. package/dist/draft12.cjs +8 -4
  94. package/dist/draft12.d.cts +23 -13
  95. package/dist/draft12.d.ts +23 -13
  96. package/dist/draft12.js +16 -12
  97. package/dist/draft13-session.cjs +2 -2
  98. package/dist/draft13-session.d.cts +6 -6
  99. package/dist/draft13-session.d.ts +6 -6
  100. package/dist/draft13-session.js +1 -1
  101. package/dist/draft13.cjs +8 -4
  102. package/dist/draft13.d.cts +23 -13
  103. package/dist/draft13.d.ts +23 -13
  104. package/dist/draft13.js +16 -12
  105. package/dist/draft14-session.cjs +2 -2
  106. package/dist/draft14-session.d.cts +6 -6
  107. package/dist/draft14-session.d.ts +6 -6
  108. package/dist/draft14-session.js +1 -1
  109. package/dist/draft14.cjs +14 -4
  110. package/dist/draft14.d.cts +67 -11
  111. package/dist/draft14.d.ts +67 -11
  112. package/dist/draft14.js +13 -3
  113. package/dist/draft15-session.cjs +2 -2
  114. package/dist/draft15-session.d.cts +6 -6
  115. package/dist/draft15-session.d.ts +6 -6
  116. package/dist/draft15-session.js +1 -1
  117. package/dist/draft15.cjs +8 -4
  118. package/dist/draft15.d.cts +56 -11
  119. package/dist/draft15.d.ts +56 -11
  120. package/dist/draft15.js +16 -12
  121. package/dist/draft16-session.cjs +2 -2
  122. package/dist/draft16-session.d.cts +6 -6
  123. package/dist/draft16-session.d.ts +6 -6
  124. package/dist/draft16-session.js +1 -1
  125. package/dist/draft16.cjs +8 -4
  126. package/dist/draft16.d.cts +45 -11
  127. package/dist/draft16.d.ts +45 -11
  128. package/dist/draft16.js +16 -12
  129. package/dist/draft17-session.cjs +2 -2
  130. package/dist/draft17-session.d.cts +7 -7
  131. package/dist/draft17-session.d.ts +7 -7
  132. package/dist/draft17-session.js +1 -1
  133. package/dist/draft17.cjs +8 -4
  134. package/dist/draft17.d.cts +21 -8
  135. package/dist/draft17.d.ts +21 -8
  136. package/dist/draft17.js +16 -12
  137. package/dist/draft7-session.cjs +3 -3
  138. package/dist/draft7-session.d.cts +6 -5
  139. package/dist/draft7-session.d.ts +6 -5
  140. package/dist/draft7-session.js +2 -2
  141. package/dist/draft7.cjs +83 -14
  142. package/dist/draft7.d.cts +59 -64
  143. package/dist/draft7.d.ts +59 -64
  144. package/dist/draft7.js +89 -20
  145. package/dist/draft8-session.cjs +2 -2
  146. package/dist/draft8-session.d.cts +6 -6
  147. package/dist/draft8-session.d.ts +6 -6
  148. package/dist/draft8-session.js +1 -1
  149. package/dist/draft8.cjs +8 -4
  150. package/dist/draft8.d.cts +23 -11
  151. package/dist/draft8.d.ts +23 -11
  152. package/dist/draft8.js +7 -3
  153. package/dist/draft9-session.cjs +2 -2
  154. package/dist/draft9-session.d.cts +6 -6
  155. package/dist/draft9-session.d.ts +6 -6
  156. package/dist/draft9-session.js +1 -1
  157. package/dist/draft9.cjs +8 -4
  158. package/dist/draft9.d.cts +23 -11
  159. package/dist/draft9.d.ts +23 -11
  160. package/dist/draft9.js +7 -3
  161. package/dist/index.cjs +52 -73
  162. package/dist/index.d.cts +41 -60
  163. package/dist/index.d.ts +55 -82
  164. package/dist/index.js +89 -93
  165. package/dist/{session-types-CJIFbTPd.d.ts → session-types-C7UONex5.d.cts} +28 -27
  166. package/dist/{session-types-Cbq8IGCP.d.cts → session-types-X-IYEGoG.d.ts} +28 -27
  167. package/dist/session.cjs +47 -14
  168. package/dist/session.d.cts +28 -9
  169. package/dist/session.d.ts +32 -9
  170. package/dist/session.js +59 -32
  171. package/dist/{types-4VxSL2Ho.d.ts → types--Q7_DcvP.d.cts} +49 -39
  172. package/dist/{types-4VxSL2Ho.d.cts → types--Q7_DcvP.d.ts} +49 -39
  173. package/dist/{types-Cw4WE9dh.d.ts → types-0IWbU9Z_.d.cts} +44 -36
  174. package/dist/{types-Cw4WE9dh.d.cts → types-0IWbU9Z_.d.ts} +44 -36
  175. package/dist/{types-D5gNQiDj.d.ts → types-B3g5G9KP.d.cts} +44 -36
  176. package/dist/{types-D5gNQiDj.d.cts → types-B3g5G9KP.d.ts} +44 -36
  177. package/dist/{types-B2afJZM-.d.cts → types-BFpFNM_m.d.cts} +60 -32
  178. package/dist/{types-B2afJZM-.d.ts → types-BFpFNM_m.d.ts} +60 -32
  179. package/dist/{types-ERexTpT8.d.ts → types-Br7fm2mf.d.cts} +51 -26
  180. package/dist/{types-ERexTpT8.d.cts → types-Br7fm2mf.d.ts} +51 -26
  181. package/dist/{types-Bg6QYNVt.d.cts → types-C2qKTRR_.d.cts} +55 -45
  182. package/dist/{types-Bg6QYNVt.d.ts → types-C2qKTRR_.d.ts} +55 -45
  183. package/dist/{types-BTFeKYCb.d.ts → types-DEaypVsD.d.cts} +133 -58
  184. package/dist/{types-BTFeKYCb.d.cts → types-DEaypVsD.d.ts} +133 -58
  185. package/dist/types-Dl4IaAHR.d.cts +282 -0
  186. package/dist/types-Dl4IaAHR.d.ts +282 -0
  187. package/dist/{types-C_1HrqBl.d.cts → types-DrQpTW1G.d.cts} +63 -50
  188. package/dist/{types-C_1HrqBl.d.ts → types-DrQpTW1G.d.ts} +63 -50
  189. package/dist/types-DuIO7cWK.d.cts +25 -0
  190. package/dist/types-DuIO7cWK.d.ts +25 -0
  191. package/dist/{types-DqCDFqgB.d.ts → types-DuxfOYiO.d.cts} +50 -31
  192. package/dist/{types-DqCDFqgB.d.cts → types-DuxfOYiO.d.ts} +50 -31
  193. package/dist/{types-r-CasCf1.d.cts → types-jV1yDDBA.d.cts} +43 -36
  194. package/dist/{types-r-CasCf1.d.ts → types-jV1yDDBA.d.ts} +43 -36
  195. package/package.json +15 -15
  196. package/src/core/buffer-reader.ts +69 -53
  197. package/src/core/buffer-writer.ts +55 -46
  198. package/src/core/errors.ts +1 -1
  199. package/src/core/hex.ts +21 -17
  200. package/src/core/session-types.ts +61 -59
  201. package/src/core/types.ts +18 -361
  202. package/src/drafts/draft07/codec.ts +1058 -933
  203. package/src/drafts/draft07/data-streams.ts +116 -116
  204. package/src/drafts/draft07/index.ts +124 -89
  205. package/src/drafts/draft07/messages.ts +76 -42
  206. package/src/drafts/draft07/rules.ts +107 -101
  207. package/src/drafts/draft07/session-fsm.ts +315 -287
  208. package/src/drafts/draft07/session.ts +8 -6
  209. package/src/drafts/draft07/types.ts +406 -72
  210. package/src/drafts/draft07/varint.ts +40 -12
  211. package/src/drafts/draft08/codec.ts +985 -944
  212. package/src/drafts/draft08/data-streams.ts +178 -174
  213. package/src/drafts/draft08/index.ts +10 -9
  214. package/src/drafts/draft08/messages.ts +59 -59
  215. package/src/drafts/draft08/rules.ts +73 -73
  216. package/src/drafts/draft08/session-fsm.ts +335 -303
  217. package/src/drafts/draft08/session.ts +6 -7
  218. package/src/drafts/draft08/types.ts +380 -384
  219. package/src/drafts/draft09/codec.ts +977 -936
  220. package/src/drafts/draft09/data-streams.ts +163 -159
  221. package/src/drafts/draft09/index.ts +10 -9
  222. package/src/drafts/draft09/messages.ts +59 -59
  223. package/src/drafts/draft09/rules.ts +73 -73
  224. package/src/drafts/draft09/session-fsm.ts +335 -303
  225. package/src/drafts/draft09/session.ts +6 -7
  226. package/src/drafts/draft09/types.ts +380 -384
  227. package/src/drafts/draft10/codec.ts +977 -936
  228. package/src/drafts/draft10/data-streams.ts +163 -159
  229. package/src/drafts/draft10/index.ts +10 -9
  230. package/src/drafts/draft10/messages.ts +59 -59
  231. package/src/drafts/draft10/rules.ts +73 -73
  232. package/src/drafts/draft10/session-fsm.ts +335 -303
  233. package/src/drafts/draft10/session.ts +6 -7
  234. package/src/drafts/draft10/types.ts +380 -384
  235. package/src/drafts/draft11/codec.ts +1054 -979
  236. package/src/drafts/draft11/data-streams.ts +189 -142
  237. package/src/drafts/draft11/index.ts +10 -9
  238. package/src/drafts/draft11/messages.ts +60 -59
  239. package/src/drafts/draft11/rules.ts +73 -73
  240. package/src/drafts/draft11/session-fsm.ts +359 -333
  241. package/src/drafts/draft11/session.ts +6 -7
  242. package/src/drafts/draft11/types.ts +385 -381
  243. package/src/drafts/draft12/codec.ts +1178 -1113
  244. package/src/drafts/draft12/data-streams.ts +192 -143
  245. package/src/drafts/draft12/index.ts +10 -9
  246. package/src/drafts/draft12/messages.ts +67 -66
  247. package/src/drafts/draft12/rules.ts +79 -79
  248. package/src/drafts/draft12/session-fsm.ts +384 -358
  249. package/src/drafts/draft12/session.ts +6 -7
  250. package/src/drafts/draft12/types.ts +424 -419
  251. package/src/drafts/draft13/codec.ts +1296 -1197
  252. package/src/drafts/draft13/data-streams.ts +194 -143
  253. package/src/drafts/draft13/index.ts +10 -9
  254. package/src/drafts/draft13/messages.ts +73 -68
  255. package/src/drafts/draft13/rules.ts +81 -81
  256. package/src/drafts/draft13/session-fsm.ts +392 -366
  257. package/src/drafts/draft13/session.ts +6 -7
  258. package/src/drafts/draft13/types.ts +447 -438
  259. package/src/drafts/draft14/codec.ts +1347 -1034
  260. package/src/drafts/draft14/data-streams.ts +429 -396
  261. package/src/drafts/draft14/index.ts +17 -9
  262. package/src/drafts/draft14/messages.ts +65 -65
  263. package/src/drafts/draft14/rules.ts +81 -81
  264. package/src/drafts/draft14/session-fsm.ts +415 -405
  265. package/src/drafts/draft14/session.ts +6 -7
  266. package/src/drafts/draft14/types.ts +451 -381
  267. package/src/drafts/draft15/codec.ts +1138 -969
  268. package/src/drafts/draft15/data-streams.ts +428 -364
  269. package/src/drafts/draft15/index.ts +10 -9
  270. package/src/drafts/draft15/messages.ts +54 -53
  271. package/src/drafts/draft15/rules.ts +67 -67
  272. package/src/drafts/draft15/session-fsm.ts +319 -299
  273. package/src/drafts/draft15/session.ts +6 -7
  274. package/src/drafts/draft15/types.ts +357 -339
  275. package/src/drafts/draft16/codec.ts +1242 -957
  276. package/src/drafts/draft16/data-streams.ts +433 -371
  277. package/src/drafts/draft16/index.ts +10 -9
  278. package/src/drafts/draft16/messages.ts +56 -55
  279. package/src/drafts/draft16/rules.ts +69 -69
  280. package/src/drafts/draft16/session-fsm.ts +319 -299
  281. package/src/drafts/draft16/session.ts +6 -7
  282. package/src/drafts/draft16/types.ts +386 -357
  283. package/src/drafts/draft17/codec.ts +1209 -962
  284. package/src/drafts/draft17/data-streams.ts +593 -366
  285. package/src/drafts/draft17/index.ts +9 -7
  286. package/src/drafts/draft17/messages.ts +43 -42
  287. package/src/drafts/draft17/rules.ts +58 -58
  288. package/src/drafts/draft17/session-fsm.ts +248 -216
  289. package/src/drafts/draft17/session.ts +5 -5
  290. package/src/drafts/draft17/types.ts +337 -313
  291. package/src/index.ts +85 -274
  292. package/src/session.ts +62 -23
  293. package/dist/chunk-7IVGHMKJ.cjs +0 -866
  294. package/dist/chunk-FUFTMAQD.cjs +0 -1218
  295. package/dist/chunk-TMNGRIPL.js +0 -866
  296. package/dist/codec-95k8CAu5.d.cts +0 -35
  297. package/dist/codec-AFuOxfsO.d.ts +0 -60
  298. package/dist/codec-B-UJ5Iow.d.cts +0 -75
  299. package/dist/codec-BC5jfvMb.d.ts +0 -35
  300. package/dist/codec-BECYPfY8.d.ts +0 -35
  301. package/dist/codec-BsPU1vNC.d.ts +0 -39
  302. package/dist/codec-BvpuF-6u.d.cts +0 -39
  303. package/dist/codec-C8jZI5Cx.d.cts +0 -39
  304. package/dist/codec-CAevkgf5.d.cts +0 -33
  305. package/dist/codec-CSUqCrRs.d.ts +0 -39
  306. package/dist/codec-C_HMXNK_.d.ts +0 -33
  307. package/dist/codec-CpuvYTSV.d.cts +0 -86
  308. package/dist/codec-D0x8-SCw.d.cts +0 -35
  309. package/dist/codec-D7ARhpG1.d.ts +0 -75
  310. package/dist/codec-DNAUGshO.d.cts +0 -60
  311. package/dist/codec-DPx_QNn0.d.ts +0 -31
  312. package/dist/codec-DRhCx_hw.d.ts +0 -86
  313. package/dist/codec-Db7YPe3l.d.ts +0 -31
  314. package/dist/codec-axkJpb7D.d.cts +0 -31
  315. package/dist/codec-ujAbFaep.d.cts +0 -31
  316. package/dist/core/buffer-reader.d.ts +0 -15
  317. package/dist/core/buffer-reader.d.ts.map +0 -1
  318. package/dist/core/buffer-reader.js +0 -98
  319. package/dist/core/buffer-reader.js.map +0 -1
  320. package/dist/core/buffer-writer.d.ts +0 -16
  321. package/dist/core/buffer-writer.d.ts.map +0 -1
  322. package/dist/core/buffer-writer.js +0 -86
  323. package/dist/core/buffer-writer.js.map +0 -1
  324. package/dist/core/errors.d.ts +0 -2
  325. package/dist/core/errors.d.ts.map +0 -1
  326. package/dist/core/errors.js +0 -2
  327. package/dist/core/errors.js.map +0 -1
  328. package/dist/core/hex.d.ts +0 -5
  329. package/dist/core/hex.d.ts.map +0 -1
  330. package/dist/core/hex.js +0 -17
  331. package/dist/core/hex.js.map +0 -1
  332. package/dist/core/session-types.d.ts +0 -99
  333. package/dist/core/session-types.d.ts.map +0 -1
  334. package/dist/core/session-types.js +0 -2
  335. package/dist/core/session-types.js.map +0 -1
  336. package/dist/core/types.d.ts +0 -235
  337. package/dist/core/types.d.ts.map +0 -1
  338. package/dist/core/types.js +0 -11
  339. package/dist/core/types.js.map +0 -1
  340. package/dist/drafts/draft07/announce-fsm.d.ts +0 -2
  341. package/dist/drafts/draft07/announce-fsm.d.ts.map +0 -1
  342. package/dist/drafts/draft07/announce-fsm.js +0 -2
  343. package/dist/drafts/draft07/announce-fsm.js.map +0 -1
  344. package/dist/drafts/draft07/codec.d.ts +0 -17
  345. package/dist/drafts/draft07/codec.d.ts.map +0 -1
  346. package/dist/drafts/draft07/codec.js +0 -722
  347. package/dist/drafts/draft07/codec.js.map +0 -1
  348. package/dist/drafts/draft07/data-streams.d.ts +0 -9
  349. package/dist/drafts/draft07/data-streams.d.ts.map +0 -1
  350. package/dist/drafts/draft07/data-streams.js +0 -228
  351. package/dist/drafts/draft07/data-streams.js.map +0 -1
  352. package/dist/drafts/draft07/index.d.ts +0 -14
  353. package/dist/drafts/draft07/index.d.ts.map +0 -1
  354. package/dist/drafts/draft07/index.js +0 -18
  355. package/dist/drafts/draft07/index.js.map +0 -1
  356. package/dist/drafts/draft07/messages.d.ts +0 -32
  357. package/dist/drafts/draft07/messages.d.ts.map +0 -1
  358. package/dist/drafts/draft07/messages.js +0 -42
  359. package/dist/drafts/draft07/messages.js.map +0 -1
  360. package/dist/drafts/draft07/parameters.d.ts +0 -4
  361. package/dist/drafts/draft07/parameters.d.ts.map +0 -1
  362. package/dist/drafts/draft07/parameters.js +0 -10
  363. package/dist/drafts/draft07/parameters.js.map +0 -1
  364. package/dist/drafts/draft07/rules.d.ts +0 -8
  365. package/dist/drafts/draft07/rules.d.ts.map +0 -1
  366. package/dist/drafts/draft07/rules.js +0 -95
  367. package/dist/drafts/draft07/rules.js.map +0 -1
  368. package/dist/drafts/draft07/session-fsm.d.ts +0 -38
  369. package/dist/drafts/draft07/session-fsm.d.ts.map +0 -1
  370. package/dist/drafts/draft07/session-fsm.js +0 -354
  371. package/dist/drafts/draft07/session-fsm.js.map +0 -1
  372. package/dist/drafts/draft07/session.d.ts +0 -4
  373. package/dist/drafts/draft07/session.d.ts.map +0 -1
  374. package/dist/drafts/draft07/session.js +0 -5
  375. package/dist/drafts/draft07/session.js.map +0 -1
  376. package/dist/drafts/draft07/subscription-fsm.d.ts +0 -2
  377. package/dist/drafts/draft07/subscription-fsm.d.ts.map +0 -1
  378. package/dist/drafts/draft07/subscription-fsm.js +0 -2
  379. package/dist/drafts/draft07/subscription-fsm.js.map +0 -1
  380. package/dist/drafts/draft07/types.d.ts +0 -61
  381. package/dist/drafts/draft07/types.d.ts.map +0 -1
  382. package/dist/drafts/draft07/types.js +0 -4
  383. package/dist/drafts/draft07/types.js.map +0 -1
  384. package/dist/drafts/draft07/varint.d.ts +0 -4
  385. package/dist/drafts/draft07/varint.d.ts.map +0 -1
  386. package/dist/drafts/draft07/varint.js +0 -22
  387. package/dist/drafts/draft07/varint.js.map +0 -1
  388. package/dist/drafts/draft08/codec.d.ts +0 -29
  389. package/dist/drafts/draft08/codec.d.ts.map +0 -1
  390. package/dist/drafts/draft08/codec.js +0 -729
  391. package/dist/drafts/draft08/codec.js.map +0 -1
  392. package/dist/drafts/draft08/data-streams.d.ts +0 -12
  393. package/dist/drafts/draft08/data-streams.d.ts.map +0 -1
  394. package/dist/drafts/draft08/data-streams.js +0 -345
  395. package/dist/drafts/draft08/data-streams.js.map +0 -1
  396. package/dist/drafts/draft08/index.d.ts +0 -9
  397. package/dist/drafts/draft08/index.d.ts.map +0 -1
  398. package/dist/drafts/draft08/index.js +0 -7
  399. package/dist/drafts/draft08/index.js.map +0 -1
  400. package/dist/drafts/draft08/messages.d.ts +0 -34
  401. package/dist/drafts/draft08/messages.d.ts.map +0 -1
  402. package/dist/drafts/draft08/messages.js +0 -66
  403. package/dist/drafts/draft08/messages.js.map +0 -1
  404. package/dist/drafts/draft08/rules.d.ts +0 -8
  405. package/dist/drafts/draft08/rules.d.ts.map +0 -1
  406. package/dist/drafts/draft08/rules.js +0 -83
  407. package/dist/drafts/draft08/rules.js.map +0 -1
  408. package/dist/drafts/draft08/session-fsm.d.ts +0 -47
  409. package/dist/drafts/draft08/session-fsm.d.ts.map +0 -1
  410. package/dist/drafts/draft08/session-fsm.js +0 -483
  411. package/dist/drafts/draft08/session-fsm.js.map +0 -1
  412. package/dist/drafts/draft08/session.d.ts +0 -5
  413. package/dist/drafts/draft08/session.d.ts.map +0 -1
  414. package/dist/drafts/draft08/session.js +0 -5
  415. package/dist/drafts/draft08/session.js.map +0 -1
  416. package/dist/drafts/draft08/types.d.ts +0 -268
  417. package/dist/drafts/draft08/types.d.ts.map +0 -1
  418. package/dist/drafts/draft08/types.js +0 -4
  419. package/dist/drafts/draft08/types.js.map +0 -1
  420. package/dist/drafts/draft09/codec.d.ts +0 -21
  421. package/dist/drafts/draft09/codec.d.ts.map +0 -1
  422. package/dist/drafts/draft09/codec.js +0 -721
  423. package/dist/drafts/draft09/codec.js.map +0 -1
  424. package/dist/drafts/draft09/data-streams.d.ts +0 -12
  425. package/dist/drafts/draft09/data-streams.d.ts.map +0 -1
  426. package/dist/drafts/draft09/data-streams.js +0 -307
  427. package/dist/drafts/draft09/data-streams.js.map +0 -1
  428. package/dist/drafts/draft09/index.d.ts +0 -9
  429. package/dist/drafts/draft09/index.d.ts.map +0 -1
  430. package/dist/drafts/draft09/index.js +0 -7
  431. package/dist/drafts/draft09/index.js.map +0 -1
  432. package/dist/drafts/draft09/messages.d.ts +0 -34
  433. package/dist/drafts/draft09/messages.d.ts.map +0 -1
  434. package/dist/drafts/draft09/messages.js +0 -66
  435. package/dist/drafts/draft09/messages.js.map +0 -1
  436. package/dist/drafts/draft09/rules.d.ts +0 -8
  437. package/dist/drafts/draft09/rules.d.ts.map +0 -1
  438. package/dist/drafts/draft09/rules.js +0 -83
  439. package/dist/drafts/draft09/rules.js.map +0 -1
  440. package/dist/drafts/draft09/session-fsm.d.ts +0 -47
  441. package/dist/drafts/draft09/session-fsm.d.ts.map +0 -1
  442. package/dist/drafts/draft09/session-fsm.js +0 -483
  443. package/dist/drafts/draft09/session-fsm.js.map +0 -1
  444. package/dist/drafts/draft09/session.d.ts +0 -5
  445. package/dist/drafts/draft09/session.d.ts.map +0 -1
  446. package/dist/drafts/draft09/session.js +0 -5
  447. package/dist/drafts/draft09/session.js.map +0 -1
  448. package/dist/drafts/draft09/types.d.ts +0 -268
  449. package/dist/drafts/draft09/types.d.ts.map +0 -1
  450. package/dist/drafts/draft09/types.js +0 -4
  451. package/dist/drafts/draft09/types.js.map +0 -1
  452. package/dist/drafts/draft10/codec.d.ts +0 -21
  453. package/dist/drafts/draft10/codec.d.ts.map +0 -1
  454. package/dist/drafts/draft10/codec.js +0 -721
  455. package/dist/drafts/draft10/codec.js.map +0 -1
  456. package/dist/drafts/draft10/data-streams.d.ts +0 -12
  457. package/dist/drafts/draft10/data-streams.d.ts.map +0 -1
  458. package/dist/drafts/draft10/data-streams.js +0 -307
  459. package/dist/drafts/draft10/data-streams.js.map +0 -1
  460. package/dist/drafts/draft10/index.d.ts +0 -9
  461. package/dist/drafts/draft10/index.d.ts.map +0 -1
  462. package/dist/drafts/draft10/index.js +0 -7
  463. package/dist/drafts/draft10/index.js.map +0 -1
  464. package/dist/drafts/draft10/messages.d.ts +0 -34
  465. package/dist/drafts/draft10/messages.d.ts.map +0 -1
  466. package/dist/drafts/draft10/messages.js +0 -66
  467. package/dist/drafts/draft10/messages.js.map +0 -1
  468. package/dist/drafts/draft10/rules.d.ts +0 -8
  469. package/dist/drafts/draft10/rules.d.ts.map +0 -1
  470. package/dist/drafts/draft10/rules.js +0 -83
  471. package/dist/drafts/draft10/rules.js.map +0 -1
  472. package/dist/drafts/draft10/session-fsm.d.ts +0 -47
  473. package/dist/drafts/draft10/session-fsm.d.ts.map +0 -1
  474. package/dist/drafts/draft10/session-fsm.js +0 -483
  475. package/dist/drafts/draft10/session-fsm.js.map +0 -1
  476. package/dist/drafts/draft10/session.d.ts +0 -5
  477. package/dist/drafts/draft10/session.d.ts.map +0 -1
  478. package/dist/drafts/draft10/session.js +0 -5
  479. package/dist/drafts/draft10/session.js.map +0 -1
  480. package/dist/drafts/draft10/types.d.ts +0 -268
  481. package/dist/drafts/draft10/types.d.ts.map +0 -1
  482. package/dist/drafts/draft10/types.js +0 -4
  483. package/dist/drafts/draft10/types.js.map +0 -1
  484. package/dist/drafts/draft11/codec.d.ts +0 -25
  485. package/dist/drafts/draft11/codec.d.ts.map +0 -1
  486. package/dist/drafts/draft11/codec.js +0 -775
  487. package/dist/drafts/draft11/codec.js.map +0 -1
  488. package/dist/drafts/draft11/data-streams.d.ts +0 -10
  489. package/dist/drafts/draft11/data-streams.d.ts.map +0 -1
  490. package/dist/drafts/draft11/data-streams.js +0 -253
  491. package/dist/drafts/draft11/data-streams.js.map +0 -1
  492. package/dist/drafts/draft11/index.d.ts +0 -9
  493. package/dist/drafts/draft11/index.d.ts.map +0 -1
  494. package/dist/drafts/draft11/index.js +0 -7
  495. package/dist/drafts/draft11/index.js.map +0 -1
  496. package/dist/drafts/draft11/messages.d.ts +0 -33
  497. package/dist/drafts/draft11/messages.d.ts.map +0 -1
  498. package/dist/drafts/draft11/messages.js +0 -65
  499. package/dist/drafts/draft11/messages.js.map +0 -1
  500. package/dist/drafts/draft11/rules.d.ts +0 -8
  501. package/dist/drafts/draft11/rules.d.ts.map +0 -1
  502. package/dist/drafts/draft11/rules.js +0 -88
  503. package/dist/drafts/draft11/rules.js.map +0 -1
  504. package/dist/drafts/draft11/session-fsm.d.ts +0 -52
  505. package/dist/drafts/draft11/session-fsm.d.ts.map +0 -1
  506. package/dist/drafts/draft11/session-fsm.js +0 -530
  507. package/dist/drafts/draft11/session-fsm.js.map +0 -1
  508. package/dist/drafts/draft11/session.d.ts +0 -5
  509. package/dist/drafts/draft11/session.d.ts.map +0 -1
  510. package/dist/drafts/draft11/session.js +0 -5
  511. package/dist/drafts/draft11/session.js.map +0 -1
  512. package/dist/drafts/draft11/types.d.ts +0 -266
  513. package/dist/drafts/draft11/types.d.ts.map +0 -1
  514. package/dist/drafts/draft11/types.js +0 -4
  515. package/dist/drafts/draft11/types.js.map +0 -1
  516. package/dist/drafts/draft12/codec.d.ts +0 -27
  517. package/dist/drafts/draft12/codec.d.ts.map +0 -1
  518. package/dist/drafts/draft12/codec.js +0 -918
  519. package/dist/drafts/draft12/codec.js.map +0 -1
  520. package/dist/drafts/draft12/data-streams.d.ts +0 -10
  521. package/dist/drafts/draft12/data-streams.d.ts.map +0 -1
  522. package/dist/drafts/draft12/data-streams.js +0 -254
  523. package/dist/drafts/draft12/data-streams.js.map +0 -1
  524. package/dist/drafts/draft12/index.d.ts +0 -9
  525. package/dist/drafts/draft12/index.d.ts.map +0 -1
  526. package/dist/drafts/draft12/index.js +0 -7
  527. package/dist/drafts/draft12/index.js.map +0 -1
  528. package/dist/drafts/draft12/messages.d.ts +0 -37
  529. package/dist/drafts/draft12/messages.d.ts.map +0 -1
  530. package/dist/drafts/draft12/messages.js +0 -77
  531. package/dist/drafts/draft12/messages.js.map +0 -1
  532. package/dist/drafts/draft12/rules.d.ts +0 -8
  533. package/dist/drafts/draft12/rules.d.ts.map +0 -1
  534. package/dist/drafts/draft12/rules.js +0 -94
  535. package/dist/drafts/draft12/rules.js.map +0 -1
  536. package/dist/drafts/draft12/session-fsm.d.ts +0 -55
  537. package/dist/drafts/draft12/session-fsm.d.ts.map +0 -1
  538. package/dist/drafts/draft12/session-fsm.js +0 -569
  539. package/dist/drafts/draft12/session-fsm.js.map +0 -1
  540. package/dist/drafts/draft12/session.d.ts +0 -5
  541. package/dist/drafts/draft12/session.d.ts.map +0 -1
  542. package/dist/drafts/draft12/session.js +0 -5
  543. package/dist/drafts/draft12/session.js.map +0 -1
  544. package/dist/drafts/draft12/types.d.ts +0 -294
  545. package/dist/drafts/draft12/types.d.ts.map +0 -1
  546. package/dist/drafts/draft12/types.js +0 -4
  547. package/dist/drafts/draft12/types.js.map +0 -1
  548. package/dist/drafts/draft13/codec.d.ts +0 -27
  549. package/dist/drafts/draft13/codec.d.ts.map +0 -1
  550. package/dist/drafts/draft13/codec.js +0 -1000
  551. package/dist/drafts/draft13/codec.js.map +0 -1
  552. package/dist/drafts/draft13/data-streams.d.ts +0 -10
  553. package/dist/drafts/draft13/data-streams.d.ts.map +0 -1
  554. package/dist/drafts/draft13/data-streams.js +0 -254
  555. package/dist/drafts/draft13/data-streams.js.map +0 -1
  556. package/dist/drafts/draft13/index.d.ts +0 -9
  557. package/dist/drafts/draft13/index.d.ts.map +0 -1
  558. package/dist/drafts/draft13/index.js +0 -7
  559. package/dist/drafts/draft13/index.js.map +0 -1
  560. package/dist/drafts/draft13/messages.d.ts +0 -38
  561. package/dist/drafts/draft13/messages.d.ts.map +0 -1
  562. package/dist/drafts/draft13/messages.js +0 -79
  563. package/dist/drafts/draft13/messages.js.map +0 -1
  564. package/dist/drafts/draft13/rules.d.ts +0 -8
  565. package/dist/drafts/draft13/rules.d.ts.map +0 -1
  566. package/dist/drafts/draft13/rules.js +0 -96
  567. package/dist/drafts/draft13/rules.js.map +0 -1
  568. package/dist/drafts/draft13/session-fsm.d.ts +0 -56
  569. package/dist/drafts/draft13/session-fsm.d.ts.map +0 -1
  570. package/dist/drafts/draft13/session-fsm.js +0 -581
  571. package/dist/drafts/draft13/session-fsm.js.map +0 -1
  572. package/dist/drafts/draft13/session.d.ts +0 -5
  573. package/dist/drafts/draft13/session.d.ts.map +0 -1
  574. package/dist/drafts/draft13/session.js +0 -5
  575. package/dist/drafts/draft13/session.js.map +0 -1
  576. package/dist/drafts/draft13/types.d.ts +0 -310
  577. package/dist/drafts/draft13/types.d.ts.map +0 -1
  578. package/dist/drafts/draft13/types.js +0 -4
  579. package/dist/drafts/draft13/types.js.map +0 -1
  580. package/dist/drafts/draft14/codec.d.ts +0 -34
  581. package/dist/drafts/draft14/codec.d.ts.map +0 -1
  582. package/dist/drafts/draft14/codec.js +0 -752
  583. package/dist/drafts/draft14/codec.js.map +0 -1
  584. package/dist/drafts/draft14/data-streams.d.ts +0 -56
  585. package/dist/drafts/draft14/data-streams.d.ts.map +0 -1
  586. package/dist/drafts/draft14/data-streams.js +0 -729
  587. package/dist/drafts/draft14/data-streams.js.map +0 -1
  588. package/dist/drafts/draft14/index.d.ts +0 -9
  589. package/dist/drafts/draft14/index.d.ts.map +0 -1
  590. package/dist/drafts/draft14/index.js +0 -7
  591. package/dist/drafts/draft14/index.js.map +0 -1
  592. package/dist/drafts/draft14/messages.d.ts +0 -36
  593. package/dist/drafts/draft14/messages.d.ts.map +0 -1
  594. package/dist/drafts/draft14/messages.js +0 -71
  595. package/dist/drafts/draft14/messages.js.map +0 -1
  596. package/dist/drafts/draft14/rules.d.ts +0 -8
  597. package/dist/drafts/draft14/rules.d.ts.map +0 -1
  598. package/dist/drafts/draft14/rules.js +0 -101
  599. package/dist/drafts/draft14/rules.js.map +0 -1
  600. package/dist/drafts/draft14/session-fsm.d.ts +0 -58
  601. package/dist/drafts/draft14/session-fsm.d.ts.map +0 -1
  602. package/dist/drafts/draft14/session-fsm.js +0 -648
  603. package/dist/drafts/draft14/session-fsm.js.map +0 -1
  604. package/dist/drafts/draft14/session.d.ts +0 -5
  605. package/dist/drafts/draft14/session.d.ts.map +0 -1
  606. package/dist/drafts/draft14/session.js +0 -5
  607. package/dist/drafts/draft14/session.js.map +0 -1
  608. package/dist/drafts/draft14/types.d.ts +0 -263
  609. package/dist/drafts/draft14/types.d.ts.map +0 -1
  610. package/dist/drafts/draft14/types.js +0 -4
  611. package/dist/drafts/draft14/types.js.map +0 -1
  612. package/dist/drafts/draft15/codec.d.ts +0 -33
  613. package/dist/drafts/draft15/codec.d.ts.map +0 -1
  614. package/dist/drafts/draft15/codec.js +0 -742
  615. package/dist/drafts/draft15/codec.js.map +0 -1
  616. package/dist/drafts/draft15/data-streams.d.ts +0 -45
  617. package/dist/drafts/draft15/data-streams.d.ts.map +0 -1
  618. package/dist/drafts/draft15/data-streams.js +0 -675
  619. package/dist/drafts/draft15/data-streams.js.map +0 -1
  620. package/dist/drafts/draft15/index.d.ts +0 -9
  621. package/dist/drafts/draft15/index.d.ts.map +0 -1
  622. package/dist/drafts/draft15/index.js +0 -7
  623. package/dist/drafts/draft15/index.js.map +0 -1
  624. package/dist/drafts/draft15/messages.d.ts +0 -31
  625. package/dist/drafts/draft15/messages.d.ts.map +0 -1
  626. package/dist/drafts/draft15/messages.js +0 -59
  627. package/dist/drafts/draft15/messages.js.map +0 -1
  628. package/dist/drafts/draft15/rules.d.ts +0 -8
  629. package/dist/drafts/draft15/rules.d.ts.map +0 -1
  630. package/dist/drafts/draft15/rules.js +0 -83
  631. package/dist/drafts/draft15/rules.js.map +0 -1
  632. package/dist/drafts/draft15/session-fsm.d.ts +0 -48
  633. package/dist/drafts/draft15/session-fsm.d.ts.map +0 -1
  634. package/dist/drafts/draft15/session-fsm.js +0 -479
  635. package/dist/drafts/draft15/session-fsm.js.map +0 -1
  636. package/dist/drafts/draft15/session.d.ts +0 -5
  637. package/dist/drafts/draft15/session.d.ts.map +0 -1
  638. package/dist/drafts/draft15/session.js +0 -5
  639. package/dist/drafts/draft15/session.js.map +0 -1
  640. package/dist/drafts/draft15/types.d.ts +0 -232
  641. package/dist/drafts/draft15/types.d.ts.map +0 -1
  642. package/dist/drafts/draft15/types.js +0 -4
  643. package/dist/drafts/draft15/types.js.map +0 -1
  644. package/dist/drafts/draft16/codec.d.ts +0 -29
  645. package/dist/drafts/draft16/codec.d.ts.map +0 -1
  646. package/dist/drafts/draft16/codec.js +0 -747
  647. package/dist/drafts/draft16/codec.js.map +0 -1
  648. package/dist/drafts/draft16/data-streams.d.ts +0 -34
  649. package/dist/drafts/draft16/data-streams.d.ts.map +0 -1
  650. package/dist/drafts/draft16/data-streams.js +0 -667
  651. package/dist/drafts/draft16/data-streams.js.map +0 -1
  652. package/dist/drafts/draft16/index.d.ts +0 -9
  653. package/dist/drafts/draft16/index.d.ts.map +0 -1
  654. package/dist/drafts/draft16/index.js +0 -7
  655. package/dist/drafts/draft16/index.js.map +0 -1
  656. package/dist/drafts/draft16/messages.d.ts +0 -32
  657. package/dist/drafts/draft16/messages.d.ts.map +0 -1
  658. package/dist/drafts/draft16/messages.js +0 -62
  659. package/dist/drafts/draft16/messages.js.map +0 -1
  660. package/dist/drafts/draft16/rules.d.ts +0 -8
  661. package/dist/drafts/draft16/rules.d.ts.map +0 -1
  662. package/dist/drafts/draft16/rules.js +0 -84
  663. package/dist/drafts/draft16/rules.js.map +0 -1
  664. package/dist/drafts/draft16/session-fsm.d.ts +0 -48
  665. package/dist/drafts/draft16/session-fsm.d.ts.map +0 -1
  666. package/dist/drafts/draft16/session-fsm.js +0 -474
  667. package/dist/drafts/draft16/session-fsm.js.map +0 -1
  668. package/dist/drafts/draft16/session.d.ts +0 -5
  669. package/dist/drafts/draft16/session.d.ts.map +0 -1
  670. package/dist/drafts/draft16/session.js +0 -5
  671. package/dist/drafts/draft16/session.js.map +0 -1
  672. package/dist/drafts/draft16/types.d.ts +0 -238
  673. package/dist/drafts/draft16/types.d.ts.map +0 -1
  674. package/dist/drafts/draft16/types.js +0 -4
  675. package/dist/drafts/draft16/types.js.map +0 -1
  676. package/dist/drafts/draft17/codec.d.ts +0 -29
  677. package/dist/drafts/draft17/codec.d.ts.map +0 -1
  678. package/dist/drafts/draft17/codec.js +0 -799
  679. package/dist/drafts/draft17/codec.js.map +0 -1
  680. package/dist/drafts/draft17/data-streams.d.ts +0 -13
  681. package/dist/drafts/draft17/data-streams.d.ts.map +0 -1
  682. package/dist/drafts/draft17/data-streams.js +0 -633
  683. package/dist/drafts/draft17/data-streams.js.map +0 -1
  684. package/dist/drafts/draft17/index.d.ts +0 -8
  685. package/dist/drafts/draft17/index.d.ts.map +0 -1
  686. package/dist/drafts/draft17/index.js +0 -6
  687. package/dist/drafts/draft17/index.js.map +0 -1
  688. package/dist/drafts/draft17/messages.d.ts +0 -25
  689. package/dist/drafts/draft17/messages.d.ts.map +0 -1
  690. package/dist/drafts/draft17/messages.js +0 -48
  691. package/dist/drafts/draft17/messages.js.map +0 -1
  692. package/dist/drafts/draft17/rules.d.ts +0 -8
  693. package/dist/drafts/draft17/rules.d.ts.map +0 -1
  694. package/dist/drafts/draft17/rules.js +0 -71
  695. package/dist/drafts/draft17/rules.js.map +0 -1
  696. package/dist/drafts/draft17/session-fsm.d.ts +0 -45
  697. package/dist/drafts/draft17/session-fsm.d.ts.map +0 -1
  698. package/dist/drafts/draft17/session-fsm.js +0 -328
  699. package/dist/drafts/draft17/session-fsm.js.map +0 -1
  700. package/dist/drafts/draft17/session.d.ts +0 -5
  701. package/dist/drafts/draft17/session.d.ts.map +0 -1
  702. package/dist/drafts/draft17/session.js +0 -6
  703. package/dist/drafts/draft17/session.js.map +0 -1
  704. package/dist/drafts/draft17/types.d.ts +0 -219
  705. package/dist/drafts/draft17/types.d.ts.map +0 -1
  706. package/dist/drafts/draft17/types.js +0 -3
  707. package/dist/drafts/draft17/types.js.map +0 -1
  708. package/dist/index.d.ts.map +0 -1
  709. package/dist/index.js.map +0 -1
  710. package/dist/session.d.ts.map +0 -1
  711. package/dist/session.js.map +0 -1
  712. package/dist/types-QNXoxC9Y.d.cts +0 -236
  713. package/dist/types-QNXoxC9Y.d.ts +0 -236
  714. package/src/drafts/draft07/announce-fsm.ts +0 -2
  715. package/src/drafts/draft07/parameters.ts +0 -12
  716. package/src/drafts/draft07/subscription-fsm.ts +0 -3
@@ -1,8 +1,10 @@
1
1
  import {
2
2
  BufferReader,
3
3
  BufferWriter,
4
- DecodeError
5
- } from "./chunk-A27S7HW7.js";
4
+ DecodeError,
5
+ bytesToHex,
6
+ hexToBytes
7
+ } from "./chunk-VOU7PNHI.js";
6
8
 
7
9
  // src/drafts/draft15/messages.ts
8
10
  var MSG_SUBSCRIBE_UPDATE = 0x02n;
@@ -30,6 +32,7 @@ var MSG_CLIENT_SETUP = 0x20n;
30
32
  var MSG_SERVER_SETUP = 0x21n;
31
33
  var SETUP_PARAM_PATH = 0x01n;
32
34
  var SETUP_PARAM_MAX_REQUEST_ID = 0x02n;
35
+ var SETUP_PARAM_AUTHORIZATION_TOKEN = 0x03n;
33
36
  var SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE = 0x04n;
34
37
  var SETUP_PARAM_AUTHORITY = 0x05n;
35
38
  var SETUP_PARAM_MOQT_IMPLEMENTATION = 0x07n;
@@ -62,273 +65,1028 @@ var MESSAGE_ID_MAP = new Map(
62
65
  [...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
63
66
  );
64
67
 
65
- // src/drafts/draft15/codec.ts
66
- function bytesToHex(bytes) {
67
- let hex = "";
68
- for (let i = 0; i < bytes.byteLength; i++) {
69
- hex += bytes[i].toString(16).padStart(2, "0");
70
- }
71
- return hex;
72
- }
73
- function hexToBytes(hex) {
74
- const bytes = new Uint8Array(hex.length / 2);
75
- for (let i = 0; i < hex.length; i += 2) {
76
- bytes[i / 2] = parseInt(hex.substring(i, i + 2), 16);
68
+ // src/drafts/draft15/data-streams.ts
69
+ var FETCH_STREAM_TYPE = 0x05n;
70
+ function encodeSubgroupStream(stream) {
71
+ const w = new BufferWriter();
72
+ const streamType = stream.headerType;
73
+ w.writeVarInt(BigInt(streamType));
74
+ const extensionsPresent = (streamType & 1) !== 0;
75
+ const hasSubgroupField = (streamType & 4) !== 0;
76
+ const hasPriority = streamType < 48;
77
+ w.writeVarInt(stream.trackAlias);
78
+ w.writeVarInt(stream.groupId);
79
+ if (hasSubgroupField) {
80
+ w.writeVarInt(stream.subgroupId);
77
81
  }
78
- return bytes;
79
- }
80
- function encodeSetupParams(params, writer) {
81
- let count = 0;
82
- if (params.path !== void 0) count++;
83
- if (params.max_request_id !== void 0) count++;
84
- if (params.max_auth_token_cache_size !== void 0) count++;
85
- if (params.authority !== void 0) count++;
86
- if (params.moqt_implementation !== void 0) count++;
87
- if (params.unknown) count += params.unknown.length;
88
- writer.writeVarInt(count);
89
- if (params.path !== void 0) {
90
- writer.writeVarInt(SETUP_PARAM_PATH);
91
- const encoded = new TextEncoder().encode(params.path);
92
- writer.writeVarInt(encoded.byteLength);
93
- writer.writeBytes(encoded);
82
+ if (hasPriority) {
83
+ w.writeUint8(stream.publisherPriority);
94
84
  }
95
- if (params.max_request_id !== void 0) {
96
- writer.writeVarInt(SETUP_PARAM_MAX_REQUEST_ID);
97
- writer.writeVarInt(params.max_request_id);
85
+ let prevObjectId = -1n;
86
+ for (const obj of stream.objects) {
87
+ const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
88
+ w.writeVarInt(delta);
89
+ if (extensionsPresent) {
90
+ w.writeVarInt(BigInt(obj.extensionData.length));
91
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
92
+ }
93
+ w.writeVarInt(obj.payloadLength);
94
+ if (obj.payloadLength === 0) {
95
+ w.writeVarInt(obj.status ?? 0n);
96
+ } else {
97
+ w.writeBytes(obj.payload);
98
+ }
99
+ prevObjectId = obj.objectId;
98
100
  }
99
- if (params.max_auth_token_cache_size !== void 0) {
100
- writer.writeVarInt(SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE);
101
- writer.writeVarInt(params.max_auth_token_cache_size);
101
+ return w.finish();
102
+ }
103
+ function encodeDatagram(dg) {
104
+ const w = new BufferWriter();
105
+ const dgType = dg.datagramType;
106
+ w.writeVarInt(BigInt(dgType));
107
+ w.writeVarInt(dg.trackAlias);
108
+ w.writeVarInt(dg.groupId);
109
+ const extensionsPresent = (dgType & 1) !== 0;
110
+ const objectIdAbsent = (dgType & 4) !== 0;
111
+ const isStatus = (dgType & 32) !== 0;
112
+ if (!objectIdAbsent) {
113
+ w.writeVarInt(dg.objectId);
102
114
  }
103
- if (params.authority !== void 0) {
104
- writer.writeVarInt(SETUP_PARAM_AUTHORITY);
105
- const encoded = new TextEncoder().encode(params.authority);
106
- writer.writeVarInt(encoded.byteLength);
107
- writer.writeBytes(encoded);
115
+ w.writeUint8(dg.publisherPriority);
116
+ if (extensionsPresent) {
117
+ const extData = dg.extensionData ?? new Uint8Array(0);
118
+ w.writeVarInt(BigInt(extData.length));
119
+ if (extData.length > 0) w.writeBytes(extData);
108
120
  }
109
- if (params.moqt_implementation !== void 0) {
110
- writer.writeVarInt(SETUP_PARAM_MOQT_IMPLEMENTATION);
111
- const encoded = new TextEncoder().encode(params.moqt_implementation);
112
- writer.writeVarInt(encoded.byteLength);
113
- writer.writeBytes(encoded);
121
+ if (isStatus) {
122
+ w.writeVarInt(dg.objectStatus ?? 0n);
123
+ } else {
124
+ w.writeBytes(dg.payload);
114
125
  }
115
- if (params.unknown) {
116
- for (const u of params.unknown) {
117
- const id = BigInt(u.id);
118
- writer.writeVarInt(id);
119
- if (id % 2n === 0n) {
120
- const raw = hexToBytes(u.raw_hex);
121
- const tmpReader = new BufferReader(raw);
122
- const value = tmpReader.readVarInt();
123
- writer.writeVarInt(value);
124
- } else {
125
- const raw = hexToBytes(u.raw_hex);
126
- writer.writeVarInt(raw.byteLength);
127
- writer.writeBytes(raw);
128
- }
126
+ return w.finish();
127
+ }
128
+ function encodeFetchStream(stream) {
129
+ const w = new BufferWriter();
130
+ w.writeVarInt(FETCH_STREAM_TYPE);
131
+ w.writeVarInt(stream.requestId);
132
+ for (const obj of stream.objects) {
133
+ w.writeUint8(obj.serializationFlags);
134
+ const flags = obj.serializationFlags;
135
+ if (flags & 8) w.writeVarInt(obj.groupId);
136
+ const subgroupEncoding = flags & 3;
137
+ if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
138
+ if (flags & 4) w.writeVarInt(obj.objectId);
139
+ if (flags & 16) w.writeUint8(obj.publisherPriority);
140
+ if (flags & 32) {
141
+ w.writeVarInt(BigInt(obj.extensionData.length));
142
+ if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
143
+ }
144
+ w.writeVarInt(obj.payloadLength);
145
+ if (obj.payloadLength === 0) {
146
+ w.writeVarInt(obj.status ?? 0n);
147
+ } else {
148
+ w.writeBytes(obj.payload);
129
149
  }
130
150
  }
151
+ return w.finish();
131
152
  }
132
- function decodeSetupParams(reader) {
133
- const count = Number(reader.readVarInt());
134
- const result = {};
135
- const unknown = [];
136
- for (let i = 0; i < count; i++) {
137
- const paramType = reader.readVarInt();
138
- if (paramType % 2n === 0n) {
139
- const value = reader.readVarInt();
140
- if (paramType === SETUP_PARAM_MAX_REQUEST_ID) {
141
- result.max_request_id = value;
142
- } else if (paramType === SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE) {
143
- result.max_auth_token_cache_size = value;
153
+ function decodeSubgroupStream(bytes) {
154
+ try {
155
+ const r = new BufferReader(bytes);
156
+ const streamType = Number(r.readVarInt());
157
+ if (!(streamType >= 16 && streamType <= 23 || streamType >= 48 && streamType <= 55)) {
158
+ return {
159
+ ok: false,
160
+ error: new DecodeError(
161
+ "CONSTRAINT_VIOLATION",
162
+ `Expected subgroup stream type 0x10-0x17/0x30-0x37, got 0x${streamType.toString(16)}`,
163
+ 0
164
+ )
165
+ };
166
+ }
167
+ const extensionsPresent = (streamType & 1) !== 0;
168
+ const endOfGroup = (streamType & 2) !== 0;
169
+ const hasSubgroupField = (streamType & 4) !== 0;
170
+ const hasPriority = streamType < 48;
171
+ const trackAlias = r.readVarInt();
172
+ const groupId = r.readVarInt();
173
+ let subgroupId = 0n;
174
+ if (hasSubgroupField) {
175
+ subgroupId = r.readVarInt();
176
+ }
177
+ let publisherPriority = 128;
178
+ if (hasPriority) {
179
+ publisherPriority = r.readUint8();
180
+ }
181
+ const objects = [];
182
+ let prevObjectId = -1n;
183
+ let firstObject = true;
184
+ while (r.remaining > 0) {
185
+ const byteOffset = r.offset;
186
+ const delta = r.readVarInt();
187
+ let objectId;
188
+ if (firstObject) {
189
+ objectId = delta;
190
+ firstObject = false;
144
191
  } else {
145
- const tmpWriter = new BufferWriter(16);
146
- tmpWriter.writeVarInt(value);
147
- const raw = tmpWriter.finish();
148
- unknown.push({
149
- id: `0x${paramType.toString(16)}`,
150
- length: raw.byteLength,
151
- raw_hex: bytesToHex(raw)
152
- });
192
+ objectId = prevObjectId + 1n + delta;
153
193
  }
154
- } else {
155
- const length = Number(reader.readVarInt());
156
- const bytes = reader.readBytes(length);
157
- if (paramType === SETUP_PARAM_PATH) {
158
- result.path = new TextDecoder().decode(bytes);
159
- } else if (paramType === SETUP_PARAM_AUTHORITY) {
160
- result.authority = new TextDecoder().decode(bytes);
161
- } else if (paramType === SETUP_PARAM_MOQT_IMPLEMENTATION) {
162
- result.moqt_implementation = new TextDecoder().decode(bytes);
194
+ let extensionData = new Uint8Array(0);
195
+ if (extensionsPresent) {
196
+ const extLen = Number(r.readVarInt());
197
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
198
+ }
199
+ const payloadLength = Number(r.readVarInt());
200
+ let payload;
201
+ let status;
202
+ let payloadByteOffset;
203
+ if (payloadLength === 0) {
204
+ status = r.readVarInt();
205
+ payloadByteOffset = r.offset;
206
+ payload = new Uint8Array(0);
163
207
  } else {
164
- unknown.push({
165
- id: `0x${paramType.toString(16)}`,
166
- length,
167
- raw_hex: bytesToHex(bytes)
168
- });
208
+ payloadByteOffset = r.offset;
209
+ payload = r.readBytesView(payloadLength);
169
210
  }
211
+ const obj = {
212
+ type: "object",
213
+ byteOffset,
214
+ payloadByteOffset,
215
+ objectId,
216
+ payloadLength,
217
+ extensionData,
218
+ payload
219
+ };
220
+ if (status !== void 0) obj.status = status;
221
+ objects.push(obj);
222
+ prevObjectId = objectId;
170
223
  }
224
+ const result = {
225
+ type: "subgroup",
226
+ headerType: streamType,
227
+ trackAlias,
228
+ groupId,
229
+ subgroupId,
230
+ publisherPriority,
231
+ objects
232
+ };
233
+ if (endOfGroup) result.endOfGroup = true;
234
+ return {
235
+ ok: true,
236
+ value: result,
237
+ bytesRead: r.offset
238
+ };
239
+ } catch (e) {
240
+ if (e instanceof DecodeError) return { ok: false, error: e };
241
+ throw e;
171
242
  }
172
- if (unknown.length > 0) {
173
- result.unknown = unknown;
243
+ }
244
+ function decodeDatagram(bytes) {
245
+ try {
246
+ const r = new BufferReader(bytes);
247
+ const dgType = Number(r.readVarInt());
248
+ const extensionsPresent = (dgType & 1) !== 0;
249
+ const objectIdAbsent = (dgType & 4) !== 0;
250
+ const endOfGroup = (dgType & 2) !== 0;
251
+ const isStatus = (dgType & 32) !== 0;
252
+ const trackAlias = r.readVarInt();
253
+ const groupId = r.readVarInt();
254
+ let objectId = 0n;
255
+ if (!objectIdAbsent) {
256
+ objectId = r.readVarInt();
257
+ }
258
+ const publisherPriority = r.readUint8();
259
+ let extensionData;
260
+ if (extensionsPresent) {
261
+ const extLen = Number(r.readVarInt());
262
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
263
+ }
264
+ let objectStatus;
265
+ let payload;
266
+ if (isStatus) {
267
+ objectStatus = r.readVarInt();
268
+ payload = new Uint8Array(0);
269
+ } else {
270
+ payload = r.readBytesView(r.remaining);
271
+ }
272
+ const payloadLength = payload.byteLength;
273
+ const result = {
274
+ type: "datagram",
275
+ datagramType: dgType,
276
+ trackAlias,
277
+ groupId,
278
+ objectId,
279
+ publisherPriority,
280
+ payloadLength,
281
+ payload
282
+ };
283
+ if (endOfGroup) result.endOfGroup = true;
284
+ if (objectStatus !== void 0)
285
+ result.objectStatus = objectStatus;
286
+ if (extensionData !== void 0)
287
+ result.extensionData = extensionData;
288
+ return { ok: true, value: result, bytesRead: r.offset };
289
+ } catch (e) {
290
+ if (e instanceof DecodeError) return { ok: false, error: e };
291
+ throw e;
174
292
  }
175
- return result;
176
293
  }
177
- var PARAM_EXPIRES = 0x08n;
178
- var PARAM_LARGEST_OBJECT = 0x09n;
179
- var PARAM_SUBSCRIBER_PRIORITY = 0x20n;
180
- var PARAM_SUBSCRIPTION_FILTER = 0x21n;
181
- var PARAM_GROUP_ORDER = 0x22n;
182
- function encodeParams(params, writer) {
183
- let count = params.unknown ? params.unknown.length : 0;
184
- if (params.expires !== void 0) count++;
185
- if (params.largest_object !== void 0) count++;
186
- if (params.subscriber_priority !== void 0) count++;
187
- if (params.subscription_filter !== void 0) count++;
188
- if (params.group_order !== void 0) count++;
189
- writer.writeVarInt(count);
190
- if (params.expires !== void 0) {
191
- writer.writeVarInt(PARAM_EXPIRES);
192
- writer.writeVarInt(params.expires);
193
- }
194
- if (params.largest_object !== void 0) {
195
- writer.writeVarInt(PARAM_LARGEST_OBJECT);
196
- const tmpW = new BufferWriter(16);
197
- tmpW.writeVarInt(params.largest_object.group);
198
- tmpW.writeVarInt(params.largest_object.object);
199
- const raw = tmpW.finish();
200
- writer.writeVarInt(raw.byteLength);
201
- writer.writeBytes(raw);
202
- }
203
- if (params.subscriber_priority !== void 0) {
204
- writer.writeVarInt(PARAM_SUBSCRIBER_PRIORITY);
205
- writer.writeVarInt(params.subscriber_priority);
206
- }
207
- if (params.subscription_filter !== void 0) {
208
- writer.writeVarInt(PARAM_SUBSCRIPTION_FILTER);
209
- const tmpW = new BufferWriter(32);
210
- const f = params.subscription_filter;
211
- tmpW.writeVarInt(f.filter_type);
212
- if (f.filter_type === 3n || f.filter_type === 4n) {
213
- tmpW.writeVarInt(f.start_group);
214
- tmpW.writeVarInt(f.start_object);
215
- }
216
- if (f.filter_type === 4n) {
217
- tmpW.writeVarInt(f.end_group);
294
+ function decodeFetchStream(bytes) {
295
+ try {
296
+ const r = new BufferReader(bytes);
297
+ const streamType = r.readVarInt();
298
+ if (streamType !== FETCH_STREAM_TYPE) {
299
+ return {
300
+ ok: false,
301
+ error: new DecodeError(
302
+ "CONSTRAINT_VIOLATION",
303
+ `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
304
+ 0
305
+ )
306
+ };
218
307
  }
219
- const raw = tmpW.finish();
220
- writer.writeVarInt(raw.byteLength);
221
- writer.writeBytes(raw);
222
- }
223
- if (params.group_order !== void 0) {
224
- writer.writeVarInt(PARAM_GROUP_ORDER);
225
- writer.writeVarInt(params.group_order);
226
- }
227
- if (params.unknown) {
228
- for (const u of params.unknown) {
229
- const id = BigInt(u.id);
230
- writer.writeVarInt(id);
231
- if (id % 2n === 0n) {
232
- const raw = hexToBytes(u.raw_hex);
233
- const tmpReader = new BufferReader(raw);
234
- const value = tmpReader.readVarInt();
235
- writer.writeVarInt(value);
308
+ const requestId = r.readVarInt();
309
+ const objects = [];
310
+ let prevGroupId = 0n;
311
+ let prevSubgroupId = 0n;
312
+ let prevObjectId = 0n;
313
+ let prevPriority = 128;
314
+ let first = true;
315
+ while (r.remaining > 0) {
316
+ const byteOffset = r.offset;
317
+ const flags = r.readUint8();
318
+ const subgroupEncoding = flags & 3;
319
+ const objectIdPresent = (flags & 4) !== 0;
320
+ const groupIdPresent = (flags & 8) !== 0;
321
+ const priorityPresent = (flags & 16) !== 0;
322
+ const extensionsPresent = (flags & 32) !== 0;
323
+ if (flags & 192) {
324
+ return {
325
+ ok: false,
326
+ error: new DecodeError(
327
+ "CONSTRAINT_VIOLATION",
328
+ "Reserved bits set in fetch object flags",
329
+ r.offset
330
+ )
331
+ };
332
+ }
333
+ let groupId = prevGroupId;
334
+ if (groupIdPresent) {
335
+ groupId = r.readVarInt();
336
+ } else if (first) {
337
+ return {
338
+ ok: false,
339
+ error: new DecodeError(
340
+ "CONSTRAINT_VIOLATION",
341
+ "First fetch object must include groupId",
342
+ r.offset
343
+ )
344
+ };
345
+ }
346
+ let subgroupId;
347
+ if (subgroupEncoding === 0) {
348
+ subgroupId = 0n;
349
+ } else if (subgroupEncoding === 1) {
350
+ if (first) {
351
+ return {
352
+ ok: false,
353
+ error: new DecodeError(
354
+ "CONSTRAINT_VIOLATION",
355
+ "First fetch object cannot reference prior subgroupId",
356
+ r.offset
357
+ )
358
+ };
359
+ }
360
+ subgroupId = prevSubgroupId;
361
+ } else if (subgroupEncoding === 2) {
362
+ if (first) {
363
+ return {
364
+ ok: false,
365
+ error: new DecodeError(
366
+ "CONSTRAINT_VIOLATION",
367
+ "First fetch object cannot reference prior subgroupId",
368
+ r.offset
369
+ )
370
+ };
371
+ }
372
+ subgroupId = prevSubgroupId + 1n;
236
373
  } else {
237
- const raw = hexToBytes(u.raw_hex);
238
- writer.writeVarInt(raw.byteLength);
239
- writer.writeBytes(raw);
374
+ subgroupId = r.readVarInt();
240
375
  }
241
- }
242
- }
243
- }
244
- function decodeParams(reader) {
245
- const count = Number(reader.readVarInt());
246
- const result = {};
247
- const unknown = [];
248
- for (let i = 0; i < count; i++) {
249
- const paramType = reader.readVarInt();
250
- if (paramType === PARAM_EXPIRES) {
251
- result.expires = reader.readVarInt();
252
- } else if (paramType === PARAM_SUBSCRIBER_PRIORITY) {
253
- result.subscriber_priority = reader.readVarInt();
254
- } else if (paramType === PARAM_GROUP_ORDER) {
255
- result.group_order = reader.readVarInt();
256
- } else if (paramType === PARAM_LARGEST_OBJECT) {
257
- const length = Number(reader.readVarInt());
258
- const startOff = reader.offset;
259
- const group = reader.readVarInt();
260
- const object = reader.readVarInt();
261
- const consumed = reader.offset - startOff;
262
- if (consumed < length) reader.readBytes(length - consumed);
263
- result.largest_object = { group, object };
264
- } else if (paramType === PARAM_SUBSCRIPTION_FILTER) {
265
- const length = Number(reader.readVarInt());
266
- const startOff = reader.offset;
267
- const filter_type = reader.readVarInt();
268
- const filter = { filter_type };
269
- if (filter_type === 3n || filter_type === 4n) {
270
- filter.start_group = reader.readVarInt();
271
- filter.start_object = reader.readVarInt();
376
+ let objectId = prevObjectId + 1n;
377
+ if (objectIdPresent) {
378
+ objectId = r.readVarInt();
379
+ } else if (first) {
380
+ return {
381
+ ok: false,
382
+ error: new DecodeError(
383
+ "CONSTRAINT_VIOLATION",
384
+ "First fetch object must include objectId",
385
+ r.offset
386
+ )
387
+ };
272
388
  }
273
- if (filter_type === 4n) {
274
- filter.end_group = reader.readVarInt();
389
+ if (priorityPresent) {
390
+ prevPriority = r.readUint8();
275
391
  }
276
- const consumed = reader.offset - startOff;
277
- if (consumed < length) reader.readBytes(length - consumed);
278
- result.subscription_filter = filter;
279
- } else if (paramType % 2n === 0n) {
280
- const value = reader.readVarInt();
281
- const tmpWriter = new BufferWriter(16);
282
- tmpWriter.writeVarInt(value);
283
- const raw = tmpWriter.finish();
284
- unknown.push({
285
- id: `0x${paramType.toString(16)}`,
286
- length: raw.byteLength,
287
- raw_hex: bytesToHex(raw)
288
- });
289
- } else {
290
- const length = Number(reader.readVarInt());
291
- const bytes = reader.readBytes(length);
292
- unknown.push({
293
- id: `0x${paramType.toString(16)}`,
294
- length,
295
- raw_hex: bytesToHex(bytes)
296
- });
392
+ let extensionData = new Uint8Array(0);
393
+ if (extensionsPresent) {
394
+ const extLen = Number(r.readVarInt());
395
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
396
+ }
397
+ const payloadLength = Number(r.readVarInt());
398
+ let payload;
399
+ let status;
400
+ let payloadByteOffset;
401
+ if (payloadLength > 0) {
402
+ payloadByteOffset = r.offset;
403
+ payload = r.readBytesView(payloadLength);
404
+ } else {
405
+ status = r.readVarInt();
406
+ payloadByteOffset = r.offset;
407
+ payload = new Uint8Array(0);
408
+ }
409
+ const obj = {
410
+ type: "object",
411
+ byteOffset,
412
+ payloadByteOffset,
413
+ serializationFlags: flags,
414
+ groupId,
415
+ subgroupId,
416
+ objectId,
417
+ publisherPriority: prevPriority,
418
+ payloadLength,
419
+ extensionData,
420
+ payload
421
+ };
422
+ if (status !== void 0) obj.status = status;
423
+ objects.push(obj);
424
+ prevGroupId = groupId;
425
+ prevSubgroupId = subgroupId;
426
+ prevObjectId = objectId;
427
+ first = false;
297
428
  }
429
+ return {
430
+ ok: true,
431
+ value: { type: "fetch", requestId, objects },
432
+ bytesRead: r.offset
433
+ };
434
+ } catch (e) {
435
+ if (e instanceof DecodeError) return { ok: false, error: e };
436
+ throw e;
298
437
  }
299
- if (unknown.length > 0) {
300
- result.unknown = unknown;
301
- }
302
- return result;
303
- }
304
- function encodeClientSetupPayload(msg, w) {
305
- encodeSetupParams(msg.parameters, w);
306
- }
307
- function encodeServerSetupPayload(msg, w) {
308
- encodeSetupParams(msg.parameters, w);
309
- }
310
- function encodeSubscribePayload(msg, w) {
311
- w.writeVarInt(msg.request_id);
312
- w.writeTuple(msg.track_namespace);
313
- w.writeString(msg.track_name);
314
- encodeParams(msg.parameters, w);
315
- }
316
- function encodeSubscribeOkPayload(msg, w) {
317
- w.writeVarInt(msg.request_id);
318
- w.writeVarInt(msg.track_alias);
319
- encodeParams(msg.parameters, w);
320
- }
321
- function encodeSubscribeUpdatePayload(msg, w) {
322
- w.writeVarInt(msg.request_id);
323
- w.writeVarInt(msg.subscription_request_id);
324
- encodeParams(msg.parameters, w);
325
438
  }
326
- function encodeUnsubscribePayload(msg, w) {
327
- w.writeVarInt(msg.request_id);
439
+ function decodeDataStream(streamType, bytes) {
440
+ switch (streamType) {
441
+ case "subgroup":
442
+ return decodeSubgroupStream(bytes);
443
+ case "datagram":
444
+ return decodeDatagram(bytes);
445
+ case "fetch":
446
+ return decodeFetchStream(bytes);
447
+ default: {
448
+ const _exhaustive = streamType;
449
+ throw new Error(`Unknown stream type: ${_exhaustive}`);
450
+ }
451
+ }
328
452
  }
329
- function encodePublishPayload(msg, w) {
330
- w.writeVarInt(msg.request_id);
331
- w.writeTuple(msg.track_namespace);
453
+ function createSubgroupStreamDecoder() {
454
+ let buffer = new Uint8Array(0);
455
+ let offset = 0;
456
+ let headerEmitted = false;
457
+ let prevObjectId = -1n;
458
+ let firstObject = true;
459
+ let _subgroupIsFirstObjId = false;
460
+ let _extensionsPresent = false;
461
+ return new TransformStream({
462
+ transform(chunk, controller) {
463
+ if (offset > 0) {
464
+ buffer = buffer.subarray(offset);
465
+ offset = 0;
466
+ }
467
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
468
+ newBuffer.set(buffer, 0);
469
+ newBuffer.set(chunk, buffer.length);
470
+ buffer = newBuffer;
471
+ if (!headerEmitted) {
472
+ try {
473
+ const r = new BufferReader(buffer.subarray(offset));
474
+ const streamType = Number(r.readVarInt());
475
+ if (!(streamType >= 16 && streamType <= 23 || streamType >= 48 && streamType <= 55)) {
476
+ controller.error(
477
+ new DecodeError(
478
+ "CONSTRAINT_VIOLATION",
479
+ `Expected subgroup stream type, got 0x${streamType.toString(16)}`,
480
+ 0
481
+ )
482
+ );
483
+ return;
484
+ }
485
+ _extensionsPresent = (streamType & 1) !== 0;
486
+ const hasSubgroupField = (streamType & 4) !== 0;
487
+ _subgroupIsFirstObjId = false;
488
+ const hasPriority = streamType < 48;
489
+ const trackAlias = r.readVarInt();
490
+ const groupId = r.readVarInt();
491
+ let subgroupId = 0n;
492
+ if (hasSubgroupField) {
493
+ subgroupId = r.readVarInt();
494
+ }
495
+ let publisherPriority = 128;
496
+ if (hasPriority) {
497
+ publisherPriority = r.readUint8();
498
+ }
499
+ controller.enqueue({
500
+ type: "subgroup_header",
501
+ trackAlias,
502
+ groupId,
503
+ subgroupId,
504
+ publisherPriority
505
+ });
506
+ headerEmitted = true;
507
+ offset += r.offset;
508
+ } catch (e) {
509
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
510
+ return;
511
+ }
512
+ controller.error(e);
513
+ return;
514
+ }
515
+ }
516
+ while (offset < buffer.length) {
517
+ try {
518
+ const r = new BufferReader(buffer.subarray(offset));
519
+ const byteOffset = r.offset;
520
+ const delta = r.readVarInt();
521
+ let objectId;
522
+ if (firstObject) {
523
+ objectId = delta;
524
+ firstObject = false;
525
+ } else {
526
+ objectId = prevObjectId + 1n + delta;
527
+ }
528
+ let extensionData = new Uint8Array(0);
529
+ if (_extensionsPresent) {
530
+ const extLen = Number(r.readVarInt());
531
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
532
+ }
533
+ const payloadLength = Number(r.readVarInt());
534
+ const payloadByteOffset = r.offset;
535
+ const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
536
+ controller.enqueue({
537
+ type: "object",
538
+ byteOffset,
539
+ payloadByteOffset,
540
+ objectId,
541
+ payloadLength,
542
+ extensionData,
543
+ payload
544
+ });
545
+ offset += r.offset;
546
+ prevObjectId = objectId;
547
+ } catch (e) {
548
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
549
+ break;
550
+ }
551
+ controller.error(e);
552
+ return;
553
+ }
554
+ }
555
+ },
556
+ flush(controller) {
557
+ if (offset < buffer.length) {
558
+ controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
559
+ }
560
+ }
561
+ });
562
+ }
563
+ function createFetchStreamDecoder() {
564
+ let buffer = new Uint8Array(0);
565
+ let offset = 0;
566
+ let headerEmitted = false;
567
+ return new TransformStream({
568
+ transform(chunk, controller) {
569
+ if (offset > 0) {
570
+ buffer = buffer.subarray(offset);
571
+ offset = 0;
572
+ }
573
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
574
+ newBuffer.set(buffer, 0);
575
+ newBuffer.set(chunk, buffer.length);
576
+ buffer = newBuffer;
577
+ if (!headerEmitted) {
578
+ try {
579
+ const r = new BufferReader(buffer.subarray(offset));
580
+ const streamType = r.readVarInt();
581
+ if (streamType !== FETCH_STREAM_TYPE) {
582
+ controller.error(
583
+ new DecodeError(
584
+ "CONSTRAINT_VIOLATION",
585
+ `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
586
+ 0
587
+ )
588
+ );
589
+ return;
590
+ }
591
+ const requestId = r.readVarInt();
592
+ controller.enqueue({ type: "fetch_header", requestId });
593
+ headerEmitted = true;
594
+ offset += r.offset;
595
+ } catch (e) {
596
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
597
+ return;
598
+ }
599
+ controller.error(e);
600
+ return;
601
+ }
602
+ }
603
+ while (offset < buffer.length) {
604
+ try {
605
+ const r = new BufferReader(buffer.subarray(offset));
606
+ const flags = r.readUint8();
607
+ const objectIdPresent = (flags & 4) !== 0;
608
+ const groupIdPresent = (flags & 8) !== 0;
609
+ const priorityPresent = (flags & 16) !== 0;
610
+ const extensionsPresent = (flags & 32) !== 0;
611
+ const subgroupEncoding = flags & 3;
612
+ if (groupIdPresent) r.readVarInt();
613
+ if (subgroupEncoding === 3) r.readVarInt();
614
+ let objectId = 0n;
615
+ if (objectIdPresent) objectId = r.readVarInt();
616
+ if (priorityPresent) r.readUint8();
617
+ let extensionData = new Uint8Array(0);
618
+ if (extensionsPresent) {
619
+ const extLen = Number(r.readVarInt());
620
+ extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
621
+ }
622
+ const payloadLength = Number(r.readVarInt());
623
+ const payloadByteOffset = r.offset;
624
+ const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
625
+ controller.enqueue({
626
+ type: "object",
627
+ objectId,
628
+ payloadLength,
629
+ extensionData,
630
+ payload,
631
+ byteOffset: 0,
632
+ payloadByteOffset
633
+ });
634
+ offset += r.offset;
635
+ } catch (e) {
636
+ if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
637
+ break;
638
+ }
639
+ controller.error(e);
640
+ return;
641
+ }
642
+ }
643
+ },
644
+ flush(controller) {
645
+ if (offset < buffer.length) {
646
+ controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
647
+ }
648
+ }
649
+ });
650
+ }
651
+ function createDataStreamDecoder() {
652
+ let buffer = new Uint8Array(0);
653
+ let offset = 0;
654
+ let inner = null;
655
+ const _innerWriter = null;
656
+ const _innerReader = null;
657
+ return new TransformStream({
658
+ transform(chunk, controller) {
659
+ if (offset > 0) {
660
+ buffer = buffer.subarray(offset);
661
+ offset = 0;
662
+ }
663
+ const newBuffer = new Uint8Array(buffer.length + chunk.length);
664
+ newBuffer.set(buffer, 0);
665
+ newBuffer.set(chunk, buffer.length);
666
+ buffer = newBuffer;
667
+ if (inner === null) {
668
+ if (offset >= buffer.length) return;
669
+ const firstByte = buffer[offset];
670
+ if (firstByte >= 16 && firstByte <= 23 || firstByte >= 48 && firstByte <= 55) {
671
+ const decoder = createSubgroupStreamDecoder();
672
+ inner = decoder;
673
+ } else if (firstByte === 5) {
674
+ const decoder = createFetchStreamDecoder();
675
+ inner = decoder;
676
+ } else {
677
+ controller.error(
678
+ new DecodeError(
679
+ "CONSTRAINT_VIOLATION",
680
+ `Unknown data stream type: 0x${firstByte.toString(16)}`,
681
+ 0
682
+ )
683
+ );
684
+ return;
685
+ }
686
+ }
687
+ },
688
+ flush(controller) {
689
+ if (offset >= buffer.length) return;
690
+ const view = buffer.subarray(offset);
691
+ const firstByte = view[0];
692
+ let result;
693
+ if (firstByte >= 16 && firstByte <= 23 || firstByte >= 48 && firstByte <= 55) {
694
+ result = decodeSubgroupStream(view);
695
+ } else if (firstByte === 5) {
696
+ result = decodeFetchStream(view);
697
+ } else {
698
+ controller.error(
699
+ new DecodeError(
700
+ "CONSTRAINT_VIOLATION",
701
+ `Unknown data stream type: 0x${firstByte.toString(16)}`,
702
+ 0
703
+ )
704
+ );
705
+ return;
706
+ }
707
+ if (!result.ok) {
708
+ controller.error(result.error);
709
+ return;
710
+ }
711
+ const stream = result.value;
712
+ if (stream.type === "subgroup") {
713
+ controller.enqueue({
714
+ type: "subgroup_header",
715
+ trackAlias: stream.trackAlias,
716
+ groupId: stream.groupId,
717
+ subgroupId: stream.subgroupId,
718
+ publisherPriority: stream.publisherPriority
719
+ });
720
+ for (const obj of stream.objects) {
721
+ controller.enqueue(obj);
722
+ }
723
+ } else if (stream.type === "fetch") {
724
+ controller.enqueue({
725
+ type: "fetch_header",
726
+ requestId: stream.requestId
727
+ });
728
+ for (const obj of stream.objects) {
729
+ controller.enqueue(obj);
730
+ }
731
+ }
732
+ }
733
+ });
734
+ }
735
+
736
+ // src/drafts/draft15/codec.ts
737
+ var textEncoder = /* @__PURE__ */ new TextEncoder();
738
+ var textDecoder = /* @__PURE__ */ new TextDecoder();
739
+ function encodeSetupParams(params, writer) {
740
+ let count = 0;
741
+ if (params.path !== void 0) count++;
742
+ if (params.max_request_id !== void 0) count++;
743
+ if (params.authorization_token !== void 0) count++;
744
+ if (params.max_auth_token_cache_size !== void 0) count++;
745
+ if (params.authority !== void 0) count++;
746
+ if (params.moqt_implementation !== void 0) count++;
747
+ if (params.unknown) count += params.unknown.length;
748
+ writer.writeVarInt(count);
749
+ if (params.path !== void 0) {
750
+ writer.writeVarInt(SETUP_PARAM_PATH);
751
+ const encoded = textEncoder.encode(params.path);
752
+ writer.writeVarInt(encoded.byteLength);
753
+ writer.writeBytes(encoded);
754
+ }
755
+ if (params.max_request_id !== void 0) {
756
+ writer.writeVarInt(SETUP_PARAM_MAX_REQUEST_ID);
757
+ writer.writeVarInt(params.max_request_id);
758
+ }
759
+ if (params.authorization_token !== void 0) {
760
+ writer.writeVarInt(SETUP_PARAM_AUTHORIZATION_TOKEN);
761
+ const tmpW = new BufferWriter(64);
762
+ encodeAuthorizationToken(params.authorization_token, tmpW);
763
+ const raw = tmpW.finish();
764
+ writer.writeVarInt(raw.byteLength);
765
+ writer.writeBytes(raw);
766
+ }
767
+ if (params.max_auth_token_cache_size !== void 0) {
768
+ writer.writeVarInt(SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE);
769
+ writer.writeVarInt(params.max_auth_token_cache_size);
770
+ }
771
+ if (params.authority !== void 0) {
772
+ writer.writeVarInt(SETUP_PARAM_AUTHORITY);
773
+ const encoded = textEncoder.encode(params.authority);
774
+ writer.writeVarInt(encoded.byteLength);
775
+ writer.writeBytes(encoded);
776
+ }
777
+ if (params.moqt_implementation !== void 0) {
778
+ writer.writeVarInt(SETUP_PARAM_MOQT_IMPLEMENTATION);
779
+ const encoded = textEncoder.encode(params.moqt_implementation);
780
+ writer.writeVarInt(encoded.byteLength);
781
+ writer.writeBytes(encoded);
782
+ }
783
+ if (params.unknown) {
784
+ for (const u of params.unknown) {
785
+ const id = BigInt(u.id);
786
+ writer.writeVarInt(id);
787
+ if (id % 2n === 0n) {
788
+ const raw = hexToBytes(u.raw_hex);
789
+ const tmpReader = new BufferReader(raw);
790
+ const value = tmpReader.readVarInt();
791
+ writer.writeVarInt(value);
792
+ } else {
793
+ const raw = hexToBytes(u.raw_hex);
794
+ writer.writeVarInt(raw.byteLength);
795
+ writer.writeBytes(raw);
796
+ }
797
+ }
798
+ }
799
+ }
800
+ function decodeSetupParams(reader) {
801
+ const count = Number(reader.readVarInt());
802
+ const result = {};
803
+ const unknown = [];
804
+ for (let i = 0; i < count; i++) {
805
+ const paramType = reader.readVarInt();
806
+ if (paramType % 2n === 0n) {
807
+ const value = reader.readVarInt();
808
+ if (paramType === SETUP_PARAM_MAX_REQUEST_ID) {
809
+ result.max_request_id = value;
810
+ } else if (paramType === SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE) {
811
+ result.max_auth_token_cache_size = value;
812
+ } else {
813
+ const tmpWriter = new BufferWriter(16);
814
+ tmpWriter.writeVarInt(value);
815
+ const raw = tmpWriter.finish();
816
+ unknown.push({
817
+ id: `0x${paramType.toString(16)}`,
818
+ length: raw.byteLength,
819
+ raw_hex: bytesToHex(raw)
820
+ });
821
+ }
822
+ } else {
823
+ const length = Number(reader.readVarInt());
824
+ const bytes = reader.readBytes(length);
825
+ if (paramType === SETUP_PARAM_PATH) {
826
+ result.path = textDecoder.decode(bytes);
827
+ } else if (paramType === SETUP_PARAM_AUTHORIZATION_TOKEN) {
828
+ result.authorization_token = decodeAuthorizationToken(new BufferReader(bytes));
829
+ } else if (paramType === SETUP_PARAM_AUTHORITY) {
830
+ result.authority = textDecoder.decode(bytes);
831
+ } else if (paramType === SETUP_PARAM_MOQT_IMPLEMENTATION) {
832
+ result.moqt_implementation = textDecoder.decode(bytes);
833
+ } else {
834
+ unknown.push({
835
+ id: `0x${paramType.toString(16)}`,
836
+ length,
837
+ raw_hex: bytesToHex(bytes)
838
+ });
839
+ }
840
+ }
841
+ }
842
+ if (unknown.length > 0) {
843
+ result.unknown = unknown;
844
+ }
845
+ return result;
846
+ }
847
+ function encodeAuthorizationToken(token, w) {
848
+ w.writeVarInt(token.alias_type);
849
+ const aliasType = Number(token.alias_type);
850
+ if (aliasType === 0 || aliasType === 1) {
851
+ w.writeVarInt(token.token_alias);
852
+ }
853
+ if (aliasType === 1 || aliasType === 3) {
854
+ w.writeVarInt(token.token_type);
855
+ const tokenBytes = hexToBytes(token.token_value_hex);
856
+ w.writeBytes(tokenBytes);
857
+ }
858
+ }
859
+ function decodeAuthorizationToken(r) {
860
+ const alias_type = r.readVarInt();
861
+ const aliasType = Number(alias_type);
862
+ const result = { alias_type };
863
+ if (aliasType === 0 || aliasType === 1) {
864
+ result.token_alias = r.readVarInt();
865
+ }
866
+ if (aliasType === 1 || aliasType === 3) {
867
+ result.token_type = r.readVarInt();
868
+ const tokenBytes = r.readBytesView(r.remaining);
869
+ result.token_value_hex = bytesToHex(tokenBytes);
870
+ }
871
+ return result;
872
+ }
873
+ var PARAM_DELIVERY_TIMEOUT = 0x02n;
874
+ var PARAM_AUTHORIZATION_TOKEN = 0x03n;
875
+ var PARAM_MAX_CACHE_DURATION = 0x04n;
876
+ var PARAM_EXPIRES = 0x08n;
877
+ var PARAM_LARGEST_OBJECT = 0x09n;
878
+ var PARAM_PUBLISHER_PRIORITY = 0x0en;
879
+ var PARAM_FORWARD = 0x10n;
880
+ var PARAM_SUBSCRIBER_PRIORITY = 0x20n;
881
+ var PARAM_SUBSCRIPTION_FILTER = 0x21n;
882
+ var PARAM_GROUP_ORDER = 0x22n;
883
+ var PARAM_DYNAMIC_GROUPS = 0x30n;
884
+ var PARAM_NEW_GROUP_REQUEST = 0x32n;
885
+ function encodeParams(params, writer) {
886
+ let count = params.unknown ? params.unknown.length : 0;
887
+ if (params.delivery_timeout !== void 0) count++;
888
+ if (params.authorization_token !== void 0) count++;
889
+ if (params.max_cache_duration !== void 0) count++;
890
+ if (params.expires !== void 0) count++;
891
+ if (params.largest_object !== void 0) count++;
892
+ if (params.publisher_priority !== void 0) count++;
893
+ if (params.forward !== void 0) count++;
894
+ if (params.subscriber_priority !== void 0) count++;
895
+ if (params.subscription_filter !== void 0) count++;
896
+ if (params.group_order !== void 0) count++;
897
+ if (params.dynamic_groups !== void 0) count++;
898
+ if (params.new_group_request !== void 0) count++;
899
+ writer.writeVarInt(count);
900
+ if (params.delivery_timeout !== void 0) {
901
+ writer.writeVarInt(PARAM_DELIVERY_TIMEOUT);
902
+ writer.writeVarInt(params.delivery_timeout);
903
+ }
904
+ if (params.authorization_token !== void 0) {
905
+ writer.writeVarInt(PARAM_AUTHORIZATION_TOKEN);
906
+ const tmpW = new BufferWriter(64);
907
+ encodeAuthorizationToken(params.authorization_token, tmpW);
908
+ const raw = tmpW.finish();
909
+ writer.writeVarInt(raw.byteLength);
910
+ writer.writeBytes(raw);
911
+ }
912
+ if (params.max_cache_duration !== void 0) {
913
+ writer.writeVarInt(PARAM_MAX_CACHE_DURATION);
914
+ writer.writeVarInt(params.max_cache_duration);
915
+ }
916
+ if (params.expires !== void 0) {
917
+ writer.writeVarInt(PARAM_EXPIRES);
918
+ writer.writeVarInt(params.expires);
919
+ }
920
+ if (params.largest_object !== void 0) {
921
+ writer.writeVarInt(PARAM_LARGEST_OBJECT);
922
+ const tmpW = new BufferWriter(16);
923
+ tmpW.writeVarInt(params.largest_object.group);
924
+ tmpW.writeVarInt(params.largest_object.object);
925
+ const raw = tmpW.finish();
926
+ writer.writeVarInt(raw.byteLength);
927
+ writer.writeBytes(raw);
928
+ }
929
+ if (params.publisher_priority !== void 0) {
930
+ writer.writeVarInt(PARAM_PUBLISHER_PRIORITY);
931
+ writer.writeVarInt(params.publisher_priority);
932
+ }
933
+ if (params.forward !== void 0) {
934
+ writer.writeVarInt(PARAM_FORWARD);
935
+ writer.writeVarInt(params.forward);
936
+ }
937
+ if (params.subscriber_priority !== void 0) {
938
+ writer.writeVarInt(PARAM_SUBSCRIBER_PRIORITY);
939
+ writer.writeVarInt(params.subscriber_priority);
940
+ }
941
+ if (params.subscription_filter !== void 0) {
942
+ writer.writeVarInt(PARAM_SUBSCRIPTION_FILTER);
943
+ const tmpW = new BufferWriter(32);
944
+ const f = params.subscription_filter;
945
+ tmpW.writeVarInt(f.filter_type);
946
+ if (f.filter_type === 3n || f.filter_type === 4n) {
947
+ tmpW.writeVarInt(f.start_group);
948
+ tmpW.writeVarInt(f.start_object);
949
+ }
950
+ if (f.filter_type === 4n) {
951
+ tmpW.writeVarInt(f.end_group);
952
+ }
953
+ const raw = tmpW.finish();
954
+ writer.writeVarInt(raw.byteLength);
955
+ writer.writeBytes(raw);
956
+ }
957
+ if (params.group_order !== void 0) {
958
+ writer.writeVarInt(PARAM_GROUP_ORDER);
959
+ writer.writeVarInt(params.group_order);
960
+ }
961
+ if (params.dynamic_groups !== void 0) {
962
+ writer.writeVarInt(PARAM_DYNAMIC_GROUPS);
963
+ writer.writeVarInt(params.dynamic_groups);
964
+ }
965
+ if (params.new_group_request !== void 0) {
966
+ writer.writeVarInt(PARAM_NEW_GROUP_REQUEST);
967
+ writer.writeVarInt(params.new_group_request);
968
+ }
969
+ if (params.unknown) {
970
+ for (const u of params.unknown) {
971
+ const id = BigInt(u.id);
972
+ writer.writeVarInt(id);
973
+ if (id % 2n === 0n) {
974
+ const raw = hexToBytes(u.raw_hex);
975
+ const tmpReader = new BufferReader(raw);
976
+ const value = tmpReader.readVarInt();
977
+ writer.writeVarInt(value);
978
+ } else {
979
+ const raw = hexToBytes(u.raw_hex);
980
+ writer.writeVarInt(raw.byteLength);
981
+ writer.writeBytes(raw);
982
+ }
983
+ }
984
+ }
985
+ }
986
+ function decodeParams(reader) {
987
+ const count = Number(reader.readVarInt());
988
+ const result = {};
989
+ const unknown = [];
990
+ for (let i = 0; i < count; i++) {
991
+ const paramType = reader.readVarInt();
992
+ if (paramType === PARAM_DELIVERY_TIMEOUT) {
993
+ result.delivery_timeout = reader.readVarInt();
994
+ } else if (paramType === PARAM_AUTHORIZATION_TOKEN) {
995
+ const length = Number(reader.readVarInt());
996
+ const tokenBytes = reader.readBytes(length);
997
+ result.authorization_token = decodeAuthorizationToken(new BufferReader(tokenBytes));
998
+ } else if (paramType === PARAM_MAX_CACHE_DURATION) {
999
+ result.max_cache_duration = reader.readVarInt();
1000
+ } else if (paramType === PARAM_EXPIRES) {
1001
+ result.expires = reader.readVarInt();
1002
+ } else if (paramType === PARAM_PUBLISHER_PRIORITY) {
1003
+ result.publisher_priority = reader.readVarInt();
1004
+ } else if (paramType === PARAM_FORWARD) {
1005
+ result.forward = reader.readVarInt();
1006
+ } else if (paramType === PARAM_SUBSCRIBER_PRIORITY) {
1007
+ result.subscriber_priority = reader.readVarInt();
1008
+ } else if (paramType === PARAM_GROUP_ORDER) {
1009
+ result.group_order = reader.readVarInt();
1010
+ } else if (paramType === PARAM_DYNAMIC_GROUPS) {
1011
+ result.dynamic_groups = reader.readVarInt();
1012
+ } else if (paramType === PARAM_NEW_GROUP_REQUEST) {
1013
+ result.new_group_request = reader.readVarInt();
1014
+ } else if (paramType === PARAM_LARGEST_OBJECT) {
1015
+ const length = Number(reader.readVarInt());
1016
+ const startOff = reader.offset;
1017
+ const group = reader.readVarInt();
1018
+ const object = reader.readVarInt();
1019
+ const consumed = reader.offset - startOff;
1020
+ if (consumed < length) reader.readBytes(length - consumed);
1021
+ result.largest_object = { group, object };
1022
+ } else if (paramType === PARAM_SUBSCRIPTION_FILTER) {
1023
+ const length = Number(reader.readVarInt());
1024
+ const startOff = reader.offset;
1025
+ const filter_type = reader.readVarInt();
1026
+ const filter = { filter_type };
1027
+ if (filter_type === 3n || filter_type === 4n) {
1028
+ filter.start_group = reader.readVarInt();
1029
+ filter.start_object = reader.readVarInt();
1030
+ }
1031
+ if (filter_type === 4n) {
1032
+ filter.end_group = reader.readVarInt();
1033
+ }
1034
+ const consumed = reader.offset - startOff;
1035
+ if (consumed < length) reader.readBytes(length - consumed);
1036
+ result.subscription_filter = filter;
1037
+ } else if (paramType % 2n === 0n) {
1038
+ const value = reader.readVarInt();
1039
+ const tmpWriter = new BufferWriter(16);
1040
+ tmpWriter.writeVarInt(value);
1041
+ const raw = tmpWriter.finish();
1042
+ unknown.push({
1043
+ id: `0x${paramType.toString(16)}`,
1044
+ length: raw.byteLength,
1045
+ raw_hex: bytesToHex(raw)
1046
+ });
1047
+ } else {
1048
+ const length = Number(reader.readVarInt());
1049
+ const bytes = reader.readBytes(length);
1050
+ unknown.push({
1051
+ id: `0x${paramType.toString(16)}`,
1052
+ length,
1053
+ raw_hex: bytesToHex(bytes)
1054
+ });
1055
+ }
1056
+ }
1057
+ if (unknown.length > 0) {
1058
+ result.unknown = unknown;
1059
+ }
1060
+ return result;
1061
+ }
1062
+ function encodeClientSetupPayload(msg, w) {
1063
+ encodeSetupParams(msg.parameters, w);
1064
+ }
1065
+ function encodeServerSetupPayload(msg, w) {
1066
+ encodeSetupParams(msg.parameters, w);
1067
+ }
1068
+ function encodeSubscribePayload(msg, w) {
1069
+ w.writeVarInt(msg.request_id);
1070
+ w.writeTuple(msg.track_namespace);
1071
+ w.writeString(msg.track_name);
1072
+ encodeParams(msg.parameters, w);
1073
+ }
1074
+ function encodeSubscribeOkPayload(msg, w) {
1075
+ w.writeVarInt(msg.request_id);
1076
+ w.writeVarInt(msg.track_alias);
1077
+ encodeParams(msg.parameters, w);
1078
+ }
1079
+ function encodeSubscribeUpdatePayload(msg, w) {
1080
+ w.writeVarInt(msg.request_id);
1081
+ w.writeVarInt(msg.subscription_request_id);
1082
+ encodeParams(msg.parameters, w);
1083
+ }
1084
+ function encodeUnsubscribePayload(msg, w) {
1085
+ w.writeVarInt(msg.request_id);
1086
+ }
1087
+ function encodePublishPayload(msg, w) {
1088
+ w.writeVarInt(msg.request_id);
1089
+ w.writeTuple(msg.track_namespace);
332
1090
  w.writeString(msg.track_name);
333
1091
  w.writeVarInt(msg.track_alias);
334
1092
  encodeParams(msg.parameters, w);
@@ -428,7 +1186,13 @@ function decodeSubscribePayload(r) {
428
1186
  const track_namespace = r.readTuple();
429
1187
  const track_name = r.readString();
430
1188
  const parameters = decodeParams(r);
431
- return { type: "subscribe", request_id, track_namespace, track_name, parameters };
1189
+ return {
1190
+ type: "subscribe",
1191
+ request_id,
1192
+ track_namespace,
1193
+ track_name,
1194
+ parameters
1195
+ };
432
1196
  }
433
1197
  function decodeSubscribeOkPayload(r) {
434
1198
  const request_id = r.readVarInt();
@@ -440,7 +1204,12 @@ function decodeSubscribeUpdatePayload(r) {
440
1204
  const request_id = r.readVarInt();
441
1205
  const subscription_request_id = r.readVarInt();
442
1206
  const parameters = decodeParams(r);
443
- return { type: "subscribe_update", request_id, subscription_request_id, parameters };
1207
+ return {
1208
+ type: "subscribe_update",
1209
+ request_id,
1210
+ subscription_request_id,
1211
+ parameters
1212
+ };
444
1213
  }
445
1214
  function decodeUnsubscribePayload(r) {
446
1215
  const request_id = r.readVarInt();
@@ -452,7 +1221,14 @@ function decodePublishPayload(r) {
452
1221
  const track_name = r.readString();
453
1222
  const track_alias = r.readVarInt();
454
1223
  const parameters = decodeParams(r);
455
- return { type: "publish", request_id, track_namespace, track_name, track_alias, parameters };
1224
+ return {
1225
+ type: "publish",
1226
+ request_id,
1227
+ track_namespace,
1228
+ track_name,
1229
+ track_alias,
1230
+ parameters
1231
+ };
456
1232
  }
457
1233
  function decodePublishOkPayload(r) {
458
1234
  const request_id = r.readVarInt();
@@ -464,7 +1240,13 @@ function decodePublishDonePayload(r) {
464
1240
  const status_code = r.readVarInt();
465
1241
  const stream_count = r.readVarInt();
466
1242
  const reason_phrase = r.readString();
467
- return { type: "publish_done", request_id, status_code, stream_count, reason_phrase };
1243
+ return {
1244
+ type: "publish_done",
1245
+ request_id,
1246
+ status_code,
1247
+ stream_count,
1248
+ reason_phrase
1249
+ };
468
1250
  }
469
1251
  function decodePublishNamespacePayload(r) {
470
1252
  const request_id = r.readVarInt();
@@ -480,13 +1262,23 @@ function decodePublishNamespaceCancelPayload(r) {
480
1262
  const track_namespace = r.readTuple();
481
1263
  const error_code = r.readVarInt();
482
1264
  const reason_phrase = r.readString();
483
- return { type: "publish_namespace_cancel", track_namespace, error_code, reason_phrase };
1265
+ return {
1266
+ type: "publish_namespace_cancel",
1267
+ track_namespace,
1268
+ error_code,
1269
+ reason_phrase
1270
+ };
484
1271
  }
485
1272
  function decodeSubscribeNamespacePayload(r) {
486
1273
  const request_id = r.readVarInt();
487
1274
  const namespace_prefix = r.readTuple();
488
1275
  const parameters = decodeParams(r);
489
- return { type: "subscribe_namespace", request_id, namespace_prefix, parameters };
1276
+ return {
1277
+ type: "subscribe_namespace",
1278
+ request_id,
1279
+ namespace_prefix,
1280
+ parameters
1281
+ };
490
1282
  }
491
1283
  function decodeUnsubscribeNamespacePayload(r) {
492
1284
  const request_id = r.readVarInt();
@@ -508,7 +1300,14 @@ function decodeFetchPayload(r) {
508
1300
  const start_object = r.readVarInt();
509
1301
  const end_group = r.readVarInt();
510
1302
  const end_object = r.readVarInt();
511
- standalone = { track_namespace, track_name, start_group, start_object, end_group, end_object };
1303
+ standalone = {
1304
+ track_namespace,
1305
+ track_name,
1306
+ start_group,
1307
+ start_object,
1308
+ end_group,
1309
+ end_object
1310
+ };
512
1311
  } else {
513
1312
  const joining_request_id = r.readVarInt();
514
1313
  const joining_start = r.readVarInt();
@@ -530,7 +1329,14 @@ function decodeFetchOkPayload(r) {
530
1329
  const end_group = r.readVarInt();
531
1330
  const end_object = r.readVarInt();
532
1331
  const parameters = decodeParams(r);
533
- return { type: "fetch_ok", request_id, end_of_track, end_group, end_object, parameters };
1332
+ return {
1333
+ type: "fetch_ok",
1334
+ request_id,
1335
+ end_of_track,
1336
+ end_group,
1337
+ end_object,
1338
+ parameters
1339
+ };
534
1340
  }
535
1341
  function decodeFetchCancelPayload(r) {
536
1342
  const request_id = r.readVarInt();
@@ -541,7 +1347,13 @@ function decodeTrackStatusPayload(r) {
541
1347
  const track_namespace = r.readTuple();
542
1348
  const track_name = r.readString();
543
1349
  const parameters = decodeParams(r);
544
- return { type: "track_status", request_id, track_namespace, track_name, parameters };
1350
+ return {
1351
+ type: "track_status",
1352
+ request_id,
1353
+ track_namespace,
1354
+ track_name,
1355
+ parameters
1356
+ };
545
1357
  }
546
1358
  function decodeRequestOkPayload(r) {
547
1359
  const request_id = r.readVarInt();
@@ -596,425 +1408,117 @@ function encodeMessage(message) {
596
1408
  if (typeId === void 0) {
597
1409
  throw new Error(`Unknown message type: ${message.type}`);
598
1410
  }
599
- const payloadWriter = new BufferWriter();
600
- encodePayload(message, payloadWriter);
601
- const payload = payloadWriter.finish();
602
- if (payload.byteLength > 65535) {
603
- throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
604
- }
605
- const writer = new BufferWriter();
606
- writer.writeVarInt(typeId);
607
- writer.writeUint8(payload.byteLength >> 8 & 255);
608
- writer.writeUint8(payload.byteLength & 255);
609
- writer.writeBytes(payload);
610
- return writer.finish();
611
- }
612
- function encodePayload(msg, w) {
613
- switch (msg.type) {
614
- case "client_setup":
615
- return encodeClientSetupPayload(msg, w);
616
- case "server_setup":
617
- return encodeServerSetupPayload(msg, w);
618
- case "subscribe":
619
- return encodeSubscribePayload(msg, w);
620
- case "subscribe_ok":
621
- return encodeSubscribeOkPayload(msg, w);
622
- case "subscribe_update":
623
- return encodeSubscribeUpdatePayload(msg, w);
624
- case "unsubscribe":
625
- return encodeUnsubscribePayload(msg, w);
626
- case "publish":
627
- return encodePublishPayload(msg, w);
628
- case "publish_ok":
629
- return encodePublishOkPayload(msg, w);
630
- case "publish_done":
631
- return encodePublishDonePayload(msg, w);
632
- case "publish_namespace":
633
- return encodePublishNamespacePayload(msg, w);
634
- case "publish_namespace_done":
635
- return encodePublishNamespaceDonePayload(msg, w);
636
- case "publish_namespace_cancel":
637
- return encodePublishNamespaceCancelPayload(msg, w);
638
- case "subscribe_namespace":
639
- return encodeSubscribeNamespacePayload(msg, w);
640
- case "unsubscribe_namespace":
641
- return encodeUnsubscribeNamespacePayload(msg, w);
642
- case "fetch":
643
- return encodeFetchPayload(msg, w);
644
- case "fetch_ok":
645
- return encodeFetchOkPayload(msg, w);
646
- case "fetch_cancel":
647
- return encodeFetchCancelPayload(msg, w);
648
- case "track_status":
649
- return encodeTrackStatusPayload(msg, w);
650
- case "request_ok":
651
- return encodeRequestOkPayload(msg, w);
652
- case "request_error":
653
- return encodeRequestErrorPayload(msg, w);
654
- case "goaway":
655
- return encodeGoAwayPayload(msg, w);
656
- case "max_request_id":
657
- return encodeMaxRequestIdPayload(msg, w);
658
- case "requests_blocked":
659
- return encodeRequestsBlockedPayload(msg, w);
660
- default: {
661
- const _exhaustive = msg;
662
- throw new Error(`Unhandled message type: ${_exhaustive.type}`);
663
- }
664
- }
665
- }
666
- function decodeMessage(bytes) {
667
- try {
668
- const reader = new BufferReader(bytes);
669
- const typeId = reader.readVarInt();
670
- const lenHi = reader.readUint8();
671
- const lenLo = reader.readUint8();
672
- const payloadLength = lenHi << 8 | lenLo;
673
- const payloadBytes = reader.readBytes(payloadLength);
674
- const payloadReader = new BufferReader(payloadBytes);
675
- const decoder = payloadDecoders.get(typeId);
676
- if (!decoder) {
677
- return {
678
- ok: false,
679
- error: new DecodeError(
680
- "UNKNOWN_MESSAGE_TYPE",
681
- `Unknown message type ID: 0x${typeId.toString(16)}`,
682
- 0
683
- )
684
- };
685
- }
686
- const message = decoder(payloadReader);
687
- return { ok: true, value: message, bytesRead: reader.offset };
688
- } catch (e) {
689
- if (e instanceof DecodeError) {
690
- return { ok: false, error: e };
691
- }
692
- throw e;
693
- }
694
- }
695
- var FETCH_STREAM_TYPE = 0x05n;
696
- function encodeSubgroupStream(stream) {
697
- const w = new BufferWriter();
698
- const streamType = stream.headerType;
699
- w.writeVarInt(BigInt(streamType));
700
- const hasSubgroupField = (streamType & 4) !== 0;
701
- const hasPriority = streamType < 48;
702
- w.writeVarInt(stream.trackAlias);
703
- w.writeVarInt(stream.groupId);
704
- if (hasSubgroupField) {
705
- w.writeVarInt(stream.subgroupId);
706
- }
707
- if (hasPriority) {
708
- w.writeUint8(stream.publisherPriority);
709
- }
710
- let prevObjectId = -1n;
711
- for (const obj of stream.objects) {
712
- const delta = prevObjectId < 0n ? obj.objectId : obj.objectId - prevObjectId - 1n;
713
- w.writeVarInt(delta);
714
- w.writeVarInt(obj.payloadLength);
715
- if (obj.payloadLength === 0) {
716
- w.writeVarInt(obj.status ?? 0n);
717
- } else {
718
- w.writeBytes(obj.payload);
719
- }
720
- prevObjectId = obj.objectId;
721
- }
722
- return w.finish();
723
- }
724
- function encodeDatagram(dg) {
725
- const w = new BufferWriter();
726
- const dgType = dg.datagramType;
727
- w.writeVarInt(BigInt(dgType));
728
- w.writeVarInt(dg.trackAlias);
729
- w.writeVarInt(dg.groupId);
730
- const objectIdAbsent = (dgType & 4) !== 0;
731
- const isStatus = (dgType & 32) !== 0;
732
- if (!objectIdAbsent) {
733
- w.writeVarInt(dg.objectId);
734
- }
735
- w.writeUint8(dg.publisherPriority);
736
- if (isStatus) {
737
- w.writeVarInt(dg.objectStatus ?? 0n);
738
- } else {
739
- w.writeBytes(dg.payload);
740
- }
741
- return w.finish();
742
- }
743
- function encodeFetchStream(stream) {
744
- const w = new BufferWriter();
745
- w.writeVarInt(FETCH_STREAM_TYPE);
746
- w.writeVarInt(stream.requestId);
747
- for (const obj of stream.objects) {
748
- w.writeUint8(obj.serializationFlags);
749
- const flags = obj.serializationFlags;
750
- if (flags & 8) w.writeVarInt(obj.groupId);
751
- const subgroupEncoding = flags & 3;
752
- if (subgroupEncoding === 3) w.writeVarInt(obj.subgroupId);
753
- if (flags & 4) w.writeVarInt(obj.objectId);
754
- if (flags & 16) w.writeUint8(obj.publisherPriority);
755
- w.writeVarInt(obj.payloadLength);
756
- if (obj.payloadLength === 0) {
757
- w.writeVarInt(obj.status ?? 0n);
758
- } else {
759
- w.writeBytes(obj.payload);
760
- }
761
- }
762
- return w.finish();
763
- }
764
- function decodeSubgroupStream(bytes) {
765
- try {
766
- const r = new BufferReader(bytes);
767
- const streamType = Number(r.readVarInt());
768
- if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
769
- return {
770
- ok: false,
771
- error: new DecodeError(
772
- "CONSTRAINT_VIOLATION",
773
- `Expected subgroup stream type 0x10-0x1D or 0x30-0x3D, got 0x${streamType.toString(16)}`,
774
- 0
775
- )
776
- };
777
- }
778
- const hasSubgroupField = (streamType & 4) !== 0;
779
- const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
780
- const hasPriority = streamType < 48;
781
- const trackAlias = r.readVarInt();
782
- const groupId = r.readVarInt();
783
- let subgroupId = 0n;
784
- if (hasSubgroupField) {
785
- subgroupId = r.readVarInt();
786
- }
787
- let publisherPriority = 128;
788
- if (hasPriority) {
789
- publisherPriority = r.readUint8();
790
- }
791
- const objects = [];
792
- let prevObjectId = -1n;
793
- let firstObject = true;
794
- while (r.remaining > 0) {
795
- const delta = r.readVarInt();
796
- let objectId;
797
- if (firstObject) {
798
- objectId = delta;
799
- if (subgroupIsFirstObjId && firstObject) {
800
- subgroupId = objectId;
801
- }
802
- firstObject = false;
803
- } else {
804
- objectId = prevObjectId + 1n + delta;
805
- }
806
- const payloadLength = Number(r.readVarInt());
807
- let payload;
808
- let status;
809
- if (payloadLength === 0) {
810
- status = r.readVarInt();
811
- payload = new Uint8Array(0);
812
- } else {
813
- payload = r.readBytes(payloadLength);
814
- }
815
- const obj = { type: "object", objectId, payloadLength, payload };
816
- if (status !== void 0) obj.status = status;
817
- objects.push(obj);
818
- prevObjectId = objectId;
819
- }
820
- return {
821
- ok: true,
822
- value: {
823
- type: "subgroup",
824
- headerType: streamType,
825
- trackAlias,
826
- groupId,
827
- subgroupId,
828
- publisherPriority,
829
- objects
830
- },
831
- bytesRead: r.offset
832
- };
833
- } catch (e) {
834
- if (e instanceof DecodeError) return { ok: false, error: e };
835
- throw e;
1411
+ const payloadWriter = new BufferWriter();
1412
+ encodePayload(message, payloadWriter);
1413
+ const payload = payloadWriter.finishView();
1414
+ if (payload.byteLength > 65535) {
1415
+ throw new Error(`Payload too large for 16-bit length: ${payload.byteLength}`);
836
1416
  }
1417
+ const writer = new BufferWriter(payload.byteLength + 16);
1418
+ writer.writeVarInt(typeId);
1419
+ writer.writeUint8(payload.byteLength >> 8 & 255);
1420
+ writer.writeUint8(payload.byteLength & 255);
1421
+ writer.writeBytes(payload);
1422
+ return writer.finish();
837
1423
  }
838
- function decodeDatagram(bytes) {
839
- try {
840
- const r = new BufferReader(bytes);
841
- const dgType = Number(r.readVarInt());
842
- const objectIdAbsent = (dgType & 4) !== 0;
843
- const endOfGroup = (dgType & 2) !== 0;
844
- const isStatus = (dgType & 32) !== 0;
845
- const trackAlias = r.readVarInt();
846
- const groupId = r.readVarInt();
847
- let objectId = 0n;
848
- if (!objectIdAbsent) {
849
- objectId = r.readVarInt();
850
- }
851
- const publisherPriority = r.readUint8();
852
- let objectStatus;
853
- let payload;
854
- if (isStatus) {
855
- objectStatus = r.readVarInt();
856
- payload = new Uint8Array(0);
857
- } else {
858
- payload = r.readBytes(r.remaining);
1424
+ function encodePayload(msg, w) {
1425
+ switch (msg.type) {
1426
+ case "client_setup":
1427
+ return encodeClientSetupPayload(msg, w);
1428
+ case "server_setup":
1429
+ return encodeServerSetupPayload(msg, w);
1430
+ case "subscribe":
1431
+ return encodeSubscribePayload(msg, w);
1432
+ case "subscribe_ok":
1433
+ return encodeSubscribeOkPayload(msg, w);
1434
+ case "subscribe_update":
1435
+ return encodeSubscribeUpdatePayload(msg, w);
1436
+ case "unsubscribe":
1437
+ return encodeUnsubscribePayload(msg, w);
1438
+ case "publish":
1439
+ return encodePublishPayload(msg, w);
1440
+ case "publish_ok":
1441
+ return encodePublishOkPayload(msg, w);
1442
+ case "publish_done":
1443
+ return encodePublishDonePayload(msg, w);
1444
+ case "publish_namespace":
1445
+ return encodePublishNamespacePayload(msg, w);
1446
+ case "publish_namespace_done":
1447
+ return encodePublishNamespaceDonePayload(msg, w);
1448
+ case "publish_namespace_cancel":
1449
+ return encodePublishNamespaceCancelPayload(msg, w);
1450
+ case "subscribe_namespace":
1451
+ return encodeSubscribeNamespacePayload(msg, w);
1452
+ case "unsubscribe_namespace":
1453
+ return encodeUnsubscribeNamespacePayload(msg, w);
1454
+ case "fetch":
1455
+ return encodeFetchPayload(msg, w);
1456
+ case "fetch_ok":
1457
+ return encodeFetchOkPayload(msg, w);
1458
+ case "fetch_cancel":
1459
+ return encodeFetchCancelPayload(msg, w);
1460
+ case "track_status":
1461
+ return encodeTrackStatusPayload(msg, w);
1462
+ case "request_ok":
1463
+ return encodeRequestOkPayload(msg, w);
1464
+ case "request_error":
1465
+ return encodeRequestErrorPayload(msg, w);
1466
+ case "goaway":
1467
+ return encodeGoAwayPayload(msg, w);
1468
+ case "max_request_id":
1469
+ return encodeMaxRequestIdPayload(msg, w);
1470
+ case "requests_blocked":
1471
+ return encodeRequestsBlockedPayload(msg, w);
1472
+ default: {
1473
+ const _exhaustive = msg;
1474
+ throw new Error(`Unhandled message type: ${_exhaustive.type}`);
859
1475
  }
860
- const payloadLength = payload.byteLength;
861
- const result = {
862
- type: "datagram",
863
- datagramType: dgType,
864
- trackAlias,
865
- groupId,
866
- objectId,
867
- publisherPriority,
868
- payloadLength,
869
- payload
870
- };
871
- if (endOfGroup) result.endOfGroup = true;
872
- if (objectStatus !== void 0)
873
- result.objectStatus = objectStatus;
874
- return { ok: true, value: result, bytesRead: r.offset };
875
- } catch (e) {
876
- if (e instanceof DecodeError) return { ok: false, error: e };
877
- throw e;
878
1476
  }
879
1477
  }
880
- function decodeFetchStream(bytes) {
1478
+ function decodeMessage(bytes) {
881
1479
  try {
882
- const r = new BufferReader(bytes);
883
- const streamType = r.readVarInt();
884
- if (streamType !== FETCH_STREAM_TYPE) {
1480
+ const reader = new BufferReader(bytes);
1481
+ const typeId = reader.readVarInt();
1482
+ const lenHi = reader.readUint8();
1483
+ const lenLo = reader.readUint8();
1484
+ const payloadLength = lenHi << 8 | lenLo;
1485
+ const payloadBytes = reader.readBytes(payloadLength);
1486
+ const payloadReader = new BufferReader(payloadBytes);
1487
+ const decoder = payloadDecoders.get(typeId);
1488
+ if (!decoder) {
885
1489
  return {
886
- ok: false,
887
- error: new DecodeError(
888
- "CONSTRAINT_VIOLATION",
889
- `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
890
- 0
891
- )
892
- };
893
- }
894
- const requestId = r.readVarInt();
895
- const objects = [];
896
- let prevGroupId = 0n;
897
- let prevSubgroupId = 0n;
898
- let prevObjectId = 0n;
899
- let prevPriority = 128;
900
- let first = true;
901
- while (r.remaining > 0) {
902
- const flags = r.readUint8();
903
- const subgroupEncoding = flags & 3;
904
- const objectIdPresent = (flags & 4) !== 0;
905
- const groupIdPresent = (flags & 8) !== 0;
906
- const priorityPresent = (flags & 16) !== 0;
907
- const extensionsPresent = (flags & 32) !== 0;
908
- if (flags & 192) {
909
- return {
910
- ok: false,
911
- error: new DecodeError(
912
- "CONSTRAINT_VIOLATION",
913
- "Reserved bits set in fetch object flags",
914
- r.offset
915
- )
916
- };
917
- }
918
- let groupId = prevGroupId;
919
- if (groupIdPresent) {
920
- groupId = r.readVarInt();
921
- } else if (first) {
922
- return {
923
- ok: false,
924
- error: new DecodeError(
925
- "CONSTRAINT_VIOLATION",
926
- "First fetch object must include groupId",
927
- r.offset
928
- )
929
- };
930
- }
931
- let subgroupId = prevSubgroupId;
932
- if (subgroupEncoding === 3) {
933
- subgroupId = r.readVarInt();
934
- } else if (subgroupEncoding === 0) {
935
- }
936
- let objectId = prevObjectId + 1n;
937
- if (objectIdPresent) {
938
- objectId = r.readVarInt();
939
- } else if (first) {
940
- return {
941
- ok: false,
942
- error: new DecodeError(
943
- "CONSTRAINT_VIOLATION",
944
- "First fetch object must include objectId",
945
- r.offset
946
- )
947
- };
948
- }
949
- if (priorityPresent) {
950
- prevPriority = r.readUint8();
951
- }
952
- if (extensionsPresent) {
953
- const extLen = Number(r.readVarInt());
954
- if (extLen > 0) {
955
- r.readBytes(extLen);
956
- }
957
- }
958
- const payloadLength = Number(r.readVarInt());
959
- let payload;
960
- let status;
961
- if (payloadLength > 0) {
962
- payload = r.readBytes(payloadLength);
963
- } else {
964
- status = r.readVarInt();
965
- payload = new Uint8Array(0);
966
- }
967
- const obj = {
968
- type: "object",
969
- serializationFlags: flags,
970
- groupId,
971
- subgroupId,
972
- objectId,
973
- publisherPriority: prevPriority,
974
- payloadLength,
975
- payload
1490
+ ok: false,
1491
+ error: new DecodeError(
1492
+ "UNKNOWN_MESSAGE_TYPE",
1493
+ `Unknown message type ID: 0x${typeId.toString(16)}`,
1494
+ 0
1495
+ )
976
1496
  };
977
- if (status !== void 0) obj.status = status;
978
- objects.push(obj);
979
- prevGroupId = groupId;
980
- prevSubgroupId = subgroupId;
981
- prevObjectId = objectId;
982
- first = false;
983
1497
  }
984
- return {
985
- ok: true,
986
- value: { type: "fetch", requestId, objects },
987
- bytesRead: r.offset
988
- };
1498
+ const message = decoder(payloadReader);
1499
+ return { ok: true, value: message, bytesRead: reader.offset };
989
1500
  } catch (e) {
990
- if (e instanceof DecodeError) return { ok: false, error: e };
991
- throw e;
992
- }
993
- }
994
- function decodeDataStream(streamType, bytes) {
995
- switch (streamType) {
996
- case "subgroup":
997
- return decodeSubgroupStream(bytes);
998
- case "datagram":
999
- return decodeDatagram(bytes);
1000
- case "fetch":
1001
- return decodeFetchStream(bytes);
1002
- default: {
1003
- const _exhaustive = streamType;
1004
- throw new Error(`Unknown stream type: ${_exhaustive}`);
1501
+ if (e instanceof DecodeError) {
1502
+ return { ok: false, error: e };
1005
1503
  }
1504
+ throw e;
1006
1505
  }
1007
1506
  }
1008
1507
  function createStreamDecoder() {
1009
1508
  let buffer = new Uint8Array(0);
1509
+ let offset = 0;
1010
1510
  return new TransformStream({
1011
1511
  transform(chunk, controller) {
1512
+ if (offset > 0) {
1513
+ buffer = buffer.subarray(offset);
1514
+ offset = 0;
1515
+ }
1012
1516
  const newBuffer = new Uint8Array(buffer.length + chunk.length);
1013
1517
  newBuffer.set(buffer, 0);
1014
1518
  newBuffer.set(chunk, buffer.length);
1015
1519
  buffer = newBuffer;
1016
- while (buffer.length > 0) {
1017
- const result = decodeMessage(buffer);
1520
+ while (offset < buffer.length) {
1521
+ const result = decodeMessage(buffer.subarray(offset));
1018
1522
  if (!result.ok) {
1019
1523
  if (result.error.code === "UNEXPECTED_END") {
1020
1524
  break;
@@ -1023,11 +1527,11 @@ function createStreamDecoder() {
1023
1527
  return;
1024
1528
  }
1025
1529
  controller.enqueue(result.value);
1026
- buffer = buffer.slice(result.bytesRead);
1530
+ offset += result.bytesRead;
1027
1531
  }
1028
1532
  },
1029
1533
  flush(controller) {
1030
- if (buffer.length > 0) {
1534
+ if (offset < buffer.length) {
1031
1535
  controller.error(
1032
1536
  new DecodeError("UNEXPECTED_END", "Stream ended with incomplete message data", 0)
1033
1537
  );
@@ -1035,248 +1539,9 @@ function createStreamDecoder() {
1035
1539
  }
1036
1540
  });
1037
1541
  }
1038
- function createSubgroupStreamDecoder() {
1039
- let buffer = new Uint8Array(0);
1040
- let headerEmitted = false;
1041
- let prevObjectId = -1n;
1042
- let firstObject = true;
1043
- let _subgroupIsFirstObjId = false;
1044
- return new TransformStream({
1045
- transform(chunk, controller) {
1046
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
1047
- newBuffer.set(buffer, 0);
1048
- newBuffer.set(chunk, buffer.length);
1049
- buffer = newBuffer;
1050
- if (!headerEmitted) {
1051
- try {
1052
- const r = new BufferReader(buffer);
1053
- const streamType = Number(r.readVarInt());
1054
- if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
1055
- controller.error(
1056
- new DecodeError(
1057
- "CONSTRAINT_VIOLATION",
1058
- `Expected subgroup stream type, got 0x${streamType.toString(16)}`,
1059
- 0
1060
- )
1061
- );
1062
- return;
1063
- }
1064
- const hasSubgroupField = (streamType & 4) !== 0;
1065
- _subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
1066
- const hasPriority = streamType < 48;
1067
- const trackAlias = r.readVarInt();
1068
- const groupId = r.readVarInt();
1069
- let subgroupId = 0n;
1070
- if (hasSubgroupField) {
1071
- subgroupId = r.readVarInt();
1072
- }
1073
- let publisherPriority = 128;
1074
- if (hasPriority) {
1075
- publisherPriority = r.readUint8();
1076
- }
1077
- controller.enqueue({
1078
- type: "subgroup_header",
1079
- trackAlias,
1080
- groupId,
1081
- subgroupId,
1082
- publisherPriority
1083
- });
1084
- headerEmitted = true;
1085
- buffer = buffer.slice(r.offset);
1086
- } catch (e) {
1087
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1088
- return;
1089
- }
1090
- controller.error(e);
1091
- return;
1092
- }
1093
- }
1094
- while (buffer.length > 0) {
1095
- try {
1096
- const r = new BufferReader(buffer);
1097
- const delta = r.readVarInt();
1098
- let objectId;
1099
- if (firstObject) {
1100
- objectId = delta;
1101
- firstObject = false;
1102
- } else {
1103
- objectId = prevObjectId + 1n + delta;
1104
- }
1105
- const payloadLength = Number(r.readVarInt());
1106
- const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
1107
- controller.enqueue({ type: "object", objectId, payloadLength, payload });
1108
- buffer = buffer.slice(r.offset);
1109
- prevObjectId = objectId;
1110
- } catch (e) {
1111
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1112
- break;
1113
- }
1114
- controller.error(e);
1115
- return;
1116
- }
1117
- }
1118
- },
1119
- flush(controller) {
1120
- if (buffer.length > 0) {
1121
- controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
1122
- }
1123
- }
1124
- });
1125
- }
1126
- function createFetchStreamDecoder() {
1127
- let buffer = new Uint8Array(0);
1128
- let headerEmitted = false;
1129
- return new TransformStream({
1130
- transform(chunk, controller) {
1131
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
1132
- newBuffer.set(buffer, 0);
1133
- newBuffer.set(chunk, buffer.length);
1134
- buffer = newBuffer;
1135
- if (!headerEmitted) {
1136
- try {
1137
- const r = new BufferReader(buffer);
1138
- const streamType = r.readVarInt();
1139
- if (streamType !== FETCH_STREAM_TYPE) {
1140
- controller.error(
1141
- new DecodeError(
1142
- "CONSTRAINT_VIOLATION",
1143
- `Expected fetch stream type 0x05, got 0x${streamType.toString(16)}`,
1144
- 0
1145
- )
1146
- );
1147
- return;
1148
- }
1149
- const requestId = r.readVarInt();
1150
- controller.enqueue({ type: "fetch_header", requestId });
1151
- headerEmitted = true;
1152
- buffer = buffer.slice(r.offset);
1153
- } catch (e) {
1154
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1155
- return;
1156
- }
1157
- controller.error(e);
1158
- return;
1159
- }
1160
- }
1161
- while (buffer.length > 0) {
1162
- try {
1163
- const r = new BufferReader(buffer);
1164
- const flags = r.readUint8();
1165
- const objectIdPresent = (flags & 4) !== 0;
1166
- const groupIdPresent = (flags & 8) !== 0;
1167
- const priorityPresent = (flags & 16) !== 0;
1168
- const extensionsPresent = (flags & 32) !== 0;
1169
- const subgroupEncoding = flags & 3;
1170
- if (groupIdPresent) r.readVarInt();
1171
- if (subgroupEncoding === 3) r.readVarInt();
1172
- let objectId = 0n;
1173
- if (objectIdPresent) objectId = r.readVarInt();
1174
- if (priorityPresent) r.readUint8();
1175
- if (extensionsPresent) {
1176
- const extLen = Number(r.readVarInt());
1177
- if (extLen > 0) r.readBytes(extLen);
1178
- }
1179
- const payloadLength = Number(r.readVarInt());
1180
- const payload = payloadLength > 0 ? r.readBytes(payloadLength) : new Uint8Array(0);
1181
- controller.enqueue({ type: "object", objectId, payloadLength, payload });
1182
- buffer = buffer.slice(r.offset);
1183
- } catch (e) {
1184
- if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
1185
- break;
1186
- }
1187
- controller.error(e);
1188
- return;
1189
- }
1190
- }
1191
- },
1192
- flush(controller) {
1193
- if (buffer.length > 0) {
1194
- controller.error(new DecodeError("UNEXPECTED_END", "Stream ended with incomplete data", 0));
1195
- }
1196
- }
1197
- });
1198
- }
1199
- function createDataStreamDecoder() {
1200
- let buffer = new Uint8Array(0);
1201
- let inner = null;
1202
- const _innerWriter = null;
1203
- const _innerReader = null;
1204
- return new TransformStream({
1205
- transform(chunk, controller) {
1206
- const newBuffer = new Uint8Array(buffer.length + chunk.length);
1207
- newBuffer.set(buffer, 0);
1208
- newBuffer.set(chunk, buffer.length);
1209
- buffer = newBuffer;
1210
- if (inner === null) {
1211
- if (buffer.length === 0) return;
1212
- const firstByte = buffer[0];
1213
- if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
1214
- const decoder = createSubgroupStreamDecoder();
1215
- inner = decoder;
1216
- } else if (firstByte === 5) {
1217
- const decoder = createFetchStreamDecoder();
1218
- inner = decoder;
1219
- } else {
1220
- controller.error(
1221
- new DecodeError(
1222
- "CONSTRAINT_VIOLATION",
1223
- `Unknown data stream type: 0x${firstByte.toString(16)}`,
1224
- 0
1225
- )
1226
- );
1227
- return;
1228
- }
1229
- }
1230
- },
1231
- flush(controller) {
1232
- if (buffer.length === 0) return;
1233
- const firstByte = buffer[0];
1234
- let result;
1235
- if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
1236
- result = decodeSubgroupStream(buffer);
1237
- } else if (firstByte === 5) {
1238
- result = decodeFetchStream(buffer);
1239
- } else {
1240
- controller.error(
1241
- new DecodeError(
1242
- "CONSTRAINT_VIOLATION",
1243
- `Unknown data stream type: 0x${firstByte.toString(16)}`,
1244
- 0
1245
- )
1246
- );
1247
- return;
1248
- }
1249
- if (!result.ok) {
1250
- controller.error(result.error);
1251
- return;
1252
- }
1253
- const stream = result.value;
1254
- if (stream.type === "subgroup") {
1255
- controller.enqueue({
1256
- type: "subgroup_header",
1257
- trackAlias: stream.trackAlias,
1258
- groupId: stream.groupId,
1259
- subgroupId: stream.subgroupId,
1260
- publisherPriority: stream.publisherPriority
1261
- });
1262
- for (const obj of stream.objects) {
1263
- controller.enqueue(obj);
1264
- }
1265
- } else if (stream.type === "fetch") {
1266
- controller.enqueue({
1267
- type: "fetch_header",
1268
- requestId: stream.requestId
1269
- });
1270
- for (const obj of stream.objects) {
1271
- controller.enqueue(obj);
1272
- }
1273
- }
1274
- }
1275
- });
1276
- }
1277
1542
  function createDraft15Codec() {
1278
1543
  return {
1279
- draft: "draft-ietf-moq-transport-15",
1544
+ draft: "15",
1280
1545
  encodeMessage,
1281
1546
  decodeMessage,
1282
1547
  encodeSubgroupStream,
@@ -1324,8 +1589,6 @@ export {
1324
1589
  SETUP_PARAM_MOQT_IMPLEMENTATION,
1325
1590
  MESSAGE_TYPE_MAP,
1326
1591
  MESSAGE_ID_MAP,
1327
- encodeMessage,
1328
- decodeMessage,
1329
1592
  encodeSubgroupStream,
1330
1593
  encodeDatagram,
1331
1594
  encodeFetchStream,
@@ -1333,9 +1596,11 @@ export {
1333
1596
  decodeDatagram,
1334
1597
  decodeFetchStream,
1335
1598
  decodeDataStream,
1336
- createStreamDecoder,
1337
1599
  createSubgroupStreamDecoder,
1338
1600
  createFetchStreamDecoder,
1339
1601
  createDataStreamDecoder,
1602
+ encodeMessage,
1603
+ decodeMessage,
1604
+ createStreamDecoder,
1340
1605
  createDraft15Codec
1341
1606
  };