@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,192 @@
1
+ /* @ts-self-types="./publish.d.ts" */
2
+ import * as Message from "./message.js";
3
+ import * as Namespace from "./namespace.js";
4
+ import { Parameters } from "./parameters.js";
5
+ import * as Properties from "./properties.js";
6
+ import { Version } from "./version.js";
7
+ // PUBLISH messages are new in draft-14
8
+ export class Publish {
9
+ static id = 0x1d;
10
+ requestId;
11
+ trackNamespace;
12
+ trackName;
13
+ trackAlias;
14
+ groupOrder;
15
+ contentExists;
16
+ largest;
17
+ forward;
18
+ constructor({ requestId, trackNamespace, trackName, trackAlias, groupOrder, contentExists, largest, forward, }) {
19
+ this.requestId = requestId;
20
+ this.trackNamespace = trackNamespace;
21
+ this.trackName = trackName;
22
+ this.trackAlias = trackAlias;
23
+ this.groupOrder = groupOrder;
24
+ this.contentExists = contentExists;
25
+ this.largest = largest;
26
+ this.forward = forward;
27
+ }
28
+ async #encode(w, version) {
29
+ await w.u62(this.requestId);
30
+ if (version === Version.DRAFT_17) {
31
+ await w.u62(0n); // required_request_id_delta = 0 (Draft17 only)
32
+ }
33
+ await Namespace.encode(w, this.trackNamespace);
34
+ await w.string(this.trackName);
35
+ await w.u62(this.trackAlias);
36
+ if (version === Version.DRAFT_14) {
37
+ await w.u8(this.groupOrder);
38
+ await w.bool(this.contentExists);
39
+ if (this.contentExists !== !!this.largest) {
40
+ throw new Error("contentExists and largest must both be true or false");
41
+ }
42
+ if (this.largest) {
43
+ await w.u62(this.largest.groupId);
44
+ await w.u62(this.largest.objectId);
45
+ }
46
+ await w.bool(this.forward);
47
+ await w.u53(0); // size of parameters
48
+ }
49
+ else {
50
+ // v15+: fields in parameters
51
+ if (this.contentExists !== !!this.largest) {
52
+ throw new Error("contentExists and largest must both be true or false");
53
+ }
54
+ const params = new Parameters();
55
+ params.groupOrder = this.groupOrder;
56
+ params.forward = this.forward;
57
+ if (this.largest) {
58
+ params.largest = this.largest;
59
+ }
60
+ await params.encode(w, version);
61
+ }
62
+ }
63
+ async encode(w, version) {
64
+ return Message.encode(w, (mw) => this.#encode(mw, version));
65
+ }
66
+ static async decode(r, version) {
67
+ return Message.decode(r, (mr) => Publish.#decode(mr, version));
68
+ }
69
+ static async #decode(r, version) {
70
+ const requestId = await r.u62();
71
+ if (version === Version.DRAFT_17) {
72
+ await r.u62(); // required_request_id_delta (Draft17 only)
73
+ }
74
+ const trackNamespace = await Namespace.decode(r);
75
+ const trackName = await r.string();
76
+ const trackAlias = await r.u62();
77
+ if (version === Version.DRAFT_14) {
78
+ const groupOrder = await r.u8();
79
+ const contentExists = await r.bool();
80
+ const largest = contentExists ? { groupId: await r.u62(), objectId: await r.u62() } : undefined;
81
+ const forward = await r.bool();
82
+ await Parameters.decode(r, version); // ignore parameters
83
+ return new Publish({
84
+ requestId,
85
+ trackNamespace,
86
+ trackName,
87
+ trackAlias,
88
+ groupOrder,
89
+ contentExists,
90
+ largest,
91
+ forward,
92
+ });
93
+ }
94
+ // v15+: parameters followed by Track Properties (draft-17+)
95
+ const params = await Parameters.decode(r, version);
96
+ await Properties.skip(r, version);
97
+ const groupOrder = params.groupOrder ?? 0x02;
98
+ const forward = params.forward ?? true;
99
+ const largest = params.largest;
100
+ return new Publish({
101
+ requestId,
102
+ trackNamespace,
103
+ trackName,
104
+ trackAlias,
105
+ groupOrder,
106
+ contentExists: !!largest,
107
+ largest,
108
+ forward,
109
+ });
110
+ }
111
+ }
112
+ export class PublishOk {
113
+ static id = 0x1e;
114
+ async #encode(_w) {
115
+ throw new Error("PUBLISH_OK messages are not supported");
116
+ }
117
+ async encode(w, _version) {
118
+ return Message.encode(w, this.#encode.bind(this));
119
+ }
120
+ static async decode(r, _version) {
121
+ return Message.decode(r, PublishOk.#decode);
122
+ }
123
+ static async #decode(_r) {
124
+ throw new Error("PUBLISH_OK messages are not supported");
125
+ }
126
+ }
127
+ export class PublishError {
128
+ static id = 0x1f;
129
+ requestId;
130
+ errorCode;
131
+ reasonPhrase;
132
+ constructor({ requestId, errorCode, reasonPhrase, }) {
133
+ this.requestId = requestId;
134
+ this.errorCode = errorCode;
135
+ this.reasonPhrase = reasonPhrase;
136
+ }
137
+ async #encode(w) {
138
+ await w.u62(this.requestId);
139
+ await w.u62(BigInt(this.errorCode));
140
+ await w.string(this.reasonPhrase);
141
+ }
142
+ async encode(w, _version) {
143
+ return Message.encode(w, this.#encode.bind(this));
144
+ }
145
+ static async decode(r, _version) {
146
+ return Message.decode(r, PublishError.#decode);
147
+ }
148
+ static async #decode(r) {
149
+ const requestId = await r.u62();
150
+ const errorCode = Number(await r.u62());
151
+ const reasonPhrase = await r.string();
152
+ return new PublishError({ requestId, errorCode, reasonPhrase });
153
+ }
154
+ }
155
+ // In draft-14, this message is renamed from SUBSCRIBE_DONE to PUBLISH_DONE
156
+ export class PublishDone {
157
+ static id = 0x0b;
158
+ requestId;
159
+ statusCode;
160
+ reasonPhrase;
161
+ constructor({ requestId, statusCode, reasonPhrase, }) {
162
+ this.requestId = requestId;
163
+ this.statusCode = statusCode;
164
+ this.reasonPhrase = reasonPhrase;
165
+ }
166
+ async #encode(w, version) {
167
+ if (version === Version.DRAFT_14 || version === Version.DRAFT_15 || version === Version.DRAFT_16) {
168
+ if (this.requestId === undefined)
169
+ throw new Error("requestId required for draft14-16");
170
+ await w.u62(this.requestId);
171
+ }
172
+ await w.u62(BigInt(this.statusCode));
173
+ await w.u62(BigInt(0)); // stream_count = 0 (unsupported)
174
+ await w.string(this.reasonPhrase);
175
+ }
176
+ async encode(w, version) {
177
+ return Message.encode(w, (mw) => this.#encode(mw, version));
178
+ }
179
+ static async decode(r, version) {
180
+ return Message.decode(r, (mr) => PublishDone.#decode(mr, version));
181
+ }
182
+ static async #decode(r, version) {
183
+ const requestId = version === Version.DRAFT_14 || version === Version.DRAFT_15 || version === Version.DRAFT_16
184
+ ? await r.u62()
185
+ : undefined;
186
+ const statusCode = Number(await r.u62());
187
+ await r.u62(); // ignore stream_count
188
+ const reasonPhrase = await r.string();
189
+ return new PublishDone({ requestId, statusCode, reasonPhrase });
190
+ }
191
+ }
192
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/ietf/publish.ts"],"names":[],"mappings":"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","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 * as Properties from \"./properties.ts\";\nimport { type IetfVersion, Version } from \"./version.ts\";\n\n// PUBLISH messages are new in draft-14\n\nexport class Publish {\n\tstatic id = 0x1d;\n\n\trequestId: bigint;\n\ttrackNamespace: Path.Valid;\n\ttrackName: string;\n\ttrackAlias: bigint;\n\tgroupOrder: number;\n\tcontentExists: boolean;\n\tlargest: { groupId: bigint; objectId: bigint } | undefined;\n\tforward: boolean;\n\n\tconstructor({\n\t\trequestId,\n\t\ttrackNamespace,\n\t\ttrackName,\n\t\ttrackAlias,\n\t\tgroupOrder,\n\t\tcontentExists,\n\t\tlargest,\n\t\tforward,\n\t}: {\n\t\trequestId: bigint;\n\t\ttrackNamespace: Path.Valid;\n\t\ttrackName: string;\n\t\ttrackAlias: bigint;\n\t\tgroupOrder: number;\n\t\tcontentExists: boolean;\n\t\tlargest: { groupId: bigint; objectId: bigint } | undefined;\n\t\tforward: boolean;\n\t}) {\n\t\tthis.requestId = requestId;\n\t\tthis.trackNamespace = trackNamespace;\n\t\tthis.trackName = trackName;\n\t\tthis.trackAlias = trackAlias;\n\t\tthis.groupOrder = groupOrder;\n\t\tthis.contentExists = contentExists;\n\t\tthis.largest = largest;\n\t\tthis.forward = forward;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\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 (Draft17 only)\n\t\t}\n\t\tawait Namespace.encode(w, this.trackNamespace);\n\t\tawait w.string(this.trackName);\n\t\tawait w.u62(this.trackAlias);\n\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tawait w.u8(this.groupOrder);\n\t\t\tawait w.bool(this.contentExists);\n\t\t\tif (this.contentExists !== !!this.largest) {\n\t\t\t\tthrow new Error(\"contentExists and largest must both be true or false\");\n\t\t\t}\n\t\t\tif (this.largest) {\n\t\t\t\tawait w.u62(this.largest.groupId);\n\t\t\t\tawait w.u62(this.largest.objectId);\n\t\t\t}\n\t\t\tawait w.bool(this.forward);\n\t\t\tawait w.u53(0); // size of parameters\n\t\t} else {\n\t\t\t// v15+: fields in parameters\n\t\t\tif (this.contentExists !== !!this.largest) {\n\t\t\t\tthrow new Error(\"contentExists and largest must both be true or false\");\n\t\t\t}\n\t\t\tconst params = new Parameters();\n\t\t\tparams.groupOrder = this.groupOrder;\n\t\t\tparams.forward = this.forward;\n\t\t\tif (this.largest) {\n\t\t\t\tparams.largest = this.largest;\n\t\t\t}\n\t\t\tawait params.encode(w, version);\n\t\t}\n\t}\n\n\tasync encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\treturn Message.encode(w, (mw) => this.#encode(mw, version));\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<Publish> {\n\t\treturn Message.decode(r, (mr) => Publish.#decode(mr, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<Publish> {\n\t\tconst requestId = await r.u62();\n\t\tif (version === Version.DRAFT_17) {\n\t\t\tawait r.u62(); // required_request_id_delta (Draft17 only)\n\t\t}\n\t\tconst trackNamespace = await Namespace.decode(r);\n\t\tconst trackName = await r.string();\n\t\tconst trackAlias = await r.u62();\n\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tconst groupOrder = await r.u8();\n\t\t\tconst contentExists = await r.bool();\n\t\t\tconst largest = contentExists ? { groupId: await r.u62(), objectId: await r.u62() } : undefined;\n\t\t\tconst forward = await r.bool();\n\t\t\tawait Parameters.decode(r, version); // ignore parameters\n\t\t\treturn new Publish({\n\t\t\t\trequestId,\n\t\t\t\ttrackNamespace,\n\t\t\t\ttrackName,\n\t\t\t\ttrackAlias,\n\t\t\t\tgroupOrder,\n\t\t\t\tcontentExists,\n\t\t\t\tlargest,\n\t\t\t\tforward,\n\t\t\t});\n\t\t}\n\t\t// v15+: parameters followed by Track Properties (draft-17+)\n\t\tconst params = await Parameters.decode(r, version);\n\t\tawait Properties.skip(r, version);\n\t\tconst groupOrder = params.groupOrder ?? 0x02;\n\t\tconst forward = params.forward ?? true;\n\t\tconst largest = params.largest;\n\t\treturn new Publish({\n\t\t\trequestId,\n\t\t\ttrackNamespace,\n\t\t\ttrackName,\n\t\t\ttrackAlias,\n\t\t\tgroupOrder,\n\t\t\tcontentExists: !!largest,\n\t\t\tlargest,\n\t\t\tforward,\n\t\t});\n\t}\n}\n\nexport class PublishOk {\n\tstatic id = 0x1e;\n\n\tasync #encode(_w: Writer): Promise<void> {\n\t\tthrow new Error(\"PUBLISH_OK messages are not supported\");\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<PublishOk> {\n\t\treturn Message.decode(r, PublishOk.#decode);\n\t}\n\n\tstatic async #decode(_r: Reader): Promise<PublishOk> {\n\t\tthrow new Error(\"PUBLISH_OK messages are not supported\");\n\t}\n}\n\nexport class PublishError {\n\tstatic id = 0x1f;\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<PublishError> {\n\t\treturn Message.decode(r, PublishError.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<PublishError> {\n\t\tconst requestId = await r.u62();\n\t\tconst errorCode = Number(await r.u62());\n\t\tconst reasonPhrase = await r.string();\n\t\treturn new PublishError({ requestId, errorCode, reasonPhrase });\n\t}\n}\n\n// In draft-14, this message is renamed from SUBSCRIBE_DONE to PUBLISH_DONE\nexport class PublishDone {\n\tstatic readonly id = 0x0b;\n\n\trequestId: bigint | undefined;\n\tstatusCode: number;\n\treasonPhrase: string;\n\n\tconstructor({\n\t\trequestId,\n\t\tstatusCode,\n\t\treasonPhrase,\n\t}: { requestId?: bigint; statusCode: number; reasonPhrase: string }) {\n\t\tthis.requestId = requestId;\n\t\tthis.statusCode = statusCode;\n\t\tthis.reasonPhrase = reasonPhrase;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (version === Version.DRAFT_14 || version === Version.DRAFT_15 || version === Version.DRAFT_16) {\n\t\t\tif (this.requestId === undefined) throw new Error(\"requestId required for draft14-16\");\n\t\t\tawait w.u62(this.requestId);\n\t\t}\n\t\tawait w.u62(BigInt(this.statusCode));\n\t\tawait w.u62(BigInt(0)); // stream_count = 0 (unsupported)\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, (mw) => this.#encode(mw, version));\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<PublishDone> {\n\t\treturn Message.decode(r, (mr) => PublishDone.#decode(mr, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<PublishDone> {\n\t\tconst requestId =\n\t\t\tversion === Version.DRAFT_14 || version === Version.DRAFT_15 || version === Version.DRAFT_16\n\t\t\t\t? await r.u62()\n\t\t\t\t: undefined;\n\t\tconst statusCode = Number(await r.u62());\n\t\tawait r.u62(); // ignore stream_count\n\t\tconst reasonPhrase = await r.string();\n\n\t\treturn new PublishDone({ requestId, statusCode, reasonPhrase });\n\t}\n}\n"]}
@@ -0,0 +1,68 @@
1
+ import type * as Path from "../path";
2
+ import type { Reader, Writer } from "../stream";
3
+ import { type IetfVersion } from "./version";
4
+ export declare class PublishNamespace {
5
+ #private;
6
+ static id: number;
7
+ requestId: bigint;
8
+ trackNamespace: Path.Valid;
9
+ constructor({ requestId, trackNamespace }: {
10
+ requestId: bigint;
11
+ trackNamespace: Path.Valid;
12
+ });
13
+ encode(w: Writer, version: IetfVersion): Promise<void>;
14
+ static decode(r: Reader, version: IetfVersion): Promise<PublishNamespace>;
15
+ }
16
+ export declare class PublishNamespaceOk {
17
+ #private;
18
+ static id: number;
19
+ requestId: bigint;
20
+ constructor({ requestId }: {
21
+ requestId: bigint;
22
+ });
23
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
24
+ static decode(r: Reader, _version: IetfVersion): Promise<PublishNamespaceOk>;
25
+ }
26
+ export declare class PublishNamespaceError {
27
+ #private;
28
+ static id: number;
29
+ requestId: bigint;
30
+ errorCode: number;
31
+ reasonPhrase: string;
32
+ constructor({ requestId, errorCode, reasonPhrase, }: {
33
+ requestId: bigint;
34
+ errorCode: number;
35
+ reasonPhrase: string;
36
+ });
37
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
38
+ static decode(r: Reader, _version: IetfVersion): Promise<PublishNamespaceError>;
39
+ }
40
+ export declare class PublishNamespaceCancel {
41
+ #private;
42
+ static id: number;
43
+ trackNamespace: Path.Valid;
44
+ requestId: bigint;
45
+ errorCode: number;
46
+ reasonPhrase: string;
47
+ constructor({ trackNamespace, errorCode, reasonPhrase, requestId, }?: {
48
+ trackNamespace?: Path.Valid;
49
+ errorCode?: number;
50
+ reasonPhrase?: string;
51
+ requestId?: bigint;
52
+ });
53
+ encode(w: Writer, version: IetfVersion): Promise<void>;
54
+ static decode(r: Reader, version: IetfVersion): Promise<PublishNamespaceCancel>;
55
+ }
56
+ export declare class PublishNamespaceDone {
57
+ #private;
58
+ static readonly id = 9;
59
+ trackNamespace: Path.Valid;
60
+ requestId: bigint;
61
+ constructor({ trackNamespace, requestId, }?: {
62
+ trackNamespace?: Path.Valid;
63
+ requestId?: bigint;
64
+ });
65
+ encode(w: Writer, version: IetfVersion): Promise<void>;
66
+ static decode(r: Reader, version: IetfVersion): Promise<PublishNamespaceDone>;
67
+ }
68
+ //# sourceMappingURL=publish_namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish_namespace.d.ts","sourceRoot":"","sources":["../../src/ietf/publish_namespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /* @ts-self-types="./publish_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
+ // In draft-14, ANNOUNCE is renamed to PUBLISH_NAMESPACE
7
+ export class PublishNamespace {
8
+ static id = 0x06;
9
+ requestId;
10
+ trackNamespace;
11
+ constructor({ requestId, trackNamespace }) {
12
+ this.requestId = requestId;
13
+ this.trackNamespace = trackNamespace;
14
+ }
15
+ async #encode(w, version) {
16
+ await w.u62(this.requestId);
17
+ if (version === Version.DRAFT_17) {
18
+ await w.u62(0n); // required_request_id_delta: only 0 supported until stream-per-request
19
+ }
20
+ await Namespace.encode(w, this.trackNamespace);
21
+ await new Parameters().encode(w, version);
22
+ }
23
+ async encode(w, version) {
24
+ return Message.encode(w, (wr) => this.#encode(wr, version));
25
+ }
26
+ static async decode(r, version) {
27
+ return Message.decode(r, (rd) => PublishNamespace.#decode(rd, version));
28
+ }
29
+ static async #decode(r, version) {
30
+ const requestId = await r.u62();
31
+ if (version === Version.DRAFT_17) {
32
+ await r.u62(); // required_request_id_delta
33
+ }
34
+ const trackNamespace = await Namespace.decode(r);
35
+ await Parameters.decode(r, version); // ignore parameters
36
+ return new PublishNamespace({ requestId, trackNamespace });
37
+ }
38
+ }
39
+ export class PublishNamespaceOk {
40
+ static id = 0x07;
41
+ requestId;
42
+ constructor({ requestId }) {
43
+ this.requestId = requestId;
44
+ }
45
+ async #encode(w) {
46
+ await w.u62(this.requestId);
47
+ }
48
+ async encode(w, _version) {
49
+ return Message.encode(w, this.#encode.bind(this));
50
+ }
51
+ static async decode(r, _version) {
52
+ return Message.decode(r, PublishNamespaceOk.#decode);
53
+ }
54
+ static async #decode(r) {
55
+ const requestId = await r.u62();
56
+ return new PublishNamespaceOk({ requestId });
57
+ }
58
+ }
59
+ export class PublishNamespaceError {
60
+ static id = 0x08;
61
+ requestId;
62
+ errorCode;
63
+ reasonPhrase;
64
+ constructor({ requestId, errorCode, reasonPhrase, }) {
65
+ this.requestId = requestId;
66
+ this.errorCode = errorCode;
67
+ this.reasonPhrase = reasonPhrase;
68
+ }
69
+ async #encode(w) {
70
+ await w.u62(this.requestId);
71
+ await w.u62(BigInt(this.errorCode));
72
+ await w.string(this.reasonPhrase);
73
+ }
74
+ async encode(w, _version) {
75
+ return Message.encode(w, this.#encode.bind(this));
76
+ }
77
+ static async decode(r, _version) {
78
+ return Message.decode(r, PublishNamespaceError.#decode);
79
+ }
80
+ static async #decode(r) {
81
+ const requestId = await r.u62();
82
+ const errorCode = Number(await r.u62());
83
+ const reasonPhrase = await r.string();
84
+ return new PublishNamespaceError({ requestId, errorCode, reasonPhrase });
85
+ }
86
+ }
87
+ // Removed in d17
88
+ export class PublishNamespaceCancel {
89
+ static id = 0x0c;
90
+ trackNamespace;
91
+ requestId; // v16: uses request_id instead of track_namespace
92
+ errorCode;
93
+ reasonPhrase;
94
+ constructor({ trackNamespace = "", errorCode = 0, reasonPhrase = "", requestId = 0n, } = {}) {
95
+ this.trackNamespace = trackNamespace;
96
+ this.requestId = requestId;
97
+ this.errorCode = errorCode;
98
+ this.reasonPhrase = reasonPhrase;
99
+ }
100
+ async #encode(w, version) {
101
+ if (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {
102
+ throw new Error("PublishNamespaceCancel removed in draft-17+");
103
+ }
104
+ if (version === Version.DRAFT_16) {
105
+ await w.u62(this.requestId);
106
+ }
107
+ else {
108
+ await Namespace.encode(w, this.trackNamespace);
109
+ }
110
+ await w.u62(BigInt(this.errorCode));
111
+ await w.string(this.reasonPhrase);
112
+ }
113
+ async encode(w, version) {
114
+ return Message.encode(w, (wr) => this.#encode(wr, version));
115
+ }
116
+ static async decode(r, version) {
117
+ return Message.decode(r, (rd) => PublishNamespaceCancel.#decode(rd, version));
118
+ }
119
+ static async #decode(r, version) {
120
+ if (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {
121
+ throw new Error("PublishNamespaceCancel removed in draft-17+");
122
+ }
123
+ let trackNamespace = "";
124
+ let requestId = 0n;
125
+ if (version === Version.DRAFT_16) {
126
+ requestId = await r.u62();
127
+ }
128
+ else {
129
+ trackNamespace = await Namespace.decode(r);
130
+ }
131
+ const errorCode = Number(await r.u62());
132
+ const reasonPhrase = await r.string();
133
+ return new PublishNamespaceCancel({ trackNamespace, errorCode, reasonPhrase, requestId });
134
+ }
135
+ }
136
+ // In draft-14, UNANNOUNCE is renamed to PUBLISH_NAMESPACE_DONE
137
+ // In draft-16, uses request_id instead of track_namespace
138
+ // Removed in d17
139
+ export class PublishNamespaceDone {
140
+ static id = 0x09;
141
+ trackNamespace;
142
+ requestId; // v16: uses request_id instead of track_namespace
143
+ constructor({ trackNamespace = "", requestId = 0n, } = {}) {
144
+ this.trackNamespace = trackNamespace;
145
+ this.requestId = requestId;
146
+ }
147
+ async #encode(w, version) {
148
+ if (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {
149
+ throw new Error("PublishNamespaceDone removed in draft-17+");
150
+ }
151
+ if (version === Version.DRAFT_16) {
152
+ await w.u62(this.requestId);
153
+ }
154
+ else {
155
+ await Namespace.encode(w, this.trackNamespace);
156
+ }
157
+ }
158
+ async encode(w, version) {
159
+ return Message.encode(w, (wr) => this.#encode(wr, version));
160
+ }
161
+ static async decode(r, version) {
162
+ return Message.decode(r, (rd) => PublishNamespaceDone.#decode(rd, version));
163
+ }
164
+ static async #decode(r, version) {
165
+ if (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {
166
+ throw new Error("PublishNamespaceDone removed in draft-17+");
167
+ }
168
+ if (version === Version.DRAFT_16) {
169
+ const requestId = await r.u62();
170
+ return new PublishNamespaceDone({ requestId });
171
+ }
172
+ const trackNamespace = await Namespace.decode(r);
173
+ return new PublishNamespaceDone({ trackNamespace });
174
+ }
175
+ }
176
+ //# sourceMappingURL=publish_namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish_namespace.js","sourceRoot":"","sources":["../../src/ietf/publish_namespace.ts"],"names":[],"mappings":"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","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// In draft-14, ANNOUNCE is renamed to PUBLISH_NAMESPACE\nexport class PublishNamespace {\n\tstatic id = 0x06;\n\n\trequestId: bigint;\n\ttrackNamespace: Path.Valid;\n\n\tconstructor({ requestId, trackNamespace }: { requestId: bigint; trackNamespace: Path.Valid }) {\n\t\tthis.requestId = requestId;\n\t\tthis.trackNamespace = trackNamespace;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\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: only 0 supported until stream-per-request\n\t\t}\n\t\tawait Namespace.encode(w, this.trackNamespace);\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<PublishNamespace> {\n\t\treturn Message.decode(r, (rd) => PublishNamespace.#decode(rd, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<PublishNamespace> {\n\t\tconst requestId = await r.u62();\n\t\tif (version === Version.DRAFT_17) {\n\t\t\tawait r.u62(); // required_request_id_delta\n\t\t}\n\t\tconst trackNamespace = await Namespace.decode(r);\n\t\tawait Parameters.decode(r, version); // ignore parameters\n\t\treturn new PublishNamespace({ requestId, trackNamespace });\n\t}\n}\n\nexport class PublishNamespaceOk {\n\tstatic id = 0x07;\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<PublishNamespaceOk> {\n\t\treturn Message.decode(r, PublishNamespaceOk.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<PublishNamespaceOk> {\n\t\tconst requestId = await r.u62();\n\t\treturn new PublishNamespaceOk({ requestId });\n\t}\n}\n\nexport class PublishNamespaceError {\n\tstatic id = 0x08;\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<PublishNamespaceError> {\n\t\treturn Message.decode(r, PublishNamespaceError.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<PublishNamespaceError> {\n\t\tconst requestId = await r.u62();\n\t\tconst errorCode = Number(await r.u62());\n\t\tconst reasonPhrase = await r.string();\n\t\treturn new PublishNamespaceError({ requestId, errorCode, reasonPhrase });\n\t}\n}\n\n// Removed in d17\nexport class PublishNamespaceCancel {\n\tstatic id = 0x0c;\n\n\ttrackNamespace: Path.Valid;\n\trequestId: bigint; // v16: uses request_id instead of track_namespace\n\terrorCode: number;\n\treasonPhrase: string;\n\n\tconstructor({\n\t\ttrackNamespace = \"\" as Path.Valid,\n\t\terrorCode = 0,\n\t\treasonPhrase = \"\",\n\t\trequestId = 0n,\n\t}: {\n\t\ttrackNamespace?: Path.Valid;\n\t\terrorCode?: number;\n\t\treasonPhrase?: string;\n\t\trequestId?: bigint;\n\t} = {}) {\n\t\tthis.trackNamespace = trackNamespace;\n\t\tthis.requestId = requestId;\n\t\tthis.errorCode = errorCode;\n\t\tthis.reasonPhrase = reasonPhrase;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {\n\t\t\tthrow new Error(\"PublishNamespaceCancel removed in draft-17+\");\n\t\t}\n\t\tif (version === Version.DRAFT_16) {\n\t\t\tawait w.u62(this.requestId);\n\t\t} else {\n\t\t\tawait Namespace.encode(w, this.trackNamespace);\n\t\t}\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, (wr) => this.#encode(wr, version));\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<PublishNamespaceCancel> {\n\t\treturn Message.decode(r, (rd) => PublishNamespaceCancel.#decode(rd, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<PublishNamespaceCancel> {\n\t\tif (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {\n\t\t\tthrow new Error(\"PublishNamespaceCancel removed in draft-17+\");\n\t\t}\n\t\tlet trackNamespace = \"\" as Path.Valid;\n\t\tlet requestId = 0n;\n\t\tif (version === Version.DRAFT_16) {\n\t\t\trequestId = await r.u62();\n\t\t} else {\n\t\t\ttrackNamespace = await Namespace.decode(r);\n\t\t}\n\t\tconst errorCode = Number(await r.u62());\n\t\tconst reasonPhrase = await r.string();\n\t\treturn new PublishNamespaceCancel({ trackNamespace, errorCode, reasonPhrase, requestId });\n\t}\n}\n\n// In draft-14, UNANNOUNCE is renamed to PUBLISH_NAMESPACE_DONE\n// In draft-16, uses request_id instead of track_namespace\n// Removed in d17\nexport class PublishNamespaceDone {\n\tstatic readonly id = 0x09;\n\n\ttrackNamespace: Path.Valid;\n\trequestId: bigint; // v16: uses request_id instead of track_namespace\n\n\tconstructor({\n\t\ttrackNamespace = \"\" as Path.Valid,\n\t\trequestId = 0n,\n\t}: {\n\t\ttrackNamespace?: Path.Valid;\n\t\trequestId?: bigint;\n\t} = {}) {\n\t\tthis.trackNamespace = trackNamespace;\n\t\tthis.requestId = requestId;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {\n\t\t\tthrow new Error(\"PublishNamespaceDone removed in draft-17+\");\n\t\t}\n\t\tif (version === Version.DRAFT_16) {\n\t\t\tawait w.u62(this.requestId);\n\t\t} else {\n\t\t\tawait Namespace.encode(w, this.trackNamespace);\n\t\t}\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<PublishNamespaceDone> {\n\t\treturn Message.decode(r, (rd) => PublishNamespaceDone.#decode(rd, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<PublishNamespaceDone> {\n\t\tif (version !== Version.DRAFT_14 && version !== Version.DRAFT_15 && version !== Version.DRAFT_16) {\n\t\t\tthrow new Error(\"PublishNamespaceDone removed in draft-17+\");\n\t\t}\n\t\tif (version === Version.DRAFT_16) {\n\t\t\tconst requestId = await r.u62();\n\t\t\treturn new PublishNamespaceDone({ requestId });\n\t\t}\n\t\tconst trackNamespace = await Namespace.decode(r);\n\t\treturn new PublishNamespaceDone({ trackNamespace });\n\t}\n}\n"]}
@@ -0,0 +1,50 @@
1
+ import type { Broadcast } from "../broadcast";
2
+ import * as Path from "../path";
3
+ import { type Stream } from "../stream";
4
+ import type { Session } from "./adapter";
5
+ import { type Subscribe } from "./subscribe";
6
+ import { type SubscribeNamespace } from "./subscribe_namespace";
7
+ import { type TrackStatusRequest } from "./track";
8
+ /**
9
+ * Handles publishing broadcasts using moq-transport protocol.
10
+ * Uses the stream-per-request pattern (real bidi streams for v17, virtual for v14-v16).
11
+ *
12
+ * @internal
13
+ */
14
+ export declare class Publisher {
15
+ #private;
16
+ /**
17
+ * Creates a new Publisher instance.
18
+ * @param quic - The WebTransport session (for uni streams)
19
+ * @param session - The session abstraction for bidi streams and request IDs
20
+ *
21
+ * @internal
22
+ */
23
+ constructor(quic: WebTransport, session: Session);
24
+ /**
25
+ * Publishes a broadcast with any associated tracks.
26
+ * Opens a bidi stream to send PublishNamespace and waits for response.
27
+ */
28
+ publish(path: Path.Valid, broadcast: Broadcast): void;
29
+ /**
30
+ * Handles an incoming SUBSCRIBE request on a bidi stream.
31
+ * Owns the full lifecycle: sends response, serves track data, waits for close.
32
+ *
33
+ * @internal
34
+ */
35
+ runSubscribe(msg: Subscribe, stream: Stream): Promise<void>;
36
+ /**
37
+ * Handles an incoming SUBSCRIBE_NAMESPACE on a bidi stream.
38
+ * Sends RequestOk, then streams Namespace/NamespaceDone entries.
39
+ *
40
+ * @internal
41
+ */
42
+ runSubscribeNamespace(msg: SubscribeNamespace, stream: Stream): Promise<void>;
43
+ /**
44
+ * Handles an incoming TRACK_STATUS_REQUEST on a bidi stream.
45
+ *
46
+ * @internal
47
+ */
48
+ runTrackStatusRequest(msg: TrackStatusRequest, stream: Stream): Promise<void>;
49
+ }
50
+ //# sourceMappingURL=publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../src/ietf/publisher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,MAAM,EAAU,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAK5C,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EACN,KAAK,kBAAkB,EAIvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGlE;;;;;GAKG;AACH,qBAAa,SAAS;;IAUrB;;;;;;OAMG;IACH,YAAY,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAG/C;IAED;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,QAI7C;IA6DD;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,iBA+EhD;IA2CD;;;;;OAKG;IACG,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,iBA2DlE;IAED;;;;OAIG;IACG,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,iBAuBlE;CAaD"}