@moqtap/codec 0.2.3 → 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 (299) 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/draft10-session.cjs +2 -2
  72. package/dist/draft10-session.d.cts +6 -6
  73. package/dist/draft10-session.d.ts +6 -6
  74. package/dist/draft10-session.js +1 -1
  75. package/dist/draft10.cjs +8 -5
  76. package/dist/draft10.d.cts +14 -12
  77. package/dist/draft10.d.ts +14 -12
  78. package/dist/draft10.js +16 -13
  79. package/dist/draft11-session.cjs +2 -2
  80. package/dist/draft11-session.d.cts +6 -6
  81. package/dist/draft11-session.d.ts +6 -6
  82. package/dist/draft11-session.js +1 -1
  83. package/dist/draft11.cjs +8 -5
  84. package/dist/draft11.d.cts +14 -12
  85. package/dist/draft11.d.ts +14 -12
  86. package/dist/draft11.js +16 -13
  87. package/dist/draft12-session.cjs +2 -2
  88. package/dist/draft12-session.d.cts +6 -6
  89. package/dist/draft12-session.d.ts +6 -6
  90. package/dist/draft12-session.js +1 -1
  91. package/dist/draft12.cjs +8 -5
  92. package/dist/draft12.d.cts +16 -14
  93. package/dist/draft12.d.ts +16 -14
  94. package/dist/draft12.js +16 -13
  95. package/dist/draft13-session.cjs +2 -2
  96. package/dist/draft13-session.d.cts +6 -6
  97. package/dist/draft13-session.d.ts +6 -6
  98. package/dist/draft13-session.js +1 -1
  99. package/dist/draft13.cjs +8 -5
  100. package/dist/draft13.d.cts +16 -14
  101. package/dist/draft13.d.ts +16 -14
  102. package/dist/draft13.js +16 -13
  103. package/dist/draft14-session.cjs +2 -2
  104. package/dist/draft14-session.d.cts +6 -6
  105. package/dist/draft14-session.d.ts +6 -6
  106. package/dist/draft14-session.js +1 -1
  107. package/dist/draft14.cjs +14 -5
  108. package/dist/draft14.d.cts +14 -12
  109. package/dist/draft14.d.ts +14 -12
  110. package/dist/draft14.js +13 -4
  111. package/dist/draft15-session.cjs +2 -2
  112. package/dist/draft15-session.d.cts +6 -6
  113. package/dist/draft15-session.d.ts +6 -6
  114. package/dist/draft15-session.js +1 -1
  115. package/dist/draft15.cjs +8 -5
  116. package/dist/draft15.d.cts +14 -12
  117. package/dist/draft15.d.ts +14 -12
  118. package/dist/draft15.js +16 -13
  119. package/dist/draft16-session.cjs +2 -2
  120. package/dist/draft16-session.d.cts +6 -6
  121. package/dist/draft16-session.d.ts +6 -6
  122. package/dist/draft16-session.js +1 -1
  123. package/dist/draft16.cjs +8 -5
  124. package/dist/draft16.d.cts +14 -12
  125. package/dist/draft16.d.ts +14 -12
  126. package/dist/draft16.js +16 -13
  127. package/dist/draft17-session.cjs +2 -2
  128. package/dist/draft17-session.d.cts +7 -7
  129. package/dist/draft17-session.d.ts +7 -7
  130. package/dist/draft17-session.js +1 -1
  131. package/dist/draft17.cjs +8 -5
  132. package/dist/draft17.d.cts +11 -9
  133. package/dist/draft17.d.ts +11 -9
  134. package/dist/draft17.js +16 -13
  135. package/dist/draft7-session.cjs +2 -2
  136. package/dist/draft7-session.d.cts +6 -5
  137. package/dist/draft7-session.d.ts +6 -5
  138. package/dist/draft7-session.js +1 -1
  139. package/dist/draft7.cjs +71 -14
  140. package/dist/draft7.d.cts +53 -134
  141. package/dist/draft7.d.ts +53 -134
  142. package/dist/draft7.js +76 -19
  143. package/dist/draft8-session.cjs +2 -2
  144. package/dist/draft8-session.d.cts +6 -6
  145. package/dist/draft8-session.d.ts +6 -6
  146. package/dist/draft8-session.js +1 -1
  147. package/dist/draft8.cjs +8 -5
  148. package/dist/draft8.d.cts +14 -12
  149. package/dist/draft8.d.ts +14 -12
  150. package/dist/draft8.js +7 -4
  151. package/dist/draft9-session.cjs +2 -2
  152. package/dist/draft9-session.d.cts +6 -6
  153. package/dist/draft9-session.d.ts +6 -6
  154. package/dist/draft9-session.js +1 -1
  155. package/dist/draft9.cjs +8 -5
  156. package/dist/draft9.d.cts +14 -12
  157. package/dist/draft9.d.ts +14 -12
  158. package/dist/draft9.js +7 -4
  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 +28 -9
  167. package/dist/session.d.ts +28 -9
  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.ts → types-0IWbU9Z_.d.cts} +36 -36
  172. package/dist/{types-B0FT5Qs2.d.cts → 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.ts → types-Br7fm2mf.d.cts} +48 -26
  178. package/dist/{types-8gUGeMgs.d.cts → 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 +62 -23
  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/types-QNXoxC9Y.d.cts +0 -236
  296. package/dist/types-QNXoxC9Y.d.ts +0 -236
  297. package/src/drafts/draft07/announce-fsm.ts +0 -2
  298. package/src/drafts/draft07/parameters.ts +0 -12
  299. package/src/drafts/draft07/subscription-fsm.ts +0 -3
@@ -1,75 +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";
10
-
11
- // src/drafts/draft11/messages.ts
12
- var MSG_SUBSCRIBE_UPDATE = 0x02n;
13
- var MSG_SUBSCRIBE = 0x03n;
14
- var MSG_SUBSCRIBE_OK = 0x04n;
15
- var MSG_SUBSCRIBE_ERROR = 0x05n;
16
- var MSG_ANNOUNCE = 0x06n;
17
- var MSG_ANNOUNCE_OK = 0x07n;
18
- var MSG_ANNOUNCE_ERROR = 0x08n;
19
- var MSG_UNANNOUNCE = 0x09n;
20
- var MSG_UNSUBSCRIBE = 0x0an;
21
- var MSG_SUBSCRIBE_DONE = 0x0bn;
22
- var MSG_ANNOUNCE_CANCEL = 0x0cn;
23
- var MSG_TRACK_STATUS_REQUEST = 0x0dn;
24
- var MSG_TRACK_STATUS = 0x0en;
25
- var MSG_GOAWAY = 0x10n;
26
- var MSG_SUBSCRIBE_ANNOUNCES = 0x11n;
27
- var MSG_SUBSCRIBE_ANNOUNCES_OK = 0x12n;
28
- var MSG_SUBSCRIBE_ANNOUNCES_ERROR = 0x13n;
29
- var MSG_UNSUBSCRIBE_ANNOUNCES = 0x14n;
30
- var MSG_MAX_REQUEST_ID = 0x15n;
31
- var MSG_FETCH = 0x16n;
32
- var MSG_FETCH_CANCEL = 0x17n;
33
- var MSG_FETCH_OK = 0x18n;
34
- var MSG_FETCH_ERROR = 0x19n;
35
- var MSG_REQUESTS_BLOCKED = 0x1an;
36
- var MSG_CLIENT_SETUP = 0x20n;
37
- var MSG_SERVER_SETUP = 0x21n;
38
- var SETUP_PARAM_PATH = 0x01n;
39
- var SETUP_PARAM_MAX_REQUEST_ID = 0x02n;
40
- var PARAM_AUTHORIZATION_TOKEN = 0x01n;
41
- var PARAM_DELIVERY_TIMEOUT = 0x02n;
42
- var MESSAGE_TYPE_MAP = /* @__PURE__ */ new Map([
43
- [MSG_CLIENT_SETUP, "client_setup"],
44
- [MSG_SERVER_SETUP, "server_setup"],
45
- [MSG_SUBSCRIBE, "subscribe"],
46
- [MSG_SUBSCRIBE_OK, "subscribe_ok"],
47
- [MSG_SUBSCRIBE_ERROR, "subscribe_error"],
48
- [MSG_SUBSCRIBE_UPDATE, "subscribe_update"],
49
- [MSG_SUBSCRIBE_DONE, "subscribe_done"],
50
- [MSG_UNSUBSCRIBE, "unsubscribe"],
51
- [MSG_ANNOUNCE, "announce"],
52
- [MSG_ANNOUNCE_OK, "announce_ok"],
53
- [MSG_ANNOUNCE_ERROR, "announce_error"],
54
- [MSG_UNANNOUNCE, "unannounce"],
55
- [MSG_ANNOUNCE_CANCEL, "announce_cancel"],
56
- [MSG_SUBSCRIBE_ANNOUNCES, "subscribe_announces"],
57
- [MSG_SUBSCRIBE_ANNOUNCES_OK, "subscribe_announces_ok"],
58
- [MSG_SUBSCRIBE_ANNOUNCES_ERROR, "subscribe_announces_error"],
59
- [MSG_UNSUBSCRIBE_ANNOUNCES, "unsubscribe_announces"],
60
- [MSG_FETCH, "fetch"],
61
- [MSG_FETCH_OK, "fetch_ok"],
62
- [MSG_FETCH_ERROR, "fetch_error"],
63
- [MSG_FETCH_CANCEL, "fetch_cancel"],
64
- [MSG_TRACK_STATUS_REQUEST, "track_status_request"],
65
- [MSG_TRACK_STATUS, "track_status"],
66
- [MSG_GOAWAY, "goaway"],
67
- [MSG_MAX_REQUEST_ID, "max_request_id"],
68
- [MSG_REQUESTS_BLOCKED, "requests_blocked"]
69
- ]);
70
- var MESSAGE_ID_MAP = new Map(
71
- [...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
72
- );
4
+ DecodeError,
5
+ bytesToHex,
6
+ hexToBytes
7
+ } from "./chunk-VOU7PNHI.js";
73
8
 
74
9
  // src/drafts/draft11/data-streams.ts
75
10
  var FETCH_STREAM_TYPE = 0x05n;
@@ -105,7 +40,14 @@ function encodeDatagram(dg) {
105
40
  w.writeVarInt(dg.groupId);
106
41
  w.writeVarInt(dg.objectId);
107
42
  w.writeUint8(dg.publisherPriority);
108
- if (dg.streamTypeId === 2) {
43
+ const extensionsPresent = (dg.streamTypeId & 1) !== 0;
44
+ if (extensionsPresent) {
45
+ const extData = dg.extensionData ?? new Uint8Array(0);
46
+ w.writeVarInt(extData.byteLength);
47
+ if (extData.byteLength > 0) w.writeBytes(extData);
48
+ }
49
+ const isStatus = dg.streamTypeId === 2 || dg.streamTypeId === 3;
50
+ if (isStatus) {
109
51
  w.writeVarInt(dg.objectStatus ?? 0n);
110
52
  } else {
111
53
  w.writeBytes(dg.payload);
@@ -124,7 +66,12 @@ function encodeFetchStream(stream) {
124
66
  w.writeVarInt(BigInt(obj.extensionData.length));
125
67
  if (obj.extensionData.length > 0) w.writeBytes(obj.extensionData);
126
68
  w.writeVarInt(obj.payloadLength);
127
- w.writeBytes(obj.payload);
69
+ if (obj.payloadLength === 0) {
70
+ const status = obj.objectStatus;
71
+ w.writeVarInt(status ?? 0n);
72
+ } else {
73
+ w.writeBytes(obj.payload);
74
+ }
128
75
  }
129
76
  return w.finish();
130
77
  }
@@ -160,9 +107,10 @@ function decodeSubgroupStream(bytes) {
160
107
  firstObject = false;
161
108
  }
162
109
  let extensionData = new Uint8Array(0);
110
+ let extensionHeadersLength;
163
111
  if (extensionsPresent) {
164
- const extLen = Number(r.readVarInt());
165
- extensionData = extLen > 0 ? r.readBytesView(extLen) : new Uint8Array(0);
112
+ extensionHeadersLength = r.readVarInt();
113
+ extensionData = extensionHeadersLength > 0n ? r.readBytesView(Number(extensionHeadersLength)) : new Uint8Array(0);
166
114
  }
167
115
  const payloadLength = Number(r.readVarInt());
168
116
  let payload;
@@ -176,7 +124,17 @@ function decodeSubgroupStream(bytes) {
176
124
  payloadByteOffset = r.offset;
177
125
  payload = r.readBytesView(payloadLength);
178
126
  }
179
- const obj = { type: "object", byteOffset, payloadByteOffset, objectId, extensionData, payloadLength, payload };
127
+ const obj = {
128
+ type: "object",
129
+ byteOffset,
130
+ payloadByteOffset,
131
+ objectId,
132
+ extensionData,
133
+ payloadLength,
134
+ payload
135
+ };
136
+ if (extensionHeadersLength !== void 0)
137
+ obj.extensionHeadersLength = extensionHeadersLength;
180
138
  if (status !== void 0) obj.status = status;
181
139
  objects.push(obj);
182
140
  }
@@ -202,23 +160,31 @@ function decodeDatagram(bytes) {
202
160
  try {
203
161
  const r = new BufferReader(bytes);
204
162
  const streamTypeId = Number(r.readVarInt());
205
- if (streamTypeId !== 0 && streamTypeId !== 2) {
163
+ if (streamTypeId < 0 || streamTypeId > 3) {
206
164
  return {
207
165
  ok: false,
208
166
  error: new DecodeError(
209
167
  "CONSTRAINT_VIOLATION",
210
- `Expected datagram type 0x00 or 0x02, got 0x${streamTypeId.toString(16)}`,
168
+ `Expected datagram type 0x00-0x03, got 0x${streamTypeId.toString(16)}`,
211
169
  0
212
170
  )
213
171
  };
214
172
  }
173
+ const extensionsPresent = (streamTypeId & 1) !== 0;
174
+ const isStatus = streamTypeId === 2 || streamTypeId === 3;
215
175
  const trackAlias = r.readVarInt();
216
176
  const groupId = r.readVarInt();
217
177
  const objectId = r.readVarInt();
218
178
  const publisherPriority = r.readUint8();
179
+ let extensionHeadersLength;
180
+ let extensionData;
181
+ if (extensionsPresent) {
182
+ extensionHeadersLength = r.readVarInt();
183
+ extensionData = extensionHeadersLength > 0n ? r.readBytesView(Number(extensionHeadersLength)) : new Uint8Array(0);
184
+ }
219
185
  let objectStatus;
220
186
  let payload;
221
- if (streamTypeId === 2) {
187
+ if (isStatus) {
222
188
  objectStatus = r.readVarInt();
223
189
  payload = new Uint8Array(0);
224
190
  } else {
@@ -234,6 +200,10 @@ function decodeDatagram(bytes) {
234
200
  payloadLength: payload.byteLength,
235
201
  payload
236
202
  };
203
+ if (extensionHeadersLength !== void 0)
204
+ result.extensionHeadersLength = extensionHeadersLength;
205
+ if (extensionData !== void 0)
206
+ result.extensionData = extensionData;
237
207
  if (objectStatus !== void 0)
238
208
  result.objectStatus = objectStatus;
239
209
  return { ok: true, value: result, bytesRead: r.offset };
@@ -295,7 +265,11 @@ function decodeFetchStream(bytes) {
295
265
  obj.objectStatus = objectStatus;
296
266
  objects.push(obj);
297
267
  }
298
- return { ok: true, value: { type: "fetch", requestId, objects }, bytesRead: r.offset };
268
+ return {
269
+ ok: true,
270
+ value: { type: "fetch", requestId, objects },
271
+ bytesRead: r.offset
272
+ };
299
273
  } catch (e) {
300
274
  if (e instanceof DecodeError) return { ok: false, error: e };
301
275
  throw e;
@@ -316,6 +290,70 @@ function decodeDataStream(streamType, bytes) {
316
290
  }
317
291
  }
318
292
 
293
+ // src/drafts/draft11/messages.ts
294
+ var MSG_SUBSCRIBE_UPDATE = 0x02n;
295
+ var MSG_SUBSCRIBE = 0x03n;
296
+ var MSG_SUBSCRIBE_OK = 0x04n;
297
+ var MSG_SUBSCRIBE_ERROR = 0x05n;
298
+ var MSG_ANNOUNCE = 0x06n;
299
+ var MSG_ANNOUNCE_OK = 0x07n;
300
+ var MSG_ANNOUNCE_ERROR = 0x08n;
301
+ var MSG_UNANNOUNCE = 0x09n;
302
+ var MSG_UNSUBSCRIBE = 0x0an;
303
+ var MSG_SUBSCRIBE_DONE = 0x0bn;
304
+ var MSG_ANNOUNCE_CANCEL = 0x0cn;
305
+ var MSG_TRACK_STATUS_REQUEST = 0x0dn;
306
+ var MSG_TRACK_STATUS = 0x0en;
307
+ var MSG_GOAWAY = 0x10n;
308
+ var MSG_SUBSCRIBE_ANNOUNCES = 0x11n;
309
+ var MSG_SUBSCRIBE_ANNOUNCES_OK = 0x12n;
310
+ var MSG_SUBSCRIBE_ANNOUNCES_ERROR = 0x13n;
311
+ var MSG_UNSUBSCRIBE_ANNOUNCES = 0x14n;
312
+ var MSG_MAX_REQUEST_ID = 0x15n;
313
+ var MSG_FETCH = 0x16n;
314
+ var MSG_FETCH_CANCEL = 0x17n;
315
+ var MSG_FETCH_OK = 0x18n;
316
+ var MSG_FETCH_ERROR = 0x19n;
317
+ var MSG_REQUESTS_BLOCKED = 0x1an;
318
+ var MSG_CLIENT_SETUP = 0x20n;
319
+ var MSG_SERVER_SETUP = 0x21n;
320
+ var SETUP_PARAM_PATH = 0x01n;
321
+ var SETUP_PARAM_MAX_REQUEST_ID = 0x02n;
322
+ var PARAM_AUTHORIZATION_TOKEN = 0x01n;
323
+ var PARAM_DELIVERY_TIMEOUT = 0x02n;
324
+ var PARAM_MAX_CACHE_DURATION = 0x04n;
325
+ var MESSAGE_TYPE_MAP = /* @__PURE__ */ new Map([
326
+ [MSG_CLIENT_SETUP, "client_setup"],
327
+ [MSG_SERVER_SETUP, "server_setup"],
328
+ [MSG_SUBSCRIBE, "subscribe"],
329
+ [MSG_SUBSCRIBE_OK, "subscribe_ok"],
330
+ [MSG_SUBSCRIBE_ERROR, "subscribe_error"],
331
+ [MSG_SUBSCRIBE_UPDATE, "subscribe_update"],
332
+ [MSG_SUBSCRIBE_DONE, "subscribe_done"],
333
+ [MSG_UNSUBSCRIBE, "unsubscribe"],
334
+ [MSG_ANNOUNCE, "announce"],
335
+ [MSG_ANNOUNCE_OK, "announce_ok"],
336
+ [MSG_ANNOUNCE_ERROR, "announce_error"],
337
+ [MSG_UNANNOUNCE, "unannounce"],
338
+ [MSG_ANNOUNCE_CANCEL, "announce_cancel"],
339
+ [MSG_SUBSCRIBE_ANNOUNCES, "subscribe_announces"],
340
+ [MSG_SUBSCRIBE_ANNOUNCES_OK, "subscribe_announces_ok"],
341
+ [MSG_SUBSCRIBE_ANNOUNCES_ERROR, "subscribe_announces_error"],
342
+ [MSG_UNSUBSCRIBE_ANNOUNCES, "unsubscribe_announces"],
343
+ [MSG_FETCH, "fetch"],
344
+ [MSG_FETCH_OK, "fetch_ok"],
345
+ [MSG_FETCH_ERROR, "fetch_error"],
346
+ [MSG_FETCH_CANCEL, "fetch_cancel"],
347
+ [MSG_TRACK_STATUS_REQUEST, "track_status_request"],
348
+ [MSG_TRACK_STATUS, "track_status"],
349
+ [MSG_GOAWAY, "goaway"],
350
+ [MSG_MAX_REQUEST_ID, "max_request_id"],
351
+ [MSG_REQUESTS_BLOCKED, "requests_blocked"]
352
+ ]);
353
+ var MESSAGE_ID_MAP = new Map(
354
+ [...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id])
355
+ );
356
+
319
357
  // src/drafts/draft11/codec.ts
320
358
  var textEncoder = /* @__PURE__ */ new TextEncoder();
321
359
  var textDecoder = /* @__PURE__ */ new TextDecoder();
@@ -377,7 +415,11 @@ function decodeSetupParams(r) {
377
415
  if (paramType === SETUP_PARAM_PATH) {
378
416
  result.path = textDecoder.decode(bytes);
379
417
  } else {
380
- unknown.push({ id: `0x${paramType.toString(16)}`, length, raw_hex: bytesToHex(bytes) });
418
+ unknown.push({
419
+ id: `0x${paramType.toString(16)}`,
420
+ length,
421
+ raw_hex: bytesToHex(bytes)
422
+ });
381
423
  }
382
424
  }
383
425
  }
@@ -388,6 +430,7 @@ function encodeParams(params, w) {
388
430
  let count = params.unknown ? params.unknown.length : 0;
389
431
  if (params.authorization_token !== void 0) count++;
390
432
  if (params.delivery_timeout !== void 0) count++;
433
+ if (params.max_cache_duration !== void 0) count++;
391
434
  w.writeVarInt(count);
392
435
  if (params.authorization_token !== void 0) {
393
436
  w.writeVarInt(PARAM_AUTHORIZATION_TOKEN);
@@ -405,6 +448,10 @@ function encodeParams(params, w) {
405
448
  w.writeVarInt(PARAM_DELIVERY_TIMEOUT);
406
449
  w.writeVarInt(params.delivery_timeout);
407
450
  }
451
+ if (params.max_cache_duration !== void 0) {
452
+ w.writeVarInt(PARAM_MAX_CACHE_DURATION);
453
+ w.writeVarInt(params.max_cache_duration);
454
+ }
408
455
  if (params.unknown) {
409
456
  for (const u of params.unknown) {
410
457
  const id = BigInt(u.id);
@@ -431,6 +478,8 @@ function decodeParams(r) {
431
478
  const value = r.readVarInt();
432
479
  if (paramType === PARAM_DELIVERY_TIMEOUT) {
433
480
  result.delivery_timeout = value;
481
+ } else if (paramType === PARAM_MAX_CACHE_DURATION) {
482
+ result.max_cache_duration = value;
434
483
  } else {
435
484
  const tmpW = new BufferWriter(16);
436
485
  tmpW.writeVarInt(value);
@@ -456,7 +505,11 @@ function decodeParams(r) {
456
505
  };
457
506
  } else {
458
507
  const bytes = r.readBytes(length);
459
- unknown.push({ id: `0x${paramType.toString(16)}`, length, raw_hex: bytesToHex(bytes) });
508
+ unknown.push({
509
+ id: `0x${paramType.toString(16)}`,
510
+ length,
511
+ raw_hex: bytesToHex(bytes)
512
+ });
460
513
  }
461
514
  }
462
515
  }
@@ -478,7 +531,7 @@ function encodeSubscribePayload(msg, w) {
478
531
  w.writeTuple(msg.track_namespace);
479
532
  w.writeString(msg.track_name);
480
533
  w.writeUint8(msg.subscriber_priority);
481
- w.writeVarInt(msg.group_order);
534
+ w.writeUint8(msg.group_order);
482
535
  w.writeVarInt(msg.forward);
483
536
  w.writeVarInt(msg.filter_type);
484
537
  const ft = Number(msg.filter_type);
@@ -494,7 +547,7 @@ function encodeSubscribePayload(msg, w) {
494
547
  function encodeSubscribeOkPayload(msg, w) {
495
548
  w.writeVarInt(msg.request_id);
496
549
  w.writeVarInt(msg.expires);
497
- w.writeVarInt(msg.group_order);
550
+ w.writeUint8(msg.group_order);
498
551
  w.writeVarInt(msg.content_exists);
499
552
  if (msg.content_exists === 1n && msg.largest_location) {
500
553
  w.writeVarInt(msg.largest_location.group);
@@ -566,7 +619,7 @@ function encodeUnsubscribeAnnouncesPayload(msg, w) {
566
619
  function encodeFetchPayload(msg, w) {
567
620
  w.writeVarInt(msg.request_id);
568
621
  w.writeUint8(msg.subscriber_priority);
569
- w.writeVarInt(msg.group_order);
622
+ w.writeUint8(msg.group_order);
570
623
  w.writeVarInt(msg.fetch_type);
571
624
  const ft = Number(msg.fetch_type);
572
625
  if (ft === 1 && msg.standalone) {
@@ -584,7 +637,7 @@ function encodeFetchPayload(msg, w) {
584
637
  }
585
638
  function encodeFetchOkPayload(msg, w) {
586
639
  w.writeVarInt(msg.request_id);
587
- w.writeVarInt(msg.group_order);
640
+ w.writeUint8(msg.group_order);
588
641
  w.writeVarInt(msg.end_of_track);
589
642
  w.writeVarInt(msg.end_location.group);
590
643
  w.writeVarInt(msg.end_location.object);
@@ -641,7 +694,7 @@ function decodeSubscribePayload(r) {
641
694
  const track_namespace = r.readTuple();
642
695
  const track_name = r.readString();
643
696
  const subscriber_priority = r.readUint8();
644
- const group_order = r.readVarInt();
697
+ const group_order = r.readUint8();
645
698
  const forward = r.readVarInt();
646
699
  const filter_type = r.readVarInt();
647
700
  const ft = Number(filter_type);
@@ -679,7 +732,7 @@ function decodeSubscribePayload(r) {
679
732
  function decodeSubscribeOkPayload(r) {
680
733
  const request_id = r.readVarInt();
681
734
  const expires = r.readVarInt();
682
- const group_order = r.readVarInt();
735
+ const group_order = r.readUint8();
683
736
  const content_exists = r.readVarInt();
684
737
  let largest_location;
685
738
  if (content_exists === 1n) {
@@ -704,7 +757,13 @@ function decodeSubscribeErrorPayload(r) {
704
757
  const error_code = r.readVarInt();
705
758
  const reason_phrase = r.readString();
706
759
  const track_alias = r.readVarInt();
707
- return { type: "subscribe_error", request_id, error_code, reason_phrase, track_alias };
760
+ return {
761
+ type: "subscribe_error",
762
+ request_id,
763
+ error_code,
764
+ reason_phrase,
765
+ track_alias
766
+ };
708
767
  }
709
768
  function decodeSubscribeUpdatePayload(r) {
710
769
  const request_id = r.readVarInt();
@@ -730,7 +789,13 @@ function decodeSubscribeDonePayload(r) {
730
789
  const status_code = r.readVarInt();
731
790
  const stream_count = r.readVarInt();
732
791
  const reason_phrase = r.readString();
733
- return { type: "subscribe_done", request_id, status_code, stream_count, reason_phrase };
792
+ return {
793
+ type: "subscribe_done",
794
+ request_id,
795
+ status_code,
796
+ stream_count,
797
+ reason_phrase
798
+ };
734
799
  }
735
800
  function decodeUnsubscribePayload(r) {
736
801
  const request_id = r.readVarInt();
@@ -766,7 +831,12 @@ function decodeSubscribeAnnouncesPayload(r) {
766
831
  const request_id = r.readVarInt();
767
832
  const track_namespace_prefix = r.readTuple();
768
833
  const parameters = decodeParams(r);
769
- return { type: "subscribe_announces", request_id, track_namespace_prefix, parameters };
834
+ return {
835
+ type: "subscribe_announces",
836
+ request_id,
837
+ track_namespace_prefix,
838
+ parameters
839
+ };
770
840
  }
771
841
  function decodeSubscribeAnnouncesOkPayload(r) {
772
842
  const request_id = r.readVarInt();
@@ -776,7 +846,12 @@ function decodeSubscribeAnnouncesErrorPayload(r) {
776
846
  const request_id = r.readVarInt();
777
847
  const error_code = r.readVarInt();
778
848
  const reason_phrase = r.readString();
779
- return { type: "subscribe_announces_error", request_id, error_code, reason_phrase };
849
+ return {
850
+ type: "subscribe_announces_error",
851
+ request_id,
852
+ error_code,
853
+ reason_phrase
854
+ };
780
855
  }
781
856
  function decodeUnsubscribeAnnouncesPayload(r) {
782
857
  const track_namespace_prefix = r.readTuple();
@@ -785,7 +860,7 @@ function decodeUnsubscribeAnnouncesPayload(r) {
785
860
  function decodeFetchPayload(r) {
786
861
  const request_id = r.readVarInt();
787
862
  const subscriber_priority = r.readUint8();
788
- const group_order = r.readVarInt();
863
+ const group_order = r.readUint8();
789
864
  const fetch_type = r.readVarInt();
790
865
  const ft = Number(fetch_type);
791
866
  if (ft < 1 || ft > 3) {
@@ -800,7 +875,14 @@ function decodeFetchPayload(r) {
800
875
  const start_object = r.readVarInt();
801
876
  const end_group = r.readVarInt();
802
877
  const end_object = r.readVarInt();
803
- standalone = { track_namespace, track_name, start_group, start_object, end_group, end_object };
878
+ standalone = {
879
+ track_namespace,
880
+ track_name,
881
+ start_group,
882
+ start_object,
883
+ end_group,
884
+ end_object
885
+ };
804
886
  } else {
805
887
  const joining_subscribe_id = r.readVarInt();
806
888
  const joining_start = r.readVarInt();
@@ -820,7 +902,7 @@ function decodeFetchPayload(r) {
820
902
  }
821
903
  function decodeFetchOkPayload(r) {
822
904
  const request_id = r.readVarInt();
823
- const group_order = r.readVarInt();
905
+ const group_order = r.readUint8();
824
906
  const end_of_track = r.readVarInt();
825
907
  const group = r.readVarInt();
826
908
  const object = r.readVarInt();
@@ -849,7 +931,13 @@ function decodeTrackStatusRequestPayload(r) {
849
931
  const track_namespace = r.readTuple();
850
932
  const track_name = r.readString();
851
933
  const parameters = decodeParams(r);
852
- return { type: "track_status_request", request_id, track_namespace, track_name, parameters };
934
+ return {
935
+ type: "track_status_request",
936
+ request_id,
937
+ track_namespace,
938
+ track_name,
939
+ parameters
940
+ };
853
941
  }
854
942
  function decodeTrackStatusPayload(r) {
855
943
  const request_id = r.readVarInt();
@@ -1040,7 +1128,7 @@ function createStreamDecoder() {
1040
1128
  }
1041
1129
  function createDraft11Codec() {
1042
1130
  return {
1043
- draft: "draft-ietf-moq-transport-11",
1131
+ draft: "11",
1044
1132
  encodeMessage,
1045
1133
  decodeMessage,
1046
1134
  encodeSubgroupStream,
@@ -1055,6 +1143,13 @@ function createDraft11Codec() {
1055
1143
  }
1056
1144
 
1057
1145
  export {
1146
+ encodeSubgroupStream,
1147
+ encodeDatagram,
1148
+ encodeFetchStream,
1149
+ decodeSubgroupStream,
1150
+ decodeDatagram,
1151
+ decodeFetchStream,
1152
+ decodeDataStream,
1058
1153
  MSG_SUBSCRIBE_UPDATE,
1059
1154
  MSG_SUBSCRIBE,
1060
1155
  MSG_SUBSCRIBE_OK,
@@ -1087,13 +1182,6 @@ export {
1087
1182
  PARAM_DELIVERY_TIMEOUT,
1088
1183
  MESSAGE_TYPE_MAP,
1089
1184
  MESSAGE_ID_MAP,
1090
- encodeSubgroupStream,
1091
- encodeDatagram,
1092
- encodeFetchStream,
1093
- decodeSubgroupStream,
1094
- decodeDatagram,
1095
- decodeFetchStream,
1096
- decodeDataStream,
1097
1185
  encodeMessage,
1098
1186
  decodeMessage,
1099
1187
  createStreamDecoder,