@moqtap/codec 0.1.1 → 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 (252) 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-YBZD3DU5.cjs → chunk-7IVGHMKJ.cjs} +44 -42
  8. package/dist/chunk-BISI45MN.cjs +680 -0
  9. package/dist/{chunk-NLYTRGXA.cjs → chunk-BPNL5YFQ.cjs} +5 -5
  10. package/dist/chunk-CXDHOMHG.js +1097 -0
  11. package/dist/chunk-DUBCL3WF.cjs +749 -0
  12. package/dist/chunk-DWK5ZQZ4.js +642 -0
  13. package/dist/chunk-E6E3NQYU.js +680 -0
  14. package/dist/chunk-EFM5T7OM.js +698 -0
  15. package/dist/chunk-ENURAVHI.cjs +680 -0
  16. package/dist/{chunk-Z66WDWHI.js → chunk-FXZ2MYKJ.js} +127 -1
  17. package/dist/chunk-G26SJ6XS.cjs +1341 -0
  18. package/dist/chunk-G7GI7LJA.js +737 -0
  19. package/dist/chunk-GXEW4COZ.cjs +737 -0
  20. package/dist/chunk-HSVYF6XX.cjs +1361 -0
  21. package/dist/chunk-IBVM4DMJ.cjs +1097 -0
  22. package/dist/chunk-IV2H5CFI.cjs +1275 -0
  23. package/dist/chunk-IV2HRJVT.js +1198 -0
  24. package/dist/chunk-JSQM2MG3.js +680 -0
  25. package/dist/chunk-K4OLITS2.cjs +1055 -0
  26. package/dist/{chunk-UOBWHJA5.js → chunk-KFTCU2P6.js} +2 -3
  27. package/dist/chunk-LH4NTURO.js +1361 -0
  28. package/dist/{chunk-YTXLWKOR.js → chunk-MFAP7R6L.js} +1 -1
  29. package/dist/chunk-NGVE2RZT.js +1097 -0
  30. package/dist/chunk-NUX5BHWO.js +1341 -0
  31. package/dist/chunk-PJRA2TQ5.js +1055 -0
  32. package/dist/chunk-RVJAGE4S.cjs +1198 -0
  33. package/dist/{chunk-QYG6KGOV.cjs → chunk-RWQ43Z4F.cjs} +2 -3
  34. package/dist/chunk-RZHAPEXO.js +749 -0
  35. package/dist/chunk-ST24APEO.js +1109 -0
  36. package/dist/chunk-SYHW3FLI.cjs +642 -0
  37. package/dist/chunk-TLYNOOQP.cjs +432 -0
  38. package/dist/{chunk-IXHOBNXA.js → chunk-TMNGRIPL.js} +43 -41
  39. package/dist/chunk-UNS34PTA.cjs +680 -0
  40. package/dist/chunk-UR6JKS56.js +432 -0
  41. package/dist/{chunk-NPWHHWXT.cjs → chunk-UYXTY6ZQ.cjs} +127 -1
  42. package/dist/chunk-XUUCOLWU.cjs +1097 -0
  43. package/dist/chunk-YG5KJESI.js +641 -0
  44. package/dist/chunk-ZBKE2QRQ.js +1401 -0
  45. package/dist/chunk-ZSPO2GF2.cjs +1401 -0
  46. package/dist/codec-95k8CAu5.d.cts +35 -0
  47. package/dist/codec-AFuOxfsO.d.ts +60 -0
  48. package/dist/codec-B-UJ5Iow.d.cts +75 -0
  49. package/dist/codec-BC5jfvMb.d.ts +35 -0
  50. package/dist/codec-BECYPfY8.d.ts +35 -0
  51. package/dist/codec-BsPU1vNC.d.ts +39 -0
  52. package/dist/codec-BvpuF-6u.d.cts +39 -0
  53. package/dist/codec-C8jZI5Cx.d.cts +39 -0
  54. package/dist/codec-CAevkgf5.d.cts +33 -0
  55. package/dist/codec-CSUqCrRs.d.ts +39 -0
  56. package/dist/codec-C_HMXNK_.d.ts +33 -0
  57. package/dist/{codec-Bvr7rFtj.d.cts → codec-CpuvYTSV.d.cts} +1 -1
  58. package/dist/codec-D0x8-SCw.d.cts +35 -0
  59. package/dist/codec-D7ARhpG1.d.ts +75 -0
  60. package/dist/codec-DNAUGshO.d.cts +60 -0
  61. package/dist/codec-DPx_QNn0.d.ts +31 -0
  62. package/dist/{codec-B2mc2g3i.d.ts → codec-DRhCx_hw.d.ts} +1 -1
  63. package/dist/codec-Db7YPe3l.d.ts +31 -0
  64. package/dist/codec-axkJpb7D.d.cts +31 -0
  65. package/dist/codec-ujAbFaep.d.cts +31 -0
  66. package/dist/draft10-session.cjs +6 -0
  67. package/dist/draft10-session.d.cts +8 -0
  68. package/dist/draft10-session.d.ts +8 -0
  69. package/dist/draft10-session.js +6 -0
  70. package/dist/draft10.cjs +115 -0
  71. package/dist/draft10.d.cts +95 -0
  72. package/dist/draft10.d.ts +95 -0
  73. package/dist/draft10.js +115 -0
  74. package/dist/draft11-session.cjs +6 -0
  75. package/dist/draft11-session.d.cts +8 -0
  76. package/dist/draft11-session.d.ts +8 -0
  77. package/dist/draft11-session.js +6 -0
  78. package/dist/draft11.cjs +109 -0
  79. package/dist/draft11.d.cts +99 -0
  80. package/dist/draft11.d.ts +99 -0
  81. package/dist/draft11.js +109 -0
  82. package/dist/draft12-session.cjs +6 -0
  83. package/dist/draft12-session.d.cts +8 -0
  84. package/dist/draft12-session.d.ts +8 -0
  85. package/dist/draft12-session.js +6 -0
  86. package/dist/draft12.cjs +117 -0
  87. package/dist/draft12.d.cts +106 -0
  88. package/dist/draft12.d.ts +106 -0
  89. package/dist/draft12.js +117 -0
  90. package/dist/draft13-session.cjs +6 -0
  91. package/dist/draft13-session.d.cts +8 -0
  92. package/dist/draft13-session.d.ts +8 -0
  93. package/dist/draft13-session.js +6 -0
  94. package/dist/draft13.cjs +119 -0
  95. package/dist/draft13.d.cts +108 -0
  96. package/dist/draft13.d.ts +108 -0
  97. package/dist/draft13.js +119 -0
  98. package/dist/draft14-session.cjs +2 -2
  99. package/dist/draft14-session.d.cts +3 -3
  100. package/dist/draft14-session.d.ts +3 -3
  101. package/dist/draft14-session.js +1 -1
  102. package/dist/draft14.cjs +3 -3
  103. package/dist/draft14.d.cts +16 -4
  104. package/dist/draft14.d.ts +16 -4
  105. package/dist/draft14.js +2 -2
  106. package/dist/draft15-session.cjs +6 -0
  107. package/dist/draft15-session.d.cts +8 -0
  108. package/dist/draft15-session.d.ts +8 -0
  109. package/dist/draft15-session.js +6 -0
  110. package/dist/draft15.cjs +111 -0
  111. package/dist/draft15.d.cts +93 -0
  112. package/dist/draft15.d.ts +93 -0
  113. package/dist/draft15.js +111 -0
  114. package/dist/draft16-session.cjs +6 -0
  115. package/dist/draft16-session.d.cts +8 -0
  116. package/dist/draft16-session.d.ts +8 -0
  117. package/dist/draft16-session.js +6 -0
  118. package/dist/draft16.cjs +113 -0
  119. package/dist/draft16.d.cts +94 -0
  120. package/dist/draft16.d.ts +94 -0
  121. package/dist/draft16.js +113 -0
  122. package/dist/draft17-session.cjs +8 -0
  123. package/dist/draft17-session.d.cts +51 -0
  124. package/dist/draft17-session.d.ts +51 -0
  125. package/dist/draft17-session.js +8 -0
  126. package/dist/draft17.cjs +99 -0
  127. package/dist/draft17.d.cts +40 -0
  128. package/dist/draft17.d.ts +40 -0
  129. package/dist/draft17.js +99 -0
  130. package/dist/draft7-session.cjs +3 -3
  131. package/dist/draft7-session.d.cts +3 -3
  132. package/dist/draft7-session.d.ts +3 -3
  133. package/dist/draft7-session.js +2 -2
  134. package/dist/draft7.cjs +4 -4
  135. package/dist/draft7.d.cts +2 -2
  136. package/dist/draft7.d.ts +2 -2
  137. package/dist/draft7.js +2 -2
  138. package/dist/draft8-session.cjs +6 -0
  139. package/dist/draft8-session.d.cts +8 -0
  140. package/dist/draft8-session.d.ts +8 -0
  141. package/dist/draft8-session.js +6 -0
  142. package/dist/draft8.cjs +115 -0
  143. package/dist/draft8.d.cts +95 -0
  144. package/dist/draft8.d.ts +95 -0
  145. package/dist/draft8.js +115 -0
  146. package/dist/draft9-session.cjs +6 -0
  147. package/dist/draft9-session.d.cts +8 -0
  148. package/dist/draft9-session.d.ts +8 -0
  149. package/dist/draft9-session.js +6 -0
  150. package/dist/draft9.cjs +115 -0
  151. package/dist/draft9.d.cts +95 -0
  152. package/dist/draft9.d.ts +95 -0
  153. package/dist/draft9.js +115 -0
  154. package/dist/index.cjs +76 -4
  155. package/dist/index.d.cts +68 -5
  156. package/dist/index.d.ts +68 -5
  157. package/dist/index.js +76 -4
  158. package/dist/{session-types-DFjMk4HH.d.ts → session-types-CJIFbTPd.d.ts} +1 -1
  159. package/dist/{session-types-DW1RSZX_.d.cts → session-types-Cbq8IGCP.d.cts} +1 -1
  160. package/dist/session.cjs +5 -5
  161. package/dist/session.d.cts +3 -3
  162. package/dist/session.d.ts +3 -3
  163. package/dist/session.js +5 -5
  164. package/dist/types-4VxSL2Ho.d.cts +261 -0
  165. package/dist/types-4VxSL2Ho.d.ts +261 -0
  166. package/dist/types-B2afJZM-.d.cts +236 -0
  167. package/dist/types-B2afJZM-.d.ts +236 -0
  168. package/dist/types-Bg6QYNVt.d.cts +290 -0
  169. package/dist/types-Bg6QYNVt.d.ts +290 -0
  170. package/dist/types-C_1HrqBl.d.cts +306 -0
  171. package/dist/types-C_1HrqBl.d.ts +306 -0
  172. package/dist/types-Cw4WE9dh.d.cts +261 -0
  173. package/dist/types-Cw4WE9dh.d.ts +261 -0
  174. package/dist/types-D5gNQiDj.d.cts +261 -0
  175. package/dist/types-D5gNQiDj.d.ts +261 -0
  176. package/dist/types-DqCDFqgB.d.cts +230 -0
  177. package/dist/types-DqCDFqgB.d.ts +230 -0
  178. package/dist/types-ERexTpT8.d.cts +217 -0
  179. package/dist/types-ERexTpT8.d.ts +217 -0
  180. package/dist/{types-DPYE49t0.d.cts → types-QNXoxC9Y.d.cts} +2 -7
  181. package/dist/{types-DPYE49t0.d.ts → types-QNXoxC9Y.d.ts} +2 -7
  182. package/dist/types-r-CasCf1.d.cts +262 -0
  183. package/dist/types-r-CasCf1.d.ts +262 -0
  184. package/package.json +110 -2
  185. package/src/core/types.ts +24 -7
  186. package/src/drafts/draft07/codec.ts +49 -41
  187. package/src/drafts/draft07/rules.ts +1 -3
  188. package/src/drafts/draft08/codec.ts +1254 -0
  189. package/src/drafts/draft08/index.ts +125 -0
  190. package/src/drafts/draft08/messages.ts +72 -0
  191. package/src/drafts/draft08/rules.ts +91 -0
  192. package/src/drafts/draft08/session-fsm.ts +718 -0
  193. package/src/drafts/draft08/session.ts +26 -0
  194. package/src/drafts/draft08/types.ts +377 -0
  195. package/src/drafts/draft09/codec.ts +1235 -0
  196. package/src/drafts/draft09/index.ts +125 -0
  197. package/src/drafts/draft09/messages.ts +72 -0
  198. package/src/drafts/draft09/rules.ts +91 -0
  199. package/src/drafts/draft09/session-fsm.ts +718 -0
  200. package/src/drafts/draft09/session.ts +26 -0
  201. package/src/drafts/draft09/types.ts +376 -0
  202. package/src/drafts/draft10/codec.ts +1235 -0
  203. package/src/drafts/draft10/index.ts +125 -0
  204. package/src/drafts/draft10/messages.ts +72 -0
  205. package/src/drafts/draft10/rules.ts +91 -0
  206. package/src/drafts/draft10/session-fsm.ts +718 -0
  207. package/src/drafts/draft10/session.ts +26 -0
  208. package/src/drafts/draft10/types.ts +376 -0
  209. package/src/drafts/draft11/codec.ts +1198 -0
  210. package/src/drafts/draft11/index.ts +123 -0
  211. package/src/drafts/draft11/messages.ts +71 -0
  212. package/src/drafts/draft11/rules.ts +100 -0
  213. package/src/drafts/draft11/session-fsm.ts +758 -0
  214. package/src/drafts/draft11/session.ts +26 -0
  215. package/src/drafts/draft11/types.ts +375 -0
  216. package/src/drafts/draft12/codec.ts +1354 -0
  217. package/src/drafts/draft12/index.ts +130 -0
  218. package/src/drafts/draft12/messages.ts +84 -0
  219. package/src/drafts/draft12/rules.ts +106 -0
  220. package/src/drafts/draft12/session-fsm.ts +805 -0
  221. package/src/drafts/draft12/session.ts +26 -0
  222. package/src/drafts/draft12/types.ts +414 -0
  223. package/src/drafts/draft13/codec.ts +1438 -0
  224. package/src/drafts/draft13/index.ts +132 -0
  225. package/src/drafts/draft13/messages.ts +86 -0
  226. package/src/drafts/draft13/rules.ts +108 -0
  227. package/src/drafts/draft13/session-fsm.ts +819 -0
  228. package/src/drafts/draft13/session.ts +26 -0
  229. package/src/drafts/draft13/types.ts +433 -0
  230. package/src/drafts/draft14/session-fsm.ts +182 -1
  231. package/src/drafts/draft15/codec.ts +1661 -0
  232. package/src/drafts/draft15/index.ts +121 -0
  233. package/src/drafts/draft15/messages.ts +64 -0
  234. package/src/drafts/draft15/rules.ts +95 -0
  235. package/src/drafts/draft15/session-fsm.ts +687 -0
  236. package/src/drafts/draft15/session.ts +26 -0
  237. package/src/drafts/draft15/types.ts +336 -0
  238. package/src/drafts/draft16/codec.ts +1623 -0
  239. package/src/drafts/draft16/index.ts +123 -0
  240. package/src/drafts/draft16/messages.ts +67 -0
  241. package/src/drafts/draft16/rules.ts +96 -0
  242. package/src/drafts/draft16/session-fsm.ts +682 -0
  243. package/src/drafts/draft16/session.ts +26 -0
  244. package/src/drafts/draft16/types.ts +354 -0
  245. package/src/drafts/draft17/codec.ts +1621 -0
  246. package/src/drafts/draft17/index.ts +105 -0
  247. package/src/drafts/draft17/messages.ts +53 -0
  248. package/src/drafts/draft17/rules.ts +85 -0
  249. package/src/drafts/draft17/session-fsm.ts +437 -0
  250. package/src/drafts/draft17/session.ts +15 -0
  251. package/src/drafts/draft17/types.ts +310 -0
  252. package/src/index.ts +217 -2
