@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
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 moqtap
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 moqtap
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,99 +1,100 @@
1
- # @moqtap/codec
2
-
3
- MoQT (Media over QUIC Transport) wire-format codec and session state machine for JavaScript/TypeScript.
4
-
5
- - Multi-draft support (drafts 07 through 17)
6
- - Stateless encode/decode of all MoQT control messages and data streams
7
- - Protocol session state machine with FSM-based validation per draft
8
- - Zero runtime dependencies
9
- - Works in Node.js, Bun, and browsers
10
- - Full TypeScript types with discriminated unions
11
-
12
- ## Install
13
-
14
- ```bash
15
- npm install @moqtap/codec
16
- ```
17
-
18
- ## Quick Start
19
-
20
- MoQT is pre-RFC, so a draft version must always be specified. Use draft-scoped imports for the best experience:
21
-
22
- ```typescript
23
- import { createDraft07Codec } from '@moqtap/codec/draft7';
24
-
25
- const codec = createDraft07Codec();
26
-
27
- // Decode a message from bytes
28
- const result = codec.decodeMessage(bytes);
29
- if (result.ok) {
30
- console.log(result.value.type); // e.g. 'subscribe'
31
- }
32
-
33
- // Encode a message to bytes
34
- const encoded = codec.encodeMessage({
35
- type: 'client_setup',
36
- supportedVersions: [0xff000007n],
37
- parameters: new Map(),
38
- });
39
- ```
40
-
41
- Or use the factory if your application supports multiple drafts:
42
-
43
- ```typescript
44
- import { createCodec } from '@moqtap/codec';
45
-
46
- const codec = createCodec({ draft: '17' }); // '07' through '17'
47
- ```
48
-
49
- ## Subpath Exports
50
-
51
- Each draft is available as a subpath import with its own codec and session state machine:
52
-
53
- | Import path | Description |
54
- |---|---|
55
- | `@moqtap/codec` | Factory + shared types (`createCodec({ draft })`) |
56
- | `@moqtap/codec/draft7` | Draft-07 codec |
57
- | `@moqtap/codec/draft8` | Draft-08 codec |
58
- | `@moqtap/codec/draft9` | Draft-09 codec |
59
- | `@moqtap/codec/draft10` | Draft-10 codec |
60
- | `@moqtap/codec/draft11` | Draft-11 codec |
61
- | `@moqtap/codec/draft12` | Draft-12 codec |
62
- | `@moqtap/codec/draft13` | Draft-13 codec |
63
- | `@moqtap/codec/draft14` | Draft-14 codec |
64
- | `@moqtap/codec/draft15` | Draft-15 codec |
65
- | `@moqtap/codec/draft16` | Draft-16 codec |
66
- | `@moqtap/codec/draft17` | Draft-17 codec |
67
- | `@moqtap/codec/draft{N}/session` | Session state machine for draft N |
68
-
69
- > **Note:** A default (versionless) codec will be available once the MoQT specification reaches RFC status. Until then, always specify a draft version.
70
-
71
- ## Draft-Specific Imports
72
-
73
- For applications targeting a single draft version:
74
-
75
- ```typescript
76
- import { createDraft17Codec } from '@moqtap/codec/draft17';
77
- import { createDraft17SessionState } from '@moqtap/codec/draft17/session';
78
- ```
79
-
80
- ## Session State Machine
81
-
82
- Validate protocol message sequences without transport coupling:
83
-
84
- ```typescript
85
- import { createDraft17SessionState } from '@moqtap/codec/draft17/session';
86
- import { createDraft17Codec } from '@moqtap/codec/draft17';
87
-
88
- const codec = createDraft17Codec();
89
- const session = createDraft17SessionState({ codec, role: 'client' });
90
-
91
- const result = session.receive(incomingMessage);
92
- if (!result.ok) {
93
- console.error('Protocol violation:', result.violation);
94
- }
95
- ```
96
-
97
- ## License
98
-
99
- MIT
1
+ # @moqtap/codec
2
+
3
+ MoQT (Media over QUIC Transport) wire-format codec and session state machine for JavaScript/TypeScript.
4
+
5
+ - Multi-draft support (drafts 07 through 17)
6
+ - Stateless encode/decode of all MoQT control messages and data streams
7
+ - Protocol session state machine with FSM-based validation per draft
8
+ - Zero runtime dependencies
9
+ - Works in Node.js, Bun, and browsers
10
+ - Full TypeScript types with discriminated unions
11
+
12
+ ## Install
13
+
14
+ ```bash
15
+ npm install @moqtap/codec
16
+ ```
17
+
18
+ ## Quick Start
19
+
20
+ MoQT is pre-RFC, so a draft version must always be specified. Use draft-scoped imports for the best experience:
21
+
22
+ ```typescript
23
+ import { createDraft07Codec, DRAFT_VERSION } from '@moqtap/codec/draft7'
24
+
25
+ const codec = createDraft07Codec()
26
+
27
+ // Decode a message from bytes
28
+ const result = codec.decodeMessage(bytes)
29
+ if (result.ok) {
30
+ console.log(result.value.type) // e.g. 'subscribe'
31
+ }
32
+
33
+ // Encode a message to bytes
34
+ const encoded = codec.encodeMessage({
35
+ type: 'client_setup',
36
+ supportedVersions: [DRAFT_VERSION],
37
+ parameters: new Map(),
38
+ })
39
+ ```
40
+
41
+ Or use the factory if your application supports multiple drafts:
42
+
43
+ ```typescript
44
+ import { createCodec, DRAFT_VERSIONS } from '@moqtap/codec'
45
+
46
+ const codec = createCodec({ draft: '17' }) // '07' through '17'
47
+
48
+ // DRAFT_VERSIONS provides wire version numbers under short aliases:
49
+ // DRAFT_VERSIONS['07'] 0xff000007n
50
+ ```
51
+
52
+ ## Subpath Exports
53
+
54
+ Each draft is available as a subpath import with its own codec and session state machine:
55
+
56
+ | Import path | Description |
57
+ | -------------------------------- | ------------------------------------------------- |
58
+ | `@moqtap/codec` | Factory + shared types (`createCodec({ draft })`) |
59
+ | `@moqtap/codec/draft7` | Draft-07 codec |
60
+ | `@moqtap/codec/draft8` | Draft-08 codec |
61
+ | `@moqtap/codec/draft9` | Draft-09 codec |
62
+ | `@moqtap/codec/draft10` | Draft-10 codec |
63
+ | `@moqtap/codec/draft11` | Draft-11 codec |
64
+ | `@moqtap/codec/draft12` | Draft-12 codec |
65
+ | `@moqtap/codec/draft13` | Draft-13 codec |
66
+ | `@moqtap/codec/draft14` | Draft-14 codec |
67
+ | `@moqtap/codec/draft15` | Draft-15 codec |
68
+ | `@moqtap/codec/draft16` | Draft-16 codec |
69
+ | `@moqtap/codec/draft17` | Draft-17 codec |
70
+ | `@moqtap/codec/draft{N}/session` | Session state machine for draft N |
71
+
72
+ > **Note:** A default (versionless) codec will be available once the MoQT specification reaches RFC status. Until then, always specify a draft version.
73
+
74
+ ## Draft-Specific Imports
75
+
76
+ For applications targeting a single draft version:
77
+
78
+ ```typescript
79
+ import { createDraft17Codec } from '@moqtap/codec/draft17'
80
+ import { createDraft17SessionState } from '@moqtap/codec/draft17/session'
81
+ ```
82
+
83
+ ## Session State Machine
84
+
85
+ Validate protocol message sequences without transport coupling:
86
+
87
+ ```typescript
88
+ import { createDraft17SessionState } from '@moqtap/codec/draft17/session'
89
+
90
+ const session = createDraft17SessionState('client')
91
+
92
+ const result = session.receive(incomingMessage)
93
+ if (!result.ok) {
94
+ console.error('Protocol violation:', result.violation)
95
+ }
96
+ ```
97
+
98
+ ## License
99
+
100
+ MIT
@@ -310,7 +310,11 @@ var Draft13SessionFSM = class {
310
310
  };
