@moqtap/codec 0.1.0 → 0.2.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 (277) hide show
  1. package/README.md +99 -95
  2. package/dist/chunk-4RIXXEII.js +1275 -0
  3. package/dist/chunk-4XYGE53S.cjs +698 -0
  4. package/dist/chunk-4YJANAXU.cjs +1109 -0
  5. package/dist/chunk-6AEHWULA.cjs +641 -0
  6. package/dist/chunk-7DUBLRXC.js +680 -0
  7. package/dist/{chunk-WNTXF3DE.cjs → chunk-7IVGHMKJ.cjs} +164 -62
  8. package/dist/{chunk-YBSEOSSP.js → chunk-A27S7HW7.js} +5 -1
  9. package/dist/chunk-BISI45MN.cjs +680 -0
  10. package/dist/{chunk-3BSZ55L3.cjs → chunk-BPNL5YFQ.cjs} +158 -24
  11. package/dist/chunk-CXDHOMHG.js +1097 -0
  12. package/dist/chunk-DUBCL3WF.cjs +749 -0
  13. package/dist/chunk-DWK5ZQZ4.js +642 -0
  14. package/dist/chunk-E6E3NQYU.js +680 -0
  15. package/dist/chunk-EFM5T7OM.js +698 -0
  16. package/dist/chunk-ENURAVHI.cjs +680 -0
  17. package/dist/{chunk-5WFXFLL4.cjs → chunk-FUFTMAQD.cjs} +96 -63
  18. package/dist/{chunk-2NARXGVA.cjs → chunk-FWISIR26.cjs} +5 -1
  19. package/dist/{chunk-YPXLV5YK.js → chunk-FXZ2MYKJ.js} +376 -38
  20. package/dist/chunk-G26SJ6XS.cjs +1341 -0
  21. package/dist/chunk-G7GI7LJA.js +737 -0
  22. package/dist/chunk-GXEW4COZ.cjs +737 -0
  23. package/dist/chunk-HSVYF6XX.cjs +1361 -0
  24. package/dist/chunk-IBVM4DMJ.cjs +1097 -0
  25. package/dist/chunk-IV2H5CFI.cjs +1275 -0
  26. package/dist/chunk-IV2HRJVT.js +1198 -0
  27. package/dist/chunk-JSQM2MG3.js +680 -0
  28. package/dist/chunk-K4OLITS2.cjs +1055 -0
  29. package/dist/{chunk-UOBWHJA5.js → chunk-KFTCU2P6.js} +2 -3
  30. package/dist/chunk-LH4NTURO.js +1361 -0
  31. package/dist/{chunk-DC4L6ZIT.js → chunk-MFAP7R6L.js} +154 -20
  32. package/dist/chunk-NGVE2RZT.js +1097 -0
  33. package/dist/chunk-NUX5BHWO.js +1341 -0
  34. package/dist/chunk-PJRA2TQ5.js +1055 -0
  35. package/dist/chunk-RVJAGE4S.cjs +1198 -0
  36. package/dist/{chunk-QYG6KGOV.cjs → chunk-RWQ43Z4F.cjs} +2 -3
  37. package/dist/chunk-RZHAPEXO.js +749 -0
  38. package/dist/chunk-ST24APEO.js +1109 -0
  39. package/dist/chunk-SYHW3FLI.cjs +642 -0
  40. package/dist/chunk-TLYNOOQP.cjs +432 -0
  41. package/dist/{chunk-23YG7F46.js → chunk-TMNGRIPL.js} +153 -51
  42. package/dist/{chunk-IQPDRQVC.js → chunk-U2B3B42P.js} +62 -29
  43. package/dist/chunk-UNS34PTA.cjs +680 -0
  44. package/dist/chunk-UR6JKS56.js +432 -0
  45. package/dist/{chunk-GDRGWFEK.cjs → chunk-UYXTY6ZQ.cjs} +376 -38
  46. package/dist/chunk-XUUCOLWU.cjs +1097 -0
  47. package/dist/chunk-YG5KJESI.js +641 -0
  48. package/dist/chunk-ZBKE2QRQ.js +1401 -0
  49. package/dist/chunk-ZSPO2GF2.cjs +1401 -0
  50. package/dist/codec-95k8CAu5.d.cts +35 -0
  51. package/dist/codec-AFuOxfsO.d.ts +60 -0
  52. package/dist/codec-B-UJ5Iow.d.cts +75 -0
  53. package/dist/codec-BC5jfvMb.d.ts +35 -0
  54. package/dist/codec-BECYPfY8.d.ts +35 -0
  55. package/dist/codec-BsPU1vNC.d.ts +39 -0
  56. package/dist/codec-BvpuF-6u.d.cts +39 -0
  57. package/dist/codec-C8jZI5Cx.d.cts +39 -0
  58. package/dist/codec-CAevkgf5.d.cts +33 -0
  59. package/dist/codec-CSUqCrRs.d.ts +39 -0
  60. package/dist/codec-C_HMXNK_.d.ts +33 -0
  61. package/dist/{codec-CTvFtQQI.d.cts → codec-CpuvYTSV.d.cts} +5 -5
  62. package/dist/codec-D0x8-SCw.d.cts +35 -0
  63. package/dist/codec-D7ARhpG1.d.ts +75 -0
  64. package/dist/codec-DNAUGshO.d.cts +60 -0
  65. package/dist/codec-DPx_QNn0.d.ts +31 -0
  66. package/dist/{codec-qPzfmLNu.d.ts → codec-DRhCx_hw.d.ts} +5 -5
  67. package/dist/codec-Db7YPe3l.d.ts +31 -0
  68. package/dist/codec-axkJpb7D.d.cts +31 -0
  69. package/dist/codec-ujAbFaep.d.cts +31 -0
  70. package/dist/draft10-session.cjs +6 -0
  71. package/dist/draft10-session.d.cts +8 -0
  72. package/dist/draft10-session.d.ts +8 -0
  73. package/dist/draft10-session.js +6 -0
  74. package/dist/draft10.cjs +115 -0
  75. package/dist/draft10.d.cts +95 -0
  76. package/dist/draft10.d.ts +95 -0
  77. package/dist/draft10.js +115 -0
  78. package/dist/draft11-session.cjs +6 -0
  79. package/dist/draft11-session.d.cts +8 -0
  80. package/dist/draft11-session.d.ts +8 -0
  81. package/dist/draft11-session.js +6 -0
  82. package/dist/draft11.cjs +109 -0
  83. package/dist/draft11.d.cts +99 -0
  84. package/dist/draft11.d.ts +99 -0
  85. package/dist/draft11.js +109 -0
  86. package/dist/draft12-session.cjs +6 -0
  87. package/dist/draft12-session.d.cts +8 -0
  88. package/dist/draft12-session.d.ts +8 -0
  89. package/dist/draft12-session.js +6 -0
  90. package/dist/draft12.cjs +117 -0
  91. package/dist/draft12.d.cts +106 -0
  92. package/dist/draft12.d.ts +106 -0
  93. package/dist/draft12.js +117 -0
  94. package/dist/draft13-session.cjs +6 -0
  95. package/dist/draft13-session.d.cts +8 -0
  96. package/dist/draft13-session.d.ts +8 -0
  97. package/dist/draft13-session.js +6 -0
  98. package/dist/draft13.cjs +119 -0
  99. package/dist/draft13.d.cts +108 -0
  100. package/dist/draft13.d.ts +108 -0
  101. package/dist/draft13.js +119 -0
  102. package/dist/draft14-session.cjs +2 -2
  103. package/dist/draft14-session.d.cts +4 -4
  104. package/dist/draft14-session.d.ts +4 -4
  105. package/dist/draft14-session.js +1 -1
  106. package/dist/draft14.cjs +4 -4
  107. package/dist/draft14.d.cts +27 -15
  108. package/dist/draft14.d.ts +27 -15
  109. package/dist/draft14.js +3 -3
  110. package/dist/draft15-session.cjs +6 -0
  111. package/dist/draft15-session.d.cts +8 -0
  112. package/dist/draft15-session.d.ts +8 -0
  113. package/dist/draft15-session.js +6 -0
  114. package/dist/draft15.cjs +111 -0
  115. package/dist/draft15.d.cts +93 -0
  116. package/dist/draft15.d.ts +93 -0
  117. package/dist/draft15.js +111 -0
  118. package/dist/draft16-session.cjs +6 -0
  119. package/dist/draft16-session.d.cts +8 -0
  120. package/dist/draft16-session.d.ts +8 -0
  121. package/dist/draft16-session.js +6 -0
  122. package/dist/draft16.cjs +113 -0
  123. package/dist/draft16.d.cts +94 -0
  124. package/dist/draft16.d.ts +94 -0
  125. package/dist/draft16.js +113 -0
  126. package/dist/draft17-session.cjs +8 -0
  127. package/dist/draft17-session.d.cts +51 -0
  128. package/dist/draft17-session.d.ts +51 -0
  129. package/dist/draft17-session.js +8 -0
  130. package/dist/draft17.cjs +99 -0
  131. package/dist/draft17.d.cts +40 -0
  132. package/dist/draft17.d.ts +40 -0
  133. package/dist/draft17.js +99 -0
  134. package/dist/draft7-session.cjs +3 -3
  135. package/dist/draft7-session.d.cts +3 -3
  136. package/dist/draft7-session.d.ts +3 -3
  137. package/dist/draft7-session.js +2 -2
  138. package/dist/draft7.cjs +6 -6
  139. package/dist/draft7.d.cts +10 -10
  140. package/dist/draft7.d.ts +10 -10
  141. package/dist/draft7.js +3 -3
  142. package/dist/draft8-session.cjs +6 -0
  143. package/dist/draft8-session.d.cts +8 -0
  144. package/dist/draft8-session.d.ts +8 -0
  145. package/dist/draft8-session.js +6 -0
  146. package/dist/draft8.cjs +115 -0
  147. package/dist/draft8.d.cts +95 -0
  148. package/dist/draft8.d.ts +95 -0
  149. package/dist/draft8.js +115 -0
  150. package/dist/draft9-session.cjs +6 -0
  151. package/dist/draft9-session.d.cts +8 -0
  152. package/dist/draft9-session.d.ts +8 -0
  153. package/dist/draft9-session.js +6 -0
  154. package/dist/draft9.cjs +115 -0
  155. package/dist/draft9.d.cts +95 -0
  156. package/dist/draft9.d.ts +95 -0
  157. package/dist/draft9.js +115 -0
  158. package/dist/index.cjs +79 -7
  159. package/dist/index.d.cts +71 -8
  160. package/dist/index.d.ts +71 -8
  161. package/dist/index.js +77 -5
  162. package/dist/{session-types-B9NIf7_F.d.ts → session-types-CJIFbTPd.d.ts} +20 -20
  163. package/dist/{session-types-CCo-oA-d.d.cts → session-types-Cbq8IGCP.d.cts} +20 -20
  164. package/dist/session.cjs +5 -5
  165. package/dist/session.d.cts +3 -3
  166. package/dist/session.d.ts +3 -3
  167. package/dist/session.js +5 -5
  168. package/dist/types-4VxSL2Ho.d.cts +261 -0
  169. package/dist/types-4VxSL2Ho.d.ts +261 -0
  170. package/dist/types-B2afJZM-.d.cts +236 -0
  171. package/dist/types-B2afJZM-.d.ts +236 -0
  172. package/dist/{types-CIk5W10V.d.ts → types-BTFeKYCb.d.cts} +37 -37
  173. package/dist/{types-CIk5W10V.d.cts → types-BTFeKYCb.d.ts} +37 -37
  174. package/dist/types-Bg6QYNVt.d.cts +290 -0
  175. package/dist/types-Bg6QYNVt.d.ts +290 -0
  176. package/dist/types-C_1HrqBl.d.cts +306 -0
  177. package/dist/types-C_1HrqBl.d.ts +306 -0
  178. package/dist/types-Cw4WE9dh.d.cts +261 -0
  179. package/dist/types-Cw4WE9dh.d.ts +261 -0
  180. package/dist/types-D5gNQiDj.d.cts +261 -0
  181. package/dist/types-D5gNQiDj.d.ts +261 -0
  182. package/dist/types-DqCDFqgB.d.cts +230 -0
  183. package/dist/types-DqCDFqgB.d.ts +230 -0
  184. package/dist/types-ERexTpT8.d.cts +217 -0
  185. package/dist/types-ERexTpT8.d.ts +217 -0
  186. package/dist/{types-ClXELFGN.d.cts → types-QNXoxC9Y.d.cts} +36 -41
  187. package/dist/{types-ClXELFGN.d.ts → types-QNXoxC9Y.d.ts} +36 -41
  188. package/dist/types-r-CasCf1.d.cts +262 -0
  189. package/dist/types-r-CasCf1.d.ts +262 -0
  190. package/package.json +116 -8
  191. package/src/core/buffer-reader.ts +16 -9
  192. package/src/core/buffer-writer.ts +2 -2
  193. package/src/core/errors.ts +1 -1
  194. package/src/core/session-types.ts +28 -41
  195. package/src/core/types.ts +92 -75
  196. package/src/drafts/draft07/announce-fsm.ts +1 -1
  197. package/src/drafts/draft07/codec.ts +235 -118
  198. package/src/drafts/draft07/index.ts +43 -44
  199. package/src/drafts/draft07/messages.ts +1 -1
  200. package/src/drafts/draft07/parameters.ts +2 -2
  201. package/src/drafts/draft07/rules.ts +67 -38
  202. package/src/drafts/draft07/session-fsm.ts +330 -117
  203. package/src/drafts/draft07/session.ts +10 -10
  204. package/src/drafts/draft07/subscription-fsm.ts +1 -1
  205. package/src/drafts/draft07/varint.ts +4 -4
  206. package/src/drafts/draft08/codec.ts +1254 -0
  207. package/src/drafts/draft08/index.ts +125 -0
  208. package/src/drafts/draft08/messages.ts +72 -0
  209. package/src/drafts/draft08/rules.ts +91 -0
  210. package/src/drafts/draft08/session-fsm.ts +718 -0
  211. package/src/drafts/draft08/session.ts +26 -0
  212. package/src/drafts/draft08/types.ts +377 -0
  213. package/src/drafts/draft09/codec.ts +1235 -0
  214. package/src/drafts/draft09/index.ts +125 -0
  215. package/src/drafts/draft09/messages.ts +72 -0
  216. package/src/drafts/draft09/rules.ts +91 -0
  217. package/src/drafts/draft09/session-fsm.ts +718 -0
  218. package/src/drafts/draft09/session.ts +26 -0
  219. package/src/drafts/draft09/types.ts +376 -0
  220. package/src/drafts/draft10/codec.ts +1235 -0
  221. package/src/drafts/draft10/index.ts +125 -0
  222. package/src/drafts/draft10/messages.ts +72 -0
  223. package/src/drafts/draft10/rules.ts +91 -0
  224. package/src/drafts/draft10/session-fsm.ts +718 -0
  225. package/src/drafts/draft10/session.ts +26 -0
  226. package/src/drafts/draft10/types.ts +376 -0
  227. package/src/drafts/draft11/codec.ts +1198 -0
  228. package/src/drafts/draft11/index.ts +123 -0
  229. package/src/drafts/draft11/messages.ts +71 -0
  230. package/src/drafts/draft11/rules.ts +100 -0
  231. package/src/drafts/draft11/session-fsm.ts +758 -0
  232. package/src/drafts/draft11/session.ts +26 -0
  233. package/src/drafts/draft11/types.ts +375 -0
  234. package/src/drafts/draft12/codec.ts +1354 -0
  235. package/src/drafts/draft12/index.ts +130 -0
  236. package/src/drafts/draft12/messages.ts +84 -0
  237. package/src/drafts/draft12/rules.ts +106 -0
  238. package/src/drafts/draft12/session-fsm.ts +805 -0
  239. package/src/drafts/draft12/session.ts +26 -0
  240. package/src/drafts/draft12/types.ts +414 -0
  241. package/src/drafts/draft13/codec.ts +1438 -0
  242. package/src/drafts/draft13/index.ts +132 -0
  243. package/src/drafts/draft13/messages.ts +86 -0
  244. package/src/drafts/draft13/rules.ts +108 -0
  245. package/src/drafts/draft13/session-fsm.ts +819 -0
  246. package/src/drafts/draft13/session.ts +26 -0
  247. package/src/drafts/draft13/types.ts +433 -0
  248. package/src/drafts/draft14/codec.ts +339 -189
  249. package/src/drafts/draft14/index.ts +103 -108
  250. package/src/drafts/draft14/messages.ts +61 -61
  251. package/src/drafts/draft14/rules.ts +77 -34
  252. package/src/drafts/draft14/session-fsm.ts +640 -147
  253. package/src/drafts/draft14/session.ts +13 -13
  254. package/src/drafts/draft14/types.ts +68 -68
  255. package/src/drafts/draft15/codec.ts +1661 -0
  256. package/src/drafts/draft15/index.ts +121 -0
  257. package/src/drafts/draft15/messages.ts +64 -0
  258. package/src/drafts/draft15/rules.ts +95 -0
  259. package/src/drafts/draft15/session-fsm.ts +687 -0
  260. package/src/drafts/draft15/session.ts +26 -0
  261. package/src/drafts/draft15/types.ts +336 -0
  262. package/src/drafts/draft16/codec.ts +1623 -0
  263. package/src/drafts/draft16/index.ts +123 -0
  264. package/src/drafts/draft16/messages.ts +67 -0
  265. package/src/drafts/draft16/rules.ts +96 -0
  266. package/src/drafts/draft16/session-fsm.ts +682 -0
  267. package/src/drafts/draft16/session.ts +26 -0
  268. package/src/drafts/draft16/types.ts +354 -0
  269. package/src/drafts/draft17/codec.ts +1621 -0
  270. package/src/drafts/draft17/index.ts +105 -0
  271. package/src/drafts/draft17/messages.ts +53 -0
  272. package/src/drafts/draft17/rules.ts +85 -0
  273. package/src/drafts/draft17/session-fsm.ts +437 -0
  274. package/src/drafts/draft17/session.ts +15 -0
  275. package/src/drafts/draft17/types.ts +310 -0
  276. package/src/index.ts +283 -33
  277. package/src/session.ts +20 -20
