@blockcast/mmt-transport 0.2.1 → 0.2.2-main.149f78a4adae

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 (96) hide show
  1. package/README.md +19 -53
  2. package/dist/driad-discovery.d.ts.map +1 -1
  3. package/dist/driad-discovery.js +1 -5
  4. package/dist/driad-discovery.js.map +1 -1
  5. package/dist/index.d.ts +6 -5
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +4 -8
  8. package/dist/index.js.map +1 -1
  9. package/dist/mmt-transport.no-modules.js +517 -8
  10. package/dist/mmt-transport.no-modules.js.map +4 -4
  11. package/dist/moqt-priority.d.ts +28 -0
  12. package/dist/moqt-priority.d.ts.map +1 -0
  13. package/dist/moqt-priority.js +30 -0
  14. package/dist/moqt-priority.js.map +1 -0
  15. package/dist/multicast-catalog-policy.d.ts +37 -0
  16. package/dist/multicast-catalog-policy.d.ts.map +1 -0
  17. package/dist/multicast-catalog-policy.js +285 -0
  18. package/dist/multicast-catalog-policy.js.map +1 -0
  19. package/dist/multicast-orchestrator.d.ts +4 -0
  20. package/dist/multicast-orchestrator.d.ts.map +1 -1
  21. package/dist/multicast-orchestrator.js +49 -2
  22. package/dist/multicast-orchestrator.js.map +1 -1
  23. package/dist/multicast-signaling-reconciler.d.ts +37 -0
  24. package/dist/multicast-signaling-reconciler.d.ts.map +1 -0
  25. package/dist/multicast-signaling-reconciler.js +158 -0
  26. package/dist/multicast-signaling-reconciler.js.map +1 -0
  27. package/dist/multicast-subscription-pool.d.ts.map +1 -1
  28. package/dist/multicast-subscription-pool.js +4 -0
  29. package/dist/multicast-subscription-pool.js.map +1 -1
  30. package/dist/no-modules.d.ts +35 -1
  31. package/dist/no-modules.d.ts.map +1 -1
  32. package/dist/no-modules.js +25 -1
  33. package/dist/no-modules.js.map +1 -1
  34. package/dist/stall-detector.d.ts +10 -0
  35. package/dist/stall-detector.d.ts.map +1 -1
  36. package/dist/stall-detector.js +21 -0
  37. package/dist/stall-detector.js.map +1 -1
  38. package/dist/takeover.d.ts +3 -0
  39. package/dist/takeover.d.ts.map +1 -1
  40. package/dist/takeover.js +35 -2
  41. package/dist/takeover.js.map +1 -1
  42. package/dist/transport-manager.d.ts +1 -11
  43. package/dist/transport-manager.d.ts.map +1 -1
  44. package/dist/transport-manager.js +3 -11
  45. package/dist/transport-manager.js.map +1 -1
  46. package/dist/types.d.ts +14 -75
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/types.js.map +1 -1
  49. package/package.json +7 -9
  50. package/src/driad-discovery.ts +1 -5
  51. package/src/index.ts +41 -29
  52. package/src/moqt-priority.ts +40 -0
  53. package/src/multicast-catalog-policy.ts +375 -0
  54. package/src/multicast-orchestrator.ts +47 -3
  55. package/src/multicast-signaling-reconciler.ts +153 -0
  56. package/src/multicast-subscription-pool.ts +4 -0
  57. package/src/no-modules.ts +48 -1
  58. package/src/stall-detector.ts +37 -0
  59. package/src/takeover.ts +41 -3
  60. package/src/transport-manager.ts +4 -13
  61. package/src/types.ts +11 -95
  62. package/dist/endpoint-config.test.d.ts +0 -2
  63. package/dist/endpoint-config.test.d.ts.map +0 -1
  64. package/dist/endpoint-config.test.js +0 -39
  65. package/dist/endpoint-config.test.js.map +0 -1
  66. package/dist/fec-client.d.ts +0 -442
  67. package/dist/fec-client.d.ts.map +0 -1
  68. package/dist/fec-client.js +0 -789
  69. package/dist/fec-client.js.map +0 -1
  70. package/dist/fec-client.test.d.ts +0 -8
  71. package/dist/fec-client.test.d.ts.map +0 -1
  72. package/dist/fec-client.test.js +0 -112
  73. package/dist/fec-client.test.js.map +0 -1
  74. package/dist/multicast-subscription-pool.test.d.ts +0 -2
  75. package/dist/multicast-subscription-pool.test.d.ts.map +0 -1
  76. package/dist/multicast-subscription-pool.test.js +0 -108
  77. package/dist/multicast-subscription-pool.test.js.map +0 -1
  78. package/dist/multicast-tier.test.d.ts +0 -2
  79. package/dist/multicast-tier.test.d.ts.map +0 -1
  80. package/dist/multicast-tier.test.js +0 -75
  81. package/dist/multicast-tier.test.js.map +0 -1
  82. package/dist/stall-detector.test.d.ts +0 -2
  83. package/dist/stall-detector.test.d.ts.map +0 -1
  84. package/dist/stall-detector.test.js +0 -33
  85. package/dist/stall-detector.test.js.map +0 -1
  86. package/dist/transport-manager.test.d.ts +0 -2
  87. package/dist/transport-manager.test.d.ts.map +0 -1
  88. package/dist/transport-manager.test.js +0 -155
  89. package/dist/transport-manager.test.js.map +0 -1
  90. package/src/endpoint-config.test.ts +0 -54
  91. package/src/fec-client.test.ts +0 -140
  92. package/src/fec-client.ts +0 -1103
  93. package/src/multicast-subscription-pool.test.ts +0 -115
  94. package/src/multicast-tier.test.ts +0 -80
  95. package/src/stall-detector.test.ts +0 -34
  96. package/src/transport-manager.test.ts +0 -192
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @blockcast/mmt-transport
2
2
 
