@moqtap/codec 0.2.3 → 0.4.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 (313) 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-73MWUKSJ.js → chunk-2UTVXWFF.js} +190 -102
  5. package/dist/{chunk-JTVCOMBI.cjs → chunk-3XKO6PCR.cjs} +290 -183
  6. package/dist/{chunk-ACQ4CUJP.cjs → chunk-4BDEU3D4.cjs} +237 -158
  7. package/dist/{chunk-4N4INRE7.cjs → chunk-4HBKHNU2.cjs} +144 -110
  8. package/dist/{chunk-2ZT6CVSE.js → chunk-4IVZZOY3.js} +269 -162
  9. package/dist/{chunk-GLBQDG4L.cjs → chunk-5O764MBD.cjs} +508 -117
  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-UYXTY6ZQ.cjs → chunk-E65QKRSN.cjs} +20 -12
  16. package/dist/{chunk-BISI45MN.cjs → chunk-EAHE3IOG.cjs} +44 -12
  17. package/dist/{chunk-PZBPH2D7.js → chunk-GCBFHZW6.js} +216 -137
  18. package/dist/{chunk-GXEW4COZ.cjs → chunk-H5NSL4MO.cjs} +36 -10
  19. package/dist/chunk-HZHSO7EW.cjs +1212 -0
  20. package/dist/{chunk-KZCYQ7ED.cjs → chunk-IILNSDEQ.cjs} +69 -41
  21. package/dist/{chunk-4XYGE53S.cjs → chunk-J3XCPBW3.cjs} +36 -10
  22. package/dist/{chunk-6AEHWULA.cjs → chunk-JKOEJZ5B.cjs} +28 -8
  23. package/dist/{chunk-RUPCJTC3.cjs → chunk-JL3NEW3O.cjs} +23 -1
  24. package/dist/{chunk-G7GI7LJA.js → chunk-LORZMJJB.js} +36 -10
  25. package/dist/{chunk-DUBCL3WF.cjs → chunk-LV5C6MEC.cjs} +36 -10
  26. package/dist/{chunk-ENURAVHI.cjs → chunk-MYXAD5JC.cjs} +44 -12
  27. package/dist/{chunk-FXZ2MYKJ.js → chunk-MZ7HUCGJ.js} +20 -12
  28. package/dist/{chunk-S74DWJE2.cjs → chunk-OKG2HT25.cjs} +277 -88
  29. package/dist/{chunk-BGWGVINJ.cjs → chunk-PKEOQSSZ.cjs} +144 -110
  30. package/dist/{chunk-2GODRVT5.js → chunk-Q46ZURKX.js} +325 -48
  31. package/dist/{chunk-UR6JKS56.js → chunk-Q7IGWV3P.js} +41 -9
  32. package/dist/{chunk-XSNX2IUJ.js → chunk-RW4UG7CN.js} +121 -87
  33. package/dist/{chunk-DWK5ZQZ4.js → chunk-RZTLQAKF.js} +28 -8
  34. package/dist/{chunk-UNS34PTA.cjs → chunk-S6IPIN66.cjs} +44 -12
  35. package/dist/{chunk-YIG2C3LF.cjs → chunk-SDWRXXOO.cjs} +214 -126
  36. package/dist/{chunk-CEH7ESNC.js → chunk-SHMA4PBY.js} +121 -87
  37. package/dist/{chunk-MC7W6PMI.js → chunk-U3ZVLT5L.js} +483 -135
  38. package/dist/{chunk-VJUUZ4W2.cjs → chunk-UJU63EFY.cjs} +374 -97
  39. package/dist/{chunk-7L43FE6P.js → chunk-VOU7PNHI.js} +23 -1
  40. package/dist/{chunk-E6E3NQYU.js → chunk-WRHGCVYN.js} +44 -12
  41. package/dist/{chunk-FPISPJ5N.cjs → chunk-XNWYLVGU.cjs} +529 -181
  42. package/dist/{chunk-U3IPZYPX.js → chunk-XS77RBY7.js} +228 -39
  43. package/dist/{chunk-JGG7CMSZ.cjs → chunk-XZE5R57R.cjs} +144 -110
  44. package/dist/{chunk-77MNXX3M.js → chunk-Y6KCSM3V.js} +121 -87
  45. package/dist/{chunk-TLYNOOQP.cjs → chunk-YTPZZI2M.cjs} +41 -9
  46. package/dist/{chunk-7DUBLRXC.js → chunk-YWRCSQBA.js} +44 -12
  47. package/dist/{chunk-MRJWLGYH.js → chunk-Z3VKP3PJ.js} +69 -41
  48. package/dist/{chunk-E6P74GDT.js → chunk-Z6U26IRI.js} +464 -73
  49. package/dist/{codec-FvGCxIhr.d.ts → codec-25u4_1HS.d.ts} +4 -4
  50. package/dist/{codec-DRcsBCsb.d.ts → codec-3Ppy_5Gd.d.ts} +4 -4
  51. package/dist/{codec-BdVMRMOI.d.ts → codec-BB0U8MF2.d.cts} +4 -4
  52. package/dist/{codec-B2cH-f5V.d.cts → codec-BHHfBTnV.d.ts} +4 -4
  53. package/dist/{codec-B5K73Bdj.d.ts → codec-BN6jk0Td.d.cts} +4 -4
  54. package/dist/{codec-R8GrCPt2.d.ts → codec-BU0gaSZm.d.ts} +4 -4
  55. package/dist/{codec-Bq-tLtfP.d.ts → codec-C-Yk2RNa.d.ts} +4 -4
  56. package/dist/codec-CFWQY9Lj.d.cts +18 -0
  57. package/dist/{codec-CPlK3Pi5.d.ts → codec-COy4uuPO.d.cts} +4 -4
  58. package/dist/codec-CewFCsEy.d.ts +18 -0
  59. package/dist/{codec-KXHvXZVb.d.cts → codec-Ck7ZwFF1.d.cts} +4 -4
  60. package/dist/{codec-DZhZSIii.d.cts → codec-D2QVSH9D.d.ts} +4 -4
  61. package/dist/{codec-BwFgpeQu.d.ts → codec-DDUBJGn0.d.cts} +4 -4
  62. package/dist/{codec-BFeliJFc.d.ts → codec-DNfml-se.d.ts} +4 -4
  63. package/dist/{codec-C4n1PS09.d.cts → codec-DoOGjjDq.d.cts} +4 -4
  64. package/dist/{codec-Bap882Fh.d.cts → codec-J7ekOSMc.d.ts} +4 -4
  65. package/dist/{codec-SKBeHQk7.d.ts → codec-R9TJCq-E.d.cts} +4 -4
  66. package/dist/{codec-DNUIgLqc.d.cts → codec-ZwV-Njt6.d.ts} +4 -4
  67. package/dist/{codec-HgBgHkFI.d.cts → codec-j819z_hL.d.cts} +4 -4
  68. package/dist/{codec-DY4QH364.d.cts → codec-w8z2j_uo.d.cts} +4 -4
  69. package/dist/{codec-CPvPq0sb.d.cts → codec-wtt6WF1K.d.ts} +4 -4
  70. package/dist/{codec-BUMjz0J4.d.cts → codec-z6_2PSzi.d.cts} +4 -4
  71. package/dist/{draft7-session.cjs → draft07-session.cjs} +2 -2
  72. package/dist/draft07-session.d.cts +8 -0
  73. package/dist/draft07-session.d.ts +8 -0
  74. package/dist/{draft7-session.js → draft07-session.js} +1 -1
  75. package/dist/draft07.cjs +129 -0
  76. package/dist/draft07.d.cts +67 -0
  77. package/dist/draft07.d.ts +67 -0
  78. package/dist/draft07.js +129 -0
  79. package/dist/draft08-session.cjs +6 -0
  80. package/dist/draft08-session.d.cts +8 -0
  81. package/dist/draft08-session.d.ts +8 -0
  82. package/dist/{draft8-session.js → draft08-session.js} +1 -1
  83. package/dist/draft08.cjs +119 -0
  84. package/dist/{draft8.d.cts → draft08.d.cts} +15 -13
  85. package/dist/{draft8.d.ts → draft08.d.ts} +15 -13
  86. package/dist/{draft8.js → draft08.js} +7 -4
  87. package/dist/draft09-session.cjs +6 -0
  88. package/dist/draft09-session.d.cts +8 -0
  89. package/dist/draft09-session.d.ts +8 -0
  90. package/dist/{draft9-session.js → draft09-session.js} +1 -1
  91. package/dist/draft09.cjs +119 -0
  92. package/dist/{draft9.d.cts → draft09.d.cts} +15 -13
  93. package/dist/{draft9.d.ts → draft09.d.ts} +15 -13
  94. package/dist/{draft9.js → draft09.js} +7 -4
  95. package/dist/draft10-session.cjs +2 -2
  96. package/dist/draft10-session.d.cts +6 -6
  97. package/dist/draft10-session.d.ts +6 -6
  98. package/dist/draft10-session.js +1 -1
  99. package/dist/draft10.cjs +8 -5
  100. package/dist/draft10.d.cts +14 -12
  101. package/dist/draft10.d.ts +14 -12
  102. package/dist/draft10.js +16 -13
  103. package/dist/draft11-session.cjs +2 -2
  104. package/dist/draft11-session.d.cts +6 -6
  105. package/dist/draft11-session.d.ts +6 -6
  106. package/dist/draft11-session.js +1 -1
  107. package/dist/draft11.cjs +8 -5
  108. package/dist/draft11.d.cts +14 -12
  109. package/dist/draft11.d.ts +14 -12
  110. package/dist/draft11.js +16 -13
  111. package/dist/draft12-session.cjs +2 -2
  112. package/dist/draft12-session.d.cts +6 -6
  113. package/dist/draft12-session.d.ts +6 -6
  114. package/dist/draft12-session.js +1 -1
  115. package/dist/draft12.cjs +8 -5
  116. package/dist/draft12.d.cts +16 -14
  117. package/dist/draft12.d.ts +16 -14
  118. package/dist/draft12.js +16 -13
  119. package/dist/draft13-session.cjs +2 -2
  120. package/dist/draft13-session.d.cts +6 -6
  121. package/dist/draft13-session.d.ts +6 -6
  122. package/dist/draft13-session.js +1 -1
  123. package/dist/draft13.cjs +8 -5
  124. package/dist/draft13.d.cts +16 -14
  125. package/dist/draft13.d.ts +16 -14
  126. package/dist/draft13.js +16 -13
  127. package/dist/draft14-session.cjs +2 -2
  128. package/dist/draft14-session.d.cts +6 -6
  129. package/dist/draft14-session.d.ts +6 -6
  130. package/dist/draft14-session.js +1 -1
  131. package/dist/draft14.cjs +14 -5
  132. package/dist/draft14.d.cts +14 -12
  133. package/dist/draft14.d.ts +14 -12
  134. package/dist/draft14.js +13 -4
  135. package/dist/draft15-session.cjs +2 -2
  136. package/dist/draft15-session.d.cts +6 -6
  137. package/dist/draft15-session.d.ts +6 -6
  138. package/dist/draft15-session.js +1 -1
  139. package/dist/draft15.cjs +8 -5
  140. package/dist/draft15.d.cts +14 -12
  141. package/dist/draft15.d.ts +14 -12
  142. package/dist/draft15.js +16 -13
  143. package/dist/draft16-session.cjs +2 -2
  144. package/dist/draft16-session.d.cts +6 -6
  145. package/dist/draft16-session.d.ts +6 -6
  146. package/dist/draft16-session.js +1 -1
  147. package/dist/draft16.cjs +8 -5
  148. package/dist/draft16.d.cts +14 -12
  149. package/dist/draft16.d.ts +14 -12
  150. package/dist/draft16.js +16 -13
  151. package/dist/draft17-session.cjs +2 -2
  152. package/dist/draft17-session.d.cts +7 -7
  153. package/dist/draft17-session.d.ts +7 -7
  154. package/dist/draft17-session.js +1 -1
  155. package/dist/draft17.cjs +8 -5
  156. package/dist/draft17.d.cts +11 -9
  157. package/dist/draft17.d.ts +11 -9
  158. package/dist/draft17.js +16 -13
  159. package/dist/index.cjs +52 -74
  160. package/dist/index.d.cts +41 -60
  161. package/dist/index.d.ts +41 -60
  162. package/dist/index.js +40 -62
  163. package/dist/{session-types-CJIFbTPd.d.ts → session-types-C7UONex5.d.cts} +28 -27
  164. package/dist/{session-types-Cbq8IGCP.d.cts → session-types-X-IYEGoG.d.ts} +28 -27
  165. package/dist/session.cjs +46 -13
  166. package/dist/session.d.cts +29 -11
  167. package/dist/session.d.ts +29 -11
  168. package/dist/session.js +46 -13
  169. package/dist/{types-DxSFvL2b.d.cts → types--Q7_DcvP.d.cts} +43 -39
  170. package/dist/{types-DxSFvL2b.d.ts → types--Q7_DcvP.d.ts} +43 -39
  171. package/dist/{types-B0FT5Qs2.d.cts → types-0IWbU9Z_.d.cts} +36 -36
  172. package/dist/{types-B0FT5Qs2.d.ts → types-0IWbU9Z_.d.ts} +36 -36
  173. package/dist/{types-gQsr0AAA.d.cts → types-B3g5G9KP.d.cts} +36 -36
  174. package/dist/{types-gQsr0AAA.d.ts → types-B3g5G9KP.d.ts} +36 -36
  175. package/dist/{types-Pme7sua0.d.cts → types-BFpFNM_m.d.cts} +57 -32
  176. package/dist/{types-Pme7sua0.d.ts → types-BFpFNM_m.d.ts} +57 -32
  177. package/dist/{types-8gUGeMgs.d.cts → types-Br7fm2mf.d.cts} +48 -26
  178. package/dist/{types-8gUGeMgs.d.ts → types-Br7fm2mf.d.ts} +48 -26
  179. package/dist/{types-BeAVNU-F.d.cts → types-C2qKTRR_.d.cts} +50 -45
  180. package/dist/{types-BeAVNU-F.d.ts → types-C2qKTRR_.d.ts} +50 -45
  181. package/dist/{types-DKpsfD3i.d.cts → types-DEaypVsD.d.cts} +115 -55
  182. package/dist/{types-DKpsfD3i.d.ts → types-DEaypVsD.d.ts} +115 -55
  183. package/dist/types-Dl4IaAHR.d.cts +282 -0
  184. package/dist/types-Dl4IaAHR.d.ts +282 -0
  185. package/dist/{types-CDa7F5ct.d.cts → types-DrQpTW1G.d.cts} +58 -50
  186. package/dist/{types-CDa7F5ct.d.ts → types-DrQpTW1G.d.ts} +58 -50
  187. package/dist/types-DuIO7cWK.d.cts +25 -0
  188. package/dist/types-DuIO7cWK.d.ts +25 -0
  189. package/dist/{types-B9A2g05r.d.cts → types-DuxfOYiO.d.cts} +47 -31
  190. package/dist/{types-B9A2g05r.d.ts → types-DuxfOYiO.d.ts} +47 -31
  191. package/dist/{types-D1dI_oTX.d.cts → types-jV1yDDBA.d.cts} +36 -36
  192. package/dist/{types-D1dI_oTX.d.ts → types-jV1yDDBA.d.ts} +36 -36
  193. package/package.json +192 -192
  194. package/src/core/buffer-reader.ts +130 -130
  195. package/src/core/buffer-writer.ts +100 -100
  196. package/src/core/errors.ts +1 -1
  197. package/src/core/hex.ts +21 -21
  198. package/src/core/session-types.ts +61 -59
  199. package/src/core/types.ts +18 -361
  200. package/src/drafts/draft07/codec.ts +1058 -938
  201. package/src/drafts/draft07/data-streams.ts +240 -240
  202. package/src/drafts/draft07/index.ts +124 -89
  203. package/src/drafts/draft07/messages.ts +76 -42
  204. package/src/drafts/draft07/rules.ts +107 -101
  205. package/src/drafts/draft07/session-fsm.ts +315 -287
  206. package/src/drafts/draft07/session.ts +8 -6
  207. package/src/drafts/draft07/types.ts +406 -72
  208. package/src/drafts/draft07/varint.ts +51 -51
  209. package/src/drafts/draft08/codec.ts +985 -953
  210. package/src/drafts/draft08/data-streams.ts +363 -359
  211. package/src/drafts/draft08/index.ts +10 -9
  212. package/src/drafts/draft08/messages.ts +59 -59
  213. package/src/drafts/draft08/rules.ts +73 -73
  214. package/src/drafts/draft08/session-fsm.ts +335 -303
  215. package/src/drafts/draft08/session.ts +6 -7
  216. package/src/drafts/draft08/types.ts +380 -384
  217. package/src/drafts/draft09/codec.ts +977 -945
  218. package/src/drafts/draft09/data-streams.ts +336 -332
  219. package/src/drafts/draft09/index.ts +10 -9
  220. package/src/drafts/draft09/messages.ts +59 -59
  221. package/src/drafts/draft09/rules.ts +73 -73
  222. package/src/drafts/draft09/session-fsm.ts +335 -303
  223. package/src/drafts/draft09/session.ts +6 -7
  224. package/src/drafts/draft09/types.ts +380 -384
  225. package/src/drafts/draft10/codec.ts +977 -945
  226. package/src/drafts/draft10/data-streams.ts +336 -332
  227. package/src/drafts/draft10/index.ts +10 -9
  228. package/src/drafts/draft10/messages.ts +59 -59
  229. package/src/drafts/draft10/rules.ts +73 -73
  230. package/src/drafts/draft10/session-fsm.ts +335 -303
  231. package/src/drafts/draft10/session.ts +6 -7
  232. package/src/drafts/draft10/types.ts +380 -384
  233. package/src/drafts/draft11/codec.ts +1054 -988
  234. package/src/drafts/draft11/data-streams.ts +316 -269
  235. package/src/drafts/draft11/index.ts +10 -9
  236. package/src/drafts/draft11/messages.ts +60 -59
  237. package/src/drafts/draft11/rules.ts +73 -73
  238. package/src/drafts/draft11/session-fsm.ts +359 -333
  239. package/src/drafts/draft11/session.ts +6 -7
  240. package/src/drafts/draft11/types.ts +385 -381
  241. package/src/drafts/draft12/codec.ts +1178 -1122
  242. package/src/drafts/draft12/data-streams.ts +324 -275
  243. package/src/drafts/draft12/index.ts +10 -9
  244. package/src/drafts/draft12/messages.ts +67 -66
  245. package/src/drafts/draft12/rules.ts +79 -79
  246. package/src/drafts/draft12/session-fsm.ts +384 -358
  247. package/src/drafts/draft12/session.ts +6 -7
  248. package/src/drafts/draft12/types.ts +424 -419
  249. package/src/drafts/draft13/codec.ts +1296 -1206
  250. package/src/drafts/draft13/data-streams.ts +326 -275
  251. package/src/drafts/draft13/index.ts +10 -9
  252. package/src/drafts/draft13/messages.ts +73 -68
  253. package/src/drafts/draft13/rules.ts +81 -81
  254. package/src/drafts/draft13/session-fsm.ts +392 -366
  255. package/src/drafts/draft13/session.ts +6 -7
  256. package/src/drafts/draft13/types.ts +447 -438
  257. package/src/drafts/draft14/codec.ts +1347 -1043
  258. package/src/drafts/draft14/data-streams.ts +831 -813
  259. package/src/drafts/draft14/index.ts +17 -9
  260. package/src/drafts/draft14/messages.ts +65 -65
  261. package/src/drafts/draft14/rules.ts +81 -81
  262. package/src/drafts/draft14/session-fsm.ts +415 -405
  263. package/src/drafts/draft14/session.ts +6 -7
  264. package/src/drafts/draft14/types.ts +451 -381
  265. package/src/drafts/draft15/codec.ts +1138 -978
  266. package/src/drafts/draft15/data-streams.ts +842 -794
  267. package/src/drafts/draft15/index.ts +10 -9
  268. package/src/drafts/draft15/messages.ts +54 -53
  269. package/src/drafts/draft15/rules.ts +67 -67
  270. package/src/drafts/draft15/session-fsm.ts +319 -299
  271. package/src/drafts/draft15/session.ts +6 -7
  272. package/src/drafts/draft15/types.ts +357 -339
  273. package/src/drafts/draft16/codec.ts +1242 -966
  274. package/src/drafts/draft16/data-streams.ts +835 -789
  275. package/src/drafts/draft16/index.ts +10 -9
  276. package/src/drafts/draft16/messages.ts +56 -55
  277. package/src/drafts/draft16/rules.ts +69 -69
  278. package/src/drafts/draft16/session-fsm.ts +319 -299
  279. package/src/drafts/draft16/session.ts +6 -7
  280. package/src/drafts/draft16/types.ts +386 -357
  281. package/src/drafts/draft17/codec.ts +1209 -971
  282. package/src/drafts/draft17/data-streams.ts +969 -758
  283. package/src/drafts/draft17/index.ts +9 -7
  284. package/src/drafts/draft17/messages.ts +43 -42
  285. package/src/drafts/draft17/rules.ts +58 -58
  286. package/src/drafts/draft17/session-fsm.ts +248 -216
  287. package/src/drafts/draft17/session.ts +5 -5
  288. package/src/drafts/draft17/types.ts +337 -313
  289. package/src/index.ts +85 -274
  290. package/src/session.ts +63 -25
  291. package/dist/chunk-FZDIEHQL.cjs +0 -1042
  292. package/dist/chunk-HDWJ2GDE.js +0 -24
  293. package/dist/chunk-KNDYS3DK.cjs +0 -24
  294. package/dist/chunk-N2KBF5Q2.js +0 -1042
  295. package/dist/draft7-session.d.cts +0 -7
  296. package/dist/draft7-session.d.ts +0 -7
  297. package/dist/draft7.cjs +0 -72
  298. package/dist/draft7.d.cts +0 -148
  299. package/dist/draft7.d.ts +0 -148
  300. package/dist/draft7.js +0 -72
  301. package/dist/draft8-session.cjs +0 -6
  302. package/dist/draft8-session.d.cts +0 -8
  303. package/dist/draft8-session.d.ts +0 -8
  304. package/dist/draft8.cjs +0 -116
  305. package/dist/draft9-session.cjs +0 -6
  306. package/dist/draft9-session.d.cts +0 -8
  307. package/dist/draft9-session.d.ts +0 -8
  308. package/dist/draft9.cjs +0 -116
  309. package/dist/types-QNXoxC9Y.d.cts +0 -236
  310. package/dist/types-QNXoxC9Y.d.ts +0 -236
  311. package/src/drafts/draft07/announce-fsm.ts +0 -2
  312. package/src/drafts/draft07/parameters.ts +0 -12
  313. package/src/drafts/draft07/subscription-fsm.ts +0 -3
