@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,313 +1,337 @@
1
- // Draft-17 specific message types
2
-
3
- // Unknown parameter for passthrough
4
- export interface UnknownParam {
5
- readonly id: string; // e.g. "0x21"
6
- readonly length: number;
7
- readonly raw_hex: string;
8
- }
9
-
10
- // Setup options (KVP encoding, no count prefix)
11
- export interface Draft17SetupOptions {
12
- path?: string; // 0x01 odd
13
- max_auth_token_cache_size?: bigint; // 0x04 even
14
- authority?: string; // 0x05 odd
15
- moqt_implementation?: string; // 0x07 odd
16
- unknown?: UnknownParam[];
17
- }
18
-
19
- // Subscription filter parameter
20
- export interface SubscriptionFilter {
21
- readonly filter_type: bigint;
22
- readonly start_group?: bigint;
23
- readonly start_object?: bigint;
24
- readonly end_group?: bigint;
25
- }
26
-
27
- // Largest object location parameter
28
- export interface LargestObject {
29
- readonly group: bigint;
30
- readonly object: bigint;
31
- }
32
-
33
- // Version-specific parameters (delta-encoded types, count-prefixed)
34
- export interface Draft17Params {
35
- expires?: bigint; // 0x08 varint
36
- largest_object?: LargestObject; // 0x09 Location (2 bare varints)
37
- subscriber_priority?: bigint; // 0x20 uint8
38
- subscription_filter?: SubscriptionFilter; // 0x21 length-prefixed
39
- group_order?: bigint; // 0x22 uint8
40
- unknown?: UnknownParam[];
41
- }
42
-
43
- // Track properties (KVP encoding, no count prefix, read until end of payload)
44
- export interface Draft17TrackProperties {
45
- unknown?: UnknownParam[];
46
- }
47
-
48
- // Draft-17 message type tag union
49
- export type Draft17MessageType =
50
- | "setup"
51
- | "subscribe"
52
- | "subscribe_ok"
53
- | "request_update"
54
- | "publish"
55
- | "publish_ok"
56
- | "publish_done"
57
- | "publish_namespace"
58
- | "namespace"
59
- | "namespace_done"
60
- | "subscribe_namespace"
61
- | "publish_blocked"
62
- | "fetch"
63
- | "fetch_ok"
64
- | "track_status"
65
- | "request_ok"
66
- | "request_error"
67
- | "goaway";
68
-
69
- // Base
70
- export interface Draft17BaseMessage {
71
- readonly type: Draft17MessageType;
72
- }
73
-
74
- // Setup — single unified message (0x2F00)
75
- export interface Draft17Setup extends Draft17BaseMessage {
76
- readonly type: "setup";
77
- readonly options: Draft17SetupOptions;
78
- }
79
-
80
- // Subscribe — fields moved to parameters, added required_request_id_delta
81
- export interface Draft17Subscribe extends Draft17BaseMessage {
82
- readonly type: "subscribe";
83
- readonly request_id: bigint;
84
- readonly required_request_id_delta: bigint;
85
- readonly track_namespace: string[];
86
- readonly track_name: string;
87
- readonly parameters: Draft17Params;
88
- }
89
-
90
- export interface Draft17SubscribeOk extends Draft17BaseMessage {
91
- readonly type: "subscribe_ok";
92
- readonly track_alias: bigint;
93
- readonly parameters: Draft17Params;
94
- readonly track_properties: Draft17TrackProperties;
95
- }
96
-
97
- export interface Draft17RequestUpdate extends Draft17BaseMessage {
98
- readonly type: "request_update";
99
- readonly request_id: bigint;
100
- readonly required_request_id_delta: bigint;
101
- readonly parameters: Draft17Params;
102
- }
103
-
104
- // Publish
105
- export interface Draft17Publish extends Draft17BaseMessage {
106
- readonly type: "publish";
107
- readonly request_id: bigint;
108
- readonly required_request_id_delta: bigint;
109
- readonly track_namespace: string[];
110
- readonly track_name: string;
111
- readonly track_alias: bigint;
112
- readonly parameters: Draft17Params;
113
- readonly track_properties: Draft17TrackProperties;
114
- }
115
-
116
- export interface Draft17PublishOk extends Draft17BaseMessage {
117
- readonly type: "publish_ok";
118
- readonly parameters: Draft17Params;
119
- }
120
-
121
- export interface Draft17PublishDone extends Draft17BaseMessage {
122
- readonly type: "publish_done";
123
- readonly status_code: bigint;
124
- readonly stream_count: bigint;
125
- readonly reason_phrase: string;
126
- }
127
-
128
- // Namespace
129
- export interface Draft17PublishNamespace extends Draft17BaseMessage {
130
- readonly type: "publish_namespace";
131
- readonly request_id: bigint;
132
- readonly required_request_id_delta: bigint;
133
- readonly track_namespace: string[];
134
- readonly parameters: Draft17Params;
135
- }
136
-
137
- export interface Draft17Namespace extends Draft17BaseMessage {
138
- readonly type: "namespace";
139
- readonly namespace_suffix: string[];
140
- }
141
-
142
- export interface Draft17NamespaceDone extends Draft17BaseMessage {
143
- readonly type: "namespace_done";
144
- readonly namespace_suffix: string[];
145
- }
146
-
147
- export interface Draft17SubscribeNamespace extends Draft17BaseMessage {
148
- readonly type: "subscribe_namespace";
149
- readonly request_id: bigint;
150
- readonly required_request_id_delta: bigint;
151
- readonly namespace_prefix: string[];
152
- readonly subscribe_options: bigint;
153
- readonly parameters: Draft17Params;
154
- }
155
-
156
- // New in draft-17: PUBLISH_BLOCKED
157
- export interface Draft17PublishBlocked extends Draft17BaseMessage {
158
- readonly type: "publish_blocked";
159
- readonly namespace_suffix: string[];
160
- readonly track_name: string;
161
- }
162
-
163
- // Fetch
164
- export interface StandaloneFetch {
165
- readonly track_namespace: string[];
166
- readonly track_name: string;
167
- readonly start_group: bigint;
168
- readonly start_object: bigint;
169
- readonly end_group: bigint;
170
- readonly end_object: bigint;
171
- }
172
-
173
- export interface JoiningFetch {
174
- readonly joining_request_id: bigint;
175
- readonly joining_start: bigint;
176
- }
177
-
178
- export interface Draft17Fetch extends Draft17BaseMessage {
179
- readonly type: "fetch";
180
- readonly request_id: bigint;
181
- readonly required_request_id_delta: bigint;
182
- readonly fetch_type: bigint;
183
- readonly standalone?: StandaloneFetch;
184
- readonly joining?: JoiningFetch;
185
- readonly parameters: Draft17Params;
186
- }
187
-
188
- export interface Draft17FetchOk extends Draft17BaseMessage {
189
- readonly type: "fetch_ok";
190
- readonly end_of_track: number; // uint8
191
- readonly end_group: bigint;
192
- readonly end_object: bigint;
193
- readonly parameters: Draft17Params;
194
- readonly track_properties: Draft17TrackProperties;
195
- }
196
-
197
- // Track Status — same format as subscribe in draft-17
198
- export interface Draft17TrackStatus extends Draft17BaseMessage {
199
- readonly type: "track_status";
200
- readonly request_id: bigint;
201
- readonly required_request_id_delta: bigint;
202
- readonly track_namespace: string[];
203
- readonly track_name: string;
204
- readonly parameters: Draft17Params;
205
- }
206
-
207
- // Consolidated response messages — no request_id in draft-17
208
- export interface Draft17RequestOk extends Draft17BaseMessage {
209
- readonly type: "request_ok";
210
- readonly parameters: Draft17Params;
211
- }
212
-
213
- export interface Draft17RequestError extends Draft17BaseMessage {
214
- readonly type: "request_error";
215
- readonly error_code: bigint;
216
- readonly retry_interval: bigint;
217
- readonly reason_phrase: string;
218
- }
219
-
220
- // Session Control
221
- export interface Draft17GoAway extends Draft17BaseMessage {
222
- readonly type: "goaway";
223
- readonly new_session_uri: string;
224
- readonly timeout: bigint;
225
- }
226
-
227
- // Union of all draft-17 control messages
228
- export type Draft17Message =
229
- | Draft17Setup
230
- | Draft17Subscribe
231
- | Draft17SubscribeOk
232
- | Draft17RequestUpdate
233
- | Draft17Publish
234
- | Draft17PublishOk
235
- | Draft17PublishDone
236
- | Draft17PublishNamespace
237
- | Draft17Namespace
238
- | Draft17NamespaceDone
239
- | Draft17SubscribeNamespace
240
- | Draft17PublishBlocked
241
- | Draft17Fetch
242
- | Draft17FetchOk
243
- | Draft17TrackStatus
244
- | Draft17RequestOk
245
- | Draft17RequestError
246
- | Draft17GoAway;
247
-
248
- // Data stream types (same as draft-16)
249
- export interface ObjectPayload {
250
- readonly type: "object";
251
- readonly byteOffset: number;
252
- readonly payloadByteOffset: number;
253
- readonly objectId: bigint;
254
- readonly payloadLength: number;
255
- readonly status?: bigint;
256
- readonly extensionData: Uint8Array;
257
- readonly payload: Uint8Array;
258
- }
259
-
260
- export interface SubgroupStream {
261
- readonly type: "subgroup";
262
- readonly headerType: number;
263
- readonly trackAlias: bigint;
264
- readonly groupId: bigint;
265
- readonly subgroupId: bigint;
266
- readonly publisherPriority: number;
267
- readonly objects: ObjectPayload[];
268
- }
269
-
270
- export interface DatagramObject {
271
- readonly type: "datagram";
272
- readonly datagramType: number;
273
- readonly trackAlias: bigint;
274
- readonly groupId: bigint;
275
- readonly objectId: bigint;
276
- readonly publisherPriority: number;
277
- readonly endOfGroup?: boolean;
278
- readonly objectStatus?: bigint;
279
- readonly payloadLength: number;
280
- readonly payload: Uint8Array;
281
- }
282
-
283
- export interface FetchObjectPayload extends ObjectPayload {
284
- readonly serializationFlags: number;
285
- readonly groupId: bigint;
286
- readonly subgroupId: bigint;
287
- readonly publisherPriority: number;
288
- }
289
-
290
- export interface FetchStream {
291
- readonly type: "fetch";
292
- readonly requestId: bigint;
293
- readonly objects: FetchObjectPayload[];
294
- }
295
-
296
- export type Draft17DataStream = SubgroupStream | DatagramObject | FetchStream;
297
-
298
- // Streaming data stream decoder types
299
- export interface SubgroupStreamHeader {
300
- readonly type: "subgroup_header";
301
- readonly trackAlias: bigint;
302
- readonly groupId: bigint;
303
- readonly subgroupId: bigint;
304
- readonly publisherPriority: number;
305
- }
306
-
307
- export interface FetchStreamHeader {
308
- readonly type: "fetch_header";
309
- readonly requestId: bigint;
310
- }
311
-
312
- export type DataStreamHeader = SubgroupStreamHeader | FetchStreamHeader;
313
- export type DataStreamEvent = DataStreamHeader | ObjectPayload;
1
+ // Draft-17 specific message types
2
+
3
+ // Unknown parameter for passthrough
4
+ export interface UnknownParam {
5
+ readonly id: string // e.g. "0x21"
6
+ readonly length: number
7
+ readonly raw_hex: string
8
+ }
9
+
10
+ // Authorization token parameter (nested structure within length-prefixed param)
11
+ export interface AuthorizationToken {
12
+ readonly alias_type: bigint // 0=DELETE, 1=REGISTER, 2=USE_ALIAS, 3=USE_VALUE
13
+ readonly token_alias?: bigint // present for DELETE(0), REGISTER(1), USE_ALIAS(2)
14
+ readonly token_type?: bigint // present for REGISTER(1), USE_VALUE(3)
15
+ readonly token_value?: string // present for REGISTER(1), USE_VALUE(3)
16
+ }
17
+
18
+ // Setup options (KVP encoding, no count prefix)
19
+ export interface Draft17SetupOptions {
20
+ path?: string // 0x01 odd
21
+ authorization_token?: AuthorizationToken // 0x03 odd
22
+ max_auth_token_cache_size?: bigint // 0x04 even
23
+ authority?: string // 0x05 odd
24
+ moqt_implementation?: string // 0x07 odd
25
+ unknown?: UnknownParam[]
26
+ }
27
+
28
+ // Subscription filter parameter
29
+ export interface SubscriptionFilter {
30
+ readonly filter_type: bigint
31
+ readonly start_group?: bigint
32
+ readonly start_object?: bigint
33
+ readonly end_group?: bigint
34
+ }
35
+
36
+ // Largest object location parameter
37
+ export interface LargestObject {
38
+ readonly group: bigint
39
+ readonly object: bigint
40
+ }
41
+
42
+ // Version-specific parameters (delta-encoded types, count-prefixed)
43
+ export interface Draft17Params {
44
+ delivery_timeout?: bigint // 0x02 varint
45
+ authorization_token?: AuthorizationToken // 0x03 length-prefixed nested
46
+ rendezvous_timeout?: bigint // 0x04 varint
47
+ expires?: bigint // 0x08 varint
48
+ largest_object?: LargestObject // 0x09 Location (2 bare varints)
49
+ forward?: bigint // 0x10 varint
50
+ subscriber_priority?: bigint // 0x20 uint8
51
+ subscription_filter?: SubscriptionFilter // 0x21 length-prefixed
52
+ group_order?: bigint // 0x22 uint8
53
+ new_group_request?: bigint // 0x32 varint
54
+ unknown?: UnknownParam[]
55
+ }
56
+
57
+ // Track properties (KVP encoding, no count prefix, read until end of payload)
58
+ export interface Draft17TrackProperties {
59
+ delivery_timeout?: bigint // 0x02 even varint
60
+ max_cache_duration?: bigint // 0x04 even varint
61
+ immutable_properties?: string // 0x0b odd length-prefixed raw hex
62
+ default_publisher_priority?: bigint // 0x0c even varint
63
+ default_publisher_group_order?: bigint // 0x22 even varint
64
+ dynamic_groups?: bigint // 0x30 even varint
65
+ unknown?: UnknownParam[]
66
+ }
67
+
68
+ // Draft-17 message type tag union
69
+ export type Draft17MessageType =
70
+ | 'setup'
71
+ | 'subscribe'
72
+ | 'subscribe_ok'
73
+ | 'request_update'
74
+ | 'publish'
75
+ | 'publish_ok'
76
+ | 'publish_done'
77
+ | 'publish_namespace'
78
+ | 'namespace'
79
+ | 'namespace_done'
80
+ | 'subscribe_namespace'
81
+ | 'publish_blocked'
82
+ | 'fetch'
83
+ | 'fetch_ok'
84
+ | 'track_status'
85
+ | 'request_ok'
86
+ | 'request_error'
87
+ | 'goaway'
88
+
89
+ // Base
90
+ export interface Draft17BaseMessage {
91
+ readonly type: Draft17MessageType
92
+ }
93
+
94
+ // Setup — single unified message (0x2F00)
95
+ export interface Draft17Setup extends Draft17BaseMessage {
96
+ readonly type: 'setup'
97
+ readonly options: Draft17SetupOptions
98
+ }
99
+
100
+ // Subscribe — fields moved to parameters, added required_request_id_delta
101
+ export interface Draft17Subscribe extends Draft17BaseMessage {
102
+ readonly type: 'subscribe'
103
+ readonly request_id: bigint
104
+ readonly required_request_id_delta: bigint
105
+ readonly track_namespace: string[]
106
+ readonly track_name: string
107
+ readonly parameters: Draft17Params
108
+ }
109
+
110
+ export interface Draft17SubscribeOk extends Draft17BaseMessage {
111
+ readonly type: 'subscribe_ok'
112
+ readonly track_alias: bigint
113
+ readonly parameters: Draft17Params
114
+ readonly track_properties: Draft17TrackProperties
115
+ }
116
+
117
+ export interface Draft17RequestUpdate extends Draft17BaseMessage {
118
+ readonly type: 'request_update'
119
+ readonly request_id: bigint
120
+ readonly required_request_id_delta: bigint
121
+ readonly parameters: Draft17Params
122
+ }
123
+
124
+ // Publish
125
+ export interface Draft17Publish extends Draft17BaseMessage {
126
+ readonly type: 'publish'
127
+ readonly request_id: bigint
128
+ readonly required_request_id_delta: bigint
129
+ readonly track_namespace: string[]
130
+ readonly track_name: string
131
+ readonly track_alias: bigint
132
+ readonly parameters: Draft17Params
133
+ readonly track_properties: Draft17TrackProperties
134
+ }
135
+
136
+ export interface Draft17PublishOk extends Draft17BaseMessage {
137
+ readonly type: 'publish_ok'
138
+ readonly parameters: Draft17Params
139
+ }
140
+
141
+ export interface Draft17PublishDone extends Draft17BaseMessage {
142
+ readonly type: 'publish_done'
143
+ readonly status_code: bigint
144
+ readonly stream_count: bigint
145
+ readonly reason_phrase: string
146
+ }
147
+
148
+ // Namespace
149
+ export interface Draft17PublishNamespace extends Draft17BaseMessage {
150
+ readonly type: 'publish_namespace'
151
+ readonly request_id: bigint
152
+ readonly required_request_id_delta: bigint
153
+ readonly track_namespace: string[]
154
+ readonly parameters: Draft17Params
155
+ }
156
+
157
+ export interface Draft17Namespace extends Draft17BaseMessage {
158
+ readonly type: 'namespace'
159
+ readonly namespace_suffix: string[]
160
+ }
161
+
162
+ export interface Draft17NamespaceDone extends Draft17BaseMessage {
163
+ readonly type: 'namespace_done'
164
+ readonly namespace_suffix: string[]
165
+ }
166
+
167
+ export interface Draft17SubscribeNamespace extends Draft17BaseMessage {
168
+ readonly type: 'subscribe_namespace'
169
+ readonly request_id: bigint
170
+ readonly required_request_id_delta: bigint
171
+ readonly namespace_prefix: string[]
172
+ readonly subscribe_options: bigint
173
+ readonly parameters: Draft17Params
174
+ }
175
+
176
+ // New in draft-17: PUBLISH_BLOCKED
177
+ export interface Draft17PublishBlocked extends Draft17BaseMessage {
178
+ readonly type: 'publish_blocked'
179
+ readonly namespace_suffix: string[]
180
+ readonly track_name: string
181
+ }
182
+
183
+ // Fetch
184
+ export interface StandaloneFetch {
185
+ readonly track_namespace: string[]
186
+ readonly track_name: string
187
+ readonly start_group: bigint
188
+ readonly start_object: bigint
189
+ readonly end_group: bigint
190
+ readonly end_object: bigint
191
+ }
192
+
193
+ export interface JoiningFetch {
194
+ readonly joining_request_id: bigint
195
+ readonly joining_start: bigint
196
+ }
197
+
198
+ export interface Draft17Fetch extends Draft17BaseMessage {
199
+ readonly type: 'fetch'
200
+ readonly request_id: bigint
201
+ readonly required_request_id_delta: bigint
202
+ readonly fetch_type: bigint
203
+ readonly standalone?: StandaloneFetch
204
+ readonly joining?: JoiningFetch
205
+ readonly parameters: Draft17Params
206
+ }
207
+
208
+ export interface Draft17FetchOk extends Draft17BaseMessage {
209
+ readonly type: 'fetch_ok'
210
+ readonly end_of_track: number // uint8
211
+ readonly end_group: bigint
212
+ readonly end_object: bigint
213
+ readonly parameters: Draft17Params
214
+ readonly track_properties: Draft17TrackProperties
215
+ }
216
+
217
+ // Track Status — same format as subscribe in draft-17
218
+ export interface Draft17TrackStatus extends Draft17BaseMessage {
219
+ readonly type: 'track_status'
220
+ readonly request_id: bigint
221
+ readonly required_request_id_delta: bigint
222
+ readonly track_namespace: string[]
223
+ readonly track_name: string
224
+ readonly parameters: Draft17Params
225
+ }
226
+
227
+ // Consolidated response messages — no request_id in draft-17
228
+ export interface Draft17RequestOk extends Draft17BaseMessage {
229
+ readonly type: 'request_ok'
230
+ readonly parameters: Draft17Params
231
+ }
232
+
233
+ export interface Draft17RequestError extends Draft17BaseMessage {
234
+ readonly type: 'request_error'
235
+ readonly error_code: bigint
236
+ readonly retry_interval: bigint
237
+ readonly reason_phrase: string
238
+ }
239
+
240
+ // Session Control
241
+ export interface Draft17GoAway extends Draft17BaseMessage {
242
+ readonly type: 'goaway'
243
+ readonly new_session_uri: string
244
+ readonly timeout: bigint
245
+ }
246
+
247
+ // Union of all draft-17 control messages
248
+ export type Draft17Message =
249
+ | Draft17Setup
250
+ | Draft17Subscribe
251
+ | Draft17SubscribeOk
252
+ | Draft17RequestUpdate
253
+ | Draft17Publish
254
+ | Draft17PublishOk
255
+ | Draft17PublishDone
256
+ | Draft17PublishNamespace
257
+ | Draft17Namespace
258
+ | Draft17NamespaceDone
259
+ | Draft17SubscribeNamespace
260
+ | Draft17PublishBlocked
261
+ | Draft17Fetch
262
+ | Draft17FetchOk
263
+ | Draft17TrackStatus
264
+ | Draft17RequestOk
265
+ | Draft17RequestError
266
+ | Draft17GoAway
267
+
268
+ // Data stream types (same as draft-16)
269
+ export interface ObjectPayload {
270
+ readonly type: 'object'
271
+ readonly byteOffset: number
272
+ readonly payloadByteOffset: number
273
+ readonly objectId: bigint
274
+ readonly payloadLength: number
275
+ readonly status?: bigint
276
+ readonly extensionData: Uint8Array
277
+ readonly objectProperties?: Record<string, bigint>
278
+ readonly payload: Uint8Array
279
+ }
280
+
281
+ export interface SubgroupStream {
282
+ readonly type: 'subgroup'
283
+ readonly headerType: number
284
+ readonly trackAlias: bigint
285
+ readonly groupId: bigint
286
+ readonly subgroupId: bigint
287
+ readonly publisherPriority: number
288
+ readonly endOfGroup?: boolean
289
+ readonly objects: ObjectPayload[]
290
+ }
291
+
292
+ export interface DatagramObject {
293
+ readonly type: 'datagram'
294
+ readonly datagramType: number
295
+ readonly trackAlias: bigint
296
+ readonly groupId: bigint
297
+ readonly objectId: bigint
298
+ readonly publisherPriority: number
299
+ readonly endOfGroup?: boolean
300
+ readonly objectStatus?: bigint
301
+ readonly objectProperties?: Record<string, bigint>
302
+ readonly payloadLength: number
303
+ readonly payload: Uint8Array
304
+ }
305
+
306
+ export interface FetchObjectPayload extends ObjectPayload {
307
+ readonly serializationFlags: number
308
+ readonly groupId: bigint
309
+ readonly subgroupId: bigint
310
+ readonly publisherPriority: number
311
+ readonly objectProperties?: Record<string, bigint>
312
+ }
313
+
314
+ export interface FetchStream {
315
+ readonly type: 'fetch'
316
+ readonly requestId: bigint
317
+ readonly objects: FetchObjectPayload[]
318
+ }
319
+
320
+ export type Draft17DataStream = SubgroupStream | DatagramObject | FetchStream
321
+
322
+ // Streaming data stream decoder types
323
+ export interface SubgroupStreamHeader {
324
+ readonly type: 'subgroup_header'
325
+ readonly trackAlias: bigint
326
+ readonly groupId: bigint
327
+ readonly subgroupId: bigint
328
+ readonly publisherPriority: number
329
+ }
330
+
331
+ export interface FetchStreamHeader {
332
+ readonly type: 'fetch_header'
333
+ readonly requestId: bigint
334
+ }
335
+
336
+ export type DataStreamHeader = SubgroupStreamHeader | FetchStreamHeader
337
+ export type DataStreamEvent = DataStreamHeader | ObjectPayload