3
- Unified transport manager for browser MoQ players. Picks the right transport per stream — MoQ over WebTransport (moqtail and moqlite/moq-lib wire protocols), SSM multicast via Direct Sockets in an Isolated Web App, AMT tunneling (RFC 7450) with DRIAD relay discovery (RFC 8777), and a WebSocket fallback — and keeps an FEC pipeline, a progressive ABR controller, and an A/V `SharedClock` plumbed through every mode. WebTransport-first promotion means a tab connects immediately for fast channel select, then promotes in the background to native multicast where the platform supports it.
3
+ Unified transport manager for browser MoQ players. Picks the right transport per stream — MoQ over WebTransport (moqtail and moqlite/moq-lib wire protocols), SSM multicast via Direct Sockets in an Isolated Web App, AMT tunneling (RFC 7450) with DRIAD relay discovery (RFC 8777), and a WebSocket fallback — and keeps a progressive ABR controller and A/V `SharedClock` plumbed through every mode. WebTransport-first promotion means a tab connects immediately for fast channel select, then promotes in the background to native multicast where the platform supports it.
4
4
 
5
5
  ## Install
6
6
 
@@ -8,26 +8,21 @@ Unified transport manager for browser MoQ players. Picks the right transport per
8
8
  pnpm add @blockcast/mmt-transport
9
9
  ```
10
10
 
11
- `@blockcast/mmt-fec` and `mmt-wasm` are pulled in as workspace dependencies for the FEC client. Browser builds also need a way to load `mmt_wasm.js` — see `loadMmtWasm` below for the search paths.
12
-
13
11
  ## Quick start
14
12
 
15
13
  ```ts
16
14
  import {
17
15
  TransportManager,
18
- MoqFecClient,
19
16
  SharedClock,
20
17
  } from "@blockcast/mmt-transport"
21
18
 
22
19
  const transport = new TransportManager()
23
- const fec = await MoqFecClient.create({ symbolSize: 1280, k: 10, p: 3, interleaveDepth: 30 })
24
20
  const clock = new SharedClock()
25
21
 
26
22
  transport.setPacketCallback((data) => {
27
- // Hand the raw MMTP packet to the FEC + container pipeline.
28
- // For MMTP packets use MmtFecClient.processPacket; for MoQ objects
29
- // use MoqFecClient.addSourceSymbol / addRepairSymbol.
30
- fec.addSourceSymbol(blockId, esi, new Uint8Array(data))
23
+ // Hand raw packets to @blockcast/mmt-container. Container/FEC state stays
24
+ // downstream of transport selection.
25
+ router.processPacket(new Uint8Array(data), "multicast")
31
26
  })
32
27
 
33
28
  transport.setStateCallback((s) => console.log("[transport] mode=", s.mode))
@@ -43,17 +38,16 @@ await transport.connect({
43
38
  })
