@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/core/types.ts CHANGED
@@ -1,380 +1,37 @@
1
1
  // Draft identifiers
2
- export type Draft =
3
- | "draft-ietf-moq-transport-07"
4
- | "draft-ietf-moq-transport-08"
5
- | "draft-ietf-moq-transport-09"
6
- | "draft-ietf-moq-transport-10"
7
- | "draft-ietf-moq-transport-11"
8
- | "draft-ietf-moq-transport-12"
9
- | "draft-ietf-moq-transport-13"
10
- | "draft-ietf-moq-transport-14"
11
- | "draft-ietf-moq-transport-15"
12
- | "draft-ietf-moq-transport-16"
13
- | "draft-ietf-moq-transport-17";
14
- export type DraftShorthand =
15
- | "07"
16
- | "08"
17
- | "09"
18
- | "10"
19
- | "11"
20
- | "12"
21
- | "13"
22
- | "14"
23
- | "15"
24
- | "16"
25
- | "17";
26
-
27
- // All MoQT message type tags
28
- export type MoqtMessageType =
29
- | "client_setup"
30
- | "server_setup"
31
- | "subscribe"
32
- | "subscribe_ok"
33
- | "subscribe_error"
34
- | "subscribe_done"
35
- | "subscribe_update"
36
- | "unsubscribe"
37
- | "announce"
38
- | "announce_ok"
39
- | "announce_error"
40
- | "announce_cancel"
41
- | "unannounce"
42
- | "track_status_request"
43
- | "track_status"
44
- | "object_stream"
45
- | "object_datagram"
46
- | "stream_header_track"
47
- | "stream_header_group"
48
- | "stream_header_subgroup"
49
- | "goaway"
50
- | "subscribe_announces"
51
- | "subscribe_announces_ok"
52
- | "subscribe_announces_error"
53
- | "unsubscribe_announces"
54
- | "max_subscribe_id"
55
- | "fetch"
56
- | "fetch_ok"
57
- | "fetch_error"
58
- | "fetch_cancel";
59
-
60
- // Base message interface
61
- export interface BaseMessage {
62
- readonly type: MoqtMessageType;
63
- }
64
-
65
- // Setup messages
66
- export interface ClientSetup extends BaseMessage {
67
- readonly type: "client_setup";
68
- readonly supportedVersions: bigint[];
69
- readonly parameters: Map<bigint, Uint8Array>;
70
- }
71
-
72
- export interface ServerSetup extends BaseMessage {
73
- readonly type: "server_setup";
74
- readonly selectedVersion: bigint;
75
- readonly parameters: Map<bigint, Uint8Array>;
76
- }
77
-
78
- // Subscribe messages
79
- export interface Subscribe extends BaseMessage {
80
- readonly type: "subscribe";
81
- readonly subscribeId: bigint;
82
- readonly trackAlias: bigint;
83
- readonly trackNamespace: string[];
84
- readonly trackName: string;
85
- readonly subscriberPriority: number;
86
- readonly groupOrder: GroupOrderValue;
87
- readonly filterType: FilterType;
88
- readonly startGroup?: bigint;
89
- readonly startObject?: bigint;
90
- readonly endGroup?: bigint;
91
- readonly endObject?: bigint;
92
- readonly parameters: Map<bigint, Uint8Array>;
93
- }
94
-
95
- export type FilterType = "latest_group" | "latest_object" | "absolute_start" | "absolute_range";
96
-
97
- export interface SubscribeOk extends BaseMessage {
98
- readonly type: "subscribe_ok";
99
- readonly subscribeId: bigint;
100
- readonly expires: bigint;
101
- readonly groupOrder: GroupOrderValue;
102
- readonly contentExists: boolean;
103
- readonly largestGroupId?: bigint;
104
- readonly largestObjectId?: bigint;
105
- readonly parameters: Map<bigint, Uint8Array>;
106
- }
107
-
108
- export type GroupOrderValue = "ascending" | "descending" | "original";
109
-
110
- export interface SubscribeError extends BaseMessage {
111
- readonly type: "subscribe_error";
112
- readonly subscribeId: bigint;
113
- readonly errorCode: bigint;
114
- readonly reasonPhrase: string;
115
- readonly trackAlias: bigint;
116
- }
117
-
118
- export interface SubscribeDone extends BaseMessage {
119
- readonly type: "subscribe_done";
120
- readonly subscribeId: bigint;
121
- readonly statusCode: bigint;
122
- readonly reasonPhrase: string;
123
- readonly contentExists: boolean;
124
- readonly finalGroupId?: bigint;
125
- readonly finalObjectId?: bigint;
126
- }
127
-
128
- export interface SubscribeUpdate extends BaseMessage {
129
- readonly type: "subscribe_update";
130
- readonly subscribeId: bigint;
131
- readonly startGroup: bigint;
132
- readonly startObject: bigint;
133
- readonly endGroup: bigint;
134
- readonly endObject: bigint;
135
- readonly subscriberPriority: number;
136
- readonly parameters: Map<bigint, Uint8Array>;
137
- }
138
-
139
- export interface Unsubscribe extends BaseMessage {
140
- readonly type: "unsubscribe";
141
- readonly subscribeId: bigint;
142
- }
143
-
144
- // Announce messages
145
- export interface Announce extends BaseMessage {
146
- readonly type: "announce";
147
- readonly trackNamespace: string[];
148
- readonly parameters: Map<bigint, Uint8Array>;
149
- }
150
-
151
- export interface AnnounceOk extends BaseMessage {
152
- readonly type: "announce_ok";
153
- readonly trackNamespace: string[];
154
- }
155
-
156
- export interface AnnounceError extends BaseMessage {
157
- readonly type: "announce_error";
158
- readonly trackNamespace: string[];
159
- readonly errorCode: bigint;
160
- readonly reasonPhrase: string;
161
- }
162
-
163
- export interface AnnounceCancel extends BaseMessage {
164
- readonly type: "announce_cancel";
165
- readonly trackNamespace: string[];
166
- readonly errorCode: bigint;
167
- readonly reasonPhrase: string;
168
- }
169
-
170
- export interface Unannounce extends BaseMessage {
171
- readonly type: "unannounce";
172
- readonly trackNamespace: string[];
173
- }
174
-
175
- // Track status
176
- export interface TrackStatusRequest extends BaseMessage {
177
- readonly type: "track_status_request";
178
- readonly trackNamespace: string[];
179
- readonly trackName: string;
180
- }
181
-
182
- export interface TrackStatus extends BaseMessage {
183
- readonly type: "track_status";
184
- readonly trackNamespace: string[];
185
- readonly trackName: string;
186
- readonly statusCode: bigint;
187
- readonly lastGroupId: bigint;
188
- readonly lastObjectId: bigint;
189
- }
190
-
191
- // Object/stream messages
192
- export interface ObjectStream extends BaseMessage {
193
- readonly type: "object_stream";
194
- readonly trackAlias: bigint;
195
- readonly groupId: bigint;
196
- readonly objectId: bigint;
197
- readonly publisherPriority: number;
198
- readonly objectStatus?: number;
199
- readonly payload: Uint8Array;
200
- }
201
-
202
- export interface ObjectDatagram extends BaseMessage {
203
- readonly type: "object_datagram";
204
- readonly trackAlias: bigint;
205
- readonly groupId: bigint;
206
- readonly objectId: bigint;
207
- readonly publisherPriority: number;
208
- readonly objectStatus?: number;
209
- readonly payload: Uint8Array;
210
- }
211
-
212
- export interface StreamHeaderTrack extends BaseMessage {
213
- readonly type: "stream_header_track";
214
- readonly trackAlias: bigint;
215
- readonly publisherPriority: number;
216
- }
217
-
218
- export interface StreamHeaderGroup extends BaseMessage {
219
- readonly type: "stream_header_group";
220
- readonly trackAlias: bigint;
221
- readonly groupId: bigint;
222
- readonly publisherPriority: number;
223
- }
224
-
225
- export interface StreamHeaderSubgroup extends BaseMessage {
226
- readonly type: "stream_header_subgroup";
227
- readonly trackAlias: bigint;
228
- readonly groupId: bigint;
229
- readonly subgroupId: bigint;
230
- readonly publisherPriority: number;
231
- }
232
-
233
- // GoAway
234
- export interface GoAway extends BaseMessage {
235
- readonly type: "goaway";
236
- readonly newSessionUri: string;
237
- }
238
-
239
- // Subscribe Announces
240
- export interface SubscribeAnnounces extends BaseMessage {
241
- readonly type: "subscribe_announces";
242
- readonly trackNamespace: string[];
243
- readonly parameters: Map<bigint, Uint8Array>;
244
- }
245
-
246
- export interface SubscribeAnnouncesOk extends BaseMessage {
247
- readonly type: "subscribe_announces_ok";
248
- readonly trackNamespace: string[];
249
- }
250
-
251
- export interface SubscribeAnnouncesError extends BaseMessage {
252
- readonly type: "subscribe_announces_error";
253
- readonly trackNamespace: string[];
254
- readonly errorCode: bigint;
255
- readonly reasonPhrase: string;
256
- }
257
-
258
- // Unsubscribe Announces
259
- export interface UnsubscribeAnnounces extends BaseMessage {
260
- readonly type: "unsubscribe_announces";
261
- readonly trackNamespace: string[];
262
- }
263
-
264
- // Max Subscribe ID
265
- export interface MaxSubscribeId extends BaseMessage {
266
- readonly type: "max_subscribe_id";
267
- readonly subscribeId: bigint;
268
- }
269
-
270
- // Fetch
271
- export interface Fetch extends BaseMessage {
272
- readonly type: "fetch";
273
- readonly subscribeId: bigint;
274
- readonly trackNamespace: string[];
275
- readonly trackName: string;
276
- readonly subscriberPriority: number;
277
- readonly groupOrder: GroupOrderValue;
278
- readonly startGroup: bigint;
279
- readonly startObject: bigint;
280
- readonly endGroup: bigint;
281
- readonly endObject: bigint;
282
- readonly parameters: Map<bigint, Uint8Array>;
283
- }
284
-
285
- export interface FetchOk extends BaseMessage {
286
- readonly type: "fetch_ok";
287
- readonly subscribeId: bigint;
288
- readonly groupOrder: GroupOrderValue;
289
- readonly endOfTrack: boolean;
290
- readonly largestGroupId: bigint;
291
- readonly largestObjectId: bigint;
292
- readonly parameters: Map<bigint, Uint8Array>;
293
- }
294
-
295
- export interface FetchError extends BaseMessage {
296
- readonly type: "fetch_error";
297
- readonly subscribeId: bigint;
298
- readonly errorCode: bigint;
299
- readonly reasonPhrase: string;
300
- }
301
-
302
- export interface FetchCancel extends BaseMessage {
303
- readonly type: "fetch_cancel";
304
- readonly subscribeId: bigint;
305
- }
306
-
307
- // Union type of all messages
308
- export type MoqtMessage =
309
- | ClientSetup
310
- | ServerSetup
311
- | Subscribe
312
- | SubscribeOk
313
- | SubscribeError
314
- | SubscribeDone
315
- | SubscribeUpdate
316
- | Unsubscribe
317
- | Announce
318
- | AnnounceOk
319
- | AnnounceError
320
- | AnnounceCancel
321
- | Unannounce
322
- | TrackStatusRequest
323
- | TrackStatus
324
- | ObjectStream
325
- | ObjectDatagram
326
- | StreamHeaderTrack
327
- | StreamHeaderGroup
328
- | StreamHeaderSubgroup
329
- | GoAway
330
- | SubscribeAnnounces
331
- | SubscribeAnnouncesOk
332
- | SubscribeAnnouncesError
333
- | UnsubscribeAnnounces
334
- | MaxSubscribeId
335
- | Fetch
336
- | FetchOk
337
- | FetchError
338
- | FetchCancel;
2
+ export type Draft = '07' | '08' | '09' | '10' | '11' | '12' | '13' | '14' | '15' | '16' | '17'
339
3
 