311
311
  }
312
312
  this._phase = "ready";
313
- return { ok: true, phase: this._phase, sideEffects: [{ type: "session-ready" }] };
313
+ return {
314
+ ok: true,
315
+ phase: this._phase,
316
+ sideEffects: [{ type: "session-ready" }]
317
+ };
314
318
  }
315
319
  handleGoAway(message, sideEffects) {
316
320
  if (this._phase !== "ready" && this._phase !== "draining") {
@@ -326,7 +330,10 @@ var Draft13SessionFSM = class {
326
330
  }
327
331
  this._phase = "draining";
328
332
  const goaway = message;
329
- sideEffects.push({ type: "session-draining", goAwayUri: goaway.new_session_uri });
333
+ sideEffects.push({
334
+ type: "session-draining",
335
+ goAwayUri: goaway.new_session_uri
336
+ });
330
337
  return { ok: true, phase: this._phase, sideEffects };
331
338
  }
332
339
  requireReady(msgType) {
@@ -384,7 +391,10 @@ var Draft13SessionFSM = class {
384
391
  )
385
392
  };
386
393
  this._subscriptions.set(ok.request_id, { ...existing, phase: "active" });
387
- sideEffects.push({ type: "subscription-activated", subscribeId: ok.request_id });
394
+ sideEffects.push({
395
+ type: "subscription-activated",
396
+ subscribeId: ok.request_id
397
+ });
388
398
  return { ok: true, phase: this._phase, sideEffects };
389
399
  }