44
39
  ```
45
40
 
46
- The manager owns capability detection, transport selection, and the bandwidth/loss bookkeeping that drives ABR. It does not own the container layer or the MoQ session; it hands raw `ArrayBuffer` packets to whatever consumer you wire up via `setPacketCallback`. For MMTP-on-multicast flows that want bundled FEC + MFU reassembly out of the box, use `setupMmtFec` from `./fec`.
41
+ The manager owns capability detection, transport selection, and the bandwidth/loss bookkeeping that drives ABR. It does not own the container, FEC, renderer, or MoQ session; it hands raw `ArrayBuffer` packets to the consumer wired through `setPacketCallback`.
47
42
 
48
43
  ## Exports
49
44
 
50
45
  | Path | Purpose |
51
46
  |------|---------|
52
- | `@blockcast/mmt-transport` | `TransportManager`, FEC re-exports, DRIAD, AMT, ABR, types |
53
- | `@blockcast/mmt-transport/fec` | `MmtFecClient`, `MoqFecClient`, `loadMmtWasm`, FEC OTI types |
47
+ | `@blockcast/mmt-transport` | `TransportManager`, DRIAD, AMT, ABR, repair-track naming, types |
54
48
  | `@blockcast/mmt-transport/clock` | `SharedClock`, `SYNC_TOLERANCE_US`, `PTS_OFFSET_US` |
55
49
 
56
- The root export also re-emits the FEC and clock surfaces for convenience, so a single `import { TransportManager, MoqFecClient, SharedClock } from "@blockcast/mmt-transport"` works in most apps. Use the subpath exports when you want tree-shaking to drop the parts you don't use (e.g. a publisher-only tool that never instantiates `TransportManager`).
50
+ The root export also re-emits the clock surface. Use the clock subpath when you want a narrower dependency graph.
57
51
 
58
52
  ## Transport matrix
59
53
 
@@ -74,7 +68,7 @@ Two MoQ wire protocols are supported behind a single WebTransport session, dispa
74
68
  - **moqtail** — current IETF MOQT draft. Uses fetch-style subscriptions, group/object addressing, and the `FEC_CONFIG` control message (`0x50`) defined in `draft-ramadan-moq-fec-00`. Repair tracks are addressed by appending `/repair` to the source track path; helpers `repairTrackPath`, `isRepairTrack`, and `sourceTrackFromRepair` are exported from the root.
75
69
  - **moqlite / moq-lib** — older moq.dev draft. Used by the `@moq/hang` web component and the moq-lib publisher. Same WebTransport carrier, simpler control plane.
76
70
 
77
- The transport manager itself does not implement either protocol stack — those live in the player libraries (`@moq/hang`, `moqtail-ts`). What this package provides for MoQ flows is the FEC plumbing (`MoqFecClient`), repair-track naming helpers, and the `MoqFecConfig` / `RepairObjectHeader` types used to ferry FEC parameters from publisher to subscriber inside the MoQ control stream.
71
+ The transport manager itself does not implement either protocol stack — those live in the player libraries (`@moq/hang`, `moqtail-ts`). This package provides repair-track naming helpers and the `MoqFecConfig` / `RepairObjectHeader` signaling types. Decode and recovery state belongs to `@blockcast/mmt-container` or `@blockcast/fec-worker`.
78
72
 
79
73
  ## SSM multicast
80
74
 
@@ -117,42 +111,14 @@ Browsers can't issue raw DNS queries, so `DRIADDiscovery` tries three transports
117
111
 
118
112
  Discovered relays are cached for 5 minutes per source address. `selectBestRelay` orders by RFC priority and then by an HTTP HEAD-based RTT probe to break ties.
119
113
 
120
- ## FEC client (`./fec` export)
121
-
122
- Two client classes, both backed by `mmt-wasm` (workspace dep `mmt-wasm`):
123
-
124
- ### `MmtFecClient` — for MMTP-over-multicast
125
-
126
- Wraps the libmmt RaptorQ decoder plus a TypeScript MFU reassembler. Designed to sit directly on the multicast packet path:
127
-
128
- ```
129
- window.multicast packet → MmtFecClient.processPacket(packet)
130
- │
131
- ├─ FI=0/1/2/3 → MfuReassembler.addFragment → onMfuReady(mfu)
132
- └─ fec_type≠0 → wasm.add_repair(sbn, esi, …) → onMfuReady(mfu, recoveredViaFec=true)
133
- ```
134
-
135
- `createMulticastFecHandler(client)` returns an `(ArrayBuffer) => void` callback you can pass straight to `transport.setPacketCallback`. The `ProcessingStats` it reports — `mfuComplete`, `mfuReassembled`, `fecBlocksRecovered`, `fecRecoveryRate`, `greenFillFrames` — feed straight into the ABR controller's `setFecStats`.
136
-
137
- Configuration uses the RFC 6330 OTI directly (`configureFec(oti)` after the catalog is parsed) plus an `interleaveDepth` matched to the publisher's interleave window.
138
-
139
- ### `MoqFecClient` — for MoQ-over-WebTransport
140
-
141
- Symbol-oriented API matching `draft-ramadan-moq-fec-00`. Encoder side mints source + repair symbols from a group payload; decoder side reassembles when a block has K of (K+P) symbols:
142
-
143
- ```ts
144
- const client = await MoqFecClient.create({ symbolSize: 1280, k: 10, p: 3, interleaveDepth: 30 })
145
-
146
- // Subscriber path
147
- client.setOti(otiFromFecConfigMessage)
148
- onSourceSymbol((blockId, esi, symbol) => {
149
- const decoded = client.addSourceSymbol(blockId, esi, symbol)
150
- if (decoded) processGroup(decoded)
151
- })
152
- onRepairSymbol((blockId, esi, symbol) => client.addRepairSymbol(blockId, esi, symbol))
153
- ```
114
+ ## FEC ownership
154
115
 
155
- `loadMmtWasm()` searches a list of paths for the `mmt_wasm.js` glue (NPM package names first: `mmt-wasm`, `@blockcast/mmt-wasm`; then relative paths; then absolute web paths like `/libs/mmt-wasm/pkg/mmt_wasm.js`). Pass an explicit `wasmPath` if your bundler can't resolve any of them.
116
+ FEC is deliberately not implemented in this transport package. The host loads
117
+ the exact `mmt-wasm` build it deployed, and `@blockcast/mmt-container` or
118
+ `@blockcast/fec-worker` owns decoder state, ISO Source/Repair FEC Payload ID
119
+ coordinates, deadlines, and reinjection of recovered MMTP symbols. This avoids
120
+ a second parser and a second, incompatible WASM binding surface in the
121
+ transport layer.
156
122
 
157
123
  ## Clock (`./clock` export)
158
124
 
@@ -234,7 +200,7 @@ The selection algorithm is deliberately stateless and synchronous-feeling: every
234
200
  - **RFC 8777** — DNS Reverse IP AMT Discovery (DRIAD)
235
201
  - **RFC 9000** — QUIC: A UDP-Based Multiplexed and Secure Transport
236
202
  - **RFC 9220** — Bootstrapping WebSockets / HTTP/3 over WebTransport (browser carrier for MoQ)
237
- - **RFC 6330** — RaptorQ Forward Error Correction Scheme (FEC OTI consumed by the FEC clients)
203
+ - **RFC 6330** — RaptorQ Forward Error Correction Scheme (FEC OTI consumed by downstream decoders)
238
204
  - **RFC 3376 / RFC 3810** — IGMPv3 / MLDv2 (issued by the OS via `window.multicast.subscribe`)
239
205
  - **draft-ietf-moq-transport** — IETF MOQT (the moqtail wire protocol)
240
206
  - **draft-ramadan-moq-fec-00** — AL-FEC over MoQ (the `FEC_CONFIG` message, repair-track convention, repair object header)
@@ -242,8 +208,8 @@ The selection algorithm is deliberately stateless and synchronous-feeling: every
242
208
  ## Related packages
243
209
 
244
210
  - **[`@blockcast/mmt-container`](../container)** — MMTP / LOC container parser, MFU reassembler, CARP catalog, signaling. Sits downstream of this package and consumes the `ArrayBuffer` packets it emits.
245
- - **[`@blockcast/mmt-fec`](../fec)** — Container-agnostic RaptorQ decoder client (workspace dep). The `MmtFecClient` and `MoqFecClient` here wrap its WASM bindings.
246
- - **[`@blockcast/fec-worker`](../fec-worker)** — Web Worker wrapper for the FEC client. Use this when decode CPU on the main thread is a problem; the API mirrors `MmtFecClient` over `postMessage` with zero-copy `ArrayBuffer` transfers.
211
+ - **[`@blockcast/mmt-fec`](../fec)** — Container-agnostic FEC geometry, mapping, OTI, and recovered-block primitives used by container and render packages.
212
+ - **[`@blockcast/fec-worker`](../fec-worker)** — Web Worker owner for the canonical `MmtFecDecoder`; use it to keep decode CPU off the main thread.
247
213
  - **[`@blockcast/mmt-render`](../mmt-render)** — Reference renderer + diagnostics overlay; consumes `TransportState` and `ProcessingStats`.
248
214
 
249
215
  The parent monorepo also ships `@blockcast/multicast` (npm-public type-only API), the IWA + Chrome Extension that exposes `window.multicast`, and the mobile SDKs that implement the native-multicast leg of the matrix above.
@@ -257,7 +223,7 @@ pnpm --filter @blockcast/mmt-transport typecheck # tsc --noEmit
257
223
  pnpm --filter @blockcast/mmt-transport build # tsc → dist/
258
224
  ```
