@rocicorp/zero 1.11.0-canary.1 → 1.11.0-canary.3
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/replicache/src/btree/read.d.ts +12 -1
- package/out/replicache/src/btree/read.d.ts.map +1 -1
- package/out/replicache/src/btree/read.js +24 -12
- package/out/replicache/src/btree/read.js.map +1 -1
- package/out/replicache/src/db/write.js.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.js +10 -0
- package/out/replicache/src/replicache-impl.js.map +1 -1
- package/out/replicache/src/transactions.d.ts.map +1 -1
- package/out/replicache/src/transactions.js +1 -1
- package/out/replicache/src/transactions.js.map +1 -1
- package/out/zero/package.js +1 -1
- package/out/zero/package.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +2 -0
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +12 -4
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +1 -1
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.js +2 -39
- package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +6 -6
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.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 +3 -1
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/litestream/config-v5.yml +3 -4
- package/out/zero-cache/src/services/replicator/change-log-db.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +22 -5
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +4 -4
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.js +2 -2
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker.js +10 -4
- package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +75 -27
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/streams.d.ts +6 -6
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js +6 -11
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +15 -0
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/context.js +44 -0
- package/out/zero-client/src/client/context.js.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js +2 -2
- package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
- package/out/zero-client/src/client/ivm-branch.js.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-rep.js +2 -1
- package/out/zero-client/src/client/zero-rep.js.map +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +48 -11
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +29 -29
- package/out/zero-protocol/src/inspect-down.d.ts +81 -81
- package/out/zero-protocol/src/poke.d.ts +6 -6
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-query.js +24 -5
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-solid/src/use-query.js +4 -1
- package/out/zero-solid/src/use-query.js.map +1 -1
- package/out/zql/src/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/ivm/array-view.js +5 -3
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/deferred-input.d.ts +44 -0
- package/out/zql/src/ivm/deferred-input.d.ts.map +1 -0
- package/out/zql/src/ivm/deferred-input.js +88 -0
- package/out/zql/src/ivm/deferred-input.js.map +1 -0
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +5 -10
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.d.ts +6 -0
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +73 -10
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zql/src/query/query-delegate.d.ts +22 -0
- package/out/zql/src/query/query-delegate.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +12 -11
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +383 -60
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-transitions.d.ts +171 -0
- package/out/zql/src/query/query-transitions.d.ts.map +1 -0
- package/out/zql/src/query/query-transitions.js +207 -0
- package/out/zql/src/query/query-transitions.js.map +1 -0
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.js +21 -1
- package/out/zql/src/query/runnable-query-impl.js.map +1 -1
- package/package.json +1 -1
|
@@ -90,6 +90,11 @@ var DEFAULT_DISCONNECT_TIMEOUT_MS = 60 * 1e3;
|
|
|
90
90
|
* consider it timed out.
|
|
91
91
|
*/
|
|
92
92
|
var CONNECT_TIMEOUT_MS = 1e4;
|
|
93
|
+
/**
|
|
94
|
+
* Setting up active-client tracking blocks the first connect attempt. Above
|
|
95
|
+
* this, say so.
|
|
96
|
+
*/
|
|
97
|
+
var SLOW_ACTIVE_CLIENTS_THRESHOLD_MS = 50;
|
|
93
98
|
var CHECK_CONNECTIVITY_ON_ERROR_FREQUENCY = 6;
|
|
94
99
|
var DEFAULT_QUERY_CHANGE_THROTTLE_MS = 10;
|
|
95
100
|
function convertOnUpdateNeededReason(reason) {
|
|
@@ -302,6 +307,7 @@ var Zero = class Zero {
|
|
|
302
307
|
}, (ast, customQueryID, ttl, gotCallback) => this.#queryManager.addCustom(ast, customQueryID, ttl, gotCallback), (ast, ttl) => {
|
|
303
308
|
if (enableLegacyQueries) this.#queryManager.updateLegacy(ast, ttl);
|
|
304
309
|
}, (customQueryID, ttl) => this.#queryManager.updateCustom(customQueryID, ttl), () => this.#queryManager.flushBatch(), batchViewUpdates, this.#addMetric, assertValidRunOptions);
|
|
310
|
+
this.#zeroContext.deferPipelines();
|
|
305
311
|
this.query = createRunnableBuilder(this.#zeroContext, schema);
|
|
306
312
|
const rep = new ReplicacheImpl(replicacheOptions, {
|
|
307
313
|
enableClientGroupForking: false,
|
|
@@ -321,7 +327,7 @@ var Zero = class Zero {
|
|
|
321
327
|
this.#activeClientsManager = makeActiveClientsManager(rep.clientGroupID, this.clientID, this.#closeAbortController.signal, (clientID, clientGroupID) => this.#deleteClientsManager.onClientsDeleted([{
|
|
322
328
|
clientGroupID,
|
|
323
329
|
clientID
|
|
324
|
-
}]));
|
|
330
|
+
}]), this.#lc);
|
|
325
331
|
const onUpdateNeededCallback = (reason) => {
|
|
326
332
|
if (onUpdateNeeded) onUpdateNeeded(reason);
|
|
327
333
|
else reloadWithReason(this.#lc, this.#reload, reason.type, updateNeededReloadReasonMessage(reason));
|
|
@@ -933,11 +939,42 @@ var Zero = class Zero {
|
|
|
933
939
|
this.#socketResolver.resolve(ws);
|
|
934
940
|
this.#addConnectEvent(lc, attempt, "waiting for the server acknowledgement");
|
|
935
941
|
lc.debug?.("Waiting for connection to be acknowledged");
|
|
942
|
+
attempt.clearTimeout?.();
|
|
943
|
+
attempt.clearTimeout = this.#armConnectTimeout(lc, attempt, "ack");
|
|
936
944
|
await attempt.connected.promise;
|
|
937
945
|
if (signal.aborted) throw signal.reason;
|
|
938
946
|
this.#mutationTracker.onConnected(this.#lastMutationIDReceived);
|
|
939
947
|
this.#rep.push().catch(() => {});
|
|
940
948
|
}
|
|
949
|
+
/**
|
|
950
|
+
* Starts the deadline for one phase of a connection attempt, and returns a
|
|
951
|
+
* function that cancels it.
|
|
952
|
+
*
|
|
953
|
+
* The two phases are measured separately because they fail for unrelated
|
|
954
|
+
* reasons. `setup` covers local work — reading the cookie, the client group
|
|
955
|
+
* ID and the active clients from IDB, then preparing and opening the socket
|
|
956
|
+
* — whose duration says nothing about whether the server is reachable.
|
|
957
|
+
* `ack` covers the wait for the server's response. Running them on one
|
|
958
|
+
* budget meant a slow cold boot spent the server's time before the socket
|
|
959
|
+
* existed, and reported a healthy server as unreachable.
|
|
960
|
+
*/
|
|
961
|
+
#armConnectTimeout(lc, attempt, phase) {
|
|
962
|
+
const { signal } = attempt.controller;
|
|
963
|
+
if (signal.aborted) return () => {};
|
|
964
|
+
const timeoutID = setTimeout(() => {
|
|
965
|
+
lc.debug?.("Connection attempt timed out");
|
|
966
|
+
this.#disconnect(lc, new ClientError({
|
|
967
|
+
kind: ConnectTimeout,
|
|
968
|
+
message: (phase === "setup" ? `Connection setup timed out after ${CONNECT_TIMEOUT_MS / 1e3} seconds. ` : `Server did not acknowledge the connection within ${CONNECT_TIMEOUT_MS / 1e3} seconds. `) + `Connect events: ${JSON.stringify(attempt.events)}`
|
|
969
|
+
}));
|
|
970
|
+
}, CONNECT_TIMEOUT_MS);
|
|
971
|
+
const clear = () => {
|
|
972
|
+
clearTimeout(timeoutID);
|
|
973
|
+
signal.removeEventListener("abort", clear);
|
|
974
|
+
};
|
|
975
|
+
signal.addEventListener("abort", clear, { once: true });
|
|
976
|
+
return clear;
|
|
977
|
+
}
|
|
941
978
|
#addConnectEvent(lc, attempt, event) {
|
|
942
979
|
attempt.events.push([/* @__PURE__ */ new Date(), event]);
|
|
943
980
|
lc.debug?.("Connect event", event);
|
|
@@ -1146,16 +1183,10 @@ var Zero = class Zero {
|
|
|
1146
1183
|
};
|
|
1147
1184
|
this.#currentConnectAttempt = attempt;
|
|
1148
1185
|
this.#addConnectEvent(lc, attempt, "starting the connection");
|
|
1186
|
+
attempt.clearTimeout = this.#armConnectTimeout(lc, attempt, "setup");
|
|
1149
1187
|
const canceled = resolver();
|
|
1150
1188
|
const abortHandler = () => canceled.reject(attempt.controller.signal.reason);
|
|
1151
1189
|
attempt.controller.signal.addEventListener("abort", abortHandler, { once: true });
|
|
1152
|
-
const timeoutID = setTimeout(() => {
|
|
1153
|
-
lc.debug?.("Connection attempt timed out");
|
|
1154
|
-
this.#disconnect(lc, new ClientError({
|
|
1155
|
-
kind: ConnectTimeout,
|
|
1156
|
-
message: `Connection attempt timed out after ${CONNECT_TIMEOUT_MS / 1e3} seconds. Connect events: ${JSON.stringify(attempt.events)}`
|
|
1157
|
-
}));
|
|
1158
|
-
}, CONNECT_TIMEOUT_MS);
|
|
1159
1190
|
try {
|
|
1160
1191
|
try {
|
|
1161
1192
|
await Promise.race([this.#connectAttempt(lc, additionalConnectParams, attempt), canceled.promise]);
|
|
@@ -1172,7 +1203,7 @@ var Zero = class Zero {
|
|
|
1172
1203
|
ready.resolve();
|
|
1173
1204
|
additionalConnectParams = void 0;
|
|
1174
1205
|
} finally {
|
|
1175
|
-
clearTimeout(
|
|
1206
|
+
attempt.clearTimeout?.();
|
|
1176
1207
|
attempt.controller.signal.removeEventListener("abort", abortHandler);
|
|
1177
1208
|
if (this.#currentConnectAttempt === attempt) this.#currentConnectAttempt = void 0;
|
|
1178
1209
|
}
|
|
@@ -1549,8 +1580,14 @@ function addWebSocketIDToLogContext(wsid, lc) {
|
|
|
1549
1580
|
return lc.withContext("wsid", wsid);
|
|
1550
1581
|
}
|
|
1551
1582
|
function assertValidRunOptions(_options) {}
|
|
1552
|
-
async function makeActiveClientsManager(clientGroupID, clientID, signal, onDelete) {
|
|
1553
|
-
const
|
|
1583
|
+
async function makeActiveClientsManager(clientGroupID, clientID, signal, onDelete, lc) {
|
|
1584
|
+
const groupID = await clientGroupID;
|
|
1585
|
+
const start = performance.now();
|
|
1586
|
+
const manager = await ActiveClientsManager.create(groupID, clientID, signal);
|
|
1587
|
+
const elapsed = performance.now() - start;
|
|
1588
|
+
const locks = getBrowserGlobal("navigator")?.locks ? "native" : "fallback";
|
|
1589
|
+
if (elapsed > SLOW_ACTIVE_CLIENTS_THRESHOLD_MS) lc.warn?.(`Initializing active clients took ${Math.round(elapsed)}ms`, { locks });
|
|
1590
|
+
else lc.debug?.("Initialized active clients in", Math.round(elapsed), "ms", { locks });
|
|
1554
1591
|
manager.onDelete = onDelete;
|
|
1555
1592
|
return manager;
|
|
1556
1593
|
}
|