@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.
Files changed (163) hide show
  1. package/out/ast-to-zql/src/format.d.ts.map +1 -1
  2. package/out/ast-to-zql/src/format.js +6 -6
  3. package/out/ast-to-zql/src/format.js.map +1 -1
  4. package/out/shared/src/bigint-json.d.ts.map +1 -1
  5. package/out/shared/src/bigint-json.js.map +1 -1
  6. package/out/shared/src/btree-set.d.ts.map +1 -1
  7. package/out/shared/src/btree-set.js +73 -41
  8. package/out/shared/src/btree-set.js.map +1 -1
  9. package/out/z2s/src/sql.d.ts +2 -2
  10. package/out/z2s/src/sql.d.ts.map +1 -1
  11. package/out/z2s/src/sql.js +2 -3
  12. package/out/z2s/src/sql.js.map +1 -1
  13. package/out/zero/package.js +6 -6
  14. package/out/zero/package.js.map +1 -1
  15. package/out/zero-cache/src/auth/load-permissions.d.ts +2 -2
  16. package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
  17. package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
  18. package/out/zero-cache/src/config/zero-config.d.ts +9 -1
  19. package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
  20. package/out/zero-cache/src/config/zero-config.js +21 -3
  21. package/out/zero-cache/src/config/zero-config.js.map +1 -1
  22. package/out/zero-cache/src/custom/fetch.d.ts +1 -1
  23. package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
  24. package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
  25. package/out/zero-cache/src/custom-queries/transform-query.js +4 -1
  26. package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
  27. package/out/zero-cache/src/db/run-transaction.d.ts.map +1 -1
  28. package/out/zero-cache/src/db/run-transaction.js +2 -2
  29. package/out/zero-cache/src/db/run-transaction.js.map +1 -1
  30. package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
  31. package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
  32. package/out/zero-cache/src/observability/metrics.d.ts +1 -1
  33. package/out/zero-cache/src/observability/metrics.d.ts.map +1 -1
  34. package/out/zero-cache/src/observability/metrics.js.map +1 -1
  35. package/out/zero-cache/src/server/anonymous-otel-start.d.ts.map +1 -1
  36. package/out/zero-cache/src/server/anonymous-otel-start.js +6 -1
  37. package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
  38. package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
  39. package/out/zero-cache/src/server/change-streamer.js +3 -1
  40. package/out/zero-cache/src/server/change-streamer.js.map +1 -1
  41. package/out/zero-cache/src/server/logging.d.ts.map +1 -1
  42. package/out/zero-cache/src/server/logging.js +9 -1
  43. package/out/zero-cache/src/server/logging.js.map +1 -1
  44. package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
  45. package/out/zero-cache/src/server/replicator.js +28 -1
  46. package/out/zero-cache/src/server/replicator.js.map +1 -1
  47. package/out/zero-cache/src/services/change-source/change-source.d.ts +1 -1
  48. package/out/zero-cache/src/services/change-source/change-source.d.ts.map +1 -1
  49. package/out/zero-cache/src/services/change-source/common/replica-schema.d.ts.map +1 -1
  50. package/out/zero-cache/src/services/change-source/common/replica-schema.js +13 -1
  51. package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
  52. package/out/zero-cache/src/services/change-source/custom/change-source.js +4 -4
  53. package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
  54. package/out/zero-cache/src/services/change-source/pg/change-source.d.ts.map +1 -1
  55. package/out/zero-cache/src/services/change-source/pg/change-source.js +65 -22
  56. package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
  57. package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +1 -1
  58. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts +1 -1
  59. package/out/zero-cache/src/services/change-streamer/backup-monitor.d.ts.map +1 -1
  60. package/out/zero-cache/src/services/change-streamer/backup-monitor.js +31 -1
  61. package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
  62. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +4 -4
  63. package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +1 -1
  64. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +2 -3
  65. package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
  66. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +4 -0
  67. package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
  68. package/out/zero-cache/src/services/change-streamer/change-streamer.js +9 -1
  69. package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
  70. package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
  71. package/out/zero-cache/src/services/change-streamer/storer.js +1 -1
  72. package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
  73. package/out/zero-cache/src/services/life-cycle.d.ts +1 -0
  74. package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
  75. package/out/zero-cache/src/services/life-cycle.js +2 -2
  76. package/out/zero-cache/src/services/life-cycle.js.map +1 -1
  77. package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
  78. package/out/zero-cache/src/services/litestream/commands.js +5 -5
  79. package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
  80. package/out/zero-cache/src/services/mutagen/pusher.d.ts +2 -2
  81. package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
  82. package/out/zero-cache/src/services/mutagen/pusher.js +7 -4
  83. package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
  84. package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
  85. package/out/zero-cache/src/services/replicator/incremental-sync.js +6 -3
  86. package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
  87. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts +1 -1
  88. package/out/zero-cache/src/services/replicator/schema/column-metadata.d.ts.map +1 -1
  89. package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
  90. package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +1 -1
  91. package/out/zero-cache/src/services/replicator/schema/replication-state.js +6 -3
  92. package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
  93. package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
  94. package/out/zero-cache/src/services/view-syncer/cvr.js +8 -6
  95. package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
  96. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +1 -1
  97. package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
  98. package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
  99. package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
  100. package/out/zero-cache/src/services/view-syncer/row-record-cache.js +13 -7
  101. package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
  102. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +1 -1
  103. package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
  104. package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
  105. package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +1 -1
  106. package/out/zero-cache/src/services/view-syncer/view-syncer.js +32 -13
  107. package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
  108. package/out/zero-cache/src/types/pg.d.ts +1 -0
  109. package/out/zero-cache/src/types/pg.d.ts.map +1 -1
  110. package/out/zero-cache/src/types/pg.js +20 -9
  111. package/out/zero-cache/src/types/pg.js.map +1 -1
  112. package/out/zero-cache/src/workers/connection.js +2 -2
  113. package/out/zero-cache/src/workers/connection.js.map +1 -1
  114. package/out/zero-cache/src/workers/replicator.d.ts +5 -2
  115. package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
  116. package/out/zero-cache/src/workers/replicator.js +10 -6
  117. package/out/zero-cache/src/workers/replicator.js.map +1 -1
  118. package/out/zero-client/src/client/version.js +1 -1
  119. package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
  120. package/out/zero-client/src/client/zero-poke-handler.js +6 -2
  121. package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
  122. package/out/zero-protocol/src/application-error.d.ts +1 -1
  123. package/out/zero-protocol/src/application-error.d.ts.map +1 -1
  124. package/out/zero-protocol/src/application-error.js.map +1 -1
  125. package/out/zero-types/src/name-mapper.d.ts +1 -0
  126. package/out/zero-types/src/name-mapper.d.ts.map +1 -1
  127. package/out/zero-types/src/name-mapper.js +3 -0
  128. package/out/zero-types/src/name-mapper.js.map +1 -1
  129. package/out/zql/src/builder/builder.d.ts.map +1 -1
  130. package/out/zql/src/builder/builder.js +5 -15
  131. package/out/zql/src/builder/builder.js.map +1 -1
  132. package/out/zql/src/ivm/memory-source.d.ts +1 -1
  133. package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
  134. package/out/zql/src/ivm/memory-source.js +2 -2
  135. package/out/zql/src/ivm/memory-source.js.map +1 -1
  136. package/out/zql/src/ivm/take.d.ts.map +1 -1
  137. package/out/zql/src/ivm/take.js +2 -2
  138. package/out/zql/src/ivm/take.js.map +1 -1
  139. package/out/zql/src/ivm/view-apply-change.d.ts.map +1 -1
  140. package/out/zql/src/ivm/view-apply-change.js +34 -26
  141. package/out/zql/src/ivm/view-apply-change.js.map +1 -1
  142. package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
  143. package/out/zql/src/planner/planner-debug.js.map +1 -1
  144. package/out/zql/src/query/expression.d.ts +1 -1
  145. package/out/zql/src/query/expression.d.ts.map +1 -1
  146. package/out/zql/src/query/expression.js.map +1 -1
  147. package/out/zql/src/query/query.d.ts +1 -2
  148. package/out/zql/src/query/query.d.ts.map +1 -1
  149. package/out/zqlite/src/db.d.ts.map +1 -1
  150. package/out/zqlite/src/db.js +1 -1
  151. package/out/zqlite/src/db.js.map +1 -1
  152. package/out/zqlite/src/internal/sql.d.ts +2 -2
  153. package/out/zqlite/src/internal/sql.d.ts.map +1 -1
  154. package/out/zqlite/src/internal/sql.js +1 -2
  155. package/out/zqlite/src/internal/sql.js.map +1 -1
  156. package/out/zqlite/src/table-source.d.ts.map +1 -1
  157. package/out/zqlite/src/table-source.js +7 -11
  158. package/out/zqlite/src/table-source.js.map +1 -1
  159. package/package.json +6 -6
  160. package/out/zql/src/ivm/cap.d.ts +0 -32
  161. package/out/zql/src/ivm/cap.d.ts.map +0 -1
  162. package/out/zql/src/ivm/cap.js +0 -226
  163. 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.error?.("failed to update TTL clock", rid, `after ${Date.now() - start} ms`, e);
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)) continue;
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
- for (const q of transformedCustomQueries) if (!("error" in q) && q.transformationHash === customQueries.get(q.id)?.transformationHash) transformedQueries.push(q);
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
- for (const patch of await updater.deleteUnreferencedRows(lc)) await pokers.addPatch(patch);
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
- for (const patch of patches) await pokers.addPatch(patch);
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))`);