259
225
 
260
- `fec-client.test.ts` covers the FEC client surface (configuration, OTI parsing, source/repair symbol round-trip). The transport manager itself is exercised end-to-end through the moqtail and moq-lib player builds in the parent repo (`pnpm build:players` in `packages/moq-server`), which is where you go to verify a real promotion sequence: open a stream on WebTransport, watch it promote to SSM in an IWA, kill the relay, and confirm packets keep flowing on the multicast leg.
226
+ The transport manager is exercised end-to-end through the moqtail and moq-lib player builds in the parent repo (`pnpm build:players` in `packages/moq-server`), which is where you verify a real promotion sequence: open a stream on WebTransport, watch it promote to SSM in an IWA, kill the relay, and confirm packets keep flowing on the multicast leg.
261
227
 
262
228
  ## License
263
229
 
@@ -1 +1 @@
1
- {"version":3,"file":"driad-discovery.d.ts","sourceRoot":"","sources":["../src/driad-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,WAAW,CAAW;IAE9B;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6B3D;;OAEG;YACW,eAAe;IAsC7B;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAqBzD,UAAU;IAexB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,SAAS;CAGnD;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
1
+ {"version":3,"file":"driad-discovery.d.ts","sourceRoot":"","sources":["../src/driad-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;GAGG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,WAAW,CAAW;IAE9B;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6B3D;;OAEG;YACW,eAAe;IAkC7B;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;YAqBzD,UAAU;IAexB;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,SAAS;CAGnD;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -77,11 +77,7 @@ export class DRIADDiscovery {
77
77
  if (dohRelay) {
78
78
  return [dohRelay];
79
79
  }
80
- // Final fallback to well-known AMT relays
81
- return [
82
- { host: "amt-relay.m2icast.net", port: 2268, priority: 10, weight: 100, asn: 0 },
83
- { host: "amt.akamaistream.net", port: 2268, priority: 20, weight: 50, asn: 0 },
84
- ];
80
+ return [];
85
81
  }
86
82
  /**
87
83
  * Query DNS-over-HTTPS for DRIAD relay based on source address (RFC 8777)
@@ -1 +1 @@
1
- {"version":3,"file":"driad-discovery.js","sourceRoot":"","sources":["../src/driad-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;;GAGG;AACH,MAAM,OAAO,cAAc;IAClB,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IACxC,WAAW,GAAG,OAAO,CAAC,CAAC,YAAY;IAE3C;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc;QAClC,oBAAoB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACZ,OAAO,MAAM,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACJ,mDAAmD;YACnD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,GAAG,cAAc,mBAAmB,CAAC;YAEzD,OAAO,CAAC,GAAG,CAAC,yCAAyC,MAAM,QAAQ,WAAW,EAAE,CAAC,CAAC;YAElF,6DAA6D;YAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAElD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/D,CAAC;YAED,OAAO,MAAM,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,uCAAuC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YACtE,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,MAAc;QAC3C,sCAAsC;QACtC,MAAM,cAAc,GAAG;YACtB,qCAAqC;YACrC,gDAAgD;SAChD,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,WAAW,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAAE;oBAChF,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;oBACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;iBACjC,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6B,CAAC;oBACjE,OAAO,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC1B,CAAC;YACF,CAAC;YAAC,MAAM,CAAC;gBACR,0BAA0B;YAC3B,CAAC;QACF,CAAC;QAED,qCAAqC;QACrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnB,CAAC;QAED,0CAA0C;QAC1C,OAAO;YACN,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;YAChF,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;SAC9E,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC7C,IAAI,CAAC;YACJ,+DAA+D;YAC/D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,GAAG,cAAc,mBAAmB,CAAC;YAEvD,MAAM,MAAM,GAAG,6CAA6C,SAAS,SAAS,CAAC;YAC/E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBACpC,OAAO,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE;gBAC3C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aACjC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC;YACb,CAAC;YAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyC,CAAC;YAE/E,8BAA8B;YAC9B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,OAAO;oBACN,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;oBAC3B,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,EAAE;oBACZ,MAAM,EAAE,GAAG;oBACX,GAAG,EAAE,CAAC;iBACN,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,MAAoB;QACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1D,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,CAAC;QAC1B,CAAC,CAAC,CACF,CAAC;QAEF,gCAAgC;QAChC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;gBAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC9D,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QACvF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,KAAa;QACnD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC;YACJ,0DAA0D;YAC1D,MAAM,KAAK,CAAC,WAAW,IAAI,SAAS,EAAE;gBACrC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjC,IAAI,EAAE,SAAS;aACf,CAAC,CAAC;YACH,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,QAAQ,CAAC;QACjB,CAAC;IACF,CAAC;IAED;;OAEG;IACH,UAAU;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;CACD;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"driad-discovery.js","sourceRoot":"","sources":["../src/driad-discovery.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -22,20 +22,21 @@
22
22
  * - Unified FEC/ABR pipeline across all transport modes
23
23
  * - A/V synchronization via SharedClock
24
24
  */
25
- export type { TransportConfig, TransportSubscription, QualityLevel, TransportCapabilities, TransportMode, TransportState, DRIADRelay, AmtRelayInfo, GroupKey, PacketMetadata, MfuFragment, ReassembledMfu, ProcessingStats, MmtFecClientOptions, Micro, SyncDecision, WindowMulticastSubscribeConfig, WindowMulticastSubscriptionState, WindowMulticastSubscriptionEventMap, WindowMulticastSubscription, WindowMulticastCapabilities, WindowMulticastGateway, MulticastTransportMode, MulticastConfig, PacketSource, SubscriptionState, SubscriptionStats, MulticastSubscriptionHandle, FecConfig, FecStats, MulticastConfigWithFec, MulticastBridge, MoqFecConfig, RepairObjectHeader, SSMConfig, SSMSubscription, } from "./types.js";
25
+ export type { TransportConfig, TransportSubscription, QualityLevel, TransportCapabilities, TransportMode, TransportState, DRIADRelay, AmtRelayInfo, GroupKey, PacketMetadata, Micro, SyncDecision, WindowMulticastSubscribeConfig, WindowMulticastSubscriptionState, WindowMulticastResolvedTransport, WindowMulticastSubscriptionEventMap, WindowMulticastSubscription, WindowMulticastCapabilities, WindowMulticastGateway, MulticastTransportMode, MulticastConfig, PacketSource, SubscriptionState, SubscriptionStats, MulticastSubscriptionHandle, MulticastBridge, MoqFecConfig, RepairObjectHeader, } from "./types.js";
26
26
  export { FEC_CONFIG_MESSAGE_TYPE, REPAIR_TRACK_SUFFIX, repairTrackPath, isRepairTrack, sourceTrackFromRepair, MoqFecAlgorithm, } from "./types.js";
27
27
  export { TransportManager, transportManager } from "./transport-manager.js";
28
- export { SSMTransportManager, ssmTransport } from "./transport-manager.js";
29
28
  export { DRIADDiscovery, driadDiscovery } from "./driad-discovery.js";
30
29
  export { AdaptiveBitrateController, QUALITY_LEVELS, type FecStatsForAbr, } from "./abr-controller.js";
31
30
  export { endpointKey, selectMulticastTier, type MulticastTierEndpoint, } from "./multicast-tier.js";
32
- export { MulticastOrchestrator, DEFAULT_DWELL_MS, DEFAULT_JOIN_DEADLINE_MS, goodputFromStats, type GoodputSample, type MulticastTierPacket, type OrchestratorCommand, type OrchestratorOptions, type OrchestratorState, } from "./multicast-orchestrator.js";
31
+ export { MulticastOrchestrator, DEFAULT_DWELL_MS, DEFAULT_JOIN_DEADLINE_MS, goodputFromStats, type GoodputSample, type HeadroomSample, type MulticastTierPacket, type OrchestratorCommand, type OrchestratorOptions, type OrchestratorState, } from "./multicast-orchestrator.js";
32
+ export { createMulticastSignalingReconciler, normalizeCatalogEndpoints, type MulticastSignalingEndpoint, } from "./multicast-signaling-reconciler.js";
33
+ export { endpointToMulticastConfig, hasMulticastCatalogBaseline, hasUnicastMediaRenditions, isMulticastOnlyCatalog, isRecoverableMulticastSignalReadError, mergeUrlMulticastPolicy, normalizeMulticastConfig, readPlayerMulticastConfig, requiresMulticastCapability, sameMulticastConfig, selectEndpointPacketIds, selectEndpointPacketIdsForTracks, selectMulticastCandidate, selectMulticastCandidateForTracks, urlOverrideBlocksMulticastCandidate, withMulticastEndpoints, type PlayerMulticastConfig, type MulticastTrackSelection, } from "./multicast-catalog-policy.js";
33
34
  export { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, type MulticastEndpointConfig, type MulticastTransportPreference, } from "./endpoint-config.js";
34
35
  export { MulticastSubscriptionPool, multicastSubscriptionPool, type MulticastSubscriptionConsumer, type MulticastSubscriptionLease, } from "./multicast-subscription-pool.js";
35
- export { TransportStallDetector, type FecProgressSnapshot, type StallDetectorConfig, } from "./stall-detector.js";
36
+ export { classifyStall, TransportStallDetector, type FecProgressSnapshot, type PlayerStallClassification, type PlayerStallSnapshot, type StallDetectorConfig, } from "./stall-detector.js";
36
37
  export { makeSourceSwitchHandler, wireStallDetector, wireStarvationDetector, type ActivatableSessions, type FecStarvationSnapshot, type LossArcSession, type StallDetectorLike, type StarvationDetectorLike, } from "./takeover.js";
37
38
  export { runUnicastFallback, type FallbackBroadcast, type FallbackBroadcastLike, type FallbackGroup, type FallbackGroupLike, type FallbackSessionManagerLike, type FallbackSessions, type FallbackSubscription, type FallbackSubLike, type FallbackTrack, } from "./unicast-fallback.js";
39
+ export { MOQT_PUBLISHER_PRIORITY, MOQT_SUBSCRIBER_PRIORITY, moqtPublisherPriority, type MoqtPublisherPriority, moqtSubscriberPriority, type MoqtSubscriberPriority, } from "./moqt-priority.js";
38
40
  export { AMTGatewayManager, AMTGateway, amtGatewayManager, type AMTSubscriptionConfig, type AMTGatewayOptions, } from "./amt-gateway.js";
39
- export { MmtFecClient, createMulticastFecHandler, setupMmtFec, MoqFecClient, createMoqFecClient, loadMmtWasm, type MoqFecClientConfig, type MoqFecClientStats, type FecDecoderConfig, } from "./fec-client.js";
40
41
  export { SharedClock, getSharedClock, resetSharedClock, SYNC_TOLERANCE_US, PTS_OFFSET_US, } from "./clock.js";
41
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,YAAY,EACX,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,KAAK,EACL,YAAY,EACZ,8BAA8B,EAC9B,gCAAgC,EAChC,mCAAmC,EACnC,2BAA2B,EAC3B,2BAA2B,EAC3B,sBAAsB,EAEtB,sBAAsB,EACtB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,2BAA2B,EAC3B,SAAS,EACT,QAAQ,EACR,sBAAsB,EACtB,eAAe,EAEf,YAAY,EACZ,kBAAkB,EAElB,SAAS,EACT,eAAe,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,eAAe,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,EACN,yBAAyB,EACzB,cAAc,EACd,KAAK,cAAc,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,WAAW,EACX,mBAAmB,EACnB,KAAK,qBAAqB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,GACjC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,GAC/B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,aAAa,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,YAAY,EACZ,yBAAyB,EACzB,WAAW,EAEX,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACN,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -24,27 +24,23 @@
24
24
  */
25
25
  // FEC constants and utilities per draft-ramadan-moq-fec-00
26
26
  export { FEC_CONFIG_MESSAGE_TYPE, REPAIR_TRACK_SUFFIX, repairTrackPath, isRepairTrack, sourceTrackFromRepair, MoqFecAlgorithm, } from "./types.js";
27
- // Transport Manager (renamed from SSMTransportManager)
28
27
  export { TransportManager, transportManager } from "./transport-manager.js";
29
- // @deprecated - Use TransportManager and transportManager instead
30
- export { SSMTransportManager, ssmTransport } from "./transport-manager.js";
31
28
  // DRIAD Discovery
32
29
  export { DRIADDiscovery, driadDiscovery } from "./driad-discovery.js";
33
30
  // Adaptive Bitrate Controller
34
31
  export { AdaptiveBitrateController, QUALITY_LEVELS, } from "./abr-controller.js";
35
32
  export { endpointKey, selectMulticastTier, } from "./multicast-tier.js";
36
33
  export { MulticastOrchestrator, DEFAULT_DWELL_MS, DEFAULT_JOIN_DEADLINE_MS, goodputFromStats, } from "./multicast-orchestrator.js";
34
+ export { createMulticastSignalingReconciler, normalizeCatalogEndpoints, } from "./multicast-signaling-reconciler.js";
35
+ export { endpointToMulticastConfig, hasMulticastCatalogBaseline, hasUnicastMediaRenditions, isMulticastOnlyCatalog, isRecoverableMulticastSignalReadError, mergeUrlMulticastPolicy, normalizeMulticastConfig, readPlayerMulticastConfig, requiresMulticastCapability, sameMulticastConfig, selectEndpointPacketIds, selectEndpointPacketIdsForTracks, selectMulticastCandidate, selectMulticastCandidateForTracks, urlOverrideBlocksMulticastCandidate, withMulticastEndpoints, } from "./multicast-catalog-policy.js";
37
36
  export { isMulticastExplicitlyDisabled, isUsableMulticastEndpoint, isValidMulticastGroupAddress, multicastEndpointKey, normalizeMulticastEndpoint, readUrlMulticastConfig, } from "./endpoint-config.js";
38
37
  export { MulticastSubscriptionPool, multicastSubscriptionPool, } from "./multicast-subscription-pool.js";
39
- export { TransportStallDetector, } from "./stall-detector.js";
38
+ export { classifyStall, TransportStallDetector, } from "./stall-detector.js";
40
39
  export { makeSourceSwitchHandler, wireStallDetector, wireStarvationDetector, } from "./takeover.js";
41
40
  export { runUnicastFallback, } from "./unicast-fallback.js";
41
+ export { MOQT_PUBLISHER_PRIORITY, MOQT_SUBSCRIBER_PRIORITY, moqtPublisherPriority, moqtSubscriberPriority, } from "./moqt-priority.js";
42
42
  // AMT Gateway
43
43
  export { AMTGatewayManager, AMTGateway, amtGatewayManager, } from "./amt-gateway.js";
44
- // FEC Client
45
- export { MmtFecClient, createMulticastFecHandler, setupMmtFec,
46
- // MoQ FEC Client (for WebTransport)
47
- MoqFecClient, createMoqFecClient, loadMmtWasm, } from "./fec-client.js";
48
44
  // A/V Sync Clock
49
45
  export { SharedClock, getSharedClock, resetSharedClock, SYNC_TOLERANCE_US, PTS_OFFSET_US, } from "./clock.js";
50
46
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA6CH,2DAA2D;AAC3D,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,eAAe,GACf,MAAM,YAAY,CAAC;AAEpB,uDAAuD;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,kEAAkE;AAClE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3E,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtE,8BAA8B;AAC9B,OAAO,EACN,yBAAyB,EACzB,cAAc,GAEd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,WAAW,EACX,mBAAmB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GAMhB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,GAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,yBAAyB,EACzB,yBAAyB,GAGzB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,sBAAsB,GAGtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GAMtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,kBAAkB,GAUlB,MAAM,uBAAuB,CAAC;AAE/B,cAAc;AACd,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAGjB,MAAM,kBAAkB,CAAC;AAE1B,aAAa;AACb,OAAO,EACN,YAAY,EACZ,yBAAyB,EACzB,WAAW;AACX,oCAAoC;AACpC,YAAY,EACZ,kBAAkB,EAClB,WAAW,GAKX,MAAM,iBAAiB,CAAC;AAEzB,iBAAiB;AACjB,OAAO,EACN,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAoCH,2DAA2D;AAC3D,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,eAAe,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtE,8BAA8B;AAC9B,OAAO,EACN,yBAAyB,EACzB,cAAc,GAEd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,WAAW,EACX,mBAAmB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,GAOhB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACN,kCAAkC,EAClC,yBAAyB,GAEzB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACN,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,sBAAsB,EACtB,qCAAqC,EACrC,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,EACxB,iCAAiC,EACjC,mCAAmC,EACnC,sBAAsB,GAGtB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACN,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,GAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACN,yBAAyB,EACzB,yBAAyB,GAGzB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EACN,aAAa,EACb,sBAAsB,GAKtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,GAMtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,kBAAkB,GAUlB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EAErB,sBAAsB,GAEtB,MAAM,oBAAoB,CAAC;AAE5B,cAAc;AACd,OAAO,EACN,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAGjB,MAAM,kBAAkB,CAAC;AAE1B,iBAAiB;AACjB,OAAO,EACN,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACb,MAAM,YAAY,CAAC"}