390
400
  handleSubscribeError(message, sideEffects) {
@@ -508,7 +518,10 @@ var Draft13SessionFSM = class {
508
518
  const ann = message;
509
519
  const nsKey = ann.track_namespace.join("/");
510
520
  this._requestIds.add(ann.request_id);
511
- this._announces.set(nsKey, { namespace: ann.track_namespace, phase: "pending" });
521
+ this._announces.set(nsKey, {
522
+ namespace: ann.track_namespace,
523
+ phase: "pending"
524
+ });
512
525
  return { ok: true, phase: this._phase, sideEffects };
513
526
  }
514
527
  handleAnnounceOk(message, sideEffects) {
@@ -535,7 +548,10 @@ var Draft13SessionFSM = class {
535
548
  const existing = this._announces.get(nsKey);
536
549
  if (existing) {
537
550
  this._announces.delete(nsKey);
538
- sideEffects.push({ type: "announce-ended", namespace: unann.track_namespace });
551
+ sideEffects.push({
552
+ type: "announce-ended",
553
+ namespace: unann.track_namespace
554
+ });
539
555
  }
540
556
  return { ok: true, phase: this._phase, sideEffects };
541
557
  }
@@ -547,7 +563,10 @@ var Draft13SessionFSM = class {
547
563
  const existing = this._announces.get(nsKey);
548
564
  if (existing) {
549
565
  this._announces.delete(nsKey);
550
- sideEffects.push({ type: "announce-ended", namespace: cancel.track_namespace });
566
+ sideEffects.push({
567
+ type: "announce-ended",
568
+ namespace: cancel.track_namespace
569
+ });
551
570
  }
552
571
  return { ok: true, phase: this._phase, sideEffects };
553
572
  }
@@ -585,7 +604,10 @@ var Draft13SessionFSM = class {
585
604
  const dupErr = this.checkDuplicateRequestId(fetch.request_id, message.type);
586
605
  if (dupErr) return { ok: false, violation: dupErr };
587
606
  this._requestIds.add(fetch.request_id);
588
- this._fetches.set(fetch.request_id, { requestId: fetch.request_id, phase: "pending" });
607
+ this._fetches.set(fetch.request_id, {
608
+ requestId: fetch.request_id,
609
+ phase: "pending"
610
+ });
589
611
  return { ok: true, phase: this._phase, sideEffects };
590
612
  }
591
613
  handleFetchOk(message, sideEffects) {
@@ -662,7 +684,11 @@ var Draft13SessionFSM = class {
662
684
  )
663
685
  };
664
686
  this._fetches.set(cancel.request_id, { ...existing, phase: "cancelled" });
665
- sideEffects.push({ type: "fetch-ended", requestId: cancel.request_id, reason: "cancelled" });
687
+ sideEffects.push({
688
+ type: "fetch-ended",
689
+ requestId: cancel.request_id,
690
+ reason: "cancelled"
691
+ });
666
692
  return { ok: true, phase: this._phase, sideEffects };
667
693
  }
668
694
  // ─── Track status lifecycle ───
@@ -733,8 +759,8 @@ var Draft13SessionFSM = class {
733
759
  };
734
760
 
735
761
  // src/drafts/draft13/session.ts
736
- function createDraft13SessionState(options) {
737
- return new Draft13SessionFSM(options.role);
762
+ function createDraft13SessionState(role) {
763
+ return new Draft13SessionFSM(role);
738
764
  }
739
765
 
740
766
  export {