ugly-app 0.1.405 → 0.1.406
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/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/server/DataProxyClient.d.ts.map +1 -1
- package/dist/server/DataProxyClient.js +178 -18
- package/dist/server/DataProxyClient.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/server/DataProxyClient.ts +204 -17
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.406";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataProxyClient.d.ts","sourceRoot":"","sources":["../../src/server/DataProxyClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"DataProxyClient.d.ts","sourceRoot":"","sources":["../../src/server/DataProxyClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,31 @@ let _token = '';
|
|
|
16
16
|
let _connected = false;
|
|
17
17
|
// Queue of messages to send when connection is established
|
|
18
18
|
const _sendQueue = [];
|
|
19
|
+
let _connectWaiters = [];
|
|
20
|
+
/**
|
|
21
|
+
* Infinite reconnect scheduler state. `_reconnectAttempt` ticks up
|
|
22
|
+
* on each failed `_initDataProxyOnce` and resets to 0 on a
|
|
23
|
+
* successful open. `_reconnectTimer` is the pending `setTimeout`
|
|
24
|
+
* handle so `stopDataProxy` can cancel it mid-backoff.
|
|
25
|
+
*/
|
|
26
|
+
let _reconnectAttempt = 0;
|
|
27
|
+
let _reconnectTimer = null;
|
|
28
|
+
/**
|
|
29
|
+
* How long an individual RPC will block waiting for a disconnected
|
|
30
|
+
* client to (re)connect before giving up. Five minutes matches the
|
|
31
|
+
* outer-layer timeouts we already tolerate elsewhere and is long
|
|
32
|
+
* enough to cover a realistic edge-proxy outage, short enough that a
|
|
33
|
+
* genuinely broken config fails within one coffee break. Not
|
|
34
|
+
* configurable today — can be added if a caller has a legitimately
|
|
35
|
+
* longer tolerance.
|
|
36
|
+
*/
|
|
37
|
+
const RPC_CONNECT_WAIT_MS = 5 * 60_000;
|
|
38
|
+
/**
|
|
39
|
+
* Upper bound on reconnect backoff. 1s, 2s, 4s, 8s, 16s, 32s, 60s,
|
|
40
|
+
* 60s, 60s, … forever. Short enough that a brief edge hiccup is
|
|
41
|
+
* invisible, long enough that a dead server doesn't hammer logs.
|
|
42
|
+
*/
|
|
43
|
+
const RECONNECT_BACKOFF_CAP_MS = 60_000;
|
|
19
44
|
// Heartbeat — keeps the WebSocket alive through idle-killing intermediaries
|
|
20
45
|
// (Docker userland-proxy, NAT, load balancers) that drop quiet TCP connections.
|
|
21
46
|
const HEARTBEAT_INTERVAL_MS = 25_000;
|
|
@@ -48,12 +73,90 @@ function startHeartbeat(ws) {
|
|
|
48
73
|
}
|
|
49
74
|
}, HEARTBEAT_INTERVAL_MS);
|
|
50
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Wait for the client to be connected. Resolves immediately when
|
|
78
|
+
* already connected; otherwise queues a one-shot callback that fires
|
|
79
|
+
* on the next successful `open`. Rejects with a different error when
|
|
80
|
+
* `initDataProxy` has never been called — the waiter would hang
|
|
81
|
+
* forever otherwise, which is the wrong behavior for one-shot scripts
|
|
82
|
+
* that imported `pgQuery` without bootstrapping the proxy.
|
|
83
|
+
*
|
|
84
|
+
* A safety timeout (default `RPC_CONNECT_WAIT_MS`) fires if the
|
|
85
|
+
* connection doesn't come back in time. The waiter is removed from
|
|
86
|
+
* the pending list so a late `open` doesn't invoke a stale callback.
|
|
87
|
+
*/
|
|
88
|
+
function waitForConnected(timeoutMs) {
|
|
89
|
+
if (_connected)
|
|
90
|
+
return Promise.resolve();
|
|
91
|
+
if (!_url || !_token) {
|
|
92
|
+
return Promise.reject(new Error('[DataProxy] not configured — call initDataProxy(url, token) before making RPC calls'));
|
|
93
|
+
}
|
|
94
|
+
return new Promise((resolveOuter, rejectOuter) => {
|
|
95
|
+
let settled = false;
|
|
96
|
+
const waiter = {
|
|
97
|
+
resolve: () => {
|
|
98
|
+
if (settled)
|
|
99
|
+
return;
|
|
100
|
+
settled = true;
|
|
101
|
+
clearTimeout(timer);
|
|
102
|
+
resolveOuter();
|
|
103
|
+
},
|
|
104
|
+
reject: (err) => {
|
|
105
|
+
if (settled)
|
|
106
|
+
return;
|
|
107
|
+
settled = true;
|
|
108
|
+
clearTimeout(timer);
|
|
109
|
+
rejectOuter(err);
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
_connectWaiters.push(waiter);
|
|
113
|
+
const timer = setTimeout(() => {
|
|
114
|
+
if (settled)
|
|
115
|
+
return;
|
|
116
|
+
settled = true;
|
|
117
|
+
const idx = _connectWaiters.indexOf(waiter);
|
|
118
|
+
if (idx >= 0)
|
|
119
|
+
_connectWaiters.splice(idx, 1);
|
|
120
|
+
rejectOuter(new Error(`[DataProxy] connection wait timeout after ${timeoutMs}ms — server appears to be unreachable`));
|
|
121
|
+
}, timeoutMs);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Flush the connect-waiter queue. Called from the WebSocket `open`
|
|
126
|
+
* handler on (re)connection so any RPCs that were blocked waiting
|
|
127
|
+
* for the server can proceed. Order preserved (FIFO) so earlier
|
|
128
|
+
* callers unblock first.
|
|
129
|
+
*/
|
|
130
|
+
function notifyConnected() {
|
|
131
|
+
const waiters = _connectWaiters;
|
|
132
|
+
_connectWaiters = [];
|
|
133
|
+
for (const w of waiters) {
|
|
134
|
+
try {
|
|
135
|
+
w.resolve();
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
/* a waiter's resolve shouldn't throw, but be defensive */
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
51
142
|
export async function rpc(op, args) {
|
|
52
|
-
// Wait for connection if still connecting
|
|
53
|
-
if (_connectPromise)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
143
|
+
// Wait for connection if still connecting.
|
|
144
|
+
if (_connectPromise) {
|
|
145
|
+
try {
|
|
146
|
+
await _connectPromise;
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
/* swallow — we'll fall through to waitForConnected which
|
|
150
|
+
holds until the reconnect loop succeeds or times out */
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (!_connected) {
|
|
154
|
+
// Don't fail fast on a transient disconnect. If initDataProxy
|
|
155
|
+
// has been called, the reconnect loop is running and will
|
|
156
|
+
// restore the connection; queue-and-wait until it does or
|
|
157
|
+
// until the safety timeout trips.
|
|
158
|
+
await waitForConnected(RPC_CONNECT_WAIT_MS);
|
|
159
|
+
}
|
|
57
160
|
const id = ++_requestId;
|
|
58
161
|
const request = { id, op, args };
|
|
59
162
|
const msg = JSON.stringify(request);
|
|
@@ -187,6 +290,7 @@ async function _initDataProxyOnce(url, token) {
|
|
|
187
290
|
_ws = new WebSocket(wsUrl);
|
|
188
291
|
_ws.on('open', () => {
|
|
189
292
|
_connected = true;
|
|
293
|
+
_reconnectAttempt = 0; // success → reset backoff
|
|
190
294
|
console.log('[DataProxy] Connected to data proxy');
|
|
191
295
|
// Initialize NATS proxy client with shared WebSocket
|
|
192
296
|
initNatsProxy(_ws);
|
|
@@ -196,6 +300,8 @@ async function _initDataProxyOnce(url, token) {
|
|
|
196
300
|
_ws.send(msg);
|
|
197
301
|
}
|
|
198
302
|
_sendQueue.length = 0;
|
|
303
|
+
// Unblock any rpc() calls that were waiting for a live connection.
|
|
304
|
+
notifyConnected();
|
|
199
305
|
resolve();
|
|
200
306
|
});
|
|
201
307
|
_ws.on('message', handleMessage);
|
|
@@ -216,16 +322,13 @@ async function _initDataProxyOnce(url, token) {
|
|
|
216
322
|
pending.reject(new Error('Connection closed'));
|
|
217
323
|
_pending.delete(id);
|
|
218
324
|
}
|
|
219
|
-
//
|
|
325
|
+
// Auth-close codes are permanent — no amount of reconnecting
|
|
326
|
+
// fixes an invalid token. Everything else starts the infinite
|
|
327
|
+
// reconnect loop (see `scheduleReconnect`) so brief server
|
|
328
|
+
// outages resolve transparently instead of stranding the
|
|
329
|
+
// client.
|
|
220
330
|
if (_url && _token && code !== 4001 && code !== 4003) {
|
|
221
|
-
|
|
222
|
-
if (!_url || !_token)
|
|
223
|
-
return; // stopDataProxy was called
|
|
224
|
-
console.log('[DataProxy] Reconnecting...');
|
|
225
|
-
initDataProxy(_url, _token).catch((err) => {
|
|
226
|
-
console.error('[DataProxy] Reconnect failed:', err instanceof Error ? err.message : err);
|
|
227
|
-
});
|
|
228
|
-
}, 1000);
|
|
331
|
+
scheduleReconnect();
|
|
229
332
|
}
|
|
230
333
|
});
|
|
231
334
|
_ws.on('error', (err) => {
|
|
@@ -237,19 +340,76 @@ async function _initDataProxyOnce(url, token) {
|
|
|
237
340
|
}
|
|
238
341
|
});
|
|
239
342
|
});
|
|
240
|
-
|
|
343
|
+
// Clear _connectPromise once it settles, regardless of outcome.
|
|
344
|
+
// The explicit `.catch` on this side-chain is required: callers
|
|
345
|
+
// await the returned promise and handle errors themselves; without
|
|
346
|
+
// the catch here, the side-chain's rejection would bubble as an
|
|
347
|
+
// unhandled rejection in the Node process.
|
|
348
|
+
void _connectPromise
|
|
349
|
+
.catch(() => {
|
|
350
|
+
/* settled via caller — swallow so the state-clear chain below
|
|
351
|
+
doesn't propagate */
|
|
352
|
+
})
|
|
353
|
+
.finally(() => {
|
|
241
354
|
_connectPromise = null;
|
|
242
355
|
});
|
|
243
356
|
return _connectPromise;
|
|
244
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* Schedule the next reconnect attempt. Exponential backoff, no
|
|
360
|
+
* upper bound on retries — the loop only stops on `stopDataProxy`
|
|
361
|
+
* (clears `_url`/`_token`) or on a successful open (resets
|
|
362
|
+
* `_reconnectAttempt`).
|
|
363
|
+
*
|
|
364
|
+
* Previous behavior fired a single reconnect 1s after close and
|
|
365
|
+
* gave up if that attempt failed, leaving the client permanently
|
|
366
|
+
* dead until the process restarted. Server-side blips (edge 502
|
|
367
|
+
* during a rollover, a brief data-proxy crash) used to soft-brick
|
|
368
|
+
* every subsequent RPC with "Not connected"; with this loop they
|
|
369
|
+
* resolve transparently.
|
|
370
|
+
*/
|
|
371
|
+
function scheduleReconnect() {
|
|
372
|
+
if (!_url || !_token)
|
|
373
|
+
return; // stopDataProxy already ran
|
|
374
|
+
if (_reconnectTimer)
|
|
375
|
+
return; // already scheduled
|
|
376
|
+
_reconnectAttempt += 1;
|
|
377
|
+
const delayMs = Math.min(1000 * 2 ** (_reconnectAttempt - 1), RECONNECT_BACKOFF_CAP_MS);
|
|
378
|
+
console.log(`[DataProxy] Reconnect attempt ${_reconnectAttempt} in ${delayMs}ms`);
|
|
379
|
+
_reconnectTimer = setTimeout(() => {
|
|
380
|
+
_reconnectTimer = null;
|
|
381
|
+
if (!_url || !_token)
|
|
382
|
+
return;
|
|
383
|
+
_initDataProxyOnce(_url, _token).catch((err) => {
|
|
384
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
385
|
+
console.warn(`[DataProxy] Reconnect attempt ${_reconnectAttempt} failed: ${msg} — scheduling next`);
|
|
386
|
+
scheduleReconnect();
|
|
387
|
+
});
|
|
388
|
+
}, delayMs);
|
|
389
|
+
}
|
|
245
390
|
export function stopDataProxy() {
|
|
246
391
|
_url = '';
|
|
247
392
|
_token = '';
|
|
248
393
|
_connected = false;
|
|
249
394
|
stopHeartbeat();
|
|
250
|
-
if (
|
|
251
|
-
|
|
252
|
-
|
|
395
|
+
if (_reconnectTimer) {
|
|
396
|
+
clearTimeout(_reconnectTimer);
|
|
397
|
+
_reconnectTimer = null;
|
|
398
|
+
}
|
|
399
|
+
_reconnectAttempt = 0;
|
|
400
|
+
// Reject any connect-waiters so rpc() callers don't hang forever
|
|
401
|
+
// after shutdown. Callers see a clean "shut down" error rather
|
|
402
|
+
// than the more ambiguous connection-timeout message.
|
|
403
|
+
const waiters = _connectWaiters;
|
|
404
|
+
_connectWaiters = [];
|
|
405
|
+
const shutdownErr = new Error('[DataProxy] client shut down via stopDataProxy');
|
|
406
|
+
for (const w of waiters) {
|
|
407
|
+
try {
|
|
408
|
+
w.reject(shutdownErr);
|
|
409
|
+
}
|
|
410
|
+
catch {
|
|
411
|
+
/* defensive */
|
|
412
|
+
}
|
|
253
413
|
}
|
|
254
414
|
}
|
|
255
415
|
export function isDataProxyConnected() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataProxyClient.js","sourceRoot":"","sources":["../../src/server/DataProxyClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataProxyClient.js","sourceRoot":"","sources":["../../src/server/DataProxyClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAqB9E,gFAAgF;AAEhF,IAAI,GAAG,GAAqB,IAAI,CAAC;AACjC,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;AACnD,IAAI,eAAe,GAAyB,IAAI,CAAC;AACjD,IAAI,IAAI,GAAG,EAAE,CAAC;AACd,IAAI,MAAM,GAAG,EAAE,CAAC;AAChB,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,2DAA2D;AAC3D,MAAM,UAAU,GAAa,EAAE,CAAC;AAchC,IAAI,eAAe,GAAoB,EAAE,CAAC;AAE1C;;;;;GAKG;AACH,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAI,eAAe,GAAyC,IAAI,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,mBAAmB,GAAG,CAAC,GAAG,MAAM,CAAC;AAEvC;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,4EAA4E;AAC5E,gFAAgF;AAChF,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,IAAI,eAAe,GAA0C,IAAI,CAAC;AAClE,IAAI,aAAa,GAAG,IAAI,CAAC;AAEzB,SAAS,aAAa;IACpB,IAAI,eAAe,EAAE,CAAC;QACpB,aAAa,CAAC,eAAe,CAAC,CAAC;QAC/B,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EAAa;IACnC,aAAa,EAAE,CAAC;IAChB,aAAa,GAAG,IAAI,CAAC;IACrB,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,OAAO;QAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,iDAAiD;YACjD,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAClE,EAAE,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,aAAa,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC,EAAE,qBAAqB,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,SAAiB;IACzC,IAAI,UAAU;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CACP,qFAAqF,CACtF,CACF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,OAAO,CAAO,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;QACrD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAkB;YAC5B,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,YAAY,EAAE,CAAC;YACjB,CAAC;YACD,MAAM,EAAE,CAAC,GAAU,EAAE,EAAE;gBACrB,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,WAAW,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;SACF,CAAC;QACF,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,GAAG,IAAI,CAAC;gBAAE,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC7C,WAAW,CACT,IAAI,KAAK,CACP,6CAA6C,SAAS,uCAAuC,CAC9F,CACF,CAAC;QACJ,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe;IACtB,MAAM,OAAO,GAAG,eAAe,CAAC;IAChC,eAAe,GAAG,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,EAAU,EAAE,IAAe;IACnD,2CAA2C;IAC3C,IAAI,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,eAAe,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP;sEAC0D;QAC5D,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,8DAA8D;QAC9D,0DAA0D;QAC1D,0DAA0D;QAC1D,kCAAkC;QAClC,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;IACxB,MAAM,OAAO,GAAe,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEtC,IAAI,GAAG,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6CAA6C;AAC7C,MAAM,WAAW,GAAG,sCAAsC,CAAC;AAE3D,2FAA2F;AAC3F,SAAS,WAAW,CAAC,IAAY,EAAE,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAoB,EAAE,QAAkB;IAC7D,kCAAkC;IAClC,IAAI,QAAQ,IAAI,CAAC,IAAI,YAAY,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAmB,CAAC,CAAC;QAC5E,IAAI,uBAAuB,CAAC,GAAG,CAAC;YAAE,OAAO;IAC3C,CAAC;IAED,uBAAuB;IACvB,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,QAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,WAAW,CAAgB,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,sEAAsE;IACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7B,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B,SAAS,uBAAuB,CAAC,GAAY;IAC3C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACnE,yCAAyC;IACzC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC5B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QACpB,GAAG,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,KAAa;IAC5D,IAAI,OAAgB,CAAC;IACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,OAAO,MAAM,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YAC7C,IAAI,OAAO,KAAK,iBAAiB;gBAAE,MAAM;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CACV,uCAAuC,OAAO,IAAI,iBAAiB,YAAY,GAAG,kBAAkB,OAAO,IAAI,CAChH,CAAC;YACF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,MAAM,OAAO,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,KAAa;IAC1D,IAAI,GAAG,GAAG,CAAC;IACX,MAAM,GAAG,KAAK,CAAC;IAEf,oEAAoE;IACpE,qEAAqE;IACrE,+DAA+D;IAC/D,kEAAkE;IAClE,4CAA4C;IAC5C,IAAI,GAAG,EAAE,CAAC;QACR,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QACD,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IAED,eAAe,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7B,CAAC,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE;YACzB,CAAC,CAAC,GAAG,GAAG,UAAU,KAAK,EAAE,CAAC;QAE5B,GAAG,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;QAE3B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,UAAU,GAAG,IAAI,CAAC;YAClB,iBAAiB,GAAG,CAAC,CAAC,CAAC,0BAA0B;YACjD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAEnD,qDAAqD;YACrD,aAAa,CAAC,GAAI,CAAC,CAAC;YAEpB,cAAc,CAAC,GAAI,CAAC,CAAC;YAErB,wBAAwB;YACxB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,GAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;YACD,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAEtB,mEAAmE;YACnE,eAAe,EAAE,CAAC;YAElB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEjC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YAClB,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,YAAY,GAAG,UAAU,CAAC;YAChC,UAAU,GAAG,KAAK,CAAC;YACnB,aAAa,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CACV,kCAAkC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAC9D,CAAC;YACF,oDAAoD;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;YACpF,CAAC;YACD,8BAA8B;YAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACrC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;YACD,6DAA6D;YAC7D,8DAA8D;YAC9D,2DAA2D;YAC3D,yDAAyD;YACzD,UAAU;YACV,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACrD,iBAAiB,EAAE,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,gEAAgE;IAChE,gEAAgE;IAChE,mEAAmE;IACnE,gEAAgE;IAChE,2CAA2C;IAC3C,KAAK,eAAe;SACjB,KAAK,CAAC,GAAG,EAAE;QACV;+BACuB;IACzB,CAAC,CAAC;SACD,OAAO,CAAC,GAAG,EAAE;QACZ,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC,CAAC,CAAC;IAEL,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,4BAA4B;IAC1D,IAAI,eAAe;QAAE,OAAO,CAAC,oBAAoB;IACjD,iBAAiB,IAAI,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,EACnC,wBAAwB,CACzB,CAAC;IACF,OAAO,CAAC,GAAG,CACT,iCAAiC,iBAAiB,OAAO,OAAO,IAAI,CACrE,CAAC;IACF,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;QAChC,eAAe,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAC7B,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CACV,iCAAiC,iBAAiB,YAAY,GAAG,oBAAoB,CACtF,CAAC;YACF,iBAAiB,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,GAAG,EAAE,CAAC;IACV,MAAM,GAAG,EAAE,CAAC;IACZ,UAAU,GAAG,KAAK,CAAC;IACnB,aAAa,EAAE,CAAC;IAChB,IAAI,eAAe,EAAE,CAAC;QACpB,YAAY,CAAC,eAAe,CAAC,CAAC;QAC9B,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,iBAAiB,GAAG,CAAC,CAAC;IACtB,iEAAiE;IACjE,+DAA+D;IAC/D,sDAAsD;IACtD,MAAM,OAAO,GAAG,eAAe,CAAC;IAChC,eAAe,GAAG,EAAE,CAAC;IACrB,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAChF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,gFAAgF;AAChF,wCAAwC;AAExC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAAkB,EAClB,EAAU;IAEV,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAsB,CAAC;AACjE,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,UAAkB,EAClB,GAAM,EACN,OAA+C;IAE/C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAqB,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,EAAU,EACV,MAA+B,EAC/B,MAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAClF,OAAO,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAe,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,EAAU,EACV,MAA+B,EAC/B,MAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAClF,OAAO,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAsB,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,EAAU,EACV,MAA+B,EAC/B,GAAM,EACN,MAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5F,OAAO,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAe,CAAC;AAC5D,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,EAAU,EACV,EAAO,EACP,MAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC,aAAa,EAAE,IAAI,CAAe,CAAC;AAChD,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,EAAU,EACV,EAAO,EACP,MAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAsB,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,EAAU,EACV,MAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAAkB,EAClB,MAAgC,EAChC,OAA0E;IAE1E,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAiB,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,UAAkB,EAClB,QAAmC,EACnC,OAA2C;IAE3C,OAAO,GAAG,CAAC,aAAa,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAiB,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,QAAmC;IAEnC,OAAO,GAAG,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAoB,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,QAAmC,EACnC,OAA2C;IAE3C,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAiB,CAAC;AAChF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,MAA+B;IAE/B,OAAO,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAsB,CAAC;AACzE,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,UAAkB,EAClB,MAAY,EACZ,OAAa;IAEb,OAAO,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAiB,CAAC;AACvE,CAAC;AAED,8DAA8D;AAC9D,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,MAAY;IAEZ,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAoB,CAAC;AACtE,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,MAAY,EACZ,KAAc;IAEd,OAAO,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAiB,CAAC;AAC3E,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,MAAW;IAEX,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAsB,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,WAAmB,EACnB,OAA8D;IAE9D,OAAO,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAiB,CAAC;AAClF,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAW,EACX,MAAkB;IAElB,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAGlC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB;IAClD,MAAM,GAAG,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB;IAClD,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAC,UAAU,CAAC,CAAqB,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,MAAgB,EAChB,QAAiB;IAEjB,MAAM,GAAG,CAAC,uBAAuB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,EAAU,EACV,MAAgB,EAChB,QAAiB;IAEjB,MAAM,GAAG,CAAC,uBAAuB,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,UAAkB;IAElB,MAAM,GAAG,CAAC,yBAAyB,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAY;IACvD,MAAM,GAAG,CAAC,yBAAyB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,EAAU,EACV,MAAgB,EAChB,OAAiC;IAEjC,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAkB,EAClB,EAAU;IAEV,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAkB,EAClB,MAAgB,EAChB,KAAc;IAEd,OAAO,GAAG,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAEtD,CAAC;AACJ,CAAC;AAmBD,IAAI,cAAc,GAAG,EAAE,CAAC;AAExB,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,cAAc,GAAG,MAAM,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW;YACtC,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC,QAAQ,EAAE;gBACnB,MAAM;gBACN,YAAY;gBACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACvB,WAAW;aACZ,CAAoB,CAAC;QACxB,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO;YACjC,OAAO,GAAG,CAAC,iBAAiB,EAAE;gBAC5B,SAAS,CAAC,OAAO,CAAC;gBAClB,SAAS,CAAC,OAAO,CAAC;aACnB,CAAoB,CAAC;QACxB,CAAC;QAED,GAAG,CAAC,MAAM,EAAE,GAAG;YACb,gEAAgE;YAChE,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GACZ,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,uBAAuB,CAAC;gBAC3D,OAAO,GAAG,QAAQ,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC;YACjD,CAAC;YACD,MAAM,OAAO,GACX,MAAM,KAAK,QAAQ;gBACjB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE;gBACzC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC;YAC5D,OAAO,GAAG,GAAG,GAAG,YAAY,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG;YAC5B,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,iBAAiB,EAAE;gBAC3C,MAAM;gBACN,YAAY;aACb,CAAC,CAA6C,CAAC;YAEhD,uEAAuE;YACvE,wEAAwE;YACxE,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY,EAAE,CAAC;gBAC7C,MAAM,CAAC,SAAS,GAAG,YAAY,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.406";
|
|
@@ -40,6 +40,47 @@ let _connected = false;
|
|
|
40
40
|
// Queue of messages to send when connection is established
|
|
41
41
|
const _sendQueue: string[] = [];
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Callbacks waiting for the next successful `open`. `rpc()` registers
|
|
45
|
+
* one here when it's invoked during a disconnected state; on
|
|
46
|
+
* reconnect we fire each `resolve` so queued RPCs can proceed, and
|
|
47
|
+
* on `stopDataProxy` we fire each `reject` so callers don't hang
|
|
48
|
+
* forever after shutdown. See `waitForConnected()` for the public
|
|
49
|
+
* path.
|
|
50
|
+
*/
|
|
51
|
+
interface ConnectWaiter {
|
|
52
|
+
resolve: () => void;
|
|
53
|
+
reject: (err: Error) => void;
|
|
54
|
+
}
|
|
55
|
+
let _connectWaiters: ConnectWaiter[] = [];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Infinite reconnect scheduler state. `_reconnectAttempt` ticks up
|
|
59
|
+
* on each failed `_initDataProxyOnce` and resets to 0 on a
|
|
60
|
+
* successful open. `_reconnectTimer` is the pending `setTimeout`
|
|
61
|
+
* handle so `stopDataProxy` can cancel it mid-backoff.
|
|
62
|
+
*/
|
|
63
|
+
let _reconnectAttempt = 0;
|
|
64
|
+
let _reconnectTimer: ReturnType<typeof setTimeout> | null = null;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* How long an individual RPC will block waiting for a disconnected
|
|
68
|
+
* client to (re)connect before giving up. Five minutes matches the
|
|
69
|
+
* outer-layer timeouts we already tolerate elsewhere and is long
|
|
70
|
+
* enough to cover a realistic edge-proxy outage, short enough that a
|
|
71
|
+
* genuinely broken config fails within one coffee break. Not
|
|
72
|
+
* configurable today — can be added if a caller has a legitimately
|
|
73
|
+
* longer tolerance.
|
|
74
|
+
*/
|
|
75
|
+
const RPC_CONNECT_WAIT_MS = 5 * 60_000;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Upper bound on reconnect backoff. 1s, 2s, 4s, 8s, 16s, 32s, 60s,
|
|
79
|
+
* 60s, 60s, … forever. Short enough that a brief edge hiccup is
|
|
80
|
+
* invisible, long enough that a dead server doesn't hammer logs.
|
|
81
|
+
*/
|
|
82
|
+
const RECONNECT_BACKOFF_CAP_MS = 60_000;
|
|
83
|
+
|
|
43
84
|
// Heartbeat — keeps the WebSocket alive through idle-killing intermediaries
|
|
44
85
|
// (Docker userland-proxy, NAT, load balancers) that drop quiet TCP connections.
|
|
45
86
|
const HEARTBEAT_INTERVAL_MS = 25_000;
|
|
@@ -73,10 +114,93 @@ function startHeartbeat(ws: WebSocket): void {
|
|
|
73
114
|
}, HEARTBEAT_INTERVAL_MS);
|
|
74
115
|
}
|
|
75
116
|
|
|
117
|
+
/**
|
|
118
|
+
* Wait for the client to be connected. Resolves immediately when
|
|
119
|
+
* already connected; otherwise queues a one-shot callback that fires
|
|
120
|
+
* on the next successful `open`. Rejects with a different error when
|
|
121
|
+
* `initDataProxy` has never been called — the waiter would hang
|
|
122
|
+
* forever otherwise, which is the wrong behavior for one-shot scripts
|
|
123
|
+
* that imported `pgQuery` without bootstrapping the proxy.
|
|
124
|
+
*
|
|
125
|
+
* A safety timeout (default `RPC_CONNECT_WAIT_MS`) fires if the
|
|
126
|
+
* connection doesn't come back in time. The waiter is removed from
|
|
127
|
+
* the pending list so a late `open` doesn't invoke a stale callback.
|
|
128
|
+
*/
|
|
129
|
+
function waitForConnected(timeoutMs: number): Promise<void> {
|
|
130
|
+
if (_connected) return Promise.resolve();
|
|
131
|
+
if (!_url || !_token) {
|
|
132
|
+
return Promise.reject(
|
|
133
|
+
new Error(
|
|
134
|
+
'[DataProxy] not configured — call initDataProxy(url, token) before making RPC calls',
|
|
135
|
+
),
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
return new Promise<void>((resolveOuter, rejectOuter) => {
|
|
139
|
+
let settled = false;
|
|
140
|
+
const waiter: ConnectWaiter = {
|
|
141
|
+
resolve: () => {
|
|
142
|
+
if (settled) return;
|
|
143
|
+
settled = true;
|
|
144
|
+
clearTimeout(timer);
|
|
145
|
+
resolveOuter();
|
|
146
|
+
},
|
|
147
|
+
reject: (err: Error) => {
|
|
148
|
+
if (settled) return;
|
|
149
|
+
settled = true;
|
|
150
|
+
clearTimeout(timer);
|
|
151
|
+
rejectOuter(err);
|
|
152
|
+
},
|
|
153
|
+
};
|
|
154
|
+
_connectWaiters.push(waiter);
|
|
155
|
+
const timer = setTimeout(() => {
|
|
156
|
+
if (settled) return;
|
|
157
|
+
settled = true;
|
|
158
|
+
const idx = _connectWaiters.indexOf(waiter);
|
|
159
|
+
if (idx >= 0) _connectWaiters.splice(idx, 1);
|
|
160
|
+
rejectOuter(
|
|
161
|
+
new Error(
|
|
162
|
+
`[DataProxy] connection wait timeout after ${timeoutMs}ms — server appears to be unreachable`,
|
|
163
|
+
),
|
|
164
|
+
);
|
|
165
|
+
}, timeoutMs);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Flush the connect-waiter queue. Called from the WebSocket `open`
|
|
171
|
+
* handler on (re)connection so any RPCs that were blocked waiting
|
|
172
|
+
* for the server can proceed. Order preserved (FIFO) so earlier
|
|
173
|
+
* callers unblock first.
|
|
174
|
+
*/
|
|
175
|
+
function notifyConnected(): void {
|
|
176
|
+
const waiters = _connectWaiters;
|
|
177
|
+
_connectWaiters = [];
|
|
178
|
+
for (const w of waiters) {
|
|
179
|
+
try {
|
|
180
|
+
w.resolve();
|
|
181
|
+
} catch {
|
|
182
|
+
/* a waiter's resolve shouldn't throw, but be defensive */
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
76
187
|
export async function rpc(op: string, args: unknown[]): Promise<unknown> {
|
|
77
|
-
// Wait for connection if still connecting
|
|
78
|
-
if (_connectPromise)
|
|
79
|
-
|
|
188
|
+
// Wait for connection if still connecting.
|
|
189
|
+
if (_connectPromise) {
|
|
190
|
+
try {
|
|
191
|
+
await _connectPromise;
|
|
192
|
+
} catch {
|
|
193
|
+
/* swallow — we'll fall through to waitForConnected which
|
|
194
|
+
holds until the reconnect loop succeeds or times out */
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (!_connected) {
|
|
198
|
+
// Don't fail fast on a transient disconnect. If initDataProxy
|
|
199
|
+
// has been called, the reconnect loop is running and will
|
|
200
|
+
// restore the connection; queue-and-wait until it does or
|
|
201
|
+
// until the safety timeout trips.
|
|
202
|
+
await waitForConnected(RPC_CONNECT_WAIT_MS);
|
|
203
|
+
}
|
|
80
204
|
|
|
81
205
|
const id = ++_requestId;
|
|
82
206
|
const request: RpcRequest = { id, op, args };
|
|
@@ -221,6 +345,7 @@ async function _initDataProxyOnce(url: string, token: string): Promise<void> {
|
|
|
221
345
|
|
|
222
346
|
_ws.on('open', () => {
|
|
223
347
|
_connected = true;
|
|
348
|
+
_reconnectAttempt = 0; // success → reset backoff
|
|
224
349
|
console.log('[DataProxy] Connected to data proxy');
|
|
225
350
|
|
|
226
351
|
// Initialize NATS proxy client with shared WebSocket
|
|
@@ -234,6 +359,9 @@ async function _initDataProxyOnce(url: string, token: string): Promise<void> {
|
|
|
234
359
|
}
|
|
235
360
|
_sendQueue.length = 0;
|
|
236
361
|
|
|
362
|
+
// Unblock any rpc() calls that were waiting for a live connection.
|
|
363
|
+
notifyConnected();
|
|
364
|
+
|
|
237
365
|
resolve();
|
|
238
366
|
});
|
|
239
367
|
|
|
@@ -259,15 +387,13 @@ async function _initDataProxyOnce(url: string, token: string): Promise<void> {
|
|
|
259
387
|
pending.reject(new Error('Connection closed'));
|
|
260
388
|
_pending.delete(id);
|
|
261
389
|
}
|
|
262
|
-
//
|
|
390
|
+
// Auth-close codes are permanent — no amount of reconnecting
|
|
391
|
+
// fixes an invalid token. Everything else starts the infinite
|
|
392
|
+
// reconnect loop (see `scheduleReconnect`) so brief server
|
|
393
|
+
// outages resolve transparently instead of stranding the
|
|
394
|
+
// client.
|
|
263
395
|
if (_url && _token && code !== 4001 && code !== 4003) {
|
|
264
|
-
|
|
265
|
-
if (!_url || !_token) return; // stopDataProxy was called
|
|
266
|
-
console.log('[DataProxy] Reconnecting...');
|
|
267
|
-
initDataProxy(_url, _token).catch((err: unknown) => {
|
|
268
|
-
console.error('[DataProxy] Reconnect failed:', err instanceof Error ? err.message : err);
|
|
269
|
-
});
|
|
270
|
-
}, 1000);
|
|
396
|
+
scheduleReconnect();
|
|
271
397
|
}
|
|
272
398
|
});
|
|
273
399
|
|
|
@@ -280,21 +406,82 @@ async function _initDataProxyOnce(url: string, token: string): Promise<void> {
|
|
|
280
406
|
});
|
|
281
407
|
});
|
|
282
408
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
409
|
+
// Clear _connectPromise once it settles, regardless of outcome.
|
|
410
|
+
// The explicit `.catch` on this side-chain is required: callers
|
|
411
|
+
// await the returned promise and handle errors themselves; without
|
|
412
|
+
// the catch here, the side-chain's rejection would bubble as an
|
|
413
|
+
// unhandled rejection in the Node process.
|
|
414
|
+
void _connectPromise
|
|
415
|
+
.catch(() => {
|
|
416
|
+
/* settled via caller — swallow so the state-clear chain below
|
|
417
|
+
doesn't propagate */
|
|
418
|
+
})
|
|
419
|
+
.finally(() => {
|
|
420
|
+
_connectPromise = null;
|
|
421
|
+
});
|
|
286
422
|
|
|
287
423
|
return _connectPromise;
|
|
288
424
|
}
|
|
289
425
|
|
|
426
|
+
/**
|
|
427
|
+
* Schedule the next reconnect attempt. Exponential backoff, no
|
|
428
|
+
* upper bound on retries — the loop only stops on `stopDataProxy`
|
|
429
|
+
* (clears `_url`/`_token`) or on a successful open (resets
|
|
430
|
+
* `_reconnectAttempt`).
|
|
431
|
+
*
|
|
432
|
+
* Previous behavior fired a single reconnect 1s after close and
|
|
433
|
+
* gave up if that attempt failed, leaving the client permanently
|
|
434
|
+
* dead until the process restarted. Server-side blips (edge 502
|
|
435
|
+
* during a rollover, a brief data-proxy crash) used to soft-brick
|
|
436
|
+
* every subsequent RPC with "Not connected"; with this loop they
|
|
437
|
+
* resolve transparently.
|
|
438
|
+
*/
|
|
439
|
+
function scheduleReconnect(): void {
|
|
440
|
+
if (!_url || !_token) return; // stopDataProxy already ran
|
|
441
|
+
if (_reconnectTimer) return; // already scheduled
|
|
442
|
+
_reconnectAttempt += 1;
|
|
443
|
+
const delayMs = Math.min(
|
|
444
|
+
1000 * 2 ** (_reconnectAttempt - 1),
|
|
445
|
+
RECONNECT_BACKOFF_CAP_MS,
|
|
446
|
+
);
|
|
447
|
+
console.log(
|
|
448
|
+
`[DataProxy] Reconnect attempt ${_reconnectAttempt} in ${delayMs}ms`,
|
|
449
|
+
);
|
|
450
|
+
_reconnectTimer = setTimeout(() => {
|
|
451
|
+
_reconnectTimer = null;
|
|
452
|
+
if (!_url || !_token) return;
|
|
453
|
+
_initDataProxyOnce(_url, _token).catch((err: unknown) => {
|
|
454
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
455
|
+
console.warn(
|
|
456
|
+
`[DataProxy] Reconnect attempt ${_reconnectAttempt} failed: ${msg} — scheduling next`,
|
|
457
|
+
);
|
|
458
|
+
scheduleReconnect();
|
|
459
|
+
});
|
|
460
|
+
}, delayMs);
|
|
461
|
+
}
|
|
462
|
+
|
|
290
463
|
export function stopDataProxy(): void {
|
|
291
464
|
_url = '';
|
|
292
465
|
_token = '';
|
|
293
466
|
_connected = false;
|
|
294
467
|
stopHeartbeat();
|
|
295
|
-
if (
|
|
296
|
-
|
|
297
|
-
|
|
468
|
+
if (_reconnectTimer) {
|
|
469
|
+
clearTimeout(_reconnectTimer);
|
|
470
|
+
_reconnectTimer = null;
|
|
471
|
+
}
|
|
472
|
+
_reconnectAttempt = 0;
|
|
473
|
+
// Reject any connect-waiters so rpc() callers don't hang forever
|
|
474
|
+
// after shutdown. Callers see a clean "shut down" error rather
|
|
475
|
+
// than the more ambiguous connection-timeout message.
|
|
476
|
+
const waiters = _connectWaiters;
|
|
477
|
+
_connectWaiters = [];
|
|
478
|
+
const shutdownErr = new Error('[DataProxy] client shut down via stopDataProxy');
|
|
479
|
+
for (const w of waiters) {
|
|
480
|
+
try {
|
|
481
|
+
w.reject(shutdownErr);
|
|
482
|
+
} catch {
|
|
483
|
+
/* defensive */
|
|
484
|
+
}
|
|
298
485
|
}
|
|
299
486
|
}
|
|
300
487
|
|