@norskvideo/moq-net 0.1.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 (274) hide show
  1. package/README.md +70 -0
  2. package/announced.d.ts +45 -0
  3. package/announced.d.ts.map +1 -0
  4. package/announced.js +70 -0
  5. package/announced.js.map +1 -0
  6. package/bandwidth.d.ts +11 -0
  7. package/bandwidth.d.ts.map +1 -0
  8. package/bandwidth.js +7 -0
  9. package/bandwidth.js.map +1 -0
  10. package/broadcast.d.ts +39 -0
  11. package/broadcast.d.ts.map +1 -0
  12. package/broadcast.js +76 -0
  13. package/broadcast.js.map +1 -0
  14. package/connection/accept.d.ts +15 -0
  15. package/connection/accept.d.ts.map +1 -0
  16. package/connection/accept.js +137 -0
  17. package/connection/accept.js.map +1 -0
  18. package/connection/cert.test.d.ts +2 -0
  19. package/connection/cert.test.d.ts.map +1 -0
  20. package/connection/cert.test.js +26 -0
  21. package/connection/cert.test.js.map +1 -0
  22. package/connection/connect.d.ts +37 -0
  23. package/connection/connect.d.ts.map +1 -0
  24. package/connection/connect.js +348 -0
  25. package/connection/connect.js.map +1 -0
  26. package/connection/established.d.ts +30 -0
  27. package/connection/established.d.ts.map +1 -0
  28. package/connection/established.js +3 -0
  29. package/connection/established.js.map +1 -0
  30. package/connection/handshake.d.ts +10 -0
  31. package/connection/handshake.d.ts.map +1 -0
  32. package/connection/handshake.js +48 -0
  33. package/connection/handshake.js.map +1 -0
  34. package/connection/index.d.ts +5 -0
  35. package/connection/index.d.ts.map +1 -0
  36. package/connection/index.js +6 -0
  37. package/connection/index.js.map +1 -0
  38. package/connection/reload.d.ts +47 -0
  39. package/connection/reload.d.ts.map +1 -0
  40. package/connection/reload.js +137 -0
  41. package/connection/reload.js.map +1 -0
  42. package/group.d.ts +66 -0
  43. package/group.d.ts.map +1 -0
  44. package/group.js +135 -0
  45. package/group.js.map +1 -0
  46. package/group.test.d.ts +2 -0
  47. package/group.test.d.ts.map +1 -0
  48. package/group.test.js +66 -0
  49. package/group.test.js.map +1 -0
  50. package/ietf/adapter.d.ts +65 -0
  51. package/ietf/adapter.d.ts.map +1 -0
  52. package/ietf/adapter.js +626 -0
  53. package/ietf/adapter.js.map +1 -0
  54. package/ietf/connection.d.ts +65 -0
  55. package/ietf/connection.d.ts.map +1 -0
  56. package/ietf/connection.js +248 -0
  57. package/ietf/connection.js.map +1 -0
  58. package/ietf/control.d.ts +135 -0
  59. package/ietf/control.d.ts.map +1 -0
  60. package/ietf/control.js +242 -0
  61. package/ietf/control.js.map +1 -0
  62. package/ietf/fetch.d.ts +64 -0
  63. package/ietf/fetch.d.ts.map +1 -0
  64. package/ietf/fetch.js +100 -0
  65. package/ietf/fetch.js.map +1 -0
  66. package/ietf/goaway.d.ts +15 -0
  67. package/ietf/goaway.d.ts.map +1 -0
  68. package/ietf/goaway.js +34 -0
  69. package/ietf/goaway.js.map +1 -0
  70. package/ietf/ietf.test.d.ts +2 -0
  71. package/ietf/ietf.test.d.ts.map +1 -0
  72. package/ietf/ietf.test.js +873 -0
  73. package/ietf/ietf.test.js.map +1 -0
  74. package/ietf/index.d.ts +18 -0
  75. package/ietf/index.d.ts.map +1 -0
  76. package/ietf/index.js +19 -0
  77. package/ietf/index.js.map +1 -0
  78. package/ietf/message.d.ts +4 -0
  79. package/ietf/message.d.ts.map +1 -0
  80. package/ietf/message.js +54 -0
  81. package/ietf/message.js.map +1 -0
  82. package/ietf/namespace.d.ts +5 -0
  83. package/ietf/namespace.d.ts.map +1 -0
  84. package/ietf/namespace.js +27 -0
  85. package/ietf/namespace.js.map +1 -0
  86. package/ietf/object.d.ts +40 -0
  87. package/ietf/object.d.ts.map +1 -0
  88. package/ietf/object.js +160 -0
  89. package/ietf/object.js.map +1 -0
  90. package/ietf/parameters.d.ts +56 -0
  91. package/ietf/parameters.d.ts.map +1 -0
  92. package/ietf/parameters.js +337 -0
  93. package/ietf/parameters.js.map +1 -0
  94. package/ietf/properties.d.ts +4 -0
  95. package/ietf/properties.d.ts.map +1 -0
  96. package/ietf/properties.js +33 -0
  97. package/ietf/properties.js.map +1 -0
  98. package/ietf/publish.d.ts +68 -0
  99. package/ietf/publish.d.ts.map +1 -0
  100. package/ietf/publish.js +192 -0
  101. package/ietf/publish.js.map +1 -0
  102. package/ietf/publish_namespace.d.ts +68 -0
  103. package/ietf/publish_namespace.d.ts.map +1 -0
  104. package/ietf/publish_namespace.js +176 -0
  105. package/ietf/publish_namespace.js.map +1 -0
  106. package/ietf/publisher.d.ts +50 -0
  107. package/ietf/publisher.d.ts.map +1 -0
  108. package/ietf/publisher.js +330 -0
  109. package/ietf/publisher.js.map +1 -0
  110. package/ietf/request.d.ts +52 -0
  111. package/ietf/request.d.ts.map +1 -0
  112. package/ietf/request.js +119 -0
  113. package/ietf/request.js.map +1 -0
  114. package/ietf/setup.d.ts +38 -0
  115. package/ietf/setup.d.ts.map +1 -0
  116. package/ietf/setup.js +129 -0
  117. package/ietf/setup.js.map +1 -0
  118. package/ietf/subscribe.d.ts +66 -0
  119. package/ietf/subscribe.d.ts.map +1 -0
  120. package/ietf/subscribe.js +276 -0
  121. package/ietf/subscribe.js.map +1 -0
  122. package/ietf/subscribe_namespace.d.ts +101 -0
  123. package/ietf/subscribe_namespace.d.ts.map +1 -0
  124. package/ietf/subscribe_namespace.js +256 -0
  125. package/ietf/subscribe_namespace.js.map +1 -0
  126. package/ietf/subscriber.d.ts +53 -0
  127. package/ietf/subscriber.d.ts.map +1 -0
  128. package/ietf/subscriber.js +404 -0
  129. package/ietf/subscriber.js.map +1 -0
  130. package/ietf/track.d.ts +40 -0
  131. package/ietf/track.d.ts.map +1 -0
  132. package/ietf/track.js +108 -0
  133. package/ietf/track.js.map +1 -0
  134. package/ietf/version.d.ts +56 -0
  135. package/ietf/version.d.ts.map +1 -0
  136. package/ietf/version.js +63 -0
  137. package/ietf/version.js.map +1 -0
  138. package/index.d.ts +22 -0
  139. package/index.d.ts.map +1 -0
  140. package/index.js +23 -0
  141. package/index.js.map +1 -0
  142. package/integration.test.d.ts +2 -0
  143. package/integration.test.d.ts.map +1 -0
  144. package/integration.test.js +90 -0
  145. package/integration.test.js.map +1 -0
  146. package/lite/announce.d.ts +35 -0
  147. package/lite/announce.d.ts.map +1 -0
  148. package/lite/announce.js +166 -0
  149. package/lite/announce.js.map +1 -0
  150. package/lite/connection.d.ts +47 -0
  151. package/lite/connection.d.ts.map +1 -0
  152. package/lite/connection.js +247 -0
  153. package/lite/connection.js.map +1 -0
  154. package/lite/fetch.d.ts +14 -0
  155. package/lite/fetch.d.ts.map +1 -0
  156. package/lite/fetch.js +47 -0
  157. package/lite/fetch.js.map +1 -0
  158. package/lite/goaway.d.ts +10 -0
  159. package/lite/goaway.d.ts.map +1 -0
  160. package/lite/goaway.js +37 -0
  161. package/lite/goaway.js.map +1 -0
  162. package/lite/group.d.ts +18 -0
  163. package/lite/group.d.ts.map +1 -0
  164. package/lite/group.js +46 -0
  165. package/lite/group.js.map +1 -0
  166. package/lite/index.d.ts +11 -0
  167. package/lite/index.d.ts.map +1 -0
  168. package/lite/index.js +12 -0
  169. package/lite/index.js.map +1 -0
  170. package/lite/message.d.ts +5 -0
  171. package/lite/message.d.ts.map +1 -0
  172. package/lite/message.js +51 -0
  173. package/lite/message.js.map +1 -0
  174. package/lite/origin.d.ts +25 -0
  175. package/lite/origin.d.ts.map +1 -0
  176. package/lite/origin.js +35 -0
  177. package/lite/origin.js.map +1 -0
  178. package/lite/probe.d.ts +12 -0
  179. package/lite/probe.d.ts.map +1 -0
  180. package/lite/probe.js +60 -0
  181. package/lite/probe.js.map +1 -0
  182. package/lite/publisher.d.ts +63 -0
  183. package/lite/publisher.d.ts.map +1 -0
  184. package/lite/publisher.js +350 -0
  185. package/lite/publisher.js.map +1 -0
  186. package/lite/session.d.ts +36 -0
  187. package/lite/session.d.ts.map +1 -0
  188. package/lite/session.js +130 -0
  189. package/lite/session.js.map +1 -0
  190. package/lite/setup.d.ts +18 -0
  191. package/lite/setup.d.ts.map +1 -0
  192. package/lite/setup.js +55 -0
  193. package/lite/setup.js.map +1 -0
  194. package/lite/stream.d.ts +23 -0
  195. package/lite/stream.d.ts.map +1 -0
  196. package/lite/stream.js +20 -0
  197. package/lite/stream.js.map +1 -0
  198. package/lite/subscribe.d.ts +111 -0
  199. package/lite/subscribe.d.ts.map +1 -0
  200. package/lite/subscribe.js +341 -0
  201. package/lite/subscribe.js.map +1 -0
  202. package/lite/subscriber.d.ts +80 -0
  203. package/lite/subscriber.d.ts.map +1 -0
  204. package/lite/subscriber.js +316 -0
  205. package/lite/subscriber.js.map +1 -0
  206. package/lite/track.d.ts +38 -0
  207. package/lite/track.d.ts.map +1 -0
  208. package/lite/track.js +81 -0
  209. package/lite/track.js.map +1 -0
  210. package/lite/track.test.d.ts +2 -0
  211. package/lite/track.test.d.ts.map +1 -0
  212. package/lite/track.test.js +53 -0
  213. package/lite/track.test.js.map +1 -0
  214. package/lite/version.d.ts +16 -0
  215. package/lite/version.d.ts.map +1 -0
  216. package/lite/version.js +41 -0
  217. package/lite/version.js.map +1 -0
  218. package/mock.d.ts +16 -0
  219. package/mock.d.ts.map +1 -0
  220. package/mock.js +154 -0
  221. package/mock.js.map +1 -0
  222. package/package.json +27 -0
  223. package/path.d.ts +111 -0
  224. package/path.d.ts.map +1 -0
  225. package/path.js +133 -0
  226. package/path.js.map +1 -0
  227. package/path.test.d.ts +2 -0
  228. package/path.test.d.ts.map +1 -0
  229. package/path.test.js +169 -0
  230. package/path.test.js.map +1 -0
  231. package/stream.d.ts +57 -0
  232. package/stream.d.ts.map +1 -0
  233. package/stream.js +326 -0
  234. package/stream.js.map +1 -0
  235. package/stream.test.d.ts +2 -0
  236. package/stream.test.d.ts.map +1 -0
  237. package/stream.test.js +210 -0
  238. package/stream.test.js.map +1 -0
  239. package/time.d.ts +109 -0
  240. package/time.d.ts.map +1 -0
  241. package/time.js +94 -0
  242. package/time.js.map +1 -0
  243. package/track.d.ts +85 -0
  244. package/track.d.ts.map +1 -0
  245. package/track.js +227 -0
  246. package/track.js.map +1 -0
  247. package/track.test.d.ts +2 -0
  248. package/track.test.d.ts.map +1 -0
  249. package/track.test.js +56 -0
  250. package/track.test.js.map +1 -0
  251. package/util/error.d.ts +3 -0
  252. package/util/error.d.ts.map +1 -0
  253. package/util/error.js +9 -0
  254. package/util/error.js.map +1 -0
  255. package/util/hex.d.ts +3 -0
  256. package/util/hex.d.ts.map +1 -0
  257. package/util/hex.js +16 -0
  258. package/util/hex.js.map +1 -0
  259. package/util/index.d.ts +2 -0
  260. package/util/index.d.ts.map +1 -0
  261. package/util/index.js +3 -0
  262. package/util/index.js.map +1 -0
  263. package/varint.d.ts +36 -0
  264. package/varint.d.ts.map +1 -0
  265. package/varint.js +288 -0
  266. package/varint.js.map +1 -0
  267. package/varint.test.d.ts +2 -0
  268. package/varint.test.d.ts.map +1 -0
  269. package/varint.test.js +106 -0
  270. package/varint.test.js.map +1 -0
  271. package/zod.d.ts +13 -0
  272. package/zod.d.ts.map +1 -0
  273. package/zod.js +19 -0
  274. package/zod.js.map +1 -0
