@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/src/index.ts CHANGED
@@ -5,118 +5,65 @@
5
5
  * `createCodec()` factory which requires an explicit draft version.
6
6
  *
7
7
  * For direct access to a specific draft, use subpath imports:
8
- * import { createDraft07Codec } from '@moqtap/codec/draft7';
9
- * import { createDraft14Codec } from '@moqtap/codec/draft14';
8
+ * import { createDraft17Codec } from '@moqtap/codec/draft17';
10
9
  *
11
10
  * A default (versionless) codec will be available once the MoQT
12
11
  * specification reaches RFC status. Until then, always specify a draft.
13
12
  */
14
13
 
15
- import type { Codec, CodecOptions, Draft } from "./core/types.js";
16
- import { createDraft07Codec } from "./drafts/draft07/codec.js";
17
- import type { Draft08Codec } from "./drafts/draft08/codec.js";
18
- import { createDraft08Codec } from "./drafts/draft08/codec.js";
19
- import type { Draft09Codec } from "./drafts/draft09/codec.js";
20
- import { createDraft09Codec } from "./drafts/draft09/codec.js";
21
- import type { Draft10Codec } from "./drafts/draft10/codec.js";
22
- import { createDraft10Codec } from "./drafts/draft10/codec.js";
23
- import type { Draft11Codec } from "./drafts/draft11/codec.js";
24
- import { createDraft11Codec } from "./drafts/draft11/codec.js";
25
- import type { Draft12Codec } from "./drafts/draft12/codec.js";
26
- import { createDraft12Codec } from "./drafts/draft12/codec.js";
27
- import type { Draft13Codec } from "./drafts/draft13/codec.js";
28
- import { createDraft13Codec } from "./drafts/draft13/codec.js";
29
- import type { Draft14Codec } from "./drafts/draft14/codec.js";
30
- import { createDraft14Codec } from "./drafts/draft14/codec.js";
31
- import type { Draft15Codec } from "./drafts/draft15/codec.js";
32
- import { createDraft15Codec } from "./drafts/draft15/codec.js";
33
- import type { Draft16Codec } from "./drafts/draft16/codec.js";
34
- import { createDraft16Codec } from "./drafts/draft16/codec.js";
35
- import type { Draft17Codec } from "./drafts/draft17/codec.js";
36
- import { createDraft17Codec } from "./drafts/draft17/codec.js";
14
+ import type { CodecOptions } from './core/types.js'
15
+ import type { Draft07Codec } from './drafts/draft07/codec.js'
16
+ import { createDraft07Codec } from './drafts/draft07/codec.js'
17
+ import type { Draft08Codec } from './drafts/draft08/codec.js'
18
+ import { createDraft08Codec } from './drafts/draft08/codec.js'
19
+ import type { Draft09Codec } from './drafts/draft09/codec.js'
20
+ import { createDraft09Codec } from './drafts/draft09/codec.js'
21
+ import type { Draft10Codec } from './drafts/draft10/codec.js'
22
+ import { createDraft10Codec } from './drafts/draft10/codec.js'
23
+ import type { Draft11Codec } from './drafts/draft11/codec.js'
24
+ import { createDraft11Codec } from './drafts/draft11/codec.js'
25
+ import type { Draft12Codec } from './drafts/draft12/codec.js'
26
+ import { createDraft12Codec } from './drafts/draft12/codec.js'
27
+ import type { Draft13Codec } from './drafts/draft13/codec.js'
28
+ import { createDraft13Codec } from './drafts/draft13/codec.js'
29
+ import type { Draft14Codec } from './drafts/draft14/codec.js'
30
+ import { createDraft14Codec } from './drafts/draft14/codec.js'
31
+ import type { Draft15Codec } from './drafts/draft15/codec.js'
32
+ import { createDraft15Codec } from './drafts/draft15/codec.js'
33
+ import type { Draft16Codec } from './drafts/draft16/codec.js'
34
+ import { createDraft16Codec } from './drafts/draft16/codec.js'
35
+ import type { Draft17Codec } from './drafts/draft17/codec.js'
36
+ import { createDraft17Codec } from './drafts/draft17/codec.js'
37
37
 
