@moqtap/codec 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +100 -99
  3. package/dist/{chunk-RZHAPEXO.js → chunk-2A57DRXV.js} +36 -10
  4. package/dist/{chunk-73MWUKSJ.js → chunk-2UTVXWFF.js} +190 -102
  5. package/dist/{chunk-JTVCOMBI.cjs → chunk-3XKO6PCR.cjs} +290 -183
  6. package/dist/{chunk-ACQ4CUJP.cjs → chunk-4BDEU3D4.cjs} +237 -158
  7. package/dist/{chunk-4N4INRE7.cjs → chunk-4HBKHNU2.cjs} +144 -110
  8. package/dist/{chunk-2ZT6CVSE.js → chunk-4IVZZOY3.js} +269 -162
  9. package/dist/{chunk-GLBQDG4L.cjs → chunk-5O764MBD.cjs} +508 -117
  10. package/dist/chunk-7KBAWOBA.js +1212 -0
  11. package/dist/{chunk-JSQM2MG3.js → chunk-7QOPNSDF.js} +44 -12
  12. package/dist/{chunk-SYHW3FLI.cjs → chunk-7RE6KSIY.cjs} +28 -8
  13. package/dist/{chunk-YG5KJESI.js → chunk-AY6IAHUM.js} +28 -8
  14. package/dist/{chunk-EFM5T7OM.js → chunk-BLQDWOSG.js} +36 -10
  15. package/dist/{chunk-UYXTY6ZQ.cjs → chunk-E65QKRSN.cjs} +20 -12
  16. package/dist/{chunk-BISI45MN.cjs → chunk-EAHE3IOG.cjs} +44 -12
  17. package/dist/{chunk-PZBPH2D7.js → chunk-GCBFHZW6.js} +216 -137
  18. package/dist/{chunk-GXEW4COZ.cjs → chunk-H5NSL4MO.cjs} +36 -10
  19. package/dist/chunk-HZHSO7EW.cjs +1212 -0
  20. package/dist/{chunk-KZCYQ7ED.cjs → chunk-IILNSDEQ.cjs} +69 -41
  21. package/dist/{chunk-4XYGE53S.cjs → chunk-J3XCPBW3.cjs} +36 -10
  22. package/dist/{chunk-6AEHWULA.cjs → chunk-JKOEJZ5B.cjs} +28 -8
  23. package/dist/{chunk-RUPCJTC3.cjs → chunk-JL3NEW3O.cjs} +23 -1
  24. package/dist/{chunk-G7GI7LJA.js → chunk-LORZMJJB.js} +36 -10
  25. package/dist/{chunk-DUBCL3WF.cjs → chunk-LV5C6MEC.cjs} +36 -10
  26. package/dist/{chunk-ENURAVHI.cjs → chunk-MYXAD5JC.cjs} +44 -12
  27. package/dist/{chunk-FXZ2MYKJ.js → chunk-MZ7HUCGJ.js} +20 -12
  28. package/dist/{chunk-S74DWJE2.cjs → chunk-OKG2HT25.cjs} +277 -88
  29. package/dist/{chunk-BGWGVINJ.cjs → chunk-PKEOQSSZ.cjs} +144 -110
  30. package/dist/{chunk-2GODRVT5.js → chunk-Q46ZURKX.js} +325 -48
  31. package/dist/{chunk-UR6JKS56.js → chunk-Q7IGWV3P.js} +41 -9
  32. package/dist/{chunk-XSNX2IUJ.js → chunk-RW4UG7CN.js} +121 -87
  33. package/dist/{chunk-DWK5ZQZ4.js → chunk-RZTLQAKF.js} +28 -8
  34. package/dist/{chunk-UNS34PTA.cjs → chunk-S6IPIN66.cjs} +44 -12
  35. package/dist/{chunk-YIG2C3LF.cjs → chunk-SDWRXXOO.cjs} +214 -126
  36. package/dist/{chunk-CEH7ESNC.js → chunk-SHMA4PBY.js} +121 -87
  37. package/dist/{chunk-MC7W6PMI.js → chunk-U3ZVLT5L.js} +483 -135
  38. package/dist/{chunk-VJUUZ4W2.cjs → chunk-UJU63EFY.cjs} +374 -97
  39. package/dist/{chunk-7L43FE6P.js → chunk-VOU7PNHI.js} +23 -1
  40. package/dist/{chunk-E6E3NQYU.js → chunk-WRHGCVYN.js} +44 -12
  41. package/dist/{chunk-FPISPJ5N.cjs → chunk-XNWYLVGU.cjs} +529 -181
  42. package/dist/{chunk-U3IPZYPX.js → chunk-XS77RBY7.js} +228 -39
  43. package/dist/{chunk-JGG7CMSZ.cjs → chunk-XZE5R57R.cjs} +144 -110
  44. package/dist/{chunk-77MNXX3M.js → chunk-Y6KCSM3V.js} +121 -87
  45. package/dist/{chunk-TLYNOOQP.cjs → chunk-YTPZZI2M.cjs} +41 -9
  46. package/dist/{chunk-7DUBLRXC.js → chunk-YWRCSQBA.js} +44 -12
  47. package/dist/{chunk-MRJWLGYH.js → chunk-Z3VKP3PJ.js} +69 -41
  48. package/dist/{chunk-E6P74GDT.js → chunk-Z6U26IRI.js} +464 -73
  49. package/dist/{codec-FvGCxIhr.d.ts → codec-25u4_1HS.d.ts} +4 -4
  50. package/dist/{codec-DRcsBCsb.d.ts → codec-3Ppy_5Gd.d.ts} +4 -4
  51. package/dist/{codec-BdVMRMOI.d.ts → codec-BB0U8MF2.d.cts} +4 -4
  52. package/dist/{codec-B2cH-f5V.d.cts → codec-BHHfBTnV.d.ts} +4 -4
  53. package/dist/{codec-B5K73Bdj.d.ts → codec-BN6jk0Td.d.cts} +4 -4
  54. package/dist/{codec-R8GrCPt2.d.ts → codec-BU0gaSZm.d.ts} +4 -4
  55. package/dist/{codec-Bq-tLtfP.d.ts → codec-C-Yk2RNa.d.ts} +4 -4
  56. package/dist/codec-CFWQY9Lj.d.cts +18 -0
  57. package/dist/{codec-CPlK3Pi5.d.ts → codec-COy4uuPO.d.cts} +4 -4
  58. package/dist/codec-CewFCsEy.d.ts +18 -0
  59. package/dist/{codec-KXHvXZVb.d.cts → codec-Ck7ZwFF1.d.cts} +4 -4
  60. package/dist/{codec-DZhZSIii.d.cts → codec-D2QVSH9D.d.ts} +4 -4
  61. package/dist/{codec-BwFgpeQu.d.ts → codec-DDUBJGn0.d.cts} +4 -4
  62. package/dist/{codec-BFeliJFc.d.ts → codec-DNfml-se.d.ts} +4 -4
  63. package/dist/{codec-C4n1PS09.d.cts → codec-DoOGjjDq.d.cts} +4 -4
  64. package/dist/{codec-Bap882Fh.d.cts → codec-J7ekOSMc.d.ts} +4 -4
  65. package/dist/{codec-SKBeHQk7.d.ts → codec-R9TJCq-E.d.cts} +4 -4
  66. package/dist/{codec-DNUIgLqc.d.cts → codec-ZwV-Njt6.d.ts} +4 -4
  67. package/dist/{codec-HgBgHkFI.d.cts → codec-j819z_hL.d.cts} +4 -4
  68. package/dist/{codec-DY4QH364.d.cts → codec-w8z2j_uo.d.cts} +4 -4
  69. package/dist/{codec-CPvPq0sb.d.cts → codec-wtt6WF1K.d.ts} +4 -4
  70. package/dist/{codec-BUMjz0J4.d.cts → codec-z6_2PSzi.d.cts} +4 -4
  71. package/dist/draft10-session.cjs +2 -2
  72. package/dist/draft10-session.d.cts +6 -6
  73. package/dist/draft10-session.d.ts +6 -6
  74. package/dist/draft10-session.js +1 -1
  75. package/dist/draft10.cjs +8 -5
  76. package/dist/draft10.d.cts +14 -12
  77. package/dist/draft10.d.ts +14 -12
  78. package/dist/draft10.js +16 -13
  79. package/dist/draft11-session.cjs +2 -2
  80. package/dist/draft11-session.d.cts +6 -6
  81. package/dist/draft11-session.d.ts +6 -6
  82. package/dist/draft11-session.js +1 -1
  83. package/dist/draft11.cjs +8 -5
  84. package/dist/draft11.d.cts +14 -12
  85. package/dist/draft11.d.ts +14 -12
  86. package/dist/draft11.js +16 -13
  87. package/dist/draft12-session.cjs +2 -2
  88. package/dist/draft12-session.d.cts +6 -6
  89. package/dist/draft12-session.d.ts +6 -6
  90. package/dist/draft12-session.js +1 -1
  91. package/dist/draft12.cjs +8 -5
  92. package/dist/draft12.d.cts +16 -14
  93. package/dist/draft12.d.ts +16 -14
  94. package/dist/draft12.js +16 -13
  95. package/dist/draft13-session.cjs +2 -2
  96. package/dist/draft13-session.d.cts +6 -6
  97. package/dist/draft13-session.d.ts +6 -6
  98. package/dist/draft13-session.js +1 -1
  99. package/dist/draft13.cjs +8 -5
  100. package/dist/draft13.d.cts +16 -14
  101. package/dist/draft13.d.ts +16 -14
  102. package/dist/draft13.js +16 -13
  103. package/dist/draft14-session.cjs +2 -2
  104. package/dist/draft14-session.d.cts +6 -6
  105. package/dist/draft14-session.d.ts +6 -6
  106. package/dist/draft14-session.js +1 -1
  107. package/dist/draft14.cjs +14 -5
  108. package/dist/draft14.d.cts +14 -12
  109. package/dist/draft14.d.ts +14 -12
  110. package/dist/draft14.js +13 -4
  111. package/dist/draft15-session.cjs +2 -2
  112. package/dist/draft15-session.d.cts +6 -6
  113. package/dist/draft15-session.d.ts +6 -6
  114. package/dist/draft15-session.js +1 -1
  115. package/dist/draft15.cjs +8 -5
  116. package/dist/draft15.d.cts +14 -12
  117. package/dist/draft15.d.ts +14 -12
  118. package/dist/draft15.js +16 -13
  119. package/dist/draft16-session.cjs +2 -2
  120. package/dist/draft16-session.d.cts +6 -6
  121. package/dist/draft16-session.d.ts +6 -6
  122. package/dist/draft16-session.js +1 -1
  123. package/dist/draft16.cjs +8 -5
  124. package/dist/draft16.d.cts +14 -12
  125. package/dist/draft16.d.ts +14 -12
  126. package/dist/draft16.js +16 -13
  127. package/dist/draft17-session.cjs +2 -2
  128. package/dist/draft17-session.d.cts +7 -7
  129. package/dist/draft17-session.d.ts +7 -7
  130. package/dist/draft17-session.js +1 -1
  131. package/dist/draft17.cjs +8 -5
  132. package/dist/draft17.d.cts +11 -9
  133. package/dist/draft17.d.ts +11 -9
  134. package/dist/draft17.js +16 -13
  135. package/dist/draft7-session.cjs +2 -2
  136. package/dist/draft7-session.d.cts +6 -5
  137. package/dist/draft7-session.d.ts +6 -5
  138. package/dist/draft7-session.js +1 -1
  139. package/dist/draft7.cjs +71 -14
  140. package/dist/draft7.d.cts +53 -134
  141. package/dist/draft7.d.ts +53 -134
  142. package/dist/draft7.js +76 -19
  143. package/dist/draft8-session.cjs +2 -2
  144. package/dist/draft8-session.d.cts +6 -6
  145. package/dist/draft8-session.d.ts +6 -6
  146. package/dist/draft8-session.js +1 -1
  147. package/dist/draft8.cjs +8 -5
  148. package/dist/draft8.d.cts +14 -12
  149. package/dist/draft8.d.ts +14 -12
  150. package/dist/draft8.js +7 -4
  151. package/dist/draft9-session.cjs +2 -2
  152. package/dist/draft9-session.d.cts +6 -6
  153. package/dist/draft9-session.d.ts +6 -6
  154. package/dist/draft9-session.js +1 -1
  155. package/dist/draft9.cjs +8 -5
  156. package/dist/draft9.d.cts +14 -12
  157. package/dist/draft9.d.ts +14 -12
  158. package/dist/draft9.js +7 -4
  159. package/dist/index.cjs +52 -74
  160. package/dist/index.d.cts +41 -60
  161. package/dist/index.d.ts +41 -60
  162. package/dist/index.js +40 -62
  163. package/dist/{session-types-CJIFbTPd.d.ts → session-types-C7UONex5.d.cts} +28 -27
  164. package/dist/{session-types-Cbq8IGCP.d.cts → session-types-X-IYEGoG.d.ts} +28 -27
  165. package/dist/session.cjs +46 -13
  166. package/dist/session.d.cts +28 -9
  167. package/dist/session.d.ts +28 -9
  168. package/dist/session.js +46 -13
  169. package/dist/{types-DxSFvL2b.d.cts → types--Q7_DcvP.d.cts} +43 -39
  170. package/dist/{types-DxSFvL2b.d.ts → types--Q7_DcvP.d.ts} +43 -39
  171. package/dist/{types-B0FT5Qs2.d.ts → types-0IWbU9Z_.d.cts} +36 -36
  172. package/dist/{types-B0FT5Qs2.d.cts → types-0IWbU9Z_.d.ts} +36 -36
  173. package/dist/{types-gQsr0AAA.d.cts → types-B3g5G9KP.d.cts} +36 -36
  174. package/dist/{types-gQsr0AAA.d.ts → types-B3g5G9KP.d.ts} +36 -36
  175. package/dist/{types-Pme7sua0.d.cts → types-BFpFNM_m.d.cts} +57 -32
  176. package/dist/{types-Pme7sua0.d.ts → types-BFpFNM_m.d.ts} +57 -32
  177. package/dist/{types-8gUGeMgs.d.ts → types-Br7fm2mf.d.cts} +48 -26
  178. package/dist/{types-8gUGeMgs.d.cts → types-Br7fm2mf.d.ts} +48 -26
  179. package/dist/{types-BeAVNU-F.d.cts → types-C2qKTRR_.d.cts} +50 -45
  180. package/dist/{types-BeAVNU-F.d.ts → types-C2qKTRR_.d.ts} +50 -45
  181. package/dist/{types-DKpsfD3i.d.cts → types-DEaypVsD.d.cts} +115 -55
  182. package/dist/{types-DKpsfD3i.d.ts → types-DEaypVsD.d.ts} +115 -55
  183. package/dist/types-Dl4IaAHR.d.cts +282 -0
  184. package/dist/types-Dl4IaAHR.d.ts +282 -0
  185. package/dist/{types-CDa7F5ct.d.cts → types-DrQpTW1G.d.cts} +58 -50
  186. package/dist/{types-CDa7F5ct.d.ts → types-DrQpTW1G.d.ts} +58 -50
  187. package/dist/types-DuIO7cWK.d.cts +25 -0
  188. package/dist/types-DuIO7cWK.d.ts +25 -0
  189. package/dist/{types-B9A2g05r.d.cts → types-DuxfOYiO.d.cts} +47 -31
  190. package/dist/{types-B9A2g05r.d.ts → types-DuxfOYiO.d.ts} +47 -31
  191. package/dist/{types-D1dI_oTX.d.cts → types-jV1yDDBA.d.cts} +36 -36
  192. package/dist/{types-D1dI_oTX.d.ts → types-jV1yDDBA.d.ts} +36 -36
  193. package/package.json +192 -192
  194. package/src/core/buffer-reader.ts +130 -130
  195. package/src/core/buffer-writer.ts +100 -100
  196. package/src/core/errors.ts +1 -1
  197. package/src/core/hex.ts +21 -21
  198. package/src/core/session-types.ts +61 -59
  199. package/src/core/types.ts +18 -361
  200. package/src/drafts/draft07/codec.ts +1058 -938
  201. package/src/drafts/draft07/data-streams.ts +240 -240
  202. package/src/drafts/draft07/index.ts +124 -89
  203. package/src/drafts/draft07/messages.ts +76 -42
  204. package/src/drafts/draft07/rules.ts +107 -101
  205. package/src/drafts/draft07/session-fsm.ts +315 -287
  206. package/src/drafts/draft07/session.ts +8 -6
  207. package/src/drafts/draft07/types.ts +406 -72
  208. package/src/drafts/draft07/varint.ts +51 -51
  209. package/src/drafts/draft08/codec.ts +985 -953
  210. package/src/drafts/draft08/data-streams.ts +363 -359
  211. package/src/drafts/draft08/index.ts +10 -9
  212. package/src/drafts/draft08/messages.ts +59 -59
  213. package/src/drafts/draft08/rules.ts +73 -73
  214. package/src/drafts/draft08/session-fsm.ts +335 -303
  215. package/src/drafts/draft08/session.ts +6 -7
  216. package/src/drafts/draft08/types.ts +380 -384
  217. package/src/drafts/draft09/codec.ts +977 -945
  218. package/src/drafts/draft09/data-streams.ts +336 -332
  219. package/src/drafts/draft09/index.ts +10 -9
  220. package/src/drafts/draft09/messages.ts +59 -59
  221. package/src/drafts/draft09/rules.ts +73 -73
  222. package/src/drafts/draft09/session-fsm.ts +335 -303
  223. package/src/drafts/draft09/session.ts +6 -7
  224. package/src/drafts/draft09/types.ts +380 -384
  225. package/src/drafts/draft10/codec.ts +977 -945
  226. package/src/drafts/draft10/data-streams.ts +336 -332
  227. package/src/drafts/draft10/index.ts +10 -9
  228. package/src/drafts/draft10/messages.ts +59 -59
  229. package/src/drafts/draft10/rules.ts +73 -73
  230. package/src/drafts/draft10/session-fsm.ts +335 -303
  231. package/src/drafts/draft10/session.ts +6 -7
  232. package/src/drafts/draft10/types.ts +380 -384
  233. package/src/drafts/draft11/codec.ts +1054 -988
  234. package/src/drafts/draft11/data-streams.ts +316 -269
  235. package/src/drafts/draft11/index.ts +10 -9
  236. package/src/drafts/draft11/messages.ts +60 -59
  237. package/src/drafts/draft11/rules.ts +73 -73
  238. package/src/drafts/draft11/session-fsm.ts +359 -333
  239. package/src/drafts/draft11/session.ts +6 -7
  240. package/src/drafts/draft11/types.ts +385 -381
  241. package/src/drafts/draft12/codec.ts +1178 -1122
  242. package/src/drafts/draft12/data-streams.ts +324 -275
  243. package/src/drafts/draft12/index.ts +10 -9
  244. package/src/drafts/draft12/messages.ts +67 -66
  245. package/src/drafts/draft12/rules.ts +79 -79
  246. package/src/drafts/draft12/session-fsm.ts +384 -358
  247. package/src/drafts/draft12/session.ts +6 -7
  248. package/src/drafts/draft12/types.ts +424 -419
  249. package/src/drafts/draft13/codec.ts +1296 -1206
  250. package/src/drafts/draft13/data-streams.ts +326 -275
  251. package/src/drafts/draft13/index.ts +10 -9
  252. package/src/drafts/draft13/messages.ts +73 -68
  253. package/src/drafts/draft13/rules.ts +81 -81
  254. package/src/drafts/draft13/session-fsm.ts +392 -366
  255. package/src/drafts/draft13/session.ts +6 -7
  256. package/src/drafts/draft13/types.ts +447 -438
  257. package/src/drafts/draft14/codec.ts +1347 -1043
  258. package/src/drafts/draft14/data-streams.ts +831 -813
  259. package/src/drafts/draft14/index.ts +17 -9
  260. package/src/drafts/draft14/messages.ts +65 -65
  261. package/src/drafts/draft14/rules.ts +81 -81
  262. package/src/drafts/draft14/session-fsm.ts +415 -405
  263. package/src/drafts/draft14/session.ts +6 -7
  264. package/src/drafts/draft14/types.ts +451 -381
  265. package/src/drafts/draft15/codec.ts +1138 -978
  266. package/src/drafts/draft15/data-streams.ts +842 -794
  267. package/src/drafts/draft15/index.ts +10 -9
  268. package/src/drafts/draft15/messages.ts +54 -53
  269. package/src/drafts/draft15/rules.ts +67 -67
  270. package/src/drafts/draft15/session-fsm.ts +319 -299
  271. package/src/drafts/draft15/session.ts +6 -7
  272. package/src/drafts/draft15/types.ts +357 -339
  273. package/src/drafts/draft16/codec.ts +1242 -966
  274. package/src/drafts/draft16/data-streams.ts +835 -789
  275. package/src/drafts/draft16/index.ts +10 -9
  276. package/src/drafts/draft16/messages.ts +56 -55
  277. package/src/drafts/draft16/rules.ts +69 -69
  278. package/src/drafts/draft16/session-fsm.ts +319 -299
  279. package/src/drafts/draft16/session.ts +6 -7
  280. package/src/drafts/draft16/types.ts +386 -357
  281. package/src/drafts/draft17/codec.ts +1209 -971
  282. package/src/drafts/draft17/data-streams.ts +969 -758
  283. package/src/drafts/draft17/index.ts +9 -7
  284. package/src/drafts/draft17/messages.ts +43 -42
  285. package/src/drafts/draft17/rules.ts +58 -58
  286. package/src/drafts/draft17/session-fsm.ts +248 -216
  287. package/src/drafts/draft17/session.ts +5 -5
  288. package/src/drafts/draft17/types.ts +337 -313
  289. package/src/index.ts +85 -274
  290. package/src/session.ts +62 -23
  291. package/dist/chunk-FZDIEHQL.cjs +0 -1042
  292. package/dist/chunk-HDWJ2GDE.js +0 -24
  293. package/dist/chunk-KNDYS3DK.cjs +0 -24
  294. package/dist/chunk-N2KBF5Q2.js +0 -1042
  295. package/dist/types-QNXoxC9Y.d.cts +0 -236
  296. package/dist/types-QNXoxC9Y.d.ts +0 -236
  297. package/src/drafts/draft07/announce-fsm.ts +0 -2
  298. package/src/drafts/draft07/parameters.ts +0 -12
  299. package/src/drafts/draft07/subscription-fsm.ts +0 -3