340
4
  // Base codec interface — draft-specific codecs extend this
341
- export interface BaseCodec<M = MoqtMessage> {
342
- readonly draft: Draft;
343
- encodeMessage(message: M): Uint8Array;
344
- decodeMessage(bytes: Uint8Array): DecodeResult<M>;
345
- }
346
-
347
- // Full codec interface for drafts that support varint + stream decode
348
- export interface Codec extends BaseCodec<MoqtMessage> {
349
- encodeVarInt(value: number | bigint): Uint8Array;
350
- decodeVarInt(bytes: Uint8Array, offset?: number): DecodeResult<bigint>;
351
- createStreamDecoder(): TransformStream<Uint8Array, MoqtMessage>;
5
+ export interface BaseCodec<M> {
6
+ readonly draft: Draft
7
+ encodeMessage(message: M): Uint8Array
8
+ decodeMessage(bytes: Uint8Array): DecodeResult<M>
352
9
  }
353
10
 
354
11
  export interface CodecOptions {
355
- draft: Draft | DraftShorthand;
12
+ draft: Draft
356
13
  }
357
14
 
358
15
  // Result types
359
16
  export type DecodeResult<T> =
360
17
  | { ok: true; value: T; bytesRead: number }
361
- | { ok: false; error: DecodeError };
18
+ | { ok: false; error: DecodeError }
362
19
 
363
20
  export type DecodeErrorCode =
364
- | "UNEXPECTED_END"
365
- | "INVALID_VARINT"
366
- | "UNKNOWN_MESSAGE_TYPE"
367
- | "INVALID_PARAMETER"
368
- | "CONSTRAINT_VIOLATION";
21
+ | 'UNEXPECTED_END'
22
+ | 'INVALID_VARINT'
23
+ | 'UNKNOWN_MESSAGE_TYPE'
24
+ | 'INVALID_PARAMETER'
25
+ | 'CONSTRAINT_VIOLATION'
369
26
 
370
27
  export class DecodeError extends Error {
371
- readonly code: DecodeErrorCode;
372
- readonly offset: number;
28
+ readonly code: DecodeErrorCode
29
+ readonly offset: number
373
30
 
374
31
  constructor(code: DecodeErrorCode, message: string, offset: number) {
375
- super(message);
376
- this.name = "DecodeError";
377
- this.code = code;
378
- this.offset = offset;
32
+ super(message)
33
+ this.name = 'DecodeError'
34
+ this.code = code
35
+ this.offset = offset
379
36
  }
380
37
  }