38
- const DRAFT_ALIASES: Record<string, Draft> = {
39
- "07": "draft-ietf-moq-transport-07",
40
- "draft-ietf-moq-transport-07": "draft-ietf-moq-transport-07",
41
- "08": "draft-ietf-moq-transport-08",
42
- "draft-ietf-moq-transport-08": "draft-ietf-moq-transport-08",
43
- "09": "draft-ietf-moq-transport-09",
44
- "draft-ietf-moq-transport-09": "draft-ietf-moq-transport-09",
45
- "10": "draft-ietf-moq-transport-10",
46
- "draft-ietf-moq-transport-10": "draft-ietf-moq-transport-10",
47
- "11": "draft-ietf-moq-transport-11",
48
- "draft-ietf-moq-transport-11": "draft-ietf-moq-transport-11",
49
- "12": "draft-ietf-moq-transport-12",
50
- "draft-ietf-moq-transport-12": "draft-ietf-moq-transport-12",
51
- "13": "draft-ietf-moq-transport-13",
52
- "draft-ietf-moq-transport-13": "draft-ietf-moq-transport-13",
53
- "14": "draft-ietf-moq-transport-14",
54
- "draft-ietf-moq-transport-14": "draft-ietf-moq-transport-14",
55
- "15": "draft-ietf-moq-transport-15",
56
- "draft-ietf-moq-transport-15": "draft-ietf-moq-transport-15",
57
- "16": "draft-ietf-moq-transport-16",
58
- "draft-ietf-moq-transport-16": "draft-ietf-moq-transport-16",
59
- "17": "draft-ietf-moq-transport-17",
60
- "draft-ietf-moq-transport-17": "draft-ietf-moq-transport-17",
61
- };
62
-
63
- /**
64
- * Create a codec for draft-07 (returns full Codec with stream decoder).
65
- */
66
- export function createCodec(
67
- options: CodecOptions & { draft: "draft-ietf-moq-transport-07" | "07" },
68
- ): Codec;
69
- export function createCodec(
70
- options: CodecOptions & { draft: "draft-ietf-moq-transport-08" | "08" },
71
- ): Draft08Codec;
72
- export function createCodec(
73
- options: CodecOptions & { draft: "draft-ietf-moq-transport-09" | "09" },
74
- ): Draft09Codec;
75
- export function createCodec(
76
- options: CodecOptions & { draft: "draft-ietf-moq-transport-10" | "10" },
77
- ): Draft10Codec;
78
- /**
79
- * Create a codec for draft-11 (returns Draft11Codec with data stream support).
80
- */
81
- export function createCodec(
82
- options: CodecOptions & { draft: "draft-ietf-moq-transport-11" | "11" },
83
- ): Draft11Codec;
84
- /**
85
- * Create a codec for draft-12 (returns Draft12Codec with data stream support).
86
- */
87
- export function createCodec(
88
- options: CodecOptions & { draft: "draft-ietf-moq-transport-12" | "12" },
89
- ): Draft12Codec;
90
38
  /**
91
- * Create a codec for draft-13 (returns Draft13Codec with data stream support).
39
+ * Wire version numbers for each MoQT draft, keyed by short aliases.
92
40
  */
