@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
package/ietf/setup.js ADDED
@@ -0,0 +1,129 @@
1
+ /* @ts-self-types="./setup.d.ts" */
2
+ import * as Message from "./message.js";
3
+ import { SetupOptions } from "./parameters.js";
4
+ import { Version } from "./version.js";
5
+ // Draft-17 unified SETUP message (0x2F00)
6
+ export class Setup {
7
+ static id = 0x2f00;
8
+ parameters;
9
+ constructor({ parameters = new SetupOptions() } = {}) {
10
+ this.parameters = parameters;
11
+ }
12
+ async #encode(w, version) {
13
+ await this.parameters.encode(w, version);
14
+ }
15
+ async encode(w, version) {
16
+ return Message.encode(w, (mw) => this.#encode(mw, version));
17
+ }
18
+ static async #decode(r, version) {
19
+ const parameters = await SetupOptions.decode(r, version);
20
+ return new Setup({ parameters });
21
+ }
22
+ static async decode(r, version) {
23
+ return Message.decode(r, (mr) => Setup.#decode(mr, version));
24
+ }
25
+ }
26
+ const MAX_VERSIONS = 128;
27
+ export class ClientSetup {
28
+ static id = 0x20;
29
+ versions;
30
+ parameters;
31
+ constructor({ versions, parameters = new SetupOptions() }) {
32
+ this.versions = versions;
33
+ this.parameters = parameters;
34
+ }
35
+ async #encode(w, version) {
36
+ if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {
37
+ // Draft15+: no versions list, just parameters
38
+ await this.parameters.encode(w, version);
39
+ }
40
+ else if (version === Version.DRAFT_14) {
41
+ await w.u53(this.versions.length);
42
+ for (const v of this.versions) {
43
+ await w.u53(v);
44
+ }
45
+ await this.parameters.encode(w, version);
46
+ }
47
+ else {
48
+ // d17 uses unified Setup, not ClientSetup
49
+ throw new Error("ClientSetup not used for this version");
50
+ }
51
+ }
52
+ async encode(w, version) {
53
+ return Message.encode(w, (mw) => this.#encode(mw, version));
54
+ }
55
+ static async #decode(r, version) {
56
+ if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {
57
+ // Draft15+: no versions list, just parameters
58
+ const parameters = await SetupOptions.decode(r, version);
59
+ return new ClientSetup({ versions: [version], parameters });
60
+ }
61
+ else if (version === Version.DRAFT_14) {
62
+ // Number of supported versions
63
+ const numVersions = await r.u53();
64
+ if (numVersions > MAX_VERSIONS) {
65
+ throw new Error(`too many versions: ${numVersions}`);
66
+ }
67
+ const supportedVersions = [];
68
+ for (let i = 0; i < numVersions; i++) {
69
+ const v = await r.u53();
70
+ supportedVersions.push(v);
71
+ }
72
+ const parameters = await SetupOptions.decode(r, version);
73
+ return new ClientSetup({ versions: supportedVersions, parameters });
74
+ }
75
+ else {
76
+ // d17 uses unified Setup, not ClientSetup
77
+ throw new Error("ClientSetup not used for this version");
78
+ }
79
+ }
80
+ static async decode(r, version) {
81
+ return Message.decode(r, (mr) => ClientSetup.#decode(mr, version));
82
+ }
83
+ }
84
+ export class ServerSetup {
85
+ static id = 0x21;
86
+ version;
87
+ parameters;
88
+ constructor({ version, parameters = new SetupOptions() }) {
89
+ this.version = version;
90
+ this.parameters = parameters;
91
+ }
92
+ async #encode(w, version) {
93
+ if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {
94
+ // Draft15+: no version field, just parameters
95
+ await this.parameters.encode(w, version);
96
+ }
97
+ else if (version === Version.DRAFT_14) {
98
+ await w.u53(this.version);
99
+ await this.parameters.encode(w, version);
100
+ }
101
+ else {
102
+ // d17 uses unified Setup, not ServerSetup
103
+ throw new Error("ServerSetup not used for this version");
104
+ }
105
+ }
106
+ async encode(w, version) {
107
+ return Message.encode(w, (mw) => this.#encode(mw, version));
108
+ }
109
+ static async #decode(r, version) {
110
+ if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {
111
+ // Draft15+: no version field, just parameters
112
+ const parameters = await SetupOptions.decode(r, version);
113
+ return new ServerSetup({ version, parameters });
114
+ }
115
+ else if (version === Version.DRAFT_14) {
116
+ const selectedVersion = await r.u53();
117
+ const parameters = await SetupOptions.decode(r, version);
118
+ return new ServerSetup({ version: selectedVersion, parameters });
119
+ }
120
+ else {
121
+ // d17 uses unified Setup, not ServerSetup
122
+ throw new Error("ServerSetup not used for this version");
123
+ }
124
+ }
125
+ static async decode(r, version) {
126
+ return Message.decode(r, (mr) => ServerSetup.#decode(mr, version));
127
+ }
128
+ }
129
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/ietf/setup.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Reader, Writer } from \"../stream.ts\";\nimport * as Message from \"./message.ts\";\nimport { SetupOptions } from \"./parameters.ts\";\nimport { type IetfVersion, Version } from \"./version.ts\";\n\n// Draft-17 unified SETUP message (0x2F00)\nexport class Setup {\n\tstatic id = 0x2f00;\n\n\tparameters: SetupOptions;\n\n\tconstructor({ parameters = new SetupOptions() }: { parameters?: SetupOptions } = {}) {\n\t\tthis.parameters = parameters;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tawait this.parameters.encode(w, version);\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<Setup> {\n\t\tconst parameters = await SetupOptions.decode(r, version);\n\t\treturn new Setup({ parameters });\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<Setup> {\n\t\treturn Message.decode(r, (mr) => Setup.#decode(mr, version));\n\t}\n}\n\nconst MAX_VERSIONS = 128;\n\nexport class ClientSetup {\n\tstatic id = 0x20;\n\n\tversions: number[];\n\tparameters: SetupOptions;\n\n\tconstructor({ versions, parameters = new SetupOptions() }: { versions: number[]; parameters?: SetupOptions }) {\n\t\tthis.versions = versions;\n\t\tthis.parameters = parameters;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (version === Version.DRAFT_15 || version === Version.DRAFT_16) {\n\t\t\t// Draft15+: no versions list, just parameters\n\t\t\tawait this.parameters.encode(w, version);\n\t\t} else if (version === Version.DRAFT_14) {\n\t\t\tawait w.u53(this.versions.length);\n\t\t\tfor (const v of this.versions) {\n\t\t\t\tawait w.u53(v);\n\t\t\t}\n\t\t\tawait this.parameters.encode(w, version);\n\t\t} else {\n\t\t\t// d17 uses unified Setup, not ClientSetup\n\t\t\tthrow new Error(\"ClientSetup not used for this 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<ClientSetup> {\n\t\tif (version === Version.DRAFT_15 || version === Version.DRAFT_16) {\n\t\t\t// Draft15+: no versions list, just parameters\n\t\t\tconst parameters = await SetupOptions.decode(r, version);\n\t\t\treturn new ClientSetup({ versions: [version], parameters });\n\t\t} else if (version === Version.DRAFT_14) {\n\t\t\t// Number of supported versions\n\t\t\tconst numVersions = await r.u53();\n\t\t\tif (numVersions > MAX_VERSIONS) {\n\t\t\t\tthrow new Error(`too many versions: ${numVersions}`);\n\t\t\t}\n\n\t\t\tconst supportedVersions: number[] = [];\n\n\t\t\tfor (let i = 0; i < numVersions; i++) {\n\t\t\t\tconst v = await r.u53();\n\t\t\t\tsupportedVersions.push(v);\n\t\t\t}\n\n\t\t\tconst parameters = await SetupOptions.decode(r, version);\n\n\t\t\treturn new ClientSetup({ versions: supportedVersions, parameters });\n\t\t} else {\n\t\t\t// d17 uses unified Setup, not ClientSetup\n\t\t\tthrow new Error(\"ClientSetup not used for this version\");\n\t\t}\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<ClientSetup> {\n\t\treturn Message.decode(r, (mr) => ClientSetup.#decode(mr, version));\n\t}\n}\n\nexport class ServerSetup {\n\tstatic id = 0x21;\n\n\tversion: number;\n\tparameters: SetupOptions;\n\n\tconstructor({ version, parameters = new SetupOptions() }: { version: number; parameters?: SetupOptions }) {\n\t\tthis.version = version;\n\t\tthis.parameters = parameters;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (version === Version.DRAFT_15 || version === Version.DRAFT_16) {\n\t\t\t// Draft15+: no version field, just parameters\n\t\t\tawait this.parameters.encode(w, version);\n\t\t} else if (version === Version.DRAFT_14) {\n\t\t\tawait w.u53(this.version);\n\t\t\tawait this.parameters.encode(w, version);\n\t\t} else {\n\t\t\t// d17 uses unified Setup, not ServerSetup\n\t\t\tthrow new Error(\"ServerSetup not used for this 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<ServerSetup> {\n\t\tif (version === Version.DRAFT_15 || version === Version.DRAFT_16) {\n\t\t\t// Draft15+: no version field, just parameters\n\t\t\tconst parameters = await SetupOptions.decode(r, version);\n\t\t\treturn new ServerSetup({ version, parameters });\n\t\t} else if (version === Version.DRAFT_14) {\n\t\t\tconst selectedVersion = await r.u53();\n\t\t\tconst parameters = await SetupOptions.decode(r, version);\n\t\t\treturn new ServerSetup({ version: selectedVersion, parameters });\n\t\t} else {\n\t\t\t// d17 uses unified Setup, not ServerSetup\n\t\t\tthrow new Error(\"ServerSetup not used for this version\");\n\t\t}\n\t}\n\n\tstatic async decode(r: Reader, version: IetfVersion): Promise<ServerSetup> {\n\t\treturn Message.decode(r, (mr) => ServerSetup.#decode(mr, version));\n\t}\n}\n"]}
@@ -0,0 +1,66 @@
1
+ import type * as Path from "../path";
2
+ import type { Reader, Writer } from "../stream";
3
+ import { type IetfVersion } from "./version";
4
+ export declare class Subscribe {
5
+ #private;
6
+ static id: number;
7
+ requestId: bigint;
8
+ trackNamespace: Path.Valid;
9
+ trackName: string;
10
+ subscriberPriority: number;
11
+ constructor({ requestId, trackNamespace, trackName, subscriberPriority, }: {
12
+ requestId: bigint;
13
+ trackNamespace: Path.Valid;
14
+ trackName: string;
15
+ subscriberPriority: number;
16
+ });
17
+ encode(w: Writer, version: IetfVersion): Promise<void>;
18
+ static decode(r: Reader, version: IetfVersion): Promise<Subscribe>;
19
+ }
20
+ export declare class SubscribeOk {
21
+ #private;
22
+ static id: number;
23
+ requestId: bigint | undefined;
24
+ trackAlias: bigint;
25
+ constructor({ requestId, trackAlias }: {
26
+ requestId?: bigint;
27
+ trackAlias: bigint;
28
+ });
29
+ encode(w: Writer, version: IetfVersion): Promise<void>;
30
+ static decode(r: Reader, version: IetfVersion): Promise<SubscribeOk>;
31
+ }
32
+ export declare class SubscribeError {
33
+ #private;
34
+ static id: number;
35
+ requestId: bigint;
36
+ errorCode: number;
37
+ reasonPhrase: string;
38
+ constructor({ requestId, errorCode, reasonPhrase, }: {
39
+ requestId: bigint;
40
+ errorCode: number;
41
+ reasonPhrase: string;
42
+ });
43
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
44
+ static decode(r: Reader, _version: IetfVersion): Promise<SubscribeError>;
45
+ }
46
+ export declare class SubscribeUpdate {
47
+ #private;
48
+ static id: number;
49
+ requestId: bigint;
50
+ constructor({ requestId }: {
51
+ requestId: bigint;
52
+ });
53
+ encode(w: Writer, version: IetfVersion): Promise<void>;
54
+ static decode(r: Reader, version: IetfVersion): Promise<SubscribeUpdate>;
55
+ }
56
+ export declare class Unsubscribe {
57
+ #private;
58
+ static readonly id = 10;
59
+ requestId: bigint;
60
+ constructor({ requestId }: {
61
+ requestId: bigint;
62
+ });
63
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
64
+ static decode(r: Reader, _version: IetfVersion): Promise<Unsubscribe>;
65
+ }
66
+ //# sourceMappingURL=subscribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../src/ietf/subscribe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ /* @ts-self-types="./subscribe.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
+ // we only support Group Order descending
8
+ const GROUP_ORDER = 0x02;
9
+ export class Subscribe {
10
+ static id = 0x03;
11
+ requestId;
12
+ trackNamespace;
13
+ trackName;
14
+ subscriberPriority;
15
+ constructor({ requestId, trackNamespace, trackName, subscriberPriority, }) {
16
+ this.requestId = requestId;
17
+ this.trackNamespace = trackNamespace;
18
+ this.trackName = trackName;
19
+ this.subscriberPriority = subscriberPriority;
20
+ }
21
+ async #encode(w, version) {
22
+ await w.u62(this.requestId);
23
+ if (version === Version.DRAFT_17) {
24
+ await w.u62(0n); // required_request_id_delta = 0 (draft-17 only, removed in draft-18 per #1615)
25
+ }
26
+ await Namespace.encode(w, this.trackNamespace);
27
+ await w.string(this.trackName);
28
+ if (version === Version.DRAFT_14) {
29
+ await w.u8(this.subscriberPriority);
30
+ await w.u8(GROUP_ORDER);
31
+ await w.bool(true); // forward = true
32
+ await w.u53(0x2); // filter type = LargestObject
33
+ await w.u53(0); // no parameters
34
+ }
35
+ else {
36
+ // v15+: fields moved into parameters
37
+ const params = new Parameters();
38
+ params.subscriberPriority = this.subscriberPriority;
39
+ params.groupOrder = GROUP_ORDER;
40
+ params.forward = true;
41
+ params.subscriptionFilter = 0x2; // LargestObject
42
+ await params.encode(w, version);
43
+ }
44
+ }
45
+ async encode(w, version) {
46
+ return Message.encode(w, (mw) => this.#encode(mw, version));
47
+ }
48
+ static async decode(r, version) {
49
+ return Message.decode(r, (mr) => Subscribe.#decode(mr, version));
50
+ }
51
+ static async #decode(r, version) {
52
+ const requestId = await r.u62();
53
+ if (version === Version.DRAFT_17) {
54
+ await r.u62(); // required_request_id_delta (read and ignore)
55
+ }
56
+ const trackNamespace = await Namespace.decode(r);
57
+ const trackName = await r.string();
58
+ if (version === Version.DRAFT_14) {
59
+ const subscriberPriority = await r.u8();
60
+ let groupOrder = await r.u8();
61
+ if (groupOrder > 2) {
62
+ throw new Error(`unknown group order: ${groupOrder}`);
63
+ }
64
+ if (groupOrder === 0) {
65
+ groupOrder = GROUP_ORDER; // default to descending
66
+ }
67
+ const forward = await r.bool();
68
+ if (!forward) {
69
+ throw new Error(`unsupported forward value: ${forward}`);
70
+ }
71
+ const filterType = await r.u53();
72
+ if (filterType !== 0x1 && filterType !== 0x2) {
73
+ throw new Error(`unsupported filter type: ${filterType}`);
74
+ }
75
+ await Parameters.decode(r, version); // ignore parameters
76
+ return new Subscribe({ requestId, trackNamespace, trackName, subscriberPriority });
77
+ }
78
+ // v15+: fields are in parameters
79
+ const params = await Parameters.decode(r, version);
80
+ const subscriberPriority = params.subscriberPriority ?? 128;
81
+ let groupOrder = params.groupOrder ?? GROUP_ORDER;
82
+ if (groupOrder > 2) {
83
+ throw new Error(`unknown group order: ${groupOrder}`);
84
+ }
85
+ if (groupOrder === 0) {
86
+ groupOrder = GROUP_ORDER; // default to descending
87
+ }
88
+ const forward = params.forward ?? true;
89
+ if (!forward) {
90
+ throw new Error(`unsupported forward value: ${forward}`);
91
+ }
92
+ const filterType = params.subscriptionFilter ?? 0x2;
93
+ if (filterType !== 0x1 && filterType !== 0x2) {
94
+ throw new Error(`unsupported filter type: ${filterType}`);
95
+ }
96
+ return new Subscribe({ requestId, trackNamespace, trackName, subscriberPriority });
97
+ }
98
+ }
99
+ export class SubscribeOk {
100
+ static id = 0x04;
101
+ requestId;
102
+ trackAlias;
103
+ constructor({ requestId, trackAlias }) {
104
+ this.requestId = requestId;
105
+ this.trackAlias = trackAlias;
106
+ }
107
+ async #encode(w, version) {
108
+ if (version === Version.DRAFT_14 || version === Version.DRAFT_15 || version === Version.DRAFT_16) {
109
+ if (this.requestId === undefined)
110
+ throw new Error("requestId required for draft14-16");
111
+ await w.u62(this.requestId);
112
+ }
113
+ await w.u62(this.trackAlias);
114
+ if (version === Version.DRAFT_14) {
115
+ await w.u62(0n); // expires = 0
116
+ await w.u8(GROUP_ORDER);
117
+ await w.bool(false); // content exists = false
118
+ await w.u53(0); // no parameters
119
+ }
120
+ else {
121
+ // v15+: just parameters after track_alias
122
+ const params = new Parameters();
123
+ params.groupOrder = GROUP_ORDER;
124
+ await params.encode(w, version);
125
+ }
126
+ }
127
+ async encode(w, version) {
128
+ return Message.encode(w, (mw) => this.#encode(mw, version));
129
+ }
130
+ static async decode(r, version) {
131
+ return Message.decode(r, (mr) => SubscribeOk.#decode(mr, version));
132
+ }
133
+ static async #decode(r, version) {
134
+ const requestId = version === Version.DRAFT_14 || version === Version.DRAFT_15 || version === Version.DRAFT_16
135
+ ? await r.u62()
136
+ : undefined;
137
+ const trackAlias = await r.u62();
138
+ if (version === Version.DRAFT_14) {
139
+ const expires = await r.u62();
140
+ if (expires !== BigInt(0)) {
141
+ throw new Error(`unsupported expires: ${expires}`);
142
+ }
143
+ await r.u8(); // Don't care about group order
144
+ const contentExists = await r.bool();
145
+ if (contentExists) {
146
+ // Ignore largest group/object
147
+ await r.u62();
148
+ await r.u62();
149
+ }
150
+ await Parameters.decode(r, version); // ignore parameters
151
+ }
152
+ else {
153
+ // v15+: parameters followed by Track Properties (draft-17+)
154
+ await Parameters.decode(r, version);
155
+ await Properties.skip(r, version);
156
+ }
157
+ return new SubscribeOk({ requestId, trackAlias });
158
+ }
159
+ }
160
+ export class SubscribeError {
161
+ static id = 0x05;
162
+ requestId;
163
+ errorCode;
164
+ reasonPhrase;
165
+ constructor({ requestId, errorCode, reasonPhrase, }) {
166
+ this.requestId = requestId;
167
+ this.errorCode = errorCode;
168
+ this.reasonPhrase = reasonPhrase;
169
+ }
170
+ async #encode(w) {
171
+ await w.u62(this.requestId);
172
+ await w.u62(BigInt(this.errorCode));
173
+ await w.string(this.reasonPhrase);
174
+ }
175
+ async encode(w, _version) {
176
+ return Message.encode(w, this.#encode.bind(this));
177
+ }
178
+ static async decode(r, _version) {
179
+ return Message.decode(r, SubscribeError.#decode);
180
+ }
181
+ static async #decode(r) {
182
+ const requestId = await r.u62();
183
+ const errorCode = Number(await r.u62());
184
+ const reasonPhrase = await r.string();
185
+ return new SubscribeError({ requestId, errorCode, reasonPhrase });
186
+ }
187
+ }
188
+ export class SubscribeUpdate {
189
+ static id = 0x02;
190
+ requestId;
191
+ constructor({ requestId }) {
192
+ this.requestId = requestId;
193
+ }
194
+ async #encode(w, version) {
195
+ if (version === Version.DRAFT_14) {
196
+ await w.u62(this.requestId);
197
+ await w.u62(0n); // subscription_request_id
198
+ await w.u62(0n); // start_group
199
+ await w.u62(0n); // start_object
200
+ await w.u62(0n); // end_group
201
+ await w.u8(128); // subscriber_priority
202
+ await w.bool(true); // forward
203
+ await w.u53(0); // no parameters
204
+ }
205
+ else if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {
206
+ await w.u62(this.requestId);
207
+ await w.u62(0n); // subscription_request_id
208
+ const params = new Parameters();
209
+ await params.encode(w, version);
210
+ }
211
+ else {
212
+ // v17+: REQUEST_UPDATE
213
+ await w.u62(this.requestId);
214
+ if (version === Version.DRAFT_17) {
215
+ await w.u62(0n); // required_request_id_delta (draft-17 only, removed in draft-18 per #1615)
216
+ }
217
+ const params = new Parameters();
218
+ await params.encode(w, version);
219
+ }
220
+ }
221
+ async encode(w, version) {
222
+ return Message.encode(w, (mw) => this.#encode(mw, version));
223
+ }
224
+ static async decode(r, version) {
225
+ return Message.decode(r, (mr) => SubscribeUpdate.#decode(mr, version));
226
+ }
227
+ static async #decode(r, version) {
228
+ if (version === Version.DRAFT_14) {
229
+ const requestId = await r.u62();
230
+ await r.u62(); // subscription_request_id
231
+ await r.u62(); // start_group
232
+ await r.u62(); // start_object
233
+ await r.u62(); // end_group
234
+ await r.u8(); // subscriber_priority
235
+ await r.bool(); // forward
236
+ await Parameters.decode(r, version); // parameters
237
+ return new SubscribeUpdate({ requestId });
238
+ }
239
+ else if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {
240
+ const requestId = await r.u62();
241
+ await r.u62(); // subscription_request_id
242
+ await Parameters.decode(r, version);
243
+ return new SubscribeUpdate({ requestId });
244
+ }
245
+ else {
246
+ // v17+: REQUEST_UPDATE
247
+ const requestId = await r.u62();
248
+ if (version === Version.DRAFT_17) {
249
+ await r.u62(); // required_request_id_delta (draft-17 only, removed in draft-18 per #1615)
250
+ }
251
+ await Parameters.decode(r, version);
252
+ return new SubscribeUpdate({ requestId });
253
+ }
254
+ }
255
+ }
256
+ export class Unsubscribe {
257
+ static id = 0x0a;
258
+ requestId;
259
+ constructor({ requestId }) {
260
+ this.requestId = requestId;
261
+ }
262
+ async #encode(w) {
263
+ await w.u62(this.requestId);
264
+ }
265
+ async encode(w, _version) {
266
+ return Message.encode(w, this.#encode.bind(this));
267
+ }
268
+ static async decode(r, _version) {
269
+ return Message.decode(r, Unsubscribe.#decode);
270
+ }
271
+ static async #decode(r) {
272
+ const requestId = await r.u62();
273
+ return new Unsubscribe({ requestId });
274
+ }
275
+ }
276
+ //# sourceMappingURL=subscribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/ietf/subscribe.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,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAoB,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,yCAAyC;AACzC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,OAAO,SAAS;IACrB,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAS;IAClB,cAAc,CAAa;IAC3B,SAAS,CAAS;IAClB,kBAAkB,CAAS;IAE3B,YAAY,EACX,SAAS,EACT,cAAc,EACd,SAAS,EACT,kBAAkB,GAMlB;QACA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QAC5C,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,cAAc,CAAC,CAAC;QAC/C,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE/B,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpC,MAAM,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB;YACrC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,8BAA8B;YAChD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACjC,CAAC;aAAM,CAAC;YACP,qCAAqC;YACrC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACpD,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC;YAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC,gBAAgB;YACjD,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACF,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,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QACnD,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,8CAA8C;QAC9D,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QAEnC,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;YAExC,IAAI,UAAU,GAAG,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;YAC9B,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACtB,UAAU,GAAG,WAAW,CAAC,CAAC,wBAAwB;YACnD,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB;YAEzD,OAAO,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC;QAC5D,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;QAClD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACtB,UAAU,GAAG,WAAW,CAAC,CAAC,wBAAwB;QACnD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC;QACpD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACpF,CAAC;CACD;AAED,MAAM,OAAO,WAAW;IACvB,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;IAEjB,SAAS,CAAqB;IAC9B,UAAU,CAAS;IAEnB,YAAY,EAAE,SAAS,EAAE,UAAU,EAA8C;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QAC5C,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClG,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvF,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7B,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc;YAC/B,MAAM,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB;YAC9C,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACjC,CAAC;aAAM,CAAC;YACP,0CAA0C;YAC1C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC;YAChC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACF,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,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QACnD,MAAM,SAAS,GACd,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ;YAC3F,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE;YACf,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAEjC,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YAC9B,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,+BAA+B;YAE7C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,aAAa,EAAE,CAAC;gBACnB,8BAA8B;gBAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YACf,CAAC;YAED,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,oBAAoB;QAC1D,CAAC;aAAM,CAAC;YACP,4DAA4D;YAC5D,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;IACnD,CAAC;CACD;AAED,MAAM,OAAO,cAAc;IAC1B,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,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,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,cAAc,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC;IACnE,CAAC;CACD;AAED,MAAM,OAAO,eAAe;IAC3B,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,EAAE,OAAoB;QAC5C,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;YAC3C,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc;YAC/B,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;YAChC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;YAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB;YACvC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;YAC9B,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;QACjC,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzE,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B;YAC3C,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,uBAAuB;YACvB,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,2EAA2E;YAC7F,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACjC,CAAC;IACF,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,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS,EAAE,OAAoB;QACnD,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;YACzC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc;YAC7B,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,eAAe;YAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,YAAY;YAC3B,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,sBAAsB;YACpC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU;YAC1B,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa;YAClD,OAAO,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;YACzE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;YACzC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACP,uBAAuB;YACvB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,2EAA2E;YAC3F,CAAC;YACD,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,CAAC;IACF,CAAC;CACD;AAED,MAAM,OAAO,WAAW;IACvB,MAAM,CAAU,EAAE,GAAG,IAAI,CAAC;IAE1B,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,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAS;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,OAAO,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACvC,CAAC;CACD","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// we only support Group Order descending\nconst GROUP_ORDER = 0x02;\n\nexport class Subscribe {\n\tstatic id = 0x03;\n\n\trequestId: bigint;\n\ttrackNamespace: Path.Valid;\n\ttrackName: string;\n\tsubscriberPriority: number;\n\n\tconstructor({\n\t\trequestId,\n\t\ttrackNamespace,\n\t\ttrackName,\n\t\tsubscriberPriority,\n\t}: {\n\t\trequestId: bigint;\n\t\ttrackNamespace: Path.Valid;\n\t\ttrackName: string;\n\t\tsubscriberPriority: number;\n\t}) {\n\t\tthis.requestId = requestId;\n\t\tthis.trackNamespace = trackNamespace;\n\t\tthis.trackName = trackName;\n\t\tthis.subscriberPriority = subscriberPriority;\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 (draft-17 only, removed in draft-18 per #1615)\n\t\t}\n\t\tawait Namespace.encode(w, this.trackNamespace);\n\t\tawait w.string(this.trackName);\n\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tawait w.u8(this.subscriberPriority);\n\t\t\tawait w.u8(GROUP_ORDER);\n\t\t\tawait w.bool(true); // forward = true\n\t\t\tawait w.u53(0x2); // filter type = LargestObject\n\t\t\tawait w.u53(0); // no parameters\n\t\t} else {\n\t\t\t// v15+: fields moved into parameters\n\t\t\tconst params = new Parameters();\n\t\t\tparams.subscriberPriority = this.subscriberPriority;\n\t\t\tparams.groupOrder = GROUP_ORDER;\n\t\t\tparams.forward = true;\n\t\t\tparams.subscriptionFilter = 0x2; // LargestObject\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<Subscribe> {\n\t\treturn Message.decode(r, (mr) => Subscribe.#decode(mr, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<Subscribe> {\n\t\tconst requestId = await r.u62();\n\t\tif (version === Version.DRAFT_17) {\n\t\t\tawait r.u62(); // required_request_id_delta (read and ignore)\n\t\t}\n\t\tconst trackNamespace = await Namespace.decode(r);\n\t\tconst trackName = await r.string();\n\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tconst subscriberPriority = await r.u8();\n\n\t\t\tlet groupOrder = await r.u8();\n\t\t\tif (groupOrder > 2) {\n\t\t\t\tthrow new Error(`unknown group order: ${groupOrder}`);\n\t\t\t}\n\t\t\tif (groupOrder === 0) {\n\t\t\t\tgroupOrder = GROUP_ORDER; // default to descending\n\t\t\t}\n\n\t\t\tconst forward = await r.bool();\n\t\t\tif (!forward) {\n\t\t\t\tthrow new Error(`unsupported forward value: ${forward}`);\n\t\t\t}\n\n\t\t\tconst filterType = await r.u53();\n\t\t\tif (filterType !== 0x1 && filterType !== 0x2) {\n\t\t\t\tthrow new Error(`unsupported filter type: ${filterType}`);\n\t\t\t}\n\n\t\t\tawait Parameters.decode(r, version); // ignore parameters\n\n\t\t\treturn new Subscribe({ requestId, trackNamespace, trackName, subscriberPriority });\n\t\t}\n\t\t// v15+: fields are in parameters\n\t\tconst params = await Parameters.decode(r, version);\n\t\tconst subscriberPriority = params.subscriberPriority ?? 128;\n\t\tlet groupOrder = params.groupOrder ?? GROUP_ORDER;\n\t\tif (groupOrder > 2) {\n\t\t\tthrow new Error(`unknown group order: ${groupOrder}`);\n\t\t}\n\t\tif (groupOrder === 0) {\n\t\t\tgroupOrder = GROUP_ORDER; // default to descending\n\t\t}\n\n\t\tconst forward = params.forward ?? true;\n\t\tif (!forward) {\n\t\t\tthrow new Error(`unsupported forward value: ${forward}`);\n\t\t}\n\n\t\tconst filterType = params.subscriptionFilter ?? 0x2;\n\t\tif (filterType !== 0x1 && filterType !== 0x2) {\n\t\t\tthrow new Error(`unsupported filter type: ${filterType}`);\n\t\t}\n\n\t\treturn new Subscribe({ requestId, trackNamespace, trackName, subscriberPriority });\n\t}\n}\n\nexport class SubscribeOk {\n\tstatic id = 0x04;\n\n\trequestId: bigint | undefined;\n\ttrackAlias: bigint;\n\n\tconstructor({ requestId, trackAlias }: { requestId?: bigint; trackAlias: bigint }) {\n\t\tthis.requestId = requestId;\n\t\tthis.trackAlias = trackAlias;\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(this.trackAlias);\n\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tawait w.u62(0n); // expires = 0\n\t\t\tawait w.u8(GROUP_ORDER);\n\t\t\tawait w.bool(false); // content exists = false\n\t\t\tawait w.u53(0); // no parameters\n\t\t} else {\n\t\t\t// v15+: just parameters after track_alias\n\t\t\tconst params = new Parameters();\n\t\t\tparams.groupOrder = GROUP_ORDER;\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<SubscribeOk> {\n\t\treturn Message.decode(r, (mr) => SubscribeOk.#decode(mr, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<SubscribeOk> {\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 trackAlias = await r.u62();\n\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tconst expires = await r.u62();\n\t\t\tif (expires !== BigInt(0)) {\n\t\t\t\tthrow new Error(`unsupported expires: ${expires}`);\n\t\t\t}\n\n\t\t\tawait r.u8(); // Don't care about group order\n\n\t\t\tconst contentExists = await r.bool();\n\t\t\tif (contentExists) {\n\t\t\t\t// Ignore largest group/object\n\t\t\t\tawait r.u62();\n\t\t\t\tawait r.u62();\n\t\t\t}\n\n\t\t\tawait Parameters.decode(r, version); // ignore parameters\n\t\t} else {\n\t\t\t// v15+: parameters followed by Track Properties (draft-17+)\n\t\t\tawait Parameters.decode(r, version);\n\t\t\tawait Properties.skip(r, version);\n\t\t}\n\n\t\treturn new SubscribeOk({ requestId, trackAlias });\n\t}\n}\n\nexport class SubscribeError {\n\tstatic id = 0x05;\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<SubscribeError> {\n\t\treturn Message.decode(r, SubscribeError.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeError> {\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 SubscribeError({ requestId, errorCode, reasonPhrase });\n\t}\n}\n\nexport class SubscribeUpdate {\n\tstatic id = 0x02;\n\n\trequestId: bigint;\n\n\tconstructor({ requestId }: { requestId: bigint }) {\n\t\tthis.requestId = requestId;\n\t}\n\n\tasync #encode(w: Writer, version: IetfVersion): Promise<void> {\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tawait w.u62(this.requestId);\n\t\t\tawait w.u62(0n); // subscription_request_id\n\t\t\tawait w.u62(0n); // start_group\n\t\t\tawait w.u62(0n); // start_object\n\t\t\tawait w.u62(0n); // end_group\n\t\t\tawait w.u8(128); // subscriber_priority\n\t\t\tawait w.bool(true); // forward\n\t\t\tawait w.u53(0); // no parameters\n\t\t} else if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {\n\t\t\tawait w.u62(this.requestId);\n\t\t\tawait w.u62(0n); // subscription_request_id\n\t\t\tconst params = new Parameters();\n\t\t\tawait params.encode(w, version);\n\t\t} else {\n\t\t\t// v17+: REQUEST_UPDATE\n\t\t\tawait w.u62(this.requestId);\n\t\t\tif (version === Version.DRAFT_17) {\n\t\t\t\tawait w.u62(0n); // required_request_id_delta (draft-17 only, removed in draft-18 per #1615)\n\t\t\t}\n\t\t\tconst params = new Parameters();\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<SubscribeUpdate> {\n\t\treturn Message.decode(r, (mr) => SubscribeUpdate.#decode(mr, version));\n\t}\n\n\tstatic async #decode(r: Reader, version: IetfVersion): Promise<SubscribeUpdate> {\n\t\tif (version === Version.DRAFT_14) {\n\t\t\tconst requestId = await r.u62();\n\t\t\tawait r.u62(); // subscription_request_id\n\t\t\tawait r.u62(); // start_group\n\t\t\tawait r.u62(); // start_object\n\t\t\tawait r.u62(); // end_group\n\t\t\tawait r.u8(); // subscriber_priority\n\t\t\tawait r.bool(); // forward\n\t\t\tawait Parameters.decode(r, version); // parameters\n\t\t\treturn new SubscribeUpdate({ requestId });\n\t\t} else if (version === Version.DRAFT_15 || version === Version.DRAFT_16) {\n\t\t\tconst requestId = await r.u62();\n\t\t\tawait r.u62(); // subscription_request_id\n\t\t\tawait Parameters.decode(r, version);\n\t\t\treturn new SubscribeUpdate({ requestId });\n\t\t} else {\n\t\t\t// v17+: REQUEST_UPDATE\n\t\t\tconst requestId = await r.u62();\n\t\t\tif (version === Version.DRAFT_17) {\n\t\t\t\tawait r.u62(); // required_request_id_delta (draft-17 only, removed in draft-18 per #1615)\n\t\t\t}\n\t\t\tawait Parameters.decode(r, version);\n\t\t\treturn new SubscribeUpdate({ requestId });\n\t\t}\n\t}\n}\n\nexport class Unsubscribe {\n\tstatic readonly id = 0x0a;\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<Unsubscribe> {\n\t\treturn Message.decode(r, Unsubscribe.#decode);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<Unsubscribe> {\n\t\tconst requestId = await r.u62();\n\t\treturn new Unsubscribe({ requestId });\n\t}\n}\n"]}
@@ -0,0 +1,101 @@
1
+ import type * as Path from "../path";
2
+ import type { Reader, Writer } from "../stream";
3
+ import { type IetfVersion } from "./version";
4
+ export declare class SubscribeNamespace {
5
+ #private;
6
+ static id: number;
7
+ namespace: Path.Valid;
8
+ requestId: bigint;
9
+ constructor({ namespace, requestId }: {
10
+ namespace: Path.Valid;
11
+ requestId: bigint;
12
+ });
13
+ encode(w: Writer, version: IetfVersion): Promise<void>;
14
+ static decode(r: Reader, version: IetfVersion): Promise<SubscribeNamespace>;
15
+ }
16
+ export declare class SubscribeNamespaceLegacy {
17
+ #private;
18
+ static id: number;
19
+ namespace: Path.Valid;
20
+ requestId: bigint;
21
+ subscribeOptions: number;
22
+ constructor({ namespace, requestId, subscribeOptions, }: {
23
+ namespace: Path.Valid;
24
+ requestId: bigint;
25
+ subscribeOptions?: number;
26
+ });
27
+ encode(w: Writer, version: IetfVersion): Promise<void>;
28
+ static decode(r: Reader, version: IetfVersion): Promise<SubscribeNamespaceLegacy>;
29
+ }
30
+ export declare const SUBSCRIBE_TRACKS_ID = 81;
31
+ export declare class SubscribeNamespaceOk {
32
+ #private;
33
+ static id: number;
34
+ requestId: bigint;
35
+ constructor({ requestId }: {
36
+ requestId: bigint;
37
+ });
38
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
39
+ static decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceOk>;
40
+ }
41
+ export declare class SubscribeNamespaceError {
42
+ #private;
43
+ static id: number;
44
+ requestId: bigint;
45
+ errorCode: number;
46
+ reasonPhrase: string;
47
+ constructor({ requestId, errorCode, reasonPhrase, }: {
48
+ requestId: bigint;
49
+ errorCode: number;
50
+ reasonPhrase: string;
51
+ });
52
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
53
+ static decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceError>;
54
+ }
55
+ export declare class UnsubscribeNamespace {
56
+ #private;
57
+ static id: number;
58
+ requestId: bigint;
59
+ constructor({ requestId }: {
60
+ requestId: bigint;
61
+ });
62
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
63
+ static decode(r: Reader, _version: IetfVersion): Promise<UnsubscribeNamespace>;
64
+ }
65
+ export declare class SubscribeNamespaceEntry {
66
+ #private;
67
+ static id: number;
68
+ suffix: Path.Valid;
69
+ constructor({ suffix }: {
70
+ suffix: Path.Valid;
71
+ });
72
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
73
+ static decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceEntry>;
74
+ }
75
+ export declare class SubscribeNamespaceEntryDone {
76
+ #private;
77
+ static id: number;
78
+ suffix: Path.Valid;
79
+ constructor({ suffix }: {
80
+ suffix: Path.Valid;
81
+ });
82
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
83
+ static decode(r: Reader, _version: IetfVersion): Promise<SubscribeNamespaceEntryDone>;
84
+ }
85
+ export declare class PublishBlocked {
86
+ #private;
87
+ static id: number;
88
+ suffix: Path.Valid;
89
+ trackName: string;
90
+ constructor({ suffix, trackName }: {
91
+ suffix: Path.Valid;
92
+ trackName: string;
93
+ });
94
+ encode(w: Writer, _version: IetfVersion): Promise<void>;
95
+ static decode(r: Reader, _version: IetfVersion): Promise<PublishBlocked>;
96
+ }
97
+ export declare const SubscribeAnnounces: typeof SubscribeNamespace;
98
+ export declare const SubscribeAnnouncesOk: typeof SubscribeNamespaceOk;
99
+ export declare const SubscribeAnnouncesError: typeof SubscribeNamespaceError;
100
+ export declare const UnsubscribeAnnounces: typeof UnsubscribeNamespace;
101
+ //# sourceMappingURL=subscribe_namespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe_namespace.d.ts","sourceRoot":"","sources":["../../src/ietf/subscribe_namespace.ts"],"names":[],"mappings":"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"}