@@ -0,0 +1,256 @@
1
+ /* @ts-self-types="./subscribe_namespace.d.ts" */
2
+ import * as Message from "./message.js";
3
+ import * as Namespace from "./namespace.js";
4
+ import { Parameters } from "./parameters.js";
5
+ import { Version } from "./version.js";
6
+ // True for the drafts that use the legacy 0x11 SUBSCRIBE_NAMESPACE message.
7
+ // Draft-18+ uses the renumbered 0x50 message instead.
8
+ function isLegacyVersion(version) {
9
+ switch (version) {
10
+ case Version.DRAFT_14:
11
+ case Version.DRAFT_15:
12
+ case Version.DRAFT_16:
13
+ case Version.DRAFT_17:
14
+ return true;
15
+ default:
16
+ return false;
17
+ }
18
+ }
19
+ // SUBSCRIBE_NAMESPACE message (draft-18+, type 0x50).
20
+ //
21
+ // Draft-18 renumbered the message from 0x11 to 0x50 and dropped the Subscribe
22
+ // Options field when it split SUBSCRIBE_TRACKS (0x51) off into its own message
23
+ // type (#1542). Draft-14 through draft-17 use SubscribeNamespaceLegacy.
24
+ export class SubscribeNamespace {
25
+ static id = 0x50;
26
+ namespace;
27
+ requestId;
28
+ constructor({ namespace, requestId }) {
29
+ this.namespace = namespace;
30
+ this.requestId = requestId;
31
+ }
32
+ async #encode(w, version) {
33
+ if (isLegacyVersion(version)) {
34
+ throw new Error(`SUBSCRIBE_NAMESPACE (0x50) is draft-18+ only, not ${version}`);
35
+ }
36
+ await w.u62(this.requestId);
37
+ await Namespace.encode(w, this.namespace);
38
+ await new Parameters().encode(w, version);
39
+ }
40
+ async encode(w, version) {
41
+ return Message.encode(w, (wr) => this.#encode(wr, version));
42
+ }
43
+ static async decode(r, version) {
44
+ return Message.decode(r, (rd) => SubscribeNamespace.#decode(rd, version));
45
+ }
46
+ static async #decode(r, version) {
47
+ if (isLegacyVersion(version)) {
48
+ throw new Error(`SUBSCRIBE_NAMESPACE (0x50) is draft-18+ only, not ${version}`);
49
+ }
50
+ const requestId = await r.u62();
51
+ const namespace = await Namespace.decode(r);
52
+ await Parameters.decode(r, version);
53
+ return new SubscribeNamespace({ namespace, requestId });
54
+ }
55
+ }
56
+ // SUBSCRIBE_NAMESPACE message for draft-14 through draft-17 (type 0x11).
57
+ //
58
+ // In v16 this moves from the control stream to its own bidi stream. Draft-16/17
59
+ // carry a Subscribe Options field (NAMESPACE vs TRACKS); draft-17 additionally
60
+ // prefixes a Required Request ID delta (removed in draft-18 per #1615).
61
+ // Draft-18+ uses SubscribeNamespace.
62
+ export class SubscribeNamespaceLegacy {
63
+ static id = 0x11;
64
+ namespace;
65
+ requestId;
66
+ subscribeOptions; // v16/v17: default 0x01 (NAMESPACE only)
67
+ constructor({ namespace, requestId, subscribeOptions = 1, }) {
68
+ this.namespace = namespace;
69
+ this.requestId = requestId;
70
+ this.subscribeOptions = subscribeOptions;
71
+ }
72
+ async #encode(w, version) {
73
+ if (!isLegacyVersion(version)) {
74
+ throw new Error(`legacy SUBSCRIBE_NAMESPACE (0x11) is draft-14..17 only, not ${version}`);
75
+ }
76
+ await w.u62(this.requestId);
77
+ if (version === Version.DRAFT_17) {
78
+ await w.u62(0n); // required_request_id_delta = 0 (draft-17 only, removed in draft-18 per #1615)
79
+ }
80
+ await Namespace.encode(w, this.namespace);
81
+ if (version === Version.DRAFT_16 || version === Version.DRAFT_17) {
82
+ await w.u53(this.subscribeOptions);
83
+ }
84
+ await new Parameters().encode(w, version);
85
+ }
86
+ async encode(w, version) {
87
+ return Message.encode(w, (wr) => this.#encode(wr, version));
88
+ }
89
+ static async decode(r, version) {
90
+ return Message.decode(r, (rd) => SubscribeNamespaceLegacy.#decode(rd, version));
91
+ }
92
+ static async #decode(r, version) {
93
+ if (!isLegacyVersion(version)) {
94
+ throw new Error(`legacy SUBSCRIBE_NAMESPACE (0x11) is draft-14..17 only, not ${version}`);
95
+ }
96
+ const requestId = await r.u62();
97
+ if (version === Version.DRAFT_17) {
98
+ await r.u62(); // required_request_id_delta (draft-17 only, removed in draft-18 per #1615)
99
+ }
100
+ const namespace = await Namespace.decode(r);
101
+ let subscribeOptions = 1;
102
+ if (version === Version.DRAFT_16 || version === Version.DRAFT_17) {
103
+ subscribeOptions = await r.u53();
104
+ }
105
+ await Parameters.decode(r, version);
106
+ return new SubscribeNamespaceLegacy({ namespace, requestId, subscribeOptions });
107
+ }
108
+ }
109
+ /// SUBSCRIBE_TRACKS message ID (0x51) introduced in draft-18 (#1542).
110
+ ///
111
+ /// moq-lite does not implement PUBLISH replication through a CDN, which is the
112
+ /// only thing SUBSCRIBE_TRACKS enables. We never send it and reject it loudly
113
+ /// on receipt rather than silently ignoring, since the peer would otherwise
114
+ /// wait forever for a REQUEST_OK.
115
+ export const SUBSCRIBE_TRACKS_ID = 0x51;
116
+ export class SubscribeNamespaceOk {
117
+ static id = 0x12;
118
+ requestId;
119
+ constructor({ requestId }) {
120
+ this.requestId = requestId;
121
+ }
122
+ async #encode(w) {
123
+ await w.u62(this.requestId);
124
+ }
125
+ async encode(w, _version) {
126
+ return Message.encode(w, this.#encode.bind(this));
127
+ }
128
+ static async decode(r, _version) {
129
+ return Message.decode(r, SubscribeNamespaceOk.#decode);
130
+ }
131
+ static async #decode(r) {
132
+ const requestId = await r.u62();
133
+ return new SubscribeNamespaceOk({ requestId });
134
+ }
135
+ }
136
+ export class SubscribeNamespaceError {
137
+ static id = 0x13;
138
+ requestId;
139
+ errorCode;
140
+ reasonPhrase;
141
+ constructor({ requestId, errorCode, reasonPhrase, }) {
142
+ this.requestId = requestId;
143
+ this.errorCode = errorCode;
144
+ this.reasonPhrase = reasonPhrase;
145
+ }
146
+ async #encode(w) {
147
+ await w.u62(this.requestId);
148
+ await w.u62(BigInt(this.errorCode));
149
+ await w.string(this.reasonPhrase);
150
+ }
151
+ async encode(w, _version) {
152
+ return Message.encode(w, this.#encode.bind(this));
153
+ }
154
+ static async decode(r, _version) {
155
+ return Message.decode(r, SubscribeNamespaceError.#decode);
156
+ }
157
+ static async #decode(r) {
158
+ const requestId = await r.u62();
159
+ const errorCode = Number(await r.u62());
160
+ const reasonPhrase = await r.string();
161
+ return new SubscribeNamespaceError({ requestId, errorCode, reasonPhrase });
162
+ }
163
+ }
164
+ export class UnsubscribeNamespace {
165
+ static id = 0x14;
166
+ requestId;
167
+ constructor({ requestId }) {
168
+ this.requestId = requestId;
169
+ }
170
+ async #encode(w) {
171
+ await w.u62(this.requestId);
172
+ }
173
+ async encode(w, _version) {
174
+ return Message.encode(w, this.#encode.bind(this));
175
+ }
176
+ static async decode(r, _version) {
177
+ return Message.decode(r, UnsubscribeNamespace.#decode);
178
+ }
179
+ static async #decode(r) {
180
+ const requestId = await r.u62();
181
+ return new UnsubscribeNamespace({ requestId });
182
+ }
183
+ }
184
+ /// NAMESPACE message (0x08) — v16 only, sent on SUBSCRIBE_NAMESPACE bidi stream
185
+ export class SubscribeNamespaceEntry {
186
+ static id = 0x08;
187
+ suffix;
188
+ constructor({ suffix }) {
189
+ this.suffix = suffix;
190
+ }
191
+ async #encode(w) {
192
+ await Namespace.encode(w, this.suffix);
193
+ }
194
+ async encode(w, _version) {
195
+ return Message.encode(w, this.#encode.bind(this));
196
+ }
197
+ static async decode(r, _version) {
198
+ return Message.decode(r, SubscribeNamespaceEntry.#decode);
199
+ }
200
+ static async #decode(r) {
201
+ const suffix = await Namespace.decode(r);
202
+ return new SubscribeNamespaceEntry({ suffix });
203
+ }
204
+ }
205
+ /// NAMESPACE_DONE message (0x0E) — v16 only, sent on SUBSCRIBE_NAMESPACE bidi stream
206
+ export class SubscribeNamespaceEntryDone {
207
+ static id = 0x0e;
208
+ suffix;
209
+ constructor({ suffix }) {
210
+ this.suffix = suffix;
211
+ }
212
+ async #encode(w) {
213
+ await Namespace.encode(w, this.suffix);
214
+ }
215
+ async encode(w, _version) {
216
+ return Message.encode(w, this.#encode.bind(this));
217
+ }
218
+ static async decode(r, _version) {
219
+ return Message.decode(r, SubscribeNamespaceEntryDone.#decode);
220
+ }
221
+ static async #decode(r) {
222
+ const suffix = await Namespace.decode(r);
223
+ return new SubscribeNamespaceEntryDone({ suffix });
224
+ }
225
+ }
226
+ /// PUBLISH_BLOCKED message (0x0F) — draft-17 only, sent on SUBSCRIBE_NAMESPACE bidi stream
227
+ export class PublishBlocked {
228
+ static id = 0x0f;
229
+ suffix;
230
+ trackName;
231
+ constructor({ suffix, trackName }) {
232
+ this.suffix = suffix;
233
+ this.trackName = trackName;
234
+ }
235
+ async #encode(w) {
236
+ await Namespace.encode(w, this.suffix);
237
+ await w.string(this.trackName);
238
+ }
239
+ async encode(w, _version) {
240
+ return Message.encode(w, this.#encode.bind(this));
241
+ }
242
+ static async decode(r, _version) {
243
+ return Message.decode(r, PublishBlocked.#decode);
244
+ }
245
+ static async #decode(r) {
246
+ const suffix = await Namespace.decode(r);
247
+ const trackName = await r.string();
248
+ return new PublishBlocked({ suffix, trackName });
249
+ }
250
+ }
251
+ // Backward compatibility aliases
252
+ export const SubscribeAnnounces = SubscribeNamespace;
253
+ export const SubscribeAnnouncesOk = SubscribeNamespaceOk;
254
+ export const SubscribeAnnouncesError = SubscribeNamespaceError;
255
+ export const UnsubscribeAnnounces = UnsubscribeNamespace;
256
+ //# sourceMappingURL=subscribe_namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe_namespace.js","sourceRoot":"","sources":["../../src/ietf/subscribe_namespace.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAoB,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,4EAA4E;AAC5E,sDAAsD;AACtD,SAAS,eAAe,CAAC,OAAoB;IAC5C,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,OAAO,CAAC,QAAQ,CAAC;QACtB,KAAK,OAAO,CAAC,QAAQ,CAAC;QACtB,KAAK,OAAO,CAAC,QAAQ,CAAC;QACtB,KAAK,OAAO,CAAC,QAAQ;YACpB,OAAO,IAAI,CAAC;QACb;YACC,OAAO,KAAK,CAAC;IACf,CAAC;AACF,CAAC;AAED,sDAAsD;AACtD,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,wEAAwE;AACxE,MAAM,OAAO,kBAAkB;IAC9B,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAa;IACtB,SAAS,CAAS;IAElB,YAAY,EAAE,SAAS,EAAE,SAAS,EAAgD;QACjF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QAC5C,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qDAAqD,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,OAAoB;QAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,OAAoB;QAClD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QACnD,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qDAAqD,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEpC,OAAO,IAAI,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;CACD;AAED,yEAAyE;AACzE,EAAE;AACF,gFAAgF;AAChF,+EAA+E;AAC/E,wEAAwE;AACxE,qCAAqC;AACrC,MAAM,OAAO,wBAAwB;IACpC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAa;IACtB,SAAS,CAAS;IAClB,gBAAgB,CAAS,CAAC,yCAAyC;IAEnE,YAAY,EACX,SAAS,EACT,SAAS,EACT,gBAAgB,GAAG,CAAC,GAKpB;QACA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QAC5C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,+DAA+D,OAAO,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,+EAA+E;QACjG,CAAC;QACD,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClE,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,OAAoB;QAC3C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,OAAoB;QAClD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QACnD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,+DAA+D,OAAO,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,2EAA2E;QAC3F,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClE,gBAAgB,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAEpC,OAAO,IAAI,wBAAwB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACjF,CAAC;CACD;AAED,sEAAsE;AACtE,GAAG;AACH,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,kCAAkC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,MAAM,OAAO,oBAAoB;IAChC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAS;IAElB,YAAY,EAAE,SAAS,EAAyB;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS;QACtB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;CACD;AAED,MAAM,OAAO,uBAAuB;IACnC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,YAAY,CAAS;IAErB,YAAY,EACX,SAAS,EACT,SAAS,EACT,YAAY,GACoD;QAChE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS;QACtB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QAEtC,OAAO,IAAI,uBAAuB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5E,CAAC;CACD;AAED,MAAM,OAAO,oBAAoB;IAChC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAS;IAElB,YAAY,EAAE,SAAS,EAAyB;QAC/C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS;QACtB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;CACD;AAED,gFAAgF;AAChF,MAAM,OAAO,uBAAuB;IACnC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,MAAM,CAAa;IAEnB,YAAY,EAAE,MAAM,EAA0B;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS;QACtB,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;CACD;AAED,qFAAqF;AACrF,MAAM,OAAO,2BAA2B;IACvC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,MAAM,CAAa;IAEnB,YAAY,EAAE,MAAM,EAA0B;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS;QACtB,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;CACD;AAED,2FAA2F;AAC3F,MAAM,OAAO,cAAc;IAC1B,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,MAAM,CAAa;IACnB,SAAS,CAAS;IAElB,YAAY,EAAE,MAAM,EAAE,SAAS,EAA6C;QAC3E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS;QACtB,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAS,EAAE,QAAqB;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS;QAC7B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAClD,CAAC;CACD;AAED,iCAAiC;AACjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC","sourcesContent":["import type * as Path from \"../path.ts\";\nimport type { Reader, Writer } from \"../stream.ts\";\nimport * as Message from \"./message.ts\";\nimport * as Namespace from \"./namespace.ts\";\nimport { Parameters } from \"./parameters.ts\";\nimport { type IetfVersion, Version } from \"./version.ts\";\n\n// True for the drafts that use the legacy 0x11 SUBSCRIBE_NAMESPACE message.\n// Draft-18+ uses the renumbered 0x50 message instead.\nfunction isLegacyVersion(version: IetfVersion): boolean {\n\tswitch (version) {\n\t\tcase Version.DRAFT_14:\n\t\tcase Version.DRAFT_15:\n\t\tcase Version.DRAFT_16:\n\t\tcase Version.DRAFT_17:\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\n// SUBSCRIBE_NAMESPACE message (draft-18+, type 0x50).\n//\n// Draft-18 renumbered the message from 0x11 to 0x50 and dropped the Subscribe\n// Options field when it split SUBSCRIBE_TRACKS (0x51) off into its own message\n// type (#1542). Draft-14 through draft-17 use SubscribeNamespaceLegacy.\nexport class SubscribeNamespace {\n\tstatic id = 0x50;\n\n\tnamespace: Path.Valid;\n\trequestId: bigint;\n\n\tconstructor({ namespace, requestId }: { namespace: Path.Valid; requestId: bigint }) {\n\t\tthis.namespace = namespace;\n\t\tthis.requestId = requestId;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (isLegacyVersion(version)) {\n\t\t\tthrow new Error(`SUBSCRIBE_NAMESPACE (0x50) is draft-18+ only, not ${version}`);\n\t\t}\n\t\tawait w.u62(this.requestId);\n\t\tawait Namespace.encode(w, this.namespace);\n\t\tawait new Parameters().encode(w, version);\n\t}\n\n\tasync encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, (wr) => this.#encode(wr, version));\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<SubscribeNamespace> {\n\t\treturn Message.decode(r, (rd) => SubscribeNamespace.#decode(rd, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<SubscribeNamespace> {\n\t\tif (isLegacyVersion(version)) {\n\t\t\tthrow new Error(`SUBSCRIBE_NAMESPACE (0x50) is draft-18+ only, not ${version}`);\n\t\t}\n\t\tconst requestId = await r.u62();\n\t\tconst namespace = await Namespace.decode(r);\n\t\tawait Parameters.decode(r, version);\n\n\t\treturn new SubscribeNamespace({ namespace, requestId });\n\t}\n}\n\n// SUBSCRIBE_NAMESPACE message for draft-14 through draft-17 (type 0x11).\n//\n// In v16 this moves from the control stream to its own bidi stream. Draft-16/17\n// carry a Subscribe Options field (NAMESPACE vs TRACKS); draft-17 additionally\n// prefixes a Required Request ID delta (removed in draft-18 per #1615).\n// Draft-18+ uses SubscribeNamespace.\nexport class SubscribeNamespaceLegacy {\n\tstatic id = 0x11;\n\n\tnamespace: Path.Valid;\n\trequestId: bigint;\n\tsubscribeOptions: number; // v16/v17: default 0x01 (NAMESPACE only)\n\n\tconstructor({\n\t\tnamespace,\n\t\trequestId,\n\t\tsubscribeOptions = 1,\n\t}: {\n\t\tnamespace: Path.Valid;\n\t\trequestId: bigint;\n\t\tsubscribeOptions?: number;\n\t}) {\n\t\tthis.namespace = namespace;\n\t\tthis.requestId = requestId;\n\t\tthis.subscribeOptions = subscribeOptions;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (!isLegacyVersion(version)) {\n\t\t\tthrow new Error(`legacy SUBSCRIBE_NAMESPACE (0x11) is draft-14..17 only, not ${version}`);\n\t\t}\n\t\tawait w.u62(this.requestId);\n\t\tif (version === Version.DRAFT_17) {\n\t\t\tawait w.u62(0n); // required_request_id_delta = 0 (draft-17 only, removed in draft-18 per #1615)\n\t\t}\n\t\tawait Namespace.encode(w, this.namespace);\n\t\tif (version === Version.DRAFT_16 || version === Version.DRAFT_17) {\n\t\t\tawait w.u53(this.subscribeOptions);\n\t\t}\n\t\tawait new Parameters().encode(w, version);\n\t}\n\n\tasync encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, (wr) => this.#encode(wr, version));\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<SubscribeNamespaceLegacy> {\n\t\treturn Message.decode(r, (rd) => SubscribeNamespaceLegacy.#decode(rd, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<SubscribeNamespaceLegacy> {\n\t\tif (!isLegacyVersion(version)) {\n\t\t\tthrow new Error(`legacy SUBSCRIBE_NAMESPACE (0x11) is draft-14..17 only, not ${version}`);\n\t\t}\n\t\tconst requestId = await r.u62();\n\t\tif (version === Version.DRAFT_17) {\n\t\t\tawait r.u62(); // required_request_id_delta (draft-17 only, removed in draft-18 per #1615)\n\t\t}\n\t\tconst namespace = await Namespace.decode(r);\n\t\tlet subscribeOptions = 1;\n\t\tif (version === Version.DRAFT_16 || version === Version.DRAFT_17) {\n\t\t\tsubscribeOptions = await r.u53();\n\t\t}\n\t\tawait Parameters.decode(r, version);\n\n\t\treturn new SubscribeNamespaceLegacy({ namespace, requestId, subscribeOptions });\n\t}\n}\n\n/// SUBSCRIBE_TRACKS message ID (0x51) introduced in draft-18 (#1542).\n///\n/// moq-lite does not implement PUBLISH replication through a CDN, which is the\n/// only thing SUBSCRIBE_TRACKS enables. We never send it and reject it loudly\n/// on receipt rather than silently ignoring, since the peer would otherwise\n/// wait forever for a REQUEST_OK.\nexport const SUBSCRIBE_TRACKS_ID = 0x51;\n\nexport class SubscribeNamespaceOk {\n\tstatic id = 0x12;\n\n\trequestId: bigint;\n\n\tconstructor({ requestId }: { requestId: bigint }) {\n\t\tthis.requestId = requestId;\n\t}\n\n\tasync #encode(w: Writer): Promise<void> {\n\t\tawait w.u62(this.requestId);\n\t}\n\n\tasync encode(w: Writer, _version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceOk> {\n\t\treturn Message.decode(r, SubscribeNamespaceOk.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeNamespaceOk> {\n\t\tconst requestId = await r.u62();\n\t\treturn new SubscribeNamespaceOk({ requestId });\n\t}\n}\n\nexport class SubscribeNamespaceError {\n\tstatic id = 0x13;\n\n\trequestId: bigint;\n\terrorCode: number;\n\treasonPhrase: string;\n\n\tconstructor({\n\t\trequestId,\n\t\terrorCode,\n\t\treasonPhrase,\n\t}: { requestId: bigint; errorCode: number; reasonPhrase: string }) {\n\t\tthis.requestId = requestId;\n\t\tthis.errorCode = errorCode;\n\t\tthis.reasonPhrase = reasonPhrase;\n\t}\n\n\tasync #encode(w: Writer): Promise<void> {\n\t\tawait w.u62(this.requestId);\n\t\tawait w.u62(BigInt(this.errorCode));\n\t\tawait w.string(this.reasonPhrase);\n\t}\n\n\tasync encode(w: Writer, _version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceError> {\n\t\treturn Message.decode(r, SubscribeNamespaceError.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeNamespaceError> {\n\t\tconst requestId = await r.u62();\n\t\tconst errorCode = Number(await r.u62());\n\t\tconst reasonPhrase = await r.string();\n\n\t\treturn new SubscribeNamespaceError({ requestId, errorCode, reasonPhrase });\n\t}\n}\n\nexport class UnsubscribeNamespace {\n\tstatic id = 0x14;\n\n\trequestId: bigint;\n\n\tconstructor({ requestId }: { requestId: bigint }) {\n\t\tthis.requestId = requestId;\n\t}\n\n\tasync #encode(w: Writer): Promise<void> {\n\t\tawait w.u62(this.requestId);\n\t}\n\n\tasync encode(w: Writer, _version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader, _version: IetfVersion): Promise<UnsubscribeNamespace> {\n\t\treturn Message.decode(r, UnsubscribeNamespace.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<UnsubscribeNamespace> {\n\t\tconst requestId = await r.u62();\n\t\treturn new UnsubscribeNamespace({ requestId });\n\t}\n}\n\n/// NAMESPACE message (0x08) — v16 only, sent on SUBSCRIBE_NAMESPACE bidi stream\nexport class SubscribeNamespaceEntry {\n\tstatic id = 0x08;\n\n\tsuffix: Path.Valid;\n\n\tconstructor({ suffix }: { suffix: Path.Valid }) {\n\t\tthis.suffix = suffix;\n\t}\n\n\tasync #encode(w: Writer): Promise<void> {\n\t\tawait Namespace.encode(w, this.suffix);\n\t}\n\n\tasync encode(w: Writer, _version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceEntry> {\n\t\treturn Message.decode(r, SubscribeNamespaceEntry.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeNamespaceEntry> {\n\t\tconst suffix = await Namespace.decode(r);\n\t\treturn new SubscribeNamespaceEntry({ suffix });\n\t}\n}\n\n/// NAMESPACE_DONE message (0x0E) — v16 only, sent on SUBSCRIBE_NAMESPACE bidi stream\nexport class SubscribeNamespaceEntryDone {\n\tstatic id = 0x0e;\n\n\tsuffix: Path.Valid;\n\n\tconstructor({ suffix }: { suffix: Path.Valid }) {\n\t\tthis.suffix = suffix;\n\t}\n\n\tasync #encode(w: Writer): Promise<void> {\n\t\tawait Namespace.encode(w, this.suffix);\n\t}\n\n\tasync encode(w: Writer, _version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceEntryDone> {\n\t\treturn Message.decode(r, SubscribeNamespaceEntryDone.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeNamespaceEntryDone> {\n\t\tconst suffix = await Namespace.decode(r);\n\t\treturn new SubscribeNamespaceEntryDone({ suffix });\n\t}\n}\n\n/// PUBLISH_BLOCKED message (0x0F) — draft-17 only, sent on SUBSCRIBE_NAMESPACE bidi stream\nexport class PublishBlocked {\n\tstatic id = 0x0f;\n\n\tsuffix: Path.Valid;\n\ttrackName: string;\n\n\tconstructor({ suffix, trackName }: { suffix: Path.Valid; trackName: string }) {\n\t\tthis.suffix = suffix;\n\t\tthis.trackName = trackName;\n\t}\n\n\tasync #encode(w: Writer): Promise<void> {\n\t\tawait Namespace.encode(w, this.suffix);\n\t\tawait w.string(this.trackName);\n\t}\n\n\tasync encode(w: Writer, _version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader, _version: IetfVersion): Promise<PublishBlocked> {\n\t\treturn Message.decode(r, PublishBlocked.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<PublishBlocked> {\n\t\tconst suffix = await Namespace.decode(r);\n\t\tconst trackName = await r.string();\n\t\treturn new PublishBlocked({ suffix, trackName });\n\t}\n}\n\n// Backward compatibility aliases\nexport const SubscribeAnnounces = SubscribeNamespace;\nexport const SubscribeAnnouncesOk = SubscribeNamespaceOk;\nexport const SubscribeAnnouncesError = SubscribeNamespaceError;\nexport const UnsubscribeAnnounces = UnsubscribeNamespace;\n"]}
@@ -0,0 +1,53 @@
1
+ import { Announced } from "../announced";
2
+ import { Broadcast } from "../broadcast";
3
+ import * as Path from "../path";
4
+ import type { Reader, Stream } from "../stream";
5
+ import type { Session } from "./adapter";
6
+ import { type Group as GroupMessage } from "./object";
7
+ import { type Publish } from "./publish";
8
+ import { type PublishNamespace } from "./publish_namespace";
9
+ /**
10
+ * Handles subscribing to broadcasts using moq-transport protocol.
11
+ * Uses the stream-per-request pattern (real bidi streams for v17, virtual for v14-v16).
12
+ *
13
+ * @internal
14
+ */
15
+ export declare class Subscriber {
16
+ #private;
17
+ /**
18
+ * Creates a new Subscriber instance.
19
+ * @param session - The session abstraction for bidi streams and request IDs
20
+ *
21
+ * @internal
22
+ */
23
+ constructor(session: Session);
24
+ /**
25
+ * Gets an announced reader for the specified prefix.
26
+ */
27
+ announced(prefix?: Path.Valid): Announced;
28
+ /**
29
+ * Consumes a broadcast from the connection.
30
+ */
31
+ consume(path: Path.Valid): Broadcast;
32
+ /**
33
+ * Handles an incoming PUBLISH_NAMESPACE on a bidi stream.
34
+ * Tracks announced broadcasts and notifies consumers.
35
+ *
36
+ * @internal
37
+ */
38
+ runPublishNamespace(msg: PublishNamespace, stream: Stream): Promise<void>;
39
+ /**
40
+ * Handles an incoming PUBLISH on a bidi stream.
41
+ * We don't support reverse publish, so send error.
42
+ *
43
+ * @internal
44
+ */
45
+ runPublish(msg: Publish, stream: Stream): Promise<void>;
46
+ /**
47
+ * Handles an ObjectStream message (group + frames on uni stream).
48
+ *
49
+ * @internal
50
+ */
51
+ handleGroup(group: GroupMessage, stream: Reader): Promise<void>;
52
+ }
53
+ //# sourceMappingURL=subscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../src/ietf/subscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAqB,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAS,KAAK,KAAK,IAAI,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,KAAK,OAAO,EAAgB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,KAAK,gBAAgB,EAA6C,MAAM,wBAAwB,CAAC;AAc1G;;;;;GAKG;AACH,qBAAa,UAAU;;IAYtB;;;;;OAKG;IACH,YAAY,OAAO,EAAE,OAAO,EAE3B;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,aAAe,GAAG,SAAS,CAc1C;IA8GD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAYnC;IAuGD;;;;;OAKG;IACG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,iBAwE9D;IAED;;;;;OAKG;IACG,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAqB5C;IAED;;;;OAIG;IACG,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAiCpD;CACD"}