@moqtap/codec 0.2.3 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +100 -99
  3. package/dist/{chunk-RZHAPEXO.js → chunk-2A57DRXV.js} +36 -10
  4. package/dist/{chunk-73MWUKSJ.js → chunk-2UTVXWFF.js} +190 -102
  5. package/dist/{chunk-JTVCOMBI.cjs → chunk-3XKO6PCR.cjs} +290 -183
  6. package/dist/{chunk-ACQ4CUJP.cjs → chunk-4BDEU3D4.cjs} +237 -158
  7. package/dist/{chunk-4N4INRE7.cjs → chunk-4HBKHNU2.cjs} +144 -110
  8. package/dist/{chunk-2ZT6CVSE.js → chunk-4IVZZOY3.js} +269 -162
  9. package/dist/{chunk-GLBQDG4L.cjs → chunk-5O764MBD.cjs} +508 -117
  10. package/dist/chunk-7KBAWOBA.js +1212 -0
  11. package/dist/{chunk-JSQM2MG3.js → chunk-7QOPNSDF.js} +44 -12
  12. package/dist/{chunk-SYHW3FLI.cjs → chunk-7RE6KSIY.cjs} +28 -8
  13. package/dist/{chunk-YG5KJESI.js → chunk-AY6IAHUM.js} +28 -8
  14. package/dist/{chunk-EFM5T7OM.js → chunk-BLQDWOSG.js} +36 -10
  15. package/dist/{chunk-UYXTY6ZQ.cjs → chunk-E65QKRSN.cjs} +20 -12
  16. package/dist/{chunk-BISI45MN.cjs → chunk-EAHE3IOG.cjs} +44 -12
  17. package/dist/{chunk-PZBPH2D7.js → chunk-GCBFHZW6.js} +216 -137
  18. package/dist/{chunk-GXEW4COZ.cjs → chunk-H5NSL4MO.cjs} +36 -10
  19. package/dist/chunk-HZHSO7EW.cjs +1212 -0
  20. package/dist/{chunk-KZCYQ7ED.cjs → chunk-IILNSDEQ.cjs} +69 -41
  21. package/dist/{chunk-4XYGE53S.cjs → chunk-J3XCPBW3.cjs} +36 -10
  22. package/dist/{chunk-6AEHWULA.cjs → chunk-JKOEJZ5B.cjs} +28 -8
  23. package/dist/{chunk-RUPCJTC3.cjs → chunk-JL3NEW3O.cjs} +23 -1
  24. package/dist/{chunk-G7GI7LJA.js → chunk-LORZMJJB.js} +36 -10
  25. package/dist/{chunk-DUBCL3WF.cjs → chunk-LV5C6MEC.cjs} +36 -10
  26. package/dist/{chunk-ENURAVHI.cjs → chunk-MYXAD5JC.cjs} +44 -12
  27. package/dist/{chunk-FXZ2MYKJ.js → chunk-MZ7HUCGJ.js} +20 -12
  28. package/dist/{chunk-S74DWJE2.cjs → chunk-OKG2HT25.cjs} +277 -88
  29. package/dist/{chunk-BGWGVINJ.cjs → chunk-PKEOQSSZ.cjs} +144 -110
  30. package/dist/{chunk-2GODRVT5.js → chunk-Q46ZURKX.js} +325 -48
  31. package/dist/{chunk-UR6JKS56.js → chunk-Q7IGWV3P.js} +41 -9
  32. package/dist/{chunk-XSNX2IUJ.js → chunk-RW4UG7CN.js} +121 -87
  33. package/dist/{chunk-DWK5ZQZ4.js → chunk-RZTLQAKF.js} +28 -8
  34. package/dist/{chunk-UNS34PTA.cjs → chunk-S6IPIN66.cjs} +44 -12
  35. package/dist/{chunk-YIG2C3LF.cjs → chunk-SDWRXXOO.cjs} +214 -126
  36. package/dist/{chunk-CEH7ESNC.js → chunk-SHMA4PBY.js} +121 -87
  37. package/dist/{chunk-MC7W6PMI.js → chunk-U3ZVLT5L.js} +483 -135
  38. package/dist/{chunk-VJUUZ4W2.cjs → chunk-UJU63EFY.cjs} +374 -97
  39. package/dist/{chunk-7L43FE6P.js → chunk-VOU7PNHI.js} +23 -1
  40. package/dist/{chunk-E6E3NQYU.js → chunk-WRHGCVYN.js} +44 -12
  41. package/dist/{chunk-FPISPJ5N.cjs → chunk-XNWYLVGU.cjs} +529 -181
  42. package/dist/{chunk-U3IPZYPX.js → chunk-XS77RBY7.js} +228 -39
  43. package/dist/{chunk-JGG7CMSZ.cjs → chunk-XZE5R57R.cjs} +144 -110
  44. package/dist/{chunk-77MNXX3M.js → chunk-Y6KCSM3V.js} +121 -87
  45. package/dist/{chunk-TLYNOOQP.cjs → chunk-YTPZZI2M.cjs} +41 -9
  46. package/dist/{chunk-7DUBLRXC.js → chunk-YWRCSQBA.js} +44 -12
  47. package/dist/{chunk-MRJWLGYH.js → chunk-Z3VKP3PJ.js} +69 -41
  48. package/dist/{chunk-E6P74GDT.js → chunk-Z6U26IRI.js} +464 -73
  49. package/dist/{codec-FvGCxIhr.d.ts → codec-25u4_1HS.d.ts} +4 -4
  50. package/dist/{codec-DRcsBCsb.d.ts → codec-3Ppy_5Gd.d.ts} +4 -4
  51. package/dist/{codec-BdVMRMOI.d.ts → codec-BB0U8MF2.d.cts} +4 -4
  52. package/dist/{codec-B2cH-f5V.d.cts → codec-BHHfBTnV.d.ts} +4 -4
  53. package/dist/{codec-B5K73Bdj.d.ts → codec-BN6jk0Td.d.cts} +4 -4
  54. package/dist/{codec-R8GrCPt2.d.ts → codec-BU0gaSZm.d.ts} +4 -4
  55. package/dist/{codec-Bq-tLtfP.d.ts → codec-C-Yk2RNa.d.ts} +4 -4
  56. package/dist/codec-CFWQY9Lj.d.cts +18 -0
  57. package/dist/{codec-CPlK3Pi5.d.ts → codec-COy4uuPO.d.cts} +4 -4
  58. package/dist/codec-CewFCsEy.d.ts +18 -0
  59. package/dist/{codec-KXHvXZVb.d.cts → codec-Ck7ZwFF1.d.cts} +4 -4
  60. package/dist/{codec-DZhZSIii.d.cts → codec-D2QVSH9D.d.ts} +4 -4
  61. package/dist/{codec-BwFgpeQu.d.ts → codec-DDUBJGn0.d.cts} +4 -4
  62. package/dist/{codec-BFeliJFc.d.ts → codec-DNfml-se.d.ts} +4 -4
  63. package/dist/{codec-C4n1PS09.d.cts → codec-DoOGjjDq.d.cts} +4 -4
  64. package/dist/{codec-Bap882Fh.d.cts → codec-J7ekOSMc.d.ts} +4 -4
  65. package/dist/{codec-SKBeHQk7.d.ts → codec-R9TJCq-E.d.cts} +4 -4
  66. package/dist/{codec-DNUIgLqc.d.cts → codec-ZwV-Njt6.d.ts} +4 -4
  67. package/dist/{codec-HgBgHkFI.d.cts → codec-j819z_hL.d.cts} +4 -4
  68. package/dist/{codec-DY4QH364.d.cts → codec-w8z2j_uo.d.cts} +4 -4
  69. package/dist/{codec-CPvPq0sb.d.cts → codec-wtt6WF1K.d.ts} +4 -4
  70. package/dist/{codec-BUMjz0J4.d.cts → codec-z6_2PSzi.d.cts} +4 -4
  71. package/dist/{draft7-session.cjs → draft07-session.cjs} +2 -2
  72. package/dist/draft07-session.d.cts +8 -0
  73. package/dist/draft07-session.d.ts +8 -0
  74. package/dist/{draft7-session.js → draft07-session.js} +1 -1
  75. package/dist/draft07.cjs +129 -0
  76. package/dist/draft07.d.cts +67 -0
  77. package/dist/draft07.d.ts +67 -0
  78. package/dist/draft07.js +129 -0
  79. package/dist/draft08-session.cjs +6 -0
  80. package/dist/draft08-session.d.cts +8 -0
  81. package/dist/draft08-session.d.ts +8 -0
  82. package/dist/{draft8-session.js → draft08-session.js} +1 -1
  83. package/dist/draft08.cjs +119 -0
  84. package/dist/{draft8.d.cts → draft08.d.cts} +15 -13
  85. package/dist/{draft8.d.ts → draft08.d.ts} +15 -13
  86. package/dist/{draft8.js → draft08.js} +7 -4
  87. package/dist/draft09-session.cjs +6 -0
  88. package/dist/draft09-session.d.cts +8 -0
  89. package/dist/draft09-session.d.ts +8 -0
  90. package/dist/{draft9-session.js → draft09-session.js} +1 -1
  91. package/dist/draft09.cjs +119 -0
  92. package/dist/{draft9.d.cts → draft09.d.cts} +15 -13
  93. package/dist/{draft9.d.ts → draft09.d.ts} +15 -13
  94. package/dist/{draft9.js → draft09.js} +7 -4
  95. package/dist/draft10-session.cjs +2 -2
  96. package/dist/draft10-session.d.cts +6 -6
  97. package/dist/draft10-session.d.ts +6 -6
  98. package/dist/draft10-session.js +1 -1
  99. package/dist/draft10.cjs +8 -5
  100. package/dist/draft10.d.cts +14 -12
  101. package/dist/draft10.d.ts +14 -12
  102. package/dist/draft10.js +16 -13
  103. package/dist/draft11-session.cjs +2 -2
  104. package/dist/draft11-session.d.cts +6 -6
  105. package/dist/draft11-session.d.ts +6 -6
  106. package/dist/draft11-session.js +1 -1
  107. package/dist/draft11.cjs +8 -5
  108. package/dist/draft11.d.cts +14 -12
  109. package/dist/draft11.d.ts +14 -12
  110. package/dist/draft11.js +16 -13
  111. package/dist/draft12-session.cjs +2 -2
  112. package/dist/draft12-session.d.cts +6 -6
  113. package/dist/draft12-session.d.ts +6 -6
  114. package/dist/draft12-session.js +1 -1
  115. package/dist/draft12.cjs +8 -5
  116. package/dist/draft12.d.cts +16 -14
  117. package/dist/draft12.d.ts +16 -14
  118. package/dist/draft12.js +16 -13
  119. package/dist/draft13-session.cjs +2 -2
  120. package/dist/draft13-session.d.cts +6 -6
  121. package/dist/draft13-session.d.ts +6 -6
  122. package/dist/draft13-session.js +1 -1
  123. package/dist/draft13.cjs +8 -5
  124. package/dist/draft13.d.cts +16 -14
  125. package/dist/draft13.d.ts +16 -14
  126. package/dist/draft13.js +16 -13
  127. package/dist/draft14-session.cjs +2 -2
  128. package/dist/draft14-session.d.cts +6 -6
  129. package/dist/draft14-session.d.ts +6 -6
  130. package/dist/draft14-session.js +1 -1
  131. package/dist/draft14.cjs +14 -5
  132. package/dist/draft14.d.cts +14 -12
  133. package/dist/draft14.d.ts +14 -12
  134. package/dist/draft14.js +13 -4
  135. package/dist/draft15-session.cjs +2 -2
  136. package/dist/draft15-session.d.cts +6 -6
  137. package/dist/draft15-session.d.ts +6 -6
  138. package/dist/draft15-session.js +1 -1
  139. package/dist/draft15.cjs +8 -5
  140. package/dist/draft15.d.cts +14 -12
  141. package/dist/draft15.d.ts +14 -12
  142. package/dist/draft15.js +16 -13
  143. package/dist/draft16-session.cjs +2 -2
  144. package/dist/draft16-session.d.cts +6 -6
  145. package/dist/draft16-session.d.ts +6 -6
  146. package/dist/draft16-session.js +1 -1
  147. package/dist/draft16.cjs +8 -5
  148. package/dist/draft16.d.cts +14 -12
  149. package/dist/draft16.d.ts +14 -12
  150. package/dist/draft16.js +16 -13
  151. package/dist/draft17-session.cjs +2 -2
  152. package/dist/draft17-session.d.cts +7 -7
  153. package/dist/draft17-session.d.ts +7 -7
  154. package/dist/draft17-session.js +1 -1
  155. package/dist/draft17.cjs +8 -5
  156. package/dist/draft17.d.cts +11 -9
  157. package/dist/draft17.d.ts +11 -9
  158. package/dist/draft17.js +16 -13
  159. package/dist/index.cjs +52 -74
  160. package/dist/index.d.cts +41 -60
  161. package/dist/index.d.ts +41 -60
  162. package/dist/index.js +40 -62
  163. package/dist/{session-types-CJIFbTPd.d.ts → session-types-C7UONex5.d.cts} +28 -27
  164. package/dist/{session-types-Cbq8IGCP.d.cts → session-types-X-IYEGoG.d.ts} +28 -27
  165. package/dist/session.cjs +46 -13
  166. package/dist/session.d.cts +29 -11
  167. package/dist/session.d.ts +29 -11
  168. package/dist/session.js +46 -13
  169. package/dist/{types-DxSFvL2b.d.cts → types--Q7_DcvP.d.cts} +43 -39
  170. package/dist/{types-DxSFvL2b.d.ts → types--Q7_DcvP.d.ts} +43 -39
  171. package/dist/{types-B0FT5Qs2.d.cts → types-0IWbU9Z_.d.cts} +36 -36
  172. package/dist/{types-B0FT5Qs2.d.ts → types-0IWbU9Z_.d.ts} +36 -36
  173. package/dist/{types-gQsr0AAA.d.cts → types-B3g5G9KP.d.cts} +36 -36
  174. package/dist/{types-gQsr0AAA.d.ts → types-B3g5G9KP.d.ts} +36 -36
  175. package/dist/{types-Pme7sua0.d.cts → types-BFpFNM_m.d.cts} +57 -32
  176. package/dist/{types-Pme7sua0.d.ts → types-BFpFNM_m.d.ts} +57 -32
  177. package/dist/{types-8gUGeMgs.d.cts → types-Br7fm2mf.d.cts} +48 -26
  178. package/dist/{types-8gUGeMgs.d.ts → types-Br7fm2mf.d.ts} +48 -26
  179. package/dist/{types-BeAVNU-F.d.cts → types-C2qKTRR_.d.cts} +50 -45
  180. package/dist/{types-BeAVNU-F.d.ts → types-C2qKTRR_.d.ts} +50 -45
  181. package/dist/{types-DKpsfD3i.d.cts → types-DEaypVsD.d.cts} +115 -55
  182. package/dist/{types-DKpsfD3i.d.ts → types-DEaypVsD.d.ts} +115 -55
  183. package/dist/types-Dl4IaAHR.d.cts +282 -0
  184. package/dist/types-Dl4IaAHR.d.ts +282 -0
  185. package/dist/{types-CDa7F5ct.d.cts → types-DrQpTW1G.d.cts} +58 -50
  186. package/dist/{types-CDa7F5ct.d.ts → types-DrQpTW1G.d.ts} +58 -50
  187. package/dist/types-DuIO7cWK.d.cts +25 -0
  188. package/dist/types-DuIO7cWK.d.ts +25 -0
  189. package/dist/{types-B9A2g05r.d.cts → types-DuxfOYiO.d.cts} +47 -31
  190. package/dist/{types-B9A2g05r.d.ts → types-DuxfOYiO.d.ts} +47 -31
  191. package/dist/{types-D1dI_oTX.d.cts → types-jV1yDDBA.d.cts} +36 -36
  192. package/dist/{types-D1dI_oTX.d.ts → types-jV1yDDBA.d.ts} +36 -36
  193. package/package.json +192 -192
  194. package/src/core/buffer-reader.ts +130 -130
  195. package/src/core/buffer-writer.ts +100 -100
  196. package/src/core/errors.ts +1 -1
  197. package/src/core/hex.ts +21 -21
  198. package/src/core/session-types.ts +61 -59
  199. package/src/core/types.ts +18 -361
  200. package/src/drafts/draft07/codec.ts +1058 -938
  201. package/src/drafts/draft07/data-streams.ts +240 -240
  202. package/src/drafts/draft07/index.ts +124 -89
  203. package/src/drafts/draft07/messages.ts +76 -42
  204. package/src/drafts/draft07/rules.ts +107 -101
  205. package/src/drafts/draft07/session-fsm.ts +315 -287
  206. package/src/drafts/draft07/session.ts +8 -6
  207. package/src/drafts/draft07/types.ts +406 -72
  208. package/src/drafts/draft07/varint.ts +51 -51
  209. package/src/drafts/draft08/codec.ts +985 -953
  210. package/src/drafts/draft08/data-streams.ts +363 -359
  211. package/src/drafts/draft08/index.ts +10 -9
  212. package/src/drafts/draft08/messages.ts +59 -59
  213. package/src/drafts/draft08/rules.ts +73 -73
  214. package/src/drafts/draft08/session-fsm.ts +335 -303
  215. package/src/drafts/draft08/session.ts +6 -7
  216. package/src/drafts/draft08/types.ts +380 -384
  217. package/src/drafts/draft09/codec.ts +977 -945
  218. package/src/drafts/draft09/data-streams.ts +336 -332
  219. package/src/drafts/draft09/index.ts +10 -9
  220. package/src/drafts/draft09/messages.ts +59 -59
  221. package/src/drafts/draft09/rules.ts +73 -73
  222. package/src/drafts/draft09/session-fsm.ts +335 -303
  223. package/src/drafts/draft09/session.ts +6 -7
  224. package/src/drafts/draft09/types.ts +380 -384
  225. package/src/drafts/draft10/codec.ts +977 -945
  226. package/src/drafts/draft10/data-streams.ts +336 -332
  227. package/src/drafts/draft10/index.ts +10 -9
  228. package/src/drafts/draft10/messages.ts +59 -59
  229. package/src/drafts/draft10/rules.ts +73 -73
  230. package/src/drafts/draft10/session-fsm.ts +335 -303
  231. package/src/drafts/draft10/session.ts +6 -7
  232. package/src/drafts/draft10/types.ts +380 -384
  233. package/src/drafts/draft11/codec.ts +1054 -988
  234. package/src/drafts/draft11/data-streams.ts +316 -269
  235. package/src/drafts/draft11/index.ts +10 -9
  236. package/src/drafts/draft11/messages.ts +60 -59
  237. package/src/drafts/draft11/rules.ts +73 -73
  238. package/src/drafts/draft11/session-fsm.ts +359 -333
  239. package/src/drafts/draft11/session.ts +6 -7
  240. package/src/drafts/draft11/types.ts +385 -381
  241. package/src/drafts/draft12/codec.ts +1178 -1122
  242. package/src/drafts/draft12/data-streams.ts +324 -275
  243. package/src/drafts/draft12/index.ts +10 -9
  244. package/src/drafts/draft12/messages.ts +67 -66
  245. package/src/drafts/draft12/rules.ts +79 -79
  246. package/src/drafts/draft12/session-fsm.ts +384 -358
  247. package/src/drafts/draft12/session.ts +6 -7
  248. package/src/drafts/draft12/types.ts +424 -419
  249. package/src/drafts/draft13/codec.ts +1296 -1206
  250. package/src/drafts/draft13/data-streams.ts +326 -275
  251. package/src/drafts/draft13/index.ts +10 -9
  252. package/src/drafts/draft13/messages.ts +73 -68
  253. package/src/drafts/draft13/rules.ts +81 -81
  254. package/src/drafts/draft13/session-fsm.ts +392 -366
  255. package/src/drafts/draft13/session.ts +6 -7
  256. package/src/drafts/draft13/types.ts +447 -438
  257. package/src/drafts/draft14/codec.ts +1347 -1043
  258. package/src/drafts/draft14/data-streams.ts +831 -813
  259. package/src/drafts/draft14/index.ts +17 -9
  260. package/src/drafts/draft14/messages.ts +65 -65
  261. package/src/drafts/draft14/rules.ts +81 -81
  262. package/src/drafts/draft14/session-fsm.ts +415 -405
  263. package/src/drafts/draft14/session.ts +6 -7
  264. package/src/drafts/draft14/types.ts +451 -381
  265. package/src/drafts/draft15/codec.ts +1138 -978
  266. package/src/drafts/draft15/data-streams.ts +842 -794
  267. package/src/drafts/draft15/index.ts +10 -9
  268. package/src/drafts/draft15/messages.ts +54 -53
  269. package/src/drafts/draft15/rules.ts +67 -67
  270. package/src/drafts/draft15/session-fsm.ts +319 -299
  271. package/src/drafts/draft15/session.ts +6 -7
  272. package/src/drafts/draft15/types.ts +357 -339
  273. package/src/drafts/draft16/codec.ts +1242 -966
  274. package/src/drafts/draft16/data-streams.ts +835 -789
  275. package/src/drafts/draft16/index.ts +10 -9
  276. package/src/drafts/draft16/messages.ts +56 -55
  277. package/src/drafts/draft16/rules.ts +69 -69
  278. package/src/drafts/draft16/session-fsm.ts +319 -299
  279. package/src/drafts/draft16/session.ts +6 -7
  280. package/src/drafts/draft16/types.ts +386 -357
  281. package/src/drafts/draft17/codec.ts +1209 -971
  282. package/src/drafts/draft17/data-streams.ts +969 -758
  283. package/src/drafts/draft17/index.ts +9 -7
  284. package/src/drafts/draft17/messages.ts +43 -42
  285. package/src/drafts/draft17/rules.ts +58 -58
  286. package/src/drafts/draft17/session-fsm.ts +248 -216
  287. package/src/drafts/draft17/session.ts +5 -5
  288. package/src/drafts/draft17/types.ts +337 -313
  289. package/src/index.ts +85 -274
  290. package/src/session.ts +63 -25
  291. package/dist/chunk-FZDIEHQL.cjs +0 -1042
  292. package/dist/chunk-HDWJ2GDE.js +0 -24
  293. package/dist/chunk-KNDYS3DK.cjs +0 -24
  294. package/dist/chunk-N2KBF5Q2.js +0 -1042
  295. package/dist/draft7-session.d.cts +0 -7
  296. package/dist/draft7-session.d.ts +0 -7
  297. package/dist/draft7.cjs +0 -72
  298. package/dist/draft7.d.cts +0 -148
  299. package/dist/draft7.d.ts +0 -148
  300. package/dist/draft7.js +0 -72
  301. package/dist/draft8-session.cjs +0 -6
  302. package/dist/draft8-session.d.cts +0 -8
  303. package/dist/draft8-session.d.ts +0 -8
  304. package/dist/draft8.cjs +0 -116
  305. package/dist/draft9-session.cjs +0 -6
  306. package/dist/draft9-session.d.cts +0 -8
  307. package/dist/draft9-session.d.ts +0 -8
  308. package/dist/draft9.cjs +0 -116
  309. package/dist/types-QNXoxC9Y.d.cts +0 -236
  310. package/dist/types-QNXoxC9Y.d.ts +0 -236
  311. package/src/drafts/draft07/announce-fsm.ts +0 -2
  312. package/src/drafts/draft07/parameters.ts +0 -12
  313. package/src/drafts/draft07/subscription-fsm.ts +0 -3