@@ -1,12 +1,10 @@
1
- import {
2
- bytesToHex,
3
- hexToBytes
4
- } from "./chunk-HDWJ2GDE.js";
5
1
  import {
6
2
  BufferReader,
7
3
  BufferWriter,
8
- DecodeError
9
- } from "./chunk-7L43FE6P.js";
4
+ DecodeError,
5
+ bytesToHex,
6
+ hexToBytes
7
+ } from "./chunk-VOU7PNHI.js";
10
8
 
11
9
  // src/drafts/draft15/messages.ts
12
10
  var MSG_SUBSCRIBE_UPDATE = 0x02n;
@@ -34,6 +32,7 @@ var MSG_CLIENT_SETUP = 0x20n;
34
32
  var MSG_SERVER_SETUP = 0x21n;
35
33
  var SETUP_PARAM_PATH = 0x01n;
36
34
  var SETUP_PARAM_MAX_REQUEST_ID = 0x02n;
35
+ var SETUP_PARAM_AUTHORIZATION_TOKEN = 0x03n;
37
36
  var SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE = 0x04n;
38
37
  var SETUP_PARAM_AUTHORITY = 0x05n;
39
38
  var SETUP_PARAM_MOQT_IMPLEMENTATION = 0x07n;
@@ -107,12 +106,18 @@ function encodeDatagram(dg) {
107
106
  w.writeVarInt(BigInt(dgType));
108
107
  w.writeVarInt(dg.trackAlias);
109
108
  w.writeVarInt(dg.groupId);
109
+ const extensionsPresent = (dgType & 1) !== 0;
110
110
  const objectIdAbsent = (dgType & 4) !== 0;
111
111
  const isStatus = (dgType & 32) !== 0;
112
112
  if (!objectIdAbsent) {
113
113
  w.writeVarInt(dg.objectId);
114
114
  }
115
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);
120
+ }
116
121
  if (isStatus) {
117
122
  w.writeVarInt(dg.objectStatus ?? 0n);
118
123
  } else {
@@ -149,19 +154,19 @@ function decodeSubgroupStream(bytes) {
149
154
  try {
150
155
  const r = new BufferReader(bytes);
151
156
  const streamType = Number(r.readVarInt());
152
- if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61) || (streamType & 6) === 6) {
157
+ if (!(streamType >= 16 && streamType <= 23 || streamType >= 48 && streamType <= 55)) {
153
158
  return {
154
159
  ok: false,
155
160
  error: new DecodeError(
156
161
  "CONSTRAINT_VIOLATION",
157
- `Expected subgroup stream type 0x10-0x15/0x18-0x1D/0x30-0x35/0x38-0x3D, got 0x${streamType.toString(16)}`,
162
+ `Expected subgroup stream type 0x10-0x17/0x30-0x37, got 0x${streamType.toString(16)}`,
158
163
  0
159
164
  )
160
165
  };
161
166
  }
162
167
  const extensionsPresent = (streamType & 1) !== 0;
168
+ const endOfGroup = (streamType & 2) !== 0;
163
169
  const hasSubgroupField = (streamType & 4) !== 0;
164
- const subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
165
170
  const hasPriority = streamType < 48;
166
171
  const trackAlias = r.readVarInt();
167
172
  const groupId = r.readVarInt();
@@ -182,9 +187,6 @@ function decodeSubgroupStream(bytes) {
182
187
  let objectId;
183
188
  if (firstObject) {
184
189
  objectId = delta;
185
- if (subgroupIsFirstObjId && firstObject) {
186
- subgroupId = objectId;
187
- }
188
190
  firstObject = false;
189
191
  } else {
190
192
  objectId = prevObjectId + 1n + delta;
@@ -206,22 +208,32 @@ function decodeSubgroupStream(bytes) {
206
208
  payloadByteOffset = r.offset;
207
209
  payload = r.readBytesView(payloadLength);
208
210
  }
209
- const obj = { type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, extensionData, payload };
211
+ const obj = {
212
+ type: "object",
213
+ byteOffset,
214
+ payloadByteOffset,
215
+ objectId,
216
+ payloadLength,
217
+ extensionData,
218
+ payload
219
+ };
210
220
  if (status !== void 0) obj.status = status;
211
221
  objects.push(obj);
212
222
  prevObjectId = objectId;
213
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;
214
234
  return {
215
235
  ok: true,
216
- value: {
217
- type: "subgroup",
218
- headerType: streamType,
219
- trackAlias,
220
- groupId,
221
- subgroupId,
222
- publisherPriority,
223
- objects
224
- },
236
+ value: result,
225
237
  bytesRead: r.offset
226
238
  };
227
239
  } catch (e) {
@@ -233,6 +245,7 @@ function decodeDatagram(bytes) {
233
245
  try {
234
246
  const r = new BufferReader(bytes);
235
247
  const dgType = Number(r.readVarInt());
248
+ const extensionsPresent = (dgType & 1) !== 0;
236
249
  const objectIdAbsent = (dgType & 4) !== 0;
237
250
  const endOfGroup = (dgType & 2) !== 0;
238
251
  const isStatus = (dgType & 32) !== 0;
@@ -243,6 +256,11 @@ function decodeDatagram(bytes) {
243
256
  objectId = r.readVarInt();
244
257
  }
245
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
+ }
246
264
  let objectStatus;
247
265
  let payload;
248
266
  if (isStatus) {
@@ -265,6 +283,8 @@ function decodeDatagram(bytes) {
265
283
  if (endOfGroup) result.endOfGroup = true;
266
284
  if (objectStatus !== void 0)
267
285
  result.objectStatus = objectStatus;
286
+ if (extensionData !== void 0)
287
+ result.extensionData = extensionData;
268
288
  return { ok: true, value: result, bytesRead: r.offset };
269
289
  } catch (e) {
270
290
  if (e instanceof DecodeError) return { ok: false, error: e };
@@ -452,7 +472,7 @@ function createSubgroupStreamDecoder() {
452
472
  try {
453
473
  const r = new BufferReader(buffer.subarray(offset));
454
474
  const streamType = Number(r.readVarInt());
455
- if (!(streamType >= 16 && streamType <= 29 || streamType >= 48 && streamType <= 61)) {
475
+ if (!(streamType >= 16 && streamType <= 23 || streamType >= 48 && streamType <= 55)) {
456
476
  controller.error(
457
477
  new DecodeError(
458
478
  "CONSTRAINT_VIOLATION",
@@ -464,7 +484,7 @@ function createSubgroupStreamDecoder() {
464
484
  }
465
485
  _extensionsPresent = (streamType & 1) !== 0;
466
486
  const hasSubgroupField = (streamType & 4) !== 0;
467
- _subgroupIsFirstObjId = (streamType & 2) !== 0 && !hasSubgroupField;
487
+ _subgroupIsFirstObjId = false;
468
488
  const hasPriority = streamType < 48;
469
489
  const trackAlias = r.readVarInt();
470
490
  const groupId = r.readVarInt();
@@ -513,7 +533,15 @@ function createSubgroupStreamDecoder() {
513
533
  const payloadLength = Number(r.readVarInt());
514
534
  const payloadByteOffset = r.offset;
515
535
  const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
516
- controller.enqueue({ type: "object", byteOffset, payloadByteOffset, objectId, payloadLength, extensionData, payload });
536
+ controller.enqueue({
537
+ type: "object",
538
+ byteOffset,
539
+ payloadByteOffset,
540
+ objectId,
541
+ payloadLength,
542
+ extensionData,
543
+ payload
544
+ });
517
545
  offset += r.offset;
518
546
  prevObjectId = objectId;
519
547
  } catch (e) {
@@ -594,7 +622,15 @@ function createFetchStreamDecoder() {
594
622
  const payloadLength = Number(r.readVarInt());
595
623
  const payloadByteOffset = r.offset;
596
624
  const payload = payloadLength > 0 ? r.readBytesView(payloadLength) : new Uint8Array(0);
597
- controller.enqueue({ type: "object", objectId, payloadLength, extensionData, payload, byteOffset: 0, payloadByteOffset });
625
+ controller.enqueue({
626
+ type: "object",
627
+ objectId,
628
+ payloadLength,
629
+ extensionData,
630
+ payload,
631
+ byteOffset: 0,
632
+ payloadByteOffset
633
+ });
598
634
  offset += r.offset;
599
635
  } catch (e) {
600
636
  if (e instanceof DecodeError && e.code === "UNEXPECTED_END") {
@@ -631,7 +667,7 @@ function createDataStreamDecoder() {
631
667
  if (inner === null) {
632
668
  if (offset >= buffer.length) return;
633
669
  const firstByte = buffer[offset];
634
- if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
670
+ if (firstByte >= 16 && firstByte <= 23 || firstByte >= 48 && firstByte <= 55) {
635
671
  const decoder = createSubgroupStreamDecoder();
636
672
  inner = decoder;
637
673
  } else if (firstByte === 5) {
@@ -654,7 +690,7 @@ function createDataStreamDecoder() {
654
690
  const view = buffer.subarray(offset);
655
691
  const firstByte = view[0];
656
692
  let result;
657
- if (firstByte >= 16 && firstByte <= 29 || firstByte >= 48 && firstByte <= 61) {
693
+ if (firstByte >= 16 && firstByte <= 23 || firstByte >= 48 && firstByte <= 55) {
658
694
  result = decodeSubgroupStream(view);
659
695
  } else if (firstByte === 5) {
660
696
  result = decodeFetchStream(view);
@@ -704,6 +740,7 @@ function encodeSetupParams(params, writer) {
704
740
  let count = 0;
705
741
  if (params.path !== void 0) count++;
706
742
  if (params.max_request_id !== void 0) count++;
743
+ if (params.authorization_token !== void 0) count++;
707
744
  if (params.max_auth_token_cache_size !== void 0) count++;
708
745
  if (params.authority !== void 0) count++;
709
746
  if (params.moqt_implementation !== void 0) count++;
@@ -719,6 +756,14 @@ function encodeSetupParams(params, writer) {
719
756
  writer.writeVarInt(SETUP_PARAM_MAX_REQUEST_ID);
720
757
  writer.writeVarInt(params.max_request_id);
721
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
+ }
722
767
  if (params.max_auth_token_cache_size !== void 0) {
723
768
  writer.writeVarInt(SETUP_PARAM_MAX_AUTH_TOKEN_CACHE_SIZE);
724
769
  writer.writeVarInt(params.max_auth_token_cache_size);
@@ -779,6 +824,8 @@ function decodeSetupParams(reader) {
779
824
  const bytes = reader.readBytes(length);
780
825
  if (paramType === SETUP_PARAM_PATH) {
781
826
  result.path = textDecoder.decode(bytes);
827
+ } else if (paramType === SETUP_PARAM_AUTHORIZATION_TOKEN) {
828
+ result.authorization_token = decodeAuthorizationToken(new BufferReader(bytes));
782
829
  } else if (paramType === SETUP_PARAM_AUTHORITY) {
783
830
  result.authority = textDecoder.decode(bytes);
784
831
  } else if (paramType === SETUP_PARAM_MOQT_IMPLEMENTATION) {
@@ -797,19 +844,75 @@ function decodeSetupParams(reader) {
797
844
  }
798
845
  return result;
799
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;
800
876
  var PARAM_EXPIRES = 0x08n;
801
877
  var PARAM_LARGEST_OBJECT = 0x09n;
878
+ var PARAM_PUBLISHER_PRIORITY = 0x0en;
879
+ var PARAM_FORWARD = 0x10n;
802
880
  var PARAM_SUBSCRIBER_PRIORITY = 0x20n;
803
881
  var PARAM_SUBSCRIPTION_FILTER = 0x21n;
804
882
  var PARAM_GROUP_ORDER = 0x22n;
883
+ var PARAM_DYNAMIC_GROUPS = 0x30n;
884
+ var PARAM_NEW_GROUP_REQUEST = 0x32n;
805
885
  function encodeParams(params, writer) {
806
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++;
807
890
  if (params.expires !== void 0) count++;
808
891
  if (params.largest_object !== void 0) count++;
892
+ if (params.publisher_priority !== void 0) count++;
893
+ if (params.forward !== void 0) count++;
809
894
  if (params.subscriber_priority !== void 0) count++;
810
895
  if (params.subscription_filter !== void 0) count++;
811
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++;
812
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
+ }
813
916
  if (params.expires !== void 0) {
814
917
  writer.writeVarInt(PARAM_EXPIRES);
815
918
  writer.writeVarInt(params.expires);
@@ -823,6 +926,14 @@ function encodeParams(params, writer) {
823
926
  writer.writeVarInt(raw.byteLength);
824
927
  writer.writeBytes(raw);
825
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
+ }
826
937
  if (params.subscriber_priority !== void 0) {
827
938
  writer.writeVarInt(PARAM_SUBSCRIBER_PRIORITY);
828
939
  writer.writeVarInt(params.subscriber_priority);
@@ -847,6 +958,14 @@ function encodeParams(params, writer) {
847
958
  writer.writeVarInt(PARAM_GROUP_ORDER);
848
959
  writer.writeVarInt(params.group_order);
849
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
+ }
850
969
  if (params.unknown) {
851
970
  for (const u of params.unknown) {
852
971
  const id = BigInt(u.id);
@@ -870,12 +989,28 @@ function decodeParams(reader) {
870
989
  const unknown = [];
871
990
  for (let i = 0; i < count; i++) {
872
991
  const paramType = reader.readVarInt();
873
- if (paramType === PARAM_EXPIRES) {
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) {
874
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();
875
1006
  } else if (paramType === PARAM_SUBSCRIBER_PRIORITY) {
876
1007
  result.subscriber_priority = reader.readVarInt();
877
1008
  } else if (paramType === PARAM_GROUP_ORDER) {
878
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();
879
1014
  } else if (paramType === PARAM_LARGEST_OBJECT) {
880
1015
  const length = Number(reader.readVarInt());
881
1016
  const startOff = reader.offset;
@@ -1051,7 +1186,13 @@ function decodeSubscribePayload(r) {
1051
1186
  const track_namespace = r.readTuple();
1052
1187
  const track_name = r.readString();
1053
1188
  const parameters = decodeParams(r);
1054
- 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
+ };
1055
1196
  }
1056
1197
  function decodeSubscribeOkPayload(r) {
1057
1198
  const request_id = r.readVarInt();
@@ -1063,7 +1204,12 @@ function decodeSubscribeUpdatePayload(r) {
1063
1204
  const request_id = r.readVarInt();
1064
1205
  const subscription_request_id = r.readVarInt();
1065
1206
  const parameters = decodeParams(r);
1066
- 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
+ };
1067
1213
  }
1068
1214
  function decodeUnsubscribePayload(r) {
1069
1215
  const request_id = r.readVarInt();
@@ -1075,7 +1221,14 @@ function decodePublishPayload(r) {
1075
1221
  const track_name = r.readString();
1076
1222
  const track_alias = r.readVarInt();
1077
1223
  const parameters = decodeParams(r);
1078
- 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
+ };
1079
1232
  }
1080
1233
  function decodePublishOkPayload(r) {
1081
1234
  const request_id = r.readVarInt();
@@ -1087,7 +1240,13 @@ function decodePublishDonePayload(r) {
1087
1240
  const status_code = r.readVarInt();
1088
1241
  const stream_count = r.readVarInt();
1089
1242
  const reason_phrase = r.readString();
1090
- 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
+ };
1091
1250
  }
1092
1251
  function decodePublishNamespacePayload(r) {
1093
1252
  const request_id = r.readVarInt();
@@ -1103,13 +1262,23 @@ function decodePublishNamespaceCancelPayload(r) {
1103
1262
  const track_namespace = r.readTuple();
1104
1263
  const error_code = r.readVarInt();
1105
1264
  const reason_phrase = r.readString();
1106
- 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
+ };
1107
1271
  }
1108
1272
  function decodeSubscribeNamespacePayload(r) {
1109
1273
  const request_id = r.readVarInt();
1110
1274
  const namespace_prefix = r.readTuple();
1111
1275
  const parameters = decodeParams(r);
1112
- return { type: "subscribe_namespace", request_id, namespace_prefix, parameters };
1276
+ return {
1277
+ type: "subscribe_namespace",
1278
+ request_id,
1279
+ namespace_prefix,
1280
+ parameters
1281
+ };
1113
1282
  }
1114
1283
  function decodeUnsubscribeNamespacePayload(r) {
1115
1284
  const request_id = r.readVarInt();
@@ -1131,7 +1300,14 @@ function decodeFetchPayload(r) {
1131
1300
  const start_object = r.readVarInt();
1132
1301
  const end_group = r.readVarInt();
1133
1302
  const end_object = r.readVarInt();
1134
- 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
+ };
1135
1311
  } else {
1136
1312
  const joining_request_id = r.readVarInt();
1137
1313
  const joining_start = r.readVarInt();
@@ -1153,7 +1329,14 @@ function decodeFetchOkPayload(r) {
1153
1329
  const end_group = r.readVarInt();
1154
1330
  const end_object = r.readVarInt();
1155
1331
  const parameters = decodeParams(r);
1156
- 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
+ };
1157
1340
  }
1158
1341
  function decodeFetchCancelPayload(r) {
1159
1342
  const request_id = r.readVarInt();
@@ -1164,7 +1347,13 @@ function decodeTrackStatusPayload(r) {
1164
1347
  const track_namespace = r.readTuple();
1165
1348
  const track_name = r.readString();
1166
1349
  const parameters = decodeParams(r);
1167
- 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
+ };
1168
1357
  }
1169
1358
  function decodeRequestOkPayload(r) {
1170
1359
  const request_id = r.readVarInt();
@@ -1352,7 +1541,7 @@ function createStreamDecoder() {
1352
1541
  }
1353
1542
  function createDraft15Codec() {
1354
1543
  return {
1355
- draft: "draft-ietf-moq-transport-15",
1544
+ draft: "15",
1356
1545
  encodeMessage,
1357
1546
  decodeMessage,
1358
1547
  encodeSubgroupStream,