@@ -1,89 +1,124 @@
1
- // Re-export types consumers need
2
- export type {
3
- Announce,
4
- AnnounceCancel,
5
- AnnounceError,
6
- AnnounceOk,
7
- ClientSetup,
8
- DecodeErrorCode,
9
- DecodeResult,
10
- Fetch,
11
- FetchCancel,
12
- FetchError,
13
- FetchOk,
14
- FilterType,
15
- GoAway,
16
- GroupOrderValue,
17
- MaxSubscribeId,
18
- MoqtMessage,
19
- MoqtMessageType,
20
- ObjectDatagram,
21
- ServerSetup,
22
- StreamHeaderSubgroup,
23
- Subscribe,
24
- SubscribeAnnounces,
25
- SubscribeAnnouncesError,
26
- SubscribeAnnouncesOk,
27
- SubscribeDone,
28
- SubscribeError,
29
- SubscribeOk,
30
- SubscribeUpdate,
31
- TrackStatus,
32
- TrackStatusRequest,
33
- Unannounce,
34
- Unsubscribe,
35
- UnsubscribeAnnounces,
36
- } from "../../core/types.js";
37
- export { DecodeError } from "../../core/types.js";
38
- export type { Draft07Codec } from "./codec.js";
39
- export {
40
- createDraft07Codec,
41
- decodeDatagram,
42
- decodeFetchStream,
43
- decodeSubgroupStream,
44
- encodeDatagram,
45
- encodeFetchStream,
46
- encodeSubgroupStream,
47
- } from "./codec.js";
48
- export { MESSAGE_ID_TO_TYPE, MESSAGE_TYPE_IDS } from "./messages.js";
49
- export { decodeParameters, encodeParameters } from "./parameters.js";
50
- export {
51
- CLIENT_ONLY_MESSAGES,
52
- CONTROL_MESSAGES,
53
- DATA_MESSAGES,
54
- getLegalIncoming,
55
- getLegalOutgoing,
56
- SERVER_ONLY_MESSAGES,
57
- } from "./rules.js";
58
- export { decodeVarInt, encodeVarInt } from "./varint.js";
59
- export type {
60
- DatagramObject as Draft07DatagramObject,
61
- DataStreamEvent,
62
- DataStreamHeader,
63
- Draft07DataStream,
64
- FetchObjectPayload,
65
- FetchStream,
66
- FetchStreamHeader,
67
- ObjectPayload,
68
- SubgroupStream,
69
- SubgroupStreamHeader,
70
- } from "./types.js";
71
-
72
- import type { DecodeResult, MoqtMessage } from "../../core/types.js";
73
- import type { FetchStream, SubgroupStream } from "./types.js";
74
- import type { DatagramObject } from "./types.js";
75
- import { createDraft07Codec } from "./codec.js";
76
-
77
- const defaultCodec = createDraft07Codec();
78
-
79
- export function encodeMessage(message: MoqtMessage): Uint8Array {
80
- return defaultCodec.encodeMessage(message);
81
- }
82
-
83
- export function decodeMessage(bytes: Uint8Array): DecodeResult<MoqtMessage> {
84
- return defaultCodec.decodeMessage(bytes);
85
- }
86
-
87
- export function createStreamDecoder(): TransformStream<Uint8Array, MoqtMessage> {
88
- return defaultCodec.createStreamDecoder();
89
- }
1
+ export const DRAFT_VERSION = 0xff000007n
2
+
3
+ export type { DecodeErrorCode, DecodeResult } from '../../core/types.js'
4
+ // Re-export types consumers need
5
+ export { DecodeError } from '../../core/types.js'
6
+ export type { Draft07Codec } from './codec.js'
7
+ export {
8
+ createDraft07Codec,
9
+ decodeDatagram,
10
+ decodeFetchStream,
11
+ decodeSubgroupStream,
12
+ encodeDatagram,
13
+ encodeFetchStream,
14
+ encodeSubgroupStream,
15
+ } from './codec.js'
16
+ export {
17
+ MESSAGE_ID_MAP,
18
+ MESSAGE_TYPE_MAP,
19
+ MSG_ANNOUNCE,
20
+ MSG_ANNOUNCE_CANCEL,
21
+ MSG_ANNOUNCE_ERROR,
22
+ MSG_ANNOUNCE_OK,
23
+ MSG_CLIENT_SETUP,
24
+ MSG_FETCH,
25
+ MSG_FETCH_CANCEL,
26
+ MSG_FETCH_ERROR,
27
+ MSG_FETCH_HEADER,
28
+ MSG_FETCH_OK,
29
+ MSG_GOAWAY,
30
+ MSG_MAX_SUBSCRIBE_ID,
31
+ MSG_OBJECT_DATAGRAM,
32
+ MSG_SERVER_SETUP,
33
+ MSG_STREAM_HEADER_SUBGROUP,
34
+ MSG_SUBSCRIBE,
35
+ MSG_SUBSCRIBE_ANNOUNCES,
36
+ MSG_SUBSCRIBE_ANNOUNCES_ERROR,
37
+ MSG_SUBSCRIBE_ANNOUNCES_OK,
38
+ MSG_SUBSCRIBE_DONE,
39
+ MSG_SUBSCRIBE_ERROR,
40
+ MSG_SUBSCRIBE_OK,
41
+ MSG_SUBSCRIBE_UPDATE,
42
+ MSG_TRACK_STATUS,
43
+ MSG_TRACK_STATUS_REQUEST,
44
+ MSG_UNANNOUNCE,
45
+ MSG_UNSUBSCRIBE,
46
+ MSG_UNSUBSCRIBE_ANNOUNCES,
47
+ PARAM_AUTHORIZATION_INFO,
48
+ PARAM_DELIVERY_TIMEOUT,
49
+ PARAM_MAX_CACHE_DURATION,
50
+ SETUP_PARAM_MAX_SUBSCRIBE_ID,
51
+ SETUP_PARAM_PATH,
52
+ SETUP_PARAM_ROLE,
53
+ } from './messages.js'
54
+ export {
55
+ CLIENT_ONLY_MESSAGES,
56
+ CONTROL_MESSAGES,
57
+ DATA_MESSAGES,
58
+ getLegalIncoming,
59
+ getLegalOutgoing,
60
+ SERVER_ONLY_MESSAGES,
61
+ } from './rules.js'
62
+ export type {
63
+ Announce,
64
+ AnnounceCancel,
65
+ AnnounceError,
66
+ AnnounceOk,
67
+ ClientSetup,
68
+ DatagramObject as Draft07DatagramObject,
69
+ DataStreamEvent,
70
+ DataStreamHeader,
71
+ Draft07DataStream,
72
+ Draft07Message,
73
+ Draft07MessageType,
74
+ Draft07Params,
75
+ Draft07SetupParams,
76
+ Fetch,
77
+ FetchCancel,
78
+ FetchError,
79
+ FetchObjectPayload,
80
+ FetchOk,
81
+ FetchStream,
82
+ FetchStreamHeader,
83
+ GoAway,
84
+ MaxSubscribeId,
85
+ ObjectDatagram,
86
+ ObjectPayload,
87
+ ServerSetup,
88
+ StreamHeaderSubgroup,
89
+ SubgroupStream,
90
+ SubgroupStreamHeader,
91
+ Subscribe,
92
+ SubscribeAnnounces,
93
+ SubscribeAnnouncesError,
94
+ SubscribeAnnouncesOk,
95
+ SubscribeDone,
96
+ SubscribeError,
97
+ SubscribeOk,
98
+ SubscribeUpdate,
99
+ TrackStatus,
100
+ TrackStatusRequest,
101
+ Unannounce,
102
+ UnknownParam,
103
+ Unsubscribe,
104
+ UnsubscribeAnnounces,
105
+ } from './types.js'
106
+ export { decodeVarInt, encodeVarInt } from './varint.js'
107
+
108
+ import type { DecodeResult } from '../../core/types.js'
109
+ import { createDraft07Codec } from './codec.js'
110
+ import type { Draft07Message } from './types.js'
111
+
112
+ const defaultCodec = createDraft07Codec()
113
+
114
+ export function encodeMessage(message: Draft07Message): Uint8Array {
115
+ return defaultCodec.encodeMessage(message)
116
+ }
117
+
118
+ export function decodeMessage(bytes: Uint8Array): DecodeResult<Draft07Message> {
119
+ return defaultCodec.decodeMessage(bytes)
120
+ }
121
+
122
+ export function createStreamDecoder(): TransformStream<Uint8Array, Draft07Message> {
123
+ return defaultCodec.createStreamDecoder()
124
+ }
@@ -1,42 +1,76 @@
1
- // MoQT draft-ietf-moq-transport-07 message type IDs (wire format)
2
- export const MESSAGE_TYPE_IDS = {
3
- // Control messages (on control stream)
4
- subscribe_update: 0x02n,
5
- subscribe: 0x03n,
6
- subscribe_ok: 0x04n,
7
- subscribe_error: 0x05n,
8
- announce: 0x06n,
9
- announce_ok: 0x07n,
10
- announce_error: 0x08n,
11
- unannounce: 0x09n,
12
- unsubscribe: 0x0an,
13
- subscribe_done: 0x0bn,
14
- announce_cancel: 0x0cn,
15
- track_status_request: 0x0dn,
16
- track_status: 0x0en,
17
- goaway: 0x10n,
18
- subscribe_announces: 0x11n,
19
- subscribe_announces_ok: 0x12n,
20
- subscribe_announces_error: 0x13n,
21
- unsubscribe_announces: 0x14n,
22
- max_subscribe_id: 0x15n,
23
- fetch: 0x16n,
24
- fetch_cancel: 0x17n,
25
- fetch_ok: 0x18n,
26
- fetch_error: 0x19n,
27
- client_setup: 0x40n,
28
- server_setup: 0x41n,
29
- // Data stream messages (Section 7, Table 5)
30
- object_datagram: 0x01n,
31
- stream_header_subgroup: 0x04n, // Note: same ID as subscribe_ok but used on data streams, context disambiguates
32
- fetch_header: 0x05n, // Note: same ID as subscribe_error but used on data streams, context disambiguates
33
- } as const;
34
-
35
- // Reverse map: wire ID -> message type name
36
- export const MESSAGE_ID_TO_TYPE = new Map<bigint, string>();
37
- for (const [name, id] of Object.entries(MESSAGE_TYPE_IDS)) {
38
- // For duplicate IDs, control stream messages take priority in the reverse map
39
- if (!MESSAGE_ID_TO_TYPE.has(id) || name !== "stream_header_subgroup") {
40
- MESSAGE_ID_TO_TYPE.set(id, name);
41
- }
42
- }
1
+ // Draft-07 message type wire IDs
2
+
3
+ export const MSG_SUBSCRIBE_UPDATE = 0x02n
4
+ export const MSG_SUBSCRIBE = 0x03n
5
+ export const MSG_SUBSCRIBE_OK = 0x04n
6
+ export const MSG_SUBSCRIBE_ERROR = 0x05n
7
+ export const MSG_ANNOUNCE = 0x06n
8
+ export const MSG_ANNOUNCE_OK = 0x07n
9
+ export const MSG_ANNOUNCE_ERROR = 0x08n
10
+ export const MSG_UNANNOUNCE = 0x09n
11
+ export const MSG_UNSUBSCRIBE = 0x0an
12
+ export const MSG_SUBSCRIBE_DONE = 0x0bn
13
+ export const MSG_ANNOUNCE_CANCEL = 0x0cn
14
+ export const MSG_TRACK_STATUS_REQUEST = 0x0dn
15
+ export const MSG_TRACK_STATUS = 0x0en
16
+ export const MSG_GOAWAY = 0x10n
17
+ export const MSG_SUBSCRIBE_ANNOUNCES = 0x11n
18
+ export const MSG_SUBSCRIBE_ANNOUNCES_OK = 0x12n
19
+ export const MSG_SUBSCRIBE_ANNOUNCES_ERROR = 0x13n
20
+ export const MSG_UNSUBSCRIBE_ANNOUNCES = 0x14n
21
+ export const MSG_MAX_SUBSCRIBE_ID = 0x15n
22
+ export const MSG_FETCH = 0x16n
23
+ export const MSG_FETCH_CANCEL = 0x17n
24
+ export const MSG_FETCH_OK = 0x18n
25
+ export const MSG_FETCH_ERROR = 0x19n
26
+ export const MSG_CLIENT_SETUP = 0x40n
27
+ export const MSG_SERVER_SETUP = 0x41n
28
+
29
+ // Setup parameter type IDs
30
+ export const SETUP_PARAM_ROLE = 0x00n
31
+ export const SETUP_PARAM_PATH = 0x01n
32
+ export const SETUP_PARAM_MAX_SUBSCRIBE_ID = 0x02n
33
+
34
+ // Version-specific parameter type IDs
35
+ export const PARAM_AUTHORIZATION_INFO = 0x02n
36
+ export const PARAM_DELIVERY_TIMEOUT = 0x03n
37
+ export const PARAM_MAX_CACHE_DURATION = 0x04n
38
+
39
+ // Data stream type IDs (context disambiguates from control messages with same IDs)
40
+ export const MSG_OBJECT_DATAGRAM = 0x01n
41
+ export const MSG_STREAM_HEADER_SUBGROUP = 0x04n
42
+ export const MSG_FETCH_HEADER = 0x05n
43
+
44
+ // Map from wire ID to message type name
45
+ export const MESSAGE_TYPE_MAP: ReadonlyMap<bigint, string> = new Map([
46
+ [MSG_CLIENT_SETUP, 'client_setup'],
47
+ [MSG_SERVER_SETUP, 'server_setup'],
48
+ [MSG_SUBSCRIBE, 'subscribe'],
49
+ [MSG_SUBSCRIBE_OK, 'subscribe_ok'],
50
+ [MSG_SUBSCRIBE_ERROR, 'subscribe_error'],
51
+ [MSG_SUBSCRIBE_UPDATE, 'subscribe_update'],
52
+ [MSG_SUBSCRIBE_DONE, 'subscribe_done'],
53
+ [MSG_UNSUBSCRIBE, 'unsubscribe'],
54
+ [MSG_ANNOUNCE, 'announce'],
55
+ [MSG_ANNOUNCE_OK, 'announce_ok'],
56
+ [MSG_ANNOUNCE_ERROR, 'announce_error'],
57
+ [MSG_UNANNOUNCE, 'unannounce'],
58
+ [MSG_ANNOUNCE_CANCEL, 'announce_cancel'],
59
+ [MSG_SUBSCRIBE_ANNOUNCES, 'subscribe_announces'],
60
+ [MSG_SUBSCRIBE_ANNOUNCES_OK, 'subscribe_announces_ok'],
61
+ [MSG_SUBSCRIBE_ANNOUNCES_ERROR, 'subscribe_announces_error'],
62
+ [MSG_UNSUBSCRIBE_ANNOUNCES, 'unsubscribe_announces'],
63
+ [MSG_FETCH, 'fetch'],
64
+ [MSG_FETCH_OK, 'fetch_ok'],
65
+ [MSG_FETCH_ERROR, 'fetch_error'],
66
+ [MSG_FETCH_CANCEL, 'fetch_cancel'],
67
+ [MSG_TRACK_STATUS_REQUEST, 'track_status_request'],
68
+ [MSG_TRACK_STATUS, 'track_status'],
69
+ [MSG_GOAWAY, 'goaway'],
70
+ [MSG_MAX_SUBSCRIBE_ID, 'max_subscribe_id'],
71
+ ])
72
+
73
+ // Reverse map
74
+ export const MESSAGE_ID_MAP: ReadonlyMap<string, bigint> = new Map(
75
+ [...MESSAGE_TYPE_MAP.entries()].map(([id, name]) => [name, id]),
76
+ )
@@ -1,101 +1,107 @@
1
- import type { MoqtMessageType } from "../../core/types.js";
2
-
3
- export const CONTROL_MESSAGES: ReadonlySet<MoqtMessageType> = new Set([
4
- "client_setup",
5
- "server_setup",
6
- "subscribe",
7
- "subscribe_ok",
8
- "subscribe_error",
9
- "subscribe_done",
10
- "subscribe_update",
11
- "unsubscribe",
12
- "announce",
13
- "announce_ok",
14
- "announce_error",
15
- "announce_cancel",
16
- "unannounce",
17
- "track_status_request",
18
- "track_status",
19
- "goaway",
20
- "subscribe_announces",
21
- "subscribe_announces_ok",
22
- "subscribe_announces_error",
23
- "unsubscribe_announces",
24
- "max_subscribe_id",
25
- "fetch",
26
- "fetch_ok",
27
- "fetch_error",
28
- "fetch_cancel",
29
- ]);
30
-
31
- export const DATA_MESSAGES: ReadonlySet<MoqtMessageType> = new Set([
32
- "object_datagram",
33
- "stream_header_subgroup",
34
- ]);
35
-
36
- // Messages that only a client can send
37
- export const CLIENT_ONLY_MESSAGES: ReadonlySet<MoqtMessageType> = new Set([
38
- "client_setup",
39
- "subscribe",
40
- "subscribe_update",
41
- "unsubscribe",
42
- "announce",
43
- "unannounce",
44
- "subscribe_announces",
45
- "unsubscribe_announces",
46
- "fetch",
47
- "fetch_cancel",
48
- "track_status_request",
49
- ]);
50
-
51
- // Messages that only a server can send
52
- export const SERVER_ONLY_MESSAGES: ReadonlySet<MoqtMessageType> = new Set([
53
- "server_setup",
54
- "subscribe_ok",
55
- "subscribe_error",
56
- "subscribe_done",
57
- "announce_ok",
58
- "announce_error",
59
- "announce_cancel",
60
- "subscribe_announces_ok",
61
- "subscribe_announces_error",
62
- "max_subscribe_id",
63
- "fetch_ok",
64
- "fetch_error",
65
- "track_status",
66
- "goaway",
67
- ]);
68
-
69
- // Messages legal in each session phase -- for outbound validation
70
- export function getLegalOutgoing(phase: string, role: "client" | "server"): Set<MoqtMessageType> {
71
- const legal = new Set<MoqtMessageType>();
72
-
73
- switch (phase) {
74
- case "idle":
75
- if (role === "client") legal.add("client_setup");
76
- break;
77
- case "setup":
78
- if (role === "server") legal.add("server_setup");
79
- break;
80
- case "ready": {
81
- const roleMessages = role === "client" ? CLIENT_ONLY_MESSAGES : SERVER_ONLY_MESSAGES;
82
- for (const msg of roleMessages) {
83
- if (msg !== "client_setup" && msg !== "server_setup") {
84
- legal.add(msg);
85
- }
86
- }
87
- break;
88
- }
89
- case "draining":
90
- // Limited set during draining - can still finish active operations
91
- break;
92
- }
93
-
94
- return legal;
95
- }
96
-
97
- export function getLegalIncoming(phase: string, role: "client" | "server"): Set<MoqtMessageType> {
98
- // Incoming from remote = the other role's outgoing
99
- const remoteRole = role === "client" ? "server" : "client";
100
- return getLegalOutgoing(phase, remoteRole);
101
- }
1
+ import type { Draft07MessageType } from './types.js'
2
+
3
+ export const CONTROL_MESSAGES: ReadonlySet<Draft07MessageType> = new Set([
4
+ 'client_setup',
5
+ 'server_setup',
6
+ 'subscribe',
7
+ 'subscribe_ok',
8
+ 'subscribe_error',
9
+ 'subscribe_done',
10
+ 'subscribe_update',
11
+ 'unsubscribe',
12
+ 'announce',
13
+ 'announce_ok',
14
+ 'announce_error',
15
+ 'announce_cancel',
16
+ 'unannounce',
17
+ 'track_status_request',
18
+ 'track_status',
19
+ 'goaway',
20
+ 'subscribe_announces',
21
+ 'subscribe_announces_ok',
22
+ 'subscribe_announces_error',
23
+ 'unsubscribe_announces',
24
+ 'max_subscribe_id',
25
+ 'fetch',
26
+ 'fetch_ok',
27
+ 'fetch_error',
28
+ 'fetch_cancel',
29
+ ])
30
+
31
+ export const DATA_MESSAGES: ReadonlySet<Draft07MessageType> = new Set([
32
+ 'object_datagram',
33
+ 'stream_header_subgroup',
34
+ ])
35
+
36
+ // Messages that only a client can send
37
+ export const CLIENT_ONLY_MESSAGES: ReadonlySet<Draft07MessageType> = new Set([
38
+ 'client_setup',
39
+ 'subscribe',
40
+ 'subscribe_update',
41
+ 'unsubscribe',
42
+ 'announce',
43
+ 'unannounce',
44
+ 'subscribe_announces',
45
+ 'unsubscribe_announces',
46
+ 'fetch',
47
+ 'fetch_cancel',
48
+ 'track_status_request',
49
+ ])
50
+
51
+ // Messages that only a server can send
52
+ export const SERVER_ONLY_MESSAGES: ReadonlySet<Draft07MessageType> = new Set([
53
+ 'server_setup',
54
+ 'subscribe_ok',
55
+ 'subscribe_error',
56
+ 'subscribe_done',
57
+ 'announce_ok',
58
+ 'announce_error',
59
+ 'announce_cancel',
60
+ 'subscribe_announces_ok',
61
+ 'subscribe_announces_error',
62
+ 'max_subscribe_id',
63
+ 'fetch_ok',
64
+ 'fetch_error',
65
+ 'track_status',
66
+ 'goaway',
67
+ ])
68
+
69
+ // Messages legal in each session phase -- for outbound validation
70
+ export function getLegalOutgoing(
71
+ phase: string,
72
+ role: 'client' | 'server',
73
+ ): Set<Draft07MessageType> {
74
+ const legal = new Set<Draft07MessageType>()
75
+
76
+ switch (phase) {
77
+ case 'idle':
78
+ if (role === 'client') legal.add('client_setup')
79
+ break
80
+ case 'setup':
81
+ if (role === 'server') legal.add('server_setup')
82
+ break
83
+ case 'ready': {
84
+ const roleMessages = role === 'client' ? CLIENT_ONLY_MESSAGES : SERVER_ONLY_MESSAGES
85
+ for (const msg of roleMessages) {
86
+ if (msg !== 'client_setup' && msg !== 'server_setup') {
87
+ legal.add(msg)
88
+ }
89
+ }
90
+ break
91
+ }
92
+ case 'draining':
93
+ // Limited set during draining - can still finish active operations
94
+ break
95
+ }
96
+
97
+ return legal
98
+ }
99
+
100
+ export function getLegalIncoming(
101
+ phase: string,
102
+ role: 'client' | 'server',
103
+ ): Set<Draft07MessageType> {
104
+ // Incoming from remote = the other role's outgoing
105
+ const remoteRole = role === 'client' ? 'server' : 'client'
106
+ return getLegalOutgoing(phase, remoteRole)
107
+ }