93
- export function createCodec(
94
- options: CodecOptions & { draft: "draft-ietf-moq-transport-13" | "13" },
95
- ): Draft13Codec;
96
- /**
97
- * Create a codec for draft-14 (returns Draft14Codec with data stream support).
98
- */
99
- export function createCodec(
100
- options: CodecOptions & { draft: "draft-ietf-moq-transport-14" | "14" },
101
- ): Draft14Codec;
102
- /**
103
- * Create a codec for draft-15 (returns Draft15Codec with data stream support).
104
- */
105
- export function createCodec(
106
- options: CodecOptions & { draft: "draft-ietf-moq-transport-15" | "15" },
107
- ): Draft15Codec;
108
- /**
109
- * Create a codec for draft-16 (returns Draft16Codec with data stream support).
110
- */
111
- export function createCodec(
112
- options: CodecOptions & { draft: "draft-ietf-moq-transport-16" | "16" },
113
- ): Draft16Codec;
114
- /**
115
- * Create a codec for draft-17 (returns Draft17Codec with data stream support).
116
- */
117
- export function createCodec(
118
- options: CodecOptions & { draft: "draft-ietf-moq-transport-17" | "17" },
119
- ): Draft17Codec;
41
+ export const DRAFT_VERSIONS: Record<string, bigint> = {
42
+ '07': 0xff000007n,
43
+ '08': 0xff000008n,
44
+ '09': 0xff000009n,
45
+ '10': 0xff00000an,
46
+ '11': 0xff00000bn,
47
+ '12': 0xff00000cn,
48
+ '13': 0xff00000dn,
49
+ '14': 0xff00000en,
50
+ '15': 0xff00000fn,
51
+ '16': 0xff000010n,
52
+ '17': 0xff000011n,
53
+ }
54
+
55
+ export function createCodec(options: CodecOptions & { draft: '07' }): Draft07Codec
56
+ export function createCodec(options: CodecOptions & { draft: '08' }): Draft08Codec
57
+ export function createCodec(options: CodecOptions & { draft: '09' }): Draft09Codec
58
+ export function createCodec(options: CodecOptions & { draft: '10' }): Draft10Codec
59
+ export function createCodec(options: CodecOptions & { draft: '11' }): Draft11Codec
60
+ export function createCodec(options: CodecOptions & { draft: '12' }): Draft12Codec
61
+ export function createCodec(options: CodecOptions & { draft: '13' }): Draft13Codec
62
+ export function createCodec(options: CodecOptions & { draft: '14' }): Draft14Codec
63
+ export function createCodec(options: CodecOptions & { draft: '15' }): Draft15Codec
64
+ export function createCodec(options: CodecOptions & { draft: '16' }): Draft16Codec
65
+ export function createCodec(options: CodecOptions & { draft: '17' }): Draft17Codec
66
+
120
67
  /**
121
68
  * Create a codec for the specified draft version.
122
69
  *
@@ -126,7 +73,7 @@ export function createCodec(
126
73
  export function createCodec(
127
74
  options: CodecOptions,
128
75
  ):
129
- | Codec
76
+ | Draft07Codec
130
77
  | Draft08Codec
131
78
  | Draft09Codec
132
79
  | Draft10Codec
@@ -136,11 +83,11 @@ export function createCodec(
136
83
  | Draft14Codec
137
84
  | Draft15Codec
138
85
  | Draft16Codec
139
- | Draft17Codec;
86
+ | Draft17Codec
140
87
  export function createCodec(
141
88
  options: CodecOptions,
142
89
  ):
143
- | Codec
90
+ | Draft07Codec
144
91
  | Draft08Codec
145
92
  | Draft09Codec
146
93
  | Draft10Codec
@@ -151,185 +98,49 @@ export function createCodec(
151
98
  | Draft15Codec
152
99
  | Draft16Codec
153
100
  | Draft17Codec {
154
- const draft = DRAFT_ALIASES[options.draft];
101
+ const draft = DRAFT_VERSIONS[options.draft]
155
102
  if (!draft) {
156
103
  throw new Error(
157
104
  `Unsupported draft: "${options.draft}". ` +
158
- `Use a draft-scoped import instead:\n` +
159
- ` import { createDraft07Codec } from '@moqtap/codec/draft7'\n` +
160
- ` import { createDraft08Codec } from '@moqtap/codec/draft8'\n` +
161
- ` import { createDraft09Codec } from '@moqtap/codec/draft9'\n` +
162
- ` import { createDraft10Codec } from '@moqtap/codec/draft10'\n` +
163
- ` import { createDraft11Codec } from '@moqtap/codec/draft11'\n` +
164
- ` import { createDraft12Codec } from '@moqtap/codec/draft12'\n` +
165
- ` import { createDraft13Codec } from '@moqtap/codec/draft13'\n` +
166
- ` import { createDraft14Codec } from '@moqtap/codec/draft14'\n` +
167
- ` import { createDraft15Codec } from '@moqtap/codec/draft15'\n` +
168
- ` import { createDraft16Codec } from '@moqtap/codec/draft16'\n` +
169
- ` import { createDraft17Codec } from '@moqtap/codec/draft17'\n` +
170
- `Supported draft values: ${Object.keys(DRAFT_ALIASES).join(", ")}`,
171
- );
105
+ `Use a draft-scoped import instead.\n` +
106
+ `Supported draft values: ${Object.keys(DRAFT_VERSIONS).join(', ')}`,
107
+ )
172
108
  }
173
109
 
174
- switch (draft) {
175
- case "draft-ietf-moq-transport-07":
176
- return createDraft07Codec();
177
- case "draft-ietf-moq-transport-08":
178
- return createDraft08Codec();
179
- case "draft-ietf-moq-transport-09":
180
- return createDraft09Codec();
181
- case "draft-ietf-moq-transport-10":
182
- return createDraft10Codec();
183
- case "draft-ietf-moq-transport-11":
184
- return createDraft11Codec();
185
- case "draft-ietf-moq-transport-12":
186
- return createDraft12Codec();
187
- case "draft-ietf-moq-transport-13":
188
- return createDraft13Codec();
189
- case "draft-ietf-moq-transport-14":
190
- return createDraft14Codec();
191
- case "draft-ietf-moq-transport-15":
192
- return createDraft15Codec();
193
- case "draft-ietf-moq-transport-16":
194
- return createDraft16Codec();
195
- case "draft-ietf-moq-transport-17":
196
- return createDraft17Codec();
110
+ switch (options.draft) {
111
+ case '07':
112
+ return createDraft07Codec()
113
+ case '08':
114
+ return createDraft08Codec()
115
+ case '09':
116
+ return createDraft09Codec()
117
+ case '10':
118
+ return createDraft10Codec()
119
+ case '11':
120
+ return createDraft11Codec()
121
+ case '12':
122
+ return createDraft12Codec()
123
+ case '13':
124
+ return createDraft13Codec()
125
+ case '14':
126
+ return createDraft14Codec()
127
+ case '15':
128
+ return createDraft15Codec()
129
+ case '16':
130
+ return createDraft16Codec()
131
+ case '17':
132
+ return createDraft17Codec()
197
133
  default:
198
- throw new Error(`Unsupported draft: ${draft}`);
134
+ throw new Error(`Unsupported draft: ${draft}`)
199
135
  }
200
136
  }
201
137
 
202
- // Re-export shared types
203
138
  export type {
204
- Announce,
205
- AnnounceCancel,
206
- AnnounceError,
207
- AnnounceOk,
208
139
  BaseCodec,
209
- ClientSetup,
210
- Codec,
211
140
  CodecOptions,
212
141
  DecodeErrorCode,
213
142
  DecodeResult,
214
143
  Draft,
215
- DraftShorthand,
216
- Fetch,
217
- FetchCancel,
218
- FetchError,
219
- FetchOk,
220
- FilterType,
221
- GoAway,
222
- GroupOrderValue,
223
- MaxSubscribeId,
224
- MoqtMessage,
225
- MoqtMessageType,
226
- ObjectDatagram,
227
- ObjectStream,
228
- ServerSetup,
229
- StreamHeaderGroup,
230
- StreamHeaderSubgroup,
231
- StreamHeaderTrack,
232
- Subscribe,
233
- SubscribeAnnounces,
234
- SubscribeAnnouncesError,
235
- SubscribeAnnouncesOk,
236
- SubscribeDone,
237
- SubscribeError,
238
- SubscribeOk,
239
- SubscribeUpdate,
240
- TrackStatus,
241
- TrackStatusRequest,
242
- Unannounce,
243
- Unsubscribe,
244
- UnsubscribeAnnounces,
245
- } from "./core/types.js";
246
- export { DecodeError } from "./core/types.js";
247
-
248
- // Re-export draft-08 types
249
- export type { Draft08Codec } from "./drafts/draft08/codec.js";
250
- export type {
251
- Draft08DataStream,
252
- Draft08Message,
253
- Draft08Params,
254
- Draft08SetupParams,
255
- } from "./drafts/draft08/types.js";
256
-
257
- // Re-export draft-09 types
258
- export type { Draft09Codec } from "./drafts/draft09/codec.js";
259
- export type {
260
- Draft09DataStream,
261
- Draft09Message,
262
- Draft09Params,
263
- Draft09SetupParams,
264
- } from "./drafts/draft09/types.js";
265
-
266
- // Re-export draft-10 types
267
- export type { Draft10Codec } from "./drafts/draft10/codec.js";
268
- export type {
269
- Draft10DataStream,
270
- Draft10Message,
271
- Draft10Params,
272
- Draft10SetupParams,
273
- } from "./drafts/draft10/types.js";
274
-
275
- // Re-export draft-11 types
276
- export type { Draft11Codec } from "./drafts/draft11/codec.js";
277
- export type {
278
- Draft11DataStream,
279
- Draft11Message,
280
- Draft11Params,
281
- Draft11SetupParams,
282
- } from "./drafts/draft11/types.js";
283
-
284
- // Re-export draft-12 types
285
- export type { Draft12Codec } from "./drafts/draft12/codec.js";
286
- export type {
287
- Draft12DataStream,
288
- Draft12Message,
289
- Draft12Params,
290
- Draft12SetupParams,
291
- } from "./drafts/draft12/types.js";
292
-
293
- // Re-export draft-13 types
294
- export type { Draft13Codec } from "./drafts/draft13/codec.js";
295
- export type {
296
- Draft13DataStream,
297
- Draft13Message,
298
- Draft13Params,
299
- Draft13SetupParams,
300
- } from "./drafts/draft13/types.js";
301
-
302
- // Re-export draft-14 types
303
- export type { Draft14Codec } from "./drafts/draft14/codec.js";
304
- export type {
305
- Draft14DataStream,
306
- Draft14Message,
307
- Draft14Params,
308
- } from "./drafts/draft14/types.js";
309
-
310
- // Re-export draft-15 types
311
- export type { Draft15Codec } from "./drafts/draft15/codec.js";
312
- export type {
313
- Draft15DataStream,
314
- Draft15Message,
315
- Draft15Params,
316
- Draft15SetupParams,
317
- } from "./drafts/draft15/types.js";
318
-
319
- // Re-export draft-16 types
320
- export type { Draft16Codec } from "./drafts/draft16/codec.js";
321
- export type {
322
- Draft16DataStream,
323
- Draft16Message,
324
- Draft16Params,
325
- Draft16SetupParams,
326
- } from "./drafts/draft16/types.js";
327
-
328
- // Re-export draft-17 types
329
- export type { Draft17Codec } from "./drafts/draft17/codec.js";
330
- export type {
331
- Draft17DataStream,
332
- Draft17Message,
333
- Draft17Params,
334
- Draft17SetupOptions,
335
- } from "./drafts/draft17/types.js";
144
+ } from './core/types.js'
145
+ // Re-export shared types
146
+ export { DecodeError } from './core/types.js'
package/src/session.ts CHANGED
@@ -7,34 +7,73 @@
7
7
  * import { createDraft14SessionState } from '@moqtap/codec/draft14/session';
8
8
  */