package/package.json CHANGED
@@ -1,192 +1,192 @@
1
- {
2
- "name": "@moqtap/codec",
3
- "version": "0.2.3",
4
- "description": "MoQT wire-format codec and session state machine — multi-draft, zero dependencies",
5
- "type": "module",
6
- "license": "MIT",
7
- "author": "moqtap",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/moqtap/moqtap-js.git",
11
- "directory": "packages/codec"
12
- },
13
- "homepage": "https://github.com/moqtap/moqtap-js/tree/master/packages/codec",
14
- "bugs": "https://github.com/moqtap/moqtap-js/issues",
15
- "keywords": [
16
- "moqt",
17
- "moq",
18
- "media-over-quic",
19
- "webtransport",
20
- "codec",
21
- "protocol",
22
- "ietf",
23
- "quic",
24
- "streaming",
25
- "real-time"
26
- ],
27
- "sideEffects": false,
28
- "engines": {
29
- "node": ">=18"
30
- },
31
- "exports": {
32
- ".": {
33
- "bun": "./src/index.ts",
34
- "types": "./dist/index.d.ts",
35
- "import": "./dist/index.js",
36
- "require": "./dist/index.cjs"
37
- },
38
- "./draft7": {
39
- "bun": "./src/drafts/draft07/index.ts",
40
- "types": "./dist/draft7.d.ts",
41
- "import": "./dist/draft7.js",
42
- "require": "./dist/draft7.cjs"
43
- },
44
- "./draft8": {
45
- "bun": "./src/drafts/draft08/index.ts",
46
- "types": "./dist/draft8.d.ts",
47
- "import": "./dist/draft8.js",
48
- "require": "./dist/draft8.cjs"
49
- },
50
- "./draft8/session": {
51
- "bun": "./src/drafts/draft08/session.ts",
52
- "types": "./dist/draft8-session.d.ts",
53
- "import": "./dist/draft8-session.js",
54
- "require": "./dist/draft8-session.cjs"
55
- },
56
- "./draft9": {
57
- "bun": "./src/drafts/draft09/index.ts",
58
- "types": "./dist/draft9.d.ts",
59
- "import": "./dist/draft9.js",
60
- "require": "./dist/draft9.cjs"
61
- },
62
- "./draft9/session": {
63
- "bun": "./src/drafts/draft09/session.ts",
64
- "types": "./dist/draft9-session.d.ts",
65
- "import": "./dist/draft9-session.js",
66
- "require": "./dist/draft9-session.cjs"
67
- },
68
- "./draft10": {
69
- "bun": "./src/drafts/draft10/index.ts",
70
- "types": "./dist/draft10.d.ts",
71
- "import": "./dist/draft10.js",
72
- "require": "./dist/draft10.cjs"
73
- },
74
- "./draft10/session": {
75
- "bun": "./src/drafts/draft10/session.ts",
76
- "types": "./dist/draft10-session.d.ts",
77
- "import": "./dist/draft10-session.js",
78
- "require": "./dist/draft10-session.cjs"
79
- },
80
- "./draft11": {
81
- "bun": "./src/drafts/draft11/index.ts",
82
- "types": "./dist/draft11.d.ts",
83
- "import": "./dist/draft11.js",
84
- "require": "./dist/draft11.cjs"
85
- },
86
- "./draft11/session": {
87
- "bun": "./src/drafts/draft11/session.ts",
88
- "types": "./dist/draft11-session.d.ts",
89
- "import": "./dist/draft11-session.js",
90
- "require": "./dist/draft11-session.cjs"
91
- },
92
- "./draft12": {
93
- "bun": "./src/drafts/draft12/index.ts",
94
- "types": "./dist/draft12.d.ts",
95
- "import": "./dist/draft12.js",
96
- "require": "./dist/draft12.cjs"
97
- },
98
- "./draft12/session": {
99
- "bun": "./src/drafts/draft12/session.ts",
100
- "types": "./dist/draft12-session.d.ts",
101
- "import": "./dist/draft12-session.js",
102
- "require": "./dist/draft12-session.cjs"
103
- },
104
- "./draft13": {
105
- "bun": "./src/drafts/draft13/index.ts",
106
- "types": "./dist/draft13.d.ts",
107
- "import": "./dist/draft13.js",
108
- "require": "./dist/draft13.cjs"
109
- },
110
- "./draft13/session": {
111
- "bun": "./src/drafts/draft13/session.ts",
112
- "types": "./dist/draft13-session.d.ts",
113
- "import": "./dist/draft13-session.js",
114
- "require": "./dist/draft13-session.cjs"
115
- },
116
- "./draft14": {
117
- "bun": "./src/drafts/draft14/index.ts",
118
- "types": "./dist/draft14.d.ts",
119
- "import": "./dist/draft14.js",
120
- "require": "./dist/draft14.cjs"
121
- },
122
- "./session": {
123
- "bun": "./src/session.ts",
124
- "types": "./dist/session.d.ts",
125
- "import": "./dist/session.js",
126
- "require": "./dist/session.cjs"
127
- },
128
- "./draft7/session": {
129
- "bun": "./src/drafts/draft07/session.ts",
130
- "types": "./dist/draft7-session.d.ts",
131
- "import": "./dist/draft7-session.js",
132
- "require": "./dist/draft7-session.cjs"
133
- },
134
- "./draft14/session": {
135
- "bun": "./src/drafts/draft14/session.ts",
136
- "types": "./dist/draft14-session.d.ts",
137
- "import": "./dist/draft14-session.js",
138
- "require": "./dist/draft14-session.cjs"
139
- },
140
- "./draft15": {
141
- "bun": "./src/drafts/draft15/index.ts",
142
- "types": "./dist/draft15.d.ts",
143
- "import": "./dist/draft15.js",
144
- "require": "./dist/draft15.cjs"
145
- },
146
- "./draft15/session": {
147
- "bun": "./src/drafts/draft15/session.ts",
148
- "types": "./dist/draft15-session.d.ts",
149
- "import": "./dist/draft15-session.js",
150
- "require": "./dist/draft15-session.cjs"
151
- },
152
- "./draft16": {
153
- "bun": "./src/drafts/draft16/index.ts",
154
- "types": "./dist/draft16.d.ts",
155
- "import": "./dist/draft16.js",
156
- "require": "./dist/draft16.cjs"
157
- },
158
- "./draft16/session": {
159
- "bun": "./src/drafts/draft16/session.ts",
160
- "types": "./dist/draft16-session.d.ts",
161
- "import": "./dist/draft16-session.js",
162
- "require": "./dist/draft16-session.cjs"
163
- },
164
- "./draft17": {
165
- "bun": "./src/drafts/draft17/index.ts",
166
- "types": "./dist/draft17.d.ts",
167
- "import": "./dist/draft17.js",
168
- "require": "./dist/draft17.cjs"
169
- },
170
- "./draft17/session": {
171
- "bun": "./src/drafts/draft17/session.ts",
172
- "types": "./dist/draft17-session.d.ts",
173
- "import": "./dist/draft17-session.js",
174
- "require": "./dist/draft17-session.cjs"
175
- }
176
- },
177
- "files": [
178
- "dist",
179
- "src",
180
- "!src/__tests__"
181
- ],
182
- "scripts": {
183
- "build": "tsup",
184
- "test": "vitest run"
185
- },
186
- "devDependencies": {
187
- "@moqtap/test-vectors": "^0.7.3",
188
- "tsup": "^8.0.0",
189
- "typescript": "^5.5.0",
190
- "vitest": "^3.0.0"
191
- }
192
- }
1
+ {
2
+ "name": "@moqtap/codec",
3
+ "version": "0.4.0",
4
+ "description": "MoQT wire-format codec and session state machine — multi-draft, zero dependencies",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "moqtap",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/moqtap/moqtap-js.git",
11
+ "directory": "packages/codec"
12
+ },
13
+ "homepage": "https://github.com/moqtap/moqtap-js/tree/master/packages/codec",
14
+ "bugs": "https://github.com/moqtap/moqtap-js/issues",
15
+ "keywords": [
16
+ "moqt",
17
+ "moq",
18
+ "media-over-quic",
19
+ "webtransport",
20
+ "codec",
21
+ "protocol",
22
+ "ietf",
23
+ "quic",
24
+ "streaming",
25
+ "real-time"
26
+ ],
27
+ "sideEffects": false,
28
+ "engines": {
29
+ "node": ">=18"
30
+ },
31
+ "exports": {
32
+ ".": {
33
+ "bun": "./src/index.ts",
34
+ "types": "./dist/index.d.ts",
35
+ "import": "./dist/index.js",
36
+ "require": "./dist/index.cjs"
37
+ },
38
+ "./session": {
39
+ "bun": "./src/session.ts",
40
+ "types": "./dist/session.d.ts",
41
+ "import": "./dist/session.js",
42
+ "require": "./dist/session.cjs"
43
+ },
44
+ "./draft07": {
45
+ "bun": "./src/drafts/draft07/index.ts",
46
+ "types": "./dist/draft07.d.ts",
47
+ "import": "./dist/draft07.js",
48
+ "require": "./dist/draft07.cjs"
49
+ },
50
+ "./draft07/session": {
51
+ "bun": "./src/drafts/draft07/session.ts",
52
+ "types": "./dist/draft07-session.d.ts",
53
+ "import": "./dist/draft07-session.js",
54
+ "require": "./dist/draft07-session.cjs"
55
+ },
56
+ "./draft08": {
57
+ "bun": "./src/drafts/draft08/index.ts",
58
+ "types": "./dist/draft08.d.ts",
59
+ "import": "./dist/draft08.js",
60
+ "require": "./dist/draft08.cjs"
61
+ },
62
+ "./draft08/session": {
63
+ "bun": "./src/drafts/draft08/session.ts",
64
+ "types": "./dist/draft08-session.d.ts",
65
+ "import": "./dist/draft08-session.js",
66
+ "require": "./dist/draft08-session.cjs"
67
+ },
68
+ "./draft09": {
69
+ "bun": "./src/drafts/draft09/index.ts",
70
+ "types": "./dist/draft09.d.ts",
71
+ "import": "./dist/draft09.js",
72
+ "require": "./dist/draft09.cjs"
73
+ },
74
+ "./draft09/session": {
75
+ "bun": "./src/drafts/draft09/session.ts",
76
+ "types": "./dist/draft09-session.d.ts",
77
+ "import": "./dist/draft09-session.js",
78
+ "require": "./dist/draft09-session.cjs"
79
+ },
80
+ "./draft10": {
81
+ "bun": "./src/drafts/draft10/index.ts",
82
+ "types": "./dist/draft10.d.ts",
83
+ "import": "./dist/draft10.js",
84
+ "require": "./dist/draft10.cjs"
85
+ },
86
+ "./draft10/session": {
87
+ "bun": "./src/drafts/draft10/session.ts",
88
+ "types": "./dist/draft10-session.d.ts",
89
+ "import": "./dist/draft10-session.js",
90
+ "require": "./dist/draft10-session.cjs"
91
+ },
92
+ "./draft11": {
93
+ "bun": "./src/drafts/draft11/index.ts",
94
+ "types": "./dist/draft11.d.ts",
95
+ "import": "./dist/draft11.js",
96
+ "require": "./dist/draft11.cjs"
97
+ },
98
+ "./draft11/session": {
99
+ "bun": "./src/drafts/draft11/session.ts",
100
+ "types": "./dist/draft11-session.d.ts",
101
+ "import": "./dist/draft11-session.js",
102
+ "require": "./dist/draft11-session.cjs"
103
+ },
104
+ "./draft12": {
105
+ "bun": "./src/drafts/draft12/index.ts",
106
+ "types": "./dist/draft12.d.ts",
107
+ "import": "./dist/draft12.js",
108
+ "require": "./dist/draft12.cjs"
109
+ },
110
+ "./draft12/session": {
111
+ "bun": "./src/drafts/draft12/session.ts",
112
+ "types": "./dist/draft12-session.d.ts",
113
+ "import": "./dist/draft12-session.js",
114
+ "require": "./dist/draft12-session.cjs"
115
+ },
116
+ "./draft13": {
117
+ "bun": "./src/drafts/draft13/index.ts",
118
+ "types": "./dist/draft13.d.ts",
119
+ "import": "./dist/draft13.js",
120
+ "require": "./dist/draft13.cjs"
121
+ },
122
+ "./draft13/session": {
123
+ "bun": "./src/drafts/draft13/session.ts",
124
+ "types": "./dist/draft13-session.d.ts",
125
+ "import": "./dist/draft13-session.js",
126
+ "require": "./dist/draft13-session.cjs"
127
+ },
128
+ "./draft14": {
129
+ "bun": "./src/drafts/draft14/index.ts",
130
+ "types": "./dist/draft14.d.ts",
131
+ "import": "./dist/draft14.js",
132
+ "require": "./dist/draft14.cjs"
133
+ },
134
+ "./draft14/session": {
135
+ "bun": "./src/drafts/draft14/session.ts",
136
+ "types": "./dist/draft14-session.d.ts",
137
+ "import": "./dist/draft14-session.js",
138
+ "require": "./dist/draft14-session.cjs"
139
+ },
140
+ "./draft15": {
141
+ "bun": "./src/drafts/draft15/index.ts",
142
+ "types": "./dist/draft15.d.ts",
143
+ "import": "./dist/draft15.js",
144
+ "require": "./dist/draft15.cjs"
145
+ },
146
+ "./draft15/session": {
147
+ "bun": "./src/drafts/draft15/session.ts",
148
+ "types": "./dist/draft15-session.d.ts",
149
+ "import": "./dist/draft15-session.js",
150
+ "require": "./dist/draft15-session.cjs"
151
+ },
152
+ "./draft16": {
153
+ "bun": "./src/drafts/draft16/index.ts",
154
+ "types": "./dist/draft16.d.ts",
155
+ "import": "./dist/draft16.js",
156
+ "require": "./dist/draft16.cjs"
157
+ },
158
+ "./draft16/session": {
159
+ "bun": "./src/drafts/draft16/session.ts",
160
+ "types": "./dist/draft16-session.d.ts",
161
+ "import": "./dist/draft16-session.js",
162
+ "require": "./dist/draft16-session.cjs"
163
+ },
164
+ "./draft17": {
165
+ "bun": "./src/drafts/draft17/index.ts",
166
+ "types": "./dist/draft17.d.ts",
167
+ "import": "./dist/draft17.js",
168
+ "require": "./dist/draft17.cjs"
169
+ },
170
+ "./draft17/session": {
171
+ "bun": "./src/drafts/draft17/session.ts",
172
+ "types": "./dist/draft17-session.d.ts",
173
+ "import": "./dist/draft17-session.js",
174
+ "require": "./dist/draft17-session.cjs"
175
+ }
176
+ },
177
+ "files": [
178
+ "dist",
179
+ "src",
180
+ "!src/__tests__"
181
+ ],
182
+ "scripts": {
183
+ "build": "tsup",
184
+ "test": "vitest run"
185
+ },
186
+ "devDependencies": {
187
+ "@moqtap/test-vectors": "^0.8.2",
188
+ "tsup": "^8.0.0",
189
+ "typescript": "^5.5.0",
190
+ "vitest": "^3.0.0"
191
+ }
192
+ }
@@ -1,130 +1,130 @@
1
- import { DecodeError } from "./types.js";
2
-
3
- const textDecoder = /* @__PURE__ */ new TextDecoder();
4
-
5
- export class BufferReader {
6
- private readonly view: DataView;
7
- private pos: number;
8
-
9
- constructor(
10
- readonly buffer: Uint8Array,
11
- offset = 0,
12
- ) {
13
- this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
14
- this.pos = offset;
15
- }
16
-
17
- get offset(): number {
18
- return this.pos;
19
- }
20
-
21
- get remaining(): number {
22
- return this.buffer.byteLength - this.pos;
23
- }
24
-
25
- readUint8(): number {
26
- if (this.remaining < 1) {
27
- throw new DecodeError("UNEXPECTED_END", "Not enough bytes to read uint8", this.pos);
28
- }
29
- const value = this.view.getUint8(this.pos);
30
- this.pos += 1;
31
- return value;
32
- }
33
-
34
- readBytes(length: number): Uint8Array<ArrayBuffer> {
35
- if (this.remaining < length) {
36
- throw new DecodeError(
37
- "UNEXPECTED_END",
38
- `Not enough bytes: need ${length}, have ${this.remaining}`,
39
- this.pos,
40
- );
41
- }
42
- const slice = this.buffer.slice(this.pos, this.pos + length);
43
- this.pos += length;
44
- return slice;
45
- }
46
-
47
- /** Zero-copy read: returns a view into the underlying buffer. */
48
- readBytesView(length: number): Uint8Array<ArrayBuffer> {
49
- if (this.remaining < length) {
50
- throw new DecodeError(
51
- "UNEXPECTED_END",
52
- `Not enough bytes: need ${length}, have ${this.remaining}`,
53
- this.pos,
54
- );
55
- }
56
- const view = this.buffer.subarray(this.pos, this.pos + length);
57
- this.pos += length;
58
- return view as Uint8Array<ArrayBuffer>;
59
- }
60
-
61
- readVarInt(): bigint {
62
- if (this.remaining < 1) {
63
- throw new DecodeError("UNEXPECTED_END", "Not enough bytes for varint", this.pos);
64
- }
65
- const first = this.view.getUint8(this.pos);
66
- const prefix = first >> 6;
67
- let length: number;
68
- let value: bigint;
69
-
70
- switch (prefix) {
71
- case 0:
72
- length = 1;
73
- value = BigInt(first & 0x3f);
74
- break;
75
- case 1:
76
- length = 2;
77
- if (this.remaining < 2) {
78
- throw new DecodeError("UNEXPECTED_END", "Not enough bytes for 2-byte varint", this.pos);
79
- }
80
- value = BigInt(this.view.getUint16(this.pos) & 0x3fff);
81
- break;
82
- case 2:
83
- length = 4;
84
- if (this.remaining < 4) {
85
- throw new DecodeError("UNEXPECTED_END", "Not enough bytes for 4-byte varint", this.pos);
86
- }
87
- value = BigInt(this.view.getUint32(this.pos)) & 0x3fffffffn;
88
- break;
89
- case 3:
90
- length = 8;
91
- if (this.remaining < 8) {
92
- throw new DecodeError("UNEXPECTED_END", "Not enough bytes for 8-byte varint", this.pos);
93
- }
94
- value = this.view.getBigUint64(this.pos) & 0x3fffffffffffffffn;
95
- break;
96
- default:
97
- throw new DecodeError("INVALID_VARINT", "Invalid varint prefix", this.pos);
98
- }
99
-
100
- this.pos += length;
101
- return value;
102
- }
103
-
104
- readString(): string {
105
- const length = Number(this.readVarInt());
106
- const bytes = this.readBytesView(length);
107
- return textDecoder.decode(bytes);
108
- }
109
-
110
- readTuple(): string[] {
111
- const count = Number(this.readVarInt());
112
- const result: string[] = [];
113
- for (let i = 0; i < count; i++) {
114
- result.push(this.readString());
115
- }
116
- return result;
117
- }
118
-
119
- readParameters(): Map<bigint, Uint8Array> {
120
- const count = Number(this.readVarInt());
121
- const params = new Map<bigint, Uint8Array>();
122
- for (let i = 0; i < count; i++) {
123
- const key = this.readVarInt();
124
- const length = Number(this.readVarInt());
125
- const value = this.readBytes(length);
126
- params.set(key, value);
127
- }
128
- return params;
129
- }
130
- }
1
+ import { DecodeError } from './types.js'
2
+
3
+ const textDecoder = /* @__PURE__ */ new TextDecoder()
4
+
5
+ export class BufferReader {
6
+ private readonly view: DataView
7
+ private pos: number
8
+
9
+ constructor(
10
+ readonly buffer: Uint8Array,
11
+ offset = 0,
12
+ ) {
13
+ this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength)
14
+ this.pos = offset
15
+ }
16
+
17
+ get offset(): number {
18
+ return this.pos
19
+ }
20
+
21
+ get remaining(): number {
22
+ return this.buffer.byteLength - this.pos
23
+ }
24
+
25
+ readUint8(): number {
26
+ if (this.remaining < 1) {
27
+ throw new DecodeError('UNEXPECTED_END', 'Not enough bytes to read uint8', this.pos)
28
+ }
29
+ const value = this.view.getUint8(this.pos)
30
+ this.pos += 1
31
+ return value
32
+ }
33
+
34
+ readBytes(length: number): Uint8Array<ArrayBuffer> {
35
+ if (this.remaining < length) {
36
+ throw new DecodeError(
37
+ 'UNEXPECTED_END',
38
+ `Not enough bytes: need ${length}, have ${this.remaining}`,
39
+ this.pos,
40
+ )
41
+ }
42
+ const slice = this.buffer.slice(this.pos, this.pos + length)
43
+ this.pos += length
44
+ return slice
45
+ }
46
+
47
+ /** Zero-copy read: returns a view into the underlying buffer. */
48
+ readBytesView(length: number): Uint8Array<ArrayBuffer> {
49
+ if (this.remaining < length) {
50
+ throw new DecodeError(
51
+ 'UNEXPECTED_END',
52
+ `Not enough bytes: need ${length}, have ${this.remaining}`,
53
+ this.pos,
54
+ )
55
+ }
56
+ const view = this.buffer.subarray(this.pos, this.pos + length)
57
+ this.pos += length
58
+ return view as Uint8Array<ArrayBuffer>
59
+ }
60
+
61
+ readVarInt(): bigint {
62
+ if (this.remaining < 1) {
63
+ throw new DecodeError('UNEXPECTED_END', 'Not enough bytes for varint', this.pos)
64
+ }
65
+ const first = this.view.getUint8(this.pos)
66
+ const prefix = first >> 6
67
+ let length: number
68
+ let value: bigint
69
+
70
+ switch (prefix) {
71
+ case 0:
72
+ length = 1
73
+ value = BigInt(first & 0x3f)
74
+ break
75
+ case 1:
76
+ length = 2
77
+ if (this.remaining < 2) {
78
+ throw new DecodeError('UNEXPECTED_END', 'Not enough bytes for 2-byte varint', this.pos)
79
+ }
80
+ value = BigInt(this.view.getUint16(this.pos) & 0x3fff)
81
+ break
82
+ case 2:
83
+ length = 4
84
+ if (this.remaining < 4) {
85
+ throw new DecodeError('UNEXPECTED_END', 'Not enough bytes for 4-byte varint', this.pos)
86
+ }
87
+ value = BigInt(this.view.getUint32(this.pos)) & 0x3fffffffn
88
+ break
89
+ case 3:
90
+ length = 8
91
+ if (this.remaining < 8) {
92
+ throw new DecodeError('UNEXPECTED_END', 'Not enough bytes for 8-byte varint', this.pos)
93
+ }
94
+ value = this.view.getBigUint64(this.pos) & 0x3fffffffffffffffn
95
+ break
96
+ default:
97
+ throw new DecodeError('INVALID_VARINT', 'Invalid varint prefix', this.pos)
98
+ }
99
+
100
+ this.pos += length
101
+ return value
102
+ }
103
+
104
+ readString(): string {
105
+ const length = Number(this.readVarInt())
106
+ const bytes = this.readBytesView(length)
107
+ return textDecoder.decode(bytes)
108
+ }
109
+
110
+ readTuple(): string[] {
111
+ const count = Number(this.readVarInt())
112
+ const result: string[] = []
113
+ for (let i = 0; i < count; i++) {
114
+ result.push(this.readString())
115
+ }
116
+ return result
117
+ }
118
+
119
+ readParameters(): Map<bigint, Uint8Array> {
120
+ const count = Number(this.readVarInt())
121
+ const params = new Map<bigint, Uint8Array>()
122
+ for (let i = 0; i < count; i++) {
123
+ const key = this.readVarInt()
124
+ const length = Number(this.readVarInt())
125
+ const value = this.readBytes(length)
126
+ params.set(key, value)
127
+ }
128
+ return params
129
+ }
130
+ }