@rocicorp/zero 0.25.0 → 0.26.0-canary.0
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/analyze-query/src/bin-analyze.js +268 -257
- package/out/analyze-query/src/bin-analyze.js.map +1 -1
- package/out/analyze-query/src/bin-transform.js +31 -23
- package/out/analyze-query/src/bin-transform.js.map +1 -1
- package/out/analyze-query/src/explain-queries.js +13 -16
- package/out/analyze-query/src/explain-queries.js.map +1 -1
- package/out/analyze-query/src/run-ast.d.ts +3 -2
- package/out/analyze-query/src/run-ast.d.ts.map +1 -1
- package/out/analyze-query/src/run-ast.js +82 -74
- package/out/analyze-query/src/run-ast.js.map +1 -1
- package/out/ast-to-zql/src/ast-to-zql.js +146 -180
- package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
- package/out/ast-to-zql/src/bin.js +51 -54
- package/out/ast-to-zql/src/bin.js.map +1 -1
- package/out/ast-to-zql/src/format.js +15 -14
- package/out/ast-to-zql/src/format.js.map +1 -1
- package/out/datadog/src/datadog-log-sink.js +223 -0
- package/out/datadog/src/datadog-log-sink.js.map +1 -0
- package/out/otel/src/enabled.js +15 -15
- package/out/otel/src/enabled.js.map +1 -1
- package/out/otel/src/log-options.d.ts +1 -1
- package/out/otel/src/log-options.d.ts.map +1 -1
- package/out/otel/src/log-options.js +35 -31
- package/out/otel/src/log-options.js.map +1 -1
- package/out/otel/src/maybe-time.js +14 -11
- package/out/otel/src/maybe-time.js.map +1 -1
- package/out/otel/src/span.js +30 -27
- package/out/otel/src/span.js.map +1 -1
- package/out/otel/src/test-log-config.js +10 -7
- package/out/otel/src/test-log-config.js.map +1 -1
- package/out/otel/src/version.js +5 -2
- package/out/otel/src/version.js.map +1 -1
- package/out/replicache/src/async-iterable-to-array.js +11 -0
- package/out/replicache/src/async-iterable-to-array.js.map +1 -0
- package/out/replicache/src/bg-interval.js +38 -0
- package/out/replicache/src/bg-interval.js.map +1 -0
- package/out/replicache/src/btree/diff.js +8 -0
- package/out/replicache/src/btree/diff.js.map +1 -0
- package/out/replicache/src/btree/node.js +400 -0
- package/out/replicache/src/btree/node.js.map +1 -0
- package/out/replicache/src/btree/read.d.ts +3 -2
- package/out/replicache/src/btree/read.d.ts.map +1 -1
- package/out/replicache/src/btree/read.js +266 -0
- package/out/replicache/src/btree/read.js.map +1 -0
- package/out/replicache/src/btree/splice.js +83 -0
- package/out/replicache/src/btree/splice.js.map +1 -0
- package/out/replicache/src/btree/write.d.ts +1 -1
- package/out/replicache/src/btree/write.d.ts.map +1 -1
- package/out/replicache/src/btree/write.js +163 -0
- package/out/replicache/src/btree/write.js.map +1 -0
- package/out/replicache/src/call-default-fetch.js +34 -0
- package/out/replicache/src/call-default-fetch.js.map +1 -0
- package/out/replicache/src/connection-loop-delegates.js +34 -0
- package/out/replicache/src/connection-loop-delegates.js.map +1 -0
- package/out/replicache/src/connection-loop.js +251 -0
- package/out/replicache/src/connection-loop.js.map +1 -0
- package/out/replicache/src/cookies.js +40 -0
- package/out/replicache/src/cookies.js.map +1 -0
- package/out/replicache/src/dag/chunk.js +59 -0
- package/out/replicache/src/dag/chunk.js.map +1 -0
- package/out/replicache/src/dag/gc.js +117 -0
- package/out/replicache/src/dag/gc.js.map +1 -0
- package/out/replicache/src/dag/key.js +20 -0
- package/out/replicache/src/dag/key.js.map +1 -0
- package/out/replicache/src/dag/lazy-store.d.ts +2 -1
- package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
- package/out/replicache/src/dag/lazy-store.js +515 -0
- package/out/replicache/src/dag/lazy-store.js.map +1 -0
- package/out/replicache/src/dag/store-impl.js +183 -0
- package/out/replicache/src/dag/store-impl.js.map +1 -0
- package/out/replicache/src/dag/store.js +27 -0
- package/out/replicache/src/dag/store.js.map +1 -0
- package/out/replicache/src/dag/visitor.js +22 -0
- package/out/replicache/src/dag/visitor.js.map +1 -0
- package/out/replicache/src/db/commit.js +358 -0
- package/out/replicache/src/db/commit.js.map +1 -0
- package/out/replicache/src/db/index-operation-enum.js +7 -0
- package/out/replicache/src/db/index-operation-enum.js.map +1 -0
- package/out/replicache/src/db/index.js +134 -0
- package/out/replicache/src/db/index.js.map +1 -0
- package/out/replicache/src/db/meta-type-enum.js +7 -0
- package/out/replicache/src/db/meta-type-enum.js.map +1 -0
- package/out/replicache/src/db/read.d.ts +3 -2
- package/out/replicache/src/db/read.d.ts.map +1 -1
- package/out/replicache/src/db/read.js +72 -0
- package/out/replicache/src/db/read.js.map +1 -0
- package/out/replicache/src/db/rebase.d.ts +2 -2
- package/out/replicache/src/db/rebase.d.ts.map +1 -1
- package/out/replicache/src/db/rebase.js +85 -0
- package/out/replicache/src/db/rebase.js.map +1 -0
- package/out/replicache/src/db/write.d.ts +2 -1
- package/out/replicache/src/db/write.d.ts.map +1 -1
- package/out/replicache/src/db/write.js +296 -0
- package/out/replicache/src/db/write.js.map +1 -0
- package/out/replicache/src/deleted-clients.js +104 -0
- package/out/replicache/src/deleted-clients.js.map +1 -0
- package/out/replicache/src/error-responses.js +34 -0
- package/out/replicache/src/error-responses.js.map +1 -0
- package/out/replicache/src/format-version-enum.js +11 -0
- package/out/replicache/src/format-version-enum.js.map +1 -0
- package/out/{chunk-EZM3XBAB.js → replicache/src/frozen-json.js} +8 -75
- package/out/replicache/src/frozen-json.js.map +1 -0
- package/out/replicache/src/get-default-puller.js +61 -0
- package/out/replicache/src/get-default-puller.js.map +1 -0
- package/out/replicache/src/get-default-pusher.js +39 -0
- package/out/replicache/src/get-default-pusher.js.map +1 -0
- package/out/replicache/src/get-kv-store-provider.js +23 -0
- package/out/replicache/src/get-kv-store-provider.js.map +1 -0
- package/out/replicache/src/hash.js +38 -0
- package/out/replicache/src/hash.js.map +1 -0
- package/out/replicache/src/http-request-info.js +10 -0
- package/out/replicache/src/http-request-info.js.map +1 -0
- package/out/replicache/src/http-status-unauthorized.js +5 -0
- package/out/replicache/src/http-status-unauthorized.js.map +1 -0
- package/out/replicache/src/index-defs.js +32 -0
- package/out/replicache/src/index-defs.js.map +1 -0
- package/out/replicache/src/invoke-kind-enum.js +7 -0
- package/out/replicache/src/invoke-kind-enum.js.map +1 -0
- package/out/{chunk-ZZXMKAAG.js → replicache/src/kv/expo-sqlite/store.js} +8 -16
- package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -0
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js +80 -0
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -0
- package/out/replicache/src/kv/idb-store.js +183 -0
- package/out/replicache/src/kv/idb-store.js.map +1 -0
- package/out/replicache/src/kv/mem-store.js +51 -0
- package/out/replicache/src/kv/mem-store.js.map +1 -0
- package/out/{op-sqlite.js → replicache/src/kv/op-sqlite/store.js} +7 -18
- package/out/replicache/src/kv/op-sqlite/store.js.map +1 -0
- package/out/replicache/src/kv/op-sqlite/types.js +6 -0
- package/out/replicache/src/kv/op-sqlite/types.js.map +1 -0
- package/out/replicache/src/kv/read-impl.js +27 -0
- package/out/replicache/src/kv/read-impl.js.map +1 -0
- package/out/replicache/src/kv/sqlite-store.d.ts.map +1 -1
- package/out/{chunk-ECUMGQGC.js → replicache/src/kv/sqlite-store.js} +27 -21
- package/out/replicache/src/kv/sqlite-store.js.map +1 -0
- package/out/{chunk-ASRS2LFV.js → replicache/src/kv/throw-if-closed.js} +4 -6
- package/out/replicache/src/kv/throw-if-closed.js.map +1 -0
- package/out/replicache/src/kv/write-impl-base.js +57 -0
- package/out/replicache/src/kv/write-impl-base.js.map +1 -0
- package/out/replicache/src/kv/write-impl.js +30 -0
- package/out/replicache/src/kv/write-impl.js.map +1 -0
- package/out/replicache/src/lazy.js +13 -0
- package/out/replicache/src/lazy.js.map +1 -0
- package/out/replicache/src/log-options.js +9 -0
- package/out/replicache/src/log-options.js.map +1 -0
- package/out/replicache/src/make-idb-name.js +13 -0
- package/out/replicache/src/make-idb-name.js.map +1 -0
- package/out/replicache/src/new-client-channel.js +51 -0
- package/out/replicache/src/new-client-channel.js.map +1 -0
- package/out/replicache/src/on-persist-channel.js +36 -0
- package/out/replicache/src/on-persist-channel.js.map +1 -0
- package/out/replicache/src/patch-operation.js +42 -0
- package/out/replicache/src/patch-operation.js.map +1 -0
- package/out/replicache/src/pending-mutations.js +16 -0
- package/out/replicache/src/pending-mutations.js.map +1 -0
- package/out/replicache/src/persist/client-gc.js +58 -0
- package/out/replicache/src/persist/client-gc.js.map +1 -0
- package/out/replicache/src/persist/client-group-gc.js +43 -0
- package/out/replicache/src/persist/client-group-gc.js.map +1 -0
- package/out/replicache/src/persist/client-groups.js +184 -0
- package/out/replicache/src/persist/client-groups.js.map +1 -0
- package/out/replicache/src/persist/clients.d.ts +3 -2
- package/out/replicache/src/persist/clients.d.ts.map +1 -1
- package/out/replicache/src/persist/clients.js +353 -0
- package/out/replicache/src/persist/clients.js.map +1 -0
- package/out/replicache/src/persist/collect-idb-databases.js +188 -0
- package/out/replicache/src/persist/collect-idb-databases.js.map +1 -0
- package/out/replicache/src/persist/gather-mem-only-visitor.js +27 -0
- package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -0
- package/out/replicache/src/persist/gather-not-cached-visitor.js +37 -0
- package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -0
- package/out/replicache/src/persist/heartbeat.js +48 -0
- package/out/replicache/src/persist/heartbeat.js.map +1 -0
- package/out/replicache/src/persist/idb-databases-store-db-name.js +14 -0
- package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -0
- package/out/replicache/src/persist/idb-databases-store.d.ts +1 -0
- package/out/replicache/src/persist/idb-databases-store.d.ts.map +1 -1
- package/out/replicache/src/persist/idb-databases-store.js +103 -0
- package/out/replicache/src/persist/idb-databases-store.js.map +1 -0
- package/out/replicache/src/persist/make-client-id.js +12 -0
- package/out/replicache/src/persist/make-client-id.js.map +1 -0
- package/out/replicache/src/persist/persist.d.ts +2 -2
- package/out/replicache/src/persist/persist.d.ts.map +1 -1
- package/out/replicache/src/persist/persist.js +183 -0
- package/out/replicache/src/persist/persist.js.map +1 -0
- package/out/replicache/src/persist/refresh.d.ts +4 -3
- package/out/replicache/src/persist/refresh.d.ts.map +1 -1
- package/out/replicache/src/persist/refresh.js +198 -0
- package/out/replicache/src/persist/refresh.js.map +1 -0
- package/out/replicache/src/process-scheduler.js +96 -0
- package/out/replicache/src/process-scheduler.js.map +1 -0
- package/out/replicache/src/pusher.js +33 -0
- package/out/replicache/src/pusher.js.map +1 -0
- package/out/replicache/src/replicache-impl.d.ts +1 -1
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.js +1200 -0
- package/out/replicache/src/replicache-impl.js.map +1 -0
- package/out/replicache/src/replicache-options.d.ts +3 -2
- package/out/replicache/src/replicache-options.d.ts.map +1 -1
- package/out/replicache/src/report-error.js +6 -0
- package/out/replicache/src/report-error.js.map +1 -0
- package/out/replicache/src/request-idle.js +13 -0
- package/out/replicache/src/request-idle.js.map +1 -0
- package/out/replicache/src/scan-iterator.js +146 -0
- package/out/replicache/src/scan-iterator.js.map +1 -0
- package/out/replicache/src/scan-options.js +45 -0
- package/out/replicache/src/scan-options.js.map +1 -0
- package/out/replicache/src/set-interval-with-signal.js +12 -0
- package/out/replicache/src/set-interval-with-signal.js.map +1 -0
- package/out/replicache/src/subscriptions.js +355 -0
- package/out/replicache/src/subscriptions.js.map +1 -0
- package/out/replicache/src/sync/diff.d.ts +3 -2
- package/out/replicache/src/sync/diff.d.ts.map +1 -1
- package/out/replicache/src/sync/diff.js +72 -0
- package/out/replicache/src/sync/diff.js.map +1 -0
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +9 -0
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +1 -0
- package/out/replicache/src/sync/ids.js +9 -0
- package/out/replicache/src/sync/ids.js.map +1 -0
- package/out/replicache/src/sync/patch.js +49 -0
- package/out/replicache/src/sync/patch.js.map +1 -0
- package/out/replicache/src/sync/pull-error.js +16 -0
- package/out/replicache/src/sync/pull-error.js.map +1 -0
- package/out/replicache/src/sync/pull.d.ts +3 -2
- package/out/replicache/src/sync/pull.d.ts.map +1 -1
- package/out/replicache/src/sync/pull.js +301 -0
- package/out/replicache/src/sync/pull.js.map +1 -0
- package/out/replicache/src/sync/push.js +88 -0
- package/out/replicache/src/sync/push.js.map +1 -0
- package/out/replicache/src/sync/request-id.js +20 -0
- package/out/replicache/src/sync/request-id.js.map +1 -0
- package/out/replicache/src/sync/sync-head-name.js +5 -0
- package/out/replicache/src/sync/sync-head-name.js.map +1 -0
- package/out/replicache/src/to-error.js +10 -0
- package/out/replicache/src/to-error.js.map +1 -0
- package/out/replicache/src/transaction-closed-error.js +19 -0
- package/out/replicache/src/transaction-closed-error.js.map +1 -0
- package/out/replicache/src/transactions.js +152 -0
- package/out/replicache/src/transactions.js.map +1 -0
- package/out/replicache/src/version.js +5 -0
- package/out/replicache/src/version.js.map +1 -0
- package/out/replicache/src/with-transactions.js +28 -0
- package/out/replicache/src/with-transactions.js.map +1 -0
- package/out/shared/src/abort-error.js +6 -3
- package/out/shared/src/abort-error.js.map +1 -1
- package/out/shared/src/arrays.js +45 -43
- package/out/shared/src/arrays.js.map +1 -1
- package/out/shared/src/asserts.js +64 -68
- package/out/shared/src/asserts.js.map +1 -1
- package/out/shared/src/bigint-json.js +38 -42
- package/out/shared/src/bigint-json.js.map +1 -1
- package/out/shared/src/binary-search.js +18 -29
- package/out/shared/src/binary-search.js.map +1 -1
- package/out/shared/src/broadcast-channel.js +24 -0
- package/out/shared/src/broadcast-channel.js.map +1 -0
- package/out/shared/src/browser-env.js +25 -0
- package/out/shared/src/browser-env.js.map +1 -0
- package/out/shared/src/btree-set.js +464 -507
- package/out/shared/src/btree-set.js.map +1 -1
- package/out/shared/src/cache.js +34 -38
- package/out/shared/src/cache.js.map +1 -1
- package/out/shared/src/centroid.js +24 -24
- package/out/shared/src/centroid.js.map +1 -1
- package/out/shared/src/config.js +6 -3
- package/out/shared/src/config.js.map +1 -1
- package/out/shared/src/custom-key-map.js +58 -64
- package/out/shared/src/custom-key-map.js.map +1 -1
- package/out/shared/src/custom-key-set.js +51 -57
- package/out/shared/src/custom-key-set.js.map +1 -1
- package/out/shared/src/deep-clone.js +46 -0
- package/out/shared/src/deep-clone.js.map +1 -0
- package/out/shared/src/deep-merge.d.ts +26 -4
- package/out/shared/src/deep-merge.d.ts.map +1 -1
- package/out/shared/src/deep-merge.js +28 -0
- package/out/shared/src/deep-merge.js.map +1 -0
- package/out/shared/src/document-visible.js +74 -0
- package/out/shared/src/document-visible.js.map +1 -0
- package/out/shared/src/dotenv.js +5 -7
- package/out/shared/src/dotenv.js.map +1 -1
- package/out/shared/src/error.js +57 -56
- package/out/shared/src/error.js.map +1 -1
- package/out/shared/src/has-own.js +5 -3
- package/out/shared/src/has-own.js.map +1 -1
- package/out/shared/src/hash.js +15 -14
- package/out/shared/src/hash.js.map +1 -1
- package/out/shared/src/iterables.d.ts +0 -1
- package/out/shared/src/iterables.d.ts.map +1 -1
- package/out/shared/src/iterables.js +44 -80
- package/out/shared/src/iterables.js.map +1 -1
- package/out/shared/src/json-schema.js +30 -33
- package/out/shared/src/json-schema.js.map +1 -1
- package/out/shared/src/json.js +128 -143
- package/out/shared/src/json.js.map +1 -1
- package/out/shared/src/logging-test-utils.js +12 -19
- package/out/shared/src/logging-test-utils.js.map +1 -1
- package/out/shared/src/logging.d.ts.map +1 -1
- package/out/shared/src/logging.js +99 -83
- package/out/shared/src/logging.js.map +1 -1
- package/out/shared/src/must.js +9 -7
- package/out/shared/src/must.js.map +1 -1
- package/out/shared/src/navigator.js +5 -0
- package/out/shared/src/navigator.js.map +1 -0
- package/out/shared/src/object-traversal.d.ts +19 -0
- package/out/shared/src/object-traversal.d.ts.map +1 -0
- package/out/shared/src/object-traversal.js +27 -0
- package/out/shared/src/object-traversal.js.map +1 -0
- package/out/shared/src/objects.js +21 -22
- package/out/shared/src/objects.js.map +1 -1
- package/out/shared/src/options-types.d.ts +113 -0
- package/out/shared/src/options-types.d.ts.map +1 -0
- package/out/shared/src/options.d.ts +4 -111
- package/out/shared/src/options.d.ts.map +1 -1
- package/out/shared/src/options.js +289 -318
- package/out/shared/src/options.js.map +1 -1
- package/out/shared/src/parse-big-int.js +12 -10
- package/out/shared/src/parse-big-int.js.map +1 -1
- package/out/shared/src/promise-race.js +20 -0
- package/out/shared/src/promise-race.js.map +1 -0
- package/out/shared/src/queue.js +119 -122
- package/out/shared/src/queue.js.map +1 -1
- package/out/shared/src/rand.js +8 -10
- package/out/shared/src/rand.js.map +1 -1
- package/out/shared/src/random-uint64.js +9 -0
- package/out/shared/src/random-uint64.js.map +1 -0
- package/out/shared/src/random-values.js +13 -0
- package/out/shared/src/random-values.js.map +1 -0
- package/out/shared/src/record-proxy.d.ts +13 -0
- package/out/shared/src/record-proxy.d.ts.map +1 -0
- package/out/shared/src/record-proxy.js +59 -0
- package/out/shared/src/record-proxy.js.map +1 -0
- package/out/shared/src/resolved-promises.js +12 -9
- package/out/shared/src/resolved-promises.js.map +1 -1
- package/out/shared/src/sentinels.js +13 -6
- package/out/shared/src/sentinels.js.map +1 -1
- package/out/shared/src/set-utils.js +63 -62
- package/out/shared/src/set-utils.js.map +1 -1
- package/out/shared/src/size-of-value.js +58 -0
- package/out/shared/src/size-of-value.js.map +1 -0
- package/out/shared/src/sleep.js +45 -53
- package/out/shared/src/sleep.js.map +1 -1
- package/out/shared/src/string-compare.js +12 -9
- package/out/shared/src/string-compare.js.map +1 -1
- package/out/shared/src/subscribable.js +34 -0
- package/out/shared/src/subscribable.js.map +1 -0
- package/out/shared/src/tdigest-schema.js +7 -7
- package/out/shared/src/tdigest-schema.js.map +1 -1
- package/out/shared/src/tdigest.js +247 -271
- package/out/shared/src/tdigest.js.map +1 -1
- package/out/shared/src/valita.js +195 -207
- package/out/shared/src/valita.js.map +1 -1
- package/out/z2s/src/compiler.d.ts +2 -2
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +439 -310
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/z2s/src/sql.d.ts +1 -1
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js +186 -218
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/package.json.js +9 -0
- package/out/zero/package.json.js.map +1 -0
- package/out/zero/src/adapters/drizzle.d.ts +1 -1
- package/out/zero/src/adapters/drizzle.d.ts.map +1 -1
- package/out/zero/src/adapters/drizzle.js +8 -2
- package/out/zero/src/adapters/drizzle.js.map +1 -1
- package/out/zero/src/adapters/pg.js +7 -2
- package/out/zero/src/adapters/pg.js.map +1 -1
- package/out/zero/src/adapters/postgresjs.js +7 -2
- package/out/zero/src/adapters/postgresjs.js.map +1 -1
- package/out/zero/src/analyze-query.js +1 -1
- package/out/zero/src/analyze-query.js.map +1 -1
- package/out/zero/src/ast-to-zql.js +1 -1
- package/out/zero/src/ast-to-zql.js.map +1 -1
- package/out/zero/src/bindings.d.ts +2 -0
- package/out/zero/src/bindings.d.ts.map +1 -0
- package/out/zero/src/bindings.js +27 -0
- package/out/zero/src/bindings.js.map +1 -0
- package/out/zero/src/build-schema.js +3 -5
- package/out/zero/src/build-schema.js.map +1 -1
- package/out/zero/src/change-protocol/v0.js +5 -3
- package/out/zero/src/change-protocol/v0.js.map +1 -1
- package/out/zero/src/cli.js +2 -2
- package/out/zero/src/cli.js.map +1 -1
- package/out/zero/src/deploy-permissions.js +1 -1
- package/out/zero/src/deploy-permissions.js.map +1 -1
- package/out/zero/src/expo-sqlite.js +5 -0
- package/out/zero/src/expo-sqlite.js.map +1 -0
- package/out/zero/src/op-sqlite.js +5 -0
- package/out/zero/src/op-sqlite.js.map +1 -0
- package/out/zero/src/pg.js +31 -3
- package/out/zero/src/pg.js.map +1 -1
- package/out/zero/src/react-native.js +13 -0
- package/out/zero/src/react-native.js.map +1 -0
- package/out/zero/src/react.js +15 -0
- package/out/zero/src/react.js.map +1 -0
- package/out/zero/src/server.js +27 -3
- package/out/zero/src/server.js.map +1 -1
- package/out/zero/src/solid.js +15 -0
- package/out/zero/src/solid.js.map +1 -0
- package/out/zero/src/sqlite.js +7 -0
- package/out/zero/src/sqlite.js.map +1 -0
- package/out/zero/src/transform-query.js +1 -1
- package/out/zero/src/transform-query.js.map +1 -1
- package/out/zero/src/zero-cache-dev.js +138 -104
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero/src/zero-out.js +6 -6
- package/out/zero/src/zero-out.js.map +1 -1
- package/out/zero/src/zero.js +71 -0
- package/out/zero/src/zero.js.map +1 -0
- package/out/zero/src/zqlite.js +11 -3
- package/out/zero/src/zqlite.js.map +1 -1
- package/out/zero-cache/src/auth/jwt.d.ts +3 -0
- package/out/zero-cache/src/auth/jwt.d.ts.map +1 -1
- package/out/zero-cache/src/auth/jwt.js +33 -38
- package/out/zero-cache/src/auth/jwt.js.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts +1 -1
- package/out/zero-cache/src/auth/load-permissions.d.ts.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js +61 -45
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/auth/read-authorizer.d.ts +1 -1
- package/out/zero-cache/src/auth/read-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/read-authorizer.js +79 -91
- package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.d.ts +4 -3
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +395 -328
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/network.js +42 -45
- package/out/zero-cache/src/config/network.js.map +1 -1
- package/out/zero-cache/src/config/normalize.js +86 -83
- package/out/zero-cache/src/config/normalize.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +63 -0
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +743 -682
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts +5 -5
- package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +170 -162
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts +10 -3
- package/out/zero-cache/src/custom-queries/transform-query.d.ts.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js +101 -109
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/db/create.js +32 -36
- package/out/zero-cache/src/db/create.js.map +1 -1
- package/out/zero-cache/src/db/delete-lite-db.js +9 -6
- package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.d.ts.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +150 -174
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js +170 -165
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/db/migration.js +157 -137
- package/out/zero-cache/src/db/migration.js.map +1 -1
- package/out/zero-cache/src/db/mode-enum.d.ts +2 -0
- package/out/zero-cache/src/db/mode-enum.d.ts.map +1 -1
- package/out/zero-cache/src/db/mode-enum.js +9 -3
- package/out/zero-cache/src/db/mode-enum.js.map +1 -1
- package/out/zero-cache/src/db/pg-copy.js +51 -90
- package/out/zero-cache/src/db/pg-copy.js.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.d.ts +10 -0
- package/out/zero-cache/src/db/pg-to-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +116 -97
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/db/pg-type-parser.js +27 -39
- package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js +11 -6
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +1 -1
- package/out/zero-cache/src/db/postgres-type-class-enum.js +17 -9
- package/out/zero-cache/src/db/postgres-type-class-enum.js.map +1 -1
- package/out/zero-cache/src/db/specs.d.ts +1 -7
- package/out/zero-cache/src/db/specs.d.ts.map +1 -1
- package/out/zero-cache/src/db/specs.js +66 -40
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/db/statements.d.ts +1 -1
- package/out/zero-cache/src/db/statements.d.ts.map +1 -1
- package/out/zero-cache/src/db/statements.js +59 -52
- package/out/zero-cache/src/db/statements.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.d.ts +1 -1
- package/out/zero-cache/src/db/transaction-pool.d.ts.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js +372 -501
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/db/warmup.js +25 -12
- package/out/zero-cache/src/db/warmup.js.map +1 -1
- package/out/zero-cache/src/observability/events.js +71 -82
- package/out/zero-cache/src/observability/events.js.map +1 -1
- package/out/zero-cache/src/observability/metrics.js +54 -32
- package/out/zero-cache/src/observability/metrics.js.map +1 -1
- package/out/zero-cache/src/scripts/decommission.js +47 -43
- package/out/zero-cache/src/scripts/decommission.js.map +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js +132 -119
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
- package/out/zero-cache/src/scripts/permissions.d.ts +1 -1
- package/out/zero-cache/src/scripts/permissions.d.ts.map +1 -1
- package/out/zero-cache/src/scripts/permissions.js +106 -100
- package/out/zero-cache/src/scripts/permissions.js.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.d.ts +10 -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 +426 -366
- 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 +99 -64
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/inspector-delegate.js +112 -109
- package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
- package/out/zero-cache/src/server/logging.d.ts +1 -1
- package/out/zero-cache/src/server/logging.d.ts.map +1 -1
- package/out/zero-cache/src/server/logging.js +26 -19
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/main.d.ts.map +1 -1
- package/out/zero-cache/src/server/main.js +137 -120
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/mutator.js +19 -0
- package/out/zero-cache/src/server/mutator.js.map +1 -0
- package/out/zero-cache/src/server/otel-diag-logger.d.ts +1 -1
- package/out/zero-cache/src/server/otel-diag-logger.d.ts.map +1 -1
- package/out/zero-cache/src/server/otel-diag-logger.js +48 -71
- package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
- package/out/zero-cache/src/server/otel-log-sink.js +40 -41
- package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
- package/out/zero-cache/src/server/otel-start.d.ts +1 -1
- package/out/zero-cache/src/server/otel-start.d.ts.map +1 -1
- package/out/zero-cache/src/server/otel-start.js +53 -68
- package/out/zero-cache/src/server/otel-start.js.map +1 -1
- package/out/zero-cache/src/server/reaper.js +34 -26
- package/out/zero-cache/src/server/reaper.js.map +1 -1
- package/out/zero-cache/src/server/replicator.js +53 -31
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/runner/main.js +6 -4
- package/out/zero-cache/src/server/runner/main.js.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.js +46 -50
- package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
- package/out/zero-cache/src/server/runner/runtime.js +33 -32
- package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.js +28 -22
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +130 -63
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.d.ts +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.d.ts.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.js +112 -106
- package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/worker-urls.d.ts +7 -0
- package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -0
- package/out/zero-cache/src/server/worker-urls.js +21 -0
- package/out/zero-cache/src/server/worker-urls.js.map +1 -0
- package/out/zero-cache/src/services/analyze.d.ts +4 -9
- package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
- package/out/zero-cache/src/services/analyze.js +118 -121
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/column-metadata.d.ts +10 -3
- package/out/zero-cache/src/services/change-source/column-metadata.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/column-metadata.js +154 -144
- package/out/zero-cache/src/services/change-source/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js +197 -171
- package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/sync-schema.js +11 -3
- package/out/zero-cache/src/services/change-source/custom/sync-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.d.ts +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 +622 -623
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.js +24 -23
- package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +327 -284
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts +2 -3
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +61 -69
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +247 -257
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +127 -119
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/lsn.js +20 -19
- package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.d.ts +5 -5
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +96 -119
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.js +138 -117
- package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts +2 -2
- package/out/zero-cache/src/services/change-source/pg/schema/published.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.js +70 -76
- package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js +199 -188
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js +53 -38
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js +11 -3
- package/out/zero-cache/src/services/change-source/pg/sync-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/control.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.js +13 -19
- package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.js +143 -116
- package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts +2 -0
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +29 -19
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts +8 -0
- package/out/zero-cache/src/services/change-source/protocol/current/json.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/json.js +19 -0
- package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current/path.js +5 -20
- package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.js +12 -13
- package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +5 -4
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current.d.ts +1 -0
- package/out/zero-cache/src/services/change-source/protocol/current.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current.js +38 -7
- package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
- package/out/zero-cache/src/services/change-source/replica-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-source/replica-schema.js +67 -37
- package/out/zero-cache/src/services/change-source/replica-schema.js.map +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 +139 -157
- 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.d.ts +11 -4
- 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 +208 -157
- 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.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +242 -349
- 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 +5 -1
- 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 +24 -22
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js +9 -4
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.js +53 -57
- package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts +16 -0
- package/out/zero-cache/src/services/change-streamer/replica-monitor.d.ts.map +1 -0
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js +48 -0
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -0
- package/out/zero-cache/src/services/change-streamer/schema/init.js +82 -68
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +2 -2
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js +93 -78
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts +58 -0
- package/out/zero-cache/src/services/change-streamer/snapshot.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.js +28 -18
- package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +3 -2
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +308 -353
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +3 -2
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +85 -87
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/heapz.js +21 -25
- package/out/zero-cache/src/services/heapz.js.map +1 -1
- package/out/zero-cache/src/services/http-service.d.ts +5 -5
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +57 -59
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/life-cycle.d.ts +1 -1
- package/out/zero-cache/src/services/life-cycle.d.ts.map +1 -1
- package/out/zero-cache/src/services/life-cycle.js +216 -255
- package/out/zero-cache/src/services/life-cycle.js.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +76 -130
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts +1 -1
- package/out/zero-cache/src/services/litestream/commands.d.ts.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +202 -154
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/error.js +11 -6
- package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +2 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +271 -267
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.d.ts +202 -2
- package/out/zero-cache/src/services/mutagen/pusher.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +354 -348
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +483 -497
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +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 +97 -97
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/notifier.js +28 -52
- package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replication-status.d.ts +2 -0
- package/out/zero-cache/src/services/replicator/replication-status.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replication-status.js +113 -83
- package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +33 -26
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js +74 -86
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/constants.js +5 -7
- package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +2 -2
- 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 +70 -74
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/run-ast.d.ts +9 -3
- package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
- package/out/zero-cache/src/services/run-ast.js +91 -78
- package/out/zero-cache/src/services/run-ast.js.map +1 -1
- package/out/zero-cache/src/services/runner.d.ts +1 -1
- package/out/zero-cache/src/services/runner.d.ts.map +1 -1
- package/out/zero-cache/src/services/runner.js +40 -40
- package/out/zero-cache/src/services/runner.js.map +1 -1
- package/out/zero-cache/src/services/running-state.d.ts +1 -1
- package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/running-state.js +122 -119
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/statz.js +184 -162
- package/out/zero-cache/src/services/statz.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts +2 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +56 -42
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +307 -298
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js +80 -82
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +110 -96
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +6 -5
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +676 -611
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts +4 -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 +643 -694
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +38 -60
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts +2 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +175 -85
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +23 -22
- 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 +584 -461
- 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 +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 +229 -277
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +1 -0
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +79 -131
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +207 -131
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +4 -4
- package/out/zero-cache/src/services/view-syncer/schema/types.js +265 -257
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +5 -5
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +309 -337
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js +13 -7
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +5 -4
- 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 +1514 -1311
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/error-with-level.d.ts.map +1 -1
- package/out/zero-cache/src/types/error-with-level.js +30 -21
- package/out/zero-cache/src/types/error-with-level.js.map +1 -1
- package/out/zero-cache/src/types/http.js +27 -14
- package/out/zero-cache/src/types/http.js.map +1 -1
- package/out/zero-cache/src/types/lexi-version.js +46 -31
- package/out/zero-cache/src/types/lexi-version.js.map +1 -1
- package/out/zero-cache/src/types/lite.js +118 -125
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/names.js +6 -3
- package/out/zero-cache/src/types/names.js.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.js +74 -68
- package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
- package/out/zero-cache/src/types/pg-types.js +17 -72
- package/out/zero-cache/src/types/pg-types.js.map +1 -1
- package/out/zero-cache/src/types/pg.d.ts +1 -1
- package/out/zero-cache/src/types/pg.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg.js +213 -233
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/processes.d.ts +2 -2
- package/out/zero-cache/src/types/processes.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.js +95 -143
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/profiler.js +29 -30
- package/out/zero-cache/src/types/profiler.js.map +1 -1
- package/out/zero-cache/src/types/row-key.js +30 -68
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/schema-versions.js +25 -19
- package/out/zero-cache/src/types/schema-versions.js.map +1 -1
- package/out/zero-cache/src/types/shards.js +50 -36
- package/out/zero-cache/src/types/shards.js.map +1 -1
- package/out/zero-cache/src/types/sql.js +9 -13
- package/out/zero-cache/src/types/sql.js.map +1 -1
- package/out/zero-cache/src/types/streams.js +245 -254
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/strings.js +14 -11
- package/out/zero-cache/src/types/strings.js.map +1 -1
- package/out/zero-cache/src/types/subscription.js +200 -259
- package/out/zero-cache/src/types/subscription.js.map +1 -1
- package/out/zero-cache/src/types/url-params.js +35 -30
- package/out/zero-cache/src/types/url-params.js.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.d.ts +5 -4
- package/out/zero-cache/src/types/websocket-handoff.d.ts.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +68 -76
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/types/ws.js +56 -59
- package/out/zero-cache/src/types/ws.js.map +1 -1
- package/out/zero-cache/src/workers/connect-params.d.ts +1 -0
- package/out/zero-cache/src/workers/connect-params.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connect-params.js +46 -40
- package/out/zero-cache/src/workers/connect-params.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +282 -243
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/mutator.js +24 -0
- package/out/zero-cache/src/workers/mutator.js.map +1 -0
- package/out/zero-cache/src/workers/replicator.d.ts +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +103 -106
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +181 -147
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts +3 -3
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +192 -169
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.js +199 -0
- package/out/zero-client/src/client/active-clients-manager.js.map +1 -0
- package/out/zero-client/src/client/bindings.d.ts +13 -0
- package/out/zero-client/src/client/bindings.d.ts.map +1 -0
- package/out/zero-client/src/client/client-error-kind-enum.d.ts +12 -12
- package/out/zero-client/src/client/client-error-kind-enum.d.ts.map +1 -1
- package/out/zero-client/src/client/client-error-kind-enum.js +29 -0
- package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -0
- package/out/zero-client/src/client/connection-manager.d.ts +20 -40
- package/out/zero-client/src/client/connection-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/connection-manager.js +310 -0
- package/out/zero-client/src/client/connection-manager.js.map +1 -0
- package/out/zero-client/src/client/connection-status-enum.js +15 -0
- package/out/zero-client/src/client/connection-status-enum.js.map +1 -0
- package/out/zero-client/src/client/connection.d.ts +48 -5
- package/out/zero-client/src/client/connection.d.ts.map +1 -1
- package/out/zero-client/src/client/connection.js +110 -0
- package/out/zero-client/src/client/connection.js.map +1 -0
- package/out/zero-client/src/client/context.d.ts +9 -10
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/context.js +104 -0
- package/out/zero-client/src/client/context.js.map +1 -0
- package/out/zero-client/src/client/crud-impl.d.ts +11 -0
- package/out/zero-client/src/client/crud-impl.d.ts.map +1 -0
- package/out/zero-client/src/client/crud-impl.js +102 -0
- package/out/zero-client/src/client/crud-impl.js.map +1 -0
- package/out/zero-client/src/client/crud.d.ts +17 -47
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.js +143 -0
- package/out/zero-client/src/client/crud.js.map +1 -0
- package/out/zero-client/src/client/custom.d.ts +52 -25
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +87 -0
- package/out/zero-client/src/client/custom.js.map +1 -0
- package/out/zero-client/src/client/delete-clients-manager.d.ts +2 -2
- package/out/zero-client/src/client/delete-clients-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/delete-clients-manager.js +98 -0
- package/out/zero-client/src/client/delete-clients-manager.js.map +1 -0
- package/out/zero-client/src/client/enable-analytics.js +18 -0
- package/out/zero-client/src/client/enable-analytics.js.map +1 -0
- package/out/zero-client/src/client/error.d.ts +30 -12
- package/out/zero-client/src/client/error.d.ts.map +1 -1
- package/out/zero-client/src/client/error.js +148 -0
- package/out/zero-client/src/client/error.js.map +1 -0
- package/out/zero-client/src/client/http-string.js +11 -0
- package/out/zero-client/src/client/http-string.js.map +1 -0
- package/out/zero-client/src/client/inspector/client-group.js +27 -0
- package/out/zero-client/src/client/inspector/client-group.js.map +1 -0
- package/out/zero-client/src/client/inspector/client.js +28 -0
- package/out/zero-client/src/client/inspector/client.js.map +1 -0
- package/out/zero-client/src/client/inspector/html-dialog-prompt.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js +77 -0
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -0
- package/out/zero-client/src/client/inspector/inspector.d.ts +8 -3
- package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.js +54 -0
- package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
- package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +4 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js +243 -0
- package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -0
- package/out/zero-client/src/client/inspector/query.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/query.js +82 -0
- package/out/zero-client/src/client/inspector/query.js.map +1 -0
- package/out/zero-client/src/client/ivm-branch.d.ts +4 -4
- package/out/zero-client/src/client/ivm-branch.d.ts.map +1 -1
- package/out/zero-client/src/client/ivm-branch.js +156 -0
- package/out/zero-client/src/client/ivm-branch.js.map +1 -0
- package/out/zero-client/src/client/keys.js +45 -0
- package/out/zero-client/src/client/keys.js.map +1 -0
- package/out/zero-client/src/client/log-options.js +60 -0
- package/out/zero-client/src/client/log-options.js.map +1 -0
- package/out/zero-client/src/client/make-mutate-property.d.ts +40 -0
- package/out/zero-client/src/client/make-mutate-property.d.ts.map +1 -0
- package/out/zero-client/src/client/make-mutate-property.js +33 -0
- package/out/zero-client/src/client/make-mutate-property.js.map +1 -0
- package/out/zero-client/src/client/make-replicache-mutators.d.ts +34 -0
- package/out/zero-client/src/client/make-replicache-mutators.d.ts.map +1 -0
- package/out/zero-client/src/client/make-replicache-mutators.js +108 -0
- package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -0
- package/out/zero-client/src/client/metric-name-enum.js +15 -0
- package/out/zero-client/src/client/metric-name-enum.js.map +1 -0
- package/out/zero-client/src/client/metrics.d.ts +2 -2
- package/out/zero-client/src/client/metrics.d.ts.map +1 -1
- package/out/zero-client/src/client/metrics.js +249 -0
- package/out/zero-client/src/client/metrics.js.map +1 -0
- package/out/zero-client/src/client/mutation-tracker.d.ts +12 -4
- package/out/zero-client/src/client/mutation-tracker.d.ts.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.js +363 -0
- package/out/zero-client/src/client/mutation-tracker.js.map +1 -0
- package/out/zero-client/src/client/mutator-proxy.d.ts +16 -0
- package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -0
- package/out/zero-client/src/client/mutator-proxy.js +143 -0
- package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
- package/out/zero-client/src/client/options.d.ts +70 -10
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/options.js +11 -0
- package/out/zero-client/src/client/options.js.map +1 -0
- package/out/zero-client/src/client/query-manager.d.ts +9 -2
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.js +377 -0
- package/out/zero-client/src/client/query-manager.js.map +1 -0
- package/out/zero-client/src/client/reload-error-handler.d.ts +4 -4
- package/out/zero-client/src/client/reload-error-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.js +114 -0
- package/out/zero-client/src/client/reload-error-handler.js.map +1 -0
- package/out/zero-client/src/client/server-option.js +64 -0
- package/out/zero-client/src/client/server-option.js.map +1 -0
- package/out/zero-client/src/client/update-needed-reason-type-enum.js +9 -0
- package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -0
- package/out/zero-client/src/client/version.js +5 -0
- package/out/zero-client/src/client/version.js.map +1 -0
- package/out/zero-client/src/client/zero-poke-handler.d.ts +4 -4
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js +303 -0
- package/out/zero-client/src/client/zero-poke-handler.js.map +1 -0
- package/out/zero-client/src/client/zero-rep.d.ts +3 -2
- package/out/zero-client/src/client/zero-rep.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-rep.js +72 -0
- package/out/zero-client/src/client/zero-rep.js.map +1 -0
- package/out/zero-client/src/client/zero.d.ts +119 -28
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +1800 -0
- package/out/zero-client/src/client/zero.js.map +1 -0
- package/out/zero-client/src/mod.d.ts +23 -20
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-client/src/types/query-result.d.ts +5 -4
- package/out/zero-client/src/types/query-result.d.ts.map +1 -1
- package/out/zero-client/src/util/nanoid.js +21 -0
- package/out/zero-client/src/util/nanoid.js.map +1 -0
- package/out/zero-client/src/util/socket.js +7 -0
- package/out/zero-client/src/util/socket.js.map +1 -0
- package/out/zero-events/src/status.d.ts +1 -1
- package/out/zero-events/src/status.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.d.ts +238 -1
- package/out/zero-protocol/src/analyze-query-result.d.ts.map +1 -1
- package/out/zero-protocol/src/analyze-query-result.js +159 -24
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/application-error.d.ts +2 -8
- package/out/zero-protocol/src/application-error.d.ts.map +1 -1
- package/out/zero-protocol/src/application-error.js +35 -34
- package/out/zero-protocol/src/application-error.js.map +1 -1
- package/out/zero-protocol/src/ast.d.ts +2 -2
- package/out/zero-protocol/src/ast.js +296 -277
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.d.ts +2 -2
- package/out/zero-protocol/src/change-desired-queries.js +11 -7
- package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
- package/out/zero-protocol/src/client-schema.d.ts +2 -2
- package/out/zero-protocol/src/client-schema.d.ts.map +1 -1
- package/out/zero-protocol/src/client-schema.js +40 -26
- package/out/zero-protocol/src/client-schema.js.map +1 -1
- package/out/zero-protocol/src/close-connection.js +11 -18
- package/out/zero-protocol/src/close-connection.js.map +1 -1
- package/out/zero-protocol/src/connect.d.ts +4 -4
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js +50 -51
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/custom-queries.d.ts +4 -4
- package/out/zero-protocol/src/custom-queries.js +61 -39
- package/out/zero-protocol/src/custom-queries.js.map +1 -1
- package/out/zero-protocol/src/data.js +9 -4
- package/out/zero-protocol/src/data.js.map +1 -1
- package/out/zero-protocol/src/delete-clients.js +16 -9
- package/out/zero-protocol/src/delete-clients.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +107 -7
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/down.js +20 -4
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/error-kind-enum.js +41 -23
- package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
- package/out/zero-protocol/src/error-origin-enum.js +9 -4
- package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
- package/out/zero-protocol/src/error-reason-enum.js +17 -8
- package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
- package/out/zero-protocol/src/error.d.ts +17 -17
- package/out/zero-protocol/src/error.js +151 -89
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/inspect-down.d.ts +321 -21
- package/out/zero-protocol/src/inspect-down.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-down.js +72 -54
- package/out/zero-protocol/src/inspect-down.js.map +1 -1
- package/out/zero-protocol/src/inspect-up.d.ts +10 -6
- package/out/zero-protocol/src/inspect-up.d.ts.map +1 -1
- package/out/zero-protocol/src/inspect-up.js +39 -26
- package/out/zero-protocol/src/inspect-up.js.map +1 -1
- package/out/zero-protocol/src/mutation-id.js +9 -5
- package/out/zero-protocol/src/mutation-id.js.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.js +7 -3
- package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
- package/out/zero-protocol/src/mutations-patch.js +16 -17
- package/out/zero-protocol/src/mutations-patch.js.map +1 -1
- package/out/zero-protocol/src/ping.js +9 -4
- package/out/zero-protocol/src/ping.js.map +1 -1
- package/out/zero-protocol/src/poke.js +55 -72
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.js +9 -4
- package/out/zero-protocol/src/pong.js.map +1 -1
- package/out/zero-protocol/src/primary-key.js +19 -5
- package/out/zero-protocol/src/primary-key.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.d.ts +2 -2
- package/out/zero-protocol/src/protocol-version.d.ts.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +7 -58
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/pull.js +26 -19
- package/out/zero-protocol/src/pull.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +4 -4
- package/out/zero-protocol/src/push.js +179 -176
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.d.ts +3 -3
- package/out/zero-protocol/src/queries-patch.js +29 -22
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/query-hash.js +18 -14
- package/out/zero-protocol/src/query-hash.js.map +1 -1
- package/out/zero-protocol/src/row-patch.js +29 -20
- package/out/zero-protocol/src/row-patch.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +6 -5
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-protocol/src/up.js +18 -4
- package/out/zero-protocol/src/up.js.map +1 -1
- package/out/zero-protocol/src/version.js +9 -4
- package/out/zero-protocol/src/version.js.map +1 -1
- package/out/zero-react/src/bindings.d.ts +2 -0
- package/out/zero-react/src/bindings.d.ts.map +1 -0
- package/out/zero-react/src/mod.d.ts +2 -13
- package/out/zero-react/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/use-connection-state.d.ts +9 -0
- package/out/zero-react/src/use-connection-state.d.ts.map +1 -0
- package/out/zero-react/src/use-connection-state.js +14 -0
- package/out/zero-react/src/use-connection-state.js.map +1 -0
- package/out/zero-react/src/use-query.d.ts +5 -9
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-query.js +289 -0
- package/out/zero-react/src/use-query.js.map +1 -0
- package/out/zero-react/src/use-zero-online.d.ts +1 -1
- package/out/zero-react/src/use-zero-online.js +14 -0
- package/out/zero-react/src/use-zero-online.js.map +1 -0
- package/out/zero-react/src/zero-provider.d.ts +19 -10
- package/out/zero-react/src/zero-provider.d.ts.map +1 -1
- package/out/zero-react/src/zero-provider.js +77 -0
- package/out/zero-react/src/zero-provider.js.map +1 -0
- package/out/zero-react/src/zero.d.ts +2 -0
- package/out/zero-react/src/zero.d.ts.map +1 -0
- package/out/zero-schema/src/builder/relationship-builder.js +22 -19
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.d.ts +1 -3
- package/out/zero-schema/src/builder/schema-builder.d.ts.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.js +81 -71
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
- package/out/zero-schema/src/builder/table-builder.js +117 -116
- package/out/zero-schema/src/builder/table-builder.js.map +1 -1
- package/out/zero-schema/src/compiled-permissions.d.ts +22 -2
- package/out/zero-schema/src/compiled-permissions.d.ts.map +1 -1
- package/out/zero-schema/src/compiled-permissions.js +24 -19
- package/out/zero-schema/src/compiled-permissions.js.map +1 -1
- package/out/zero-schema/src/name-mapper.js +43 -38
- package/out/zero-schema/src/name-mapper.js.map +1 -1
- package/out/zero-schema/src/permissions.d.ts +12 -9
- package/out/zero-schema/src/permissions.d.ts.map +1 -1
- package/out/zero-schema/src/permissions.js +193 -0
- package/out/zero-schema/src/permissions.js.map +1 -0
- package/out/zero-schema/src/schema-config.d.ts +1 -6
- package/out/zero-schema/src/schema-config.d.ts.map +1 -1
- package/out/zero-schema/src/schema-config.js +35 -51
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-server/src/adapters/drizzle.d.ts +2 -2
- package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js +84 -97
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/pg.d.ts +8 -2
- package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
- package/out/zero-server/src/adapters/pg.js +54 -74
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts +7 -2
- package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js +40 -54
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/custom.d.ts +48 -19
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js +278 -106
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/logging.js +7 -4
- package/out/zero-server/src/logging.js.map +1 -1
- package/out/zero-server/src/mod.d.ts +1 -1
- package/out/zero-server/src/mod.d.ts.map +1 -1
- package/out/zero-server/src/pg-query-executor.d.ts +11 -0
- package/out/zero-server/src/pg-query-executor.d.ts.map +1 -0
- package/out/zero-server/src/pg-query-executor.js +20 -0
- package/out/zero-server/src/pg-query-executor.js.map +1 -0
- package/out/zero-server/src/process-mutations.d.ts +13 -13
- package/out/zero-server/src/process-mutations.d.ts.map +1 -1
- package/out/zero-server/src/process-mutations.js +328 -272
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/push-processor.d.ts +5 -3
- package/out/zero-server/src/push-processor.d.ts.map +1 -1
- package/out/zero-server/src/push-processor.js +50 -32
- package/out/zero-server/src/push-processor.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts +76 -3
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +104 -93
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/schema.d.ts +2 -2
- package/out/zero-server/src/schema.d.ts.map +1 -1
- package/out/zero-server/src/schema.js +136 -124
- package/out/zero-server/src/schema.js.map +1 -1
- package/out/zero-server/src/zql-database.d.ts +9 -6
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +56 -51
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/bindings.d.ts +2 -0
- package/out/zero-solid/src/bindings.d.ts.map +1 -0
- package/out/zero-solid/src/mod.d.ts +1 -9
- package/out/zero-solid/src/mod.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +3 -5
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/{solid.js → zero-solid/src/solid-view.js} +47 -196
- package/out/zero-solid/src/solid-view.js.map +1 -0
- package/out/zero-solid/src/{use-zero-connection-state.d.ts → use-connection-state.d.ts} +3 -3
- package/out/zero-solid/src/use-connection-state.d.ts.map +1 -0
- package/out/zero-solid/src/use-connection-state.js +17 -0
- package/out/zero-solid/src/use-connection-state.js.map +1 -0
- package/out/zero-solid/src/use-query.d.ts +4 -7
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.js +92 -0
- package/out/zero-solid/src/use-query.js.map +1 -0
- package/out/zero-solid/src/use-zero-online.d.ts +1 -1
- package/out/zero-solid/src/use-zero-online.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero-online.js +15 -0
- package/out/zero-solid/src/use-zero-online.js.map +1 -0
- package/out/zero-solid/src/use-zero.d.ts +22 -11
- package/out/zero-solid/src/use-zero.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero.js +86 -0
- package/out/zero-solid/src/use-zero.js.map +1 -0
- package/out/zero-solid/src/zero.d.ts +2 -0
- package/out/zero-solid/src/zero.d.ts.map +1 -0
- package/out/zero-types/src/default-types.d.ts +38 -0
- package/out/zero-types/src/default-types.d.ts.map +1 -0
- package/out/zero-types/src/format.js +7 -4
- package/out/zero-types/src/format.js.map +1 -1
- package/out/zero-types/src/name-mapper.js +43 -40
- package/out/zero-types/src/name-mapper.js.map +1 -1
- package/out/zero-types/src/schema.d.ts +4 -4
- package/out/zero-types/src/server-schema.d.ts.map +1 -0
- package/out/zql/src/builder/builder.d.ts +10 -2
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +474 -427
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/debug-delegate.d.ts +4 -0
- package/out/zql/src/builder/debug-delegate.d.ts.map +1 -1
- package/out/zql/src/builder/debug-delegate.js +68 -47
- package/out/zql/src/builder/debug-delegate.js.map +1 -1
- package/out/zql/src/builder/filter.js +132 -138
- package/out/zql/src/builder/filter.js.map +1 -1
- package/out/zql/src/builder/like.js +44 -51
- package/out/zql/src/builder/like.js.map +1 -1
- package/out/zql/src/error.d.ts +5 -0
- package/out/zql/src/error.d.ts.map +1 -1
- package/out/zql/src/error.js +9 -6
- package/out/zql/src/error.js.map +1 -1
- package/out/zql/src/ivm/array-view.d.ts +2 -2
- package/out/zql/src/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/ivm/array-view.js +89 -92
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/constraint.js +74 -127
- package/out/zql/src/ivm/constraint.js.map +1 -1
- package/out/zql/src/ivm/data.d.ts +7 -2
- package/out/zql/src/ivm/data.d.ts.map +1 -1
- package/out/zql/src/ivm/data.js +53 -87
- package/out/zql/src/ivm/data.js.map +1 -1
- package/out/zql/src/ivm/exists.d.ts +6 -4
- package/out/zql/src/ivm/exists.d.ts.map +1 -1
- package/out/zql/src/ivm/exists.js +206 -244
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.d.ts +5 -3
- package/out/zql/src/ivm/fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-in.js +58 -52
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.d.ts +4 -2
- package/out/zql/src/ivm/fan-out.d.ts.map +1 -1
- package/out/zql/src/ivm/fan-out.js +56 -48
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/filter-operators.d.ts +13 -11
- package/out/zql/src/ivm/filter-operators.d.ts.map +1 -1
- package/out/zql/src/ivm/filter-operators.js +91 -88
- package/out/zql/src/ivm/filter-operators.js.map +1 -1
- package/out/zql/src/ivm/filter-push.d.ts +2 -1
- package/out/zql/src/ivm/filter-push.d.ts.map +1 -1
- package/out/zql/src/ivm/filter-push.js +27 -24
- package/out/zql/src/ivm/filter-push.js.map +1 -1
- package/out/zql/src/ivm/filter.d.ts +4 -2
- package/out/zql/src/ivm/filter.d.ts.map +1 -1
- package/out/zql/src/ivm/filter.js +36 -32
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/flipped-join.d.ts +1 -2
- package/out/zql/src/ivm/flipped-join.d.ts.map +1 -1
- package/out/zql/src/ivm/flipped-join.js +372 -325
- package/out/zql/src/ivm/flipped-join.js.map +1 -1
- package/out/zql/src/ivm/join-utils.d.ts +9 -2
- package/out/zql/src/ivm/join-utils.d.ts.map +1 -1
- package/out/zql/src/ivm/join-utils.js +104 -78
- package/out/zql/src/ivm/join-utils.js.map +1 -1
- package/out/zql/src/ivm/join.d.ts +3 -16
- package/out/zql/src/ivm/join.d.ts.map +1 -1
- package/out/zql/src/ivm/join.js +225 -211
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.d.ts.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +26 -24
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
- package/out/zql/src/ivm/memory-source.d.ts +9 -8
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +484 -491
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/memory-storage.js +32 -31
- package/out/zql/src/ivm/memory-storage.js.map +1 -1
- package/out/zql/src/ivm/operator.d.ts +15 -12
- package/out/zql/src/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/ivm/operator.js +16 -9
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/push-accumulated.d.ts +2 -2
- package/out/zql/src/ivm/push-accumulated.d.ts.map +1 -1
- package/out/zql/src/ivm/push-accumulated.js +236 -305
- package/out/zql/src/ivm/push-accumulated.js.map +1 -1
- package/out/zql/src/ivm/skip.d.ts +2 -3
- package/out/zql/src/ivm/skip.d.ts.map +1 -1
- package/out/zql/src/ivm/skip.js +95 -106
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/source.d.ts +18 -8
- package/out/zql/src/ivm/source.d.ts.map +1 -1
- package/out/zql/src/ivm/stream.d.ts +2 -0
- package/out/zql/src/ivm/stream.d.ts.map +1 -1
- package/out/zql/src/ivm/stream.js +12 -17
- package/out/zql/src/ivm/stream.js.map +1 -1
- package/out/zql/src/ivm/take.d.ts +2 -3
- package/out/zql/src/ivm/take.d.ts.map +1 -1
- package/out/zql/src/ivm/take.js +525 -451
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.d.ts +4 -4
- package/out/zql/src/ivm/union-fan-in.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +213 -132
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/union-fan-out.d.ts +2 -3
- package/out/zql/src/ivm/union-fan-out.d.ts.map +1 -1
- package/out/zql/src/ivm/union-fan-out.js +43 -45
- package/out/zql/src/ivm/union-fan-out.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 +247 -217
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/ivm/view.d.ts +3 -2
- package/out/zql/src/ivm/view.d.ts.map +1 -1
- package/out/zql/src/mutate/crud.d.ts +116 -0
- package/out/zql/src/mutate/crud.d.ts.map +1 -0
- package/out/zql/src/mutate/crud.js +41 -0
- package/out/zql/src/mutate/crud.js.map +1 -0
- package/out/zql/src/mutate/custom.d.ts +39 -63
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js +12 -8
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.d.ts +112 -0
- package/out/zql/src/mutate/mutator-registry.d.ts.map +1 -0
- package/out/zql/src/mutate/mutator-registry.js +88 -0
- package/out/zql/src/mutate/mutator-registry.js.map +1 -0
- package/out/zql/src/mutate/mutator.d.ts +94 -0
- package/out/zql/src/mutate/mutator.d.ts.map +1 -0
- package/out/zql/src/mutate/mutator.js +34 -0
- package/out/zql/src/mutate/mutator.js.map +1 -0
- package/out/zql/src/planner/planner-builder.d.ts +2 -1
- package/out/zql/src/planner/planner-builder.d.ts.map +1 -1
- package/out/zql/src/planner/planner-builder.js +239 -148
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-connection.d.ts +14 -15
- package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
- package/out/zql/src/planner/planner-connection.js +205 -247
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-constraint.js +8 -11
- package/out/zql/src/planner/planner-constraint.js.map +1 -1
- package/out/zql/src/planner/planner-debug.d.ts +39 -44
- package/out/zql/src/planner/planner-debug.d.ts.map +1 -1
- package/out/zql/src/planner/planner-debug.js +227 -161
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-fan-in.d.ts.map +1 -1
- package/out/zql/src/planner/planner-fan-in.js +157 -159
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-fan-out.d.ts.map +1 -1
- package/out/zql/src/planner/planner-fan-out.js +73 -59
- package/out/zql/src/planner/planner-fan-out.js.map +1 -1
- package/out/zql/src/planner/planner-graph.d.ts +10 -9
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +323 -357
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.d.ts +7 -3
- package/out/zql/src/planner/planner-join.d.ts.map +1 -1
- package/out/zql/src/planner/planner-join.js +239 -322
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.d.ts +6 -1
- package/out/zql/src/planner/planner-node.d.ts.map +1 -1
- package/out/zql/src/planner/planner-node.js +8 -2
- package/out/zql/src/planner/planner-node.js.map +1 -1
- package/out/zql/src/planner/planner-source.js +23 -12
- package/out/zql/src/planner/planner-source.js.map +1 -1
- package/out/zql/src/planner/planner-terminus.js +28 -27
- package/out/zql/src/planner/planner-terminus.js.map +1 -1
- package/out/zql/src/query/complete-ordering.d.ts +5 -0
- package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
- package/out/zql/src/query/complete-ordering.js +71 -0
- package/out/zql/src/query/complete-ordering.js.map +1 -0
- package/out/zql/src/query/create-builder.d.ts +10 -0
- package/out/zql/src/query/create-builder.d.ts.map +1 -0
- package/out/zql/src/query/create-builder.js +32 -0
- package/out/zql/src/query/create-builder.js.map +1 -0
- package/out/zql/src/query/error.js +12 -8
- package/out/zql/src/query/error.js.map +1 -1
- package/out/zql/src/query/escape-like.js +7 -0
- package/out/zql/src/query/escape-like.js.map +1 -0
- package/out/zql/src/query/expression.d.ts +5 -5
- package/out/zql/src/query/expression.d.ts.map +1 -1
- package/out/zql/src/query/expression.js +153 -151
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/measure-push-operator.d.ts +2 -3
- package/out/zql/src/query/measure-push-operator.d.ts.map +1 -1
- package/out/zql/src/query/measure-push-operator.js +39 -35
- package/out/zql/src/query/measure-push-operator.js.map +1 -1
- package/out/zql/src/query/metrics-delegate.js +9 -5
- package/out/zql/src/query/metrics-delegate.js.map +1 -1
- package/out/zql/src/query/named.d.ts +21 -12
- package/out/zql/src/query/named.d.ts.map +1 -1
- package/out/zql/src/query/named.js +46 -64
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.d.ts +120 -0
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -0
- package/out/zql/src/query/query-delegate-base.js +250 -0
- package/out/zql/src/query/query-delegate-base.js.map +1 -0
- package/out/zql/src/query/query-delegate.d.ts +27 -4
- package/out/zql/src/query/query-delegate.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +30 -52
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +393 -459
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internals.d.ts +68 -0
- package/out/zql/src/query/query-internals.d.ts.map +1 -0
- package/out/zql/src/query/query-internals.js +11 -0
- package/out/zql/src/query/query-internals.js.map +1 -0
- package/out/zql/src/query/query-registry.d.ts +239 -0
- package/out/zql/src/query/query-registry.d.ts.map +1 -0
- package/out/zql/src/query/query-registry.js +121 -0
- package/out/zql/src/query/query-registry.js.map +1 -0
- package/out/zql/src/query/query.d.ts +65 -242
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.d.ts +22 -0
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -0
- package/out/zql/src/query/runnable-query-impl.js +60 -0
- package/out/zql/src/query/runnable-query-impl.js.map +1 -0
- package/out/zql/src/query/schema-query.d.ts +7 -0
- package/out/zql/src/query/schema-query.d.ts.map +1 -0
- package/out/zql/src/query/static-query.d.ts +3 -25
- package/out/zql/src/query/static-query.d.ts.map +1 -1
- package/out/zql/src/query/static-query.js +18 -32
- package/out/zql/src/query/static-query.js.map +1 -1
- package/out/zql/src/query/ttl.js +69 -62
- package/out/zql/src/query/ttl.js.map +1 -1
- package/out/zql/src/query/validate-input.d.ts +15 -0
- package/out/zql/src/query/validate-input.d.ts.map +1 -0
- package/out/zql/src/query/validate-input.js +24 -0
- package/out/zql/src/query/validate-input.js.map +1 -0
- package/out/zqlite/src/database-storage.d.ts +1 -1
- package/out/zqlite/src/database-storage.d.ts.map +1 -1
- package/out/zqlite/src/database-storage.js +99 -102
- package/out/zqlite/src/database-storage.js.map +1 -1
- package/out/zqlite/src/db.d.ts +2 -1
- package/out/zqlite/src/db.d.ts.map +1 -1
- package/out/zqlite/src/db.js +241 -192
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/explain-queries.js +13 -16
- package/out/zqlite/src/explain-queries.js.map +1 -1
- package/out/zqlite/src/internal/sql-inline.d.ts +13 -0
- package/out/zqlite/src/internal/sql-inline.d.ts.map +1 -0
- package/out/zqlite/src/internal/sql-inline.js +45 -0
- package/out/zqlite/src/internal/sql-inline.js.map +1 -0
- package/out/zqlite/src/internal/sql.js +15 -10
- package/out/zqlite/src/internal/sql.js.map +1 -1
- package/out/zqlite/src/internal/statement-cache.js +86 -110
- package/out/zqlite/src/internal/statement-cache.js.map +1 -1
- package/out/zqlite/src/query-builder.js +172 -143
- package/out/zqlite/src/query-builder.js.map +1 -1
- package/out/zqlite/src/query-delegate.d.ts +5 -19
- package/out/zqlite/src/query-delegate.d.ts.map +1 -1
- package/out/zqlite/src/query-delegate.js +56 -70
- package/out/zqlite/src/query-delegate.js.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.d.ts.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.js +97 -121
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.d.ts +121 -0
- package/out/zqlite/src/sqlite-stat-fanout.d.ts.map +1 -0
- package/out/zqlite/src/sqlite-stat-fanout.js +301 -0
- package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -0
- package/out/zqlite/src/table-source.d.ts +18 -6
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +443 -311
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +32 -29
- package/out/chunk-424PT5DM.js +0 -23
- package/out/chunk-424PT5DM.js.map +0 -7
- package/out/chunk-AFADJQ2O.js +0 -1
- package/out/chunk-AFADJQ2O.js.map +0 -7
- package/out/chunk-ASRS2LFV.js.map +0 -7
- package/out/chunk-ECUMGQGC.js.map +0 -7
- package/out/chunk-EZM3XBAB.js.map +0 -7
- package/out/chunk-QZSBDHTA.js +0 -18337
- package/out/chunk-QZSBDHTA.js.map +0 -7
- package/out/chunk-TJFNGO7E.js +0 -4126
- package/out/chunk-TJFNGO7E.js.map +0 -7
- package/out/chunk-VZOYWIRW.js +0 -30
- package/out/chunk-VZOYWIRW.js.map +0 -7
- package/out/chunk-YTVU4GOY.js +0 -372
- package/out/chunk-YTVU4GOY.js.map +0 -7
- package/out/chunk-ZZXMKAAG.js.map +0 -7
- package/out/expo-sqlite.js +0 -11
- package/out/expo-sqlite.js.map +0 -7
- package/out/inspector-IU2HG74I.js +0 -43
- package/out/inspector-IU2HG74I.js.map +0 -7
- package/out/lazy-inspector-OXIFYSSQ.js +0 -574
- package/out/lazy-inspector-OXIFYSSQ.js.map +0 -7
- package/out/op-sqlite.js.map +0 -7
- package/out/react-native.js +0 -25
- package/out/react-native.js.map +0 -7
- package/out/react.js +0 -479
- package/out/react.js.map +0 -7
- package/out/shared/src/enum.js +0 -2
- package/out/shared/src/enum.js.map +0 -1
- package/out/shared/src/expand.js +0 -2
- package/out/shared/src/expand.js.map +0 -1
- package/out/shared/src/immutable.js +0 -2
- package/out/shared/src/immutable.js.map +0 -1
- package/out/shared/src/types.js +0 -2
- package/out/shared/src/types.js.map +0 -1
- package/out/shared/src/writable.js +0 -2
- package/out/shared/src/writable.js.map +0 -1
- package/out/solid.js.map +0 -7
- package/out/sqlite.js +0 -15
- package/out/sqlite.js.map +0 -7
- package/out/zero/package.json +0 -194
- package/out/zero/src/server/change-streamer.js +0 -2
- package/out/zero/src/server/change-streamer.js.map +0 -1
- package/out/zero/src/server/main.js +0 -2
- package/out/zero/src/server/main.js.map +0 -1
- package/out/zero/src/server/reaper.js +0 -2
- package/out/zero/src/server/reaper.js.map +0 -1
- package/out/zero/src/server/replicator.js +0 -2
- package/out/zero/src/server/replicator.js.map +0 -1
- package/out/zero/src/server/runner/main.js +0 -2
- package/out/zero/src/server/runner/main.js.map +0 -1
- package/out/zero/src/server/syncer.js +0 -2
- package/out/zero/src/server/syncer.js.map +0 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js +0 -4
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput.types.js.map +0 -1
- package/out/zero-cache/src/services/change-source/protocol/mod.js +0 -5
- package/out/zero-cache/src/services/change-source/protocol/mod.js.map +0 -1
- package/out/zero-cache/src/services/service.js +0 -2
- package/out/zero-cache/src/services/service.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/key-columns.d.ts +0 -32
- package/out/zero-cache/src/services/view-syncer/key-columns.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/key-columns.js +0 -75
- package/out/zero-cache/src/services/view-syncer/key-columns.js.map +0 -1
- package/out/zero-cache/src/types/satisfies.js +0 -2
- package/out/zero-cache/src/types/satisfies.js.map +0 -1
- package/out/zero-client/src/client/on-error.d.ts +0 -15
- package/out/zero-client/src/client/on-error.d.ts.map +0 -1
- package/out/zero-client/src/client/zero-log-context.d.ts +0 -7
- package/out/zero-client/src/client/zero-log-context.d.ts.map +0 -1
- package/out/zero-events/src/index.js +0 -2
- package/out/zero-events/src/index.js.map +0 -1
- package/out/zero-events/src/json.js +0 -2
- package/out/zero-events/src/json.js.map +0 -1
- package/out/zero-events/src/status.js +0 -3
- package/out/zero-events/src/status.js.map +0 -1
- package/out/zero-pg/src/mod.js +0 -6
- package/out/zero-pg/src/mod.js.map +0 -1
- package/out/zero-protocol/src/error-kind.js +0 -3
- package/out/zero-protocol/src/error-kind.js.map +0 -1
- package/out/zero-protocol/src/error-origin.js +0 -3
- package/out/zero-protocol/src/error-origin.js.map +0 -1
- package/out/zero-protocol/src/error-reason.js +0 -3
- package/out/zero-protocol/src/error-reason.js.map +0 -1
- package/out/zero-react/src/components/inspector.d.ts +0 -8
- package/out/zero-react/src/components/inspector.d.ts.map +0 -1
- package/out/zero-react/src/components/mark-icon.d.ts +0 -3
- package/out/zero-react/src/components/mark-icon.d.ts.map +0 -1
- package/out/zero-react/src/components/zero-inspector.d.ts +0 -7
- package/out/zero-react/src/components/zero-inspector.d.ts.map +0 -1
- package/out/zero-react/src/use-zero-connection-state.d.ts +0 -9
- package/out/zero-react/src/use-zero-connection-state.d.ts.map +0 -1
- package/out/zero-schema/src/server-schema.d.ts.map +0 -1
- package/out/zero-schema/src/server-schema.js +0 -2
- package/out/zero-schema/src/server-schema.js.map +0 -1
- package/out/zero-schema/src/table-schema.js +0 -7
- package/out/zero-schema/src/table-schema.js.map +0 -1
- package/out/zero-server/src/mod.js +0 -9
- package/out/zero-server/src/mod.js.map +0 -1
- package/out/zero-server/src/query.d.ts +0 -22
- package/out/zero-server/src/query.d.ts.map +0 -1
- package/out/zero-server/src/query.js +0 -61
- package/out/zero-server/src/query.js.map +0 -1
- package/out/zero-solid/src/use-zero-connection-state.d.ts.map +0 -1
- package/out/zero-types/src/schema-value.js +0 -2
- package/out/zero-types/src/schema-value.js.map +0 -1
- package/out/zero-types/src/schema.js +0 -2
- package/out/zero-types/src/schema.js.map +0 -1
- package/out/zero.js +0 -81
- package/out/zero.js.map +0 -7
- package/out/zql/src/ivm/change.js +0 -2
- package/out/zql/src/ivm/change.js.map +0 -1
- package/out/zql/src/ivm/default-format.js +0 -2
- package/out/zql/src/ivm/default-format.js.map +0 -1
- package/out/zql/src/ivm/schema.js +0 -2
- package/out/zql/src/ivm/schema.js.map +0 -1
- package/out/zql/src/ivm/source.js +0 -2
- package/out/zql/src/ivm/source.js.map +0 -1
- package/out/zql/src/ivm/view.js +0 -2
- package/out/zql/src/ivm/view.js.map +0 -1
- package/out/zql/src/query/query-delegate.js +0 -2
- package/out/zql/src/query/query-delegate.js.map +0 -1
- package/out/zql/src/query/query.js +0 -9
- package/out/zql/src/query/query.js.map +0 -1
- package/out/zql/src/query/typed-view.js +0 -2
- package/out/zql/src/query/typed-view.js.map +0 -1
- package/out/zqlite/src/mod.js +0 -5
- package/out/zqlite/src/mod.js.map +0 -1
- /package/out/{zero-schema → zero-types}/src/server-schema.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-syncer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/view-syncer/view-syncer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"view-syncer.js","sources":["../../../../../../zero-cache/src/services/view-syncer/view-syncer.ts"],"sourcesContent":["import {trace} from '@opentelemetry/api';\nimport {Lock} from '@rocicorp/lock';\nimport type {LogContext} from '@rocicorp/logger';\nimport {resolver} from '@rocicorp/resolver';\nimport type {JWTPayload} from 'jose';\nimport type {Row} from 'postgres';\nimport {\n manualSpan,\n startAsyncSpan,\n startSpan,\n} from '../../../../otel/src/span.ts';\nimport {version} from '../../../../otel/src/version.ts';\nimport {assert, unreachable} from '../../../../shared/src/asserts.ts';\nimport {stringify} from '../../../../shared/src/bigint-json.ts';\nimport {CustomKeyMap} from '../../../../shared/src/custom-key-map.ts';\nimport {must} from '../../../../shared/src/must.ts';\nimport {randInt} from '../../../../shared/src/rand.ts';\nimport type {AST} from '../../../../zero-protocol/src/ast.ts';\nimport type {ChangeDesiredQueriesMessage} from '../../../../zero-protocol/src/change-desired-queries.ts';\nimport type {\n InitConnectionBody,\n InitConnectionMessage,\n} from '../../../../zero-protocol/src/connect.ts';\nimport type {ErroredQuery} from '../../../../zero-protocol/src/custom-queries.ts';\nimport type {DeleteClientsMessage} from '../../../../zero-protocol/src/delete-clients.ts';\nimport type {Downstream} from '../../../../zero-protocol/src/down.ts';\nimport {ErrorKind} from '../../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../../zero-protocol/src/error-origin.ts';\nimport {\n ProtocolError,\n type TransformFailedBody,\n} from '../../../../zero-protocol/src/error.ts';\nimport type {\n InspectUpBody,\n InspectUpMessage,\n} from '../../../../zero-protocol/src/inspect-up.ts';\nimport {clampTTL, MAX_TTL_MS} from '../../../../zql/src/query/ttl.ts';\nimport {\n transformAndHashQuery,\n type TransformedAndHashed,\n} from '../../auth/read-authorizer.ts';\nimport type {NormalizedZeroConfig} from '../../config/normalize.ts';\nimport type {ZeroConfig} from '../../config/zero-config.ts';\nimport type {CustomQueryTransformer} from '../../custom-queries/transform-query.ts';\nimport type {HeaderOptions} from '../../custom/fetch.ts';\nimport {\n getOrCreateCounter,\n getOrCreateHistogram,\n getOrCreateUpDownCounter,\n} from '../../observability/metrics.ts';\nimport type {InspectorDelegate} from '../../server/inspector-delegate.ts';\nimport {\n getLogLevel,\n ProtocolErrorWithLevel,\n} from '../../types/error-with-level.ts';\nimport type {PostgresDB} from '../../types/pg.ts';\nimport {rowIDString, type RowKey} from '../../types/row-key.ts';\nimport type {ShardID} from '../../types/shards.ts';\nimport type {Source} from '../../types/streams.ts';\nimport {Subscription} from '../../types/subscription.ts';\nimport type {ReplicaState} from '../replicator/replicator.ts';\nimport {ZERO_VERSION_COLUMN_NAME} from '../replicator/schema/replication-state.ts';\nimport type {ActivityBasedService} from '../service.ts';\nimport {\n ClientHandler,\n startPoke,\n type PatchToVersion,\n type PokeHandler,\n type RowPatch,\n} from './client-handler.ts';\nimport {ClientNotFoundError, CVRStore} from './cvr-store.ts';\nimport type {CVRUpdater} from './cvr.ts';\nimport {\n CVRConfigDrivenUpdater,\n CVRQueryDrivenUpdater,\n nextEvictionTime,\n type CVRSnapshot,\n type RowUpdate,\n} from './cvr.ts';\nimport type {DrainCoordinator} from './drain-coordinator.ts';\nimport {handleInspect} from './inspect-handler.ts';\nimport type {PipelineDriver} from './pipeline-driver.ts';\nimport {type RowChange} from './pipeline-driver.ts';\nimport {\n cmpVersions,\n EMPTY_CVR_VERSION,\n versionFromString,\n versionString,\n versionToCookie,\n type ClientQueryRecord,\n type CustomQueryRecord,\n type CVRVersion,\n type InternalQueryRecord,\n type NullableCVRVersion,\n type QueryRecord,\n type RowID,\n} from './schema/types.ts';\nimport {ResetPipelinesSignal} from './snapshotter.ts';\nimport {\n ttlClockAsNumber,\n ttlClockFromNumber,\n type TTLClock,\n} from './ttl-clock.ts';\n\nexport type TokenData = {\n readonly raw: string;\n /** @deprecated */\n readonly decoded: JWTPayload;\n};\n\nexport type SyncContext = {\n readonly clientID: string;\n readonly wsID: string;\n readonly profileID: string | null;\n readonly baseCookie: string | null;\n readonly protocolVersion: number;\n readonly schemaVersion: number | null;\n readonly tokenData: TokenData | undefined;\n readonly httpCookie: string | undefined;\n};\n\nconst tracer = trace.getTracer('view-syncer', version);\n\nconst PROTOCOL_VERSION_ATTR = 'protocol.version';\n\nexport interface ViewSyncer {\n initConnection(\n ctx: SyncContext,\n msg: InitConnectionMessage,\n ): Source<Downstream>;\n\n changeDesiredQueries(\n ctx: SyncContext,\n msg: ChangeDesiredQueriesMessage,\n ): Promise<void>;\n\n deleteClients(ctx: SyncContext, msg: DeleteClientsMessage): Promise<void>;\n inspect(context: SyncContext, msg: InspectUpMessage): Promise<void>;\n}\n\nconst DEFAULT_KEEPALIVE_MS = 5_000;\n\nfunction randomID() {\n return randInt(1, Number.MAX_SAFE_INTEGER).toString(36);\n}\n\ntype SetTimeout = (\n fn: (...args: unknown[]) => void,\n delay?: number,\n) => ReturnType<typeof setTimeout>;\n\n/**\n * We update the ttlClock in flush that writes to the CVR but\n * some flushes do not write to the CVR and in those cases we\n * use a timer to update the ttlClock every minute.\n */\nexport const TTL_CLOCK_INTERVAL = 60_000;\n\n/**\n * This is some extra time we delay the TTL timer to allow for some\n * slack in the timing of the timer. This is to allow multiple evictions\n * to happen in a short period of time without having to wait for the\n * next tick of the timer.\n */\nexport const TTL_TIMER_HYSTERESIS = 50; // ms\n\nexport class ViewSyncerService implements ViewSyncer, ActivityBasedService {\n readonly id: string;\n readonly #shard: ShardID;\n readonly #lc: LogContext;\n readonly #pipelines: PipelineDriver;\n readonly #stateChanges: Subscription<ReplicaState>;\n readonly #drainCoordinator: DrainCoordinator;\n readonly #keepaliveMs: number;\n readonly #slowHydrateThreshold: number;\n readonly #queryConfig: ZeroConfig['query'];\n\n userQueryURL?: string | undefined;\n\n // The ViewSyncerService is only started in response to a connection,\n // so #lastConnectTime is always initialized to now(). This is necessary\n // to handle race conditions in which, e.g. the replica is ready and the\n // CVR is accessed before the first connection sends a request.\n //\n // Note: It is fine to update this variable outside of the lock.\n #lastConnectTime = Date.now();\n\n /**\n * The TTL clock is used to determine the time at which queries are considered\n * expired.\n */\n #ttlClock: TTLClock | undefined;\n\n /**\n * The base time for the TTL clock. This is used to compute the current TTL\n * clock value. The first time a connection is made, this is set to the\n * current time. On subsequent connections, the TTL clock is computed as the\n * difference between the current time and this base time.\n *\n * Every time we write the ttlClock this is update to the current time. That\n * way we can compute how much time has passed since the last time we set the\n * ttlClock. When we set the ttlClock we just increment it by the amount of\n * time that has passed since the last time we set it.\n */\n #ttlClockBase = Date.now();\n\n /**\n * We update the ttlClock every minute to ensure that it is not too much\n * out of sync with the current time.\n */\n #ttlClockInterval: ReturnType<SetTimeout> | 0 = 0;\n\n // Note: It is okay to add/remove clients without acquiring the lock.\n readonly #clients = new Map<string, ClientHandler>();\n\n // Serialize on this lock for:\n // (1) storage or database-dependent operations\n // (2) updating member variables.\n readonly #lock = new Lock();\n readonly #cvrStore: CVRStore;\n readonly #stopped = resolver();\n readonly #initialized = resolver<'initialized'>();\n\n #cvr: CVRSnapshot | undefined;\n #pipelinesSynced = false;\n // DEPRECATED: remove `authData` in favor of forwarding\n // auth and cookie headers directly\n #authData: TokenData | undefined;\n\n #httpCookie: string | undefined;\n\n #expiredQueriesTimer: ReturnType<SetTimeout> | 0 = 0;\n readonly #setTimeout: SetTimeout;\n readonly #customQueryTransformer: CustomQueryTransformer | undefined;\n\n // Track query replacements for thrashing detection\n readonly #queryReplacements = new Map<\n string,\n {count: number; windowStart: number}\n >();\n\n readonly #activeClients = getOrCreateUpDownCounter(\n 'sync',\n 'active-clients',\n 'Number of active sync clients',\n );\n readonly #hydrations = getOrCreateCounter(\n 'sync',\n 'hydration',\n 'Number of query hydrations',\n );\n readonly #hydrationTime = getOrCreateHistogram('sync', 'hydration-time', {\n description: 'Time to hydrate a query.',\n unit: 's',\n });\n readonly #transactionAdvanceTime = getOrCreateHistogram(\n 'sync',\n 'advance-time',\n {\n description:\n 'Time to advance all queries for a given client group after applying a new transaction to the replica.',\n unit: 's',\n },\n );\n readonly #queryTransformations = getOrCreateCounter(\n 'sync',\n 'query.transformations',\n 'Number of query transformations performed',\n );\n readonly #queryTransformationTime = getOrCreateHistogram(\n 'sync',\n 'query.transformation-time',\n {\n description: 'Time to transform custom queries via API server',\n unit: 's',\n },\n );\n readonly #queryTransformationHashChanges = getOrCreateCounter(\n 'sync',\n 'query.transformation-hash-changes',\n 'Number of times query transformation hash changed',\n );\n readonly #queryTransformationNoOps = getOrCreateCounter(\n 'sync',\n 'query.transformation-no-ops',\n 'Number of times query transformation resulted in no-op (hash unchanged)',\n );\n\n readonly #inspectorDelegate: InspectorDelegate;\n\n readonly #config: NormalizedZeroConfig;\n\n constructor(\n config: NormalizedZeroConfig,\n lc: LogContext,\n shard: ShardID,\n taskID: string,\n clientGroupID: string,\n cvrDb: PostgresDB,\n upstreamDb: PostgresDB | undefined,\n pipelineDriver: PipelineDriver,\n versionChanges: Subscription<ReplicaState>,\n drainCoordinator: DrainCoordinator,\n slowHydrateThreshold: number,\n inspectorDelegate: InspectorDelegate,\n customQueryTransformer: CustomQueryTransformer | undefined,\n keepaliveMs = DEFAULT_KEEPALIVE_MS,\n setTimeoutFn: SetTimeout = setTimeout.bind(globalThis),\n ) {\n const queryConfig = config.query?.url ? config.query : config.getQueries;\n this.#config = config;\n this.id = clientGroupID;\n this.#shard = shard;\n this.#queryConfig = queryConfig;\n this.#lc = lc;\n this.#pipelines = pipelineDriver;\n this.#stateChanges = versionChanges;\n this.#drainCoordinator = drainCoordinator;\n this.#keepaliveMs = keepaliveMs;\n this.#slowHydrateThreshold = slowHydrateThreshold;\n this.#inspectorDelegate = inspectorDelegate;\n this.#customQueryTransformer = customQueryTransformer;\n this.#cvrStore = new CVRStore(\n lc,\n cvrDb,\n upstreamDb,\n shard,\n taskID,\n clientGroupID,\n // On failure, cancel the #stateChanges subscription. The run()\n // loop will then await #cvrStore.flushed() which rejects if necessary.\n () => this.#stateChanges.cancel(),\n );\n this.#setTimeout = setTimeoutFn;\n\n // Wait for the first connection to init.\n this.keepalive();\n }\n\n #getHeaderOptions(forwardCookie: boolean): HeaderOptions {\n return {\n apiKey: this.#queryConfig.apiKey,\n token: this.#authData?.raw,\n cookie: forwardCookie ? this.#httpCookie : undefined,\n };\n }\n\n #runInLockWithCVR(\n fn: (lc: LogContext, cvr: CVRSnapshot) => Promise<void> | void,\n ): Promise<void> {\n const rid = randomID();\n this.#lc.debug?.('about to acquire lock for cvr ', rid);\n return this.#lock.withLock(async () => {\n this.#lc.debug?.('acquired lock in #runInLockWithCVR ', rid);\n const lc = this.#lc.withContext('lock', rid);\n if (!this.#stateChanges.active) {\n // view-syncer has been shutdown. this can be a backlog of tasks\n // queued on the lock, or it can be a race condition in which a\n // client connects before the ViewSyncer has been deleted from the\n // ServiceRunner.\n this.#lc.debug?.('state changes are inactive');\n clearTimeout(this.#expiredQueriesTimer);\n throw new ProtocolErrorWithLevel({\n kind: ErrorKind.Rehome,\n message: 'Reconnect required',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n // If all clients have disconnected, cancel all pending work.\n if (await this.#checkForShutdownConditionsInLock()) {\n this.#lc.info?.(`closing clientGroupID=${this.id}`);\n this.#stateChanges.cancel(); // Note: #stateChanges.active becomes false.\n return;\n }\n if (!this.#cvr) {\n this.#lc.debug?.('loading CVR');\n this.#cvr = await this.#cvrStore.load(lc, this.#lastConnectTime);\n this.#ttlClock = this.#cvr.ttlClock;\n this.#ttlClockBase = Date.now();\n } else {\n // Make sure the CVR ttlClock is up to date.\n const now = Date.now();\n this.#cvr = {\n ...this.#cvr,\n ttlClock: this.#getTTLClock(now),\n };\n }\n\n try {\n await fn(lc, this.#cvr);\n } catch (e) {\n // Clear cached state if an error is encountered.\n this.#cvr = undefined;\n throw e;\n }\n });\n }\n\n readyState(): Promise<'initialized' | 'draining'> {\n return Promise.race([\n this.#initialized.promise,\n this.#drainCoordinator.draining,\n ]);\n }\n\n async run(): Promise<void> {\n try {\n // Wait for initialization if we need to process queries.\n // This ensures authData and cvr.clientSchema are available before\n // transforming custom queries (dependency on authData) and building\n // pipelines (dependency on cvr.clientSchema).\n if ((await this.readyState()) === 'draining') {\n this.#lc.debug?.(`draining view-syncer ${this.id} before running`);\n void this.stop();\n }\n for await (const {state} of this.#stateChanges) {\n if (this.#drainCoordinator.shouldDrain()) {\n this.#lc.debug?.(`draining view-syncer ${this.id} (elective)`);\n break;\n }\n assert(state === 'version-ready', 'state should be version-ready'); // This is the only state change used.\n\n await this.#runInLockWithCVR(async (lc, cvr) => {\n const clientSchema = must(\n cvr.clientSchema,\n 'cvr.clientSchema missing after initialization',\n );\n if (!this.#pipelines.initialized()) {\n // On the first version-ready signal, connect to the replica.\n this.#pipelines.init(clientSchema);\n }\n if (\n cvr.replicaVersion !== null &&\n cvr.version.stateVersion !== '00' &&\n this.#pipelines.replicaVersion < cvr.replicaVersion\n ) {\n const message = `Cannot sync from older replica: CVR=${\n cvr.replicaVersion\n }, DB=${this.#pipelines.replicaVersion}`;\n lc.info?.(`resetting CVR: ${message}`);\n throw new ClientNotFoundError(message);\n }\n\n if (this.#pipelinesSynced) {\n const result = await this.#advancePipelines(lc, cvr);\n if (result === 'success') {\n return;\n }\n lc.info?.(`resetting pipelines: ${result.message}`);\n this.#pipelines.reset(clientSchema);\n }\n\n // Advance the snapshot to the current version.\n const version = this.#pipelines.advanceWithoutDiff();\n const cvrVer = versionString(cvr.version);\n\n if (version < cvr.version.stateVersion) {\n lc.debug?.(`replica@${version} is behind cvr@${cvrVer}`);\n return; // Wait for the next advancement.\n }\n\n // stateVersion is at or beyond CVR version for the first time.\n lc.info?.(`init pipelines@${version} (cvr@${cvrVer})`);\n\n await this.#hydrateUnchangedQueries(lc, cvr);\n await this.#syncQueryPipelineSet(lc, cvr);\n this.#pipelinesSynced = true;\n });\n }\n\n // If this view-syncer exited due to an elective or forced drain,\n // set the next drain timeout.\n if (this.#drainCoordinator.shouldDrain()) {\n this.#drainCoordinator.drainNextIn(this.#totalHydrationTimeMs());\n }\n this.#cleanup();\n } catch (e) {\n this.#lc[getLogLevel(e)]?.(\n `stopping view-syncer ${this.id}: ${String(e)}`,\n e,\n );\n this.#cleanup(e);\n } finally {\n // Always wait for the cvrStore to flush, regardless of how the service\n // was stopped.\n await this.#cvrStore\n .flushed(this.#lc)\n .catch(e => this.#lc[getLogLevel(e)]?.(e));\n this.#lc.info?.(`view-syncer ${this.id} finished`);\n this.#stopped.resolve();\n }\n }\n\n // must be called from within #lock\n #removeExpiredQueries = async (\n lc: LogContext,\n cvr: CVRSnapshot,\n ): Promise<void> => {\n if (hasExpiredQueries(cvr)) {\n lc = lc.withContext('method', '#removeExpiredQueries');\n lc.debug?.('Queries have expired');\n // #syncQueryPipelineSet() will remove the expired queries.\n await this.#syncQueryPipelineSet(lc, cvr);\n this.#pipelinesSynced = true;\n }\n\n // Even if we have expired queries, we still need to schedule next eviction\n // since there might be inactivated queries that need to be expired queries\n // in the future.\n this.#scheduleExpireEviction(lc, cvr);\n };\n\n #totalHydrationTimeMs(): number {\n return this.#pipelines.totalHydrationTimeMs();\n }\n\n #keepAliveUntil: number = 0;\n\n /**\n * Guarantees that the ViewSyncer will remain running for at least\n * its configured `keepaliveMs`. This is called when establishing a\n * new connection to ensure that its associated ViewSyncer isn't\n * shutdown before it receives the connection.\n *\n * @return `true` if the ViewSyncer will stay alive, `false` if the\n * ViewSyncer is shutting down.\n */\n keepalive(): boolean {\n if (!this.#stateChanges.active) {\n return false;\n }\n this.#keepAliveUntil = Date.now() + this.#keepaliveMs;\n return true;\n }\n\n // oxlint-disable-next-line no-unused-private-class-members -- False positive, used in #scheduleShutdown\n #shutdownTimer: NodeJS.Timeout | null = null;\n\n #scheduleShutdown(delayMs = 0) {\n this.#shutdownTimer ??= this.#setTimeout(() => {\n this.#shutdownTimer = null;\n\n // All lock tasks check for shutdown so that queued work is immediately\n // canceled when clients disconnect. Queue an empty task to ensure that\n // this check happens.\n void this.#runInLockWithCVR(() => {}).catch(e =>\n // If an error occurs (e.g. ownership change), propagate the error\n // to the main run() loop via the #stateChanges Subscription.\n this.#stateChanges.fail(e),\n );\n }, delayMs);\n }\n\n async #checkForShutdownConditionsInLock(): Promise<boolean> {\n if (this.#clients.size > 0) {\n return false; // common case.\n }\n\n // Keep the view-syncer alive if there are pending rows being flushed.\n // It's better to do this before shutting down since it may take a\n // while, during which new connections may come in.\n await this.#cvrStore.flushed(this.#lc);\n\n if (Date.now() <= this.#keepAliveUntil) {\n this.#scheduleShutdown(this.#keepaliveMs); // check again later\n return false;\n }\n\n // If no clients have connected while waiting for the row flush, shutdown.\n return this.#clients.size === 0;\n }\n\n #deleteClientDueToDisconnect(clientID: string, client: ClientHandler) {\n // Note: It is okay to delete / cleanup clients without acquiring the lock.\n // In fact, it is important to do so in order to guarantee that idle cleanup\n // is performed in a timely manner, regardless of the amount of work\n // queued on the lock.\n const c = this.#clients.get(clientID);\n if (c === client) {\n this.#clients.delete(clientID);\n\n if (this.#clients.size === 0) {\n // It is possible to delete a client before we read the ttl clock from\n // the CVR.\n if (this.#ttlClock !== undefined) {\n this.#updateTTLClockInCVRWithoutLock(this.#lc);\n }\n this.#stopExpireTimer();\n this.#scheduleShutdown();\n }\n }\n }\n\n #stopExpireTimer() {\n this.#lc.debug?.('Stopping expired queries timer');\n clearTimeout(this.#expiredQueriesTimer);\n this.#expiredQueriesTimer = 0;\n }\n\n initConnection(\n ctx: SyncContext,\n initConnectionMessage: InitConnectionMessage,\n ): Source<Downstream> {\n this.#lc.debug?.('viewSyncer.initConnection');\n return startSpan(tracer, 'vs.initConnection', () => {\n const {\n clientID,\n profileID,\n wsID,\n baseCookie,\n schemaVersion,\n tokenData,\n httpCookie,\n protocolVersion,\n } = ctx;\n this.#authData = pickToken(this.#lc, this.#authData, tokenData);\n this.#lc.debug?.(\n `Picked auth token: ${JSON.stringify(this.#authData?.decoded)}`,\n );\n this.#httpCookie = httpCookie;\n\n // Handle custom query URL\n const [, {userQueryURL}] = initConnectionMessage;\n if (this.userQueryURL === undefined) {\n // First client in the group - store its parameters\n this.userQueryURL = userQueryURL;\n } else {\n // Validate that subsequent clients have compatible parameters\n if (this.userQueryURL !== userQueryURL) {\n this.#lc.warn?.(\n 'Client provided different query parameters than client group',\n {\n clientID,\n clientURL: userQueryURL,\n clientGroupURL: this.userQueryURL,\n },\n );\n }\n }\n\n const lc = this.#lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID);\n\n // Setup the downstream connection.\n const downstream = Subscription.create<Downstream>({\n cleanup: (_, err) => {\n err\n ? lc[getLogLevel(err)]?.(`client closed with error`, err)\n : lc.info?.('client closed');\n this.#deleteClientDueToDisconnect(clientID, newClient);\n this.#activeClients.add(-1, {\n [PROTOCOL_VERSION_ATTR]: protocolVersion,\n });\n },\n });\n this.#activeClients.add(1, {\n [PROTOCOL_VERSION_ATTR]: protocolVersion,\n });\n\n if (this.#clients.size === 0) {\n // First connection to this ViewSyncerService.\n\n // initConnection must be synchronous so that the downstream\n // subscription is returned immediately.\n const now = Date.now();\n this.#ttlClockBase = now;\n }\n\n const newClient = new ClientHandler(\n lc,\n this.id,\n clientID,\n wsID,\n this.#shard,\n baseCookie,\n schemaVersion,\n downstream,\n );\n this.#clients.get(clientID)?.close(`replaced by wsID: ${wsID}`);\n this.#clients.set(clientID, newClient);\n\n // Note: initConnection() must be synchronous so that `downstream` is\n // immediately returned to the caller (connection.ts). This ensures\n // that if the connection is subsequently closed, the `downstream`\n // subscription can be properly canceled even if #runInLockForClient()\n // has not had a chance to run.\n void this.#runInLockForClient(\n ctx,\n initConnectionMessage,\n async (lc, clientID, msg: InitConnectionBody, cvr) => {\n if (cvr.clientSchema === null && !msg.clientSchema) {\n throw new ProtocolErrorWithLevel({\n kind: ErrorKind.InvalidConnectionRequest,\n message:\n 'The initConnection message for a new client group must include client schema.',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n await this.#handleConfigUpdate(\n lc,\n clientID,\n msg,\n cvr,\n // Until the profileID is required in the URL, default it to\n // `cg${clientGroupID}`, as is done in the schema migration.\n // As clients update to the zero version with the profileID logic,\n // the value will be correspondingly in the CVR db.\n profileID ?? `cg${this.id}`,\n );\n // this.#authData and cvr (in particular cvr.clientSchema) have been\n // initialized, signal the run loop to run.\n this.#initialized.resolve('initialized');\n },\n newClient,\n ).catch(e => newClient.fail(e));\n\n return downstream;\n });\n }\n\n async changeDesiredQueries(\n ctx: SyncContext,\n msg: ChangeDesiredQueriesMessage,\n ): Promise<void> {\n await this.#runInLockForClient(ctx, msg, this.#handleConfigUpdate);\n }\n\n async deleteClients(\n ctx: SyncContext,\n msg: DeleteClientsMessage,\n ): Promise<void> {\n await this.#runInLockForClient(\n ctx,\n [msg[0], {deleted: msg[1]}],\n this.#handleConfigUpdate,\n );\n }\n\n #getTTLClock(now: number): TTLClock {\n // We will update ttlClock with delta from the ttlClockBase to the current time.\n const delta = now - this.#ttlClockBase;\n assert(this.#ttlClock !== undefined, 'ttlClock should be defined');\n const ttlClock = ttlClockFromNumber(\n ttlClockAsNumber(this.#ttlClock) + delta,\n );\n assert(\n ttlClockAsNumber(ttlClock) <= now,\n 'ttlClock should be less than or equal to now',\n );\n this.#ttlClock = ttlClock;\n this.#ttlClockBase = now;\n return ttlClock as TTLClock;\n }\n\n async #flushUpdater(\n lc: LogContext,\n updater: CVRUpdater,\n ): Promise<CVRSnapshot> {\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n const {cvr, flushed} = await updater.flush(\n lc,\n this.#lastConnectTime,\n now,\n ttlClock,\n );\n\n if (flushed) {\n // If the CVR was flushed, we restart the ttlClock interval.\n this.#startTTLClockInterval(lc);\n }\n\n return cvr;\n }\n\n #startTTLClockInterval(lc: LogContext): void {\n this.#stopTTLClockInterval();\n this.#ttlClockInterval = this.#setTimeout(() => {\n this.#updateTTLClockInCVRWithoutLock(lc);\n this.#startTTLClockInterval(lc);\n }, TTL_CLOCK_INTERVAL);\n }\n\n #stopTTLClockInterval(): void {\n clearTimeout(this.#ttlClockInterval);\n this.#ttlClockInterval = 0;\n }\n\n #updateTTLClockInCVRWithoutLock(lc: LogContext): void {\n lc.debug?.('Syncing ttlClock');\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n this.#cvrStore.updateTTLClock(ttlClock, now).catch(e => {\n lc.error?.('failed to update TTL clock', e);\n });\n }\n\n async #updateCVRConfig(\n lc: LogContext,\n cvr: CVRSnapshot,\n clientID: string,\n fn: (updater: CVRConfigDrivenUpdater) => PatchToVersion[],\n ): Promise<CVRSnapshot> {\n const updater = new CVRConfigDrivenUpdater(\n this.#cvrStore,\n cvr,\n this.#shard,\n );\n updater.ensureClient(clientID);\n const patches = fn(updater);\n\n this.#cvr = await this.#flushUpdater(lc, updater);\n\n if (cmpVersions(cvr.version, this.#cvr.version) < 0) {\n // Send pokes to catch up clients that are up to date.\n // (Clients that are behind the cvr.version need to be caught up in\n // #syncQueryPipelineSet(), as row data may be needed for catchup)\n const newCVR = this.#cvr;\n const pokers = startPoke(this.#getClients(cvr.version), newCVR.version);\n for (const patch of patches) {\n await pokers.addPatch(patch);\n }\n await pokers.end(newCVR.version);\n }\n\n if (this.#pipelinesSynced) {\n await this.#syncQueryPipelineSet(lc, this.#cvr);\n }\n\n return this.#cvr;\n }\n\n /**\n * Runs the given `fn` to process the `msg` from within the `#lock`,\n * optionally adding the `newClient` if supplied.\n */\n #runInLockForClient<B, M extends [cmd: string, B] = [string, B]>(\n ctx: SyncContext,\n msg: M,\n fn: (\n lc: LogContext,\n clientID: string,\n body: B,\n cvr: CVRSnapshot,\n ) => Promise<void>,\n newClient?: ClientHandler,\n ): Promise<void> {\n this.#lc.debug?.('viewSyncer.#runInLockForClient');\n const {clientID, wsID} = ctx;\n const [cmd, body] = msg;\n\n if (newClient || !this.#clients.has(clientID)) {\n this.#lastConnectTime = Date.now();\n }\n\n return startAsyncSpan(\n tracer,\n `vs.#runInLockForClient(${cmd})`,\n async () => {\n let client: ClientHandler | undefined;\n try {\n await this.#runInLockWithCVR((lc, cvr) => {\n lc = lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID)\n .withContext('cmd', cmd);\n lc.debug?.('acquired lock for cvr');\n\n client = this.#clients.get(clientID);\n if (client?.wsID !== wsID) {\n lc.debug?.('mismatched wsID', client?.wsID, wsID);\n // Only respond to messages of the currently connected client.\n // Connections may have been drained or dropped due to an error.\n return;\n }\n\n if (newClient) {\n assert(\n newClient === client,\n 'newClient must match existing client',\n );\n checkClientAndCVRVersions(client.version(), cvr.version);\n } else if (!this.#clients.has(clientID)) {\n lc.warn?.(`Processing ${cmd} before initConnection was received`);\n }\n\n lc.debug?.(cmd, body);\n return fn(lc, clientID, body, cvr);\n });\n } catch (e) {\n const lc = this.#lc\n .withContext('clientID', clientID)\n .withContext('wsID', wsID)\n .withContext('cmd', cmd);\n lc[getLogLevel(e)]?.(`closing connection with error`, e);\n if (client) {\n // Ideally, propagate the exception to the client's downstream subscription ...\n client.fail(e);\n } else {\n // unless the exception happened before the client could be looked up.\n throw e;\n }\n }\n },\n );\n }\n\n #getClients(atVersion?: CVRVersion): ClientHandler[] {\n const clients = [...this.#clients.values()];\n return atVersion\n ? clients.filter(\n c => cmpVersions(c.version() ?? EMPTY_CVR_VERSION, atVersion) === 0,\n )\n : clients;\n }\n\n // Must be called from within #lock.\n readonly #handleConfigUpdate = (\n lc: LogContext,\n clientID: string,\n\n {\n clientSchema,\n deleted,\n desiredQueriesPatch,\n activeClients,\n }: Partial<InitConnectionBody>,\n cvr: CVRSnapshot,\n profileID?: string,\n ) =>\n startAsyncSpan(tracer, 'vs.#patchQueries', async () => {\n const deletedClientIDs: string[] = [];\n const deletedClientGroupIDs: string[] = [];\n\n cvr = await this.#updateCVRConfig(lc, cvr, clientID, updater => {\n const {ttlClock} = cvr;\n const patches: PatchToVersion[] = [];\n\n if (clientSchema) {\n updater.setClientSchema(lc, clientSchema);\n }\n if (profileID) {\n updater.setProfileID(lc, profileID);\n }\n\n // Apply requested patches.\n lc.debug?.(`applying ${desiredQueriesPatch?.length} query patches`);\n if (desiredQueriesPatch?.length) {\n for (const patch of desiredQueriesPatch) {\n switch (patch.op) {\n case 'put':\n patches.push(...updater.putDesiredQueries(clientID, [patch]));\n break;\n case 'del':\n patches.push(\n ...updater.markDesiredQueriesAsInactive(\n clientID,\n [patch.hash],\n ttlClock,\n ),\n );\n break;\n case 'clear':\n patches.push(...updater.clearDesiredQueries(clientID));\n break;\n }\n }\n }\n\n const clientIDsToDelete: Set<string> = new Set();\n\n if (activeClients) {\n // We find all the clients in this client group that are not active.\n const allClientIDs = Object.keys(cvr.clients);\n const activeClientsSet = new Set(activeClients);\n for (const id of allClientIDs) {\n if (!activeClientsSet.has(id)) {\n clientIDsToDelete.add(id);\n }\n }\n }\n\n if (deleted?.clientIDs?.length) {\n for (const cid of deleted.clientIDs) {\n assert(cid !== clientID, 'cannot delete self');\n clientIDsToDelete.add(cid);\n }\n }\n\n for (const cid of clientIDsToDelete) {\n const patchesDueToClient = updater.deleteClient(cid, ttlClock);\n patches.push(...patchesDueToClient);\n deletedClientIDs.push(cid);\n }\n\n if (deleted?.clientGroupIDs?.length) {\n lc.debug?.(\n `ignoring ${deleted.clientGroupIDs.length} deprecated client group deletes`,\n );\n }\n\n return patches;\n });\n\n // Send 'deleteClients' ack to the clients.\n if (\n (deletedClientIDs.length && deleted?.clientIDs?.length) ||\n deletedClientGroupIDs.length\n ) {\n const clients = this.#getClients();\n await Promise.allSettled(\n clients.map(client =>\n client.sendDeleteClients(\n lc,\n deletedClientIDs,\n deletedClientGroupIDs,\n ),\n ),\n );\n }\n\n this.#scheduleExpireEviction(lc, cvr);\n });\n\n #scheduleExpireEviction(lc: LogContext, cvr: CVRSnapshot): void {\n const {ttlClock} = cvr;\n this.#stopExpireTimer();\n\n // first see if there is any inactive query with a ttl.\n const next = nextEvictionTime(cvr);\n\n if (next === undefined) {\n lc.debug?.('no inactive queries with ttl');\n // no inactive queries with a ttl. Cancel existing timeout if any.\n return;\n }\n\n // It is common for many queries to be evicted close to the same time, so\n // we add a small delay so we can collapse multiple evictions into a\n // single timer. However, don't add the delay if we're already at the\n // maximum timer limit, as that's not about collapsing.\n const delay = Math.max(\n TTL_TIMER_HYSTERESIS,\n Math.min(\n ttlClockAsNumber(next) -\n ttlClockAsNumber(ttlClock) +\n TTL_TIMER_HYSTERESIS,\n MAX_TTL_MS,\n ),\n );\n\n lc.debug?.('Scheduling eviction timer to run in ', delay, 'ms');\n this.#expiredQueriesTimer = this.#setTimeout(() => {\n this.#expiredQueriesTimer = 0;\n this.#runInLockWithCVR((lc, cvr) =>\n this.#removeExpiredQueries(lc, cvr),\n ).catch(e =>\n // If an error occurs (e.g. ownership change), propagate the error\n // to the main run() loop via the #stateChanges Subscription.\n this.#stateChanges.fail(e),\n );\n }, delay);\n }\n\n /**\n * Adds and hydrates pipelines for queries whose results are already\n * recorded in the CVR. Namely:\n *\n * 1. The CVR state version and database version are the same.\n * 2. The transformation hash of the queries equal those in the CVR.\n *\n * Note that by definition, only \"got\" queries can satisfy condition (2),\n * as desired queries do not have a transformation hash.\n *\n * This is an initialization step that sets up pipeline state without\n * the expensive of loading and diffing CVR row state.\n *\n * This must be called from within the #lock.\n */\n async #hydrateUnchangedQueries(lc: LogContext, cvr: CVRSnapshot) {\n assert(this.#pipelines.initialized(), 'pipelines must be initialized');\n\n const dbVersion = this.#pipelines.currentVersion();\n const cvrVersion = cvr.version;\n\n if (cvrVersion.stateVersion !== dbVersion) {\n lc.info?.(\n `CVR (${versionToCookie(cvrVersion)}) is behind db ${dbVersion}`,\n );\n return; // hydration needs to be run with the CVR updater.\n }\n\n const gotQueries = Object.entries(cvr.queries).filter(\n ([_, state]) => state.transformationHash !== undefined,\n );\n\n const customQueries: Map<string, CustomQueryRecord> = new Map();\n const otherQueries: (ClientQueryRecord | InternalQueryRecord)[] = [];\n\n for (const [, query] of gotQueries) {\n if (\n query.type !== 'internal' &&\n Object.values(query.clientState).every(\n ({inactivatedAt}) => inactivatedAt !== undefined,\n )\n ) {\n continue; // No longer desired.\n }\n\n if (query.type === 'custom') {\n customQueries.set(query.id, query);\n } else {\n otherQueries.push(query);\n }\n }\n\n const transformedQueries: TransformedAndHashed[] = [];\n if (customQueries.size > 0 && !this.#customQueryTransformer) {\n lc.warn?.(\n 'Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.',\n );\n }\n if (this.#customQueryTransformer && customQueries.size > 0) {\n // Always transform custom queries, even during initialization,\n // to ensure authorization validation with current auth context.\n const transformedCustomQueries =\n await this.#customQueryTransformer.transform(\n this.#getHeaderOptions(this.#queryConfig.forwardCookies),\n customQueries.values(),\n this.userQueryURL,\n );\n\n this.#processTransformedCustomQueries(\n lc,\n transformedCustomQueries,\n (q: TransformedAndHashed) => transformedQueries.push(q),\n customQueries,\n );\n }\n\n for (const q of otherQueries) {\n const transformed = transformAndHashQuery(\n lc,\n q.id,\n q.ast,\n must(this.#pipelines.currentPermissions()).permissions ?? {\n tables: {},\n },\n this.#authData?.decoded,\n q.type === 'internal',\n );\n if (transformed.transformationHash === q.transformationHash) {\n // only processing unchanged queries here\n transformedQueries.push(transformed);\n }\n }\n\n for (const {\n id: queryID,\n transformationHash,\n transformedAst,\n } of transformedQueries) {\n const timer = new TimeSliceTimer();\n let count = 0;\n await startAsyncSpan(\n tracer,\n 'vs.#hydrateUnchangedQueries.addQuery',\n async span => {\n span.setAttribute('queryHash', queryID);\n span.setAttribute('transformationHash', transformationHash);\n span.setAttribute('table', transformedAst.table);\n for (const change of this.#pipelines.addQuery(\n transformationHash,\n queryID,\n transformedAst,\n await timer.start(),\n )) {\n if (change === 'yield') {\n await timer.yieldProcess('yield in hydrateUnchangedQueries');\n } else {\n count++;\n }\n }\n },\n );\n\n const elapsed = timer.totalElapsed();\n this.#hydrations.add(1);\n this.#hydrationTime.record(elapsed / 1000);\n this.#addQueryMaterializationServerMetric(transformationHash, elapsed);\n lc.debug?.(`hydrated ${count} rows for ${queryID} (${elapsed} ms)`);\n }\n }\n\n #processTransformedCustomQueries(\n lc: LogContext,\n transformedCustomQueries:\n | (TransformedAndHashed | ErroredQuery)[]\n | TransformFailedBody,\n cb: (q: TransformedAndHashed) => void,\n customQueryMap: Map<string, CustomQueryRecord>,\n ): string[] {\n if ('kind' in transformedCustomQueries) {\n this.#sendQueryTransformErrorToClients(\n customQueryMap,\n transformedCustomQueries,\n );\n return transformedCustomQueries.queryIDs;\n }\n\n const appQueryErrors: ErroredQuery[] = [];\n\n for (const q of transformedCustomQueries) {\n if ('error' in q) {\n const errorMessage = `Error transforming custom query ${q.name}: ${q.error}${q.details ? ` ${JSON.stringify(q.details)}` : ''}`;\n lc.warn?.(errorMessage, q);\n appQueryErrors.push(q);\n continue;\n }\n cb(q);\n }\n\n this.#sendQueryTransformErrorToClients(customQueryMap, appQueryErrors);\n return appQueryErrors.map(q => q.id);\n }\n\n #sendQueryTransformErrorToClients(\n customQueryMap: Map<string, CustomQueryRecord>,\n errorOrErrors: ErroredQuery[] | TransformFailedBody,\n ) {\n const getAffectedClientIDs = (queryIDs: string[]): Set<string> => {\n const clientIds = new Set<string>();\n for (const queryID of queryIDs) {\n const q = customQueryMap.get(queryID);\n assert(\n q,\n `got an error for query ${queryID} that does not map back to a custom query`,\n );\n Object.keys(q.clientState).forEach(id => clientIds.add(id));\n }\n return clientIds;\n };\n\n // send the transform failed error to each affected client\n if ('queryIDs' in errorOrErrors) {\n for (const clientId of getAffectedClientIDs(errorOrErrors.queryIDs)) {\n this.#clients\n .get(clientId)\n ?.sendQueryTransformFailedError(errorOrErrors);\n }\n\n return;\n }\n\n // Group and send application errors to each affected client\n const appErrorGroups = new Map<string, ErroredQuery[]>();\n\n for (const err of errorOrErrors) {\n // Application errors need to be grouped by client\n for (const clientId of getAffectedClientIDs([err.id])) {\n const group = appErrorGroups.get(clientId) ?? [];\n group.push(err);\n appErrorGroups.set(clientId, group);\n }\n }\n\n for (const [clientId, errors] of appErrorGroups) {\n this.#clients.get(clientId)?.sendQueryTransformApplicationErrors(errors);\n }\n }\n\n #addQueryMaterializationServerMetric(\n transformationHash: string,\n elapsed: number,\n ) {\n this.#inspectorDelegate.addMetric(\n 'query-materialization-server',\n elapsed,\n transformationHash,\n );\n }\n\n /**\n * Adds and/or removes queries to/from the PipelineDriver to bring it\n * in sync with the set of queries in the CVR (both got and desired).\n * If queries are added, removed, or queried due to a new state version,\n * a new CVR version is created and pokes sent to connected clients.\n *\n * This must be called from within the #lock.\n */\n #syncQueryPipelineSet(lc: LogContext, cvr: CVRSnapshot) {\n return startAsyncSpan(tracer, 'vs.#syncQueryPipelineSet', async () => {\n assert(\n this.#pipelines.initialized(),\n 'pipelines must be initialized (syncQueryPipelineSet)',\n );\n\n const [hydratedQueries, byOriginalHash] = this.#pipelines.addedQueries();\n\n // Convert queries to their transformed ast's and hashes\n const hashToIDs = new Map<string, string[]>();\n\n if (this.#ttlClock === undefined) {\n // Get it from the CVR or initialize it to now.\n this.#ttlClock = cvr.ttlClock;\n }\n const now = Date.now();\n const ttlClock = this.#getTTLClock(now);\n\n // group cvr queries into:\n // 1. custom queries\n // 2. everything else\n // Handle transformation appropriately\n // Then hydrate as `serverQueries`\n const cvrQueryEntires = Object.entries(cvr.queries);\n const customQueries: Map<string, CustomQueryRecord> = new Map();\n const otherQueries: {\n id: string;\n query: ClientQueryRecord | InternalQueryRecord;\n }[] = [];\n const transformedQueries: {\n id: string;\n origQuery: QueryRecord;\n transformed: TransformedAndHashed;\n }[] = [];\n for (const [id, query] of cvrQueryEntires) {\n if (query.type === 'custom') {\n // This should always match, no?\n assert(id === query.id, 'custom query id mismatch');\n customQueries.set(id, query);\n } else {\n otherQueries.push({id, query});\n }\n }\n\n for (const {id, query: origQuery} of otherQueries) {\n // This should always match, no?\n assert(id === origQuery.id, 'query id mismatch');\n const transformed = transformAndHashQuery(\n lc,\n origQuery.id,\n origQuery.ast,\n must(this.#pipelines.currentPermissions()).permissions ?? {\n tables: {},\n },\n this.#authData?.decoded,\n origQuery.type === 'internal',\n );\n transformedQueries.push({\n id,\n origQuery,\n transformed,\n });\n }\n\n if (customQueries.size > 0 && !this.#customQueryTransformer) {\n lc.warn?.(\n 'Custom/named queries were requested but no `ZERO_QUERY_URL` is configured for Zero Cache.',\n );\n }\n\n let erroredQueryIDs: string[] | undefined;\n if (this.#customQueryTransformer && customQueries.size > 0) {\n // Always re-transform custom queries on client connection for security.\n // This ensures the user's API server validates authorization with the\n // current auth context.\n const transformStart = performance.now();\n let transformedCustomQueries;\n try {\n transformedCustomQueries =\n await this.#customQueryTransformer.transform(\n this.#getHeaderOptions(true),\n customQueries.values(),\n this.userQueryURL,\n );\n this.#queryTransformations.add(1, {result: 'success'});\n } catch (e) {\n this.#queryTransformations.add(1, {result: 'error'});\n throw e;\n } finally {\n const transformDuration = (performance.now() - transformStart) / 1000;\n this.#queryTransformationTime.record(transformDuration);\n }\n\n // Check if transform failed entirely (HTTP error or server-side failure).\n // This should disconnect the client and keep existing pipelines intact.\n if (\n !Array.isArray(transformedCustomQueries) &&\n transformedCustomQueries.kind === ErrorKind.TransformFailed\n ) {\n // TransformFailedBody indicates an HTTP or infrastructure error.\n // Throw to disconnect the client without modifying pipelines.\n throw new ProtocolErrorWithLevel(\n transformedCustomQueries,\n getLogLevel(transformedCustomQueries.kind),\n );\n }\n\n // Process the transformed queries and track which ones succeeded.\n const successfullyTransformed = new Map<string, TransformedAndHashed>();\n erroredQueryIDs = this.#processTransformedCustomQueries(\n lc,\n transformedCustomQueries,\n (q: TransformedAndHashed) => {\n successfullyTransformed.set(q.id, q);\n transformedQueries.push({\n id: q.id,\n origQuery: must(customQueries.get(q.id)),\n transformed: q,\n });\n },\n customQueries,\n );\n\n // Check for queries whose transformation hash changed and log for debugging.\n // The old pipelines will be automatically removed via unhydrateQueries,\n // and new pipelines will be added via addQueries.\n for (const [queryID, newTransform] of successfullyTransformed) {\n const existingTransforms = byOriginalHash.get(queryID);\n if (existingTransforms && existingTransforms.length > 0) {\n const oldHash = existingTransforms[0].transformationHash;\n const newHash = newTransform.transformationHash;\n\n if (oldHash !== newHash) {\n // Transformation changed - log and check for thrashing.\n // The unhydrateQueries mechanism below will remove the old pipeline,\n // and addQueries will add the new one.\n lc.info?.(\n `Query ${queryID} transformation changed: ${oldHash} -> ${newHash}`,\n );\n this.#checkForThrashing(queryID);\n this.#queryTransformationHashChanges.add(1);\n } else {\n // hash is the same, addQuery will no-op (no re-hydration needed)\n this.#queryTransformationNoOps.add(1);\n }\n }\n // else: new query, will be added normally\n }\n }\n\n const serverQueries = transformedQueries.map(\n ({id, origQuery, transformed}) => {\n const ids = hashToIDs.get(transformed.transformationHash);\n if (ids) {\n ids.push(id);\n } else {\n hashToIDs.set(transformed.transformationHash, [id]);\n }\n return {\n id,\n ast: transformed.transformedAst,\n transformationHash: transformed.transformationHash,\n remove: expired(ttlClock, origQuery),\n };\n },\n );\n\n const addQueries = serverQueries.filter(\n q => !q.remove && !hydratedQueries.has(q.transformationHash),\n );\n const removeQueries: {\n id: string;\n transformationHash: string | undefined;\n }[] = serverQueries.filter(q => q.remove);\n const desiredQueries = new Set(\n serverQueries.filter(q => !q.remove).map(q => q.transformationHash),\n );\n const unhydrateQueries = [...hydratedQueries].filter(\n transformationHash => !desiredQueries.has(transformationHash),\n );\n\n for (const q of addQueries) {\n const orig = cvr.queries[q.id];\n lc.debug?.(\n 'ViewSyncer adding query',\n q.ast,\n 'transformed from',\n orig.type === 'custom' ? orig.name : orig.ast,\n );\n }\n\n // These are queries we need to remove from `desired`, not `got`, because they never transformed.\n if (erroredQueryIDs) {\n // Build a set of transformation hashes that succeeded\n const successfulHashes = new Set(\n transformedQueries.map(\n ({transformed}) => transformed.transformationHash,\n ),\n );\n\n for (const queryID of erroredQueryIDs) {\n // Try to get the last known transformation hash for this query\n let lastKnownHash: string | undefined;\n\n // Check if the query exists in the CVR with a transformation hash\n const cvrQuery = cvr.queries[queryID];\n if (cvrQuery?.transformationHash) {\n lastKnownHash = cvrQuery.transformationHash;\n }\n\n // If a successfully transformed query has the same hash, we can't remove it\n // because that would remove the pipeline for the successful query\n const transformationHash =\n lastKnownHash && successfulHashes.has(lastKnownHash)\n ? undefined\n : lastKnownHash;\n\n removeQueries.push({\n id: queryID,\n transformationHash,\n });\n }\n }\n\n if (\n addQueries.length > 0 ||\n removeQueries.length > 0 ||\n unhydrateQueries.length > 0\n ) {\n await this.#addAndRemoveQueries(\n lc,\n cvr,\n addQueries,\n removeQueries,\n unhydrateQueries,\n hashToIDs,\n );\n } else {\n await this.#catchupClients(lc, cvr);\n }\n });\n }\n\n /**\n * Check if a query is being replaced too frequently (thrashing).\n * Logs a warning if the query has been replaced more than 3 times in 60 seconds.\n */\n #checkForThrashing(queryID: string) {\n const THRASH_WINDOW_MS = 60_000; // 60 seconds\n const THRASH_THRESHOLD = 3;\n const now = Date.now();\n\n let record = this.#queryReplacements.get(queryID);\n if (!record) {\n record = {count: 1, windowStart: now};\n this.#queryReplacements.set(queryID, record);\n return;\n }\n\n // If outside the time window, delete the old entry and create a new one\n if (now - record.windowStart > THRASH_WINDOW_MS) {\n this.#queryReplacements.delete(queryID);\n this.#queryReplacements.set(queryID, {count: 1, windowStart: now});\n return;\n }\n\n // Increment count within the window\n record.count++;\n\n if (record.count >= THRASH_THRESHOLD) {\n this.#lc.warn?.(\n `Query thrashing detected for query ${queryID}. ${record.count} replacements in 60s. This may indicate clients with different auth contexts connecting to the same client group.`,\n );\n }\n }\n\n // This must be called from within the #lock.\n #addAndRemoveQueries(\n lc: LogContext,\n cvr: CVRSnapshot,\n addQueries: {id: string; ast: AST; transformationHash: string}[],\n removeQueries: {id: string; transformationHash: string | undefined}[],\n unhydrateQueries: string[],\n hashToIDs: Map<string, string[]>,\n ): Promise<void> {\n return startAsyncSpan(tracer, 'vs.#addAndRemoveQueries', async () => {\n assert(\n addQueries.length > 0 ||\n removeQueries.length > 0 ||\n unhydrateQueries.length > 0,\n 'Must have queries to add or remove',\n );\n const start = performance.now();\n\n const stateVersion = this.#pipelines.currentVersion();\n lc = lc.withContext('stateVersion', stateVersion);\n lc.info?.(`hydrating ${addQueries.length} queries`);\n\n const updater = new CVRQueryDrivenUpdater(\n this.#cvrStore,\n cvr,\n stateVersion,\n this.#pipelines.replicaVersion,\n );\n\n // Note: This kicks off background PG queries for CVR data associated with the\n // executed and removed queries.\n const {newVersion, queryPatches} = updater.trackQueries(\n lc,\n addQueries,\n removeQueries,\n );\n const clients = this.#getClients();\n const pokers = startPoke(\n clients,\n newVersion,\n this.#pipelines.currentSchemaVersions(),\n );\n for (const patch of queryPatches) {\n await pokers.addPatch(patch);\n }\n\n // Removing queries is easy. The pipelines are dropped, and the CVR\n // updater handles the updates and pokes.\n for (const q of removeQueries) {\n if (q.transformationHash) {\n this.#pipelines.removeQuery(q.transformationHash);\n }\n\n // Remove per-query server metrics when query is deleted\n this.#inspectorDelegate.removeQuery(q.id);\n\n // Clean up thrashing detection for removed queries\n this.#queryReplacements.delete(q.id);\n }\n for (const hash of unhydrateQueries) {\n this.#pipelines.removeQuery(hash);\n // Remove per-query server metrics for unhydrated queries\n const ids = hashToIDs.get(hash);\n if (ids) {\n for (const id of ids) {\n this.#inspectorDelegate.removeQuery(id);\n // Clean up thrashing detection for unhydrated queries\n this.#queryReplacements.delete(id);\n }\n }\n }\n\n let totalProcessTime = 0;\n const timer = new TimeSliceTimer();\n const pipelines = this.#pipelines;\n const hydrations = this.#hydrations;\n const hydrationTime = this.#hydrationTime;\n // oxlint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n // yield at the very beginning so that the first time slice\n // is properly processed by the time-slice queue.\n await yieldProcess();\n\n function* generateRowChanges(slowHydrateThreshold: number) {\n for (const q of addQueries) {\n lc = lc\n .withContext('hash', q.id)\n .withContext('transformationHash', q.transformationHash);\n lc.debug?.(`adding pipeline for query`, q.ast);\n\n yield* pipelines.addQuery(\n q.transformationHash,\n q.id,\n q.ast,\n timer.startWithoutYielding(),\n );\n const elapsed = timer.stop();\n totalProcessTime += elapsed;\n\n self.#addQueryMaterializationServerMetric(\n q.transformationHash,\n elapsed,\n );\n\n if (elapsed > slowHydrateThreshold) {\n lc.warn?.('Slow query materialization', elapsed, q.ast);\n }\n manualSpan(tracer, 'vs.addAndConsumeQuery', elapsed, {\n hash: q.id,\n transformationHash: q.transformationHash,\n });\n }\n hydrations.add(1);\n hydrationTime.record(totalProcessTime / 1000);\n }\n // #processChanges does batched de-duping of rows. Wrap all pipelines in\n // a single generator in order to maximize de-duping.\n await this.#processChanges(\n lc,\n timer,\n generateRowChanges(this.#slowHydrateThreshold),\n updater,\n pokers,\n hashToIDs,\n );\n\n for (const patch of await updater.deleteUnreferencedRows(lc)) {\n await pokers.addPatch(patch);\n }\n\n // Commit the changes and update the CVR snapshot.\n this.#cvr = await this.#flushUpdater(lc, updater);\n\n const finalVersion = this.#cvr.version;\n\n // Before ending the poke, catch up clients that were behind the old CVR.\n await this.#catchupClients(\n lc,\n cvr,\n finalVersion,\n addQueries.map(q => q.id),\n pokers,\n );\n\n // Signal clients to commit.\n await pokers.end(finalVersion);\n\n const wallTime = performance.now() - start;\n lc.info?.(\n `finished processing queries (process: ${totalProcessTime} ms, wall: ${wallTime} ms)`,\n );\n });\n }\n\n /**\n * @param cvr The CVR to which clients should be caught up to. This does\n * not necessarily need to be the current CVR.\n * @param current The expected current CVR version. Before performing\n * catchup, the snapshot read will verify that the CVR has not been\n * concurrently modified. Note that this only needs to be done for\n * catchup because it is the only time data from the CVR DB is\n * \"exported\" without being gated by a CVR flush (which provides\n * concurrency protection in all other cases).\n *\n * If unspecified, the version of the `cvr` is used.\n * @param excludeQueryHashes Exclude patches from rows associated with\n * the specified queries.\n * @param usePokers If specified, sends pokes on existing PokeHandlers,\n * in which case the caller is responsible for sending the `pokeEnd`\n * messages. If unspecified, the pokes will be started and ended\n * using the version from the supplied `cvr`.\n */\n // Must be called within #lock\n #catchupClients(\n lc: LogContext,\n cvr: CVRSnapshot,\n current?: CVRVersion,\n excludeQueryHashes: string[] = [],\n usePokers?: PokeHandler,\n ) {\n return startAsyncSpan(tracer, 'vs.#catchupClients', async span => {\n current ??= cvr.version;\n const clients = this.#getClients();\n const pokers =\n usePokers ??\n startPoke(\n clients,\n cvr.version,\n this.#pipelines.currentSchemaVersions(),\n );\n span.setAttribute('numClients', clients.length);\n\n const catchupFrom = clients\n .map(c => c.version())\n .reduce((a, b) => (cmpVersions(a, b) < 0 ? a : b), cvr.version);\n\n // This is an AsyncGenerator which won't execute until awaited.\n const rowPatches = this.#cvrStore.catchupRowPatches(\n lc,\n catchupFrom,\n cvr,\n current,\n excludeQueryHashes,\n );\n\n // This is a plain async function that kicks off immediately.\n const configPatches = this.#cvrStore.catchupConfigPatches(\n lc,\n catchupFrom,\n cvr,\n current,\n );\n\n // await the rowPatches first so that the AsyncGenerator kicks off.\n let rowPatchCount = 0;\n for await (const rows of rowPatches) {\n for (const row of rows) {\n const {schema, table} = row;\n const rowKey = row.rowKey as RowKey;\n const toVersion = versionFromString(row.patchVersion);\n\n const id: RowID = {schema, table, rowKey};\n let patch: RowPatch;\n if (!row.refCounts) {\n patch = {type: 'row', op: 'del', id};\n } else {\n const row = must(\n this.#pipelines.getRow(table, rowKey),\n `Missing row ${table}:${stringify(rowKey)}`,\n );\n const {contents} = contentsAndVersion(row);\n patch = {type: 'row', op: 'put', id, contents};\n }\n const patchToVersion = {patch, toVersion};\n await pokers.addPatch(patchToVersion);\n rowPatchCount++;\n }\n }\n span.setAttribute('rowPatchCount', rowPatchCount);\n if (rowPatchCount) {\n lc.debug?.(`sent ${rowPatchCount} row patches`);\n }\n\n // Then await the config patches which were fetched in parallel.\n for (const patch of await configPatches) {\n await pokers.addPatch(patch);\n }\n\n if (!usePokers) {\n await pokers.end(cvr.version);\n }\n });\n }\n\n #processChanges(\n lc: LogContext,\n timer: TimeSliceTimer,\n changes: Iterable<RowChange | 'yield'>,\n updater: CVRQueryDrivenUpdater,\n pokers: PokeHandler,\n hashToIDs: Map<string, string[]>,\n ) {\n return startAsyncSpan(tracer, 'vs.#processChanges', async () => {\n const start = performance.now();\n\n const rows = new CustomKeyMap<RowID, RowUpdate>(rowIDString);\n let total = 0;\n\n const processBatch = () =>\n startAsyncSpan(tracer, 'processBatch', async () => {\n const wallElapsed = performance.now() - start;\n total += rows.size;\n lc.debug?.(\n `processing ${rows.size} (of ${total}) rows (${wallElapsed} ms)`,\n );\n const patches = await updater.received(lc, rows);\n\n for (const patch of patches) {\n await pokers.addPatch(patch);\n }\n rows.clear();\n });\n\n await startAsyncSpan(tracer, 'loopingChanges', async span => {\n for (const change of changes) {\n if (change === 'yield') {\n await timer.yieldProcess('yield in processChanges');\n continue;\n }\n const {\n type,\n queryHash: transformationHash,\n table,\n rowKey,\n row,\n } = change;\n const queryIDs = must(\n hashToIDs.get(transformationHash),\n 'could not find the original hash for the transformation hash',\n );\n const rowID: RowID = {schema: '', table, rowKey: rowKey as RowKey};\n\n let parsedRow = rows.get(rowID);\n if (!parsedRow) {\n parsedRow = {refCounts: {}};\n rows.set(rowID, parsedRow);\n }\n queryIDs.forEach(hash => (parsedRow.refCounts[hash] ??= 0));\n\n const updateVersion = (row: Row) => {\n // IVM can output multiple versions of a row as it goes through its\n // intermediate stages. Always update the version and contents;\n // the last version will reflect the final state.\n const {version, contents} = contentsAndVersion(row);\n parsedRow.version = version;\n parsedRow.contents = contents;\n };\n switch (type) {\n case 'add':\n updateVersion(row);\n queryIDs.forEach(hash => parsedRow.refCounts[hash]++);\n break;\n case 'edit':\n updateVersion(row);\n // No update to refCounts.\n break;\n case 'remove':\n queryIDs.forEach(hash => parsedRow.refCounts[hash]--);\n break;\n default:\n unreachable(type);\n }\n\n if (rows.size % CURSOR_PAGE_SIZE === 0) {\n await processBatch();\n }\n }\n if (rows.size) {\n await processBatch();\n }\n span.setAttribute('totalRows', total);\n });\n });\n }\n\n /**\n * Advance to the current snapshot of the replica and apply / send\n * changes.\n *\n * Must be called from within the #lock.\n *\n * Returns false if the advancement failed due to a schema change.\n */\n #advancePipelines(\n lc: LogContext,\n cvr: CVRSnapshot,\n ): Promise<'success' | ResetPipelinesSignal> {\n return startAsyncSpan(tracer, 'vs.#advancePipelines', async () => {\n assert(\n this.#pipelines.initialized(),\n 'pipelines must be initialized (advancePipelines',\n );\n const start = performance.now();\n\n const timer = new TimeSliceTimer();\n const {version, numChanges, changes} = this.#pipelines.advance(timer);\n lc = lc.withContext('newVersion', version);\n\n // Probably need a new updater type. CVRAdvancementUpdater?\n const updater = new CVRQueryDrivenUpdater(\n this.#cvrStore,\n cvr,\n version,\n this.#pipelines.replicaVersion,\n );\n // Only poke clients that are at the cvr.version. New clients that\n // are behind need to first be caught up when their initConnection\n // message is processed (and #syncQueryPipelines is called).\n const pokers = startPoke(\n this.#getClients(cvr.version),\n updater.updatedVersion(),\n this.#pipelines.currentSchemaVersions(),\n );\n lc.debug?.(`applying ${numChanges} to advance to ${version}`);\n const hashToIDs = createHashToIDs(cvr);\n\n try {\n await this.#processChanges(\n lc,\n await timer.start(),\n changes,\n updater,\n pokers,\n hashToIDs,\n );\n } catch (e) {\n if (e instanceof ResetPipelinesSignal) {\n await pokers.cancel();\n return e;\n }\n throw e;\n }\n\n // Commit the changes and update the CVR snapshot.\n this.#cvr = await this.#flushUpdater(lc, updater);\n const finalVersion = this.#cvr.version;\n\n // Signal clients to commit.\n await pokers.end(finalVersion);\n\n const elapsed = performance.now() - start;\n lc.info?.(\n `finished processing advancement of ${numChanges} changes (${elapsed} ms)`,\n );\n this.#transactionAdvanceTime.record(elapsed / 1000);\n return 'success';\n });\n }\n\n inspect(context: SyncContext, msg: InspectUpMessage): Promise<void> {\n return this.#runInLockForClient(context, msg, this.#handleInspect);\n }\n\n // oxlint-disable-next-line require-await\n #handleInspect = async (\n lc: LogContext,\n clientID: string,\n body: InspectUpBody,\n cvr: CVRSnapshot,\n ): Promise<void> => {\n const client = must(this.#clients.get(clientID));\n return handleInspect(\n lc,\n body,\n cvr,\n client,\n this.#inspectorDelegate,\n this.id,\n this.#cvrStore,\n this.#config,\n this.#getHeaderOptions(this.#queryConfig.forwardCookies ?? false),\n this.userQueryURL,\n this.#authData,\n );\n };\n\n stop(): Promise<void> {\n this.#lc.info?.('stopping view syncer');\n this.#initialized.reject('shut down before initialization completed');\n this.#stateChanges.cancel();\n return this.#stopped.promise;\n }\n\n #cleanup(err?: unknown) {\n this.#stopTTLClockInterval();\n this.#stopExpireTimer();\n\n this.#pipelines.destroy();\n for (const client of this.#clients.values()) {\n if (err) {\n client.fail(err);\n } else {\n client.close(`closed clientGroupID=${this.id}`);\n }\n }\n }\n\n /**\n * Test helper: Manually mark initialization as complete.\n * This should only be used in tests that don't call initConnection().\n */\n markInitialized() {\n this.#initialized.resolve('initialized');\n }\n}\n\n// Update CVR after every 10000 rows.\nconst CURSOR_PAGE_SIZE = 10000;\n\nfunction createHashToIDs(cvr: CVRSnapshot) {\n const hashToIDs = new Map<string, string[]>();\n for (const {id, transformationHash} of Object.values(cvr.queries)) {\n if (!transformationHash) {\n continue;\n }\n if (hashToIDs.has(transformationHash)) {\n must(hashToIDs.get(transformationHash)).push(id);\n } else {\n hashToIDs.set(transformationHash, [id]);\n }\n }\n return hashToIDs;\n}\n\n// A global Lock acts as a queue to run a single IVM time slice per iteration\n// of the node event loop, thus bounding I/O delay to the duration of a single\n// time slice.\n//\n// Refresher:\n// https://nodejs.org/en/learn/asynchronous-work/event-loop-timers-and-nexttick#phases-overview\n//\n// Note that recursive use of setImmediate() (i.e. calling setImmediate() from\n// within a setImmediate() callback), results in enqueuing the latter\n// callback in the *next* event loop iteration, as documented in:\n// https://nodejs.org/api/timers.html#setimmediatecallback-args\n//\n// This effectively achieves the desired one-per-event-loop-iteration behavior.\nconst timeSliceQueue = new Lock();\n\nfunction yieldProcess() {\n return timeSliceQueue.withLock(() => new Promise(setImmediate));\n}\n\nfunction contentsAndVersion(row: Row) {\n const {[ZERO_VERSION_COLUMN_NAME]: version, ...contents} = row;\n if (typeof version !== 'string' || version.length === 0) {\n throw new Error(`Invalid _0_version in ${stringify(row)}`);\n }\n return {contents, version};\n}\n\nconst NEW_CVR_VERSION = {stateVersion: '00'};\n\nfunction checkClientAndCVRVersions(\n client: NullableCVRVersion,\n cvr: CVRVersion,\n) {\n if (\n cmpVersions(cvr, NEW_CVR_VERSION) === 0 &&\n cmpVersions(client, NEW_CVR_VERSION) > 0\n ) {\n // CVR is empty but client is not.\n throw new ClientNotFoundError('Client not found');\n }\n\n if (cmpVersions(client, cvr) > 0) {\n // Client is ahead of a non-empty CVR.\n throw new ProtocolError({\n kind: ErrorKind.InvalidConnectionRequestBaseCookie,\n message: `CVR is at version ${versionString(cvr)}`,\n origin: ErrorOrigin.ZeroCache,\n });\n }\n}\n\nexport function pickToken(\n lc: LogContext,\n previousToken: TokenData | undefined,\n newToken: TokenData | undefined,\n) {\n if (previousToken === undefined) {\n lc.debug?.(`No previous token, using new token`);\n return newToken;\n }\n\n if (newToken) {\n if (previousToken.decoded.sub !== newToken.decoded.sub) {\n throw new ProtocolError({\n kind: ErrorKind.Unauthorized,\n message:\n 'The user id in the new token does not match the previous token. Client groups are pinned to a single user.',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n\n if (previousToken.decoded.iat === undefined) {\n lc.debug?.(`No issued at time for the existing token, using new token`);\n // No issued at time for the existing token? We take the most recently received token.\n return newToken;\n }\n\n if (newToken.decoded.iat === undefined) {\n throw new ProtocolError({\n kind: ErrorKind.Unauthorized,\n message:\n 'The new token does not have an issued at time but the prior token does. Tokens for a client group must either all have issued at times or all not have issued at times',\n origin: ErrorOrigin.ZeroCache,\n });\n }\n\n // The new token is newer, so we take it.\n if (previousToken.decoded.iat < newToken.decoded.iat) {\n lc.debug?.(`New token is newer, using it`);\n return newToken;\n }\n\n // if the new token is older or the same, we keep the existing token.\n lc.debug?.(`New token is older or the same, using existing token`);\n return previousToken;\n }\n\n // previousToken !== undefined but newToken is undefined\n throw new ProtocolError({\n kind: ErrorKind.Unauthorized,\n message:\n 'No token provided. An unauthenticated client cannot connect to an authenticated client group.',\n origin: ErrorOrigin.ZeroCache,\n });\n}\n\n/**\n * A query must be expired for all clients in order to be considered\n * expired.\n */\nfunction expired(\n ttlClock: TTLClock,\n q: InternalQueryRecord | ClientQueryRecord | CustomQueryRecord,\n): boolean {\n if (q.type === 'internal') {\n return false;\n }\n\n for (const clientState of Object.values(q.clientState)) {\n const {ttl, inactivatedAt} = clientState;\n if (inactivatedAt === undefined) {\n return false;\n }\n\n const clampedTTL = clampTTL(ttl);\n if (\n ttlClockAsNumber(inactivatedAt) + clampedTTL >\n ttlClockAsNumber(ttlClock)\n ) {\n return false;\n }\n }\n return true;\n}\n\nfunction hasExpiredQueries(cvr: CVRSnapshot): boolean {\n const {ttlClock} = cvr;\n for (const q of Object.values(cvr.queries)) {\n if (expired(ttlClock, q)) {\n return true;\n }\n }\n return false;\n}\n\nexport class TimeSliceTimer {\n #total = 0;\n #start = 0;\n\n async start() {\n // yield at the very beginning so that the first time slice\n // is properly processed by the time-slice queue.\n await yieldProcess();\n return this.startWithoutYielding();\n }\n\n startWithoutYielding() {\n this.#total = 0;\n this.#startLap();\n return this;\n }\n\n async yieldProcess(_msgForTesting?: string) {\n this.#stopLap();\n await yieldProcess();\n this.#startLap();\n }\n\n #startLap() {\n assert(this.#start === 0, 'already running');\n this.#start = performance.now();\n }\n\n elapsedLap() {\n assert(this.#start !== 0, 'not running');\n return performance.now() - this.#start;\n }\n\n #stopLap() {\n assert(this.#start !== 0, 'not running');\n this.#total += performance.now() - this.#start;\n this.#start = 0;\n }\n\n /** @returns the total elapsed time */\n stop(): number {\n this.#stopLap();\n return this.#total;\n }\n\n /**\n * @returns the elapsed time. This can be called while the Timer is running\n * or after it has been stopped.\n */\n totalElapsed(): number {\n return this.#start === 0\n ? this.#total\n : this.#total + performance.now() - this.#start;\n }\n}\n"],"names":["ErrorKind.Rehome","ErrorOrigin.ZeroCache","version","lc","clientID","ErrorKind.InvalidConnectionRequest","cvr","ErrorKind.TransformFailed","row","ErrorKind.InvalidConnectionRequestBaseCookie","ErrorKind.Unauthorized"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-with-level.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/types/error-with-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"error-with-level.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/types/error-with-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAI/C,OAAO,EAEL,aAAa,EACb,KAAK,SAAS,EACf,MAAM,qCAAqC,CAAC;AAE7C,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAG1B,SAAS,EAAE,SAAS,EACpB,QAAQ,GAAE,QAAiB,EAC3B,OAAO,CAAC,EAAE,YAAY;CAKzB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAMpD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAanE"}
|
|
@@ -1,24 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { getErrorMessage } from "../../../shared/src/error.js";
|
|
2
|
+
import { Internal } from "../../../zero-protocol/src/error-kind-enum.js";
|
|
3
|
+
import { ZeroCache } from "../../../zero-protocol/src/error-origin-enum.js";
|
|
4
|
+
import { ProtocolError, isProtocolError } from "../../../zero-protocol/src/error.js";
|
|
5
|
+
class ProtocolErrorWithLevel extends ProtocolError {
|
|
6
|
+
logLevel;
|
|
7
|
+
constructor(errorBody, logLevel = "warn", options) {
|
|
8
|
+
super(errorBody, options);
|
|
9
|
+
this.logLevel = logLevel;
|
|
10
|
+
}
|
|
10
11
|
}
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
function getLogLevel(error) {
|
|
13
|
+
return error instanceof ProtocolErrorWithLevel ? error.logLevel : isProtocolError(error) ? "warn" : "error";
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
function wrapWithProtocolError(error) {
|
|
16
|
+
if (isProtocolError(error)) {
|
|
17
|
+
return error;
|
|
18
|
+
}
|
|
19
|
+
return new ProtocolError(
|
|
20
|
+
{
|
|
21
|
+
kind: Internal,
|
|
22
|
+
message: getErrorMessage(error),
|
|
23
|
+
origin: ZeroCache
|
|
24
|
+
},
|
|
25
|
+
{ cause: error }
|
|
26
|
+
);
|
|
23
27
|
}
|
|
24
|
-
|
|
28
|
+
export {
|
|
29
|
+
ProtocolErrorWithLevel,
|
|
30
|
+
getLogLevel,
|
|
31
|
+
wrapWithProtocolError
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=error-with-level.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-with-level.js","
|
|
1
|
+
{"version":3,"file":"error-with-level.js","sources":["../../../../../zero-cache/src/types/error-with-level.ts"],"sourcesContent":["import type {LogLevel} from '@rocicorp/logger';\nimport {getErrorMessage} from '../../../shared/src/error.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {ErrorOrigin} from '../../../zero-protocol/src/error-origin.ts';\nimport {\n isProtocolError,\n ProtocolError,\n type ErrorBody,\n} from '../../../zero-protocol/src/error.ts';\n\nexport class ProtocolErrorWithLevel extends ProtocolError {\n readonly logLevel: LogLevel;\n\n constructor(\n errorBody: ErrorBody,\n logLevel: LogLevel = 'warn',\n options?: ErrorOptions,\n ) {\n super(errorBody, options);\n this.logLevel = logLevel;\n }\n}\n\nexport function getLogLevel(error: unknown): LogLevel {\n return error instanceof ProtocolErrorWithLevel\n ? error.logLevel\n : isProtocolError(error)\n ? 'warn'\n : 'error';\n}\n\nexport function wrapWithProtocolError(error: unknown): ProtocolError {\n if (isProtocolError(error)) {\n return error;\n }\n\n return new ProtocolError(\n {\n kind: ErrorKind.Internal,\n message: getErrorMessage(error),\n origin: ErrorOrigin.ZeroCache,\n },\n {cause: error},\n );\n}\n"],"names":["ErrorKind.Internal","ErrorOrigin.ZeroCache"],"mappings":";;;;AAUO,MAAM,+BAA+B,cAAc;AAAA,EAC/C;AAAA,EAET,YACE,WACA,WAAqB,QACrB,SACA;AACA,UAAM,WAAW,OAAO;AACxB,SAAK,WAAW;AAAA,EAClB;AACF;AAEO,SAAS,YAAY,OAA0B;AACpD,SAAO,iBAAiB,yBACpB,MAAM,WACN,gBAAgB,KAAK,IACnB,SACA;AACR;AAEO,SAAS,sBAAsB,OAA+B;AACnE,MAAI,gBAAgB,KAAK,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO,IAAI;AAAA,IACT;AAAA,MACE,MAAMA;AAAAA,MACN,SAAS,gBAAgB,KAAK;AAAA,MAC9B,QAAQC;AAAAA,IAAY;AAAA,IAEtB,EAAC,OAAO,MAAA;AAAA,EAAK;AAEjB;"}
|
|
@@ -1,15 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
function serializableSubset(msg) {
|
|
2
|
+
const {
|
|
3
|
+
headers,
|
|
4
|
+
headersDistinct,
|
|
5
|
+
httpVersion,
|
|
6
|
+
method = "GET",
|
|
7
|
+
rawHeaders,
|
|
8
|
+
rawTrailers,
|
|
9
|
+
trailers,
|
|
10
|
+
trailersDistinct,
|
|
11
|
+
url
|
|
12
|
+
} = msg;
|
|
13
|
+
return {
|
|
14
|
+
headers,
|
|
15
|
+
headersDistinct,
|
|
16
|
+
httpVersion,
|
|
17
|
+
method,
|
|
18
|
+
rawHeaders,
|
|
19
|
+
rawTrailers,
|
|
20
|
+
trailers,
|
|
21
|
+
trailersDistinct,
|
|
22
|
+
url
|
|
23
|
+
};
|
|
14
24
|
}
|
|
15
|
-
|
|
25
|
+
export {
|
|
26
|
+
serializableSubset
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","
|
|
1
|
+
{"version":3,"file":"http.js","sources":["../../../../../zero-cache/src/types/http.ts"],"sourcesContent":["import type {IncomingMessage} from 'http';\n\n/**\n * Contains the subset of {@link IncomingMessage} fields suitable for\n * passing across processes.\n */\nexport type IncomingMessageSubset = Pick<\n IncomingMessage,\n | 'headers'\n | 'headersDistinct'\n | 'httpVersion'\n | 'method'\n | 'rawHeaders'\n | 'rawTrailers'\n | 'trailers'\n | 'trailersDistinct'\n | 'url'\n>;\n\nexport function serializableSubset(\n msg: IncomingMessageSubset,\n): IncomingMessageSubset {\n const {\n headers,\n headersDistinct,\n httpVersion,\n method = 'GET',\n rawHeaders,\n rawTrailers,\n trailers,\n trailersDistinct,\n url,\n } = msg;\n\n return {\n headers,\n headersDistinct,\n httpVersion,\n method,\n rawHeaders,\n rawTrailers,\n trailers,\n trailersDistinct,\n url,\n };\n}\n"],"names":[],"mappings":"AAmBO,SAAS,mBACd,KACuB;AACvB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE;AAEJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,38 +1,53 @@
|
|
|
1
1
|
import { assert } from "../../../shared/src/asserts.js";
|
|
2
2
|
import { parseBigInt } from "../../../shared/src/parse-big-int.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
function versionToLexi(v) {
|
|
4
|
+
assert(v >= 0, "Negative versions are not supported");
|
|
5
|
+
assert(
|
|
6
|
+
typeof v === "bigint" || v <= Number.MAX_SAFE_INTEGER && Number.isInteger(v),
|
|
7
|
+
`Invalid or unsafe version ${v}`
|
|
8
|
+
);
|
|
9
|
+
const base36Version = BigInt(v).toString(36);
|
|
10
|
+
const length = BigInt(base36Version.length - 1).toString(36);
|
|
11
|
+
assert(
|
|
12
|
+
length.length === 1,
|
|
13
|
+
`Value is too large to be encoded as a LexiVersion: ${v.toString()}`
|
|
14
|
+
);
|
|
15
|
+
return `${length}${base36Version}`;
|
|
11
16
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
function versionFromLexi(lexiVersion) {
|
|
18
|
+
assert(lexiVersion.length >= 2);
|
|
19
|
+
const length = lexiVersion.substring(0, 1);
|
|
20
|
+
const base36Version = lexiVersion.substring(1);
|
|
21
|
+
assert(
|
|
22
|
+
base36Version.length === parseInt(length, 36) + 1,
|
|
23
|
+
`Invalid LexiVersion: ${lexiVersion}`
|
|
24
|
+
);
|
|
25
|
+
return parseBigInt(base36Version, 36);
|
|
18
26
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
function max(...versions) {
|
|
28
|
+
let winner = versions[0];
|
|
29
|
+
for (let i = 1; i < versions.length; i++) {
|
|
30
|
+
const b = versions[i];
|
|
31
|
+
winner = winner > b ? winner : b;
|
|
32
|
+
}
|
|
33
|
+
return winner;
|
|
26
34
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
function min(...versions) {
|
|
36
|
+
let winner = versions[0];
|
|
37
|
+
for (let i = 1; i < versions.length; i++) {
|
|
38
|
+
const b = versions[i];
|
|
39
|
+
winner = winner < b ? winner : b;
|
|
40
|
+
}
|
|
41
|
+
return winner;
|
|
34
42
|
}
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
function oneAfter(version) {
|
|
44
|
+
return versionToLexi(versionFromLexi(version) + 1n);
|
|
37
45
|
}
|
|
38
|
-
|
|
46
|
+
export {
|
|
47
|
+
max,
|
|
48
|
+
min,
|
|
49
|
+
oneAfter,
|
|
50
|
+
versionFromLexi,
|
|
51
|
+
versionToLexi
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=lexi-version.js.map
|