@catalyst-cloud/sdk 0.4.0 → 0.6.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/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/live-sync-client.d.ts +140 -0
- package/dist/live-sync-client.d.ts.map +1 -1
- package/dist/live-sync-client.js +374 -3
- package/dist/live-sync-client.js.map +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js.map +1 -1
- package/dist/otel.d.ts +14 -0
- package/dist/otel.d.ts.map +1 -1
- package/dist/otel.js +9 -0
- package/dist/otel.js.map +1 -1
- package/dist/replica/catalyst-replica.d.ts +23 -0
- package/dist/replica/catalyst-replica.d.ts.map +1 -1
- package/dist/replica/catalyst-replica.js +21 -1
- package/dist/replica/catalyst-replica.js.map +1 -1
- package/dist/types.d.ts +35 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { LiveSyncClient, buildConnectUrl, parseFrame, toWsOrigin, type AuthStrategy, type LiveSyncClientOptions, type LiveSyncStatus, type LogLevel, type WebSocketLike, type WebSocketFactory, } from "./live-sync-client.js";
|
|
2
|
-
export { ENTITY_NAMES, CHANGE_OPS, type AccountId, type EntityName, type ChangeOp, type ChangeFrame, type ResyncFrame, type SyncFrame, type ServerFrame, } from "./types.js";
|
|
3
|
-
export { DEFAULT_SCOPE_NAME, CATALYST_ATTR, REPLICA_METRIC, REPLICA_LOG, REPLICA_SPAN, REPLICA_STATUS_CODE, type ReplicaApplyResult, type TelemetryConfig, } from "./otel.js";
|
|
2
|
+
export { ENTITY_NAMES, CHANGE_OPS, PING_FRAME, PONG_FRAME, type AccountId, type EntityName, type ChangeOp, type ChangeFrame, type ResyncFrame, type SyncFrame, type PongFrame, type HeadFrame, type ServerFrame, } from "./types.js";
|
|
3
|
+
export { DEFAULT_SCOPE_NAME, CATALYST_ATTR, REPLICA_METRIC, REPLICA_LOG, REPLICA_SPAN, REPLICA_STATUS_CODE, type ReplicaApplyResult, type ReplicaGapEvent, type TelemetryConfig, } from "./otel.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
//
|
|
7
7
|
// The class is storage-agnostic and auth-injected: see {@link LiveSyncClient}.
|
|
8
8
|
export { LiveSyncClient, buildConnectUrl, parseFrame, toWsOrigin, } from "./live-sync-client.js";
|
|
9
|
-
export { ENTITY_NAMES, CHANGE_OPS, } from "./types.js";
|
|
9
|
+
export { ENTITY_NAMES, CHANGE_OPS, PING_FRAME, PONG_FRAME, } from "./types.js";
|
|
10
10
|
// The opt-in OpenTelemetry contract (CTC-138). Just the `telemetry` option type + the instrumentation
|
|
11
11
|
// scope / metric / span / attribute NAMES (plain consts + a structural type, NO `@opentelemetry/api`
|
|
12
12
|
// type leak), so a consumer can type the option and reference the exact stream names for dashboards.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,sGAAsG;AACtG,mGAAmG;AACnG,uBAAuB;AACvB,EAAE;AACF,+EAA+E;AAE/E,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,GAOX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,sGAAsG;AACtG,mGAAmG;AACnG,uBAAuB;AACvB,EAAE;AACF,+EAA+E;AAE/E,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,GAOX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,GAUX,MAAM,YAAY,CAAC;AAEpB,sGAAsG;AACtG,qGAAqG;AACrG,qGAAqG;AACrG,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,GAIpB,MAAM,WAAW,CAAC"}
|
|
@@ -81,6 +81,32 @@ export interface LiveSyncClientOptions {
|
|
|
81
81
|
backoffMs?: number;
|
|
82
82
|
/** Reconnect backoff ceiling in ms. Default 30_000. */
|
|
83
83
|
maxBackoffMs?: number;
|
|
84
|
+
/**
|
|
85
|
+
* Liveness watchdog (CTC-135): after this many ms of inbound silence, send one `{"type":"ping"}` and
|
|
86
|
+
* expect a frame back within {@link pongTimeoutMs}. Any inbound frame (change OR pong) postpones the
|
|
87
|
+
* next ping, so a busy stream never pings. Default `90_000`; set `0` to disable the watchdog entirely
|
|
88
|
+
* (back to close/error-only detection).
|
|
89
|
+
*/
|
|
90
|
+
pingIntervalMs?: number;
|
|
91
|
+
/**
|
|
92
|
+
* How long (ms) to wait for ANY inbound frame after sending a liveness ping before declaring the
|
|
93
|
+
* socket half-open and force-reconnecting through the normal backoff path. Default `15_000`.
|
|
94
|
+
*/
|
|
95
|
+
pongTimeoutMs?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Gap detection (CTL-1402): how long (ms) to wait for a `{type:"sync"}` gap re-request to finish
|
|
98
|
+
* redelivering the detected hole before retrying (or, once {@link gapRetryLimit} re-requests have
|
|
99
|
+
* been spent, escalating to the full re-seed path). Default `10_000`; set `0` to never time out
|
|
100
|
+
* (the gap then heals only via the replay itself or the next reconnect — not recommended).
|
|
101
|
+
*/
|
|
102
|
+
gapTimeoutMs?: number;
|
|
103
|
+
/**
|
|
104
|
+
* Gap detection (CTL-1402): total `{type:"sync"}` re-requests to spend on one gap before escalating
|
|
105
|
+
* to the resync/re-seed path. Default `3`. Escalation — never silent acceptance — is deliberate: a
|
|
106
|
+
* gap the replay cannot close (evicted rows, or seqs that never existed) must end in a /snapshot
|
|
107
|
+
* re-seed, not a sealed hole.
|
|
108
|
+
*/
|
|
109
|
+
gapRetryLimit?: number;
|
|
84
110
|
/** Injectable WebSocket factory (tests / a node polyfill). Defaults to `globalThis.WebSocket`. */
|
|
85
111
|
wsFactory?: WebSocketFactory;
|
|
86
112
|
/** Optional structured logger; defaults to console. */
|
|
@@ -123,6 +149,10 @@ export declare class LiveSyncClient {
|
|
|
123
149
|
private readonly onStatus?;
|
|
124
150
|
private readonly backoffMs;
|
|
125
151
|
private readonly maxBackoffMs;
|
|
152
|
+
private readonly pingIntervalMs;
|
|
153
|
+
private readonly pongTimeoutMs;
|
|
154
|
+
private readonly gapTimeoutMs;
|
|
155
|
+
private readonly gapRetryLimit;
|
|
126
156
|
private readonly wsFactory;
|
|
127
157
|
private readonly log;
|
|
128
158
|
private readonly telemetryConfig;
|
|
@@ -136,6 +166,36 @@ export declare class LiveSyncClient {
|
|
|
136
166
|
private telemetry;
|
|
137
167
|
/** The in-flight connect-attempt span (ended OK on open, ERROR on construct-fail / close-before-open). */
|
|
138
168
|
private connectSpan;
|
|
169
|
+
/** Transport high-water: the highest seq DELIVERED to onChange — the contiguity baseline. Re-seeded
|
|
170
|
+
* from getCursor() on every (re)open (the durable cursor never advanced past an undelivered frame,
|
|
171
|
+
* so the on-open `{type:"sync"}` replay covers any previously-pending hole). `-1` = no baseline yet
|
|
172
|
+
* (fresh cursor / cursorless store) — gap checks are suspended until a baseline exists. */
|
|
173
|
+
private deliveredSeq;
|
|
174
|
+
/** The gap currently being re-requested, or null when the stream is contiguous. `seqFrom..seqTo` is
|
|
175
|
+
* the detected hole (fixed at detection); `retries` counts the sync re-requests spent on it. */
|
|
176
|
+
private gap;
|
|
177
|
+
private gapTimer;
|
|
178
|
+
/** Epoch ms of the last inbound CHANGE frame (live or replayed, delivered or gap-dropped). Unlike
|
|
179
|
+
* {@link lastFrameAt} this ignores pongs, so it only moves when the feed actually pushes data. */
|
|
180
|
+
private _lastChangeFrameAt;
|
|
181
|
+
/** The `catalyst.replica.gaps` counter (no-op until telemetry resolves in start()). */
|
|
182
|
+
private gapCounter;
|
|
183
|
+
/** Epoch ms of the last inbound frame (any bytes: change, pong, even malformed). Null before the
|
|
184
|
+
* first frame. Public via {@link lastFrameAt} — the per-frame timestamp the catalyst daemon's
|
|
185
|
+
* stall classifier lacked (it can now distinguish a quiet feed from a dead socket). Client-lifetime. */
|
|
186
|
+
private _lastFrameAt;
|
|
187
|
+
/** Per-CONNECTION: has this socket answered at least one ping? Gates a real liveness timeout vs a
|
|
188
|
+
* never-ponged feature-detect probe. Reset on every (re)open. */
|
|
189
|
+
private pongObserved;
|
|
190
|
+
/** Per-CONNECTION: epoch ms the last ping was sent, for the deadline's late-timer re-check. */
|
|
191
|
+
private pingSentAt;
|
|
192
|
+
/** Client-lifetime: consecutive opened-then-never-ponged connections. Reset to 0 by ANY pong. */
|
|
193
|
+
private probeFailures;
|
|
194
|
+
/** Client-lifetime: after PROBE_FAILURE_LIMIT never-ponged connections we stop pinging for good
|
|
195
|
+
* (an old server without auto-pong), degrading to close/error-only detection. */
|
|
196
|
+
private watchdogDisabled;
|
|
197
|
+
private pingTimer;
|
|
198
|
+
private pongDeadline;
|
|
139
199
|
constructor(opts: LiveSyncClientOptions);
|
|
140
200
|
/**
|
|
141
201
|
* Start the client: seed first if the consumer has no cursor, then open the live socket and keep it
|
|
@@ -158,6 +218,51 @@ export declare class LiveSyncClient {
|
|
|
158
218
|
/** Ask the service to replay everything after our durable cursor. */
|
|
159
219
|
private sendSync;
|
|
160
220
|
private handleFrame;
|
|
221
|
+
/**
|
|
222
|
+
* A change frame arrived BEYOND the contiguous next seq: every frame in `(deliveredSeq, frame.seq)`
|
|
223
|
+
* was silently dropped by the at-most-once live push. The frame is NOT applied and the baseline is
|
|
224
|
+
* NOT advanced past the hole — the mirror's change_log is durable, so the client re-requests the
|
|
225
|
+
* gap with the same `{type:"sync", after}` control frame it sends on every (re)connect, and the
|
|
226
|
+
* mirror replays the missing rows as ordinary change frames through the same apply path. While a
|
|
227
|
+
* re-request is in flight, further beyond-the-gap frames (in-flight live pushes the replay will
|
|
228
|
+
* cover) are dropped the same way WITHOUT sending another sync — one request per gap episode.
|
|
229
|
+
*/
|
|
230
|
+
private onGapFrame;
|
|
231
|
+
/**
|
|
232
|
+
* An end-of-pass head nudge (CTL-1402): `{type:"head", seq:N}` reports the mirror's current feed
|
|
233
|
+
* head after a reconcile pass whose change_log rows were never individually broadcast. If N sits
|
|
234
|
+
* beyond our contiguous baseline and no gap episode is pending, start one exactly as a beyond-gap
|
|
235
|
+
* change frame would — the hole is `deliveredSeq+1..N` (N itself is a real, un-broadcast row, so —
|
|
236
|
+
* unlike a change frame's trigger seq — it IS part of the hole) — and re-request it with the same
|
|
237
|
+
* bounded retry/escalation machinery and telemetry. The head frame is never applied and never
|
|
238
|
+
* advances a cursor. A head at/below the baseline is a no-op (already caught up); a head arriving
|
|
239
|
+
* while a gap is already pending is ignored (the in-flight replay already covers up to the head).
|
|
240
|
+
*/
|
|
241
|
+
private onHeadFrame;
|
|
242
|
+
/** Send (or re-send) the gap re-request from the current baseline and arm the heal deadline. */
|
|
243
|
+
private sendGapRequest;
|
|
244
|
+
/** (Re)arm the gap heal deadline. Armed when a re-request is sent AND refreshed on every frame of
|
|
245
|
+
* heal progress (the delivery path), so the deadline measures "no PROGRESS for gapTimeoutMs" rather
|
|
246
|
+
* than "not fully healed within gapTimeoutMs". `gapTimeoutMs === 0` disables it (heals only via the
|
|
247
|
+
* replay itself or the next reconnect). Only ever called with a gap episode pending. */
|
|
248
|
+
private armGapDeadline;
|
|
249
|
+
/** The heal deadline elapsed with the hole still open: retry within budget, else escalate to the
|
|
250
|
+
* full re-seed path. Escalation — never silent acceptance — is what keeps a drop from becoming a
|
|
251
|
+
* permanent hole one level up. */
|
|
252
|
+
private onGapTimeout;
|
|
253
|
+
/** The replay redelivered the whole detected hole (deliveredSeq reached seqTo contiguously). */
|
|
254
|
+
private onGapHealed;
|
|
255
|
+
/** Emit the gap lifecycle signal: a structured `catalyst.replica.gap` log line (the fleet's primary,
|
|
256
|
+
* Loki-materialized channel — same convention as `catalyst.replica.apply`) + a `result`-style
|
|
257
|
+
* low-cardinality bump of the `catalyst.replica.gaps` counter. seq_from/seq_to/size ride the log
|
|
258
|
+
* line as VALUES, never labels. Levels: `detected` and `healed` log at INFO — a gap is the
|
|
259
|
+
* steady-state path (every reconcile pass punches one that heals via re-request), so ALERTING MUST
|
|
260
|
+
* KEY ON `escalated` ONLY (logged at ERROR); a gap that heals is routine and boring. */
|
|
261
|
+
private recordGap;
|
|
262
|
+
private clearGapTimer;
|
|
263
|
+
/** Drop all gap state (pending hole + timer) — on (re)open and on the resync/re-seed path, both of
|
|
264
|
+
* which re-request/rebuild from the durable cursor and so supersede any pending re-request. */
|
|
265
|
+
private clearGapState;
|
|
161
266
|
/**
|
|
162
267
|
* Cursor underflow: the deltas we need were evicted from the service's retained change buffer. Close the socket
|
|
163
268
|
* (so no live frame interleaves with the re-seed), re-seed via the injected callback, then reconnect
|
|
@@ -165,6 +270,41 @@ export declare class LiveSyncClient {
|
|
|
165
270
|
* frame and suppresses scheduleReconnect for the duration so we reopen exactly once.
|
|
166
271
|
*/
|
|
167
272
|
private handleResync;
|
|
273
|
+
/** Epoch ms of the last inbound frame (change, pong, or malformed) — null before the first frame.
|
|
274
|
+
* Any inbound bytes prove the socket is alive; the catalyst daemon's stall classifier reads this to
|
|
275
|
+
* tell a quiet feed from a half-open socket (the per-frame timestamp it previously lacked). */
|
|
276
|
+
get lastFrameAt(): number | null;
|
|
277
|
+
/** Epoch ms of the last inbound CHANGE frame (live or replayed; delivered OR gap-dropped), or null
|
|
278
|
+
* before the first. Unlike {@link lastFrameAt} — which any bytes stamp, INCLUDING the mirror's
|
|
279
|
+
* watchdog auto-pongs — this only moves when the feed actually pushes data. Pairing the two lets a
|
|
280
|
+
* stall supervisor separate the three states CTL-1402 conflated: dead socket (both stale),
|
|
281
|
+
* healthy-but-unpushed socket (lastFrameAt fresh via pongs, lastChangeFrameAt stale while the
|
|
282
|
+
* mirror head advances), and a genuinely quiet feed (same signature, distinguished server-side). */
|
|
283
|
+
get lastChangeFrameAt(): number | null;
|
|
284
|
+
/** Any inbound frame: stamp liveness, cancel a pending pong deadline (it was answered), and postpone
|
|
285
|
+
* the next ping so a busy stream never sends one. Runs synchronously in onmessage before parsing. */
|
|
286
|
+
private onInboundFrame;
|
|
287
|
+
/** (Re)arm the idle-ping timer. No-op when the watchdog is disabled/off or there is no live socket,
|
|
288
|
+
* so it is safe to call on every frame. A setTimeout chain (not setInterval): each frame resets it. */
|
|
289
|
+
private armPing;
|
|
290
|
+
/** The feed has been idle for a full interval: send one liveness ping and start the pong deadline. A
|
|
291
|
+
* synchronous send throw means the socket is already dead — treat it as an unanswered probe now. */
|
|
292
|
+
private sendPing;
|
|
293
|
+
/** The pong deadline elapsed. Late-timer guard first: in a throttled background tab this callback can
|
|
294
|
+
* fire long after a frame actually arrived, so if ANYTHING landed at/after the ping we sent, liveness
|
|
295
|
+
* is proven — re-arm and move on (detection latency grows; correctness holds). Otherwise: half-open. */
|
|
296
|
+
private onPongDeadline;
|
|
297
|
+
/** A ping went unanswered (deadline elapsed or the send threw). If this connection had already proven
|
|
298
|
+
* pong capability it is a genuine liveness timeout; otherwise it counts toward the feature-detect —
|
|
299
|
+
* after PROBE_FAILURE_LIMIT never-ponged connections the watchdog disables itself for good (an old
|
|
300
|
+
* server without auto-pong). Either way, force-reconnect through the existing backoff path. */
|
|
301
|
+
private onProbeUnanswered;
|
|
302
|
+
/** Tear the socket down and reconnect through the normal backoff. closeSocket detaches handlers (so
|
|
303
|
+
* onclose won't also fire) and clears the liveness timers, so we schedule the reopen ourselves. */
|
|
304
|
+
private forceReconnect;
|
|
305
|
+
private clearPingTimer;
|
|
306
|
+
private clearPongDeadline;
|
|
307
|
+
private clearLivenessTimers;
|
|
168
308
|
}
|
|
169
309
|
/** Parse a WS frame (string or ArrayBuffer) into a known server frame, or null for anything malformed. */
|
|
170
310
|
export declare function parseFrame(data: unknown): ServerFrame | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-sync-client.d.ts","sourceRoot":"","sources":["../src/live-sync-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"live-sync-client.d.ts","sourceRoot":"","sources":["../src/live-sync-client.ts"],"names":[],"mappings":"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"}
|
package/dist/live-sync-client.js
CHANGED
|
@@ -21,9 +21,39 @@
|
|
|
21
21
|
// platform global `WebSocket` (browser, Bun, Node >=22) so the shared core has NO
|
|
22
22
|
// node-only import like 'ws'.
|
|
23
23
|
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
|
|
24
|
+
// Liveness (CTC-135): a pure-receive socket cannot tell a quiet feed from a HALF-OPEN one. A laptop
|
|
25
|
+
// sleep or network roam can kill the TCP path with no FIN/RST, so `onclose`/`onerror` never fire and
|
|
26
|
+
// the client would report "live" forever while frozen (a mini ran 3+ days, a laptop 6.8 days stuck at
|
|
27
|
+
// one cursor). The premise that "the platform handles ping/pong" is false here — WHATWG platforms
|
|
28
|
+
// *respond* to protocol pings but nothing in this stack ever *sends* one, and browsers can't send RFC
|
|
29
|
+
// 6455 pings at all. So this client runs an app-level watchdog: after `pingIntervalMs` of inbound
|
|
30
|
+
// silence it sends the pinned `{"type":"ping"}` frame; the mirror answers via `setWebSocketAutoResponse`
|
|
31
|
+
// (which replies WITHOUT waking a hibernated DO — ADR-0009's cost model is preserved). If no frame
|
|
32
|
+
// arrives within `pongTimeoutMs`, the socket is force-reconnected through the existing backoff path.
|
|
33
|
+
// Traffic postpones pings (no keepalive on a busy stream), and a 3-probe feature-detect disables the
|
|
34
|
+
// watchdog against an old server that never pongs — so it degrades to exactly today's behavior.
|
|
35
|
+
//
|
|
36
|
+
// Gap detection (CTL-1402): the server's live push (`broadcastChange`) is at-most-once — a send into a
|
|
37
|
+
// half-open socket is silently swallowed, and the dropped frame used to be sealed over permanently the
|
|
38
|
+
// moment the next delivered frame advanced the cursor. The change_log itself is durable, so every lost
|
|
39
|
+
// frame is recoverable — the client just never asked again. This client now tracks the contiguity of
|
|
40
|
+
// delivered seqs: a frame arriving at `seq > deliveredSeq + 1` is NOT delivered to `onChange`; instead
|
|
41
|
+
// the client re-requests the hole with the SAME `{type:"sync", after:<deliveredSeq>}` control frame it
|
|
42
|
+
// already sends on every (re)connect, and the mirror replays the missing rows as ordinary change
|
|
43
|
+
// frames through this same path (server support has existed since CTC-63 — `replaySince` is keyset-
|
|
44
|
+
// paginated and answers `{type:"resync"}` on underflow). Bounded: after `gapRetryLimit` no-PROGRESS
|
|
45
|
+
// windows (the heal deadline re-arms on every delivered frame, so a big-but-advancing heal never
|
|
46
|
+
// escalates) the client escalates to the full re-seed path rather than spinning — a gap is never
|
|
47
|
+
// silently accepted. Every transition emits the `catalyst.replica.gap` log/counter signal, the
|
|
48
|
+
// detector the per-frame apply telemetry is structurally blind to (an undelivered frame lands in no
|
|
49
|
+
// apply bucket). Gaps are the STEADY-STATE path here — the mirror's reconcile pass appends change_log
|
|
50
|
+
// rows it never broadcasts, so every pass punches a hole that heals via re-request — hence `detected`
|
|
51
|
+
// /`healed` log at INFO and only `escalated` alerts. A reconcile pass with NO webhook frame after it
|
|
52
|
+
// would leave nothing to detect the hole FROM, so the mirror also broadcasts one end-of-pass
|
|
53
|
+
// `{type:"head", seq:<feed head>}` nudge; the client treats a head beyond its baseline exactly like a
|
|
54
|
+
// beyond-gap change frame (re-request the hole `deliveredSeq+1..head`) but never applies it.
|
|
55
|
+
import { PING_FRAME } from "./types.js";
|
|
56
|
+
import { NOOP_TELEMETRY, createTelemetry, CATALYST_ATTR, REPLICA_LOG, REPLICA_METRIC, REPLICA_SPAN, DEFAULT_SCOPE_NAME, } from "./otel.js";
|
|
27
57
|
/** Resolve the runtime global WebSocket, or fail with an actionable message. */
|
|
28
58
|
function defaultWsFactory(url) {
|
|
29
59
|
const Ctor = globalThis.WebSocket;
|
|
@@ -56,6 +86,12 @@ export function buildConnectUrl(opts) {
|
|
|
56
86
|
params.set("account", opts.accountId);
|
|
57
87
|
return `${origin}${opts.connectPath}?${params.toString()}`;
|
|
58
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Consecutive opened-then-never-ponged connections after which the watchdog disables itself for the
|
|
91
|
+
* client's lifetime (feature-detect for a server without auto-pong). Bounds worst-case reconnect
|
|
92
|
+
* churn against an old server to exactly this many attempts, making mirror/SDK deploy order harmless.
|
|
93
|
+
*/
|
|
94
|
+
const PROBE_FAILURE_LIMIT = 3;
|
|
59
95
|
export class LiveSyncClient {
|
|
60
96
|
baseUrl;
|
|
61
97
|
accountId;
|
|
@@ -68,6 +104,10 @@ export class LiveSyncClient {
|
|
|
68
104
|
onStatus;
|
|
69
105
|
backoffMs;
|
|
70
106
|
maxBackoffMs;
|
|
107
|
+
pingIntervalMs;
|
|
108
|
+
pongTimeoutMs;
|
|
109
|
+
gapTimeoutMs;
|
|
110
|
+
gapRetryLimit;
|
|
71
111
|
wsFactory;
|
|
72
112
|
log;
|
|
73
113
|
telemetryConfig;
|
|
@@ -81,6 +121,38 @@ export class LiveSyncClient {
|
|
|
81
121
|
telemetry = NOOP_TELEMETRY;
|
|
82
122
|
/** The in-flight connect-attempt span (ended OK on open, ERROR on construct-fail / close-before-open). */
|
|
83
123
|
connectSpan = null;
|
|
124
|
+
// ── Gap-detection state (CTL-1402) ──
|
|
125
|
+
/** Transport high-water: the highest seq DELIVERED to onChange — the contiguity baseline. Re-seeded
|
|
126
|
+
* from getCursor() on every (re)open (the durable cursor never advanced past an undelivered frame,
|
|
127
|
+
* so the on-open `{type:"sync"}` replay covers any previously-pending hole). `-1` = no baseline yet
|
|
128
|
+
* (fresh cursor / cursorless store) — gap checks are suspended until a baseline exists. */
|
|
129
|
+
deliveredSeq = -1;
|
|
130
|
+
/** The gap currently being re-requested, or null when the stream is contiguous. `seqFrom..seqTo` is
|
|
131
|
+
* the detected hole (fixed at detection); `retries` counts the sync re-requests spent on it. */
|
|
132
|
+
gap = null;
|
|
133
|
+
gapTimer = null;
|
|
134
|
+
/** Epoch ms of the last inbound CHANGE frame (live or replayed, delivered or gap-dropped). Unlike
|
|
135
|
+
* {@link lastFrameAt} this ignores pongs, so it only moves when the feed actually pushes data. */
|
|
136
|
+
_lastChangeFrameAt = null;
|
|
137
|
+
/** The `catalyst.replica.gaps` counter (no-op until telemetry resolves in start()). */
|
|
138
|
+
gapCounter = NOOP_TELEMETRY.counter(REPLICA_METRIC.gaps);
|
|
139
|
+
// ── Liveness watchdog state (CTC-135) ──
|
|
140
|
+
/** Epoch ms of the last inbound frame (any bytes: change, pong, even malformed). Null before the
|
|
141
|
+
* first frame. Public via {@link lastFrameAt} — the per-frame timestamp the catalyst daemon's
|
|
142
|
+
* stall classifier lacked (it can now distinguish a quiet feed from a dead socket). Client-lifetime. */
|
|
143
|
+
_lastFrameAt = null;
|
|
144
|
+
/** Per-CONNECTION: has this socket answered at least one ping? Gates a real liveness timeout vs a
|
|
145
|
+
* never-ponged feature-detect probe. Reset on every (re)open. */
|
|
146
|
+
pongObserved = false;
|
|
147
|
+
/** Per-CONNECTION: epoch ms the last ping was sent, for the deadline's late-timer re-check. */
|
|
148
|
+
pingSentAt = 0;
|
|
149
|
+
/** Client-lifetime: consecutive opened-then-never-ponged connections. Reset to 0 by ANY pong. */
|
|
150
|
+
probeFailures = 0;
|
|
151
|
+
/** Client-lifetime: after PROBE_FAILURE_LIMIT never-ponged connections we stop pinging for good
|
|
152
|
+
* (an old server without auto-pong), degrading to close/error-only detection. */
|
|
153
|
+
watchdogDisabled = false;
|
|
154
|
+
pingTimer = null;
|
|
155
|
+
pongDeadline = null;
|
|
84
156
|
constructor(opts) {
|
|
85
157
|
this.baseUrl = stripTrailingSlashes(opts.baseUrl);
|
|
86
158
|
this.accountId = opts.accountId;
|
|
@@ -93,6 +165,10 @@ export class LiveSyncClient {
|
|
|
93
165
|
this.onStatus = opts.onStatus;
|
|
94
166
|
this.backoffMs = opts.backoffMs ?? 1000;
|
|
95
167
|
this.maxBackoffMs = opts.maxBackoffMs ?? 30_000;
|
|
168
|
+
this.pingIntervalMs = opts.pingIntervalMs ?? 90_000;
|
|
169
|
+
this.pongTimeoutMs = opts.pongTimeoutMs ?? 15_000;
|
|
170
|
+
this.gapTimeoutMs = opts.gapTimeoutMs ?? 10_000;
|
|
171
|
+
this.gapRetryLimit = opts.gapRetryLimit ?? 3;
|
|
96
172
|
this.wsFactory = opts.wsFactory ?? defaultWsFactory;
|
|
97
173
|
this.log =
|
|
98
174
|
opts.log ??
|
|
@@ -119,6 +195,10 @@ export class LiveSyncClient {
|
|
|
119
195
|
tracerName: DEFAULT_SCOPE_NAME,
|
|
120
196
|
meterName: DEFAULT_SCOPE_NAME,
|
|
121
197
|
});
|
|
198
|
+
this.gapCounter = this.telemetry.counter(REPLICA_METRIC.gaps, {
|
|
199
|
+
description: "Change-feed seq-gap lifecycle events (detected/healed/escalated).",
|
|
200
|
+
unit: "{gap}",
|
|
201
|
+
});
|
|
122
202
|
const saved = this.getCursor();
|
|
123
203
|
if (saved == null) {
|
|
124
204
|
this.setStatus("resyncing");
|
|
@@ -185,14 +265,26 @@ export class LiveSyncClient {
|
|
|
185
265
|
this.backoff = this.backoffMs; // a successful open resets the backoff ramp
|
|
186
266
|
this.setStatus("live");
|
|
187
267
|
this.endConnectSpan();
|
|
268
|
+
// Fresh connection: reset per-connection watchdog state, then start the idle-ping countdown.
|
|
269
|
+
this.pongObserved = false;
|
|
270
|
+
this.pingSentAt = 0;
|
|
271
|
+
// Re-baseline gap detection from the durable cursor: it never advanced past an undelivered
|
|
272
|
+
// frame, so the sync we are about to send re-requests any previously-pending hole anyway.
|
|
273
|
+
this.clearGapState();
|
|
274
|
+
this.deliveredSeq = this.getCursor() ?? -1;
|
|
188
275
|
this.sendSync();
|
|
276
|
+
this.armPing();
|
|
189
277
|
};
|
|
190
278
|
ws.onmessage = (ev) => {
|
|
279
|
+
// ANY inbound bytes prove the socket is alive: stamp lastFrameAt, clear a pending pong deadline,
|
|
280
|
+
// and postpone the next ping — BEFORE parsing, so even a malformed frame counts as liveness.
|
|
281
|
+
this.onInboundFrame();
|
|
191
282
|
void this.handleFrame(ev.data);
|
|
192
283
|
};
|
|
193
284
|
ws.onclose = () => {
|
|
194
285
|
if (this.ws === ws)
|
|
195
286
|
this.ws = null;
|
|
287
|
+
this.clearLivenessTimers(); // this connection's ping/deadline die with its socket
|
|
196
288
|
if (!this.stopped && !this.resyncing)
|
|
197
289
|
this.setStatus("reconnecting");
|
|
198
290
|
// No-op if onopen already ended it (a normal disconnect of a healthy socket isn't a connect error).
|
|
@@ -224,6 +316,9 @@ export class LiveSyncClient {
|
|
|
224
316
|
closeSocket() {
|
|
225
317
|
// A deliberate teardown of an in-flight attempt (stop/resync): end the connect span neutrally.
|
|
226
318
|
this.endConnectSpan();
|
|
319
|
+
// The single choke point for liveness-timer teardown — covers stop/resync/forceReconnect. (The
|
|
320
|
+
// server-close path clears them in onclose; both routes null this.ws, so no timer outlives a socket.)
|
|
321
|
+
this.clearLivenessTimers();
|
|
227
322
|
const ws = this.ws;
|
|
228
323
|
this.ws = null;
|
|
229
324
|
if (!ws)
|
|
@@ -264,6 +359,23 @@ export class LiveSyncClient {
|
|
|
264
359
|
const frame = parseFrame(data);
|
|
265
360
|
if (!frame)
|
|
266
361
|
return;
|
|
362
|
+
if (frame.type === "pong") {
|
|
363
|
+
// Transport-internal liveness ack: the socket is alive and the server speaks auto-pong. Record
|
|
364
|
+
// capability and reset the feature-detect counter; a pong is NEVER surfaced to onFrame/onChange.
|
|
365
|
+
// (lastFrameAt + the pending-deadline clear already happened synchronously in onInboundFrame.)
|
|
366
|
+
this.pongObserved = true;
|
|
367
|
+
this.probeFailures = 0;
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
if (frame.type === "head") {
|
|
371
|
+
// Transport-internal end-of-pass nudge (CTL-1402): a reconcile pass appended change_log rows it
|
|
372
|
+
// never broadcast individually, so this head seq may sit beyond our contiguous baseline with no
|
|
373
|
+
// change frame to detect the hole FROM. Treat that as a gap to re-request — but the head frame
|
|
374
|
+
// is itself NEVER delivered/applied and advances NO cursor. Not surfaced to onFrame/onChange
|
|
375
|
+
// (same convention as pong); onInboundFrame already stamped it as liveness bytes.
|
|
376
|
+
this.onHeadFrame(frame);
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
267
379
|
try {
|
|
268
380
|
this.onFrame?.(frame);
|
|
269
381
|
}
|
|
@@ -274,12 +386,158 @@ export class LiveSyncClient {
|
|
|
274
386
|
await this.handleResync();
|
|
275
387
|
return;
|
|
276
388
|
}
|
|
389
|
+
// A change frame: live pushes and `{type:"sync"}` replays arrive through this one path by design.
|
|
390
|
+
this._lastChangeFrameAt = Date.now();
|
|
391
|
+
// Gap check (CTL-1402): only with a real baseline (deliveredSeq > 0 — a fresh/cursorless store has
|
|
392
|
+
// nothing to be contiguous WITH). A frame beyond deliveredSeq+1 means the frames in between were
|
|
393
|
+
// never delivered — re-request them instead of applying it (the replay will redeliver it in order).
|
|
394
|
+
if (this.deliveredSeq > 0 && frame.seq > this.deliveredSeq + 1) {
|
|
395
|
+
this.onGapFrame(frame);
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
// Contiguous — or a duplicate/out-of-order oldie (seq <= deliveredSeq), which is passed through
|
|
399
|
+
// unchanged: the consumer's stale-guard already dedups it and its cursor never moves backward.
|
|
277
400
|
try {
|
|
278
401
|
this.onChange(frame);
|
|
279
402
|
}
|
|
280
403
|
catch (err) {
|
|
281
404
|
this.log("error", `onChange failed for ${frame.entity} seq=${frame.seq}`, err);
|
|
282
405
|
}
|
|
406
|
+
if (frame.seq > this.deliveredSeq) {
|
|
407
|
+
this.deliveredSeq = frame.seq;
|
|
408
|
+
if (this.gap) {
|
|
409
|
+
if (this.deliveredSeq >= this.gap.seqTo) {
|
|
410
|
+
// The replay walked the whole detected hole: contiguity is restored, live frames resume.
|
|
411
|
+
this.onGapHealed();
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
// Progress WITHIN the hole: refund the heal deadline. It measures "no progress for
|
|
415
|
+
// gapTimeoutMs", NOT "not fully healed within gapTimeoutMs" — the steady-state first heal
|
|
416
|
+
// replays thousands of frames (keyset-paginated server-side), and a slow consumer / heavy
|
|
417
|
+
// first heal must not retry (overlapping replays on the same socket) or escalate to a full
|
|
418
|
+
// /snapshot WHILE frames are actively landing. The retry budget still bounds a genuinely
|
|
419
|
+
// STALLED heal (no frames at all for a full window).
|
|
420
|
+
this.armGapDeadline();
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
// ── Gap detection + self-healing re-request (CTL-1402) ──
|
|
426
|
+
/**
|
|
427
|
+
* A change frame arrived BEYOND the contiguous next seq: every frame in `(deliveredSeq, frame.seq)`
|
|
428
|
+
* was silently dropped by the at-most-once live push. The frame is NOT applied and the baseline is
|
|
429
|
+
* NOT advanced past the hole — the mirror's change_log is durable, so the client re-requests the
|
|
430
|
+
* gap with the same `{type:"sync", after}` control frame it sends on every (re)connect, and the
|
|
431
|
+
* mirror replays the missing rows as ordinary change frames through the same apply path. While a
|
|
432
|
+
* re-request is in flight, further beyond-the-gap frames (in-flight live pushes the replay will
|
|
433
|
+
* cover) are dropped the same way WITHOUT sending another sync — one request per gap episode.
|
|
434
|
+
*/
|
|
435
|
+
onGapFrame(frame) {
|
|
436
|
+
if (this.gap)
|
|
437
|
+
return; // a re-request is already in flight; the replay redelivers this frame too
|
|
438
|
+
this.gap = { seqFrom: this.deliveredSeq + 1, seqTo: frame.seq - 1, retries: 0 };
|
|
439
|
+
this.recordGap("detected", this.gap);
|
|
440
|
+
this.sendGapRequest();
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* An end-of-pass head nudge (CTL-1402): `{type:"head", seq:N}` reports the mirror's current feed
|
|
444
|
+
* head after a reconcile pass whose change_log rows were never individually broadcast. If N sits
|
|
445
|
+
* beyond our contiguous baseline and no gap episode is pending, start one exactly as a beyond-gap
|
|
446
|
+
* change frame would — the hole is `deliveredSeq+1..N` (N itself is a real, un-broadcast row, so —
|
|
447
|
+
* unlike a change frame's trigger seq — it IS part of the hole) — and re-request it with the same
|
|
448
|
+
* bounded retry/escalation machinery and telemetry. The head frame is never applied and never
|
|
449
|
+
* advances a cursor. A head at/below the baseline is a no-op (already caught up); a head arriving
|
|
450
|
+
* while a gap is already pending is ignored (the in-flight replay already covers up to the head).
|
|
451
|
+
*/
|
|
452
|
+
onHeadFrame(frame) {
|
|
453
|
+
if (this.gap)
|
|
454
|
+
return; // a re-request is pending; its replay already walks up to (past) this head
|
|
455
|
+
if (this.deliveredSeq <= 0)
|
|
456
|
+
return; // no baseline yet — nothing to be contiguous with (see gap check)
|
|
457
|
+
if (frame.seq <= this.deliveredSeq)
|
|
458
|
+
return; // caught up (or a stale head): no hole to re-request
|
|
459
|
+
this.gap = { seqFrom: this.deliveredSeq + 1, seqTo: frame.seq, retries: 0 };
|
|
460
|
+
this.recordGap("detected", this.gap);
|
|
461
|
+
this.sendGapRequest();
|
|
462
|
+
}
|
|
463
|
+
/** Send (or re-send) the gap re-request from the current baseline and arm the heal deadline. */
|
|
464
|
+
sendGapRequest() {
|
|
465
|
+
const req = { type: "sync", after: this.deliveredSeq };
|
|
466
|
+
try {
|
|
467
|
+
this.ws?.send(JSON.stringify(req));
|
|
468
|
+
}
|
|
469
|
+
catch (err) {
|
|
470
|
+
// A dead socket: leave the deadline armed — it retries/escalates, and a reconnect re-baselines.
|
|
471
|
+
this.log("error", "gap re-request send failed", err);
|
|
472
|
+
}
|
|
473
|
+
this.armGapDeadline();
|
|
474
|
+
}
|
|
475
|
+
/** (Re)arm the gap heal deadline. Armed when a re-request is sent AND refreshed on every frame of
|
|
476
|
+
* heal progress (the delivery path), so the deadline measures "no PROGRESS for gapTimeoutMs" rather
|
|
477
|
+
* than "not fully healed within gapTimeoutMs". `gapTimeoutMs === 0` disables it (heals only via the
|
|
478
|
+
* replay itself or the next reconnect). Only ever called with a gap episode pending. */
|
|
479
|
+
armGapDeadline() {
|
|
480
|
+
this.clearGapTimer();
|
|
481
|
+
if (this.gapTimeoutMs > 0) {
|
|
482
|
+
this.gapTimer = setTimeout(() => this.onGapTimeout(), this.gapTimeoutMs);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
/** The heal deadline elapsed with the hole still open: retry within budget, else escalate to the
|
|
486
|
+
* full re-seed path. Escalation — never silent acceptance — is what keeps a drop from becoming a
|
|
487
|
+
* permanent hole one level up. */
|
|
488
|
+
onGapTimeout() {
|
|
489
|
+
this.gapTimer = null;
|
|
490
|
+
const gap = this.gap;
|
|
491
|
+
if (!gap || this.stopped || !this.ws)
|
|
492
|
+
return;
|
|
493
|
+
gap.retries += 1;
|
|
494
|
+
if (gap.retries >= this.gapRetryLimit) {
|
|
495
|
+
this.recordGap("escalated", gap);
|
|
496
|
+
this.gap = null;
|
|
497
|
+
void this.handleResync();
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
this.sendGapRequest();
|
|
501
|
+
}
|
|
502
|
+
/** The replay redelivered the whole detected hole (deliveredSeq reached seqTo contiguously). */
|
|
503
|
+
onGapHealed() {
|
|
504
|
+
const gap = this.gap;
|
|
505
|
+
if (!gap)
|
|
506
|
+
return;
|
|
507
|
+
this.gap = null;
|
|
508
|
+
this.clearGapTimer();
|
|
509
|
+
this.recordGap("healed", gap);
|
|
510
|
+
}
|
|
511
|
+
/** Emit the gap lifecycle signal: a structured `catalyst.replica.gap` log line (the fleet's primary,
|
|
512
|
+
* Loki-materialized channel — same convention as `catalyst.replica.apply`) + a `result`-style
|
|
513
|
+
* low-cardinality bump of the `catalyst.replica.gaps` counter. seq_from/seq_to/size ride the log
|
|
514
|
+
* line as VALUES, never labels. Levels: `detected` and `healed` log at INFO — a gap is the
|
|
515
|
+
* steady-state path (every reconcile pass punches one that heals via re-request), so ALERTING MUST
|
|
516
|
+
* KEY ON `escalated` ONLY (logged at ERROR); a gap that heals is routine and boring. */
|
|
517
|
+
recordGap(event, gap) {
|
|
518
|
+
this.gapCounter.add(1, {
|
|
519
|
+
[CATALYST_ATTR.tenant]: this.accountId,
|
|
520
|
+
[CATALYST_ATTR.gapEvent]: event,
|
|
521
|
+
});
|
|
522
|
+
this.log(event === "escalated" ? "error" : "info", REPLICA_LOG.gap, {
|
|
523
|
+
event,
|
|
524
|
+
seq_from: gap.seqFrom,
|
|
525
|
+
seq_to: gap.seqTo,
|
|
526
|
+
size: gap.seqTo - gap.seqFrom + 1,
|
|
527
|
+
retries: gap.retries,
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
clearGapTimer() {
|
|
531
|
+
if (this.gapTimer != null) {
|
|
532
|
+
clearTimeout(this.gapTimer);
|
|
533
|
+
this.gapTimer = null;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
/** Drop all gap state (pending hole + timer) — on (re)open and on the resync/re-seed path, both of
|
|
537
|
+
* which re-request/rebuild from the durable cursor and so supersede any pending re-request. */
|
|
538
|
+
clearGapState() {
|
|
539
|
+
this.gap = null;
|
|
540
|
+
this.clearGapTimer();
|
|
283
541
|
}
|
|
284
542
|
/**
|
|
285
543
|
* Cursor underflow: the deltas we need were evicted from the service's retained change buffer. Close the socket
|
|
@@ -291,6 +549,9 @@ export class LiveSyncClient {
|
|
|
291
549
|
if (this.resyncing)
|
|
292
550
|
return;
|
|
293
551
|
this.resyncing = true;
|
|
552
|
+
// A full re-seed supersedes any pending gap re-request (it rebuilds from /snapshot wholesale) —
|
|
553
|
+
// this also covers the server answering a gap re-request with {type:"resync"} (window eviction).
|
|
554
|
+
this.clearGapState();
|
|
294
555
|
this.setStatus("resyncing");
|
|
295
556
|
this.closeSocket();
|
|
296
557
|
try {
|
|
@@ -310,6 +571,112 @@ export class LiveSyncClient {
|
|
|
310
571
|
if (!this.stopped)
|
|
311
572
|
this.openSocket();
|
|
312
573
|
}
|
|
574
|
+
// ── Liveness watchdog (CTC-135) ──
|
|
575
|
+
/** Epoch ms of the last inbound frame (change, pong, or malformed) — null before the first frame.
|
|
576
|
+
* Any inbound bytes prove the socket is alive; the catalyst daemon's stall classifier reads this to
|
|
577
|
+
* tell a quiet feed from a half-open socket (the per-frame timestamp it previously lacked). */
|
|
578
|
+
get lastFrameAt() {
|
|
579
|
+
return this._lastFrameAt;
|
|
580
|
+
}
|
|
581
|
+
/** Epoch ms of the last inbound CHANGE frame (live or replayed; delivered OR gap-dropped), or null
|
|
582
|
+
* before the first. Unlike {@link lastFrameAt} — which any bytes stamp, INCLUDING the mirror's
|
|
583
|
+
* watchdog auto-pongs — this only moves when the feed actually pushes data. Pairing the two lets a
|
|
584
|
+
* stall supervisor separate the three states CTL-1402 conflated: dead socket (both stale),
|
|
585
|
+
* healthy-but-unpushed socket (lastFrameAt fresh via pongs, lastChangeFrameAt stale while the
|
|
586
|
+
* mirror head advances), and a genuinely quiet feed (same signature, distinguished server-side). */
|
|
587
|
+
get lastChangeFrameAt() {
|
|
588
|
+
return this._lastChangeFrameAt;
|
|
589
|
+
}
|
|
590
|
+
/** Any inbound frame: stamp liveness, cancel a pending pong deadline (it was answered), and postpone
|
|
591
|
+
* the next ping so a busy stream never sends one. Runs synchronously in onmessage before parsing. */
|
|
592
|
+
onInboundFrame() {
|
|
593
|
+
this._lastFrameAt = Date.now();
|
|
594
|
+
this.clearPongDeadline();
|
|
595
|
+
this.armPing();
|
|
596
|
+
}
|
|
597
|
+
/** (Re)arm the idle-ping timer. No-op when the watchdog is disabled/off or there is no live socket,
|
|
598
|
+
* so it is safe to call on every frame. A setTimeout chain (not setInterval): each frame resets it. */
|
|
599
|
+
armPing() {
|
|
600
|
+
this.clearPingTimer();
|
|
601
|
+
if (this.watchdogDisabled || this.pingIntervalMs <= 0 || this.stopped || !this.ws)
|
|
602
|
+
return;
|
|
603
|
+
this.pingTimer = setTimeout(() => this.sendPing(), this.pingIntervalMs);
|
|
604
|
+
}
|
|
605
|
+
/** The feed has been idle for a full interval: send one liveness ping and start the pong deadline. A
|
|
606
|
+
* synchronous send throw means the socket is already dead — treat it as an unanswered probe now. */
|
|
607
|
+
sendPing() {
|
|
608
|
+
this.pingTimer = null; // this timer just fired
|
|
609
|
+
if (this.stopped || this.watchdogDisabled || !this.ws)
|
|
610
|
+
return;
|
|
611
|
+
this.pingSentAt = Date.now();
|
|
612
|
+
try {
|
|
613
|
+
this.ws.send(PING_FRAME);
|
|
614
|
+
}
|
|
615
|
+
catch (err) {
|
|
616
|
+
this.log("warn", "liveness ping send failed (dead socket); forcing reconnect", err);
|
|
617
|
+
this.onProbeUnanswered();
|
|
618
|
+
return;
|
|
619
|
+
}
|
|
620
|
+
this.pongDeadline = setTimeout(() => this.onPongDeadline(), this.pongTimeoutMs);
|
|
621
|
+
}
|
|
622
|
+
/** The pong deadline elapsed. Late-timer guard first: in a throttled background tab this callback can
|
|
623
|
+
* fire long after a frame actually arrived, so if ANYTHING landed at/after the ping we sent, liveness
|
|
624
|
+
* is proven — re-arm and move on (detection latency grows; correctness holds). Otherwise: half-open. */
|
|
625
|
+
onPongDeadline() {
|
|
626
|
+
this.pongDeadline = null; // this timer just fired
|
|
627
|
+
if (this.stopped || !this.ws)
|
|
628
|
+
return;
|
|
629
|
+
if (this._lastFrameAt != null && this._lastFrameAt >= this.pingSentAt) {
|
|
630
|
+
this.armPing();
|
|
631
|
+
return;
|
|
632
|
+
}
|
|
633
|
+
this.onProbeUnanswered();
|
|
634
|
+
}
|
|
635
|
+
/** A ping went unanswered (deadline elapsed or the send threw). If this connection had already proven
|
|
636
|
+
* pong capability it is a genuine liveness timeout; otherwise it counts toward the feature-detect —
|
|
637
|
+
* after PROBE_FAILURE_LIMIT never-ponged connections the watchdog disables itself for good (an old
|
|
638
|
+
* server without auto-pong). Either way, force-reconnect through the existing backoff path. */
|
|
639
|
+
onProbeUnanswered() {
|
|
640
|
+
if (this.pongObserved) {
|
|
641
|
+
this.log("warn", "liveness timeout: no frame within the pong deadline; reconnecting");
|
|
642
|
+
}
|
|
643
|
+
else {
|
|
644
|
+
this.probeFailures += 1;
|
|
645
|
+
if (this.probeFailures >= PROBE_FAILURE_LIMIT) {
|
|
646
|
+
this.watchdogDisabled = true;
|
|
647
|
+
this.log("warn", `liveness watchdog disabled after ${PROBE_FAILURE_LIMIT} unanswered probes (server lacks auto-pong); relying on close/error detection`);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
this.forceReconnect();
|
|
651
|
+
}
|
|
652
|
+
/** Tear the socket down and reconnect through the normal backoff. closeSocket detaches handlers (so
|
|
653
|
+
* onclose won't also fire) and clears the liveness timers, so we schedule the reopen ourselves. */
|
|
654
|
+
forceReconnect() {
|
|
655
|
+
this.closeSocket();
|
|
656
|
+
if (this.stopped)
|
|
657
|
+
return;
|
|
658
|
+
this.setStatus("reconnecting");
|
|
659
|
+
this.scheduleReconnect();
|
|
660
|
+
}
|
|
661
|
+
clearPingTimer() {
|
|
662
|
+
if (this.pingTimer != null) {
|
|
663
|
+
clearTimeout(this.pingTimer);
|
|
664
|
+
this.pingTimer = null;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
clearPongDeadline() {
|
|
668
|
+
if (this.pongDeadline != null) {
|
|
669
|
+
clearTimeout(this.pongDeadline);
|
|
670
|
+
this.pongDeadline = null;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
clearLivenessTimers() {
|
|
674
|
+
this.clearPingTimer();
|
|
675
|
+
this.clearPongDeadline();
|
|
676
|
+
// A pending gap re-request dies with its socket: the timer must not fire against the next one
|
|
677
|
+
// (whose onopen re-baselines and re-requests from the durable cursor anyway).
|
|
678
|
+
this.clearGapTimer();
|
|
679
|
+
}
|
|
313
680
|
}
|
|
314
681
|
/** Parse a WS frame (string or ArrayBuffer) into a known server frame, or null for anything malformed. */
|
|
315
682
|
export function parseFrame(data) {
|
|
@@ -334,6 +701,10 @@ export function parseFrame(data) {
|
|
|
334
701
|
return parsed;
|
|
335
702
|
if (type === "change")
|
|
336
703
|
return parsed;
|
|
704
|
+
if (type === "pong")
|
|
705
|
+
return parsed;
|
|
706
|
+
if (type === "head")
|
|
707
|
+
return parsed;
|
|
337
708
|
return null;
|
|
338
709
|
}
|
|
339
710
|
//# sourceMappingURL=live-sync-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-sync-client.js","sourceRoot":"","sources":["../src/live-sync-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live-sync-client.js","sourceRoot":"","sources":["../src/live-sync-client.ts"],"names":[],"mappings":"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"}
|
package/dist/node.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { bunSqliteEngine, bunSqliteReadonlyEngine, nodeSqliteEngine, nodeSqliteR
|
|
|
3
3
|
export { claimWriterLock, type WriterGuardOptions, type WriterLockHandle, } from "./replica/writer-lock.js";
|
|
4
4
|
export { LiveSyncClient, type AuthStrategy, type LiveSyncStatus, type LogLevel, type WebSocketLike, type WebSocketFactory, } from "./live-sync-client.js";
|
|
5
5
|
export { ENTITY_NAMES, CHANGE_OPS, type AccountId, type EntityName, type ChangeOp, type ChangeFrame, } from "./types.js";
|
|
6
|
-
export { DEFAULT_SCOPE_NAME, CATALYST_ATTR, REPLICA_METRIC, REPLICA_LOG, REPLICA_SPAN, REPLICA_STATUS_CODE, type ReplicaApplyResult, type TelemetryConfig, } from "./otel.js";
|
|
6
|
+
export { DEFAULT_SCOPE_NAME, CATALYST_ATTR, REPLICA_METRIC, REPLICA_LOG, REPLICA_SPAN, REPLICA_STATUS_CODE, type ReplicaApplyResult, type ReplicaGapEvent, type TelemetryConfig, } from "./otel.js";
|
|
7
7
|
export type { SqlExecutor, SqlValue, IssueView, IssueDetailView, PullView, ProjectView, ProjectDetailView, InitiativeView, InitiativeDetailView, } from "@catalyst-cloud/read-model";
|
|
8
8
|
export { mirrorSchema, type MirrorEntityName } from "@catalyst-cloud/schema";
|
|
9
9
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,GACpC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,eAAe,EACf,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,GACpC,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,eAAe,EACf,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,gGAAgG;AAChG,uGAAuG;AACvG,qGAAqG;AACrG,sGAAsG;AACtG,sFAAsF;AACtF,EAAE;AACF,iGAAiG;AACjG,sEAAsE;AAEtE,OAAO,EACL,eAAe,GAGhB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,GAKzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAElC,wEAAwE;AACxE,OAAO,EACL,cAAc,GAMf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,GAKX,MAAM,YAAY,CAAC;AAEpB,kGAAkG;AAClG,sGAAsG;AACtG,kFAAkF;AAClF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,gGAAgG;AAChG,uGAAuG;AACvG,qGAAqG;AACrG,sGAAsG;AACtG,sFAAsF;AACtF,EAAE;AACF,iGAAiG;AACjG,sEAAsE;AAEtE,OAAO,EACL,eAAe,GAGhB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,wBAAwB,GAKzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,GAGhB,MAAM,0BAA0B,CAAC;AAElC,wEAAwE;AACxE,OAAO,EACL,cAAc,GAMf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,UAAU,GAKX,MAAM,YAAY,CAAC;AAEpB,kGAAkG;AAClG,sGAAsG;AACtG,kFAAkF;AAClF,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,GAIpB,MAAM,WAAW,CAAC;AAenB,+FAA+F;AAC/F,mGAAmG;AACnG,sDAAsD;AACtD,8EAA8E;AAC9E,OAAO,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC"}
|
package/dist/otel.d.ts
CHANGED
|
@@ -28,9 +28,17 @@ export declare const CATALYST_ATTR: {
|
|
|
28
28
|
/** The per-frame apply outcome (CTL-1402): `"applied"` | `"skipped"` | `"failed"`. Low-cardinality
|
|
29
29
|
* — safe as a metric label; seq/entity/err_message are VALUES on the log line, never labels. */
|
|
30
30
|
readonly result: "catalyst.replica.result";
|
|
31
|
+
/** The gap lifecycle event (CTL-1402 delivery loss): `"detected"` | `"healed"` | `"escalated"`.
|
|
32
|
+
* Low-cardinality — safe as a metric label; seq_from/seq_to/size ride the log line as VALUES. */
|
|
33
|
+
readonly gapEvent: "catalyst.replica.gap_event";
|
|
31
34
|
};
|
|
32
35
|
/** The per-frame apply outcome: a row written, dropped by the stale-guard, or a failed transaction. */
|
|
33
36
|
export type ReplicaApplyResult = "applied" | "skipped" | "failed";
|
|
37
|
+
/** The seq-gap lifecycle (CTL-1402): a delivery gap was detected on the live feed, healed by a
|
|
38
|
+
* `{type:"sync"}` replay re-request, or escalated to a full /snapshot re-seed. This is the detector
|
|
39
|
+
* for the failure mode the per-frame apply signal is structurally blind to — a frame that never
|
|
40
|
+
* arrives lands in no apply bucket, but it DOES leave a hole in the seq contiguity. */
|
|
41
|
+
export type ReplicaGapEvent = "detected" | "healed" | "escalated";
|
|
34
42
|
/** Metric instrument names (OTel metric stream names). */
|
|
35
43
|
export declare const REPLICA_METRIC: {
|
|
36
44
|
readonly cursor: "catalyst.replica.cursor";
|
|
@@ -39,6 +47,7 @@ export declare const REPLICA_METRIC: {
|
|
|
39
47
|
readonly status: "catalyst.replica.status";
|
|
40
48
|
readonly applied: "catalyst.replica.applied";
|
|
41
49
|
readonly applyBatchRows: "catalyst.replica.apply_batch_rows";
|
|
50
|
+
readonly gaps: "catalyst.replica.gaps";
|
|
42
51
|
};
|
|
43
52
|
/** Structured-log MESSAGE names the daemon's `log` callback routes to Loki, where the fleet's
|
|
44
53
|
* logs→metrics connector materializes them (the fleet has no in-process MeterProvider, so the
|
|
@@ -46,6 +55,11 @@ export declare const REPLICA_METRIC: {
|
|
|
46
55
|
export declare const REPLICA_LOG: {
|
|
47
56
|
/** Per applied frame: `{result, seq, entity, source, err_message?}`. */
|
|
48
57
|
readonly apply: "catalyst.replica.apply";
|
|
58
|
+
/** Per gap lifecycle event: `{event, seq_from, seq_to, size, retries}`. `detected` is the visibility
|
|
59
|
+
* the CTL-1402 incident lacked; `healed` means the replay redelivered the hole; `escalated` means
|
|
60
|
+
* the re-request budget ran out and the client fell back to a full re-seed. A gap is the
|
|
61
|
+
* steady-state path, so `detected`/`healed` log at INFO and alerting keys on `escalated` (ERROR). */
|
|
62
|
+
readonly gap: "catalyst.replica.gap";
|
|
49
63
|
};
|
|
50
64
|
/** Span names. */
|
|
51
65
|
export declare const REPLICA_SPAN: {
|
package/dist/otel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;uGACuG;AACvG,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,8FAA8F;AAC9F,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAClD,kGAAkG;AAClG,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;AAE/D,qFAAqF;AACrF,eAAO,MAAM,aAAa;IACxB,6CAA6C;;IAE7C,0EAA0E;;IAE1E,yDAAyD;;IAEzD,sEAAsE;;IAEtE,8CAA8C;;IAE9C,kCAAkC;;IAElC,oCAAoC;;IAEpC;qGACiG;;
|
|
1
|
+
{"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
|
package/dist/otel.js
CHANGED
|
@@ -39,6 +39,9 @@ export const CATALYST_ATTR = {
|
|
|
39
39
|
/** The per-frame apply outcome (CTL-1402): `"applied"` | `"skipped"` | `"failed"`. Low-cardinality
|
|
40
40
|
* — safe as a metric label; seq/entity/err_message are VALUES on the log line, never labels. */
|
|
41
41
|
result: "catalyst.replica.result",
|
|
42
|
+
/** The gap lifecycle event (CTL-1402 delivery loss): `"detected"` | `"healed"` | `"escalated"`.
|
|
43
|
+
* Low-cardinality — safe as a metric label; seq_from/seq_to/size ride the log line as VALUES. */
|
|
44
|
+
gapEvent: "catalyst.replica.gap_event",
|
|
42
45
|
};
|
|
43
46
|
/** Metric instrument names (OTel metric stream names). */
|
|
44
47
|
export const REPLICA_METRIC = {
|
|
@@ -48,6 +51,7 @@ export const REPLICA_METRIC = {
|
|
|
48
51
|
status: "catalyst.replica.status",
|
|
49
52
|
applied: "catalyst.replica.applied",
|
|
50
53
|
applyBatchRows: "catalyst.replica.apply_batch_rows",
|
|
54
|
+
gaps: "catalyst.replica.gaps",
|
|
51
55
|
};
|
|
52
56
|
/** Structured-log MESSAGE names the daemon's `log` callback routes to Loki, where the fleet's
|
|
53
57
|
* logs→metrics connector materializes them (the fleet has no in-process MeterProvider, so the
|
|
@@ -55,6 +59,11 @@ export const REPLICA_METRIC = {
|
|
|
55
59
|
export const REPLICA_LOG = {
|
|
56
60
|
/** Per applied frame: `{result, seq, entity, source, err_message?}`. */
|
|
57
61
|
apply: "catalyst.replica.apply",
|
|
62
|
+
/** Per gap lifecycle event: `{event, seq_from, seq_to, size, retries}`. `detected` is the visibility
|
|
63
|
+
* the CTL-1402 incident lacked; `healed` means the replay redelivered the hole; `escalated` means
|
|
64
|
+
* the re-request budget ran out and the client fell back to a full re-seed. A gap is the
|
|
65
|
+
* steady-state path, so `detected`/`healed` log at INFO and alerting keys on `escalated` (ERROR). */
|
|
66
|
+
gap: "catalyst.replica.gap",
|
|
58
67
|
};
|
|
59
68
|
/** Span names. */
|
|
60
69
|
export const REPLICA_SPAN = {
|
package/dist/otel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,oGAAoG;AACpG,mGAAmG;AACnG,8EAA8E;AAC9E,EAAE;AACF,oGAAoG;AACpG,+FAA+F;AAC/F,qGAAqG;AACrG,kFAAkF;AAClF,qGAAqG;AACrG,mGAAmG;AACnG,EAAE;AACF,qGAAqG;AACrG,+FAA+F;AAC/F,oGAAoG;AACpG,qDAAqD;AACrD,EAAE;AACF,qGAAqG;AACrG,uGAAuG;AACvG,iGAAiG;AACjG,oBAAoB;AAapB,qFAAqF;AACrF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,6CAA6C;IAC7C,MAAM,EAAE,iBAAiB;IACzB,0EAA0E;IAC1E,MAAM,EAAE,iBAAiB;IACzB,yDAAyD;IACzD,MAAM,EAAE,yBAAyB;IACjC,sEAAsE;IACtE,MAAM,EAAE,0BAA0B;IAClC,8CAA8C;IAC9C,MAAM,EAAE,yBAAyB;IACjC,kCAAkC;IAClC,QAAQ,EAAE,4BAA4B;IACtC,oCAAoC;IACpC,SAAS,EAAE,6BAA6B;IACxC;qGACiG;IACjG,MAAM,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../src/otel.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,20 @@ export interface CatalystReplicaOptions {
|
|
|
38
38
|
backoffMs?: number;
|
|
39
39
|
/** Reconnect backoff ceiling in ms. Default 30_000. */
|
|
40
40
|
maxBackoffMs?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Liveness watchdog idle-ping interval in ms (CTC-135). After this much inbound silence the client
|
|
43
|
+
* pings the mirror and force-reconnects if no frame comes back within {@link pongTimeoutMs}. Default
|
|
44
|
+
* `90_000`; `0` disables the watchdog (close/error-only detection). See {@link lastFrameAt}.
|
|
45
|
+
*/
|
|
46
|
+
pingIntervalMs?: number;
|
|
47
|
+
/** Liveness pong deadline in ms after a ping before declaring the socket half-open. Default `15_000`. */
|
|
48
|
+
pongTimeoutMs?: number;
|
|
49
|
+
/** Gap detection (CTL-1402): ms to wait for a `{type:"sync"}` gap re-request to heal the detected
|
|
50
|
+
* hole before retrying/escalating. Default `10_000`; `0` = no deadline. See LiveSyncClientOptions. */
|
|
51
|
+
gapTimeoutMs?: number;
|
|
52
|
+
/** Gap detection (CTL-1402): total sync re-requests to spend on one gap before escalating to a full
|
|
53
|
+
* /snapshot re-seed. Default `3`. */
|
|
54
|
+
gapRetryLimit?: number;
|
|
41
55
|
/** Injectable WebSocket factory (tests). Defaults to the runtime global WebSocket. */
|
|
42
56
|
wsFactory?: WebSocketFactory;
|
|
43
57
|
/** Optional structured logger; defaults to console. */
|
|
@@ -180,6 +194,15 @@ export declare class CatalystReplica {
|
|
|
180
194
|
get cursor(): number | null;
|
|
181
195
|
/** The connection lifecycle status. */
|
|
182
196
|
get status(): LiveSyncStatus;
|
|
197
|
+
/** Epoch ms of the last inbound live-sync frame (CTC-135), or null before the first frame / in
|
|
198
|
+
* reader mode (no socket). Any inbound bytes prove the socket is alive — pairing this with `status`
|
|
199
|
+
* lets a supervisor tell a quiet feed from a half-open socket the watchdog is about to recover. */
|
|
200
|
+
get lastFrameAt(): number | null;
|
|
201
|
+
/** Epoch ms of the last inbound CHANGE frame (CTL-1402), or null before the first / in reader mode.
|
|
202
|
+
* Unlike {@link lastFrameAt} — which the mirror's watchdog auto-pongs also stamp — this only moves
|
|
203
|
+
* when the feed pushes data, so a stall supervisor can separate "socket alive" (lastFrameAt fresh)
|
|
204
|
+
* from "feed delivering" (lastChangeFrameAt fresh) without the unhealthy-status AND-gate. */
|
|
205
|
+
get lastChangeFrameAt(): number | null;
|
|
183
206
|
/** The raw driver Database the SDK owns — for `drizzle(replica.handle, { schema: mirrorSchema })`. */
|
|
184
207
|
get handle(): unknown;
|
|
185
208
|
/** Ms since the last applied delta (live frame or seed), or null before the first apply. The basis
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalyst-replica.d.ts","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"AA6BA,OAAO,EAQL,KAAK,WAAW,EAEhB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAYL,KAAK,eAAe,EAIrB,MAAM,YAAY,CAAC;AAapB;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAMhF;AAED,MAAM,WAAW,sBAAsB;IACrC,oGAAoG;IACpG,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB;yEACqE;IACrE,IAAI,EAAE,YAAY,CAAC;IACnB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,8GAA8G;IAC9G,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;IACvC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAC5C,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,uDAAuD;IACvD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D;;;;;OAKG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C;qDACiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf;yGACqG;IACrG,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,CAAC;IACvC,uDAAuD;IACvD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/D;AAUD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6C;IAEjE,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAA+B;IAE7C,sGAAsG;IACtG,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IAEvB;0EACsE;IACtE,OAAO,CAAC,YAAY,CAAS;IAC7B,+FAA+F;IAC/F,OAAO,CAAC,UAAU,CAAiC;IAEnD;mCAC+B;IAC/B,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,UAAU,CAAyC;IAG3D,4FAA4F;IAC5F,OAAO,CAAC,SAAS,CAA6B;IAC9C,yGAAyG;IACzG,OAAO,CAAC,UAAU,CAA2B;IAC7C,sGAAsG;IACtG,OAAO,CAAC,cAAc,CAA2D;IACjF,OAAO,CAAC,mBAAmB,CAAsE;IACjG;kGAC8F;IAC9F,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,oGAAoG;IACpG,OAAO,CAAC,eAAe,CAAuB;IAC9C;yGACqG;IACrG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD;;wFAEoF;IACpF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;gBAEU,IAAI,EAAE,sBAAsB;IAUxC;;;;;;;;;;;OAWG;WACU,YAAY,CAAC,IAAI,EAAE,8BAA8B,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBzF;;;;;;OAMG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"catalyst-replica.d.ts","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"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"}
|
|
@@ -209,6 +209,10 @@ export class CatalystReplica {
|
|
|
209
209
|
onStatus: (status) => this.handleStatus(status),
|
|
210
210
|
backoffMs: this.opts.backoffMs,
|
|
211
211
|
maxBackoffMs: this.opts.maxBackoffMs,
|
|
212
|
+
pingIntervalMs: this.opts.pingIntervalMs,
|
|
213
|
+
pongTimeoutMs: this.opts.pongTimeoutMs,
|
|
214
|
+
gapTimeoutMs: this.opts.gapTimeoutMs,
|
|
215
|
+
gapRetryLimit: this.opts.gapRetryLimit,
|
|
212
216
|
wsFactory: this.opts.wsFactory,
|
|
213
217
|
log: this.log,
|
|
214
218
|
telemetry: this.telemetry,
|
|
@@ -329,6 +333,19 @@ export class CatalystReplica {
|
|
|
329
333
|
get status() {
|
|
330
334
|
return this._status;
|
|
331
335
|
}
|
|
336
|
+
/** Epoch ms of the last inbound live-sync frame (CTC-135), or null before the first frame / in
|
|
337
|
+
* reader mode (no socket). Any inbound bytes prove the socket is alive — pairing this with `status`
|
|
338
|
+
* lets a supervisor tell a quiet feed from a half-open socket the watchdog is about to recover. */
|
|
339
|
+
get lastFrameAt() {
|
|
340
|
+
return this.client?.lastFrameAt ?? null;
|
|
341
|
+
}
|
|
342
|
+
/** Epoch ms of the last inbound CHANGE frame (CTL-1402), or null before the first / in reader mode.
|
|
343
|
+
* Unlike {@link lastFrameAt} — which the mirror's watchdog auto-pongs also stamp — this only moves
|
|
344
|
+
* when the feed pushes data, so a stall supervisor can separate "socket alive" (lastFrameAt fresh)
|
|
345
|
+
* from "feed delivering" (lastChangeFrameAt fresh) without the unhealthy-status AND-gate. */
|
|
346
|
+
get lastChangeFrameAt() {
|
|
347
|
+
return this.client?.lastChangeFrameAt ?? null;
|
|
348
|
+
}
|
|
332
349
|
/** The raw driver Database the SDK owns — for `drizzle(replica.handle, { schema: mirrorSchema })`. */
|
|
333
350
|
get handle() {
|
|
334
351
|
return this.engine?.handle;
|
|
@@ -449,7 +466,10 @@ export class CatalystReplica {
|
|
|
449
466
|
engine.transaction(() => {
|
|
450
467
|
written = applyDelta(writeDb, { entity: frame.entity, op: frame.op, row: frame.row ?? {}, entityId: frame.entityId }, engine.toBindable, this.applyOpts);
|
|
451
468
|
// Advance to the seq we SAW (not just applied), so a stale-but-newer-seq delta still moves the
|
|
452
|
-
// cursor forward and a reconnect doesn't re-request it.
|
|
469
|
+
// cursor forward and a reconnect doesn't re-request it. Safe ONLY because the transport now
|
|
470
|
+
// guarantees contiguity (CTL-1402): LiveSyncClient never delivers a frame beyond
|
|
471
|
+
// deliveredSeq+1 — it holds the cursor at the hole and re-requests the gap — so "seen" here
|
|
472
|
+
// can no longer seal over an undelivered frame.
|
|
453
473
|
if (frame.seq > this.highWater)
|
|
454
474
|
setCursor(writeDb, frame.seq, engine.toBindable);
|
|
455
475
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalyst-replica.js","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,EAAE;AACF,qGAAqG;AACrG,kGAAkG;AAClG,sFAAsF;AACtF,EAAE;AACF,qFAAqF;AACrF,kEAAkE;AAClE,qGAAqG;AACrG,wGAAwG;AACxG,iGAAiG;AACjG,6FAA6F;AAC7F,gCAAgC;AAChC,0FAA0F;AAC1F,gFAAgF;AAChF,EAAE;AACF,oGAAoG;AACpG,uGAAuG;AACvG,yDAAyD;AAEzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAoB,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EACL,UAAU,EACV,eAAe,EACf,SAAS,EACT,SAAS,GAGV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GAUtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,cAAc,EACd,oBAAoB,GAKrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,GAGzB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,GAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,GAOb,MAAM,YAAY,CAAC;AAEpB;;8CAE8C;AAC9C,MAAM,aAAa,GAAG;;GAEnB,CAAC;AAEJ;8FAC8F;AAC9F,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAA8B;IACrE,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAgD,CAAC;IACjF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAqFD,MAAM,OAAO,eAAe;IACT,IAAI,CAAyB;IAC7B,OAAO,CAAS;IAChB,SAAS,CAAe;IACxB,GAAG,CAA6C;IAEzD,MAAM,GAAyB,IAAI,CAAC;IACpC,OAAO,GAAmC,IAAI,CAAC;IAC/C,WAAW,GAAuB,IAAI,CAAC;IACvC,MAAM,GAA0B,IAAI,CAAC;IAE7C,sGAAsG;IAC9F,SAAS,GAAG,CAAC,CAAC;IACd,OAAO,GAAmB,YAAY,CAAC;IACvC,OAAO,GAAG,KAAK,CAAC;IAChB,MAAM,GAAG,KAAK,CAAC;IAEvB;0EACsE;IAC9D,YAAY,GAAG,KAAK,CAAC;IAC7B,+FAA+F;IACvF,UAAU,GAA4B,IAAI,CAAC;IAEnD;mCAC+B;IACvB,WAAW,GAAwB,IAAI,CAAC;IACxC,UAAU,GAAoC,IAAI,CAAC;IAE3D,mGAAmG;IACnG,4FAA4F;IACpF,SAAS,GAAc,cAAc,CAAC;IAC9C,yGAAyG;IACjG,UAAU,GAAwB,EAAE,CAAC;IAC7C,sGAAsG;IAC9F,cAAc,GAAY,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzE,mBAAmB,GAAc,cAAc,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACjG;kGAC8F;IACtF,WAAW,GAAkB,IAAI,CAAC;IAClC,gBAAgB,GAAkB,IAAI,CAAC;IAC/C,oGAAoG;IAC5F,eAAe,GAAkB,IAAI,CAAC;IAC9C;yGACqG;IACpF,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACjD;;wFAEoF;IACnE,SAAS,GAAiB;QACzC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC;KAChF,CAAC;IAEF,YAAY,IAA4B;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;QACzC,IAAI,CAAC,GAAG;YACN,IAAI,CAAC,GAAG;gBACR,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CACnB,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAoC;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1F,MAAM,IAAI,KAAK,CACb,uFAAuF;gBACrF,+DAA+D,CAClE,CAAC;QACJ,CAAC;QACD,+FAA+F;QAC/F,2DAA2D;QAC3D,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC;YAClC,OAAO,EAAE,kBAAkB;YAC3B,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK;QACT,wFAAwF;QACxF,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,kGAAkG;QAClG,kGAAkG;QAClG,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;YACvD,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;SACxD,CAAC;QACF,IAAI,CAAC,WAAW,GAAG;YACjB,IAAI,EAAE,CAAC,KAAa,EAAE,GAAG,QAAoB,EAAE,EAAE,CAAC,CAAC;gBACjD,OAAO,EAAE,GAAG,EAAE,CACZ,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAA+B;aACtF,CAAC;SACH,CAAC;QAEF,oFAAoF;QACpF,MAAM,WAAW,GAAgB;YAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;SAChC,CAAC;QACF,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE3B,iGAAiG;QACjG,oGAAoG;QACpG,8FAA8F;QAC9F,uFAAuF;QACvF,qGAAqG;QACrG,mGAAmG;QACnG,gGAAgG;QAChG,gGAAgG;QAChG,oGAAoG;QACpG,0FAA0F;QAC1F,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,YAAY,IAAI,IAAI,IAAI,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,2EAA2E,EAAE;gBAC5F,WAAW;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9C,iGAAiG;QACjG,mGAAmG;QACnG,mGAAmG;QACnG,kFAAkF;QAClF,IAAI,CAAC,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YAC1D,UAAU,EAAE,kBAAkB;YAC9B,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YAC5B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAClC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACrC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAkC,CAAC;YACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;YAC3C,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC/C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YAC9B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YACpC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YACzB,6FAA6F;YAC7F,+FAA+F;YAC/F,KAAK,IAAI,CAAC,MAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAI,SAAS,IAAI,IAAI;YAAE,OAAO,WAAW,CAAC;QAE1C,iGAAiG;QACjG,gGAAgG;QAChG,kGAAkG;QAClG,mGAAmG;QACnG,kCAAkC;QAClC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;oBAC7B,MAAM,CACJ,IAAI,KAAK,CACP,uDAAuD,SAAS,KAAK;wBACnE,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAC/D,CACF,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,EAAE,SAAS,CAAC,CAAC;YACb,KAA2C,CAAC,KAAK,EAAE,EAAE,CAAC;YAEvD,WAAW,CAAC,IAAI,CACd,GAAG,EAAE;gBACH,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;gBACN,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;8FAC0F;IAC1F,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,2BAA2B,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,mGAAmG;QACnG,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE,GAAG,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,mGAAmG;IAEnG,mGAAmG;IACnG,IAAI,GAAG;QACL,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAA0C;QAC/C,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,CAAC,UAAkB;QACtB,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,CAAC,IAA0C;QAC9C,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,QAAQ,CAAC,IAA0C;QACjD,OAAO,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,CAAC,EAAU;QAChB,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,WAAW,CAAC,IAA0C;QACpD,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACnE,CAAC;IACD,UAAU,CAAC,EAAU;QACnB,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,iFAAiF;IACjF,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,uCAAuC;IACvC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,sGAAsG;IACtG,IAAI,MAAM;QACR,OAAQ,IAAI,CAAC,MAA8C,EAAE,MAAM,CAAC;IACtE,CAAC;IAED;kGAC8F;IAC9F,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;IACjF,CAAC;IAED;0GACsG;IACtG,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;mGAC+F;IAC/F,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,iGAAiG;IAEzF,KAAK,CAAC,aAAa;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,KAAK,UAAU;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,oBAAoB,CAAC,IAAoC;QACrE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,oCAAoC;QAEzD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,MAAM,MAAM,GACV,CAAC,KAAK,SAAS;YACb,CAAC,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7C,CAAC,CAAC,OAAO,CAAC,KAAK,UAAU;gBACvB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtB,CAAC,CAAC,CAAC,CAAC;QACV,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,WAAW,GAAG;YACjB,IAAI,EAAE,CAAC,KAAa,EAAE,GAAG,QAAoB,EAAE,EAAE,CAAC,CAAC;gBACjD,OAAO,EAAE,GAAG,EAAE,CACZ,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAA+B;aACtF,CAAC;SACH,CAAC;QACF,8FAA8F;QAC9F,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;YACvD,GAAG,EAAE,GAAG,EAAE;gBACR,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,CAAC;SACF,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,8DAA8D;IACvF,CAAC;IAEO,YAAY,CAAC,MAAsB;QACzC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,GAAG,EAAE,CAAC;QACR,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACK,eAAe;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO,CAAC,kDAAkD;QACvF,MAAM,MAAM,GAAG,GAA2B,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7F,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,IAAI,CAAC,SAAS,CAAC,eAAe,CAC5B,cAAc,CAAC,MAAM,EACrB,EAAE,WAAW,EAAE,gDAAgD,EAAE,IAAI,EAAE,OAAO,EAAE,EAChF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CACrD;QACD,+FAA+F;QAC/F,IAAI,CAAC,SAAS,CAAC,eAAe,CAC5B,cAAc,CAAC,MAAM,EACrB,EAAE,WAAW,EAAE,sEAAsE,EAAE,IAAI,EAAE,OAAO,EAAE,EACtG,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI;gBAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,CAAC,CACF,EACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAC5B,cAAc,CAAC,WAAW,EAC1B,EAAE,WAAW,EAAE,uDAAuD,EAAE,IAAI,EAAE,IAAI,EAAE,EACpF,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI;gBAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;QAChG,CAAC,CACF,EACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAC5B,cAAc,CAAC,MAAM,EACrB,EAAE,WAAW,EAAE,0EAA0E,EAAE,EAC3F,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAChD,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YACzC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO;SACrC,CAAC,CACL,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;YACnE,WAAW,EAAE,4CAA4C;YACzD,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,EAAE;YACjF,WAAW,EAAE,0CAA0C;YACvD,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,sGAAsG;IAC9F,UAAU,CAAC,KAAkB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO;YAAE,OAAO;QAChC,IAAI,CAAC;YACH,iGAAiG;YACjG,oEAAoE;YACpE,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;gBACtB,OAAO,GAAG,UAAU,CAClB,OAAO,EACP,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,EACtF,MAAM,CAAC,UAAU,EACjB,IAAI,CAAC,SAAS,CACf,CAAC;gBACF,+FAA+F;gBAC/F,wDAAwD;gBACxD,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS;oBAAE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC;YAC3D,kGAAkG;YAClG,mBAAmB;YACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH;;;;;;OAMG;IACK,oBAAoB,CAAC,KAAa,EAAE,OAA0B;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,kDAAkD,KAAK,qBAAqB,EAAE;YAC7F,KAAK;YACL,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,MAA0B,EAAE,KAAkB,EAAE,GAAa;QACrF,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;YACzB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;YACzC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM;YAC9B,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM;SAC/B,CAAC,CAAC;QACH,MAAM,UAAU,GACd,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE;YAClE,MAAM;YACN,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM;YACN,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,gBAAgB;QAC5B,kGAAkG;QAClG,oGAAoG;QACpG,mEAAmE;QACnE,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAClC,YAAY,CAAC,IAAI,EACjB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAC7C,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAuB,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAkC,CAAC;YAExD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACxF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAExD,8FAA8F;YAC9F,8FAA8F;YAC9F,yFAAyF;YACzF,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAE7B,mGAAmG;YACnG,wCAAwC;YACxC,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;YAEnD,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,KAAK,GAAmB,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,GAAS,EAAE;gBACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;gBAC/B,MAAM,IAAI,GAAG,KAAK,CAAC;gBACnB,KAAK,GAAG,EAAE,CAAC;gBACX,4FAA4F;gBAC5F,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAC/B,YAAY,CAAC,UAAU,EACvB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EACrF,GAAG,EAAE;oBACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;wBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;4BACvB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;gCAAE,SAAS;4BACvC,UAAU,CACR,OAAO,EACP,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,EAClE,MAAM,CAAC,UAAU,EACjB,IAAI,CAAC,SAAS,CACf,CAAC;wBACJ,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CACF,CAAC;gBACF,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9F,CAAC,CAAC;YAEF,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC;gBAC7C,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACnC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,oCAAoC;oBACzD,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,QAAQ,EAAE,CAAC;gBACX,IAAI,KAAK,CAAC,MAAM,IAAI,eAAe;oBAAE,KAAK,EAAE,CAAC;YAC/C,CAAC;YACD,KAAK,EAAE,CAAC;YAER,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,0CAA0C;YAC7E,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,oBAAoB,QAAQ,kBAAkB,MAAM,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAClD,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;+EAC2E;IACnE,kBAAkB,CAAC,GAAa;QACtC,MAAM,OAAO,GAAI,GAA2D,CAAC,OAAO,CAAC;QACrF,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,UAAU;YAAE,OAAO;QACtC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QACzD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QAClE,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7B,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,CAAC,GAA2B,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,CAAC,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3F,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAED;;;;GAIG;AACH,KAAK,SAAS,CAAC,CAAC,aAAa,CAAC,GAAa;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,SAAS,CAAC;YACR,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAU,CAAC;YACf,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC9B,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,IAAI,CAAC;YAClC,CAAC;QACH,CAAC;QACD,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,IAAI,CAAC;QACtE,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,CAAC;AACvE,CAAC"}
|
|
1
|
+
{"version":3,"file":"catalyst-replica.js","sourceRoot":"","sources":["../../src/replica/catalyst-replica.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -51,6 +51,39 @@ export interface SyncFrame {
|
|
|
51
51
|
/** The durable cursor: the last feed seq the consumer has applied (-1 if none). */
|
|
52
52
|
after: number;
|
|
53
53
|
}
|
|
54
|
-
/**
|
|
55
|
-
|
|
54
|
+
/**
|
|
55
|
+
* The end-of-pass head nudge (CTL-1402). The mirror's reconcile pass appends `change_log` rows but
|
|
56
|
+
* never broadcasts them individually, so a quiet-webhook period leaves the client with no later frame
|
|
57
|
+
* to detect a gap FROM. After a pass the mirror broadcasts ONE `{type:"head", seq:<max change_log
|
|
58
|
+
* seq>}` so the client can notice its baseline trails the feed head and re-request the hole. It is a
|
|
59
|
+
* pure control nudge — never applied and never a cursor advance. Transport-internal: the
|
|
60
|
+
* {@link LiveSyncClient} consumes it and NEVER surfaces it to `onFrame`/`onChange`.
|
|
61
|
+
*/
|
|
62
|
+
export interface HeadFrame {
|
|
63
|
+
type: "head";
|
|
64
|
+
accountId?: AccountId;
|
|
65
|
+
/** The mirror's current feed head — the max `change_log` seq at the end of the reconcile pass. */
|
|
66
|
+
seq: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The liveness ping/pong wire literals (CTC-135). The client sends `PING_FRAME` after an idle
|
|
70
|
+
* interval; the mirror answers `PONG_FRAME` via `setWebSocketAutoResponse`, which matches the request
|
|
71
|
+
* string BYTE-FOR-BYTE and replies WITHOUT waking a hibernated Durable Object. These must therefore
|
|
72
|
+
* be pinned bytes — never `JSON.stringify(...)` at runtime (a different key order or spacing would
|
|
73
|
+
* silently stop matching). The mirror pins the identical literals (`apps/mirror/src/do/ws.ts`); a
|
|
74
|
+
* contract test in each repo asserts the two agree.
|
|
75
|
+
*/
|
|
76
|
+
export declare const PING_FRAME = "{\"type\":\"ping\"}";
|
|
77
|
+
export declare const PONG_FRAME = "{\"type\":\"pong\"}";
|
|
78
|
+
/**
|
|
79
|
+
* The liveness pong the mirror's auto-response returns for a client `PING_FRAME`. Transport-internal:
|
|
80
|
+
* the {@link LiveSyncClient} watchdog consumes it to prove the socket is alive and NEVER surfaces it
|
|
81
|
+
* to `onFrame`/`onChange`.
|
|
82
|
+
*/
|
|
83
|
+
export interface PongFrame {
|
|
84
|
+
type: "pong";
|
|
85
|
+
}
|
|
86
|
+
/** Any frame the service can push to a consumer over `/connect`. `pong` and `head` are
|
|
87
|
+
* transport-internal (consumed by the client, never surfaced to `onFrame`/`onChange`). */
|
|
88
|
+
export type ServerFrame = ChangeFrame | ResyncFrame | PongFrame | HeadFrame;
|
|
56
89
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAUA,iFAAiF;AACjF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,cAAc,GACd,WAAW,GACX,eAAe,GACf,UAAU,GACV,QAAQ,GACR,aAAa,GACb,qBAAqB,GACrB,UAAU,GACV,eAAe,GACf,YAAY,GACZ,iBAAiB,GACjB,SAAS,CAAC;AAEd;;;;GAIG;AACH,eAAO,MAAM,YAAY,2NAgBiB,CAAC;AAE3C,qDAAqD;AACrD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C,0FAA0F;AAC1F,eAAO,MAAM,UAAU,+BAA8D,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,QAAQ,CAAC;IACb,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAUA,iFAAiF;AACjF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,cAAc,GACd,WAAW,GACX,eAAe,GACf,UAAU,GACV,QAAQ,GACR,aAAa,GACb,qBAAqB,GACrB,UAAU,GACV,eAAe,GACf,YAAY,GACZ,iBAAiB,GACjB,SAAS,CAAC;AAEd;;;;GAIG;AACH,eAAO,MAAM,YAAY,2NAgBiB,CAAC;AAE3C,qDAAqD;AACrD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C,0FAA0F;AAC1F,eAAO,MAAM,UAAU,+BAA8D,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,UAAU,CAAC;IACnB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,QAAQ,CAAC;IACb,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,kGAAkG;IAClG,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,wBAAoB,CAAC;AAC5C,eAAO,MAAM,UAAU,wBAAoB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;2FAC2F;AAC3F,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -31,4 +31,14 @@ export const ENTITY_NAMES = [
|
|
|
31
31
|
];
|
|
32
32
|
/** The `ChangeOp` union as a runtime array (same lockstep contract as `ENTITY_NAMES`). */
|
|
33
33
|
export const CHANGE_OPS = ["upsert", "delete"];
|
|
34
|
+
/**
|
|
35
|
+
* The liveness ping/pong wire literals (CTC-135). The client sends `PING_FRAME` after an idle
|
|
36
|
+
* interval; the mirror answers `PONG_FRAME` via `setWebSocketAutoResponse`, which matches the request
|
|
37
|
+
* string BYTE-FOR-BYTE and replies WITHOUT waking a hibernated Durable Object. These must therefore
|
|
38
|
+
* be pinned bytes — never `JSON.stringify(...)` at runtime (a different key order or spacing would
|
|
39
|
+
* silently stop matching). The mirror pins the identical literals (`apps/mirror/src/do/ws.ts`); a
|
|
40
|
+
* contract test in each repo asserts the two agree.
|
|
41
|
+
*/
|
|
42
|
+
export const PING_FRAME = '{"type":"ping"}';
|
|
43
|
+
export const PONG_FRAME = '{"type":"pong"}';
|
|
34
44
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,sGAAsG;AACtG,sGAAsG;AACtG,qGAAqG;AACrG,mBAAmB;AACnB,EAAE;AACF,iGAAiG;AACjG,2FAA2F;AA4B3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,cAAc;IACd,WAAW;IACX,eAAe;IACf,UAAU;IACV,QAAQ;IACR,aAAa;IACb,qBAAqB;IACrB,UAAU;IACV,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,SAAS;CAC+B,CAAC;AAK3C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,sGAAsG;AACtG,sGAAsG;AACtG,qGAAqG;AACrG,mBAAmB;AACnB,EAAE;AACF,iGAAiG;AACjG,2FAA2F;AA4B3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,cAAc;IACd,WAAW;IACX,eAAe;IACf,UAAU;IACV,QAAQ;IACR,aAAa;IACb,qBAAqB;IACrB,UAAU;IACV,eAAe;IACf,YAAY;IACZ,iBAAiB;IACjB,SAAS;CAC+B,CAAC;AAK3C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAwC,CAAC;AAsDtF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@catalyst-cloud/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Keep a live local copy of your Linear and GitHub project data — pushed in real time, without polling rate limits or webhook tunnels.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Coalesce Labs",
|