@opinionated-machine/sse-fallback 0.1.1 → 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 +199 -4
- package/dist/binding.d.ts +13 -0
- package/dist/binding.d.ts.map +1 -1
- package/dist/binding.js +22 -0
- package/dist/binding.js.map +1 -1
- package/dist/bindingTypes.d.ts +49 -2
- package/dist/bindingTypes.d.ts.map +1 -1
- package/dist/bindingTypes.js +3 -1
- package/dist/bindingTypes.js.map +1 -1
- package/dist/subscription.d.ts +46 -2
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +193 -37
- package/dist/subscription.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -44,13 +44,17 @@ the backoff.
|
|
|
44
44
|
## Declaring a binding
|
|
45
45
|
|
|
46
46
|
The binding is the one thing that cannot be inferred: how a poll snapshot
|
|
47
|
-
relates to the SSE events
|
|
47
|
+
relates to the SSE events, and whether there is one to relate at all. Declare
|
|
48
|
+
it once, colocated with the contract:
|
|
48
49
|
|
|
49
50
|
```ts
|
|
50
51
|
import { defineFallbackBinding } from '@opinionated-machine/sse-fallback'
|
|
51
52
|
|
|
52
53
|
// Use case A — await async completion
|
|
53
54
|
export const uploadStatusBinding = defineFallbackBinding(uploadStatusContract, {
|
|
55
|
+
// The snapshot is a real route the server answers, so polling can carry
|
|
56
|
+
// this subscription on its own. See "Choosing the combination" below.
|
|
57
|
+
snapshotSource: 'endpoint',
|
|
54
58
|
// Translate a snapshot into events; [] = "no news" (still advances the watermark)
|
|
55
59
|
snapshotToEvents: (s) =>
|
|
56
60
|
s.status === 'completed'
|
|
@@ -64,6 +68,7 @@ export const uploadStatusBinding = defineFallbackBinding(uploadStatusContract, {
|
|
|
64
68
|
|
|
65
69
|
// Use case B — initial state load + live hydration
|
|
66
70
|
export const projectStateBinding = defineFallbackBinding(projectStateContract, {
|
|
71
|
+
snapshotSource: 'endpoint',
|
|
67
72
|
snapshotEvent: 'stateChanged', // shorthand: snapshot body ≡ this event's payload
|
|
68
73
|
version: { ofSnapshot: (s) => s.revision, ofEvent: (e) => e.data.revision, dense: true },
|
|
69
74
|
state: {
|
|
@@ -98,7 +103,9 @@ for await (const event of sub.events()) { ... }
|
|
|
98
103
|
sub.onStateChange((state) => render(state))
|
|
99
104
|
|
|
100
105
|
sub.status // 'connecting' | 'live' | 'reconnecting' | 'polling' | 'stopped'
|
|
101
|
-
sub.nudge() // force
|
|
106
|
+
sub.nudge() // force a repair now: a poll, or, when the snapshot
|
|
107
|
+
// is synthesized, a reconnect that skips the backoff
|
|
108
|
+
sub.streamAbandoned // true once a refusal took the stream for good
|
|
102
109
|
sub.stop()
|
|
103
110
|
```
|
|
104
111
|
|
|
@@ -124,7 +131,7 @@ try {
|
|
|
124
131
|
| `reason` | Meaning |
|
|
125
132
|
|---|---|
|
|
126
133
|
| `'terminal-event'` | a terminal event was delivered — success |
|
|
127
|
-
| `'unretryable-status'` | refused with a status in `unretryableStatuses` (`status`, `channel`) |
|
|
134
|
+
| `'unretryable-status'` | refused with a status in `unretryableStatuses` (`status`, `channel`); a stream refusal lands here unless the poll can carry the subscription alone |
|
|
128
135
|
| `'budget-exhausted'` | `subscriptionBudget` ran out (`limit`) — show an error and offer a retry |
|
|
129
136
|
| `'manual'` | the caller called `stop()`, or the creation `signal` aborted |
|
|
130
137
|
|
|
@@ -167,7 +174,8 @@ successful request in between stops the subscription with
|
|
|
167
174
|
### Adopting before the SSE endpoint exists
|
|
168
175
|
|
|
169
176
|
`policy.mode: 'poll-only'` (or the `POLL_ONLY_POLICY` preset) never opens a
|
|
170
|
-
stream.
|
|
177
|
+
stream. It needs `snapshotSource: 'endpoint'`, since the poll is then the only
|
|
178
|
+
channel there is. The binding, version gate, reconciler and state machine are the same
|
|
171
179
|
ones the streaming rollout will use, so enabling SSE later is a config change
|
|
172
180
|
on an already-integrated subscription rather than a second migration.
|
|
173
181
|
|
|
@@ -178,6 +186,192 @@ than the snapshot are flushed — a zero missed-event window. After N
|
|
|
178
186
|
consecutive connect failures the subscription degrades to pure polling and
|
|
179
187
|
keeps probing SSE in the background.
|
|
180
188
|
|
|
189
|
+
One route into `POLLING_ONLY` never probes again: when a stream is refused
|
|
190
|
+
with an unretryable status and the poll carries the subscription on, the
|
|
191
|
+
stream is given up for the life of the subscription.
|
|
192
|
+
`subscription.streamAbandoned` is what separates that from ordinary
|
|
193
|
+
degradation, since both report `status: 'polling'`, and
|
|
194
|
+
`diagnostics.onStreamRefused` reports the moment it happens.
|
|
195
|
+
|
|
196
|
+
A binding whose snapshot is synthesized never reaches `POLLING_ONLY` at all:
|
|
197
|
+
there is no poll to fall back to, so the machine is `CONNECTING → LIVE ⇄
|
|
198
|
+
RECONNECTING → STOPPED` and a stream that is down reports `'reconnecting'`
|
|
199
|
+
for as long as it stays down.
|
|
200
|
+
|
|
201
|
+
## Choosing the combination
|
|
202
|
+
|
|
203
|
+
Three knobs decide what happens when something goes wrong: `snapshotSource` on
|
|
204
|
+
the binding, `mode` and `streamRefusal` on the policy. Only `snapshotSource`
|
|
205
|
+
has no default, because it is the only one the package cannot work out for
|
|
206
|
+
itself. A binding whose snapshot is answered locally is structurally identical
|
|
207
|
+
to one backed by a real route, and the difference only shows up at runtime, as
|
|
208
|
+
polls that return 200 and carry nothing.
|
|
209
|
+
|
|
210
|
+
| Surface | `snapshotSource` | `mode` | `streamRefusal` | Also |
|
|
211
|
+
|---|---|---|---|---|
|
|
212
|
+
| Await an async operation | `'endpoint'` | `'dual'` | `'auto'` | `subscriptionBudget` |
|
|
213
|
+
| Live view with a read route | `'endpoint'` | `'dual'` | `'auto'` | `LIVE_STATE_POLICY` |
|
|
214
|
+
| Live view where latency is the product | `'endpoint'` | `'dual'` | `'stop'` | `LIVE_STATE_POLICY` |
|
|
215
|
+
| Transitions no read reproduces | `'synthesized'` | `'dual'` | `'auto'` | repair on reconnect |
|
|
216
|
+
| SSE route not built yet | `'endpoint'` | `'poll-only'` | not read | `POLL_ONLY_POLICY` |
|
|
217
|
+
|
|
218
|
+
### Awaiting an async operation
|
|
219
|
+
|
|
220
|
+
An upload, an export, a long import: one subscription, one terminal event,
|
|
221
|
+
then it is over. The snapshot route already exists, because the page rendered
|
|
222
|
+
the operation before it subscribed, so the poll is the correctness backbone
|
|
223
|
+
and SSE only makes it feel instant.
|
|
224
|
+
|
|
225
|
+
```ts
|
|
226
|
+
export const uploadStatusBinding = defineFallbackBinding(uploadStatusContract, {
|
|
227
|
+
snapshotSource: 'endpoint',
|
|
228
|
+
snapshotToEvents: (s) =>
|
|
229
|
+
s.status === 'completed' ? [{ event: 'uploadFinished', data: { result: s.result } }] : [],
|
|
230
|
+
version: { ofSnapshot: (s) => s.version },
|
|
231
|
+
terminalEvents: ['uploadFinished'],
|
|
232
|
+
})
|
|
233
|
+
|
|
234
|
+
const sub = createResilientSubscription(uploadStatusBinding, {
|
|
235
|
+
transport,
|
|
236
|
+
params: { pathParams: { uploadId } },
|
|
237
|
+
// A backend stuck in 'pending' would otherwise poll until the tab closes.
|
|
238
|
+
policy: { subscriptionBudget: { maxDurationMs: 10 * 60_000, maxPolls: 200 } },
|
|
239
|
+
})
|
|
240
|
+
const { result } = await sub.waitFor('uploadFinished')
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Everything else is default and should stay that way. `initialPoll: 'eager'`
|
|
244
|
+
hydrates from the snapshot before the first event, so an operation that
|
|
245
|
+
finished before the subscription opened still resolves the wait.
|
|
246
|
+
`streamRefusal: 'auto'` resolves to keeping the poll: a refused SSE route
|
|
247
|
+
costs the instant feel, not the result. The budget is the one addition worth
|
|
248
|
+
making, because a wait that never ends is worse than one that fails.
|
|
249
|
+
|
|
250
|
+
### A live view with a read route
|
|
251
|
+
|
|
252
|
+
A list or a state view that stays mounted: rows updating as an import
|
|
253
|
+
progresses, a counter on a dashboard. The read route exists because the list
|
|
254
|
+
had to load, so both channels work and the poll covers whatever the stream
|
|
255
|
+
misses.
|
|
256
|
+
|
|
257
|
+
```ts
|
|
258
|
+
export const uploadedItemsBinding = bindFallbackContracts(
|
|
259
|
+
GET_UPLOADED_ITEMS_CONTRACT,
|
|
260
|
+
GET_UPLOADED_ITEMS_SUBSCRIBE_CONTRACT,
|
|
261
|
+
{
|
|
262
|
+
snapshotSource: 'endpoint',
|
|
263
|
+
snapshotToEvents: (snapshot) =>
|
|
264
|
+
snapshot.data.map((item) => ({ event: 'upload_item.changed', data: item })),
|
|
265
|
+
version: 'none',
|
|
266
|
+
},
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
createResilientSubscription(uploadedItemsBinding, {
|
|
270
|
+
transport,
|
|
271
|
+
params,
|
|
272
|
+
// Permanently mounted, so poll slowly while idle and nudge() on user intent.
|
|
273
|
+
policy: LIVE_STATE_POLICY,
|
|
274
|
+
})
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
`LIVE_STATE_POLICY` stretches the idle deadman to 120s backing off to 300s, so
|
|
278
|
+
a tab left open overnight is not a polling machine, and holds the degraded
|
|
279
|
+
cadence at 60s for when the stream is gone. No budget here: the subscription
|
|
280
|
+
should outlive anything the user is doing. `nudge()` is the way back to fast,
|
|
281
|
+
for the moment a user does something that ought to show a result now.
|
|
282
|
+
|
|
283
|
+
### Transitions no read reproduces
|
|
284
|
+
|
|
285
|
+
Some events are not state. "This batch of segments was re-translated", "the
|
|
286
|
+
search index caught up", "word counts were recalculated": no `GET` returns
|
|
287
|
+
them, so a poll has nothing to fetch. The transport answers the snapshot
|
|
288
|
+
channel locally, and the binding says so.
|
|
289
|
+
|
|
290
|
+
```ts
|
|
291
|
+
const pushOnlyTransport: FallbackTransport = {
|
|
292
|
+
openStream: (request, opts) => streamTransport.openStream(request, opts),
|
|
293
|
+
fetchSnapshot: () => Promise.resolve({ status: 200, headers: {}, body: {} }),
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
const binding: FallbackBinding<unknown, SegmentEvents> = {
|
|
297
|
+
config: { snapshotSource: 'synthesized', snapshotToEvents: () => [], version: 'none' },
|
|
298
|
+
buildSnapshotRequest: () => ({ path: '', method: 'get' }), // never dispatched
|
|
299
|
+
buildStreamRequest: (params) => ({ path: streamPath(params), method: 'get' }),
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
`'synthesized'` switches the poll channel off rather than running it into a
|
|
304
|
+
wall: no hydration poll, no deadman, no fallback cadence, and `nudge()`
|
|
305
|
+
reconnects a stream waiting out its backoff instead of fetching nothing (a
|
|
306
|
+
stream that is connecting or open is left to the stale-connection watchdog,
|
|
307
|
+
since quiet is normal here). The status machine loses `'polling'`, since there
|
|
308
|
+
is nothing to poll: a stream that is down reports `'reconnecting'`, and one
|
|
309
|
+
that is accepted reports `'live'` without waiting for a byte, after a
|
|
310
|
+
degradation as much as on the first connect.
|
|
311
|
+
|
|
312
|
+
With no snapshot ever fetched there is nothing to initialize a `state` layer
|
|
313
|
+
from, so `defineFallbackBinding` rejects `state` beside `'synthesized'`; reduce
|
|
314
|
+
the events in an `onEvent` listener instead.
|
|
315
|
+
|
|
316
|
+
A refused stream stops the subscription, which is what this shape wants: the
|
|
317
|
+
stop is the only signal that live updates are gone, and something has to act
|
|
318
|
+
on it. The stop detail carries `streamWasLive`, which tells a route nobody
|
|
319
|
+
could reach from one withdrawn mid-session. Repair after a reconnect is the
|
|
320
|
+
consumer's job too, since only they know what to re-read:
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
sub.onStatusChange((status) => {
|
|
324
|
+
if (status === 'live') queryClient.invalidateQueries({ queryKey: ['segments', projectId] })
|
|
325
|
+
if (status === 'stopped') reportToErrorTracker('live segment updates are off')
|
|
326
|
+
})
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
A snapshot route that exists but cannot be expressed as events belongs here
|
|
330
|
+
too, and the subscription never dispatches it. An endpoint that answers 204
|
|
331
|
+
when no process is running gives `snapshotToEvents` nothing to return, and a
|
|
332
|
+
read model that ten call sites already share through a query cache is better
|
|
333
|
+
invalidated on reconnect than duplicated into the version gate. Declaring such
|
|
334
|
+
a route `'endpoint'` would poll it for nothing and report `'polling'` while no
|
|
335
|
+
update can arrive.
|
|
336
|
+
|
|
337
|
+
### Latency is the product
|
|
338
|
+
|
|
339
|
+
A cursor position, a presence dot, a live-typing badge. A 15s poll is not a
|
|
340
|
+
degraded version of those, it is a different feature that happens to return
|
|
341
|
+
data.
|
|
342
|
+
|
|
343
|
+
```ts
|
|
344
|
+
createResilientSubscription(presenceBinding, {
|
|
345
|
+
transport,
|
|
346
|
+
policy: { ...LIVE_STATE_POLICY, streamRefusal: 'stop' },
|
|
347
|
+
})
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
The snapshot stays `'endpoint'`, because it exists and hydration uses it. What
|
|
351
|
+
changes is the meaning of a refusal: `'stop'` hands the surface one clear
|
|
352
|
+
signal to hide the indicator, instead of a cadence nobody perceives as live.
|
|
353
|
+
|
|
354
|
+
### Combinations the constructor rejects
|
|
355
|
+
|
|
356
|
+
These throw at construction, rather than at the first failure hours later:
|
|
357
|
+
|
|
358
|
+
- `mode: 'poll-only'` with `snapshotSource: 'synthesized'`. No stream is ever
|
|
359
|
+
opened and the poll delivers nothing, so the subscription could only sit
|
|
360
|
+
there.
|
|
361
|
+
- `streamRefusal: 'keep-polling'` with `snapshotSource: 'synthesized'`. The
|
|
362
|
+
poll cannot stand in for a refused stream, so the subscription would report
|
|
363
|
+
itself healthy and deliver nothing.
|
|
364
|
+
- `state` with `snapshotSource: 'synthesized'`.
|
|
365
|
+
State is initialized and repaired from a snapshot, and a synthesized one is
|
|
366
|
+
never fetched, so `getState()` would stay `undefined`.
|
|
367
|
+
- A `snapshotSource` that is neither `'endpoint'` nor `'synthesized'`, from a
|
|
368
|
+
JS caller or a config spread from an older one: the value decides whether
|
|
369
|
+
the poll channel runs at all.
|
|
370
|
+
|
|
371
|
+
The last two are checked by `defineFallbackBinding` / `bindFallbackContracts`
|
|
372
|
+
as well, so they fail where the binding is declared; a hand-built binding meets
|
|
373
|
+
them at `createResilientSubscription`.
|
|
374
|
+
|
|
181
375
|
## The version gate
|
|
182
376
|
|
|
183
377
|
Every event and snapshot carries a version; an item is delivered iff its
|
|
@@ -290,6 +484,7 @@ responsibility.
|
|
|
290
484
|
| `hydrationAbandonAfterFailures` | 3 | flush the buffer rather than silence a healthy stream |
|
|
291
485
|
| `unretryableStatuses` | 401, 403, 404 | stop instead of retrying |
|
|
292
486
|
| `authChallengeStatuses` | 401 | offered to `onAuthChallenge` before giving up |
|
|
487
|
+
| `streamRefusal` | `'auto'` | follows `snapshotSource`: keep polling on an endpoint snapshot, stop on a synthesized one |
|
|
293
488
|
| `mode` | `'dual'` | `'poll-only'` never opens a stream |
|
|
294
489
|
| `subscriptionBudget` | unset | `{ maxDurationMs, maxPolls }` — a hard give-up bound |
|
|
295
490
|
|
package/dist/binding.d.ts
CHANGED
|
@@ -26,6 +26,18 @@ export type FallbackBinding<Snapshot = unknown, Events extends EventPayloadMap =
|
|
|
26
26
|
buildSnapshotRequest(params: FallbackRequestParams): TransportRequest;
|
|
27
27
|
buildStreamRequest(params: FallbackRequestParams): TransportRequest;
|
|
28
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* `snapshotSource` decides whether the poll channel runs at all, so a value
|
|
31
|
+
* that is missing or misspelled (a JS caller, a spread of an older config)
|
|
32
|
+
* must fail here rather than quietly switch polling off.
|
|
33
|
+
*
|
|
34
|
+
* Also run by `createResilientSubscription`, since a hand-built binding never
|
|
35
|
+
* passes through `defineFallbackBinding`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateSnapshotSource(config: {
|
|
38
|
+
readonly snapshotSource: unknown;
|
|
39
|
+
readonly state?: unknown;
|
|
40
|
+
}): void;
|
|
29
41
|
/** Read a binding previously stamped on a contract, or `undefined`. */
|
|
30
42
|
export declare function readFallbackBinding(contract: object): FallbackBinding | undefined;
|
|
31
43
|
/**
|
|
@@ -36,6 +48,7 @@ export declare function readFallbackBinding(contract: object): FallbackBinding |
|
|
|
36
48
|
* @example
|
|
37
49
|
* ```ts
|
|
38
50
|
* export const uploadStatusBinding = defineFallbackBinding(uploadStatusContract, {
|
|
51
|
+
* snapshotSource: 'endpoint',
|
|
39
52
|
* snapshotToEvents: (s) =>
|
|
40
53
|
* s.status === 'completed' ? [{ event: 'uploadFinished', data: { result: s.result } }] : [],
|
|
41
54
|
* version: { ofSnapshot: (s) => s.version },
|
package/dist/binding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEtD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,eAAyD,CAAA;AAE7F,oDAAoD;AACpD,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,CACzB,QAAQ,GAAG,OAAO,EAClB,MAAM,SAAS,eAAe,GAAG,eAAe,EAChD,KAAK,GAAG,SAAS,IACf;IACF,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/D,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,gBAAgB,CAAA;IACrE,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,gBAAgB,CAAA;CACpE,CAAA;
|
|
1
|
+
{"version":3,"file":"binding.d.ts","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
|
package/dist/binding.js
CHANGED
|
@@ -40,6 +40,27 @@ function validateConfig(config) {
|
|
|
40
40
|
if (hasMapper === hasShorthand) {
|
|
41
41
|
throw new Error('FallbackBindingConfig requires exactly one of snapshotToEvents / snapshotEvent.');
|
|
42
42
|
}
|
|
43
|
+
validateSnapshotSource(config);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* `snapshotSource` decides whether the poll channel runs at all, so a value
|
|
47
|
+
* that is missing or misspelled (a JS caller, a spread of an older config)
|
|
48
|
+
* must fail here rather than quietly switch polling off.
|
|
49
|
+
*
|
|
50
|
+
* Also run by `createResilientSubscription`, since a hand-built binding never
|
|
51
|
+
* passes through `defineFallbackBinding`.
|
|
52
|
+
*/
|
|
53
|
+
export function validateSnapshotSource(config) {
|
|
54
|
+
const source = config.snapshotSource;
|
|
55
|
+
if (source !== 'endpoint' && source !== 'synthesized') {
|
|
56
|
+
throw new Error(`FallbackBindingConfig.snapshotSource must be 'endpoint' or 'synthesized', got ${JSON.stringify(source)}.`);
|
|
57
|
+
}
|
|
58
|
+
if (source === 'synthesized' && config.state !== undefined) {
|
|
59
|
+
// The state layer is initialized, and repaired after a gap, only from a
|
|
60
|
+
// snapshot, and a synthesized one is never fetched: `getState()` would
|
|
61
|
+
// stay `undefined` for the life of the subscription.
|
|
62
|
+
throw new Error("FallbackBindingConfig.state requires snapshotSource: 'endpoint'. A synthesized snapshot is never fetched, so there is nothing to initialize or repair state from. Reduce the events in an onEvent listener instead.");
|
|
63
|
+
}
|
|
43
64
|
}
|
|
44
65
|
/** Expand the `snapshotEvent` shorthand into `snapshotToEvents`. */
|
|
45
66
|
function normalizeConfig(config) {
|
|
@@ -97,6 +118,7 @@ export function readFallbackBinding(contract) {
|
|
|
97
118
|
* @example
|
|
98
119
|
* ```ts
|
|
99
120
|
* export const uploadStatusBinding = defineFallbackBinding(uploadStatusContract, {
|
|
121
|
+
* snapshotSource: 'endpoint',
|
|
100
122
|
* snapshotToEvents: (s) =>
|
|
101
123
|
* s.status === 'completed' ? [{ event: 'uploadFinished', data: { result: s.result } }] : [],
|
|
102
124
|
* version: { ofSnapshot: (s) => s.version },
|
package/dist/binding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"binding.js","sourceRoot":"","sources":["../src/binding.ts"],"names":[],"mappings":"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"}
|
package/dist/bindingTypes.d.ts
CHANGED
|
@@ -92,6 +92,26 @@ export type FallbackBindingConfig<Snapshot, Events extends EventPayloadMap, Stat
|
|
|
92
92
|
* `snapshotToEvents: (s) => [{ event: snapshotEvent, data: s }]`.
|
|
93
93
|
*/
|
|
94
94
|
snapshotEvent?: keyof Events & string;
|
|
95
|
+
/**
|
|
96
|
+
* Where a poll snapshot comes from, and with it whether polling can carry
|
|
97
|
+
* this subscription when the stream cannot.
|
|
98
|
+
*
|
|
99
|
+
* - `'endpoint'`: a real request the server answers. The poll is the
|
|
100
|
+
* correctness backbone: it hydrates, it repairs gaps, and it keeps
|
|
101
|
+
* delivering while the stream is down.
|
|
102
|
+
* - `'synthesized'`: the transport answers it without asking the server
|
|
103
|
+
* (`fetchSnapshot` resolving a local value, `snapshotToEvents: () => []`),
|
|
104
|
+
* because the events are transitions no read reproduces. A poll delivers
|
|
105
|
+
* nothing the stream did not, so none are run: no hydration poll, no
|
|
106
|
+
* deadman, no fallback cadence, and a refused stream stops the
|
|
107
|
+
* subscription instead of pretending a poll covers it. Repair after a
|
|
108
|
+
* reconnect is the consumer's job, off `onStatusChange`. With no snapshot
|
|
109
|
+
* to initialize it from, {@link state} is rejected alongside it.
|
|
110
|
+
*
|
|
111
|
+
* Required, and not inferable: both shapes implement the same binding, and
|
|
112
|
+
* the difference only shows up in what the transport does at runtime.
|
|
113
|
+
*/
|
|
114
|
+
snapshotSource: 'endpoint' | 'synthesized';
|
|
95
115
|
/** Version extraction/ordering, or `'none'` (see {@link VersionConfig}). */
|
|
96
116
|
version: VersionConfig<Snapshot, FallbackEvent<Events>>;
|
|
97
117
|
/**
|
|
@@ -105,7 +125,8 @@ export type FallbackBindingConfig<Snapshot, Events extends EventPayloadMap, Stat
|
|
|
105
125
|
* the subscription handle exposes `getState()` / `onStateChange()`.
|
|
106
126
|
* Snapshots REPLACE state via `init`; live events update it via `apply`.
|
|
107
127
|
* Events synthesized from a snapshot are not applied (the snapshot already
|
|
108
|
-
* subsumes them).
|
|
128
|
+
* subsumes them). Requires `snapshotSource: 'endpoint'`: a synthesized
|
|
129
|
+
* snapshot is never fetched, so there would be nothing to `init` from.
|
|
109
130
|
*/
|
|
110
131
|
state?: {
|
|
111
132
|
init: (snapshot: Snapshot) => State;
|
|
@@ -273,6 +294,31 @@ export type FallbackPolicy = {
|
|
|
273
294
|
* @default [401]
|
|
274
295
|
*/
|
|
275
296
|
authChallengeStatuses: ReadonlyArray<number>;
|
|
297
|
+
/**
|
|
298
|
+
* What a refusal on the STREAM channel does: a status in
|
|
299
|
+
* {@link unretryableStatuses} that `onAuthChallenge` did not recover.
|
|
300
|
+
*
|
|
301
|
+
* - `'auto'` reads {@link FallbackBindingConfig.snapshotSource}:
|
|
302
|
+
* `'endpoint'` keeps polling, `'synthesized'` stops. This is the right
|
|
303
|
+
* answer for both, which is why the binding is asked to declare it.
|
|
304
|
+
* - `'keep-polling'` gives the stream up and leaves the poll running on
|
|
305
|
+
* its degraded cadence, so a route that moved or a permission covering
|
|
306
|
+
* the stream alone costs latency instead of every channel. Requires
|
|
307
|
+
* `snapshotSource: 'endpoint'`; the constructor throws otherwise, since
|
|
308
|
+
* a synthesized snapshot would poll on and deliver nothing, hiding the
|
|
309
|
+
* refusal instead of surviving it.
|
|
310
|
+
* - `'stop'` ends the subscription, and with it the poll. Worth setting
|
|
311
|
+
* over `'auto'` on a surface where a 15s poll cadence is not a product
|
|
312
|
+
* (a live cursor, a presence indicator): failing loudly beats pretending.
|
|
313
|
+
*
|
|
314
|
+
* Keeping the poll is one-way for the life of the subscription: the stream
|
|
315
|
+
* is never reopened, and `subscription.streamAbandoned` reports it.
|
|
316
|
+
*
|
|
317
|
+
* A refusal on the poll channel stops the subscription under any value.
|
|
318
|
+
* Whether a stream is opened at all is {@link mode}, a separate question.
|
|
319
|
+
* @default 'auto'
|
|
320
|
+
*/
|
|
321
|
+
streamRefusal: 'auto' | 'stop' | 'keep-polling';
|
|
276
322
|
};
|
|
277
323
|
export declare const DEFAULT_POLICY: FallbackPolicy;
|
|
278
324
|
/**
|
|
@@ -287,7 +333,8 @@ export declare const LIVE_STATE_POLICY: FallbackPolicy;
|
|
|
287
333
|
/**
|
|
288
334
|
* Preset for adopters with no SSE endpoint yet: same binding, version gate and
|
|
289
335
|
* state machine as the dual-mode presets, polling only. Flip `mode` back to
|
|
290
|
-
* `'dual'` once the stream exists.
|
|
336
|
+
* `'dual'` once the stream exists. Requires `snapshotSource: 'endpoint'`: the
|
|
337
|
+
* poll is the only channel there is.
|
|
291
338
|
*/
|
|
292
339
|
export declare const POLL_ONLY_POLICY: FallbackPolicy;
|
|
293
340
|
type SseBodyLike<TSchemas> = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingTypes.d.ts","sourceRoot":"","sources":["../src/bindingTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAM/B,uEAAuE;AACvE,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAErC;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,IACrC;IACE,qDAAqD;IACrD,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAA;IAC3C;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,SAAS,CAAA;IAC/C,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;IAC5C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AACH;;;;;GAKG;GACD,MAAM,CAAA;AAMV,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAErD,4EAA4E;AAC5E,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,eAAe,GAAG,eAAe,IAAI;KAC3E,CAAC,IAAI,MAAM,MAAM,GAAG,MAAM,GAAG;QAC5B,KAAK,EAAE,CAAC,CAAA;QACR,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;QACf,qDAAqD;QACrD,EAAE,CAAC,EAAE,MAAM,CAAA;QACX;;;WAGG;QACH,MAAM,EAAE,mBAAmB,CAAA;KAC5B;CACF,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAA;AAExB,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,CAAA;AAEhD,kEAAkE;AAClE,MAAM,MAAM,cAAc,CAAC,MAAM,SAAS,eAAe,GAAG,eAAe,IAAI;KAC5E,CAAC,IAAI,MAAM,MAAM,GAAG,MAAM,GAAG;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;KAAE;CAC5D,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAA;AAMxB;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,CAAC,QAAQ,EAAE,MAAM,SAAS,eAAe,EAAE,KAAK,GAAG,SAAS,IAAI;IAC/F;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IAChF;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,MAAM,CAAA;IAErC,4EAA4E;IAC5E,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;IAEvD;;;;OAIG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAA;IAErD
|
|
1
|
+
{"version":3,"file":"bindingTypes.d.ts","sourceRoot":"","sources":["../src/bindingTypes.ts"],"names":[],"mappings":"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"}
|
package/dist/bindingTypes.js
CHANGED
|
@@ -16,6 +16,7 @@ export const DEFAULT_POLICY = {
|
|
|
16
16
|
hydrationBufferLimit: 1_000,
|
|
17
17
|
unretryableStatuses: [401, 403, 404],
|
|
18
18
|
authChallengeStatuses: [401],
|
|
19
|
+
streamRefusal: 'auto',
|
|
19
20
|
};
|
|
20
21
|
/**
|
|
21
22
|
* Preset for use case A — await async completion.
|
|
@@ -34,7 +35,8 @@ export const LIVE_STATE_POLICY = {
|
|
|
34
35
|
/**
|
|
35
36
|
* Preset for adopters with no SSE endpoint yet: same binding, version gate and
|
|
36
37
|
* state machine as the dual-mode presets, polling only. Flip `mode` back to
|
|
37
|
-
* `'dual'` once the stream exists.
|
|
38
|
+
* `'dual'` once the stream exists. Requires `snapshotSource: 'endpoint'`: the
|
|
39
|
+
* poll is the only channel there is.
|
|
38
40
|
*/
|
|
39
41
|
export const POLL_ONLY_POLICY = {
|
|
40
42
|
...DEFAULT_POLICY,
|
package/dist/bindingTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindingTypes.js","sourceRoot":"","sources":["../src/bindingTypes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bindingTypes.js","sourceRoot":"","sources":["../src/bindingTypes.ts"],"names":[],"mappings":"AA2VA,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,OAAO;IACpB,cAAc,EAAE,MAAM;IACtB,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;IAClD,wBAAwB,EAAE,MAAM;IAChC,gBAAgB,EAAE,MAAM;IACxB,aAAa,EAAE,MAAM;IACrB,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/D,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;IAC5D,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;IACpD,6BAA6B,EAAE,CAAC;IAChC,qBAAqB,EAAE,CAAC;IACxB,sBAAsB,EAAE,MAAM;IAC9B,qBAAqB,EAAE,MAAM;IAC7B,oBAAoB,EAAE,KAAK;IAC3B,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpC,qBAAqB,EAAE,CAAC,GAAG,CAAC;IAC5B,aAAa,EAAE,MAAM;CACtB,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmB,cAAc,CAAA;AAE/D,mEAAmE;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C,GAAG,cAAc;IACjB,cAAc,EAAE,OAAO;IACvB,kBAAkB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;IACnD,sBAAsB,EAAE,MAAM;CAC/B,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,GAAG,cAAc;IACjB,IAAI,EAAE,WAAW;CAClB,CAAA"}
|
package/dist/subscription.d.ts
CHANGED
|
@@ -14,7 +14,13 @@ export type SubscriptionStatus = 'connecting' | 'live' | 'reconnecting' | 'polli
|
|
|
14
14
|
* - `'terminal-event'` — a terminal event was delivered. Success.
|
|
15
15
|
* - `'unretryable-status'` — the stream or a poll was refused with a status in
|
|
16
16
|
* `unretryableStatuses` (and `onAuthChallenge`, if any, did not recover).
|
|
17
|
-
* `status` carries which
|
|
17
|
+
* `status` carries the refusing status and `channel` which channel met it.
|
|
18
|
+
* A poll refusal always lands here. A stream refusal lands here under
|
|
19
|
+
* `streamRefusal: 'stop'`, and under the default `'auto'` only for a binding
|
|
20
|
+
* whose snapshot is synthesized: with an endpoint snapshot, `'auto'` (like
|
|
21
|
+
* `'keep-polling'`) gives the stream up and keeps the subscription alive on
|
|
22
|
+
* its poll, reported through `streamAbandoned` and
|
|
23
|
+
* `diagnostics.onStreamRefused` instead.
|
|
18
24
|
* - `'budget-exhausted'` — `subscriptionBudget` ran out. `limit` says which
|
|
19
25
|
* half. Show an actionable error and offer a manual retry.
|
|
20
26
|
* - `'manual'` — the caller called `stop()`, or the `signal` passed at
|
|
@@ -30,6 +36,12 @@ export type SubscriptionStopDetail = {
|
|
|
30
36
|
limit?: 'maxDurationMs' | 'maxPolls';
|
|
31
37
|
/** Which channel hit the refusal, for `'unretryable-status'`. */
|
|
32
38
|
channel?: 'poll' | 'stream';
|
|
39
|
+
/**
|
|
40
|
+
* Whether the stream had ever carried bytes, for a refusal with
|
|
41
|
+
* `channel: 'stream'`. Same signal as `diagnostics.onStreamRefused`, which
|
|
42
|
+
* only fires where the subscription keeps polling instead of stopping.
|
|
43
|
+
*/
|
|
44
|
+
streamWasLive?: boolean;
|
|
33
45
|
};
|
|
34
46
|
/**
|
|
35
47
|
* Rejection thrown by `waitFor` / `waitForTerminal` when the subscription
|
|
@@ -41,6 +53,7 @@ export declare class SubscriptionStoppedError extends Error {
|
|
|
41
53
|
readonly status: number | undefined;
|
|
42
54
|
readonly limit: 'maxDurationMs' | 'maxPolls' | undefined;
|
|
43
55
|
readonly channel: 'poll' | 'stream' | undefined;
|
|
56
|
+
readonly streamWasLive: boolean | undefined;
|
|
44
57
|
constructor(detail: SubscriptionStopDetail);
|
|
45
58
|
}
|
|
46
59
|
/**
|
|
@@ -54,6 +67,22 @@ export type FallbackDiagnostics = {
|
|
|
54
67
|
onStaleSnapshot?: () => void;
|
|
55
68
|
onPollError?: (error: unknown) => void;
|
|
56
69
|
onStreamError?: (error: unknown) => void;
|
|
70
|
+
/**
|
|
71
|
+
* The stream was refused with a status it cannot retry past, and the
|
|
72
|
+
* subscription carried on polling instead of stopping: `streamRefusal:
|
|
73
|
+
* 'keep-polling'`, or the default `'auto'` on a binding with
|
|
74
|
+
* `snapshotSource: 'endpoint'`. Delivery keeps working, late: nothing else
|
|
75
|
+
* reports that the push channel is gone.
|
|
76
|
+
*
|
|
77
|
+
* `streamWasLive` says whether this subscription had ever received bytes
|
|
78
|
+
* over the stream. That separates a route nobody could reach (a deploy that
|
|
79
|
+
* moved the path) from one withdrawn mid-session (a permission change),
|
|
80
|
+
* which are different faults with different owners.
|
|
81
|
+
*/
|
|
82
|
+
onStreamRefused?: (refusal: {
|
|
83
|
+
status: number;
|
|
84
|
+
streamWasLive: boolean;
|
|
85
|
+
}) => void;
|
|
57
86
|
/**
|
|
58
87
|
* A gap suspended the state layer: `getState()` is frozen at its pre-gap
|
|
59
88
|
* value until a snapshot repairs it, even though events keep flowing.
|
|
@@ -119,6 +148,16 @@ export type ResilientSubscription<Events extends EventPayloadMap = EventPayloadM
|
|
|
119
148
|
getState(): State | undefined;
|
|
120
149
|
onStateChange(listener: (state: State) => void): () => void;
|
|
121
150
|
readonly status: SubscriptionStatus;
|
|
151
|
+
/**
|
|
152
|
+
* Whether the stream has been given up for the life of the subscription: a
|
|
153
|
+
* refusal met `streamRefusal: 'keep-polling'` (or `'auto'` with an endpoint
|
|
154
|
+
* snapshot), so nothing will reconnect.
|
|
155
|
+
* `'polling'` alone does not say that, since it is equally where a
|
|
156
|
+
* subscription sits while it degrades and keeps probing SSE. A badge that
|
|
157
|
+
* tells "slower for now" from "push is gone until you resubscribe" reads
|
|
158
|
+
* this alongside {@link status}.
|
|
159
|
+
*/
|
|
160
|
+
readonly streamAbandoned: boolean;
|
|
122
161
|
/**
|
|
123
162
|
* Observe status transitions. `detail` is present exactly when `status` is
|
|
124
163
|
* `'stopped'`, and says why — see {@link StopReason}.
|
|
@@ -135,7 +174,12 @@ export type ResilientSubscription<Events extends EventPayloadMap = EventPayloadM
|
|
|
135
174
|
* between subscribing and a terminal event that arrived first.
|
|
136
175
|
*/
|
|
137
176
|
onStop(listener: (detail: SubscriptionStopDetail) => void): () => void;
|
|
138
|
-
/**
|
|
177
|
+
/**
|
|
178
|
+
* Force a repair now: a reconciliation poll, or, for a binding whose
|
|
179
|
+
* snapshot is synthesized, a reconnect that skips whatever is left of the
|
|
180
|
+
* reconnect backoff. A stream that is connecting or open is left to the
|
|
181
|
+
* stale-connection watchdog either way: quiet is not evidence of a fault.
|
|
182
|
+
*/
|
|
139
183
|
nudge(): void;
|
|
140
184
|
/** Stop the subscription: cancel timers, abort in-flight requests. */
|
|
141
185
|
stop(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
|
package/dist/subscription.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createSSEStreamParser } from '@opinionated-machine/sse-parser';
|
|
2
|
+
import { validateSnapshotSource } from "./binding.js";
|
|
2
3
|
import { DEFAULT_POLICY } from "./bindingTypes.js";
|
|
3
4
|
import { Reconciler } from "./reconciler.js";
|
|
4
5
|
import { backoffDelay, ResettableTimer, sleep } from "./scheduler.js";
|
|
@@ -13,6 +14,7 @@ export class SubscriptionStoppedError extends Error {
|
|
|
13
14
|
status;
|
|
14
15
|
limit;
|
|
15
16
|
channel;
|
|
17
|
+
streamWasLive;
|
|
16
18
|
constructor(detail) {
|
|
17
19
|
super(`Subscription stopped (${detail.reason}) before the awaited event arrived`);
|
|
18
20
|
this.name = 'SubscriptionStoppedError';
|
|
@@ -20,6 +22,7 @@ export class SubscriptionStoppedError extends Error {
|
|
|
20
22
|
this.status = detail.status;
|
|
21
23
|
this.limit = detail.limit;
|
|
22
24
|
this.channel = detail.channel;
|
|
25
|
+
this.streamWasLive = detail.streamWasLive;
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
class ResilientSubscriptionImpl {
|
|
@@ -33,8 +36,18 @@ class ResilientSubscriptionImpl {
|
|
|
33
36
|
reconciler;
|
|
34
37
|
pollGate;
|
|
35
38
|
onAuthChallenge;
|
|
39
|
+
/**
|
|
40
|
+
* Whether a poll can deliver anything. False for a synthesized snapshot,
|
|
41
|
+
* which answers without asking the server: every poll would be a request
|
|
42
|
+
* for news that only the stream carries.
|
|
43
|
+
*/
|
|
44
|
+
pollCanDeliver;
|
|
45
|
+
/** {@link FallbackPolicy.streamRefusal}, with `'auto'` resolved. */
|
|
46
|
+
streamRefusal;
|
|
36
47
|
abortController = new AbortController();
|
|
37
48
|
currentStreamAbort;
|
|
49
|
+
/** Wakes the stream loop out of its reconnect backoff, while it sleeps one. */
|
|
50
|
+
reconnectBackoffWake;
|
|
38
51
|
statusValue = 'connecting';
|
|
39
52
|
stopped = false;
|
|
40
53
|
stopDetail;
|
|
@@ -50,14 +63,22 @@ class ResilientSubscriptionImpl {
|
|
|
50
63
|
degraded = false;
|
|
51
64
|
/** Whether the current stream has produced any bytes at all. */
|
|
52
65
|
streamProducedBytes = false;
|
|
66
|
+
/** Whether ANY stream of this subscription ever produced bytes. */
|
|
67
|
+
streamEverProducedBytes = false;
|
|
68
|
+
/** Whether the stream has been given up for good, see `abandonStream`. */
|
|
69
|
+
streamAbandonedValue = false;
|
|
53
70
|
pollInFlight = false;
|
|
54
71
|
pollQueued = false;
|
|
55
72
|
pollFailures = 0;
|
|
56
73
|
idlePolls = 0;
|
|
57
74
|
/** Polls attempted, for `subscriptionBudget.maxPolls`. */
|
|
58
75
|
pollsAttempted = 0;
|
|
59
|
-
/**
|
|
60
|
-
|
|
76
|
+
/**
|
|
77
|
+
* The one auth retry per failure streak: the channel that spent it once
|
|
78
|
+
* `onAuthChallenge` ran, `'declined'` once it said it could not recover.
|
|
79
|
+
* Both hold until a request succeeds.
|
|
80
|
+
*/
|
|
81
|
+
authCredit = 'available';
|
|
61
82
|
deadman = new ResettableTimer(() => this.schedulePoll());
|
|
62
83
|
staleConnection = new ResettableTimer(() => this.onStaleConnection());
|
|
63
84
|
budgetTimer = new ResettableTimer(() => this.stopWith({ reason: 'budget-exhausted', limit: 'maxDurationMs' }));
|
|
@@ -71,6 +92,15 @@ class ResilientSubscriptionImpl {
|
|
|
71
92
|
this.transport = options.transport;
|
|
72
93
|
this.params = options.params ?? {};
|
|
73
94
|
this.policy = { ...DEFAULT_POLICY, ...binding.config.policy, ...options.policy };
|
|
95
|
+
validateSnapshotSource(binding.config);
|
|
96
|
+
assertPolicySuitsBinding(binding.config.snapshotSource, this.policy);
|
|
97
|
+
this.pollCanDeliver = binding.config.snapshotSource === 'endpoint';
|
|
98
|
+
this.streamRefusal =
|
|
99
|
+
this.policy.streamRefusal === 'auto'
|
|
100
|
+
? this.pollCanDeliver
|
|
101
|
+
? 'keep-polling'
|
|
102
|
+
: 'stop'
|
|
103
|
+
: this.policy.streamRefusal;
|
|
74
104
|
this.diagnostics = options.diagnostics ?? {};
|
|
75
105
|
this.random = options.random ?? Math.random;
|
|
76
106
|
this.parseEventData = options.parseEventData ?? JSON.parse;
|
|
@@ -101,14 +131,7 @@ class ResilientSubscriptionImpl {
|
|
|
101
131
|
if (this.policy.mode === 'poll-only') {
|
|
102
132
|
// No stream is ever opened, so the machine starts where a dual-mode
|
|
103
133
|
// subscription only lands after repeated connect failures.
|
|
104
|
-
this.
|
|
105
|
-
this.setStatus('polling');
|
|
106
|
-
if (this.policy.initialPoll === 'eager') {
|
|
107
|
-
this.schedulePoll();
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
this.armDeadman();
|
|
111
|
-
}
|
|
134
|
+
this.degrade({ forcePoll: this.policy.initialPoll === 'eager' });
|
|
112
135
|
return;
|
|
113
136
|
}
|
|
114
137
|
void this.runStreamLoop();
|
|
@@ -123,6 +146,9 @@ class ResilientSubscriptionImpl {
|
|
|
123
146
|
get status() {
|
|
124
147
|
return this.statusValue;
|
|
125
148
|
}
|
|
149
|
+
get streamAbandoned() {
|
|
150
|
+
return this.streamAbandonedValue;
|
|
151
|
+
}
|
|
126
152
|
get result() {
|
|
127
153
|
return this.stopDetail;
|
|
128
154
|
}
|
|
@@ -202,12 +228,16 @@ class ResilientSubscriptionImpl {
|
|
|
202
228
|
nudge() {
|
|
203
229
|
if (this.stopped)
|
|
204
230
|
return;
|
|
205
|
-
this.
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
// Byte-activity watchdog stays authoritative; nothing else to do here.
|
|
231
|
+
if (this.pollCanDeliver) {
|
|
232
|
+
this.schedulePoll();
|
|
233
|
+
// The byte-activity watchdog stays authoritative for the stream.
|
|
209
234
|
return;
|
|
210
235
|
}
|
|
236
|
+
// No poll to force: a fresh stream is the only repair there is, so
|
|
237
|
+
// reconnect now rather than wait out the backoff. A connect in flight or
|
|
238
|
+
// an open stream is not cut: aborting either would count as a connect
|
|
239
|
+
// failure and add a backoff, slowing down the recovery it was asked for.
|
|
240
|
+
this.reconnectBackoffWake?.abort();
|
|
211
241
|
}
|
|
212
242
|
stop() {
|
|
213
243
|
this.stopWith({ reason: 'manual' });
|
|
@@ -236,7 +266,7 @@ class ResilientSubscriptionImpl {
|
|
|
236
266
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: the connect/consume/reconnect loop is a single state machine — splitting it would obscure the transitions
|
|
237
267
|
async runStreamLoop() {
|
|
238
268
|
let firstConnect = true;
|
|
239
|
-
while (!this.stopped) {
|
|
269
|
+
while (!this.stopped && !this.streamAbandoned) {
|
|
240
270
|
const streamAbort = new AbortController();
|
|
241
271
|
this.currentStreamAbort = streamAbort;
|
|
242
272
|
const onMasterAbort = () => streamAbort.abort();
|
|
@@ -273,10 +303,15 @@ class ResilientSubscriptionImpl {
|
|
|
273
303
|
if (this.stopped)
|
|
274
304
|
return;
|
|
275
305
|
if (!recovered) {
|
|
306
|
+
if (this.streamRefusal === 'keep-polling') {
|
|
307
|
+
this.abandonStream(response.status);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
276
310
|
this.stopWith({
|
|
277
311
|
reason: 'unretryable-status',
|
|
278
312
|
status: response.status,
|
|
279
313
|
channel: 'stream',
|
|
314
|
+
streamWasLive: this.streamEverProducedBytes,
|
|
280
315
|
});
|
|
281
316
|
return;
|
|
282
317
|
}
|
|
@@ -285,9 +320,14 @@ class ResilientSubscriptionImpl {
|
|
|
285
320
|
else {
|
|
286
321
|
this.serverRetryHintMs = undefined;
|
|
287
322
|
if (firstConnect) {
|
|
288
|
-
|
|
323
|
+
// A synthesized snapshot has nothing to hydrate from, so it takes
|
|
324
|
+
// the second branch: quiet is the normal state for a stream whose
|
|
325
|
+
// events are rare, and holding it out of 'live' until a byte
|
|
326
|
+
// arrives would mark a healthy surface as broken for hours. A
|
|
327
|
+
// connection that is open and dead is the stale watchdog's job.
|
|
328
|
+
if (this.pollCanDeliver && this.policy.initialPoll === 'eager') {
|
|
289
329
|
// Subscribe-first hydration: buffer live events until the
|
|
290
|
-
// snapshot lands
|
|
330
|
+
// snapshot lands, a zero missed-event window.
|
|
291
331
|
this.reconciler.beginHydration();
|
|
292
332
|
this.schedulePoll();
|
|
293
333
|
}
|
|
@@ -297,8 +337,11 @@ class ResilientSubscriptionImpl {
|
|
|
297
337
|
}
|
|
298
338
|
else {
|
|
299
339
|
// While degraded, an accepted connect is not evidence of anything:
|
|
300
|
-
// only bytes
|
|
301
|
-
|
|
340
|
+
// only bytes move the status back out of 'polling'. A synthesized
|
|
341
|
+
// snapshot has no 'polling' to hold, and holding it in
|
|
342
|
+
// 'reconnecting' would mark a quiet, healthy stream as broken for
|
|
343
|
+
// as long as its events are rare, the same case as a first connect.
|
|
344
|
+
if (!this.degraded || !this.pollCanDeliver) {
|
|
302
345
|
this.setStatus('live');
|
|
303
346
|
}
|
|
304
347
|
if ((this.binding.config.replay ?? 'untrusted') === 'untrusted') {
|
|
@@ -329,8 +372,12 @@ class ResilientSubscriptionImpl {
|
|
|
329
372
|
this.streamConnected = false;
|
|
330
373
|
this.abortController.signal.removeEventListener('abort', onMasterAbort);
|
|
331
374
|
}
|
|
332
|
-
if (this.stopped || this.reconciler.isTerminated)
|
|
375
|
+
if (this.stopped || this.streamAbandoned || this.reconciler.isTerminated)
|
|
333
376
|
return;
|
|
377
|
+
// Armed before any status is published below, so a listener that
|
|
378
|
+
// nudges on 'reconnecting' cuts this backoff short.
|
|
379
|
+
const backoffWake = new AbortController();
|
|
380
|
+
this.reconnectBackoffWake = backoffWake;
|
|
334
381
|
// A connection only counts as successful once it has actually carried
|
|
335
382
|
// bytes. A stream that is accepted and then closes immediately would
|
|
336
383
|
// otherwise reset the backoff on every attempt and never degrade,
|
|
@@ -338,16 +385,16 @@ class ResilientSubscriptionImpl {
|
|
|
338
385
|
if (connectFailed || !this.streamProducedBytes) {
|
|
339
386
|
this.consecutiveConnectFailures += 1;
|
|
340
387
|
}
|
|
341
|
-
if (this.consecutiveConnectFailures >= this.policy.degradedAfterFailures) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
// Degraded cadence applies from the next deadman arm.
|
|
346
|
-
this.armDeadman();
|
|
347
|
-
}
|
|
388
|
+
if (!this.degraded && this.consecutiveConnectFailures >= this.policy.degradedAfterFailures) {
|
|
389
|
+
// The poll this drop needs is scheduled below; the deadman carries
|
|
390
|
+
// the degraded cadence from its next arm.
|
|
391
|
+
this.degrade({ forcePoll: false });
|
|
348
392
|
}
|
|
349
393
|
else {
|
|
350
|
-
|
|
394
|
+
// Already degraded, a drop keeps an endpoint binding on 'polling'. A
|
|
395
|
+
// synthesized one may have reported 'live' off a quiet reconnect, and
|
|
396
|
+
// is back to having nothing that covers the outage.
|
|
397
|
+
this.setStatus(this.degraded && this.pollCanDeliver ? 'polling' : 'reconnecting');
|
|
351
398
|
}
|
|
352
399
|
// The stream just dropped — data may have been lost; poll now.
|
|
353
400
|
this.schedulePoll();
|
|
@@ -357,11 +404,63 @@ class ResilientSubscriptionImpl {
|
|
|
357
404
|
const delay = this.serverRetryHintMs !== undefined && !connectFailed
|
|
358
405
|
? this.serverRetryHintMs
|
|
359
406
|
: backoffDelay(backoffConfig, this.consecutiveConnectFailures, this.random);
|
|
360
|
-
|
|
361
|
-
if (
|
|
407
|
+
await this.waitOutReconnectBackoff(delay, backoffWake);
|
|
408
|
+
if (this.stopped)
|
|
362
409
|
return;
|
|
363
410
|
}
|
|
364
411
|
}
|
|
412
|
+
/**
|
|
413
|
+
* Sleep out the reconnect backoff, cut short by `stop()` or by `nudge()`.
|
|
414
|
+
* A nudge ends the wait without stopping anything, so the caller tells the
|
|
415
|
+
* two apart by `stopped`.
|
|
416
|
+
*/
|
|
417
|
+
async waitOutReconnectBackoff(delayMs, wake) {
|
|
418
|
+
const onMasterAbort = () => wake.abort();
|
|
419
|
+
this.abortController.signal.addEventListener('abort', onMasterAbort, { once: true });
|
|
420
|
+
try {
|
|
421
|
+
// A status listener run on the way here may already have stopped it.
|
|
422
|
+
if (this.stopped)
|
|
423
|
+
return;
|
|
424
|
+
await sleep(delayMs, wake.signal);
|
|
425
|
+
}
|
|
426
|
+
finally {
|
|
427
|
+
this.reconnectBackoffWake = undefined;
|
|
428
|
+
this.abortController.signal.removeEventListener('abort', onMasterAbort);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* Give the stream up for the life of the subscription and let the poll
|
|
433
|
+
* carry it, after a refusal no reconnect can get past.
|
|
434
|
+
*
|
|
435
|
+
* One-way, and held in `streamAbandonedValue` rather than in the caller's
|
|
436
|
+
* `return`: the connect loop tests it, so neither a later edit nor a
|
|
437
|
+
* throwing hook can put the subscription back on a request the server has
|
|
438
|
+
* already refused. Re-probing on a timer would win the latency back, at the
|
|
439
|
+
* cost of turning one refusal into an unbounded retry.
|
|
440
|
+
*
|
|
441
|
+
* The poll is forced rather than left to the deadman: under
|
|
442
|
+
* `initialPoll: 'eager'` the hydration poll is scheduled by an accepted
|
|
443
|
+
* connect, so a first connect that is refused leaves nothing armed.
|
|
444
|
+
*/
|
|
445
|
+
abandonStream(status) {
|
|
446
|
+
this.streamAbandonedValue = true;
|
|
447
|
+
// A retry the STREAM spent on a refresh that worked, only to be refused
|
|
448
|
+
// anyway, went to a channel that no longer exists. The poll now carries
|
|
449
|
+
// the subscription alone, so it gets the credit back instead of dying on
|
|
450
|
+
// a refusal the application was never asked about. A hook that declined
|
|
451
|
+
// keeps its answer: the poll carries the same credentials, and asking
|
|
452
|
+
// again would mean a second refresh or login prompt for one outage. A
|
|
453
|
+
// credit the poll spent stays spent: its own retry is what it bought.
|
|
454
|
+
if (this.authCredit === 'spent-by-stream')
|
|
455
|
+
this.authCredit = 'available';
|
|
456
|
+
const streamWasLive = this.streamEverProducedBytes;
|
|
457
|
+
this.runListener(() => this.diagnostics.onStreamRefused?.({ status, streamWasLive }), undefined);
|
|
458
|
+
// The hook may have stopped the subscription; a stopped one must not be
|
|
459
|
+
// put back into 'polling'.
|
|
460
|
+
if (this.stopped || this.reconciler.isTerminated)
|
|
461
|
+
return;
|
|
462
|
+
this.degrade({ forcePoll: true });
|
|
463
|
+
}
|
|
365
464
|
consumeStream(response) {
|
|
366
465
|
this.streamConnected = true;
|
|
367
466
|
return isParsedStreamResponse(response)
|
|
@@ -426,11 +525,12 @@ class ResilientSubscriptionImpl {
|
|
|
426
525
|
if (this.streamProducedBytes)
|
|
427
526
|
return;
|
|
428
527
|
this.streamProducedBytes = true;
|
|
528
|
+
this.streamEverProducedBytes = true;
|
|
429
529
|
// The stream is demonstrably working — clear the failure history and
|
|
430
530
|
// leave degraded mode. Doing this here rather than at connect keeps a
|
|
431
531
|
// connect-then-close loop counted as the failure it is.
|
|
432
532
|
this.consecutiveConnectFailures = 0;
|
|
433
|
-
this.
|
|
533
|
+
this.authCredit = 'available';
|
|
434
534
|
this.degraded = false;
|
|
435
535
|
// Bytes on the wire are the only evidence that delivery works, so they are
|
|
436
536
|
// what promotes the subscription to 'live' — from degraded polling, and
|
|
@@ -555,7 +655,39 @@ class ResilientSubscriptionImpl {
|
|
|
555
655
|
// --------------------------------------------------------------------
|
|
556
656
|
// Polling
|
|
557
657
|
// --------------------------------------------------------------------
|
|
658
|
+
/**
|
|
659
|
+
* Enter the degraded state, from wherever the subscription came:
|
|
660
|
+
* `mode: 'poll-only'` at construction, enough consecutive connect failures,
|
|
661
|
+
* or a stream given up on a refusal. It caps the reconnect backoff and
|
|
662
|
+
* stops an accepted-but-silent connect from claiming `'live'`.
|
|
663
|
+
*
|
|
664
|
+
* With a synthesized snapshot it stops there. `'polling'` would name a
|
|
665
|
+
* channel that delivers nothing, so the status stays `'reconnecting'`: the
|
|
666
|
+
* stream being down IS the outage, and nothing covers it.
|
|
667
|
+
*
|
|
668
|
+
* `forcePoll` polls now instead of waiting for the deadman, which the
|
|
669
|
+
* callers with nothing else armed depend on.
|
|
670
|
+
*/
|
|
671
|
+
degrade(opts) {
|
|
672
|
+
this.degraded = true;
|
|
673
|
+
if (!this.pollCanDeliver) {
|
|
674
|
+
this.setStatus('reconnecting');
|
|
675
|
+
return;
|
|
676
|
+
}
|
|
677
|
+
this.setStatus('polling');
|
|
678
|
+
if (opts.forcePoll) {
|
|
679
|
+
this.schedulePoll();
|
|
680
|
+
}
|
|
681
|
+
else {
|
|
682
|
+
this.armDeadman();
|
|
683
|
+
}
|
|
684
|
+
}
|
|
558
685
|
schedulePoll() {
|
|
686
|
+
// A synthesized snapshot has no news in it: every caller here (hydration,
|
|
687
|
+
// the deadman, a gap repair, a dropped stream, `nudge`) is asking for
|
|
688
|
+
// reconciliation that only the stream can provide.
|
|
689
|
+
if (!this.pollCanDeliver)
|
|
690
|
+
return;
|
|
559
691
|
if (this.stopped || this.reconciler.isTerminated)
|
|
560
692
|
return;
|
|
561
693
|
if (this.pollInFlight) {
|
|
@@ -620,7 +752,7 @@ class ResilientSubscriptionImpl {
|
|
|
620
752
|
return;
|
|
621
753
|
}
|
|
622
754
|
this.pollFailures = 0;
|
|
623
|
-
this.
|
|
755
|
+
this.authCredit = 'available';
|
|
624
756
|
const outcome = this.reconciler.handleSnapshot(response.body);
|
|
625
757
|
if (outcome.stale) {
|
|
626
758
|
this.diagnostics.onStaleSnapshot?.();
|
|
@@ -693,17 +825,22 @@ class ResilientSubscriptionImpl {
|
|
|
693
825
|
const inFlight = this.authRefresh;
|
|
694
826
|
if (inFlight)
|
|
695
827
|
return await inFlight;
|
|
696
|
-
if (this.
|
|
828
|
+
if (this.authCredit !== 'available')
|
|
697
829
|
return false;
|
|
698
|
-
|
|
830
|
+
const spent = channel === 'stream' ? 'spent-by-stream' : 'spent-by-poll';
|
|
831
|
+
this.authCredit = spent;
|
|
699
832
|
const refresh = (async () => {
|
|
833
|
+
let recovered = false;
|
|
700
834
|
try {
|
|
701
|
-
|
|
835
|
+
recovered = (await onAuthChallenge({ status, channel })) === true;
|
|
702
836
|
}
|
|
703
837
|
catch (error) {
|
|
704
838
|
this.diagnostics.onListenerError?.(error);
|
|
705
|
-
return false;
|
|
706
839
|
}
|
|
840
|
+
// A request that succeeded meanwhile already started a new streak.
|
|
841
|
+
if (!recovered && this.authCredit === spent)
|
|
842
|
+
this.authCredit = 'declined';
|
|
843
|
+
return recovered;
|
|
707
844
|
})();
|
|
708
845
|
this.authRefresh = refresh;
|
|
709
846
|
try {
|
|
@@ -711,7 +848,7 @@ class ResilientSubscriptionImpl {
|
|
|
711
848
|
}
|
|
712
849
|
finally {
|
|
713
850
|
// Only a refusal AFTER this refresh completed counts as the second
|
|
714
|
-
// failure, which is what `
|
|
851
|
+
// failure, which is what `authCredit` now gates.
|
|
715
852
|
if (this.authRefresh === refresh)
|
|
716
853
|
this.authRefresh = undefined;
|
|
717
854
|
}
|
|
@@ -758,6 +895,8 @@ class ResilientSubscriptionImpl {
|
|
|
758
895
|
return this.streamConnected ? 'connecting' : 'reconnecting';
|
|
759
896
|
}
|
|
760
897
|
armDeadman() {
|
|
898
|
+
if (!this.pollCanDeliver)
|
|
899
|
+
return;
|
|
761
900
|
if (this.stopped || this.reconciler.isTerminated)
|
|
762
901
|
return;
|
|
763
902
|
if (this.degraded) {
|
|
@@ -849,6 +988,20 @@ class ResilientSubscriptionImpl {
|
|
|
849
988
|
});
|
|
850
989
|
}
|
|
851
990
|
}
|
|
991
|
+
/**
|
|
992
|
+
* Reject the combinations that could only ever deliver nothing, at
|
|
993
|
+
* construction rather than as a subscription that looks alive.
|
|
994
|
+
*/
|
|
995
|
+
function assertPolicySuitsBinding(snapshotSource, policy) {
|
|
996
|
+
if (snapshotSource === 'endpoint')
|
|
997
|
+
return;
|
|
998
|
+
if (policy.mode === 'poll-only') {
|
|
999
|
+
throw new Error("mode: 'poll-only' requires snapshotSource: 'endpoint'. A synthesized snapshot is answered without asking the server, so a subscription that never opens a stream could not deliver anything.");
|
|
1000
|
+
}
|
|
1001
|
+
if (policy.streamRefusal === 'keep-polling') {
|
|
1002
|
+
throw new Error("streamRefusal: 'keep-polling' requires snapshotSource: 'endpoint'. A synthesized snapshot is answered without asking the server, so polling on after a refused stream would report a healthy subscription that delivers nothing.");
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
852
1005
|
/**
|
|
853
1006
|
* Create a resilient subscription: SSE as the low-latency channel, short
|
|
854
1007
|
* polls as the correctness backbone. See the package README for the state
|
|
@@ -864,6 +1017,9 @@ export function createResilientSubscription(binding, options) {
|
|
|
864
1017
|
get status() {
|
|
865
1018
|
return impl.status;
|
|
866
1019
|
},
|
|
1020
|
+
get streamAbandoned() {
|
|
1021
|
+
return impl.streamAbandoned;
|
|
1022
|
+
},
|
|
867
1023
|
onStatusChange: (listener) => impl.onStatusChange(listener),
|
|
868
1024
|
get result() {
|
|
869
1025
|
return impl.result;
|
package/dist/subscription.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAqCvD;;;;GAIG;AACH,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,MAAM,CAAY;IAClB,MAAM,CAAoB;IAC1B,KAAK,CAA0C;IAC/C,OAAO,CAA+B;IAE/C,YAAY,MAA8B;QACxC,KAAK,CAAC,yBAAyB,MAAM,CAAC,MAAM,oCAAoC,CAAC,CAAA;QACjF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC/B,CAAC;CACF;AAkID,MAAM,yBAAyB;IACZ,OAAO,CAA0C;IACjD,SAAS,CAAmB;IAC5B,MAAM,CAAuB;IAC7B,MAAM,CAAgB;IACtB,WAAW,CAAqB;IAChC,MAAM,CAAc;IACpB,cAAc,CAA0B;IACxC,UAAU,CAAqC;IAC/C,QAAQ,CAAsB;IAC9B,eAAe,CAEnB;IAEI,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;IAChD,kBAAkB,CAA6B;IAE/C,WAAW,GAAuB,YAAY,CAAA;IAC9C,OAAO,GAAG,KAAK,CAAA;IACf,UAAU,CAAoC;IAC9C,eAAe,GAAG,KAAK,CAAA;IACvB,WAAW,CAAoB;IACvC;;;OAGG;IACK,WAAW,CAA8B;IACzC,iBAAiB,CAAoB;IACrC,0BAA0B,GAAG,CAAC,CAAA;IAC9B,QAAQ,GAAG,KAAK,CAAA;IACxB,gEAAgE;IACxD,mBAAmB,GAAG,KAAK,CAAA;IAE3B,YAAY,GAAG,KAAK,CAAA;IACpB,UAAU,GAAG,KAAK,CAAA;IAClB,YAAY,GAAG,CAAC,CAAA;IAChB,SAAS,GAAG,CAAC,CAAA;IACrB,0DAA0D;IAClD,cAAc,GAAG,CAAC,CAAA;IAC1B,mFAAmF;IAC3E,cAAc,GAAG,KAAK,CAAA;IAEb,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;IACxD,eAAe,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACrE,WAAW,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,CACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CACtE,CAAA;IAEgB,cAAc,GAAG,IAAI,GAAG,EAA0C,CAAA;IAClE,cAAc,GAAG,IAAI,GAAG,EAA0B,CAAA;IAClD,eAAe,GAAG,IAAI,GAAG,EAEvC,CAAA;IACc,aAAa,GAAG,IAAI,GAAG,EAA4C,CAAA;IACnE,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAA;IAEhE,YACE,OAAiD,EACjD,OAA2C;QAE3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;QAChF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAA;QAC5C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;QAC3C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAA;QAC1D,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE;YAC/C,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB;YACtD,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC;oBACH,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAA;gBAC3C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAA;gBAC3C,CAAC;YACH,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,EAAE,CAAA;gBACX,OAAM;YACR,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC7E,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAA;QACnE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,oEAAoE;YACpE,2DAA2D;YAC3D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;YACpB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;YACzB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;gBACxC,IAAI,CAAC,YAAY,EAAE,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,EAAE,CAAA;YACnB,CAAC;YACD,OAAM;QACR,CAAC;QAED,KAAK,IAAI,CAAC,aAAa,EAAE,CAAA;QACzB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACxC,iEAAiE;YACjE,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,iBAAiB;IACjB,uEAAuE;IAEvE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;IACnC,CAAC;IAED,OAAO,CAAC,QAAgD;QACtD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,aAAa,CAAC,QAAgC;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACjC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED,cAAc,CACZ,QAA+E;QAE/E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CAAC,QAAkD;QACvD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;YAC3C,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAED,MAAM;QACJ,MAAM,KAAK,GAAiC,EAAE,CAAA;QAC9C,IAAI,MAAgC,CAAA;QACpC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAA;QAEvB,MAAM,IAAI,GAAyB;YACjC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACd,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACjB,MAAM,EAAE,EAAE,CAAA;YACZ,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,IAAI,GAAG,IAAI,CAAA;gBACX,MAAM,EAAE,EAAE,CAAA;YACZ,CAAC;SACF,CAAA;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;QAChC,OAAO;YACL,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO;oBACL,KAAK,CAAC,IAAI;wBACR,OAAO,IAAI,EAAE,CAAC;4BACZ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;4BAC1B,IAAI,IAAI,KAAK,SAAS;gCAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;4BAC3D,IAAI,IAAI,EAAE,CAAC;gCACT,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gCAClB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;4BACzC,CAAC;4BACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gCAClC,MAAM,GAAG,OAAO,CAAA;4BAClB,CAAC,CAAC,CAAA;4BACF,MAAM,GAAG,SAAS,CAAA;wBACpB,CAAC;oBACH,CAAC;oBACD,MAAM;wBACJ,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;wBAClB,IAAI,GAAG,IAAI,CAAA;wBACX,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC1D,CAAC;iBACF,CAAA;YACH,CAAC;SACF,CAAA;IACH,CAAC;IAED,OAAO,CACL,KAAQ,EACR,IAA6B;QAE7B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAC3E,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAiB,CAC3C,CAAA;IACH,CAAC;IAED,eAAe,CAAC,IAA6B;QAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAA;QAClE,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;IAC9E,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,yDAAyD;QACzD,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,KAAK,KAAK,EAAE,CAAC;YAC3E,uEAAuE;YACvE,OAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IACrC,CAAC;IAEO,QAAQ,CAAC,MAA8B;QAC7C,IAAI,IAAI,CAAC,OAAO;YAAE,OAAM;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAA;QACxB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QACxB,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAA;QAChC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACjC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC7E,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,MAAM,EAAE,CAAA;QACpD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;IAC5B,CAAC;IAED,uEAAuE;IACvE,cAAc;IACd,uEAAuE;IAEvE,yKAAyK;IACjK,KAAK,CAAC,aAAa;QACzB,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAA;YACzC,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAA;YACrC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;YAC/C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YAEpF,IAAI,aAAa,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAA;YAChC,wEAAwE;YACxE,qEAAqE;YACrE,6DAA6D;YAC7D,MAAM,cAAc,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAA;YACrE,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;gBAC3C,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;YAClD,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAC9C,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAC5C,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAC9D,CAAA;gBACD,cAAc,CAAC,KAAK,EAAE,CAAA;gBACtB,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAM;gBAExB,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;gBAC1D,IACE,QAAQ,CAAC,MAAM,KAAK,GAAG;oBACvB,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAC3D,CAAC;oBACD,aAAa,GAAG,IAAI,CAAA;oBACpB,oEAAoE;oBACpE,mEAAmE;oBACnE,mCAAmC;oBACnC,WAAW,CAAC,KAAK,EAAE,CAAA;oBACnB,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAC9B,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAC/D,CAAA;oBACD,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC9D,iEAAiE;wBACjE,iEAAiE;wBACjE,8DAA8D;wBAC9D,0CAA0C;wBAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;wBACxE,IAAI,IAAI,CAAC,OAAO;4BAAE,OAAM;wBACxB,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,IAAI,CAAC,QAAQ,CAAC;gCACZ,MAAM,EAAE,oBAAoB;gCAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,OAAO,EAAE,QAAQ;6BAClB,CAAC,CAAA;4BACF,OAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAA;oBAElC,IAAI,YAAY,EAAE,CAAC;wBACjB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;4BACxC,0DAA0D;4BAC1D,6CAA6C;4BAC7C,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAA;4BAChC,IAAI,CAAC,YAAY,EAAE,CAAA;wBACrB,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBACxB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,mEAAmE;wBACnE,yDAAyD;wBACzD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBACxB,CAAC;wBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,WAAW,EAAE,CAAC;4BAChE,8DAA8D;4BAC9D,0CAA0C;4BAC1C,IAAI,CAAC,YAAY,EAAE,CAAA;wBACrB,CAAC;oBACH,CAAC;oBACD,YAAY,GAAG,KAAK,CAAA;oBAEpB,IAAI,CAAC,kBAAkB,EAAE,CAAA;oBACzB,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;oBAClC,cAAc,CAAC,KAAK,EAAE,CAAA;oBACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;wBAAE,OAAM;oBACxD,8DAA8D;oBAC9D,iCAAiC;gBACnC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAM;gBACxB,aAAa,GAAG,CAAC,IAAI,CAAC,eAAe,CAAA;gBACrC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAA;YACzC,CAAC;oBAAS,CAAC;gBACT,cAAc,CAAC,KAAK,EAAE,CAAA;gBACtB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;gBAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;gBAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YACzE,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;gBAAE,OAAM;YAExD,sEAAsE;YACtE,qEAAqE;YACrE,kEAAkE;YAClE,6DAA6D;YAC7D,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC/C,IAAI,CAAC,0BAA0B,IAAI,CAAC,CAAA;YACtC,CAAC;YACD,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;gBACzE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;oBACpB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;oBACzB,sDAAsD;oBACtD,IAAI,CAAC,UAAU,EAAE,CAAA;gBACnB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;YAChC,CAAC;YAED,+DAA+D;YAC/D,IAAI,CAAC,YAAY,EAAE,CAAA;YAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ;gBACjC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;gBAC9E,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAA;YAC/B,MAAM,KAAK,GACT,IAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,aAAa;gBACpD,CAAC,CAAC,IAAI,CAAC,iBAAiB;gBACxB,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/E,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAC/D,IAAI,CAAC,OAAO;gBAAE,OAAM;QACtB,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,QAAwB;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;QAC3B,OAAO,sBAAsB,CAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;YACrC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,4DAA4D;IAC5D,IAAY,cAAc;QACxB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAA;IACrD,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,aAAa,CAAC,MAAqC;QAC/D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,cAAc;gBAAE,OAAM;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACvB,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAClC,IAAI,IAAI,CAAC,cAAc;gBAAE,OAAM;QACjC,CAAC;IACH,CAAC;IAED,oDAAoD;IAC5C,KAAK,CAAC,aAAa,CAAC,MAA6B;QACvD,wEAAwE;QACxE,wEAAwE;QACxE,qDAAqD;QACrD,MAAM,MAAM,GAAG,qBAAqB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACvE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,cAAc;gBAAE,OAAM;YAC/B,oEAAoE;YACpE,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACvB,IAAI,UAAU,GAAG,KAAK,CAAA;YACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;oBAAE,UAAU,GAAG,IAAI,CAAA;gBACrD,IAAI,IAAI,CAAC,cAAc;oBAAE,OAAM;YACjC,CAAC;YACD,qEAAqE;YACrE,oEAAoE;YACpE,uEAAuE;YACvE,2BAA2B;YAC3B,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACjE,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,yBAAyB;YACzB,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;QACxD,CAAC;IACH,CAAC;IAED,gFAAgF;IACxE,gBAAgB;QACtB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAM;QACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;QAC/B,qEAAqE;QACrE,sEAAsE;QACtE,wDAAwD;QACxD,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,2EAA2E;QAC3E,wEAAwE;QACxE,sEAAsE;QACtE,2EAA2E;QAC3E,wEAAwE;QACxE,qCAAqC;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,kBAAkB,CAAC,MAAsB;QAC/C,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;YACrC,OAAM;QACR,CAAC;QACD,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE;YAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IAC/E,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,MAAsB;QAC9C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEjE,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,sEAAsE;YACtE,wEAAwE;YACxE,eAAe;YACf,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAA;YACvC,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;QAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAC1C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;YAChC,IAAI;YACJ,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAA;QAEF,6DAA6D;QAC7D,yEAAyE;QACzE,0EAA0E;QAC1E,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,EAAE;QACF,qEAAqE;QACrE,wEAAwE;QACxE,uEAAuE;QACvE,yEAAyE;QACzE,uEAAuE;QACvE,oDAAoD;QACpD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,UAAU,EAAE,CAAA;QAEpD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,kDAAkD;YAClD,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;YACnD,+DAA+D;YAC/D,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,GAAe,EAAE,cAAuB;QACxD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,OAAe;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAM;QACrC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAA;QAC1D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAA;IACpE,CAAC;IAEO,iBAAiB;QACvB,qEAAqE;QACrE,yEAAyE;QACzE,yBAAyB;QACzB,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAA;IAClC,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAwB,KAAK,KAAK;YAAE,OAAM;QAC1D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;IAChE,CAAC;IAED,uEAAuE;IACvE,UAAU;IACV,uEAAuE;IAE/D,YAAY;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;YAAE,OAAM;QACxD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;YACtB,OAAM;QACR,CAAC;QACD,KAAK,IAAI,CAAC,WAAW,EAAE,CAAA;IACzB,CAAC;IAED,mKAAmK;IAC3J,KAAK,CAAC,WAAW;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAA;QACzD,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAChE,OAAM;QACR,CAAC;QACD,IAAI,CAAC,cAAc,IAAI,CAAC,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,uEAAuE;QACvE,wEAAwE;QACxE,uEAAuE;QACvE,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,eAAe,EAAE,CAAA;QACvC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QAC7C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACpF,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;QAChE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YACxC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAC5C,CAAC;QACD,oEAAoE;QACpE,mEAAmE;QACnE,mDAAmD;QACnD,IAAI,WAAqC,CAAA;QACzC,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;gBACvE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;oBAAE,OAAM;YAC1D,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CACjD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAC9C,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAC7B,CAAA;YACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;gBAAE,OAAM;YAExD,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAC5B,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,EAAE,CAAC,CACjE,CAAA;gBACD,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;oBACtE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;wBAAE,OAAM;oBACxD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,IAAI,CAAC,QAAQ,CAAC;4BACZ,MAAM,EAAE,oBAAoB;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,OAAO,EAAE,MAAM;yBAChB,CAAC,CAAA;wBACF,OAAM;oBACR,CAAC;oBACD,mEAAmE;oBACnE,wDAAwD;oBACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;oBACtB,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,YAAY,EAAE,CAAA;gBACnB,OAAM;YACR,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,CAAC,CAAA;YACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAgB,CAAC,CAAA;YACzE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAA;YACtC,CAAC;YACD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAA;YACtC,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,oEAAoE;gBACpE,kEAAkE;gBAClE,oEAAoE;gBACpE,2CAA2C;gBAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;gBACnD,IAAI,CAAC,YAAY,EAAE,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YAC/C,IAAI,OAAO,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChD,gEAAgE;gBAChE,gEAAgE;gBAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAA;YAC7C,CAAC;YACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;gBAC3C,OAAM;YACR,CAAC;YAED,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,IAAI,CAAC,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,UAAU,EAAE,CAAA;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAM;YACxB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;gBAAS,CAAC;YACT,WAAW,EAAE,EAAE,CAAA;YACf,WAAW,CAAC,KAAK,EAAE,CAAA;YACnB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YACvE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;gBACtE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;gBACvB,KAAK,IAAI,CAAC,WAAW,EAAE,CAAA;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,OAA0B;QACvE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;QAC5C,IAAI,CAAC,eAAe;YAAE,OAAO,KAAK,CAAA;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAA;QAErE,sEAAsE;QACtE,oEAAoE;QACpE,0EAA0E;QAC1E,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAA;QACjC,IAAI,QAAQ;YAAE,OAAO,MAAM,QAAQ,CAAA;QAEnC,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAA;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAC1B,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,CAAA;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAA;gBACzC,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QACJ,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;QAC1B,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAA;QACtB,CAAC;gBAAS,CAAC;YACT,mEAAmE;YACnE,qDAAqD;YACrD,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO;gBAAE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;QAChE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,YAAY;QAClB,IAAI,CAAC,YAAY,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAE9F,IACE,IAAI,CAAC,UAAU,CAAC,WAAW;YAC3B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,6BAA6B,EAC9D,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAA;YAClD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBAChB,mEAAmE;gBACnE,oEAAoE;gBACpE,2CAA2C;gBAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;YACrD,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;YAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAA;YAC3C,IAAI,OAAO,CAAC,UAAU;gBAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,oBAAoB;QAC1B,IAAI,IAAI,CAAC,mBAAmB;YAAE,OAAO,MAAM,CAAA;QAC3C,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAA;IAC7D,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY;YAAE,OAAM;QACxD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;YACpD,OAAM;QACR,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAA;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACpF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,uEAAuE;IACvE,uBAAuB;IACvB,uEAAuE;IAE/D,OAAO,CACb,UAAgD,EAChD,KAAqC;QAErC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC7E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAc,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,WAAW,CAAI,QAA4B,EAAE,KAAQ;QAC3D,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YAAC,MAAM,CAAC;gBACP,sEAAsE;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,MAA0B,EAAE,MAA+B;QAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM;YAAE,OAAM;QACvC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;QACzB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;IAEO,YAAY,CAClB,OAAkD,EAClD,IAA6B;QAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;gBAC7E,OAAM;YACR,CAAC;YACD,IAAI,KAAgD,CAAA;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACvD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,EAAE,CAAA;oBACT,MAAM,CAAC,IAAI,wBAAwB,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC,CAAC,CAAA;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,OAAM;gBAC3B,OAAO,EAAE,CAAA;gBACT,OAAO,CAAC,KAAK,CAAC,CAAA;YAChB,CAAC,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,QAAQ,EAAE,CAAA;gBACV,SAAS,EAAE,CAAA;gBACX,IAAI,KAAK,KAAK,SAAS;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAC9C,CAAC,CAAA;YACD,IAAI,IAAI,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBACtB,OAAO,EAAE,CAAA;oBACT,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAA;gBAC5E,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CACjB;gBAAC,KAAgC,CAAC,KAAK,EAAE,EAAE,CAAA;YAC9C,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAKzC,OAAiD,EACjD,OAA2C;IAE3C,MAAM,IAAI,GAAG,IAAI,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5D,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;QAC3B,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC7C,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC/B,aAAa,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QACzD,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;QACD,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QAC3D,IAAI,MAAM;YACR,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;QACD,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;QACzB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;QACnD,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;KACtD,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../src/subscription.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opinionated-machine/sse-fallback",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Browser-safe SSE client core with transparent polling fallback for opinionated-machine dual-mode contracts",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,13 +39,13 @@
|
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@biomejs/biome": "2.4.4",
|
|
42
|
-
"@lokalise/api-contracts": "^8.0.
|
|
42
|
+
"@lokalise/api-contracts": "^8.0.1",
|
|
43
43
|
"@lokalise/biome-config": "^3.1.1",
|
|
44
44
|
"@lokalise/tsconfig": "^3.1.0",
|
|
45
45
|
"rimraf": "^6.1.2",
|
|
46
46
|
"typescript": "^5.9.3",
|
|
47
47
|
"vitest": "^4.1.11",
|
|
48
|
-
"zod": "^4.
|
|
48
|
+
"zod": "^4.6.5"
|
|
49
49
|
},
|
|
50
50
|
"private": false,
|
|
51
51
|
"publishConfig": {
|