@@ -0,0 +1,336 @@
1
+ // Draft-15 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; // e.g. "deadbeef"
9
+ }
10
+
11
+ // Setup parameters (constant namespace across versions)
12
+ export interface Draft15SetupParams {
13
+ path?: string; // 0x01 odd
14
+ max_request_id?: bigint; // 0x02 even
15
+ max_auth_token_cache_size?: bigint; // 0x04 even
16
+ authority?: string; // 0x05 odd
17
+ moqt_implementation?: string; // 0x07 odd
18
+ unknown?: UnknownParam[];
19
+ }
20
+
21
+ // Subscription filter parameter
22
+ export interface SubscriptionFilter {
23
+ readonly filter_type: bigint;
24
+ readonly start_group?: bigint;
25
+ readonly start_object?: bigint;
26
+ readonly end_group?: bigint;
27
+ }
28
+
29
+ // Largest object location parameter
30
+ export interface LargestObject {
31
+ readonly group: bigint;
32
+ readonly object: bigint;
33
+ }
34
+
35
+ // Version-specific parameters (well-known + unknown)
36
+ export interface Draft15Params {
37
+ expires?: bigint; // 0x08 even
38
+ largest_object?: LargestObject; // 0x09 odd (length-prefixed)
39
+ subscriber_priority?: bigint; // 0x20 even
40
+ subscription_filter?: SubscriptionFilter; // 0x21 odd (length-prefixed)
41
+ group_order?: bigint; // 0x22 even
42
+ unknown?: UnknownParam[];
43
+ }
44
+
45
+ // Draft-15 message type tag union
46
+ export type Draft15MessageType =
47
+ | "client_setup"
48
+ | "server_setup"
49
+ | "subscribe"
50
+ | "subscribe_ok"
51
+ | "subscribe_update"
52
+ | "unsubscribe"
53
+ | "publish"
54
+ | "publish_ok"
55
+ | "publish_done"
56
+ | "publish_namespace"
57
+ | "publish_namespace_done"
58
+ | "publish_namespace_cancel"
59
+ | "subscribe_namespace"
60
+ | "unsubscribe_namespace"
61
+ | "fetch"
62
+ | "fetch_ok"
63
+ | "fetch_cancel"
64
+ | "track_status"
65
+ | "request_ok"
66
+ | "request_error"
67
+ | "goaway"
68
+ | "max_request_id"
69
+ | "requests_blocked";
70
+
71
+ // Base
72
+ export interface Draft15BaseMessage {
73
+ readonly type: Draft15MessageType;
74
+ }
75
+
76
+ // Setup — ALPN handles version negotiation, no versions in messages
77
+ export interface Draft15ClientSetup extends Draft15BaseMessage {
78
+ readonly type: "client_setup";
79
+ readonly parameters: Draft15SetupParams;
80
+ }
81
+
82
+ export interface Draft15ServerSetup extends Draft15BaseMessage {
83
+ readonly type: "server_setup";
84
+ readonly parameters: Draft15SetupParams;
85
+ }
86
+
87
+ // Subscribe — fields moved to parameters
88
+ export interface Draft15Subscribe extends Draft15BaseMessage {
89
+ readonly type: "subscribe";
90
+ readonly request_id: bigint;
91
+ readonly track_namespace: string[];
92
+ readonly track_name: string;
93
+ readonly parameters: Draft15Params;
94
+ }
95
+
96
+ export interface Draft15SubscribeOk extends Draft15BaseMessage {
97
+ readonly type: "subscribe_ok";
98
+ readonly request_id: bigint;
99
+ readonly track_alias: bigint;
100
+ readonly parameters: Draft15Params;
101
+ }
102
+
103
+ export interface Draft15SubscribeUpdate extends Draft15BaseMessage {
104
+ readonly type: "subscribe_update";
105
+ readonly request_id: bigint;
106
+ readonly subscription_request_id: bigint;
107
+ readonly parameters: Draft15Params;
108
+ }
109
+
110
+ export interface Draft15Unsubscribe extends Draft15BaseMessage {
111
+ readonly type: "unsubscribe";
112
+ readonly request_id: bigint;
113
+ }
114
+
115
+ // Publish
116
+ export interface Draft15Publish extends Draft15BaseMessage {
117
+ readonly type: "publish";
118
+ readonly request_id: bigint;
119
+ readonly track_namespace: string[];
120
+ readonly track_name: string;
121
+ readonly track_alias: bigint;
122
+ readonly parameters: Draft15Params;
123
+ }
124
+
125
+ export interface Draft15PublishOk extends Draft15BaseMessage {
126
+ readonly type: "publish_ok";
127
+ readonly request_id: bigint;
128
+ readonly parameters: Draft15Params;
129
+ }
130
+
131
+ export interface Draft15PublishDone extends Draft15BaseMessage {
132
+ readonly type: "publish_done";
133
+ readonly request_id: bigint;
134
+ readonly status_code: bigint;
135
+ readonly stream_count: bigint;
136
+ readonly reason_phrase: string;
137
+ }
138
+
139
+ // Namespace
140
+ export interface Draft15PublishNamespace extends Draft15BaseMessage {
141
+ readonly type: "publish_namespace";
142
+ readonly request_id: bigint;
143
+ readonly track_namespace: string[];
144
+ readonly parameters: Draft15Params;
145
+ }
146
+
147
+ export interface Draft15PublishNamespaceDone extends Draft15BaseMessage {
148
+ readonly type: "publish_namespace_done";
149
+ readonly track_namespace: string[];
150
+ }
151
+
152
+ export interface Draft15PublishNamespaceCancel extends Draft15BaseMessage {
153
+ readonly type: "publish_namespace_cancel";
154
+ readonly track_namespace: string[];
155
+ readonly error_code: bigint;
156
+ readonly reason_phrase: string;
157
+ }
158
+
159
+ export interface Draft15SubscribeNamespace extends Draft15BaseMessage {
160
+ readonly type: "subscribe_namespace";
161
+ readonly request_id: bigint;
162
+ readonly namespace_prefix: string[];
163
+ readonly parameters: Draft15Params;
164
+ }
165
+
166
+ export interface Draft15UnsubscribeNamespace extends Draft15BaseMessage {
167
+ readonly type: "unsubscribe_namespace";
168
+ readonly request_id: bigint;
169
+ }
170
+
171
+ // Fetch — restructured with fetch type variants
172
+ export interface StandaloneFetch {
173
+ readonly track_namespace: string[];
174
+ readonly track_name: string;
175
+ readonly start_group: bigint;
176
+ readonly start_object: bigint;
177
+ readonly end_group: bigint;
178
+ readonly end_object: bigint;
179
+ }
180
+
181
+ export interface JoiningFetch {
182
+ readonly joining_request_id: bigint;
183
+ readonly joining_start: bigint;
184
+ }
185
+
186
+ export interface Draft15Fetch extends Draft15BaseMessage {
187
+ readonly type: "fetch";
188
+ readonly request_id: bigint;
189
+ readonly fetch_type: bigint;
190
+ readonly standalone?: StandaloneFetch;
191
+ readonly joining?: JoiningFetch;
192
+ readonly parameters: Draft15Params;
193
+ }
194
+
195
+ export interface Draft15FetchOk extends Draft15BaseMessage {
196
+ readonly type: "fetch_ok";
197
+ readonly request_id: bigint;
198
+ readonly end_of_track: number; // uint8
199
+ readonly end_group: bigint;
200
+ readonly end_object: bigint;
201
+ readonly parameters: Draft15Params;
202
+ }
203
+
204
+ export interface Draft15FetchCancel extends Draft15BaseMessage {
205
+ readonly type: "fetch_cancel";
206
+ readonly request_id: bigint;
207
+ }
208
+
209
+ // Track Status — same format as Subscribe
210
+ export interface Draft15TrackStatus extends Draft15BaseMessage {
211
+ readonly type: "track_status";
212
+ readonly request_id: bigint;
213
+ readonly track_namespace: string[];
214
+ readonly track_name: string;
215
+ readonly parameters: Draft15Params;
216
+ }
217
+
218
+ // Consolidated response messages
219
+ export interface Draft15RequestOk extends Draft15BaseMessage {
220
+ readonly type: "request_ok";
221
+ readonly request_id: bigint;
222
+ readonly parameters: Draft15Params;
223
+ }
224
+
225
+ export interface Draft15RequestError extends Draft15BaseMessage {
226
+ readonly type: "request_error";
227
+ readonly request_id: bigint;
228
+ readonly error_code: bigint;
229
+ readonly reason_phrase: string;
230
+ }
231
+
232
+ // Session Control
233
+ export interface Draft15GoAway extends Draft15BaseMessage {
234
+ readonly type: "goaway";
235
+ readonly new_session_uri: string;
236
+ }
237
+
238
+ export interface Draft15MaxRequestId extends Draft15BaseMessage {
239
+ readonly type: "max_request_id";
240
+ readonly max_request_id: bigint;
241
+ }
242
+
243
+ export interface Draft15RequestsBlocked extends Draft15BaseMessage {
244
+ readonly type: "requests_blocked";
245
+ readonly maximum_request_id: bigint;
246
+ }
247
+
248
+ // Union of all draft-15 control messages
249
+ export type Draft15Message =
250
+ | Draft15ClientSetup
251
+ | Draft15ServerSetup
252
+ | Draft15Subscribe
253
+ | Draft15SubscribeOk
254
+ | Draft15SubscribeUpdate
255
+ | Draft15Unsubscribe
256
+ | Draft15Publish
257
+ | Draft15PublishOk
258
+ | Draft15PublishDone
259
+ | Draft15PublishNamespace
260
+ | Draft15PublishNamespaceDone
261
+ | Draft15PublishNamespaceCancel
262
+ | Draft15SubscribeNamespace
263
+ | Draft15UnsubscribeNamespace
264
+ | Draft15Fetch
265
+ | Draft15FetchOk
266
+ | Draft15FetchCancel
267
+ | Draft15TrackStatus
268
+ | Draft15RequestOk
269
+ | Draft15RequestError
270
+ | Draft15GoAway
271
+ | Draft15MaxRequestId
272
+ | Draft15RequestsBlocked;
273
+
274
+ // Data stream types (same shape as draft-14 for now)
275
+ export interface ObjectPayload {
276
+ readonly type: "object";
277
+ readonly objectId: bigint;
278
+ readonly payloadLength: number;
279
+ readonly status?: bigint;
280
+ readonly payload: Uint8Array;
281
+ }
282
+
283
+ export interface SubgroupStream {
284
+ readonly type: "subgroup";
285
+ readonly headerType: number; // stream type byte (0x10-0x1D or 0x30-0x3D)
286
+ readonly trackAlias: bigint;
287
+ readonly groupId: bigint;
288
+ readonly subgroupId: bigint;
289
+ readonly publisherPriority: number;
290
+ readonly objects: ObjectPayload[];
291
+ }
292
+
293
+ export interface DatagramObject {
294
+ readonly type: "datagram";
295
+ readonly datagramType: number;
296
+ readonly trackAlias: bigint;
297
+ readonly groupId: bigint;
298
+ readonly objectId: bigint;
299
+ readonly publisherPriority: number;
300
+ readonly endOfGroup?: boolean;
301
+ readonly objectStatus?: 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
+ }
312
+
313
+ export interface FetchStream {
314
+ readonly type: "fetch";
315
+ readonly requestId: bigint;
316
+ readonly objects: FetchObjectPayload[];
317
+ }
318
+
319
+ export type Draft15DataStream = SubgroupStream | DatagramObject | FetchStream;
320
+
321
+ // Streaming data stream decoder types
322
+ export interface SubgroupStreamHeader {
323
+ readonly type: "subgroup_header";
324
+ readonly trackAlias: bigint;
325
+ readonly groupId: bigint;
326
+ readonly subgroupId: bigint;
327
+ readonly publisherPriority: number;
328
+ }
329
+
330
+ export interface FetchStreamHeader {
331
+ readonly type: "fetch_header";
332
+ readonly requestId: bigint;
333
+ }
334
+
335
+ export type DataStreamHeader = SubgroupStreamHeader | FetchStreamHeader;
336
+ export type DataStreamEvent = DataStreamHeader | ObjectPayload;