@supalive/core 1.14.0 → 1.16.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-B4UxN1ZL.d.ts +2365 -0
- package/dist/index-B4UxN1ZL.d.ts.map +1 -0
- package/dist/index-B8JFAyw4.d.ts +2377 -0
- package/dist/index-B8JFAyw4.d.ts.map +1 -0
- package/dist/index-CfcrWLLm.d.ts +2377 -0
- package/dist/index-CfcrWLLm.d.ts.map +1 -0
- package/dist/index-Ddr4NiPf.d.ts +2295 -0
- package/dist/index-Ddr4NiPf.d.ts.map +1 -0
- package/dist/index-ggi1DrSG.d.ts +2336 -0
- package/dist/index-ggi1DrSG.d.ts.map +1 -0
- package/dist/mysql-07ROfbBZ.d.ts +114 -0
- package/dist/mysql-07ROfbBZ.d.ts.map +1 -0
- package/dist/mysql-BTigT6mP.d.ts +114 -0
- package/dist/mysql-BTigT6mP.d.ts.map +1 -0
- package/dist/mysql-CXymz1Eu.d.ts +114 -0
- package/dist/mysql-CXymz1Eu.d.ts.map +1 -0
- package/dist/mysql-ClUK7S2j.js +623 -0
- package/dist/mysql-ClUK7S2j.js.map +1 -0
- package/dist/mysql-CtpWqOhO.d.ts +114 -0
- package/dist/mysql-CtpWqOhO.d.ts.map +1 -0
- package/dist/mysql-DWj2q3qR.d.ts +114 -0
- package/dist/mysql-DWj2q3qR.d.ts.map +1 -0
- package/dist/mysql-fTKZ1zaF.js +623 -0
- package/dist/mysql-fTKZ1zaF.js.map +1 -0
- package/dist/overlap-checker-1TwhkAwy.js +259 -0
- package/dist/overlap-checker-1TwhkAwy.js.map +1 -0
- package/dist/overlap-checker-CGlxWcyb.js +259 -0
- package/dist/overlap-checker-CGlxWcyb.js.map +1 -0
- package/dist/postgres-B5-5vgLJ.d.ts +118 -0
- package/dist/postgres-B5-5vgLJ.d.ts.map +1 -0
- package/dist/postgres-CN03Espg.js +868 -0
- package/dist/postgres-CN03Espg.js.map +1 -0
- package/dist/postgres-CRPJdZx2.js +868 -0
- package/dist/postgres-CRPJdZx2.js.map +1 -0
- package/dist/postgres-D0M1ri-C.d.ts +118 -0
- package/dist/postgres-D0M1ri-C.d.ts.map +1 -0
- package/dist/postgres-DCXnKaJr.d.ts +118 -0
- package/dist/postgres-DCXnKaJr.d.ts.map +1 -0
- package/dist/postgres-DgCYPf0j.d.ts +118 -0
- package/dist/postgres-DgCYPf0j.d.ts.map +1 -0
- package/dist/postgres-Dnshux6k.d.ts +118 -0
- package/dist/postgres-Dnshux6k.d.ts.map +1 -0
- package/dist/query-LJranz0c.js +795 -0
- package/dist/query-LJranz0c.js.map +1 -0
- package/dist/query-q1ZvKrZO.js +762 -0
- package/dist/query-q1ZvKrZO.js.map +1 -0
- package/dist/realtime_db-B0Tin87E.js +312 -0
- package/dist/realtime_db-B0Tin87E.js.map +1 -0
- package/dist/realtime_db-DVhhasJj.js +312 -0
- package/dist/realtime_db-DVhhasJj.js.map +1 -0
- package/dist/router-DP2ThAwh.js +274 -0
- package/dist/router-DP2ThAwh.js.map +1 -0
- package/dist/router-Dfnwka7K.js +337 -0
- package/dist/router-Dfnwka7K.js.map +1 -0
- package/dist/src/client/index.d.ts +2 -2
- package/dist/src/client/index.js +79 -17
- package/dist/src/client/index.js.map +1 -1
- package/dist/src/exports/mysql.d.ts +1 -1
- package/dist/src/exports/mysql.js +1 -1
- package/dist/src/exports/postgres.d.ts +1 -1
- package/dist/src/exports/postgres.js +1 -1
- package/dist/src/exports/procedure.d.ts +12 -9
- package/dist/src/exports/procedure.d.ts.map +1 -1
- package/dist/src/exports/procedure.js +65 -6
- package/dist/src/exports/procedure.js.map +1 -1
- package/dist/src/exports/schema-sql.d.ts +1 -1
- package/dist/src/exports/server.d.ts +12 -6
- package/dist/src/exports/server.d.ts.map +1 -1
- package/dist/src/exports/server.js +793 -253
- package/dist/src/exports/server.js.map +1 -1
- package/dist/src/exports/sub-manager-worker-entry.js +1 -1
- package/dist/src/exports/types.d.ts +2 -2
- package/dist/src/exports/types.js +1 -1
- package/dist/sub-worker-dispatch-D7jfw6ys.js +826 -0
- package/dist/sub-worker-dispatch-D7jfw6ys.js.map +1 -0
- package/dist/sub-worker-dispatch-qiSs5Xkm.js +826 -0
- package/dist/sub-worker-dispatch-qiSs5Xkm.js.map +1 -0
- package/dist/types_client_rpc-CWZmlWmM.js +145 -0
- package/dist/types_client_rpc-CWZmlWmM.js.map +1 -0
- package/dist/types_client_rpc-D4td5W0Y.js +141 -0
- package/dist/types_client_rpc-D4td5W0Y.js.map +1 -0
- package/dist/types_server-BSiGxbqb.d.ts +523 -0
- package/dist/types_server-BSiGxbqb.d.ts.map +1 -0
- package/dist/types_server-BhC19R2a.js.map +1 -1
- package/dist/types_server-BmIgDd8d.d.ts +614 -0
- package/dist/types_server-BmIgDd8d.d.ts.map +1 -0
- package/dist/types_server-C6B9_b1R.d.ts +662 -0
- package/dist/types_server-C6B9_b1R.d.ts.map +1 -0
- package/dist/types_server-DRr5yKy1.d.ts +655 -0
- package/dist/types_server-DRr5yKy1.d.ts.map +1 -0
- package/dist/types_server-DmCbve3w.d.ts +684 -0
- package/dist/types_server-DmCbve3w.d.ts.map +1 -0
- package/dist/types_server-Gs_vSVaS.d.ts +655 -0
- package/dist/types_server-Gs_vSVaS.d.ts.map +1 -0
- package/dist/types_server-ILUmPFvk.d.ts +614 -0
- package/dist/types_server-ILUmPFvk.d.ts.map +1 -0
- package/package.json +2 -1
package/dist/src/client/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { c as parentConn, i as createActionBuilder, n as getContextRegistry, o as createMutationBuilder, r as router, s as createQueryBuilder
|
|
1
|
+
import { c as parentConn, i as createActionBuilder, l as primaryOnlyConn, n as getContextRegistry, o as createMutationBuilder, r as router, s as createQueryBuilder } from "../../router-DP2ThAwh.js";
|
|
2
2
|
import { r as supaliveStringify } from "../../helper-zdJT5FUc.js";
|
|
3
|
-
import { o as matchesPredicate } from "../../query-
|
|
3
|
+
import { o as matchesPredicate } from "../../query-LJranz0c.js";
|
|
4
4
|
import { n as defineSchema, t as defineComputedField } from "../../schema-DRtz5h5l.js";
|
|
5
5
|
import { C as normalizeIdToBytes, S as bytesFromJson, _ as RawRangeReadSchema, a as DEFAULT_RETRY, b as WriteEntrySchema, c as OccAbortError, d as PointReadSchema, f as PredicateSchema, g as RawPointReadSchema, h as RangeReadSchema, i as CompareOperatorSchema, l as OccConflictError, m as QueryCacheMetadataSchema, n as BigIntSchema, o as LeafPredicateSchema, p as QueryCacheEntrySchema, r as CachedPgMetadataSchema, s as NO_RETRY, t as AndPredicateSchema, u as OrPredicateSchema, v as RawReadEntrySchema, w as normalizeToBytes, x as WriteOpSchema, y as ReadEntrySchema } from "../../types_db-OUou3o2Z.js";
|
|
6
|
-
import { l as ServerMessageSchema } from "../../types_client_rpc-
|
|
7
|
-
import { a as TxContext, i as DbWriter, n as sleep, r as DbReader, t as SupaliveDb } from "../../realtime_db-
|
|
6
|
+
import { l as ServerMessageSchema } from "../../types_client_rpc-CWZmlWmM.js";
|
|
7
|
+
import { a as TxContext, i as DbWriter, n as sleep, r as DbReader, t as SupaliveDb } from "../../realtime_db-B0Tin87E.js";
|
|
8
8
|
import { n as resolveReadRouting, t as makeConnRouting } from "../../read-routing-BUcQAwnd.js";
|
|
9
9
|
import { sha1 } from "hash-wasm";
|
|
10
10
|
//#region src/db/query_definition.ts
|
|
@@ -78,6 +78,23 @@ var RPCError = class extends Error {
|
|
|
78
78
|
this.code = code;
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
|
+
const LEVEL_ORDER = {
|
|
82
|
+
debug: 10,
|
|
83
|
+
info: 20,
|
|
84
|
+
warn: 30,
|
|
85
|
+
error: 40
|
|
86
|
+
};
|
|
87
|
+
/** Console-backed logger that drops anything below `level`. `"silent"` mutes all. */
|
|
88
|
+
function createConsoleLogger(level = "warn") {
|
|
89
|
+
const enabled = (l) => level !== "silent" && LEVEL_ORDER[l] >= LEVEL_ORDER[level];
|
|
90
|
+
const noop = () => {};
|
|
91
|
+
return {
|
|
92
|
+
debug: enabled("debug") ? (m, ...a) => console.debug(`[WSClient] ${m}`, ...a) : noop,
|
|
93
|
+
info: enabled("info") ? (m, ...a) => console.info(`[WSClient] ${m}`, ...a) : noop,
|
|
94
|
+
warn: enabled("warn") ? (m, ...a) => console.warn(`[WSClient] ${m}`, ...a) : noop,
|
|
95
|
+
error: enabled("error") ? (m, ...a) => console.error(`[WSClient] ${m}`, ...a) : noop
|
|
96
|
+
};
|
|
97
|
+
}
|
|
81
98
|
var WsClientManager = class {
|
|
82
99
|
ws = null;
|
|
83
100
|
options;
|
|
@@ -123,7 +140,9 @@ var WsClientManager = class {
|
|
|
123
140
|
throttling = false;
|
|
124
141
|
visibilityListener = null;
|
|
125
142
|
onlineListener = null;
|
|
143
|
+
log;
|
|
126
144
|
constructor(options) {
|
|
145
|
+
this.log = options.logger ?? createConsoleLogger(options.logLevel ?? "warn");
|
|
127
146
|
this.options = {
|
|
128
147
|
reconnectionTimeout: 18e4,
|
|
129
148
|
reconnect: {
|
|
@@ -166,6 +185,11 @@ var WsClientManager = class {
|
|
|
166
185
|
if (this.connectionState == "connected" || this.connectionState == "connecting") return;
|
|
167
186
|
this.connectionState = "connecting";
|
|
168
187
|
this.emitState();
|
|
188
|
+
this.log.debug(`connecting to ${this.options.url}`);
|
|
189
|
+
this.emitEvent({
|
|
190
|
+
type: "connecting",
|
|
191
|
+
detail: this.options.url
|
|
192
|
+
});
|
|
169
193
|
return new Promise(async (resolve, reject) => {
|
|
170
194
|
this.pendingConnectResolve = () => {
|
|
171
195
|
this.pendingConnectResolve = null;
|
|
@@ -337,7 +361,8 @@ var WsClientManager = class {
|
|
|
337
361
|
id,
|
|
338
362
|
procedure,
|
|
339
363
|
input,
|
|
340
|
-
minTs: this.highWaterTs > 0n ? this.highWaterTs.toString() : void 0
|
|
364
|
+
minTs: this.highWaterTs > 0n ? this.highWaterTs.toString() : void 0,
|
|
365
|
+
trace: this.traceparent()
|
|
341
366
|
});
|
|
342
367
|
});
|
|
343
368
|
}
|
|
@@ -420,14 +445,15 @@ var WsClientManager = class {
|
|
|
420
445
|
this.subscriptions.delete(pendingKey);
|
|
421
446
|
this.rejectJoiners(parked, err);
|
|
422
447
|
}
|
|
423
|
-
|
|
448
|
+
this.log.warn(`Failed to re-subscribe ${sub.procedure}:`, err);
|
|
424
449
|
}
|
|
425
450
|
});
|
|
426
451
|
this.send({
|
|
427
452
|
type: "subscribe",
|
|
428
453
|
id,
|
|
429
454
|
procedure: sub.procedure,
|
|
430
|
-
input: sub.input
|
|
455
|
+
input: sub.input,
|
|
456
|
+
trace: this.traceparent()
|
|
431
457
|
});
|
|
432
458
|
}
|
|
433
459
|
}
|
|
@@ -529,7 +555,8 @@ var WsClientManager = class {
|
|
|
529
555
|
type: "subscribe",
|
|
530
556
|
id,
|
|
531
557
|
procedure,
|
|
532
|
-
input
|
|
558
|
+
input,
|
|
559
|
+
trace: this.traceparent()
|
|
533
560
|
});
|
|
534
561
|
timeout = setTimeout(() => {
|
|
535
562
|
if (this.pendingRequests.has(id)) {
|
|
@@ -584,11 +611,11 @@ var WsClientManager = class {
|
|
|
584
611
|
try {
|
|
585
612
|
data = JSON.parse(dataValue);
|
|
586
613
|
} catch {
|
|
587
|
-
|
|
614
|
+
this.log.warn("Failed to parse server message as JSON:", dataValue);
|
|
588
615
|
}
|
|
589
616
|
const parsed = ServerMessageSchema.safeParse(data);
|
|
590
617
|
if (!parsed.success) {
|
|
591
|
-
|
|
618
|
+
this.log.warn("Invalid server message:", parsed.error.issues, data);
|
|
592
619
|
return;
|
|
593
620
|
}
|
|
594
621
|
const message = parsed.data;
|
|
@@ -597,6 +624,8 @@ var WsClientManager = class {
|
|
|
597
624
|
this.connectionState = "connected";
|
|
598
625
|
this.reconnectAttempts = 0;
|
|
599
626
|
this.lastSuccessfulConnectionTime = Date.now();
|
|
627
|
+
this.log.info("connected");
|
|
628
|
+
this.emitEvent({ type: "connected" });
|
|
600
629
|
const token = await this.options.token?.();
|
|
601
630
|
if (token) {
|
|
602
631
|
this.authState = "pending";
|
|
@@ -640,7 +669,10 @@ var WsClientManager = class {
|
|
|
640
669
|
this.handleSubscriptionGone(message);
|
|
641
670
|
break;
|
|
642
671
|
case "ping": break;
|
|
643
|
-
default:
|
|
672
|
+
default: {
|
|
673
|
+
const _exhaustive = message;
|
|
674
|
+
this.log.warn("Unhandled server message type:", _exhaustive);
|
|
675
|
+
}
|
|
644
676
|
}
|
|
645
677
|
}
|
|
646
678
|
/**
|
|
@@ -683,7 +715,7 @@ var WsClientManager = class {
|
|
|
683
715
|
try {
|
|
684
716
|
sub.onGone?.(message.reason);
|
|
685
717
|
} catch (e) {
|
|
686
|
-
|
|
718
|
+
this.log.error("onGone listener threw:", e);
|
|
687
719
|
}
|
|
688
720
|
}
|
|
689
721
|
handleClose() {
|
|
@@ -692,6 +724,8 @@ var WsClientManager = class {
|
|
|
692
724
|
this.authState = "pending";
|
|
693
725
|
this.ws = null;
|
|
694
726
|
this.stopInactivityWatchdog();
|
|
727
|
+
this.log.info("disconnected");
|
|
728
|
+
this.emitEvent({ type: "disconnected" });
|
|
695
729
|
this.options.onDisconnect?.();
|
|
696
730
|
this.pendingConnectReject?.(new RPCError("Connection closed before ready", "DISCONNECTED"));
|
|
697
731
|
for (const pending of this.pendingRequests.values()) pending.reject(new RPCError("Connection closed", "DISCONNECTED"));
|
|
@@ -700,6 +734,11 @@ var WsClientManager = class {
|
|
|
700
734
|
if (!this.explicitlyClosed && this.options.reconnect?.enabled) this.scheduleReconnect();
|
|
701
735
|
}
|
|
702
736
|
handleError(err) {
|
|
737
|
+
this.log.warn("connection error:", err);
|
|
738
|
+
this.emitEvent({
|
|
739
|
+
type: "error",
|
|
740
|
+
detail: err.message
|
|
741
|
+
});
|
|
703
742
|
this.options.onError?.(err);
|
|
704
743
|
}
|
|
705
744
|
startInactivityWatchdog() {
|
|
@@ -726,7 +765,7 @@ var WsClientManager = class {
|
|
|
726
765
|
*/
|
|
727
766
|
closeAndReconnect(reason) {
|
|
728
767
|
if (this.connectionState === "disconnected") return;
|
|
729
|
-
|
|
768
|
+
this.log.warn(`closeAndReconnect: ${reason}`);
|
|
730
769
|
const oldWs = this.ws;
|
|
731
770
|
if (oldWs) {
|
|
732
771
|
oldWs.onmessage = null;
|
|
@@ -774,7 +813,7 @@ var WsClientManager = class {
|
|
|
774
813
|
}
|
|
775
814
|
scheduleReconnect() {
|
|
776
815
|
if (this.reconnectAttempts >= (this.options.reconnect?.maxAttempts ?? 5)) {
|
|
777
|
-
|
|
816
|
+
this.log.error("Max reconnection attempts reached");
|
|
778
817
|
const giveUp = new RPCError("Max reconnection attempts reached", "DISCONNECTED");
|
|
779
818
|
for (const q of this.queuedCalls) q.reject(giveUp);
|
|
780
819
|
this.queuedCalls = [];
|
|
@@ -784,9 +823,14 @@ var WsClientManager = class {
|
|
|
784
823
|
const base = (this.options.reconnect?.delay ?? 1e3) * Math.pow(this.options.reconnect?.backoff ?? 1.5, this.reconnectAttempts);
|
|
785
824
|
const delay = base + base * (Math.random() - .5);
|
|
786
825
|
this.reconnectAttempts++;
|
|
826
|
+
this.log.info(`reconnecting (attempt ${this.reconnectAttempts}) in ${Math.round(delay)}ms`);
|
|
827
|
+
this.emitEvent({
|
|
828
|
+
type: "reconnecting",
|
|
829
|
+
attempt: this.reconnectAttempts
|
|
830
|
+
});
|
|
787
831
|
this.reconnectTimer = setTimeout(() => {
|
|
788
832
|
this.connect().catch((err) => {
|
|
789
|
-
|
|
833
|
+
this.log.warn("Reconnection failed:", err);
|
|
790
834
|
});
|
|
791
835
|
}, delay);
|
|
792
836
|
}
|
|
@@ -803,7 +847,17 @@ var WsClientManager = class {
|
|
|
803
847
|
for (const l of this.stateListeners) try {
|
|
804
848
|
l(next);
|
|
805
849
|
} catch (e) {
|
|
806
|
-
|
|
850
|
+
this.log.error("state listener threw:", e);
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
/** Fire the optional structured lifecycle event; never lets a throwing hook
|
|
854
|
+
* break the client. */
|
|
855
|
+
emitEvent(event) {
|
|
856
|
+
if (!this.options.onEvent) return;
|
|
857
|
+
try {
|
|
858
|
+
this.options.onEvent(event);
|
|
859
|
+
} catch (e) {
|
|
860
|
+
this.log.error("onEvent listener threw:", e);
|
|
807
861
|
}
|
|
808
862
|
}
|
|
809
863
|
async ensureConnected() {
|
|
@@ -812,6 +866,10 @@ var WsClientManager = class {
|
|
|
812
866
|
send(message) {
|
|
813
867
|
if (this.ws && this.ws.readyState === WS_OPEN) this.ws.send(supaliveStringify(message));
|
|
814
868
|
}
|
|
869
|
+
/** Current W3C traceparent from the optional hook, or undefined. */
|
|
870
|
+
traceparent() {
|
|
871
|
+
return this.options.getTraceparent?.() ?? void 0;
|
|
872
|
+
}
|
|
815
873
|
cleanup() {
|
|
816
874
|
this.connectionState = "disconnected";
|
|
817
875
|
this.authState = "pending";
|
|
@@ -852,6 +910,10 @@ function createClient(options) {
|
|
|
852
910
|
reconnect: options.reconnect,
|
|
853
911
|
heartbeat: options.heartbeat,
|
|
854
912
|
throttle: options.throttle,
|
|
913
|
+
logger: options.logger,
|
|
914
|
+
logLevel: options.logLevel,
|
|
915
|
+
onEvent: options.onEvent,
|
|
916
|
+
getTraceparent: options.getTraceparent,
|
|
855
917
|
onConnect: options.onConnect,
|
|
856
918
|
onDisconnect: options.onDisConnect
|
|
857
919
|
});
|
|
@@ -1233,6 +1295,6 @@ function createCaller(options) {
|
|
|
1233
1295
|
} });
|
|
1234
1296
|
}
|
|
1235
1297
|
//#endregion
|
|
1236
|
-
export { AndPredicateSchema, BigIntSchema, CachedPgMetadataSchema, CompareOperatorSchema, DEFAULT_RETRY, DbReader, DbReader as ReadContext, DbWriter, DbWriter as WritableContext, LeafPredicateSchema, NO_RETRY, OccAbortError, OccConflictError, OrPredicateSchema, PointReadSchema, PredicateSchema, QueryCacheEntrySchema, QueryCacheMetadataSchema, RPCError, RangeReadSchema, RawPointReadSchema, RawRangeReadSchema, RawReadEntrySchema, ReadEntrySchema, SupaliveDb, TxContext, WriteEntrySchema, WriteOpSchema, WsClientManager, _resetGlobalDefs, bytesFromJson, createActionBuilder, createCaller, createClient, createMutationBuilder, createQueryBuilder, defineComputedField, defineQuery, defineSchema, matchesPredicate, normalizeIdToBytes, normalizeToBytes, router, sleep };
|
|
1298
|
+
export { AndPredicateSchema, BigIntSchema, CachedPgMetadataSchema, CompareOperatorSchema, DEFAULT_RETRY, DbReader, DbReader as ReadContext, DbWriter, DbWriter as WritableContext, LeafPredicateSchema, NO_RETRY, OccAbortError, OccConflictError, OrPredicateSchema, PointReadSchema, PredicateSchema, QueryCacheEntrySchema, QueryCacheMetadataSchema, RPCError, RangeReadSchema, RawPointReadSchema, RawRangeReadSchema, RawReadEntrySchema, ReadEntrySchema, SupaliveDb, TxContext, WriteEntrySchema, WriteOpSchema, WsClientManager, _resetGlobalDefs, bytesFromJson, createActionBuilder, createCaller, createClient, createConsoleLogger, createMutationBuilder, createQueryBuilder, defineComputedField, defineQuery, defineSchema, matchesPredicate, normalizeIdToBytes, normalizeToBytes, router, sleep };
|
|
1237
1299
|
|
|
1238
1300
|
//# sourceMappingURL=index.js.map
|