@@ -0,0 +1,26 @@
1
+ import type { SessionState, SessionStateOptions } from "../../core/session-types.js";
2
+ import { Draft08SessionFSM } from "./session-fsm.js";
3
+ import type { Draft08Message, Draft08MessageType } from "./types.js";
4
+
5
+ export function createDraft08SessionState(
6
+ options: SessionStateOptions,
7
+ ): SessionState<Draft08Message, Draft08MessageType> {
8
+ return new Draft08SessionFSM(options.role);
9
+ }
10
+
11
+ export type {
12
+ AnnouncePhase,
13
+ AnnounceState,
14
+ FetchPhase,
15
+ FetchState,
16
+ ProtocolViolation,
17
+ ProtocolViolationCode,
18
+ SessionPhase,
19
+ SessionState,
20
+ SessionStateOptions,
21
+ SideEffect,
22
+ SubscriptionPhase,
23
+ SubscriptionState,
24
+ TransitionResult,
25
+ ValidationResult,
26
+ } from "../../core/session-types.js";
@@ -0,0 +1,377 @@
1
+ // Draft-08 specific message types
2
+ // Field names use snake_case to match test vector JSON
3
+
4
+ // Unknown parameter for passthrough
5
+ export interface UnknownParam {
6
+ readonly id: string; // e.g. "0x21"
7
+ readonly length: number;
8
+ readonly raw_hex: string;
9
+ }
10
+
11
+ // Setup parameters (PATH, MAX_SUBSCRIBE_ID)
12
+ export interface Draft08SetupParams {
13
+ path?: string; // 0x01
14
+ max_subscribe_id?: bigint; // 0x02
15
+ unknown?: UnknownParam[];
16
+ }
17
+
18
+ // Version-specific parameters
19
+ export interface Draft08Params {
20
+ authorization_info?: string; // 0x02
21
+ delivery_timeout?: bigint; // 0x03
22
+ max_cache_duration?: bigint; // 0x04
23
+ unknown?: UnknownParam[];
24
+ }
25
+
26
+ // Draft-08 message type tag union
27
+ export type Draft08MessageType =
28
+ | "client_setup"
29
+ | "server_setup"
30
+ | "subscribe"
31
+ | "subscribe_ok"
32
+ | "subscribe_error"
33
+ | "subscribe_update"
34
+ | "subscribe_done"
35
+ | "unsubscribe"
36
+ | "announce"
37
+ | "announce_ok"
38
+ | "announce_error"
39
+ | "unannounce"
40
+ | "announce_cancel"
41
+ | "subscribe_announces"
42
+ | "subscribe_announces_ok"
43
+ | "subscribe_announces_error"
44
+ | "unsubscribe_announces"
45
+ | "fetch"
46
+ | "fetch_ok"
47
+ | "fetch_error"
48
+ | "fetch_cancel"
49
+ | "track_status_request"
50
+ | "track_status"
51
+ | "goaway"
52
+ | "max_subscribe_id"
53
+ | "subscribes_blocked";
54
+
55
+ // Base
56
+ export interface Draft08BaseMessage {
57
+ readonly type: Draft08MessageType;
58
+ }
59
+
60
+ // Setup
61
+ export interface Draft08ClientSetup extends Draft08BaseMessage {
62
+ readonly type: "client_setup";
63
+ readonly supported_versions: bigint[];
64
+ readonly parameters: Draft08SetupParams;
65
+ }
66
+
67
+ export interface Draft08ServerSetup extends Draft08BaseMessage {
68
+ readonly type: "server_setup";
69
+ readonly selected_version: bigint;
70
+ readonly parameters: Draft08SetupParams;
71
+ }
72
+
73
+ // Subscribe
74
+ export interface Draft08Subscribe extends Draft08BaseMessage {
75
+ readonly type: "subscribe";
76
+ readonly subscribe_id: bigint;
77
+ readonly track_alias: bigint;
78
+ readonly track_namespace: string[];
79
+ readonly track_name: string;
80
+ readonly subscriber_priority: number; // uint8
81
+ readonly group_order: number; // uint8
82
+ readonly filter_type: bigint;
83
+ readonly start_group?: bigint;
84
+ readonly start_object?: bigint;
85
+ readonly end_group?: bigint;
86
+ readonly parameters: Draft08Params;
87
+ }
88
+
89
+ export interface Draft08SubscribeOk extends Draft08BaseMessage {
90
+ readonly type: "subscribe_ok";
91
+ readonly subscribe_id: bigint;
92
+ readonly expires: bigint;
93
+ readonly group_order: number; // uint8
94
+ readonly content_exists: number; // uint8
95
+ readonly largest_group_id?: bigint;
96
+ readonly largest_object_id?: bigint;
97
+ readonly parameters: Draft08Params;
98
+ }
99
+
100
+ export interface Draft08SubscribeError extends Draft08BaseMessage {
101
+ readonly type: "subscribe_error";
102
+ readonly subscribe_id: bigint;
103
+ readonly error_code: bigint;
104
+ readonly reason_phrase: string;
105
+ readonly track_alias: bigint;
106
+ }
107
+
108
+ export interface Draft08SubscribeDone extends Draft08BaseMessage {
109
+ readonly type: "subscribe_done";
110
+ readonly subscribe_id: bigint;
111
+ readonly status_code: bigint;
112
+ readonly stream_count: bigint;
113
+ readonly reason_phrase: string;
114
+ }
115
+
116
+ export interface Draft08SubscribeUpdate extends Draft08BaseMessage {
117
+ readonly type: "subscribe_update";
118
+ readonly subscribe_id: bigint;
119
+ readonly start_group: bigint;
120
+ readonly start_object: bigint;
121
+ readonly end_group: bigint;
122
+ readonly subscriber_priority: number; // uint8
123
+ readonly parameters: Draft08Params;
124
+ }
125
+
126
+ export interface Draft08Unsubscribe extends Draft08BaseMessage {
127
+ readonly type: "unsubscribe";
128
+ readonly subscribe_id: bigint;
129
+ }
130
+
131
+ // Announce
132
+ export interface Draft08Announce extends Draft08BaseMessage {
133
+ readonly type: "announce";
134
+ readonly track_namespace: string[];
135
+ readonly parameters: Draft08Params;
136
+ }
137
+
138
+ export interface Draft08AnnounceOk extends Draft08BaseMessage {
139
+ readonly type: "announce_ok";
140
+ readonly track_namespace: string[];
141
+ }
142
+
143
+ export interface Draft08AnnounceError extends Draft08BaseMessage {
144
+ readonly type: "announce_error";
145
+ readonly track_namespace: string[];
146
+ readonly error_code: bigint;
147
+ readonly reason_phrase: string;
148
+ }
149
+
150
+ export interface Draft08Unannounce extends Draft08BaseMessage {
151
+ readonly type: "unannounce";
152
+ readonly track_namespace: string[];
153
+ }
154
+
155
+ export interface Draft08AnnounceCancel extends Draft08BaseMessage {
156
+ readonly type: "announce_cancel";
157
+ readonly track_namespace: string[];
158
+ readonly error_code: bigint;
159
+ readonly reason_phrase: string;
160
+ }
161
+
162
+ // Subscribe Announces
163
+ export interface Draft08SubscribeAnnounces extends Draft08BaseMessage {
164
+ readonly type: "subscribe_announces";
165
+ readonly track_namespace_prefix: string[];
166
+ readonly parameters: Draft08Params;
167
+ }
168
+
169
+ export interface Draft08SubscribeAnnouncesOk extends Draft08BaseMessage {
170
+ readonly type: "subscribe_announces_ok";
171
+ readonly track_namespace_prefix: string[];
172
+ }
173
+
174
+ export interface Draft08SubscribeAnnouncesError extends Draft08BaseMessage {
175
+ readonly type: "subscribe_announces_error";
176
+ readonly track_namespace_prefix: string[];
177
+ readonly error_code: bigint;
178
+ readonly reason_phrase: string;
179
+ }
180
+
181
+ export interface Draft08UnsubscribeAnnounces extends Draft08BaseMessage {
182
+ readonly type: "unsubscribe_announces";
183
+ readonly track_namespace_prefix: string[];
184
+ }
185
+
186
+ // Fetch
187
+ export interface StandaloneFetch {
188
+ readonly track_namespace: string[];
189
+ readonly track_name: string;
190
+ readonly start_group: bigint;
191
+ readonly start_object: bigint;
192
+ readonly end_group: bigint;
193
+ readonly end_object: bigint;
194
+ }
195
+
196
+ export interface JoiningFetch {
197
+ readonly joining_subscribe_id: bigint;
198
+ readonly preceding_group_offset: bigint;
199
+ }
200
+
201
+ export interface Draft08Fetch extends Draft08BaseMessage {
202
+ readonly type: "fetch";
203
+ readonly subscribe_id: bigint;
204
+ readonly subscriber_priority: number; // uint8
205
+ readonly group_order: number; // uint8
206
+ readonly fetch_type: bigint;
207
+ readonly standalone?: StandaloneFetch;
208
+ readonly joining?: JoiningFetch;
209
+ readonly parameters: Draft08Params;
210
+ }
211
+
212
+ export interface Draft08FetchOk extends Draft08BaseMessage {
213
+ readonly type: "fetch_ok";
214
+ readonly subscribe_id: bigint;
215
+ readonly group_order: number; // uint8
216
+ readonly end_of_track: number; // uint8
217
+ readonly largest_group_id: bigint;
218
+ readonly largest_object_id: bigint;
219
+ readonly parameters: Draft08Params;
220
+ }
221
+
222
+ export interface Draft08FetchError extends Draft08BaseMessage {
223
+ readonly type: "fetch_error";
224
+ readonly subscribe_id: bigint;
225
+ readonly error_code: bigint;
226
+ readonly reason_phrase: string;
227
+ }
228
+
229
+ export interface Draft08FetchCancel extends Draft08BaseMessage {
230
+ readonly type: "fetch_cancel";
231
+ readonly subscribe_id: bigint;
232
+ }
233
+
234
+ // Track Status
235
+ export interface Draft08TrackStatusRequest extends Draft08BaseMessage {
236
+ readonly type: "track_status_request";
237
+ readonly track_namespace: string[];
238
+ readonly track_name: string;
239
+ }
240
+
241
+ export interface Draft08TrackStatus extends Draft08BaseMessage {
242
+ readonly type: "track_status";
243
+ readonly track_namespace: string[];
244
+ readonly track_name: string;
245
+ readonly status_code: bigint;
246
+ readonly last_group_id: bigint;
247
+ readonly last_object_id: bigint;
248
+ }
249
+
250
+ // Session Control
251
+ export interface Draft08GoAway extends Draft08BaseMessage {
252
+ readonly type: "goaway";
253
+ readonly new_session_uri: string;
254
+ }
255
+
256
+ export interface Draft08MaxSubscribeId extends Draft08BaseMessage {
257
+ readonly type: "max_subscribe_id";
258
+ readonly subscribe_id: bigint;
259
+ }
260
+
261
+ export interface Draft08SubscribesBlocked extends Draft08BaseMessage {
262
+ readonly type: "subscribes_blocked";
263
+ readonly maximum_subscribe_id: bigint;
264
+ }
265
+
266
+ // Union of all draft-08 control messages
267
+ export type Draft08Message =
268
+ | Draft08ClientSetup
269
+ | Draft08ServerSetup
270
+ | Draft08Subscribe
271
+ | Draft08SubscribeOk
272
+ | Draft08SubscribeError
273
+ | Draft08SubscribeUpdate
274
+ | Draft08SubscribeDone
275
+ | Draft08Unsubscribe
276
+ | Draft08Announce
277
+ | Draft08AnnounceOk
278
+ | Draft08AnnounceError
279
+ | Draft08Unannounce
280
+ | Draft08AnnounceCancel
281
+ | Draft08SubscribeAnnounces
282
+ | Draft08SubscribeAnnouncesOk
283
+ | Draft08SubscribeAnnouncesError
284
+ | Draft08UnsubscribeAnnounces
285
+ | Draft08Fetch
286
+ | Draft08FetchOk
287
+ | Draft08FetchError
288
+ | Draft08FetchCancel
289
+ | Draft08TrackStatusRequest
290
+ | Draft08TrackStatus
291
+ | Draft08GoAway
292
+ | Draft08MaxSubscribeId
293
+ | Draft08SubscribesBlocked;
294
+
295
+ // Data stream types
296
+ export interface ObjectPayload {
297
+ readonly type: "object";
298
+ readonly objectId: bigint;
299
+ readonly extensionCount: bigint;
300
+ readonly payloadLength: number;
301
+ readonly status?: bigint;
302
+ readonly payload: Uint8Array;
303
+ }
304
+
305
+ export interface SubgroupStream {
306
+ readonly type: "subgroup";
307
+ readonly streamTypeId: 0x04;
308
+ readonly trackAlias: bigint;
309
+ readonly groupId: bigint;
310
+ readonly subgroupId: bigint;
311
+ readonly publisherPriority: number;
312
+ readonly objects: ObjectPayload[];
313
+ }
314
+
315
+ export interface DatagramObject {
316
+ readonly type: "datagram";
317
+ readonly streamTypeId: 0x01;
318
+ readonly trackAlias: bigint;
319
+ readonly groupId: bigint;
320
+ readonly objectId: bigint;
321
+ readonly publisherPriority: number;
322
+ readonly extensionCount: bigint;
323
+ readonly objectStatus: bigint;
324
+ readonly payloadLength: number;
325
+ readonly payload: Uint8Array;
326
+ }
327
+
328
+ export interface DatagramStatusObject {
329
+ readonly type: "datagram_status";
330
+ readonly streamTypeId: 0x02;
331
+ readonly trackAlias: bigint;
332
+ readonly groupId: bigint;
333
+ readonly objectId: bigint;
334
+ readonly publisherPriority: number;
335
+ readonly objectStatus: bigint;
336
+ }
337
+
338
+ export interface FetchObjectPayload {
339
+ readonly type: "object";
340
+ readonly groupId: bigint;
341
+ readonly subgroupId: bigint;
342
+ readonly objectId: bigint;
343
+ readonly publisherPriority: number;
344
+ readonly extensionCount: bigint;
345
+ readonly payloadLength: number;
346
+ readonly status?: bigint;
347
+ readonly payload: Uint8Array;
348
+ }
349
+
350
+ export interface FetchStream {
351
+ readonly type: "fetch";
352
+ readonly subscribeId: bigint;
353
+ readonly objects: FetchObjectPayload[];
354
+ }
355
+
356
+ export type Draft08DataStream =
357
+ | SubgroupStream
358
+ | DatagramObject
359
+ | DatagramStatusObject
360
+ | FetchStream;
361
+
362
+ // Streaming data stream decoder types
363
+ export interface SubgroupStreamHeader {
364
+ readonly type: "subgroup_header";
365
+ readonly trackAlias: bigint;
366
+ readonly groupId: bigint;
367
+ readonly subgroupId: bigint;
368
+ readonly publisherPriority: number;
369
+ }
370
+
371
+ export interface FetchStreamHeader {
372
+ readonly type: "fetch_header";
373
+ readonly subscribeId: bigint;
374
+ }
375
+
376
+ export type DataStreamHeader = SubgroupStreamHeader | FetchStreamHeader;
377
+ export type DataStreamEvent = DataStreamHeader | ObjectPayload;