@rocicorp/zero 1.2.0-canary.0 → 1.2.0-canary.10
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/ast-to-zql/src/format.d.ts.map +1 -1
- package/out/ast-to-zql/src/format.js +6 -6
- package/out/ast-to-zql/src/format.js.map +1 -1
- package/out/shared/src/bigint-json.d.ts.map +1 -1
- package/out/shared/src/bigint-json.js.map +1 -1
- package/out/shared/src/btree-set.d.ts.map +1 -1
- package/out/shared/src/btree-set.js +73 -41
- package/out/shared/src/btree-set.js.map +1 -1
- package/out/z2s/src/sql.d.ts +2 -2
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js +2 -3
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/package.js +6 -6
- package/out/zero/package.js.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts +2 -2
- package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +9 -1
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +21 -3
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js +4 -1
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/db/run-transaction.d.ts.map +1 -1
- package/out/zero-cache/src/db/run-transaction.js +2 -2
- package/out/zero-cache/src/db/run-transaction.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/observability/metrics.d.ts +1 -1
- package/out/zero-cache/src/observability/metrics.d.ts.map +1 -1
- package/out/zero-cache/src/observability/metrics.js.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js +6 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +3 -1
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/logging.d.ts.map +1 -1
- package/out/zero-cache/src/server/logging.js +9 -1
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +28 -1
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/services/change-source/change-source.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/change-source.d.ts.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 +13 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js +4 -4
- package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +65 -22
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js +31 -1
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +4 -4
- 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-service.js +2 -3
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +4 -0
- 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 +9 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/life-cycle.d.ts +1 -0
- package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/services/life-cycle.js +2 -2
- package/out/zero-cache/src/services/life-cycle.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 +5 -5
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +2 -2
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +7 -4
- package/out/zero-cache/src/services/mutagen/pusher.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 +6 -3
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js +6 -3
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +8 -6
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js +13 -7
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +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-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +32 -13
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/pg.d.ts +1 -0
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg.js +20 -9
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/workers/connection.js +2 -2
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts +5 -2
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +10 -6
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-client/src/client/version.js +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js +6 -2
- package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
- package/out/zero-protocol/src/application-error.d.ts +1 -1
- package/out/zero-protocol/src/application-error.d.ts.map +1 -1
- package/out/zero-protocol/src/application-error.js.map +1 -1
- package/out/zero-types/src/name-mapper.d.ts +1 -0
- package/out/zero-types/src/name-mapper.d.ts.map +1 -1
- package/out/zero-types/src/name-mapper.js +3 -0
- package/out/zero-types/src/name-mapper.js.map +1 -1
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +5 -15
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +1 -1
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +2 -2
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +2 -2
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +34 -26
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/query/expression.d.ts +1 -1
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/query.d.ts +1 -2
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zqlite/src/db.d.ts.map +1 -1
- package/out/zqlite/src/db.js +1 -1
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/internal/sql.d.ts +2 -2
- package/out/zqlite/src/internal/sql.d.ts.map +1 -1
- package/out/zqlite/src/internal/sql.js +1 -2
- package/out/zqlite/src/internal/sql.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +7 -11
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +6 -6
- package/out/zql/src/ivm/cap.d.ts +0 -32
- package/out/zql/src/ivm/cap.d.ts.map +0 -1
- package/out/zql/src/ivm/cap.js +0 -226
- package/out/zql/src/ivm/cap.js.map +0 -1
|
@@ -21,8 +21,8 @@ import { ttlClockAsNumber, ttlClockFromNumber } from "./ttl-clock.js";
|
|
|
21
21
|
import { EMPTY_CVR_VERSION, cmpVersions, versionFromString, versionString, versionToCookie } from "./schema/types.js";
|
|
22
22
|
import { ProtocolErrorWithLevel, getLogLevel } from "../../types/error-with-level.js";
|
|
23
23
|
import { ClientHandler, startPoke } from "./client-handler.js";
|
|
24
|
-
import { CVRStore, ClientNotFoundError } from "./cvr-store.js";
|
|
25
24
|
import { tracer } from "./tracer.js";
|
|
25
|
+
import { CVRStore, ClientNotFoundError } from "./cvr-store.js";
|
|
26
26
|
import { CVRConfigDrivenUpdater, CVRQueryDrivenUpdater, nextEvictionTime } from "./cvr.js";
|
|
27
27
|
import { handleInspect } from "./inspect-handler.js";
|
|
28
28
|
import { resolver } from "@rocicorp/resolver";
|
|
@@ -404,7 +404,7 @@ var ViewSyncerService = class {
|
|
|
404
404
|
this.#cvrStore.updateTTLClock(ttlClock, start).then(() => {
|
|
405
405
|
lc.debug?.("Synced ttlClock", rid, `in ${Date.now() - start} ms`);
|
|
406
406
|
}).catch((e) => {
|
|
407
|
-
lc.
|
|
407
|
+
lc.warn?.("failed to update TTL clock", rid, `after ${Date.now() - start} ms`, e);
|
|
408
408
|
});
|
|
409
409
|
}
|
|
410
410
|
async #updateCVRConfig(lc, cvr, clientID, customQueryTransformMode, fn) {
|
|
@@ -432,7 +432,9 @@ var ViewSyncerService = class {
|
|
|
432
432
|
const { clientID, wsID } = ctx;
|
|
433
433
|
const [cmd, body] = msg;
|
|
434
434
|
if (newClient || !this.#clients.has(clientID)) this.#lastConnectTime = Date.now();
|
|
435
|
-
return startAsyncSpan(tracer, `vs.#runInLockForClient(${cmd})`, async () => {
|
|
435
|
+
return startAsyncSpan(tracer, `vs.#runInLockForClient(${cmd})`, async (span) => {
|
|
436
|
+
span.setAttribute("clientGroupID", this.id);
|
|
437
|
+
span.setAttribute("clientID", clientID);
|
|
436
438
|
let client;
|
|
437
439
|
let result;
|
|
438
440
|
try {
|
|
@@ -554,25 +556,34 @@ var ViewSyncerService = class {
|
|
|
554
556
|
const gotQueries = Object.entries(cvr.queries).filter(([_, state]) => state.transformationHash !== void 0);
|
|
555
557
|
const customQueries = /* @__PURE__ */ new Map();
|
|
556
558
|
const otherQueries = [];
|
|
559
|
+
let inactivatedCount = 0;
|
|
557
560
|
for (const [, query] of gotQueries) {
|
|
558
|
-
if (query.type !== "internal" && Object.values(query.clientState).every(({ inactivatedAt }) => inactivatedAt !== void 0))
|
|
561
|
+
if (query.type !== "internal" && Object.values(query.clientState).every(({ inactivatedAt }) => inactivatedAt !== void 0)) {
|
|
562
|
+
inactivatedCount++;
|
|
563
|
+
continue;
|
|
564
|
+
}
|
|
559
565
|
if (query.type === "custom") customQueries.set(query.id, query);
|
|
560
566
|
else otherQueries.push(query);
|
|
561
567
|
}
|
|
562
568
|
const transformedQueries = [];
|
|
569
|
+
let customErrorCount = 0;
|
|
570
|
+
let customHashMismatchCount = 0;
|
|
571
|
+
let otherHashMismatchCount = 0;
|
|
563
572
|
if (customQueries.size > 0 && !this.#customQueryTransformer) lc.warn?.("Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.");
|
|
564
573
|
const customQueryTransformer = this.#customQueryTransformer;
|
|
565
574
|
if (customQueryTransformer && customQueries.size > 0) {
|
|
566
575
|
const transformedCustomQueries = await this.#runPriorityOp(lc, "#hydrateUnchangedQueries transforming custom queries", () => customQueryTransformer.transform(this.#getHeaderOptions(this.#queryConfig.forwardCookies), customQueries.values(), this.userQueryURL));
|
|
567
|
-
if (Array.isArray(transformedCustomQueries))
|
|
568
|
-
|
|
569
|
-
|
|
576
|
+
if (Array.isArray(transformedCustomQueries)) for (const q of transformedCustomQueries) if ("error" in q) customErrorCount++;
|
|
577
|
+
else if (q.transformationHash !== customQueries.get(q.id)?.transformationHash) customHashMismatchCount++;
|
|
578
|
+
else transformedQueries.push(q);
|
|
570
579
|
}
|
|
571
580
|
for (const q of otherQueries) {
|
|
572
581
|
const auth = this.#authSession.auth;
|
|
573
582
|
const transformed = transformAndHashQuery(lc, q.id, q.ast, must(this.#pipelines.currentPermissions()).permissions ?? { tables: {} }, auth?.type === "jwt" ? auth : void 0, q.type === "internal");
|
|
574
583
|
if (transformed.transformationHash === q.transformationHash) transformedQueries.push(transformed);
|
|
584
|
+
else otherHashMismatchCount++;
|
|
575
585
|
}
|
|
586
|
+
lc.info?.(`hydrateUnchangedQueries: ${gotQueries.length} got queries, ${inactivatedCount} inactivated, ${customErrorCount} custom transform errors, ${customHashMismatchCount} custom hash mismatches, ${otherHashMismatchCount} other hash mismatches, ${transformedQueries.length} hydrated`);
|
|
576
587
|
for (const { id: queryID, transformationHash, transformedAst } of transformedQueries) {
|
|
577
588
|
const timer = new TimeSliceTimer(lc);
|
|
578
589
|
let count = 0;
|
|
@@ -642,7 +653,8 @@ var ViewSyncerService = class {
|
|
|
642
653
|
* This must be called from within the #lock.
|
|
643
654
|
*/
|
|
644
655
|
#syncQueryPipelineSet(lc, cvr, customQueryTransformMode) {
|
|
645
|
-
return startAsyncSpan(tracer, "vs.#syncQueryPipelineSet", async () => {
|
|
656
|
+
return startAsyncSpan(tracer, "vs.#syncQueryPipelineSet", async (span) => {
|
|
657
|
+
span.setAttribute("clientGroupID", this.id);
|
|
646
658
|
assert(this.#pipelines.initialized(), "pipelines must be initialized (syncQueryPipelineSet)");
|
|
647
659
|
if (this.#ttlClock === void 0) this.#ttlClock = cvr.ttlClock;
|
|
648
660
|
const now = Date.now();
|
|
@@ -717,6 +729,7 @@ var ViewSyncerService = class {
|
|
|
717
729
|
ast: transformed.transformedAst,
|
|
718
730
|
transformationHash: transformed.transformationHash
|
|
719
731
|
})).filter((q) => !removeQueriesQueryIds.has(q.id) && this.#pipelines.queries().get(q.id)?.transformationHash !== q.transformationHash);
|
|
732
|
+
lc.info?.(`syncQueryPipelineSet: ${cvrQueryEntires.length} CVR queries, ${customQueriesToTransform.length} custom re-transformed, ${erroredQueryIDs?.length ?? 0} errored, ${removeQueriesQueryIds.size} to remove, ${addQueries.length} to add`);
|
|
720
733
|
for (const q of addQueries) {
|
|
721
734
|
const orig = cvr.queries[q.id];
|
|
722
735
|
lc.debug?.("ViewSyncer adding query", q.ast, "transformed from", orig.type === "custom" ? orig.name : orig.ast);
|
|
@@ -794,11 +807,13 @@ var ViewSyncerService = class {
|
|
|
794
807
|
hydrationTime.record(totalProcessTime / 1e3);
|
|
795
808
|
}
|
|
796
809
|
await this.#processChanges(lc, timer, generateRowChanges(this.#slowHydrateThreshold), updater, pokers);
|
|
797
|
-
|
|
810
|
+
await startAsyncSpan(tracer, "vs.#syncQueryPipelineSet.deleteUnreferencedRows", async () => {
|
|
811
|
+
for (const patch of await updater.deleteUnreferencedRows(lc)) await pokers.addPatch(patch);
|
|
812
|
+
});
|
|
798
813
|
this.#cvr = await this.#flushUpdater(lc, updater);
|
|
799
814
|
const finalVersion = this.#cvr.version;
|
|
800
815
|
await this.#catchupClients(lc, cvr, finalVersion, addQueries.map((q) => q.id), pokers);
|
|
801
|
-
await pokers.end(finalVersion);
|
|
816
|
+
await startAsyncSpan(tracer, "vs.#syncQueryPipelineSet.pokeEnd", () => pokers.end(finalVersion));
|
|
802
817
|
const wallTime = performance.now() - start;
|
|
803
818
|
lc.info?.(`finished processing queries (process: ${totalProcessTime} ms, wall: ${wallTime} ms)`);
|
|
804
819
|
});
|
|
@@ -879,7 +894,10 @@ var ViewSyncerService = class {
|
|
|
879
894
|
total += rows.size;
|
|
880
895
|
lc.debug?.(`processing ${rows.size} (of ${total}) rows (${wallElapsed} ms)`);
|
|
881
896
|
const patches = await updater.received(lc, rows);
|
|
882
|
-
|
|
897
|
+
await startAsyncSpan(tracer, "processBatch.flushToClient", async (span) => {
|
|
898
|
+
span.setAttribute("patches", patches.length);
|
|
899
|
+
for (const patch of patches) await pokers.addPatch(patch);
|
|
900
|
+
});
|
|
883
901
|
rows.clear();
|
|
884
902
|
});
|
|
885
903
|
await startAsyncSpan(tracer, "loopingChanges", async (span) => {
|
|
@@ -934,7 +952,8 @@ var ViewSyncerService = class {
|
|
|
934
952
|
* Returns false if the advancement failed due to a schema change.
|
|
935
953
|
*/
|
|
936
954
|
#advancePipelines(lc, cvr) {
|
|
937
|
-
return startAsyncSpan(tracer, "vs.#advancePipelines", async () => {
|
|
955
|
+
return startAsyncSpan(tracer, "vs.#advancePipelines", async (span) => {
|
|
956
|
+
span.setAttribute("clientGroupID", this.id);
|
|
938
957
|
assert(this.#pipelines.initialized(), "pipelines must be initialized (advancePipelines");
|
|
939
958
|
const start = performance.now();
|
|
940
959
|
const timer = new TimeSliceTimer(lc);
|
|
@@ -954,7 +973,7 @@ var ViewSyncerService = class {
|
|
|
954
973
|
}
|
|
955
974
|
this.#cvr = await this.#flushUpdater(lc, updater);
|
|
956
975
|
const finalVersion = this.#cvr.version;
|
|
957
|
-
await pokers.end(finalVersion);
|
|
976
|
+
await startAsyncSpan(tracer, "vs.#advancePipelines.pokeEnd", () => pokers.end(finalVersion));
|
|
958
977
|
const wallTime = performance.now() - start;
|
|
959
978
|
const totalProcessTime = timer.totalElapsed();
|
|
960
979
|
lc.info?.(`finished processing advancement of ${numChanges} changes ((process: ${totalProcessTime} ms, wall: ${wallTime} ms))`);
|