9
9
 
10
- import type { SessionState, SessionStateOptions } from "./core/session-types.js";
11
- import { createDraft07SessionState } from "./drafts/draft07/session.js";
12
- import { createDraft14SessionState } from "./drafts/draft14/session.js";
10
+ import type { SessionState, SessionStateOptions } from './core/session-types.js'
11
+ import type { Draft } from './core/types.js'
12
+ import { createDraft07SessionState } from './drafts/draft07/session.js'
13
+ import type { Draft07Message, Draft07MessageType } from './drafts/draft07/types.js'
14
+ import { createDraft08SessionState } from './drafts/draft08/session.js'
15
+ import type { Draft08Message, Draft08MessageType } from './drafts/draft08/types.js'
16
+ import { createDraft09SessionState } from './drafts/draft09/session.js'
17
+ import type { Draft09Message, Draft09MessageType } from './drafts/draft09/types.js'
18
+ import { createDraft10SessionState } from './drafts/draft10/session.js'
19
+ import type { Draft10Message, Draft10MessageType } from './drafts/draft10/types.js'
20
+ import { createDraft11SessionState } from './drafts/draft11/session.js'
21
+ import type { Draft11Message, Draft11MessageType } from './drafts/draft11/types.js'
22
+ import { createDraft12SessionState } from './drafts/draft12/session.js'
23
+ import type { Draft12Message, Draft12MessageType } from './drafts/draft12/types.js'
24
+ import { createDraft13SessionState } from './drafts/draft13/session.js'
25
+ import type { Draft13Message, Draft13MessageType } from './drafts/draft13/types.js'
26
+ import { createDraft14SessionState } from './drafts/draft14/session.js'
27
+ import type { Draft14Message, Draft14MessageType } from './drafts/draft14/types.js'
28
+ import { createDraft15SessionState } from './drafts/draft15/session.js'
29
+ import type { Draft15Message, Draft15MessageType } from './drafts/draft15/types.js'
30
+ import { createDraft16SessionState } from './drafts/draft16/session.js'
31
+ import type { Draft16Message, Draft16MessageType } from './drafts/draft16/types.js'
32
+ import { createDraft17SessionState } from './drafts/draft17/session.js'
33
+ import type { Draft17Message, Draft17MessageType } from './drafts/draft17/types.js'
34
+
35
+ type DraftSessionStateMap = {
36
+ '07': SessionState<Draft07Message, Draft07MessageType>
37
+ '08': SessionState<Draft08Message, Draft08MessageType>
38
+ '09': SessionState<Draft09Message, Draft09MessageType>
39
+ '10': SessionState<Draft10Message, Draft10MessageType>
40
+ '11': SessionState<Draft11Message, Draft11MessageType>
41
+ '12': SessionState<Draft12Message, Draft12MessageType>
42
+ '13': SessionState<Draft13Message, Draft13MessageType>
43
+ '14': SessionState<Draft14Message, Draft14MessageType>
44
+ '15': SessionState<Draft15Message, Draft15MessageType>
45
+ '16': SessionState<Draft16Message, Draft16MessageType>
46
+ '17': SessionState<Draft17Message, Draft17MessageType>
47
+ }
13
48
 
