@supalive/core 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -2
- package/dist/bytes-AuEkyxeU.js +19 -0
- package/dist/bytes-AuEkyxeU.js.map +1 -0
- package/dist/codec-BHAmGEIQ.js +62 -0
- package/dist/codec-BHAmGEIQ.js.map +1 -0
- package/dist/helper-CiacMqje.d.ts +14 -0
- package/dist/helper-CiacMqje.d.ts.map +1 -0
- package/dist/helper-wGbzz6zo.js +42 -0
- package/dist/helper-wGbzz6zo.js.map +1 -0
- package/dist/index-CaWMDqq0.d.ts +1754 -0
- package/dist/index-CaWMDqq0.d.ts.map +1 -0
- package/dist/mysql-Cxd4Uq5p.d.ts +104 -0
- package/dist/mysql-Cxd4Uq5p.d.ts.map +1 -0
- package/dist/mysql-bvnjYWvZ.js +570 -0
- package/dist/mysql-bvnjYWvZ.js.map +1 -0
- package/dist/overlap-checker-Ct_HP_iB.js +187 -0
- package/dist/overlap-checker-Ct_HP_iB.js.map +1 -0
- package/dist/postgres-B8u1YN8X.js +824 -0
- package/dist/postgres-B8u1YN8X.js.map +1 -0
- package/dist/postgres-Ck-xt72U.d.ts +108 -0
- package/dist/postgres-Ck-xt72U.d.ts.map +1 -0
- package/dist/procedure-DX87tyef.js +124 -0
- package/dist/procedure-DX87tyef.js.map +1 -0
- package/dist/query-Bh0RNxDz.js +673 -0
- package/dist/query-Bh0RNxDz.js.map +1 -0
- package/dist/realtime_db-DOCgqbwi.js +247 -0
- package/dist/realtime_db-DOCgqbwi.js.map +1 -0
- package/dist/router-DlTYWpop.js +81 -0
- package/dist/router-DlTYWpop.js.map +1 -0
- package/dist/schema-Dd7u0A1L.js +109 -0
- package/dist/schema-Dd7u0A1L.js.map +1 -0
- package/dist/src/client/index.d.ts +2 -17
- package/dist/src/client/index.js +1152 -18
- package/dist/src/client/index.js.map +1 -1
- package/dist/src/exports/mysql.d.ts +2 -2
- package/dist/src/exports/mysql.js +2 -2
- package/dist/src/exports/postgres.d.ts +2 -2
- package/dist/src/exports/postgres.js +2 -2
- package/dist/src/exports/procedure.d.ts +3 -5
- package/dist/src/exports/procedure.js +6 -5
- package/dist/src/exports/schema-sql.d.ts +18 -0
- package/dist/src/exports/schema-sql.d.ts.map +1 -0
- package/dist/src/exports/schema-sql.js +161 -0
- package/dist/src/exports/schema-sql.js.map +1 -0
- package/dist/src/exports/server.d.ts +368 -2
- package/dist/src/exports/server.d.ts.map +1 -1
- package/dist/src/exports/server.js +1346 -2
- package/dist/src/exports/server.js.map +1 -1
- package/dist/src/exports/subscription-manager-worker-entry.d.ts +1 -0
- package/dist/src/exports/subscription-manager-worker-entry.js +115 -0
- package/dist/src/exports/subscription-manager-worker-entry.js.map +1 -0
- package/dist/src/exports/types.d.ts +4 -6
- package/dist/src/exports/types.js +5 -6
- package/dist/subscription-worker-pahX0zxg.js +511 -0
- package/dist/subscription-worker-pahX0zxg.js.map +1 -0
- package/dist/types_client_rpc-CIsjQQGG.js +105 -0
- package/dist/types_client_rpc-CIsjQQGG.js.map +1 -0
- package/dist/types_db-DXj_l9n-.js +168 -0
- package/dist/types_db-DXj_l9n-.js.map +1 -0
- package/dist/types_server-Dk6o_B7N.js +24 -0
- package/dist/types_server-Dk6o_B7N.js.map +1 -0
- package/dist/types_server-TFo6SWDH.d.ts +216 -0
- package/dist/types_server-TFo6SWDH.d.ts.map +1 -0
- package/package.json +7 -3
- package/dist/src/client/caller_client.d.ts +0 -42
- package/dist/src/client/caller_client.d.ts.map +0 -1
- package/dist/src/client/caller_client.js +0 -77
- package/dist/src/client/caller_client.js.map +0 -1
- package/dist/src/client/client.d.ts +0 -149
- package/dist/src/client/client.d.ts.map +0 -1
- package/dist/src/client/client.js +0 -308
- package/dist/src/client/client.js.map +0 -1
- package/dist/src/client/index.d.ts.map +0 -1
- package/dist/src/client/sub_key.d.ts +0 -20
- package/dist/src/client/sub_key.d.ts.map +0 -1
- package/dist/src/client/sub_key.js +0 -37
- package/dist/src/client/sub_key.js.map +0 -1
- package/dist/src/client/ws_client_manager.d.ts +0 -268
- package/dist/src/client/ws_client_manager.d.ts.map +0 -1
- package/dist/src/client/ws_client_manager.js +0 -1013
- package/dist/src/client/ws_client_manager.js.map +0 -1
- package/dist/src/config.d.ts +0 -117
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -2
- package/dist/src/config.js.map +0 -1
- package/dist/src/db/bytes.d.ts +0 -4
- package/dist/src/db/bytes.d.ts.map +0 -1
- package/dist/src/db/bytes.js +0 -24
- package/dist/src/db/bytes.js.map +0 -1
- package/dist/src/db/cache.d.ts +0 -30
- package/dist/src/db/cache.d.ts.map +0 -1
- package/dist/src/db/cache.js +0 -153
- package/dist/src/db/cache.js.map +0 -1
- package/dist/src/db/codec.d.ts +0 -10
- package/dist/src/db/codec.d.ts.map +0 -1
- package/dist/src/db/codec.js +0 -73
- package/dist/src/db/codec.js.map +0 -1
- package/dist/src/db/context.d.ts +0 -28
- package/dist/src/db/context.d.ts.map +0 -1
- package/dist/src/db/context.js +0 -147
- package/dist/src/db/context.js.map +0 -1
- package/dist/src/db/db.d.ts +0 -154
- package/dist/src/db/db.d.ts.map +0 -1
- package/dist/src/db/db.js +0 -23
- package/dist/src/db/db.js.map +0 -1
- package/dist/src/db/mysql.d.ts +0 -120
- package/dist/src/db/mysql.d.ts.map +0 -1
- package/dist/src/db/mysql.js +0 -708
- package/dist/src/db/mysql.js.map +0 -1
- package/dist/src/db/postgres.d.ts +0 -116
- package/dist/src/db/postgres.d.ts.map +0 -1
- package/dist/src/db/postgres.js +0 -998
- package/dist/src/db/postgres.js.map +0 -1
- package/dist/src/db/query.d.ts +0 -174
- package/dist/src/db/query.d.ts.map +0 -1
- package/dist/src/db/query.js +0 -790
- package/dist/src/db/query.js.map +0 -1
- package/dist/src/db/query_definition.d.ts +0 -54
- package/dist/src/db/query_definition.d.ts.map +0 -1
- package/dist/src/db/query_definition.js +0 -47
- package/dist/src/db/query_definition.js.map +0 -1
- package/dist/src/db/realtime_db.d.ts +0 -19
- package/dist/src/db/realtime_db.d.ts.map +0 -1
- package/dist/src/db/realtime_db.js +0 -98
- package/dist/src/db/realtime_db.js.map +0 -1
- package/dist/src/db/schema.d.ts +0 -110
- package/dist/src/db/schema.d.ts.map +0 -1
- package/dist/src/db/schema.js +0 -47
- package/dist/src/db/schema.js.map +0 -1
- package/dist/src/db/types_client_rpc.d.ts +0 -157
- package/dist/src/db/types_client_rpc.d.ts.map +0 -1
- package/dist/src/db/types_client_rpc.js +0 -106
- package/dist/src/db/types_client_rpc.js.map +0 -1
- package/dist/src/db/types_db.d.ts +0 -236
- package/dist/src/db/types_db.d.ts.map +0 -1
- package/dist/src/db/types_db.js +0 -188
- package/dist/src/db/types_db.js.map +0 -1
- package/dist/src/exports/mysql.d.ts.map +0 -1
- package/dist/src/exports/mysql.js.map +0 -1
- package/dist/src/exports/postgres.d.ts.map +0 -1
- package/dist/src/exports/postgres.js.map +0 -1
- package/dist/src/exports/procedure.d.ts.map +0 -1
- package/dist/src/exports/procedure.js.map +0 -1
- package/dist/src/exports/types.d.ts.map +0 -1
- package/dist/src/exports/types.js.map +0 -1
- package/dist/src/helper.d.ts +0 -11
- package/dist/src/helper.d.ts.map +0 -1
- package/dist/src/helper.js +0 -45
- package/dist/src/helper.js.map +0 -1
- package/dist/src/logger.d.ts +0 -7
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -47
- package/dist/src/logger.js.map +0 -1
- package/dist/src/router/index.d.ts +0 -4
- package/dist/src/router/index.d.ts.map +0 -1
- package/dist/src/router/index.js +0 -4
- package/dist/src/router/index.js.map +0 -1
- package/dist/src/router/procedure.d.ts +0 -204
- package/dist/src/router/procedure.d.ts.map +0 -1
- package/dist/src/router/procedure.js +0 -122
- package/dist/src/router/procedure.js.map +0 -1
- package/dist/src/router/router.d.ts +0 -88
- package/dist/src/router/router.d.ts.map +0 -1
- package/dist/src/router/router.js +0 -88
- package/dist/src/router/router.js.map +0 -1
- package/dist/src/server/hash.d.ts +0 -12
- package/dist/src/server/hash.d.ts.map +0 -1
- package/dist/src/server/hash.js +0 -20
- package/dist/src/server/hash.js.map +0 -1
- package/dist/src/server/hash.test.d.ts +0 -2
- package/dist/src/server/hash.test.d.ts.map +0 -1
- package/dist/src/server/hash.test.js +0 -43
- package/dist/src/server/hash.test.js.map +0 -1
- package/dist/src/server/index.d.ts +0 -9
- package/dist/src/server/index.d.ts.map +0 -1
- package/dist/src/server/index.js +0 -8
- package/dist/src/server/index.js.map +0 -1
- package/dist/src/server/overlap-checker.d.ts +0 -18
- package/dist/src/server/overlap-checker.d.ts.map +0 -1
- package/dist/src/server/overlap-checker.js +0 -247
- package/dist/src/server/overlap-checker.js.map +0 -1
- package/dist/src/server/sub_hash.d.ts +0 -23
- package/dist/src/server/sub_hash.d.ts.map +0 -1
- package/dist/src/server/sub_hash.js +0 -38
- package/dist/src/server/sub_hash.js.map +0 -1
- package/dist/src/server/subscription-manager-client.d.ts +0 -120
- package/dist/src/server/subscription-manager-client.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-client.js +0 -207
- package/dist/src/server/subscription-manager-client.js.map +0 -1
- package/dist/src/server/subscription-manager-types.d.ts +0 -168
- package/dist/src/server/subscription-manager-types.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-types.js +0 -94
- package/dist/src/server/subscription-manager-types.js.map +0 -1
- package/dist/src/server/subscription-manager-worker-entry.d.ts +0 -2
- package/dist/src/server/subscription-manager-worker-entry.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-worker-entry.js +0 -127
- package/dist/src/server/subscription-manager-worker-entry.js.map +0 -1
- package/dist/src/server/subscription-manager-worker-protocol.d.ts +0 -40
- package/dist/src/server/subscription-manager-worker-protocol.d.ts.map +0 -1
- package/dist/src/server/subscription-manager-worker-protocol.js +0 -20
- package/dist/src/server/subscription-manager-worker-protocol.js.map +0 -1
- package/dist/src/server/subscription-manager.d.ts +0 -32
- package/dist/src/server/subscription-manager.d.ts.map +0 -1
- package/dist/src/server/subscription-manager.js +0 -249
- package/dist/src/server/subscription-manager.js.map +0 -1
- package/dist/src/server/subscription-manager.test.d.ts +0 -2
- package/dist/src/server/subscription-manager.test.d.ts.map +0 -1
- package/dist/src/server/subscription-manager.test.js +0 -610
- package/dist/src/server/subscription-manager.test.js.map +0 -1
- package/dist/src/server/subscription-worker.d.ts +0 -32
- package/dist/src/server/subscription-worker.d.ts.map +0 -1
- package/dist/src/server/subscription-worker.js +0 -190
- package/dist/src/server/subscription-worker.js.map +0 -1
- package/dist/src/server/supalive-server.d.ts +0 -158
- package/dist/src/server/supalive-server.d.ts.map +0 -1
- package/dist/src/server/supalive-server.js +0 -1048
- package/dist/src/server/supalive-server.js.map +0 -1
- package/dist/src/server/types_server.d.ts +0 -96
- package/dist/src/server/types_server.d.ts.map +0 -1
- package/dist/src/server/types_server.js +0 -36
- package/dist/src/server/types_server.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
type WSEventHandler<E> = ((event: E) => void) | null;
|
|
2
|
-
export interface WSLike {
|
|
3
|
-
readyState: number;
|
|
4
|
-
send(data: string): void;
|
|
5
|
-
close(code?: number, reason?: string): void;
|
|
6
|
-
onopen: WSEventHandler<unknown>;
|
|
7
|
-
onmessage: WSEventHandler<{
|
|
8
|
-
data: string | {
|
|
9
|
-
toString(): string;
|
|
10
|
-
};
|
|
11
|
-
}>;
|
|
12
|
-
onclose: WSEventHandler<unknown>;
|
|
13
|
-
onerror: WSEventHandler<unknown>;
|
|
14
|
-
}
|
|
15
|
-
export interface WSConstructor {
|
|
16
|
-
new (url: string): WSLike;
|
|
17
|
-
}
|
|
18
|
-
export declare class RPCError extends Error {
|
|
19
|
-
code?: string;
|
|
20
|
-
constructor(message: string, code?: string);
|
|
21
|
-
}
|
|
22
|
-
export interface HeartbeatOptions {
|
|
23
|
-
/**
|
|
24
|
-
* Close + reconnect when no server message arrives for this long. The
|
|
25
|
-
* server emits `{type:"ping"}` every ~15s of channel idle, so anything
|
|
26
|
-
* larger than ~30s leaves comfortable headroom. Default 60_000.
|
|
27
|
-
*/
|
|
28
|
-
serverInactivityMs?: number;
|
|
29
|
-
}
|
|
30
|
-
export interface SendThrottleOptions {
|
|
31
|
-
/** Yield the event loop every N `call()` invocations. 0 disables. Default 100. */
|
|
32
|
-
everyN?: number;
|
|
33
|
-
/** Length of the yield in ms. Default 10. */
|
|
34
|
-
delayMs?: number;
|
|
35
|
-
}
|
|
36
|
-
export interface WSClientOptions {
|
|
37
|
-
/** WebSocket URL (e.g. ws://localhost:3000/ws) */
|
|
38
|
-
url: string;
|
|
39
|
-
/** Auth token to send after connection */
|
|
40
|
-
token?: () => Promise<string | undefined>;
|
|
41
|
-
/** Optional: reconnection timeout in ms (default: 180000 = 3 minutes) */
|
|
42
|
-
reconnectionTimeout?: number;
|
|
43
|
-
/** Reconnection options */
|
|
44
|
-
reconnect?: {
|
|
45
|
-
/** Enable automatic reconnection (default: true) */
|
|
46
|
-
enabled?: boolean;
|
|
47
|
-
/** Max reconnection attempts (default: 5) */
|
|
48
|
-
maxAttempts?: number;
|
|
49
|
-
/** Delay between attempts in ms (default: 1000) */
|
|
50
|
-
delay?: number;
|
|
51
|
-
/** Exponential backoff multiplier (default: 1.5) */
|
|
52
|
-
backoff?: number;
|
|
53
|
-
};
|
|
54
|
-
/** Server-inactivity watchdog. See {@link HeartbeatOptions.serverInactivityMs}. */
|
|
55
|
-
heartbeat?: HeartbeatOptions;
|
|
56
|
-
/**
|
|
57
|
-
* Yields the event loop for `delayMs` ms after every `everyN`
|
|
58
|
-
* `call()` invocations. Useful for keeping React renders / GC tasks
|
|
59
|
-
* scheduled during long synchronous bursts of mutations/actions; the
|
|
60
|
-
* heartbeat does not depend on this (the server drives it).
|
|
61
|
-
* Default `{ everyN: 100, delayMs: 10 }`. Set `everyN: 0` to disable.
|
|
62
|
-
*/
|
|
63
|
-
throttle?: SendThrottleOptions;
|
|
64
|
-
/** Called when connection is established */
|
|
65
|
-
onConnect?: () => void;
|
|
66
|
-
/** Called when connection is lost */
|
|
67
|
-
onDisconnect?: () => void;
|
|
68
|
-
/** Called on connection error */
|
|
69
|
-
onError?: (error: Error) => void;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Public state of the client, surfaced to consumers (React provider, etc.).
|
|
73
|
-
* - "connecting" — initial connect or reconnect handshake in flight
|
|
74
|
-
* - "authenticating" — connected, waiting for auth result
|
|
75
|
-
* - "ready" — connected and auth resolved (authenticated, anonymous, or
|
|
76
|
-
* explicitly failed — i.e. ready to send calls)
|
|
77
|
-
* - "disconnected" — currently offline (may auto-retry)
|
|
78
|
-
*/
|
|
79
|
-
export type ClientPublicState = "disconnected" | "connecting" | "authenticating" | "ready";
|
|
80
|
-
export declare class WsClientManager {
|
|
81
|
-
private ws;
|
|
82
|
-
private options;
|
|
83
|
-
private lastSuccessfulConnectionTime;
|
|
84
|
-
private reconnectionTimeout;
|
|
85
|
-
private requestId;
|
|
86
|
-
private pendingRequests;
|
|
87
|
-
/**
|
|
88
|
-
* Single source of truth for live subscriptions.
|
|
89
|
-
*
|
|
90
|
-
* Keying:
|
|
91
|
-
* - In-flight subscribe (no subId yet): `_pending:<requestId>`.
|
|
92
|
-
* - Established: the server-returned canonical `subId`.
|
|
93
|
-
*
|
|
94
|
-
* Routing `sub:update` / `sub:gone` is O(1) (`get(subId)`). Subscribe-time
|
|
95
|
-
* dedup scans `values()` for a matching `localKey` (O(N)), which is cheap
|
|
96
|
-
* since subscribes happen on component mounts, not in the hot path.
|
|
97
|
-
*/
|
|
98
|
-
private subscriptions;
|
|
99
|
-
private queuedCalls;
|
|
100
|
-
private reconnectAttempts;
|
|
101
|
-
private reconnectTimer;
|
|
102
|
-
private connectionState;
|
|
103
|
-
private authState;
|
|
104
|
-
/**
|
|
105
|
-
* Authenticated user id from `auth:success`. Distinct from `queryIdentity`
|
|
106
|
-
* (server-side cache/sub segmentation key); this is just "who am I logged
|
|
107
|
-
* in as" for app display purposes. Null while unauthenticated / anonymous.
|
|
108
|
-
*/
|
|
109
|
-
private authUserId;
|
|
110
|
-
private explicitlyClosed;
|
|
111
|
-
private stateListeners;
|
|
112
|
-
private lastPublicState;
|
|
113
|
-
private serverInactivityMs;
|
|
114
|
-
private lastServerMessageAt;
|
|
115
|
-
private inactivityTimer;
|
|
116
|
-
private pendingConnectResolve;
|
|
117
|
-
private pendingConnectReject;
|
|
118
|
-
private throttleEveryN;
|
|
119
|
-
private throttleDelayMs;
|
|
120
|
-
private throttleCounter;
|
|
121
|
-
private throttling;
|
|
122
|
-
private visibilityListener;
|
|
123
|
-
private onlineListener;
|
|
124
|
-
constructor(options: WSClientOptions);
|
|
125
|
-
/**
|
|
126
|
-
* Subscribe to client state transitions. Returns an unsubscribe fn.
|
|
127
|
-
* The listener is called immediately with the current state.
|
|
128
|
-
*/
|
|
129
|
-
onState(listener: (s: ClientPublicState) => void): () => void;
|
|
130
|
-
/** Current public state. */
|
|
131
|
-
getPublicState(): ClientPublicState;
|
|
132
|
-
/**
|
|
133
|
-
* Connect to the WebSocket server.
|
|
134
|
-
* Returns a promise that resolves when connected and authenticated.
|
|
135
|
-
*/
|
|
136
|
-
connect(): Promise<void>;
|
|
137
|
-
/**
|
|
138
|
-
* Disconnect from the server.
|
|
139
|
-
*/
|
|
140
|
-
disconnect(): void;
|
|
141
|
-
/**
|
|
142
|
-
* Check if connected and authenticated.
|
|
143
|
-
*/
|
|
144
|
-
isReady(): boolean;
|
|
145
|
-
/**
|
|
146
|
-
* Check if authenticated.
|
|
147
|
-
*/
|
|
148
|
-
isAuthenticated(): boolean;
|
|
149
|
-
/**
|
|
150
|
-
* Check if anonymouse.
|
|
151
|
-
*/
|
|
152
|
-
isAnonymouse(): boolean;
|
|
153
|
-
/**
|
|
154
|
-
* The authenticated user's id (from `auth:success`), or null when
|
|
155
|
-
* unauthenticated / anonymous. Useful for "Logged in as …" display.
|
|
156
|
-
*
|
|
157
|
-
* Not to be confused with server-side `queryIdentity`, which is the
|
|
158
|
-
* cache/subscription segmentation key (resolved entirely on the server).
|
|
159
|
-
*/
|
|
160
|
-
getAuthUserId(): string | null;
|
|
161
|
-
/**
|
|
162
|
-
* Call a procedure (query, mutation, or action).
|
|
163
|
-
*
|
|
164
|
-
* If the client is not ready (disconnected or still authenticating), the
|
|
165
|
-
* call is FIFO-queued and dispatched on the next ready state. The promise
|
|
166
|
-
* still resolves with the eventual server response.
|
|
167
|
-
*
|
|
168
|
-
* Pass `onSend` to be notified when the call actually leaves the queue
|
|
169
|
-
* (used by `useMutation` to flip `state` from "queued" → "loading").
|
|
170
|
-
*/
|
|
171
|
-
call(procedure: string, input: unknown, options?: {
|
|
172
|
-
onSend?: () => void;
|
|
173
|
-
}): Promise<unknown>;
|
|
174
|
-
/**
|
|
175
|
-
* Throttle drain loop. Each iteration: sleep `throttleDelayMs`, then
|
|
176
|
-
* dispatch up to `throttleEveryN` queued items. Exits as soon as the
|
|
177
|
-
* queue drains inside a single batch (burst over, back to direct
|
|
178
|
-
* dispatch on the next `call()`) or the connection goes away
|
|
179
|
-
* (reconnect path will restart us via `flushQueuedCalls`).
|
|
180
|
-
*/
|
|
181
|
-
private runThrottleLoop;
|
|
182
|
-
/**
|
|
183
|
-
* Issue the call against an established connection. Caller must ensure
|
|
184
|
-
* `isReady()` before invoking.
|
|
185
|
-
*/
|
|
186
|
-
private dispatchCall;
|
|
187
|
-
/**
|
|
188
|
-
* Flush queued calls in FIFO order. Called once `isReady()` becomes
|
|
189
|
-
* true. With the throttle enabled, dispatch the first batch
|
|
190
|
-
* synchronously then hand off to the drain loop so a large
|
|
191
|
-
* post-reconnect flush respects backpressure instead of dumping 10k
|
|
192
|
-
* frames in one tick.
|
|
193
|
-
*/
|
|
194
|
-
private flushQueuedCalls;
|
|
195
|
-
/**
|
|
196
|
-
* Re-send `subscribe` for every existing subscription. The subId for each
|
|
197
|
-
* may legitimately change (e.g. `queryIdentity` was a function of user
|
|
198
|
-
* identity and the user changed during the disconnect), so we re-key the
|
|
199
|
-
* unified `subscriptions` Map: snapshot every record, drop them from the
|
|
200
|
-
* Map, then reinsert under a fresh `_pending:<reqId>` key. Each pending
|
|
201
|
-
* request's `resolve` rekeys the parked record under the new server-issued
|
|
202
|
-
* subId so subsequent `sub:update` frames route to the existing
|
|
203
|
-
* `onUpdate` callback (which the React handle is still holding).
|
|
204
|
-
*/
|
|
205
|
-
private resubscribeAll;
|
|
206
|
-
/**
|
|
207
|
-
* Subscribe to a live query.
|
|
208
|
-
*
|
|
209
|
-
* The client does not compute the subId locally — it sends the
|
|
210
|
-
* (procedure, input) pair and receives the canonical subId on the
|
|
211
|
-
* subscribe response. This lets the server's per-procedure
|
|
212
|
-
* `queryIdentity` override be authoritative without forcing the client
|
|
213
|
-
* to mirror any of the resolution logic.
|
|
214
|
-
*
|
|
215
|
-
* Returns the server-assigned subId and an unsubscribe function.
|
|
216
|
-
*/
|
|
217
|
-
subscribe(procedure: string, input: unknown, serializedInput: string, onUpdate: (data: unknown) => void, onGone?: (reason: string | undefined) => void): Promise<{
|
|
218
|
-
subId: string;
|
|
219
|
-
unsubscribe: () => void;
|
|
220
|
-
}>;
|
|
221
|
-
private findSubByLocalKey;
|
|
222
|
-
/** Resolve every joiner waiting on this Subscription with the canonical subId. */
|
|
223
|
-
private resolveJoiners;
|
|
224
|
-
/** Reject every joiner waiting on this Subscription with the given error. */
|
|
225
|
-
private rejectJoiners;
|
|
226
|
-
private unsubscribeByLocalKey;
|
|
227
|
-
private handleMessage;
|
|
228
|
-
/**
|
|
229
|
-
* Called once the client transitions to a "ready" state on a fresh
|
|
230
|
-
* connection. Replays live-query subscriptions and flushes any queued
|
|
231
|
-
* calls in FIFO order.
|
|
232
|
-
*/
|
|
233
|
-
private afterReady;
|
|
234
|
-
private handleResponse;
|
|
235
|
-
private handleSubscriptionUpdate;
|
|
236
|
-
/**
|
|
237
|
-
* Handles a `sub:gone` message: the server no longer tracks this
|
|
238
|
-
* subscription (e.g. it was fully unregistered while we were disconnected
|
|
239
|
-
* from the sub-manager). Notify the handle and drop the local entry so a
|
|
240
|
-
* re-subscribe is required to receive further updates.
|
|
241
|
-
*/
|
|
242
|
-
private handleSubscriptionGone;
|
|
243
|
-
private handleClose;
|
|
244
|
-
private handleError;
|
|
245
|
-
private startInactivityWatchdog;
|
|
246
|
-
private stopInactivityWatchdog;
|
|
247
|
-
/**
|
|
248
|
-
* Close the current WebSocket and schedule a reconnect via `handleClose`.
|
|
249
|
-
*
|
|
250
|
-
* Atomically swaps the old socket's event handlers to no-ops BEFORE
|
|
251
|
-
* `close()` so a frame in flight at the moment of close cannot fire
|
|
252
|
-
* `handleMessage` into a half-cleaned state — that was the source of
|
|
253
|
-
* the "browser says socket is alive but client says disconnected" race.
|
|
254
|
-
*/
|
|
255
|
-
private closeAndReconnect;
|
|
256
|
-
private installEnvironmentListeners;
|
|
257
|
-
private removeEnvironmentListeners;
|
|
258
|
-
private scheduleReconnect;
|
|
259
|
-
private computePublicState;
|
|
260
|
-
private emitState;
|
|
261
|
-
private ensureConnected;
|
|
262
|
-
private send;
|
|
263
|
-
private cleanup;
|
|
264
|
-
private generateRequestId;
|
|
265
|
-
}
|
|
266
|
-
declare function getWebSocket(): Promise<WSConstructor>;
|
|
267
|
-
export { getWebSocket };
|
|
268
|
-
//# sourceMappingURL=ws_client_manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ws_client_manager.d.ts","sourceRoot":"","sources":["../../../src/client/ws_client_manager.ts"],"names":[],"mappings":"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"}
|