@rocicorp/zero 1.9.0-canary.0 → 1.9.0-canary.1
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/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +1 -22
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/zero/package.js +1 -1
- package/out/zero/package.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +1 -1
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +12 -26
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/litestream/config.yml +3 -2
- package/out/zero-cache/src/services/replicator/change-processor.js +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero.d.ts +6 -7
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +125 -85
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-server/src/custom.js +8 -2
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/schema.d.ts +8 -0
- package/out/zero-server/src/schema.d.ts.map +1 -1
- package/out/zero-server/src/schema.js +63 -24
- package/out/zero-server/src/schema.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +5 -1
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zqlite/src/resolve-scalar-subqueries.d.ts.map +1 -1
- package/out/zqlite/src/resolve-scalar-subqueries.js +13 -1
- package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
- package/package.json +1 -1
|
@@ -125,9 +125,8 @@ export declare class Zero<const S extends BaseDefaultSchema = DefaultSchema, MD
|
|
|
125
125
|
/**
|
|
126
126
|
* Executes a query once and returns the results.
|
|
127
127
|
*
|
|
128
|
-
* By default,
|
|
129
|
-
*
|
|
130
|
-
* run immediately with whatever data is available locally.
|
|
128
|
+
* By default, runs immediately with whatever data is available locally.
|
|
129
|
+
* Use `{type: 'complete'}` to wait for fresh results from the server.
|
|
131
130
|
*
|
|
132
131
|
* @param query - The query to execute
|
|
133
132
|
* @param runOptions - Options controlling query execution
|
|
@@ -135,11 +134,11 @@ export declare class Zero<const S extends BaseDefaultSchema = DefaultSchema, MD
|
|
|
135
134
|
*
|
|
136
135
|
* @example
|
|
137
136
|
* ```ts
|
|
138
|
-
* //
|
|
137
|
+
* // Run with local data only
|
|
139
138
|
* const users = await zero.run(userQuery);
|
|
140
139
|
*
|
|
141
|
-
* //
|
|
142
|
-
* const
|
|
140
|
+
* // Wait for server sync
|
|
141
|
+
* const freshUsers = await zero.run(userQuery, {type: 'complete'});
|
|
143
142
|
* ```
|
|
144
143
|
*/
|
|
145
144
|
run<TTable extends keyof S['tables'] & string, TInput extends ReadonlyJSONValue | undefined, TOutput extends ReadonlyJSONValue | undefined, TReturn>(query: QueryOrQueryRequest<TTable, TInput, TOutput, S, TReturn, C>, runOptions?: RunOptions): Promise<HumanReadable<TReturn>>;
|
|
@@ -322,7 +321,7 @@ export declare class OnlineManager extends Subscribable<boolean> {
|
|
|
322
321
|
setOnline(online: boolean): void;
|
|
323
322
|
get online(): boolean;
|
|
324
323
|
}
|
|
325
|
-
export declare function createSocket(rep: ReplicacheImpl, queryManager: QueryManager, deleteClientsManager: DeleteClientsManager, socketOrigin: WSString, baseCookie: NullableVersion, clientID: string, clientGroupID: string, clientSchema: ClientSchema, userID: string | undefined, auth: string | undefined, lmid: number, wsid: string, debugPerf: boolean, lc: LogContext, userPushURL: string | undefined, userPushHeaders: Record<string, string> | undefined, userQueryURL: string | undefined, userQueryHeaders: Record<string, string> | undefined, additionalConnectParams: Record<string, string> | undefined, activeClientsManager: Pick<ActiveClientsManager, 'activeClients'>, maxHeaderLength?: number): Promise<[
|
|
324
|
+
export declare function createSocket(rep: ReplicacheImpl, queryManager: QueryManager, deleteClientsManager: DeleteClientsManager, socketOrigin: WSString, baseCookie: NullableVersion, clientID: string, clientGroupID: string, clientSchema: ClientSchema, userID: string | undefined, auth: string | undefined, lmid: number, wsid: string, debugPerf: boolean, lc: LogContext, userPushURL: string | undefined, userPushHeaders: Record<string, string> | undefined, userQueryURL: string | undefined, userQueryHeaders: Record<string, string> | undefined, additionalConnectParams: Record<string, string> | undefined, activeClientsManager: Pick<ActiveClientsManager, 'activeClients'>, maxHeaderLength?: number, onEvent?: (event: string) => void): Promise<[
|
|
326
325
|
WebSocket,
|
|
327
326
|
Map<string, UpQueriesPatchOp> | undefined,
|
|
328
327
|
DeleteClientsBody | undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/zero.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAA8B,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAC,KAAK,QAAQ,EAAW,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EACL,cAAc,EAEf,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAC,MAAM,EAAe,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAC,MAAM,EAAe,MAAM,mCAAmC,CAAC;AAE5E,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACT,MAAM,qCAAqC,CAAC;AAG7C,OAAO,KAAK,EACV,WAAW,EAEZ,MAAM,kCAAkC,CAAC;AAU1C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAMnE,OAAO,EAAC,YAAY,EAAC,MAAM,qCAAqC,CAAC;AAIjE,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,6CAA6C,CAAC;AAG9E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,8CAA8C,CAAC;AA8BpF,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,6CAA6C,CAAC;AAElF,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,uCAAuC,CAAC;AAO3E,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAK9D,OAAO,KAAK,EAEV,aAAa,EACd,MAAM,oCAAoC,CAAC;AAO5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,wCAAwC,CAAC;AACnF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAEjE,OAAO,EACL,iBAAiB,EAGlB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAC,KAAK,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,aAAa,CAAC;AAClE,OAAO,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"zero.d.ts","sourceRoot":"","sources":["../../../../../zero-client/src/client/zero.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,7 @@ import { isClientMetric } from "../../../zql/src/query/metrics-delegate.js";
|
|
|
37
37
|
import { nanoid } from "../util/nanoid.js";
|
|
38
38
|
import { ActiveClientsManager } from "./active-clients-manager.js";
|
|
39
39
|
import { AbruptClose, CleanClose, ClientClosed, ConnectTimeout, Hidden, Internal, InvalidMessage as InvalidMessage$1, NoSocketOrigin, PingTimeout, PullTimeout, UnexpectedBaseCookie } from "./client-error-kind-enum.js";
|
|
40
|
-
import { ClientError, NO_STATUS_TRANSITION, getBackoffParams, getErrorConnectionTransition, isAuthError, isClientError, isServerError } from "./error.js";
|
|
40
|
+
import { ClientError, NO_STATUS_TRANSITION, getBackoffParams, getErrorConnectionTransition, isAuthError, isClientError, isServerError, isZeroError } from "./error.js";
|
|
41
41
|
import { ConnectionManager, throwIfConnectionError } from "./connection-manager.js";
|
|
42
42
|
import { ConnectionImpl } from "./connection.js";
|
|
43
43
|
import { IVMSourceBranch } from "./ivm-branch.js";
|
|
@@ -61,6 +61,11 @@ import { PokeHandler } from "./zero-poke-handler.js";
|
|
|
61
61
|
import { ZeroRep, fromReplicacheAuthToken, toReplicacheAuthToken } from "./zero-rep.js";
|
|
62
62
|
import { resolver } from "@rocicorp/resolver";
|
|
63
63
|
import { LogContext } from "@rocicorp/logger";
|
|
64
|
+
function connectionReadyResolver() {
|
|
65
|
+
const ready = resolver();
|
|
66
|
+
ready.promise.catch(() => {});
|
|
67
|
+
return ready;
|
|
68
|
+
}
|
|
64
69
|
var RUN_LOOP_INTERVAL_MS = 5e3;
|
|
65
70
|
/**
|
|
66
71
|
* Default timeout for ping operations. Controls both:
|
|
@@ -178,12 +183,8 @@ var Zero = class Zero {
|
|
|
178
183
|
#lastMutationIDReceived = 0;
|
|
179
184
|
#socket = void 0;
|
|
180
185
|
#socketResolver = resolver();
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
* It rejects if we hit an error or timeout before the connected message.
|
|
184
|
-
* Used by push/pull helpers to queue work until the connection is usable.
|
|
185
|
-
*/
|
|
186
|
-
#connectResolver = resolver();
|
|
186
|
+
#connectionReadyResolver = connectionReadyResolver();
|
|
187
|
+
#currentConnectAttempt;
|
|
187
188
|
#closeAbortController = new AbortController();
|
|
188
189
|
#visibilityWatcher;
|
|
189
190
|
#connectionManager;
|
|
@@ -427,9 +428,8 @@ var Zero = class Zero {
|
|
|
427
428
|
/**
|
|
428
429
|
* Executes a query once and returns the results.
|
|
429
430
|
*
|
|
430
|
-
* By default,
|
|
431
|
-
*
|
|
432
|
-
* run immediately with whatever data is available locally.
|
|
431
|
+
* By default, runs immediately with whatever data is available locally.
|
|
432
|
+
* Use `{type: 'complete'}` to wait for fresh results from the server.
|
|
433
433
|
*
|
|
434
434
|
* @param query - The query to execute
|
|
435
435
|
* @param runOptions - Options controlling query execution
|
|
@@ -437,11 +437,11 @@ var Zero = class Zero {
|
|
|
437
437
|
*
|
|
438
438
|
* @example
|
|
439
439
|
* ```ts
|
|
440
|
-
* //
|
|
440
|
+
* // Run with local data only
|
|
441
441
|
* const users = await zero.run(userQuery);
|
|
442
442
|
*
|
|
443
|
-
* //
|
|
444
|
-
* const
|
|
443
|
+
* // Wait for server sync
|
|
444
|
+
* const freshUsers = await zero.run(userQuery, {type: 'complete'});
|
|
445
445
|
* ```
|
|
446
446
|
*/
|
|
447
447
|
run(query, runOptions) {
|
|
@@ -713,7 +713,6 @@ var Zero = class Zero {
|
|
|
713
713
|
kind: InvalidMessage$1,
|
|
714
714
|
message: "A WebSocket message exceeded the server message size limit. This is usually caused by a mutation's args containing a large value such as a base64-encoded image. Consider uploading large files to object storage and storing only the URL in Zero." + (this.#recentSentMessages.length > 0 ? "\nRecent sent messages:\n" + JSON.stringify(this.#recentSentMessages, null, 2) : "")
|
|
715
715
|
});
|
|
716
|
-
this.#connectResolver.reject(messageTooLargeError);
|
|
717
716
|
this.#disconnect(lc, messageTooLargeError);
|
|
718
717
|
await this.#rep.disableClientGroup();
|
|
719
718
|
this.#onClientStateNotFound(InvalidMessage, messageTooLargeError.message);
|
|
@@ -725,7 +724,6 @@ var Zero = class Zero {
|
|
|
725
724
|
kind: AbruptClose,
|
|
726
725
|
message: "WebSocket connection closed abruptly"
|
|
727
726
|
});
|
|
728
|
-
this.#connectResolver.reject(closeError);
|
|
729
727
|
this.#disconnect(lc, closeError);
|
|
730
728
|
}
|
|
731
729
|
} catch (e) {
|
|
@@ -734,7 +732,6 @@ var Zero = class Zero {
|
|
|
734
732
|
kind: Internal,
|
|
735
733
|
message: getErrorMessage(e)
|
|
736
734
|
}, { cause: e });
|
|
737
|
-
this.#connectResolver.reject(internalError);
|
|
738
735
|
this.#disconnect(lc, internalError);
|
|
739
736
|
}
|
|
740
737
|
};
|
|
@@ -748,8 +745,6 @@ var Zero = class Zero {
|
|
|
748
745
|
lc.info?.(`${kind}: ${message}}`);
|
|
749
746
|
const error = new ProtocolError(downMessage[1]);
|
|
750
747
|
lc.error?.(`${error.kind}:\n\n${error.errorBody.message}`, error);
|
|
751
|
-
lc.debug?.("Rejecting connect resolver due to error", error);
|
|
752
|
-
this.#connectResolver.reject(error);
|
|
753
748
|
this.#disconnect(lc, error);
|
|
754
749
|
if (kind === "VersionNotSupported") this.#onUpdateNeeded({
|
|
755
750
|
type: kind,
|
|
@@ -770,9 +765,11 @@ var Zero = class Zero {
|
|
|
770
765
|
}
|
|
771
766
|
}
|
|
772
767
|
async #handleConnectedMessage(lc, connectedMessage) {
|
|
768
|
+
const attempt = must(this.#currentConnectAttempt, "Connected message received without an active connection attempt");
|
|
773
769
|
const now = Date.now();
|
|
774
770
|
const [, connectBody] = connectedMessage;
|
|
775
771
|
lc = addWebSocketIDToLogContext(connectBody.wsid, lc);
|
|
772
|
+
this.#addConnectEvent(lc, attempt, "processing the server acknowledgement");
|
|
776
773
|
if (this.#connectedCount === 0) this.#checkConnectivity("firstConnect");
|
|
777
774
|
else if (this.#connectErrorCount > 0) this.#checkConnectivity("connectAfterError");
|
|
778
775
|
this.#connectedCount++;
|
|
@@ -838,29 +835,26 @@ var Zero = class Zero {
|
|
|
838
835
|
this.#initConnectionQueries = void 0;
|
|
839
836
|
maybeSendDeletedClients();
|
|
840
837
|
this.#connectionManager.connected();
|
|
841
|
-
|
|
838
|
+
attempt.connected.resolve();
|
|
842
839
|
}
|
|
843
840
|
/**
|
|
844
841
|
* Starts a new connection. This will create the WebSocket that does the HTTP
|
|
845
842
|
* request to the server.
|
|
846
843
|
*
|
|
847
|
-
* {@link #
|
|
844
|
+
* {@link #connectAttempt} will throw an assertion error if the
|
|
848
845
|
* {@link #connectionManager} status is not {@link ConnectionManagerState.Disconnected}
|
|
849
846
|
* or {@link ConnectionManagerState.Connecting}.
|
|
850
847
|
* Callers MUST check the connection status before calling this method and log
|
|
851
848
|
* an error as needed.
|
|
852
849
|
*
|
|
853
|
-
* The
|
|
854
|
-
*
|
|
855
|
-
* {@link ConnectedMessage}, you should await the {@link #connectResolver}
|
|
856
|
-
* promise. The {@link #connectResolver} promise rejects if an error message
|
|
857
|
-
* is received before the connected message is received or if the connection
|
|
858
|
-
* attempt times out.
|
|
850
|
+
* The returned promise resolves after receiving the {@link ConnectedMessage}
|
|
851
|
+
* and rejects if setup, the socket, or the connection handshake fails.
|
|
859
852
|
*/
|
|
860
|
-
async #
|
|
853
|
+
async #connectAttempt(lc, additionalConnectParams, attempt) {
|
|
861
854
|
if (this.closed) return;
|
|
862
855
|
assert(this.#server, "No server provided");
|
|
863
|
-
|
|
856
|
+
const socketOrigin = toWSString(this.#server);
|
|
857
|
+
assert(this.#connectionManager.is("disconnected") || this.#connectionManager.is("connecting"), "connectAttempt() called from invalid state: " + this.#connectionManager.state.name);
|
|
864
858
|
const wsid = nanoid();
|
|
865
859
|
lc = addWebSocketIDToLogContext(wsid, lc);
|
|
866
860
|
lc.info?.("Connecting...", { navigatorOnline: localNavigator?.onLine });
|
|
@@ -869,24 +863,24 @@ var Zero = class Zero {
|
|
|
869
863
|
const now = Date.now();
|
|
870
864
|
this.#connectStart = now;
|
|
871
865
|
if (this.#totalToConnectStart === void 0) this.#totalToConnectStart = now;
|
|
872
|
-
|
|
873
|
-
this.#
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
866
|
+
const { signal } = attempt.controller;
|
|
867
|
+
this.#addConnectEvent(lc, attempt, "reading the cookie");
|
|
868
|
+
const connectCookie = parse(await this.#rep.cookie, nullableVersionSchema, "passthrough");
|
|
869
|
+
this.#addConnectEvent(lc, attempt, "reading the client group ID");
|
|
870
|
+
const clientGroupID = await this.clientGroupID;
|
|
871
|
+
this.#addConnectEvent(lc, attempt, "initializing active clients");
|
|
872
|
+
const activeClientsManager = await this.#activeClientsManager;
|
|
873
|
+
if (signal.aborted) throw signal.reason;
|
|
874
|
+
const [ws, initConnectionQueries, deletedClients] = await createSocket(this.#rep, this.#queryManager, this.#deleteClientsManager, socketOrigin, connectCookie, this.clientID, clientGroupID, this.#clientSchema, this.userID, fromReplicacheAuthToken(this.#rep.auth), this.#lastMutationIDReceived, wsid, this.#options.logLevel === "debug", lc, this.#options.mutateURL, this.#options.mutateHeaders, this.#options.queryURL ?? this.#options.getQueriesURL, this.#options.queryHeaders, additionalConnectParams, activeClientsManager, this.#options.maxHeaderLength, (event) => this.#addConnectEvent(lc, attempt, event));
|
|
875
|
+
if (signal.aborted) {
|
|
876
|
+
ws.close();
|
|
877
|
+
throw signal.reason;
|
|
878
|
+
}
|
|
879
|
+
if (this.closed) {
|
|
880
|
+
ws.close();
|
|
881
|
+
return;
|
|
882
|
+
}
|
|
883
|
+
this.#connectCookie = connectCookie;
|
|
890
884
|
this.#initConnectionQueries = initConnectionQueries;
|
|
891
885
|
this.#deletedClients = deletedClients;
|
|
892
886
|
ws.addEventListener("message", this.#onMessage);
|
|
@@ -894,17 +888,19 @@ var Zero = class Zero {
|
|
|
894
888
|
ws.addEventListener("close", this.#onClose);
|
|
895
889
|
this.#socket = ws;
|
|
896
890
|
this.#socketResolver.resolve(ws);
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
891
|
+
this.#addConnectEvent(lc, attempt, "waiting for the server acknowledgement");
|
|
892
|
+
lc.debug?.("Waiting for connection to be acknowledged");
|
|
893
|
+
await attempt.connected.promise;
|
|
894
|
+
if (signal.aborted) throw signal.reason;
|
|
895
|
+
this.#mutationTracker.onConnected(this.#lastMutationIDReceived);
|
|
896
|
+
this.#rep.push().catch(() => {});
|
|
897
|
+
}
|
|
898
|
+
#addConnectEvent(lc, attempt, event) {
|
|
899
|
+
attempt.events.push([/* @__PURE__ */ new Date(), event]);
|
|
900
|
+
lc.debug?.("Connect event", event);
|
|
906
901
|
}
|
|
907
902
|
#disconnect(lc, reason, closeCode) {
|
|
903
|
+
this.#currentConnectAttempt?.controller.abort(reason);
|
|
908
904
|
if (shouldReportConnectError(reason)) {
|
|
909
905
|
this.#connectErrorCount++;
|
|
910
906
|
this.#metrics.lastConnectError.set(getLastConnectErrorValue(reason));
|
|
@@ -938,8 +934,6 @@ var Zero = class Zero {
|
|
|
938
934
|
default: unreachable(connectionStatus);
|
|
939
935
|
}
|
|
940
936
|
this.#socketResolver = resolver();
|
|
941
|
-
lc.debug?.("Creating new connect resolver");
|
|
942
|
-
this.#connectResolver = resolver();
|
|
943
937
|
this.#messageCount = 0;
|
|
944
938
|
this.#connectStart = void 0;
|
|
945
939
|
this.#connectedAt = 0;
|
|
@@ -1010,7 +1004,7 @@ var Zero = class Zero {
|
|
|
1010
1004
|
}
|
|
1011
1005
|
async #pusher(req, requestID) {
|
|
1012
1006
|
assert(req.pushVersion === 1, "Expected pushVersion 1");
|
|
1013
|
-
await this.#
|
|
1007
|
+
await this.#connectionReadyResolver.promise;
|
|
1014
1008
|
const lc = this.#lc.withContext("requestID", requestID);
|
|
1015
1009
|
lc.debug?.(`pushing ${req.mutations.length} mutations`);
|
|
1016
1010
|
assert(this.#socket, "Expected socket to be connected for push");
|
|
@@ -1098,8 +1092,45 @@ var Zero = class Zero {
|
|
|
1098
1092
|
break;
|
|
1099
1093
|
}
|
|
1100
1094
|
if (reloadScheduled()) break;
|
|
1101
|
-
|
|
1102
|
-
|
|
1095
|
+
const ready = this.#connectionReadyResolver;
|
|
1096
|
+
assert(this.#currentConnectAttempt === void 0, "Connection attempt already active");
|
|
1097
|
+
const attempt = {
|
|
1098
|
+
controller: new AbortController(),
|
|
1099
|
+
connected: resolver(),
|
|
1100
|
+
events: []
|
|
1101
|
+
};
|
|
1102
|
+
this.#currentConnectAttempt = attempt;
|
|
1103
|
+
this.#addConnectEvent(lc, attempt, "starting the connection");
|
|
1104
|
+
const canceled = resolver();
|
|
1105
|
+
const abortHandler = () => canceled.reject(attempt.controller.signal.reason);
|
|
1106
|
+
attempt.controller.signal.addEventListener("abort", abortHandler, { once: true });
|
|
1107
|
+
const timeoutID = setTimeout(() => {
|
|
1108
|
+
lc.debug?.("Connection attempt timed out");
|
|
1109
|
+
this.#disconnect(lc, new ClientError({
|
|
1110
|
+
kind: ConnectTimeout,
|
|
1111
|
+
message: `Connection attempt timed out after ${CONNECT_TIMEOUT_MS / 1e3} seconds. Connect events: ${JSON.stringify(attempt.events)}`
|
|
1112
|
+
}));
|
|
1113
|
+
}, CONNECT_TIMEOUT_MS);
|
|
1114
|
+
try {
|
|
1115
|
+
try {
|
|
1116
|
+
await Promise.race([this.#connectAttempt(lc, additionalConnectParams, attempt), canceled.promise]);
|
|
1117
|
+
} catch (ex) {
|
|
1118
|
+
const error = isZeroError(ex) ? ex : new ClientError({
|
|
1119
|
+
kind: Internal,
|
|
1120
|
+
message: getErrorMessage(ex)
|
|
1121
|
+
}, { cause: ex });
|
|
1122
|
+
if (!attempt.controller.signal.aborted) this.#disconnect(lc, error);
|
|
1123
|
+
ready.reject(error);
|
|
1124
|
+
if (this.#connectionReadyResolver === ready) this.#connectionReadyResolver = connectionReadyResolver();
|
|
1125
|
+
throw error;
|
|
1126
|
+
}
|
|
1127
|
+
ready.resolve();
|
|
1128
|
+
additionalConnectParams = void 0;
|
|
1129
|
+
} finally {
|
|
1130
|
+
clearTimeout(timeoutID);
|
|
1131
|
+
attempt.controller.signal.removeEventListener("abort", abortHandler);
|
|
1132
|
+
if (this.#currentConnectAttempt === attempt) this.#currentConnectAttempt = void 0;
|
|
1133
|
+
}
|
|
1103
1134
|
throwIfConnectionError(this.#connectionManager.state);
|
|
1104
1135
|
assert(this.#socket, "Expected socket after reconnection");
|
|
1105
1136
|
lc = getLogContext();
|
|
@@ -1107,32 +1138,37 @@ var Zero = class Zero {
|
|
|
1107
1138
|
break;
|
|
1108
1139
|
}
|
|
1109
1140
|
case Connected: {
|
|
1141
|
+
const ready = this.#connectionReadyResolver;
|
|
1110
1142
|
const controller = new AbortController();
|
|
1111
1143
|
this.#abortPingTimeout = () => controller.abort();
|
|
1112
1144
|
const [pingTimeoutPromise, pingTimeoutAborted] = sleepWithAbort(this.pingTimeoutMs, controller.signal);
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1145
|
+
try {
|
|
1146
|
+
const raceResult = await promiseRace({
|
|
1147
|
+
waitForPing: pingTimeoutPromise,
|
|
1148
|
+
waitForPingAborted: pingTimeoutAborted,
|
|
1149
|
+
tabHidden: this.#visibilityWatcher.waitForHidden(),
|
|
1150
|
+
stateChange: this.#connectionManager.waitForStateChange()
|
|
1151
|
+
});
|
|
1152
|
+
switch (raceResult.key) {
|
|
1153
|
+
case "waitForPing":
|
|
1154
|
+
await this.#ping(lc);
|
|
1155
|
+
break;
|
|
1156
|
+
case "waitForPingAborted": break;
|
|
1157
|
+
case "tabHidden": {
|
|
1158
|
+
const hiddenError = new ClientError({
|
|
1159
|
+
kind: Hidden,
|
|
1160
|
+
message: "Connection closed because tab was hidden"
|
|
1161
|
+
});
|
|
1162
|
+
this.#disconnect(lc, hiddenError);
|
|
1163
|
+
break;
|
|
1164
|
+
}
|
|
1165
|
+
case "stateChange":
|
|
1166
|
+
throwIfConnectionError(raceResult.result);
|
|
1167
|
+
break;
|
|
1168
|
+
default: unreachable(raceResult);
|
|
1131
1169
|
}
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
break;
|
|
1135
|
-
default: unreachable(raceResult);
|
|
1170
|
+
} finally {
|
|
1171
|
+
if (!this.#connectionManager.is("connected") && this.#connectionReadyResolver === ready) this.#connectionReadyResolver = connectionReadyResolver();
|
|
1136
1172
|
}
|
|
1137
1173
|
break;
|
|
1138
1174
|
}
|
|
@@ -1213,7 +1249,7 @@ var Zero = class Zero {
|
|
|
1213
1249
|
errorMessage: "",
|
|
1214
1250
|
httpStatusCode: 200
|
|
1215
1251
|
} };
|
|
1216
|
-
await this.#
|
|
1252
|
+
await this.#connectionReadyResolver.promise;
|
|
1217
1253
|
assert(this.#socket, "Expected socket to be connected for mutation recovery pull");
|
|
1218
1254
|
lc.debug?.("Pull is for mutation recovery");
|
|
1219
1255
|
const cookie = parse(req.cookie, nullableVersionSchema, "passthrough");
|
|
@@ -1340,7 +1376,7 @@ var Zero = class Zero {
|
|
|
1340
1376
|
*/
|
|
1341
1377
|
get inspector() {
|
|
1342
1378
|
BUNDLE_SIZE: return this.#inspector ??= new Inspector(this.#rep, this.#queryManager, this.#zeroContext, async () => {
|
|
1343
|
-
await this.#
|
|
1379
|
+
await this.#connectionReadyResolver.promise;
|
|
1344
1380
|
return must(this.#socket);
|
|
1345
1381
|
});
|
|
1346
1382
|
}
|
|
@@ -1388,11 +1424,14 @@ var OnlineManager = class extends Subscribable {
|
|
|
1388
1424
|
return this.#online;
|
|
1389
1425
|
}
|
|
1390
1426
|
};
|
|
1391
|
-
async function createSocket(rep, queryManager, deleteClientsManager, socketOrigin, baseCookie, clientID, clientGroupID, clientSchema, userID, auth, lmid, wsid, debugPerf, lc, userPushURL, userPushHeaders, userQueryURL, userQueryHeaders, additionalConnectParams, activeClientsManager, maxHeaderLength = 1024 * 8) {
|
|
1427
|
+
async function createSocket(rep, queryManager, deleteClientsManager, socketOrigin, baseCookie, clientID, clientGroupID, clientSchema, userID, auth, lmid, wsid, debugPerf, lc, userPushURL, userPushHeaders, userQueryURL, userQueryHeaders, additionalConnectParams, activeClientsManager, maxHeaderLength = 1024 * 8, onEvent) {
|
|
1428
|
+
onEvent?.("reading the profile ID");
|
|
1392
1429
|
const url = await createConnectionURL(socketOrigin, clientID, clientGroupID, userID, baseCookie, lmid, wsid, rep, debugPerf, additionalConnectParams, lc);
|
|
1393
1430
|
const WS = mustGetBrowserGlobal("WebSocket");
|
|
1394
1431
|
const queriesPatchP = rep.query((tx) => queryManager.getQueriesPatch(tx));
|
|
1432
|
+
onEvent?.("reading deleted clients");
|
|
1395
1433
|
let deletedClients = convertDeletedClientsToBody(await deleteClientsManager.getDeletedClients(), clientGroupID);
|
|
1434
|
+
onEvent?.("reading desired queries");
|
|
1396
1435
|
let queriesPatch = await queriesPatchP;
|
|
1397
1436
|
const { activeClients } = activeClientsManager;
|
|
1398
1437
|
let secProtocol = encodeSecProtocols(["initConnection", {
|
|
@@ -1410,6 +1449,7 @@ async function createSocket(rep, queryManager, deleteClientsManager, socketOrigi
|
|
|
1410
1449
|
if (secProtocol.length > maxHeaderLength) lc.warn?.(`Encoded auth token length (${secProtocol.length}) exceeds ZeroOptions.maxHeaderLength (${maxHeaderLength}). This may cause connection failures.`);
|
|
1411
1450
|
queriesPatch = void 0;
|
|
1412
1451
|
} else deletedClients = void 0;
|
|
1452
|
+
onEvent?.("creating the WebSocket");
|
|
1413
1453
|
return [
|
|
1414
1454
|
new WS(url.toString(), secProtocol),
|
|
1415
1455
|
queriesPatch,
|