14
49
  /**
15
50
  * Create a session state machine for the given draft version.
16
- *
17
- * For type-safe access with draft-specific message types, use the
18
- * draft-scoped factory functions directly:
19
- * import { createDraft07SessionState } from '@moqtap/codec/draft7/session';
20
- * import { createDraft14SessionState } from '@moqtap/codec/draft14/session';
21
51
  */
22
- export function createSessionState(options: SessionStateOptions): SessionState<unknown, string> {
23
- const draft = options.codec.draft;
52
+ export function createSessionState<T extends Draft>(
53
+ options: SessionStateOptions<T>,
54
+ ): DraftSessionStateMap[T] {
55
+ const draft = options.codec.draft
56
+
57
+ const factories: Record<Draft, (role: 'client' | 'server') => DraftSessionStateMap[Draft]> = {
58
+ '07': createDraft07SessionState,
59
+ '08': createDraft08SessionState,
60
+ '09': createDraft09SessionState,
61
+ '10': createDraft10SessionState,
62
+ '11': createDraft11SessionState,
63
+ '12': createDraft12SessionState,
64
+ '13': createDraft13SessionState,
65
+ '14': createDraft14SessionState,
66
+ '15': createDraft15SessionState,
67
+ '16': createDraft16SessionState,
68
+ '17': createDraft17SessionState,
69
+ }
24
70
 
25
- switch (draft) {
26
- case "draft-ietf-moq-transport-07":
27
- return createDraft07SessionState(options);
28
- case "draft-ietf-moq-transport-14":
29
- return createDraft14SessionState(options) as SessionState<unknown, string>;
30
- default:
31
- throw new Error(
32
- `Unsupported draft for session: "${draft}". ` +
33
- `Use a draft-scoped import instead:\n` +
34
- ` import { createDraft07SessionState } from '@moqtap/codec/draft7/session'\n` +
35
- ` import { createDraft14SessionState } from '@moqtap/codec/draft14/session'`,
36
- );
71
+ const factory = factories[draft]
72
+ if (!factory) {
73
+ throw new Error(`Unsupported draft for session: "${draft}". Use a draft-scoped import instead.`)
37
74
  }
75
+
76
+ return factory(options.role) as DraftSessionStateMap[T]
38
77
  }
39
78
 
40
79
  // Re-export all session types
@@ -55,4 +94,4 @@ export type {
55
94
  SubscriptionState,
56
95
  TransitionResult,
57
96
  ValidationResult,
58
- } from "./core/session-types.js";
97
+ } from './core/session-types.js'