@norskvideo/moq-net 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/announce.d.ts +7 -0
- package/announce.d.ts.map +1 -0
- package/announce.js +8 -0
- package/announce.js.map +1 -0
- package/announced.d.ts +49 -91
- package/announced.d.ts.map +1 -1
- package/announced.js +21 -156
- package/announced.js.map +1 -1
- package/bandwidth.d.ts +163 -0
- package/bandwidth.d.ts.map +1 -0
- package/bandwidth.js +304 -0
- package/bandwidth.js.map +1 -0
- package/bandwidth_api.d.ts +7 -0
- package/bandwidth_api.d.ts.map +1 -0
- package/bandwidth_api.js +8 -0
- package/bandwidth_api.js.map +1 -0
- package/broadcast.d.ts +44 -35
- package/broadcast.d.ts.map +1 -1
- package/broadcast.js +104 -60
- package/broadcast.js.map +1 -1
- package/connection/accept.d.ts +16 -1
- package/connection/accept.d.ts.map +1 -1
- package/connection/accept.js +52 -28
- package/connection/accept.js.map +1 -1
- package/connection/browser.d.ts.map +1 -1
- package/connection/browser.js +9 -7
- package/connection/browser.js.map +1 -1
- package/connection/connect.d.ts +30 -6
- package/connection/connect.d.ts.map +1 -1
- package/connection/connect.js +110 -54
- package/connection/connect.js.map +1 -1
- package/connection/established.d.ts +17 -21
- package/connection/established.d.ts.map +1 -1
- package/connection/established.js.map +1 -1
- package/connection/forward.d.ts +2 -0
- package/connection/forward.d.ts.map +1 -0
- package/connection/forward.js +173 -0
- package/connection/forward.js.map +1 -0
- package/connection/handshake.d.ts +1 -0
- package/connection/handshake.d.ts.map +1 -1
- package/connection/handshake.js +5 -2
- package/connection/handshake.js.map +1 -1
- package/connection/index.d.ts +5 -5
- package/connection/index.d.ts.map +1 -1
- package/connection/index.js +4 -5
- package/connection/index.js.map +1 -1
- package/connection/pool.d.ts +186 -0
- package/connection/pool.d.ts.map +1 -0
- package/connection/pool.js +361 -0
- package/connection/pool.js.map +1 -0
- package/connection/reload.d.ts +14 -93
- package/connection/reload.d.ts.map +1 -1
- package/connection/reload.js +217 -81
- package/connection/reload.js.map +1 -1
- package/connection/stats.d.ts +3 -26
- package/connection/stats.d.ts.map +1 -1
- package/connection/stats.js.map +1 -1
- package/connection/transport.d.ts +0 -7
- package/connection/transport.d.ts.map +1 -1
- package/consume.d.ts +1 -43
- package/consume.d.ts.map +1 -1
- package/consume.js +1 -1
- package/consume.js.map +1 -1
- package/error.d.ts +180 -29
- package/error.d.ts.map +1 -1
- package/error.js +331 -16
- package/error.js.map +1 -1
- package/errors.d.ts +7 -0
- package/errors.d.ts.map +1 -0
- package/errors.js +8 -0
- package/errors.js.map +1 -0
- package/group.d.ts +9 -43
- package/group.d.ts.map +1 -1
- package/group.js +284 -69
- package/group.js.map +1 -1
- package/hop.d.ts +115 -0
- package/hop.d.ts.map +1 -0
- package/hop.js +119 -0
- package/hop.js.map +1 -0
- package/ietf/adapter.d.ts +5 -1
- package/ietf/adapter.d.ts.map +1 -1
- package/ietf/adapter.js +105 -60
- package/ietf/adapter.js.map +1 -1
- package/ietf/aliases.d.ts +1 -78
- package/ietf/aliases.d.ts.map +1 -1
- package/ietf/cluster.d.ts +9 -123
- package/ietf/cluster.d.ts.map +1 -1
- package/ietf/cluster.js +84 -44
- package/ietf/cluster.js.map +1 -1
- package/ietf/connection.d.ts +6 -72
- package/ietf/connection.d.ts.map +1 -1
- package/ietf/connection.js +62 -56
- package/ietf/connection.js.map +1 -1
- package/ietf/error.d.ts +11 -0
- package/ietf/error.d.ts.map +1 -0
- package/ietf/error.js +193 -0
- package/ietf/error.js.map +1 -0
- package/ietf/fetch.d.ts +7 -20
- package/ietf/fetch.d.ts.map +1 -1
- package/ietf/fetch.js +52 -22
- package/ietf/fetch.js.map +1 -1
- package/ietf/filter.d.ts +2 -0
- package/ietf/filter.d.ts.map +1 -1
- package/ietf/filter.js +10 -1
- package/ietf/filter.js.map +1 -1
- package/ietf/goaway.d.ts.map +1 -1
- package/ietf/goaway.js +22 -5
- package/ietf/goaway.js.map +1 -1
- package/ietf/hidden.d.ts +2 -0
- package/ietf/hidden.d.ts.map +1 -0
- package/ietf/hidden.js +30 -0
- package/ietf/hidden.js.map +1 -0
- package/ietf/index.d.ts +2 -0
- package/ietf/index.d.ts.map +1 -1
- package/ietf/index.js +2 -0
- package/ietf/index.js.map +1 -1
- package/ietf/object.d.ts +15 -8
- package/ietf/object.d.ts.map +1 -1
- package/ietf/object.js +51 -36
- package/ietf/object.js.map +1 -1
- package/ietf/parameters.d.ts +14 -2
- package/ietf/parameters.d.ts.map +1 -1
- package/ietf/parameters.js +97 -29
- package/ietf/parameters.js.map +1 -1
- package/ietf/properties.d.ts +1 -0
- package/ietf/properties.d.ts.map +1 -1
- package/ietf/properties.js +14 -0
- package/ietf/properties.js.map +1 -1
- package/ietf/publish.d.ts +19 -2
- package/ietf/publish.d.ts.map +1 -1
- package/ietf/publish.js +40 -6
- package/ietf/publish.js.map +1 -1
- package/ietf/publish_namespace.d.ts +25 -0
- package/ietf/publish_namespace.d.ts.map +1 -1
- package/ietf/publish_namespace.js +63 -0
- package/ietf/publish_namespace.js.map +1 -1
- package/ietf/publisher.d.ts +1 -82
- package/ietf/publisher.d.ts.map +1 -1
- package/ietf/publisher.js +483 -235
- package/ietf/publisher.js.map +1 -1
- package/ietf/solicit.d.ts +1 -40
- package/ietf/solicit.d.ts.map +1 -1
- package/ietf/subscribe.d.ts +8 -6
- package/ietf/subscribe.d.ts.map +1 -1
- package/ietf/subscribe.js +33 -27
- package/ietf/subscribe.js.map +1 -1
- package/ietf/subscribe_namespace.d.ts +8 -2
- package/ietf/subscribe_namespace.d.ts.map +1 -1
- package/ietf/subscribe_namespace.js +18 -8
- package/ietf/subscribe_namespace.js.map +1 -1
- package/ietf/subscriber.d.ts +1 -65
- package/ietf/subscriber.d.ts.map +1 -1
- package/ietf/subscriber.js +337 -123
- package/ietf/subscriber.js.map +1 -1
- package/ietf/token.d.ts +2 -0
- package/ietf/token.d.ts.map +1 -0
- package/ietf/token.js +99 -0
- package/ietf/token.js.map +1 -0
- package/ietf/track.d.ts +4 -0
- package/ietf/track.d.ts.map +1 -1
- package/ietf/track.js +6 -20
- package/ietf/track.js.map +1 -1
- package/ietf/version.d.ts +12 -1
- package/ietf/version.d.ts.map +1 -1
- package/ietf/version.js +13 -0
- package/ietf/version.js.map +1 -1
- package/index.d.ts +12 -7
- package/index.d.ts.map +1 -1
- package/index.js +10 -5
- package/index.js.map +1 -1
- package/internal.d.ts +115 -1
- package/internal.d.ts.map +1 -1
- package/internal.js +108 -0
- package/internal.js.map +1 -1
- package/lite/announce.d.ts +60 -10
- package/lite/announce.d.ts.map +1 -1
- package/lite/announce.js +176 -31
- package/lite/announce.js.map +1 -1
- package/lite/connection.d.ts +9 -59
- package/lite/connection.d.ts.map +1 -1
- package/lite/connection.js +34 -35
- package/lite/connection.js.map +1 -1
- package/lite/datagram.d.ts +3 -2
- package/lite/datagram.d.ts.map +1 -1
- package/lite/datagram.js +7 -8
- package/lite/datagram.js.map +1 -1
- package/lite/fetch.d.ts +15 -1
- package/lite/fetch.d.ts.map +1 -1
- package/lite/fetch.js +39 -7
- package/lite/fetch.js.map +1 -1
- package/lite/goaway.d.ts.map +1 -1
- package/lite/goaway.js +7 -1
- package/lite/goaway.js.map +1 -1
- package/lite/group.d.ts +30 -12
- package/lite/group.d.ts.map +1 -1
- package/lite/group.js +68 -26
- package/lite/group.js.map +1 -1
- package/lite/message.d.ts +2 -2
- package/lite/message.d.ts.map +1 -1
- package/lite/message.js +14 -5
- package/lite/message.js.map +1 -1
- package/lite/priority.d.ts +1 -61
- package/lite/priority.d.ts.map +1 -1
- package/lite/priority.js +4 -5
- package/lite/priority.js.map +1 -1
- package/lite/publisher.d.ts +1 -69
- package/lite/publisher.d.ts.map +1 -1
- package/lite/publisher.js +630 -262
- package/lite/publisher.js.map +1 -1
- package/lite/setup.d.ts +8 -8
- package/lite/setup.d.ts.map +1 -1
- package/lite/setup.js +33 -30
- package/lite/setup.js.map +1 -1
- package/lite/subscribe.d.ts +71 -17
- package/lite/subscribe.d.ts.map +1 -1
- package/lite/subscribe.js +205 -53
- package/lite/subscribe.js.map +1 -1
- package/lite/subscriber.d.ts +15 -56
- package/lite/subscriber.d.ts.map +1 -1
- package/lite/subscriber.js +451 -247
- package/lite/subscriber.js.map +1 -1
- package/lite/track.d.ts +4 -10
- package/lite/track.d.ts.map +1 -1
- package/lite/track.js +34 -29
- package/lite/track.js.map +1 -1
- package/lite/version.d.ts +42 -6
- package/lite/version.d.ts.map +1 -1
- package/lite/version.js +126 -10
- package/lite/version.js.map +1 -1
- package/origin.d.ts +256 -29
- package/origin.d.ts.map +1 -1
- package/origin.js +1427 -37
- package/origin.js.map +1 -1
- package/package.json +8 -3
- package/path.d.ts +25 -7
- package/path.d.ts.map +1 -1
- package/path.js +5 -3
- package/path.js.map +1 -1
- package/stream.d.ts +73 -14
- package/stream.d.ts.map +1 -1
- package/stream.js +372 -141
- package/stream.js.map +1 -1
- package/tail.d.ts +18 -0
- package/tail.d.ts.map +1 -0
- package/tail.js +167 -0
- package/tail.js.map +1 -0
- package/time.d.ts +15 -2
- package/time.d.ts.map +1 -1
- package/time.js +28 -9
- package/time.js.map +1 -1
- package/track.d.ts +211 -83
- package/track.d.ts.map +1 -1
- package/track.js +816 -205
- package/track.js.map +1 -1
- package/util/abort.d.ts +2 -0
- package/util/abort.d.ts.map +1 -0
- package/util/abort.js +20 -0
- package/util/abort.js.map +1 -0
- package/util/log.d.ts +5 -0
- package/util/log.d.ts.map +1 -0
- package/util/log.js +17 -0
- package/util/log.js.map +1 -0
- package/util/u64.d.ts +39 -0
- package/util/u64.d.ts.map +1 -0
- package/util/u64.js +83 -0
- package/util/u64.js.map +1 -0
- package/util/varint.d.ts +29 -0
- package/util/varint.d.ts.map +1 -0
- package/util/varint.js +198 -0
- package/util/varint.js.map +1 -0
- package/varint.d.ts +10 -6
- package/varint.d.ts.map +1 -1
- package/varint.js +40 -237
- package/varint.js.map +1 -1
- package/wire.d.ts +80 -0
- package/wire.d.ts.map +1 -0
- package/wire.js +32 -0
- package/wire.js.map +1 -0
- package/zod.d.ts +1 -1
- package/zod.d.ts.map +1 -1
- package/zod.js.map +1 -1
- package/mock.d.ts +0 -66
- package/mock.d.ts.map +0 -1
- package/mock.js +0 -243
- package/mock.js.map +0 -1
package/lite/subscribe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/lite/subscribe.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Path from \"../path.ts\";\nimport type { Reader, Writer } from \"../stream.ts\";\nimport * as Message from \"./message.ts\";\nimport { Version } from \"./version.ts\";\n\nexport class SubscribeUpdate {\n\tpriority: number;\n\tordered: boolean;\n\tmaxLatency: number;\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\tconstructor(props: {\n\t\tpriority: number;\n\t\tordered?: boolean;\n\t\tmaxLatency?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t}) {\n\t\tthis.priority = props.priority;\n\t\tthis.ordered = props.ordered ?? false;\n\t\tthis.maxLatency = props.maxLatency ?? 0;\n\t\tthis.startGroup = props.startGroup;\n\t\tthis.endGroup = props.endGroup;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tawait w.bool(this.ordered);\n\t\t\t\tawait w.u53(this.maxLatency);\n\t\t\t\tawait w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(r: Reader, version: Version): Promise<SubscribeUpdate> {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\treturn new SubscribeUpdate({ priority: await r.u8() });\n\t\t\tdefault: {\n\t\t\t\tconst priority = await r.u8();\n\t\t\t\tconst ordered = await r.bool();\n\t\t\t\tconst maxLatency = await r.u53();\n\t\t\t\tconst startGroup = await r.u53();\n\t\t\t\tconst endGroup = await r.u53();\n\t\t\t\treturn new SubscribeUpdate({\n\t\t\t\t\tpriority,\n\t\t\t\t\tordered,\n\t\t\t\t\tmaxLatency,\n\t\t\t\t\tstartGroup: startGroup > 0 ? startGroup - 1 : undefined,\n\t\t\t\t\tendGroup: endGroup > 0 ? endGroup - 1 : undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<SubscribeUpdate> {\n\t\treturn Message.decode(r, (r) => SubscribeUpdate.#decode(r, version));\n\t}\n\n\tstatic async decodeMaybe(r: Reader, version: Version): Promise<SubscribeUpdate | undefined> {\n\t\treturn Message.decodeMaybe(r, (r) => SubscribeUpdate.#decode(r, version));\n\t}\n}\n\nexport class Subscribe {\n\tid: bigint;\n\tbroadcast: Path.Valid;\n\ttrack: string;\n\tpriority: number;\n\tordered: boolean;\n\tmaxLatency: number;\n\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\tconstructor(props: {\n\t\tid: bigint;\n\t\tbroadcast: Path.Valid;\n\t\ttrack: string;\n\t\tpriority: number;\n\t\tordered?: boolean;\n\t\tmaxLatency?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t}) {\n\t\tthis.id = props.id;\n\t\tthis.broadcast = props.broadcast;\n\t\tthis.track = props.track;\n\t\tthis.priority = props.priority;\n\t\tthis.ordered = props.ordered ?? false;\n\t\tthis.maxLatency = props.maxLatency ?? 0;\n\t\tthis.startGroup = props.startGroup;\n\t\tthis.endGroup = props.endGroup;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tawait w.u62(this.id);\n\t\tawait w.string(Path.encode(this.broadcast));\n\t\tawait w.string(this.track);\n\t\tawait w.u8(this.priority);\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait w.bool(this.ordered);\n\t\t\t\tawait w.u53(this.maxLatency);\n\t\t\t\tawait w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(r: Reader, version: Version): Promise<Subscribe> {\n\t\tconst id = await r.u62();\n\t\tconst broadcast = Path.decode(await r.string());\n\t\tconst track = await r.string();\n\t\tconst priority = await r.u8();\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\treturn new Subscribe({ id, broadcast, track, priority });\n\t\t\tdefault: {\n\t\t\t\tconst ordered = await r.bool();\n\t\t\t\tconst maxLatency = await r.u53();\n\t\t\t\tconst startGroup = await r.u53();\n\t\t\t\tconst endGroup = await r.u53();\n\t\t\t\treturn new Subscribe({\n\t\t\t\t\tid,\n\t\t\t\t\tbroadcast,\n\t\t\t\t\ttrack,\n\t\t\t\t\tpriority,\n\t\t\t\t\tordered,\n\t\t\t\t\tmaxLatency,\n\t\t\t\t\tstartGroup: startGroup > 0 ? startGroup - 1 : undefined,\n\t\t\t\t\tendGroup: endGroup > 0 ? endGroup - 1 : undefined,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<Subscribe> {\n\t\treturn Message.decode(r, (r) => Subscribe.#decode(r, version));\n\t}\n}\n\n/**\n * Publisher's acknowledgement on the Subscribe Stream for drafts 01-04.\n *\n * Draft-05+ replaced this with implicit acceptance plus {@link SubscribeStart} /\n * {@link SubscribeEnd}; the immutable codec/timescale/cache moved to TRACK_INFO.\n */\nexport class SubscribeOk {\n\tpriority: number;\n\tordered: boolean;\n\tmaxLatency: number;\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\tconstructor({\n\t\tpriority = 0,\n\t\tordered = false,\n\t\tmaxLatency = 0,\n\t\tstartGroup = undefined,\n\t\tendGroup = undefined,\n\t}: {\n\t\tpriority?: number;\n\t\tordered?: boolean;\n\t\tmaxLatency?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t}) {\n\t\tthis.priority = priority;\n\t\tthis.ordered = ordered;\n\t\tthis.maxLatency = maxLatency;\n\t\tthis.startGroup = startGroup;\n\t\tthis.endGroup = endGroup;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\t// noop\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_01:\n\t\t\t\tawait w.u8(this.priority ?? 0);\n\t\t\t\tbreak;\n\t\t\t// Draft-05+ never sends SUBSCRIBE_OK, but keep the field layout matching\n\t\t\t// Draft-03/04 so a stray future use stays well-formed.\n\t\t\tdefault:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tawait w.bool(this.ordered);\n\t\t\t\tawait w.u53(this.maxLatency);\n\t\t\t\tawait w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(version: Version, r: Reader): Promise<SubscribeOk> {\n\t\tlet priority: number | undefined;\n\t\tlet ordered: boolean | undefined;\n\t\tlet maxLatency: number | undefined;\n\t\tlet startGroup: number | undefined;\n\t\tlet endGroup: number | undefined;\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\t// noop\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_01:\n\t\t\t\tpriority = await r.u8();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpriority = await r.u8();\n\t\t\t\tordered = await r.bool();\n\t\t\t\tmaxLatency = await r.u53();\n\t\t\t\tstartGroup = await r.u53();\n\t\t\t\tendGroup = await r.u53();\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn new SubscribeOk({\n\t\t\tpriority,\n\t\t\tordered,\n\t\t\tmaxLatency,\n\t\t\tstartGroup: startGroup !== undefined && startGroup > 0 ? startGroup - 1 : undefined,\n\t\t\tendGroup: endGroup !== undefined && endGroup > 0 ? endGroup - 1 : undefined,\n\t\t});\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<SubscribeOk> {\n\t\treturn Message.decode(r, SubscribeOk.#decode.bind(SubscribeOk, version));\n\t}\n}\n\n/**\n * Resolves the absolute start group of a Draft-05+ subscription. The first message\n * the publisher sends, once the start group is known. A value greater than the\n * requested start implicitly drops the leading range.\n */\nexport class SubscribeStart {\n\tgroup: number;\n\n\tconstructor(group: number) {\n\t\tthis.group = group;\n\t}\n\n\tasync encode(w: Writer): Promise<void> {\n\t\treturn Message.encode(w, async (w) => {\n\t\t\tawait w.u53(this.group);\n\t\t});\n\t}\n\n\tstatic async decode(r: Reader): Promise<SubscribeStart> {\n\t\treturn Message.decode(r, async (r) => new SubscribeStart(await r.u53()));\n\t}\n}\n\n/**\n * Signals that no group at or after `group` (exclusive upper bound) will be produced\n * on a Draft-05+ subscription. `0` means the track ended before producing any groups.\n */\nexport class SubscribeEnd {\n\t/** The exclusive final group sequence: the first sequence that will never be produced. */\n\tgroup: number;\n\n\tconstructor(group: number) {\n\t\tthis.group = group;\n\t}\n\n\tasync encode(w: Writer): Promise<void> {\n\t\treturn Message.encode(w, async (w) => {\n\t\t\tawait w.u53(this.group);\n\t\t});\n\t}\n\n\tstatic async decode(r: Reader): Promise<SubscribeEnd> {\n\t\treturn Message.decode(r, async (r) => new SubscribeEnd(await r.u53()));\n\t}\n}\n\n/// Indicates that one or more groups have been dropped.\n///\n/// Draft03+ only.\nexport class SubscribeDrop {\n\tstart: number;\n\tend: number;\n\terror: number;\n\n\tconstructor(props: { start: number; end: number; error: number }) {\n\t\tthis.start = props.start;\n\t\tthis.end = props.end;\n\t\tthis.error = props.error;\n\t}\n\n\tasync #encode(w: Writer) {\n\t\tawait w.u53(this.start);\n\t\tawait w.u53(this.end);\n\t\tawait w.u53(this.error);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeDrop> {\n\t\treturn new SubscribeDrop({ start: await r.u53(), end: await r.u53(), error: await r.u53() });\n\t}\n\n\tasync encode(w: Writer): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader): Promise<SubscribeDrop> {\n\t\treturn Message.decode(r, SubscribeDrop.#decode);\n\t}\n}\n\n/**\n * A response message on the subscribe stream, prefixed with a type discriminator\n * on Draft-03+.\n *\n * The discriminator is version-dependent:\n * - Draft-03/04: `0x0` SUBSCRIBE_OK, `0x1` SUBSCRIBE_DROP.\n * - Draft-05+: `0x0` SUBSCRIBE_START, `0x1` SUBSCRIBE_END, `0x2` SUBSCRIBE_DROP\n * (SUBSCRIBE_OK was removed; acceptance is implicit).\n */\nexport type SubscribeResponse =\n\t| { ok: SubscribeOk }\n\t| { start: SubscribeStart }\n\t| { end: SubscribeEnd }\n\t| { drop: SubscribeDrop };\n\nexport async function encodeSubscribeResponse(w: Writer, resp: SubscribeResponse, version: Version): Promise<void> {\n\tswitch (version) {\n\t\tcase Version.DRAFT_01:\n\t\tcase Version.DRAFT_02:\n\t\t\tif (\"ok\" in resp) {\n\t\t\t\tawait resp.ok.encode(w, version);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"only SUBSCRIBE_OK is supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t\tcase Version.DRAFT_03:\n\t\tcase Version.DRAFT_04:\n\t\t\tif (\"ok\" in resp) {\n\t\t\t\tawait w.u53(0x0);\n\t\t\t\tawait resp.ok.encode(w, version);\n\t\t\t} else if (\"drop\" in resp) {\n\t\t\t\tawait w.u53(0x1);\n\t\t\t\tawait resp.drop.encode(w);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"SUBSCRIBE_START/END not supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// Draft-05+: SUBSCRIBE_OK is gone; START/END/DROP carry the resolved range.\n\t\t\tif (\"start\" in resp) {\n\t\t\t\tawait w.u53(0x0);\n\t\t\t\tawait resp.start.encode(w);\n\t\t\t} else if (\"end\" in resp) {\n\t\t\t\tawait w.u53(0x1);\n\t\t\t\tawait resp.end.encode(w);\n\t\t\t} else if (\"drop\" in resp) {\n\t\t\t\tawait w.u53(0x2);\n\t\t\t\tawait resp.drop.encode(w);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"SUBSCRIBE_OK not supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\nexport async function decodeSubscribeResponse(r: Reader, version: Version): Promise<SubscribeResponse> {\n\tswitch (version) {\n\t\tcase Version.DRAFT_01:\n\t\tcase Version.DRAFT_02:\n\t\t\treturn { ok: await SubscribeOk.decode(r, version) };\n\t\tcase Version.DRAFT_03:\n\t\tcase Version.DRAFT_04: {\n\t\t\tconst typ = await r.u53();\n\t\t\tswitch (typ) {\n\t\t\t\tcase 0x0:\n\t\t\t\t\treturn { ok: await SubscribeOk.decode(r, version) };\n\t\t\t\tcase 0x1:\n\t\t\t\t\treturn { drop: await SubscribeDrop.decode(r) };\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`unknown subscribe response type: ${typ}`);\n\t\t\t}\n\t\t}\n\t\tdefault: {\n\t\t\tconst typ = await r.u53();\n\t\t\tswitch (typ) {\n\t\t\t\tcase 0x0:\n\t\t\t\t\treturn { start: await SubscribeStart.decode(r) };\n\t\t\t\tcase 0x1:\n\t\t\t\t\treturn { end: await SubscribeEnd.decode(r) };\n\t\t\t\tcase 0x2:\n\t\t\t\t\treturn { drop: await SubscribeDrop.decode(r) };\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`unknown subscribe response type: ${typ}`);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Like {@link decodeSubscribeResponse} but resolves `undefined` on a clean FIN. */\nexport async function decodeSubscribeResponseMaybe(\n\tr: Reader,\n\tversion: Version,\n): Promise<SubscribeResponse | undefined> {\n\tif (await r.done()) return undefined;\n\treturn decodeSubscribeResponse(r, version);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"subscribe.js","sourceRoot":"","sources":["../../src/lite/subscribe.ts"],"names":[],"mappings":"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","sourcesContent":["import * as Path from \"../path.ts\";\nimport type { Reader, Writer } from \"../stream.ts\";\nimport * as Message from \"./message.ts\";\nimport { hasFrameBounds, hasGroupOrder, hasStreamCount, resolvesStart, Version } from \"./version.ts\";\n\n/**\n * Encode the `Group Start` field shared by SUBSCRIBE and SUBSCRIBE_UPDATE.\n *\n * Lite-06 writes the raw floor (`undefined` and 0 are the same absence of a constraint),\n * while a pre-06 wire encodes the sequence + 1 and gets a vacuous floor folded back to\n * absent: an explicit group 0 there means \"replay from the beginning\", which is not what\n * a floor of 0 asks for.\n */\nasync function encodeStartGroup(w: Writer, version: Version, startGroup?: number) {\n\tif (resolvesStart(version)) {\n\t\tawait w.u53(startGroup ?? 0);\n\t\treturn;\n\t}\n\tawait w.u53(startGroup !== undefined && startGroup > 0 ? startGroup + 1 : 0);\n}\n\n/**\n * Decode the `Group Start` field shared by SUBSCRIBE and SUBSCRIBE_UPDATE.\n *\n * The inverse of {@link encodeStartGroup}. Callers canonicalize with\n * {@link canonicalStartGroup} once the frame bounds are known.\n */\nasync function decodeStartGroup(r: Reader, version: Version): Promise<number | undefined> {\n\tconst value = await r.u53();\n\tif (resolvesStart(version)) return value;\n\treturn value > 0 ? value - 1 : undefined;\n}\n\n/**\n * Canonicalize a decoded floor: a lite-06 `Group Start` of 0 with no frame offset is the\n * same absence of a constraint as no floor at all, so it decodes as undefined. Group 0\n * stays named only when a `Frame Start` actually qualifies it (a subscription can resume\n * partway through group 0: a catalog never leaves it).\n */\nfunction canonicalStartGroup(version: Version, startGroup: number | undefined, startFrame: number): number | undefined {\n\tif (resolvesStart(version) && startGroup === 0 && startFrame === 0) return undefined;\n\treturn startGroup;\n}\n\n/**\n * Encode the trailing `Frame Start` / `Frame End` pair shared by SUBSCRIBE and\n * SUBSCRIBE_UPDATE. A no-op before lite-06, which has nowhere to put them.\n */\nasync function encodeFrameBounds(\n\tw: Writer,\n\tversion: Version,\n\t{\n\t\tstartGroup,\n\t\tstartFrame,\n\t\tendGroup,\n\t\tendFrame,\n\t}: { startGroup?: number; startFrame: number; endGroup?: number; endFrame?: number },\n) {\n\tif ((startFrame !== 0 && startGroup === undefined) || (endFrame !== undefined && endGroup === undefined)) {\n\t\tthrow new Error(\"frame bound without a group bound\");\n\t}\n\n\tif (!hasFrameBounds(version)) {\n\t\t// Silently widening to the whole group would deliver frames we excluded.\n\t\tif (startFrame !== 0 || endFrame !== undefined) {\n\t\t\tthrow new Error(\"frame bounds not supported for this version\");\n\t\t}\n\t\treturn;\n\t}\n\n\tawait w.u53(startFrame);\n\tawait w.u53(endFrame !== undefined ? endFrame + 1 : 0);\n}\n\n/**\n * Decode the trailing `Frame Start` / `Frame End` pair, defaulting to the whole group.\n *\n * A frame bound without the group bound it qualifies is a protocol violation: frames\n * are numbered per group, so there is nothing to count from.\n */\nasync function decodeFrameBounds(\n\tr: Reader,\n\tversion: Version,\n\tstartGroup?: number,\n\tendGroup?: number,\n): Promise<{ startFrame: number; endFrame?: number }> {\n\tif (!hasFrameBounds(version)) {\n\t\treturn { startFrame: 0 };\n\t}\n\n\tconst startFrame = await r.u53();\n\tconst endFrame = await r.u53();\n\n\tif ((startFrame !== 0 && startGroup === undefined) || (endFrame !== 0 && endGroup === undefined)) {\n\t\tthrow new Error(\"frame bound without a group bound\");\n\t}\n\n\treturn { startFrame, endFrame: endFrame > 0 ? endFrame - 1 : undefined };\n}\n\n/** Step over the retired `Ordered` byte on a version whose layout still has it. */\nasync function skipGroupOrder(r: Reader, version: Version) {\n\tif (hasGroupOrder(version)) await r.bool();\n}\n\n/** Write the retired `Ordered` byte as 0, keeping a deployed version's field offsets. */\nasync function padGroupOrder(w: Writer, version: Version) {\n\tif (hasGroupOrder(version)) await w.bool(false);\n}\n\n/**\n * Exclusive model/local cap from a decoded inclusive last group.\n *\n * The wire's `Group End` is inclusive once decoded; the track model and `setGroups` are\n * exclusive. `undefined` stays unbounded.\n */\nexport function exclusiveGroupEnd(inclusive?: number): number | undefined {\n\treturn inclusive === undefined ? undefined : inclusive + 1;\n}\n\n/** The error for a requested range the wire cannot carry; see {@link emptyRange}. */\nexport const EMPTY_RANGE = \"empty subscription range cannot be encoded\";\n\n/**\n * Inclusive last group a Subscribe message carries, from an exclusive model end.\n *\n * Empty (`0`) cannot be encoded: the wire's 0 means unbounded. Callers refuse an empty\n * requested range with {@link emptyRange} before reaching here.\n */\nexport function inclusiveGroupEnd(exclusive?: number): number | undefined {\n\tif (exclusive === undefined) return undefined;\n\tif (exclusive === 0) throw new Error(EMPTY_RANGE);\n\treturn exclusive - 1;\n}\n\n/**\n * Whether a requested range asks for nothing.\n *\n * The wire has no encoding for one: its bounds are inclusive, so flooring the end would\n * either hand back the group the caller excluded (0 means unbounded) or invert the\n * range once the two bounds meet. An absent start is the live edge, so it only empties\n * the range when the end is 0.\n */\nexport function emptyRange({ startGroup, endGroup }: { startGroup?: number; endGroup?: number }): boolean {\n\treturn endGroup !== undefined && (startGroup ?? 0) >= endGroup;\n}\n\nexport class SubscribeUpdate {\n\tpriority: number;\n\t/** Subscriber max latency in milliseconds; zero skips once a newer group is available. */\n\tmaxAge: number;\n\tstartGroup?: number;\n\tendGroup?: number;\n\t/** See {@link Subscribe.startFrame}. */\n\tstartFrame: number;\n\t/** See {@link Subscribe.endFrame}. */\n\tendFrame?: number;\n\n\tconstructor(props: {\n\t\tpriority: number;\n\t\tmaxAge?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t\tstartFrame?: number;\n\t\tendFrame?: number;\n\t}) {\n\t\tthis.priority = props.priority;\n\t\tthis.maxAge = props.maxAge ?? 0;\n\t\tthis.startGroup = props.startGroup;\n\t\tthis.endGroup = props.endGroup;\n\t\tthis.startFrame = props.startFrame ?? 0;\n\t\tthis.endFrame = props.endFrame;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tawait padGroupOrder(w, version);\n\t\t\t\tawait w.u53(this.maxAge);\n\t\t\t\tawait encodeStartGroup(w, version, this.startGroup);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tawait encodeFrameBounds(w, version, this);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(r: Reader, version: Version): Promise<SubscribeUpdate> {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\treturn new SubscribeUpdate({ priority: await r.u8() });\n\t\t\tdefault: {\n\t\t\t\tconst priority = await r.u8();\n\t\t\t\tawait skipGroupOrder(r, version);\n\t\t\t\tconst maxAge = await r.u53();\n\t\t\t\tconst startGroup = await decodeStartGroup(r, version);\n\t\t\t\tconst endGroup = (await r.u53()) || undefined;\n\t\t\t\tconst end = endGroup !== undefined ? endGroup - 1 : undefined;\n\t\t\t\tconst frames = await decodeFrameBounds(r, version, startGroup, end);\n\t\t\t\treturn new SubscribeUpdate({\n\t\t\t\t\tpriority,\n\t\t\t\t\tmaxAge,\n\t\t\t\t\tstartGroup: canonicalStartGroup(version, startGroup, frames.startFrame),\n\t\t\t\t\tendGroup: end,\n\t\t\t\t\t...frames,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<SubscribeUpdate> {\n\t\treturn Message.decode(r, (r) => SubscribeUpdate.#decode(r, version));\n\t}\n\n\tstatic async decodeMaybe(r: Reader, version: Version): Promise<SubscribeUpdate | undefined> {\n\t\treturn Message.decodeMaybe(r, (r) => SubscribeUpdate.#decode(r, version));\n\t}\n}\n\nexport class Subscribe {\n\tid: bigint;\n\tbroadcast: Path.Valid;\n\ttrack: string;\n\tpriority: number;\n\t/** Subscriber max latency in milliseconds; zero skips once a newer group is available. */\n\tmaxAge: number;\n\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\t/**\n\t * First frame to deliver within `startGroup`'s group; 0 is the whole group.\n\t * Lite-06+. It qualifies the named group, so it needs `startGroup` to name one\n\t * (defined, including 0: group 0 can host a mid-group resume).\n\t */\n\tstartFrame: number;\n\n\t/**\n\t * Last frame to deliver (inclusive) within `endGroup`'s group, or undefined for the\n\t * whole group. Lite-06+, and meaningless without an explicit `endGroup`.\n\t */\n\tendFrame?: number;\n\n\tconstructor(props: {\n\t\tid: bigint;\n\t\tbroadcast: Path.Valid;\n\t\ttrack: string;\n\t\tpriority: number;\n\t\tmaxAge?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t\tstartFrame?: number;\n\t\tendFrame?: number;\n\t}) {\n\t\tthis.id = props.id;\n\t\tthis.broadcast = props.broadcast;\n\t\tthis.track = props.track;\n\t\tthis.priority = props.priority;\n\t\tthis.maxAge = props.maxAge ?? 0;\n\t\tthis.startGroup = props.startGroup;\n\t\tthis.endGroup = props.endGroup;\n\t\tthis.startFrame = props.startFrame ?? 0;\n\t\tthis.endFrame = props.endFrame;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tawait w.u62(this.id);\n\t\tawait w.string(Path.encode(this.broadcast));\n\t\tawait w.string(this.track);\n\t\tawait w.u8(this.priority);\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tawait padGroupOrder(w, version);\n\t\t\t\tawait w.u53(this.maxAge);\n\t\t\t\tawait encodeStartGroup(w, version, this.startGroup);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tawait encodeFrameBounds(w, version, this);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(r: Reader, version: Version): Promise<Subscribe> {\n\t\tconst id = await r.u62();\n\t\tconst broadcast = Path.decode(await r.string());\n\t\tconst track = await r.string();\n\t\tconst priority = await r.u8();\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_01:\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\treturn new Subscribe({ id, broadcast, track, priority });\n\t\t\tdefault: {\n\t\t\t\tawait skipGroupOrder(r, version);\n\t\t\t\tconst maxAge = await r.u53();\n\t\t\t\tconst startGroup = await decodeStartGroup(r, version);\n\t\t\t\tconst endGroup = (await r.u53()) || undefined;\n\t\t\t\tconst end = endGroup !== undefined ? endGroup - 1 : undefined;\n\t\t\t\tconst frames = await decodeFrameBounds(r, version, startGroup, end);\n\t\t\t\treturn new Subscribe({\n\t\t\t\t\tid,\n\t\t\t\t\tbroadcast,\n\t\t\t\t\ttrack,\n\t\t\t\t\tpriority,\n\t\t\t\t\tmaxAge,\n\t\t\t\t\tstartGroup: canonicalStartGroup(version, startGroup, frames.startFrame),\n\t\t\t\t\tendGroup: end,\n\t\t\t\t\t...frames,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<Subscribe> {\n\t\treturn Message.decode(r, (r) => Subscribe.#decode(r, version));\n\t}\n}\n\n/**\n * Publisher's acknowledgement on the Subscribe Stream for drafts 01-04.\n *\n * Draft-05+ replaced this with implicit acceptance plus {@link SubscribeStart} /\n * {@link SubscribeEnd}; the immutable codec/timescale/cache moved to TRACK_INFO.\n */\nexport class SubscribeOk {\n\tpriority: number;\n\t/** Accepted subscriber max latency in milliseconds. */\n\tmaxAge: number;\n\tstartGroup?: number;\n\tendGroup?: number;\n\n\tconstructor({\n\t\tpriority = 0,\n\t\tmaxAge = 0,\n\t\tstartGroup = undefined,\n\t\tendGroup = undefined,\n\t}: {\n\t\tpriority?: number;\n\t\tmaxAge?: number;\n\t\tstartGroup?: number;\n\t\tendGroup?: number;\n\t}) {\n\t\tthis.priority = priority;\n\t\tthis.maxAge = maxAge;\n\t\tthis.startGroup = startGroup;\n\t\tthis.endGroup = endGroup;\n\t}\n\n\tasync #encode(w: Writer, version: Version) {\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\t// noop\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_01:\n\t\t\t\tawait w.u8(this.priority ?? 0);\n\t\t\t\tbreak;\n\t\t\t// Draft-05+ never sends SUBSCRIBE_OK, but keep the field layout matching\n\t\t\t// Draft-03/04 so a stray future use stays well-formed.\n\t\t\tdefault:\n\t\t\t\tawait w.u8(this.priority);\n\t\t\t\tawait padGroupOrder(w, version);\n\t\t\t\tawait w.u53(this.maxAge);\n\t\t\t\tawait w.u53(this.startGroup !== undefined ? this.startGroup + 1 : 0);\n\t\t\t\tawait w.u53(this.endGroup !== undefined ? this.endGroup + 1 : 0);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tstatic async #decode(version: Version, r: Reader): Promise<SubscribeOk> {\n\t\tlet priority: number | undefined;\n\t\tlet maxAge: number | undefined;\n\t\tlet startGroup: number | undefined;\n\t\tlet endGroup: number | undefined;\n\n\t\tswitch (version) {\n\t\t\tcase Version.DRAFT_02:\n\t\t\t\t// noop\n\t\t\t\tbreak;\n\t\t\tcase Version.DRAFT_01:\n\t\t\t\tpriority = await r.u8();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tpriority = await r.u8();\n\t\t\t\tawait skipGroupOrder(r, version);\n\t\t\t\tmaxAge = await r.u53();\n\t\t\t\tstartGroup = await r.u53();\n\t\t\t\tendGroup = await r.u53();\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn new SubscribeOk({\n\t\t\tpriority,\n\t\t\tmaxAge,\n\t\t\tstartGroup: startGroup !== undefined && startGroup > 0 ? startGroup - 1 : undefined,\n\t\t\tendGroup: endGroup !== undefined && endGroup > 0 ? endGroup - 1 : undefined,\n\t\t});\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, (w) => this.#encode(w, version));\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<SubscribeOk> {\n\t\treturn Message.decode(r, SubscribeOk.#decode.bind(SubscribeOk, version));\n\t}\n}\n\n/**\n * Resolves the absolute start group of a Draft-05+ subscription. The first message\n * the publisher sends, once the start group is known. A value greater than the\n * requested start implicitly drops the leading range.\n *\n * There is no start frame: a partial group is only served to a subscriber that asked\n * for one, so delivery begins either at the requested `startFrame` (when this is the\n * requested group) or at frame 0 (when the publisher resolved to a later one).\n */\nexport class SubscribeStart {\n\tgroup: number;\n\n\tconstructor(group: number) {\n\t\tthis.group = group;\n\t}\n\n\tasync encode(w: Writer): Promise<void> {\n\t\treturn Message.encode(w, async (w) => {\n\t\t\tawait w.u53(this.group);\n\t\t});\n\t}\n\n\tstatic async decode(r: Reader): Promise<SubscribeStart> {\n\t\treturn Message.decode(r, async (r) => new SubscribeStart(await r.u53()));\n\t}\n}\n\n/**\n * Signals that no group at or after `group` (exclusive upper bound) will be produced\n * on a Draft-05+ subscription. `0` means the track ended before producing any groups.\n */\nexport class SubscribeEnd {\n\t/** The exclusive final group sequence: the first sequence that will never be produced. */\n\tgroup: number;\n\n\t/**\n\t * The number of group streams the publisher opened for this subscription.\n\t * Draft-07+ only; not on the wire before, where it decodes as 0.\n\t */\n\tstreams: number;\n\n\tconstructor(group: number, streams = 0) {\n\t\tthis.group = group;\n\t\tthis.streams = streams;\n\t}\n\n\tasync encode(w: Writer, version: Version): Promise<void> {\n\t\treturn Message.encode(w, async (w) => {\n\t\t\tawait w.u53(this.group);\n\t\t\tif (hasStreamCount(version)) await w.u53(this.streams);\n\t\t});\n\t}\n\n\tstatic async decode(r: Reader, version: Version): Promise<SubscribeEnd> {\n\t\treturn Message.decode(\n\t\t\tr,\n\t\t\tasync (r) => new SubscribeEnd(await r.u53(), hasStreamCount(version) ? await r.u53() : 0),\n\t\t);\n\t}\n}\n\n/// Indicates that one or more groups have been dropped.\n///\n/// Draft-03 to Draft-06 only: Draft-07 counts group streams in SUBSCRIBE_END instead.\nexport class SubscribeDrop {\n\tstart: number;\n\tend: number;\n\terror: number;\n\n\tconstructor(props: { start: number; end: number; error: number }) {\n\t\tthis.start = props.start;\n\t\tthis.end = props.end;\n\t\tthis.error = props.error;\n\t}\n\n\tasync #encode(w: Writer) {\n\t\tawait w.u53(this.start);\n\t\tawait w.u53(this.end);\n\t\tawait w.u53(this.error);\n\t}\n\n\tstatic async #decode(r: Reader): Promise<SubscribeDrop> {\n\t\treturn new SubscribeDrop({ start: await r.u53(), end: await r.u53(), error: await r.u53() });\n\t}\n\n\tasync encode(w: Writer): Promise<void> {\n\t\treturn Message.encode(w, this.#encode.bind(this));\n\t}\n\n\tstatic async decode(r: Reader): Promise<SubscribeDrop> {\n\t\treturn Message.decode(r, SubscribeDrop.#decode);\n\t}\n}\n\n/**\n * A response message on the subscribe stream, prefixed with a type discriminator\n * on Draft-03+.\n *\n * The discriminator is version-dependent:\n * - Draft-03/04: `0x0` SUBSCRIBE_OK, `0x1` SUBSCRIBE_DROP.\n * - Draft-05/06: `0x0` SUBSCRIBE_START, `0x1` SUBSCRIBE_END, `0x2` SUBSCRIBE_DROP\n * (SUBSCRIBE_OK was removed; acceptance is implicit).\n * - Draft-07+: `0x0` SUBSCRIBE_START, `0x1` SUBSCRIBE_END (SUBSCRIBE_DROP was removed).\n */\nexport type SubscribeResponse =\n\t| { ok: SubscribeOk }\n\t| { start: SubscribeStart }\n\t| { end: SubscribeEnd }\n\t| { drop: SubscribeDrop };\n\nexport async function encodeSubscribeResponse(w: Writer, resp: SubscribeResponse, version: Version): Promise<void> {\n\tswitch (version) {\n\t\tcase Version.DRAFT_01:\n\t\tcase Version.DRAFT_02:\n\t\t\tif (\"ok\" in resp) {\n\t\t\t\tawait resp.ok.encode(w, version);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"only SUBSCRIBE_OK is supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t\tcase Version.DRAFT_03:\n\t\tcase Version.DRAFT_04:\n\t\t\tif (\"ok\" in resp) {\n\t\t\t\tawait w.u53(0x0);\n\t\t\t\tawait resp.ok.encode(w, version);\n\t\t\t} else if (\"drop\" in resp) {\n\t\t\t\tawait w.u53(0x1);\n\t\t\t\tawait resp.drop.encode(w);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"SUBSCRIBE_START/END not supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// Draft-05+: SUBSCRIBE_OK is gone; START/END/DROP carry the resolved range.\n\t\t\tif (\"start\" in resp) {\n\t\t\t\tawait w.u53(0x0);\n\t\t\t\tawait resp.start.encode(w);\n\t\t\t} else if (\"end\" in resp) {\n\t\t\t\tawait w.u53(0x1);\n\t\t\t\tawait resp.end.encode(w, version);\n\t\t\t} else if (\"drop\" in resp && !hasStreamCount(version)) {\n\t\t\t\tawait w.u53(0x2);\n\t\t\t\tawait resp.drop.encode(w);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"subscribe response not supported for this version\");\n\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\nexport async function decodeSubscribeResponse(r: Reader, version: Version): Promise<SubscribeResponse> {\n\tswitch (version) {\n\t\tcase Version.DRAFT_01:\n\t\tcase Version.DRAFT_02:\n\t\t\treturn { ok: await SubscribeOk.decode(r, version) };\n\t\tcase Version.DRAFT_03:\n\t\tcase Version.DRAFT_04: {\n\t\t\tconst typ = await r.u53();\n\t\t\tswitch (typ) {\n\t\t\t\tcase 0x0:\n\t\t\t\t\treturn { ok: await SubscribeOk.decode(r, version) };\n\t\t\t\tcase 0x1:\n\t\t\t\t\treturn { drop: await SubscribeDrop.decode(r) };\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`unknown subscribe response type: ${typ}`);\n\t\t\t}\n\t\t}\n\t\tdefault: {\n\t\t\tconst typ = await r.u53();\n\t\t\tswitch (typ) {\n\t\t\t\tcase 0x0:\n\t\t\t\t\treturn { start: await SubscribeStart.decode(r) };\n\t\t\t\tcase 0x1:\n\t\t\t\t\treturn { end: await SubscribeEnd.decode(r, version) };\n\t\t\t\tcase 0x2:\n\t\t\t\t\tif (hasStreamCount(version)) throw new Error(`unknown subscribe response type: ${typ}`);\n\t\t\t\t\treturn { drop: await SubscribeDrop.decode(r) };\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`unknown subscribe response type: ${typ}`);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Like {@link decodeSubscribeResponse} but resolves `undefined` on a clean FIN. */\nexport async function decodeSubscribeResponseMaybe(\n\tr: Reader,\n\tversion: Version,\n): Promise<SubscribeResponse | undefined> {\n\tif (await r.done()) return undefined;\n\treturn decodeSubscribeResponse(r, version);\n}\n"]}
|
package/lite/subscriber.d.ts
CHANGED
|
@@ -1,54 +1,27 @@
|
|
|
1
|
-
import { Signal } from "@norskvideo/moq-signals";
|
|
2
1
|
import * as announce from "../announced";
|
|
3
2
|
import * as broadcast from "../broadcast";
|
|
4
|
-
import type { Probe as ProbeStats } from "../connection/stats";
|
|
5
3
|
import * as netGroup from "../group";
|
|
6
|
-
import { type
|
|
4
|
+
import { type Hop } from "../hop";
|
|
7
5
|
import * as Path from "../path";
|
|
8
|
-
import { type Reader } from "../stream";
|
|
9
6
|
import type * as track from "../track";
|
|
10
|
-
import type { Group as GroupMessage } from "./group";
|
|
11
|
-
import { type Setup } from "./setup";
|
|
12
7
|
import { Version } from "./version";
|
|
13
|
-
/**
|
|
14
|
-
* Options accepted by {@link Subscriber.announced}.
|
|
15
|
-
*/
|
|
16
|
-
export interface AnnouncedOptions {
|
|
17
|
-
/**
|
|
18
|
-
* If true, skip announcements whose hop chain contains this connection's
|
|
19
|
-
* own origin id. Useful for meshes that reflect announces back. Defaults
|
|
20
|
-
* to false for backwards compatibility: existing code (notably hang.live)
|
|
21
|
-
* relies on seeing its own publishes as the signal that a namespace
|
|
22
|
-
* published successfully.
|
|
23
|
-
*
|
|
24
|
-
* Only meaningful on lite-04/05, where the peer filters reflected announces
|
|
25
|
-
* on request (ANNOUNCE_REQUEST's `Exclude Hop`). Later versions dropped that
|
|
26
|
-
* field, so reflected announces are always skipped.
|
|
27
|
-
*/
|
|
28
|
-
ignoreSelf?: boolean;
|
|
29
|
-
}
|
|
30
8
|
export declare class Subscriber {
|
|
31
9
|
#private;
|
|
32
10
|
readonly version: Version;
|
|
33
|
-
readonly
|
|
11
|
+
readonly hop: Hop;
|
|
34
12
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* @param version - The protocol version
|
|
38
|
-
* @param origin - Origin id shared with the Publisher
|
|
39
|
-
* @param probe - Optional sink for the peer's PROBE estimates
|
|
40
|
-
* @param peerSetup - Optional peer SETUP slot for capability gating (lite-05+)
|
|
13
|
+
* Subscribe to broadcast announcements matching `scope`. Paths are relative
|
|
14
|
+
* to the session, not the scope.
|
|
41
15
|
*
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Subscribe to broadcast announcements under `prefix`.
|
|
16
|
+
* Reflected announces (those whose hop chain already includes this
|
|
17
|
+
* connection) are always dropped: moq-lite-06 has none to keep, and older
|
|
18
|
+
* versions stay consistent with that.
|
|
47
19
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
20
|
+
* Hidden routes (a `.`-prefixed segment below the scope's head) are left out unless
|
|
21
|
+
* `options.hidden` opts in. The opt-in rides the request on lite-07+; an older peer
|
|
22
|
+
* never hides anything, so the rule is also applied here.
|
|
50
23
|
*/
|
|
51
|
-
announced(
|
|
24
|
+
announced(scope?: Path.Pattern, options?: announce.Options): announce.Consumer;
|
|
52
25
|
/**
|
|
53
26
|
* Consumes a broadcast from the connection.
|
|
54
27
|
*
|
|
@@ -62,25 +35,11 @@ export declare class Subscriber {
|
|
|
62
35
|
consume(path: Path.Valid): broadcast.Consumer;
|
|
63
36
|
resolveTrackInfo(broadcast: Path.Valid, track: string): Promise<track.Info>;
|
|
64
37
|
fetchGroup(broadcast: Path.Valid, track: string, sequence: number, options?: track.FetchGroupOptions): Promise<netGroup.Consumer>;
|
|
38
|
+
runProbe(): Promise<void>;
|
|
65
39
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* @param stream - The stream to read frames from
|
|
69
|
-
*
|
|
70
|
-
* @internal
|
|
71
|
-
*/
|
|
72
|
-
runGroup(group: GroupMessage, stream: Reader): Promise<void>;
|
|
73
|
-
/**
|
|
74
|
-
* Receives QUIC datagrams and routes each to its subscription's track producer (lite-05 §6.4).
|
|
75
|
-
*
|
|
76
|
-
* Returns immediately on a non-datagram transport or pre-lite-05 version. A decode error or an
|
|
77
|
-
* unknown subscribe id drops that datagram without tearing down the session (best-effort); the
|
|
78
|
-
* loop ends only when the datagram stream closes.
|
|
79
|
-
*
|
|
80
|
-
* @internal
|
|
40
|
+
* Ends every subscribed track: cleanly for a deliberate close, or with `err` when the
|
|
41
|
+
* session died, since those tracks were cut off rather than ended.
|
|
81
42
|
*/
|
|
82
|
-
|
|
83
|
-
runProbe(): Promise<void>;
|
|
84
|
-
close(): void;
|
|
43
|
+
close(err?: Error): void;
|
|
85
44
|
}
|
|
86
45
|
//# sourceMappingURL=subscriber.d.ts.map
|
package/lite/subscriber.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../src/lite/subscriber.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"subscriber.d.ts","sourceRoot":"","sources":["../../src/lite/subscriber.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAI7C,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,EAAQ,KAAK,GAAG,EAAwE,MAAM,WAAW,CAAC;AAEjH,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AAInC,OAAO,KAAK,KAAK,KAAK,MAAM,aAAa,CAAC;AA8B1C,OAAO,EAON,OAAO,EACP,MAAM,cAAc,CAAC;AAsEtB,qBAAa,UAAU;;IAItB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAG1B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAsDlB;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,KAAK,GAAE,IAAI,CAAC,OAA4B,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAKjG;IAsRD;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAE5C;IA6OK,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAKhF;IAIK,UAAU,CACf,SAAS,EAAE,IAAI,CAAC,KAAK,EACrB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,KAAK,CAAC,iBAAsB,GACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAgC5B;IA0YK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA0C9B;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,QAgBhB;CACD"}
|