@rocicorp/zero 0.25.0-canary.6 → 0.25.0-canary.8
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 +258 -236
- 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 +79 -73
- 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.js +36 -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-HCZQVP5R.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/{chunk-WPAQ4EPM.js → replicache/src/kv/sqlite-store.js} +15 -19
- 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.js +92 -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/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/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.js +71 -73
- 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.js +83 -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/objects.js +21 -22
- package/out/shared/src/objects.js.map +1 -1
- package/out/shared/src/options.d.ts +2 -0
- 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/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.map +1 -1
- package/out/z2s/src/compiler.js +437 -310
- package/out/z2s/src/compiler.js.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.js +5 -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/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 +17 -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 +135 -124
- 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 +55 -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.js +33 -38
- package/out/zero-cache/src/auth/jwt.js.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.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 +2 -2
- package/out/zero-cache/src/auth/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +394 -349
- 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.js +676 -682
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.d.ts.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +166 -162
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.d.ts +7 -0
- 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 -106
- 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.js +114 -109
- 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 +0 -6
- 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 +375 -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 +128 -118
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
- package/out/zero-cache/src/scripts/permissions.js +107 -99
- package/out/zero-cache/src/scripts/permissions.js.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js +410 -366
- package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +104 -60
- 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 +67 -70
- 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 +57 -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 +112 -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 +3 -4
- package/out/zero-cache/src/services/analyze.d.ts.map +1 -1
- package/out/zero-cache/src/services/analyze.js +96 -122
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/column-metadata.js +152 -155
- 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 +601 -622
- 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.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.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.js +67 -74
- 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.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.js +9 -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.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/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.js +35 -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.js +64 -47
- 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 +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +178 -158
- 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 +235 -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.js +40 -44
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
- 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 +309 -367
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +2 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +83 -90
- 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 +1 -1
- package/out/zero-cache/src/services/http-service.d.ts.map +1 -1
- package/out/zero-cache/src/services/http-service.js +56 -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 +201 -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.js +270 -267
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +351 -344
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +483 -530
- 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.js +100 -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 +5 -3
- package/out/zero-cache/src/services/run-ast.d.ts.map +1 -1
- package/out/zero-cache/src/services/run-ast.js +80 -79
- 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.js +40 -39
- 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.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +84 -94
- 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 +2 -4
- 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 +628 -612
- 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 +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +631 -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 +168 -158
- 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 +14 -13
- 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 +529 -467
- 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.js +53 -120
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +171 -150
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
- 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 +3 -3
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +295 -338
- 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 +3 -3
- 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 +1485 -1307
- 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 +29 -25
- 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.js +44 -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 +277 -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.js +179 -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 +8 -7
- package/out/zero-client/src/client/bindings.d.ts.map +1 -1
- package/out/zero-client/src/client/bindings.js +33 -0
- package/out/zero-client/src/client/bindings.js.map +1 -0
- 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 +12 -31
- 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 +47 -4
- package/out/zero-client/src/client/connection.d.ts.map +1 -1
- package/out/zero-client/src/client/connection.js +103 -0
- package/out/zero-client/src/client/connection.js.map +1 -0
- package/out/zero-client/src/client/context.d.ts +4 -7
- 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.js +225 -0
- package/out/zero-client/src/client/crud.js.map +1 -0
- package/out/zero-client/src/client/custom.d.ts +12 -15
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +123 -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 +71 -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 +2 -1
- 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.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 +1 -1
- package/out/zero-client/src/client/inspector/inspector.d.ts.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.js +47 -0
- package/out/zero-client/src/client/inspector/inspector.js.map +1 -0
- package/out/zero-client/src/client/inspector/lazy-inspector.d.ts +1 -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 +149 -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/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 +2 -2
- 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 +1 -2
- package/out/zero-client/src/client/mutator-proxy.d.ts.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.js +132 -0
- package/out/zero-client/src/client/mutator-proxy.js.map +1 -0
- package/out/zero-client/src/client/options.d.ts +36 -19
- 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 +5 -5
- 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 +2 -2
- 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 +2 -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 +28 -11
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +1825 -0
- package/out/zero-client/src/client/zero.js.map +1 -0
- package/out/zero-client/src/mod.d.ts +4 -12
- package/out/zero-client/src/mod.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-protocol/src/analyze-query-result.js +32 -24
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/application-error.js +35 -37
- package/out/zero-protocol/src/application-error.js.map +1 -1
- package/out/zero-protocol/src/ast.d.ts +1 -1
- 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.js +46 -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 +6 -6
- 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 +18 -18
- 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 +6 -6
- package/out/zero-protocol/src/inspect-up.js +38 -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 -59
- 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 +5 -5
- 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/{inspector-GP3CBZRU.js → zero-react/src/components/inspector.js} +4 -9
- package/out/zero-react/src/components/inspector.js.map +1 -0
- package/out/{chunk-VZOYWIRW.js → zero-react/src/components/mark-icon.js} +3 -5
- package/out/zero-react/src/components/mark-icon.js.map +1 -0
- package/out/zero-react/src/components/zero-inspector.js +44 -0
- package/out/zero-react/src/components/zero-inspector.js.map +1 -0
- package/out/zero-react/src/mod.d.ts +1 -3
- package/out/zero-react/src/mod.d.ts.map +1 -1
- package/out/zero-react/src/use-query.d.ts +4 -4
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/{react.js → zero-react/src/use-query.js} +25 -217
- package/out/zero-react/src/use-query.js.map +1 -0
- package/out/zero-react/src/use-zero-connection-state.d.ts +1 -1
- package/out/zero-react/src/use-zero-connection-state.d.ts.map +1 -1
- package/out/zero-react/src/use-zero-connection-state.js +14 -0
- package/out/zero-react/src/use-zero-connection-state.js.map +1 -0
- 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 +7 -6
- package/out/zero-react/src/zero-provider.d.ts.map +1 -1
- package/out/zero-react/src/zero-provider.js +59 -0
- package/out/zero-react/src/zero-provider.js.map +1 -0
- package/out/zero-schema/src/builder/relationship-builder.js +27 -0
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -0
- package/out/zero-schema/src/builder/schema-builder.js +88 -0
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -0
- package/out/zero-schema/src/builder/table-builder.js +129 -0
- package/out/zero-schema/src/builder/table-builder.js.map +1 -0
- package/out/zero-schema/src/compiled-permissions.js +23 -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.map +1 -1
- package/out/zero-schema/src/permissions.js +199 -0
- package/out/zero-schema/src/permissions.js.map +1 -0
- 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 +1 -1
- package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js +83 -100
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/pg.d.ts +4 -3
- package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
- package/out/zero-server/src/adapters/pg.js +53 -77
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts +2 -2
- package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js +39 -57
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/custom.d.ts +6 -6
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js +185 -117
- 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 +2 -0
- package/out/zero-server/src/mod.d.ts.map +1 -1
- package/out/zero-server/src/pg-query-executor.js +17 -14
- package/out/zero-server/src/pg-query-executor.js.map +1 -1
- package/out/zero-server/src/process-mutations.js +293 -274
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/push-processor.js +55 -31
- package/out/zero-server/src/push-processor.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.d.ts +63 -2
- package/out/zero-server/src/queries/process-queries.d.ts.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +101 -95
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/query-registry.d.ts +10 -0
- package/out/zero-server/src/query-registry.d.ts.map +1 -0
- package/out/zero-server/src/query-registry.js +35 -0
- package/out/zero-server/src/query-registry.js.map +1 -0
- 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 +4 -4
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +66 -47
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/mod.d.ts +1 -2
- package/out/zero-solid/src/mod.d.ts.map +1 -1
- package/out/zero-solid/src/solid-view.d.ts +1 -1
- package/out/zero-solid/src/solid-view.d.ts.map +1 -1
- package/out/{solid.js → zero-solid/src/solid-view.js} +42 -196
- package/out/zero-solid/src/solid-view.js.map +1 -0
- package/out/zero-solid/src/use-query.d.ts +1 -1
- package/out/zero-solid/src/use-query.d.ts.map +1 -1
- package/out/zero-solid/src/use-query.js +70 -0
- package/out/zero-solid/src/use-query.js.map +1 -0
- package/out/zero-solid/src/use-zero-connection-state.d.ts +1 -1
- package/out/zero-solid/src/use-zero-connection-state.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero-connection-state.js +15 -0
- package/out/zero-solid/src/use-zero-connection-state.js.map +1 -0
- package/out/zero-solid/src/use-zero-online.js +13 -0
- package/out/zero-solid/src/use-zero-online.js.map +1 -0
- package/out/zero-solid/src/use-zero.d.ts +1 -1
- package/out/zero-solid/src/use-zero.d.ts.map +1 -1
- package/out/zero-solid/src/use-zero.js +74 -0
- package/out/zero-solid/src/use-zero.js.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/zql/src/builder/builder.d.ts +2 -1
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +486 -428
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/debug-delegate.js +68 -64
- 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 +18 -6
- package/out/zql/src/error.js.map +1 -1
- package/out/zql/src/ivm/array-view.js +86 -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.js +59 -85
- package/out/zql/src/ivm/data.js.map +1 -1
- package/out/zql/src/ivm/exists.js +236 -243
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.js +50 -51
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.js +48 -50
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/filter-operators.js +87 -87
- package/out/zql/src/ivm/filter-operators.js.map +1 -1
- package/out/zql/src/ivm/filter-push.js +26 -23
- package/out/zql/src/ivm/filter-push.js.map +1 -1
- package/out/zql/src/ivm/filter.js +30 -32
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/flipped-join.js +343 -326
- package/out/zql/src/ivm/flipped-join.js.map +1 -1
- package/out/zql/src/ivm/join-utils.js +85 -79
- package/out/zql/src/ivm/join-utils.js.map +1 -1
- package/out/zql/src/ivm/join.js +287 -207
- package/out/zql/src/ivm/join.js.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 +2 -2
- package/out/zql/src/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/ivm/memory-source.js +471 -489
- 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.js +8 -9
- package/out/zql/src/ivm/operator.js.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.js +92 -106
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/source.d.ts +3 -1
- package/out/zql/src/ivm/source.d.ts.map +1 -1
- package/out/zql/src/ivm/stream.js +20 -16
- package/out/zql/src/ivm/stream.js.map +1 -1
- package/out/zql/src/ivm/take.js +502 -456
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +156 -134
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/union-fan-out.js +46 -45
- package/out/zql/src/ivm/union-fan-out.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +246 -216
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/ivm/view.d.ts +2 -2
- package/out/zql/src/ivm/view.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.d.ts +11 -11
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js +15 -7
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/planner/planner-builder.js +238 -172
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-connection.d.ts +7 -0
- package/out/zql/src/planner/planner-connection.d.ts.map +1 -1
- package/out/zql/src/planner/planner-connection.js +202 -250
- 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 +2 -1
- package/out/zql/src/planner/planner-debug.d.ts.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 +154 -159
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-fan-out.js +71 -60
- package/out/zql/src/planner/planner-fan-out.js.map +1 -1
- package/out/zql/src/planner/planner-graph.d.ts +7 -8
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +315 -357
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.d.ts +6 -2
- package/out/zql/src/planner/planner-join.d.ts.map +1 -1
- package/out/zql/src/planner/planner-join.js +234 -326
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.d.ts +2 -1
- package/out/zql/src/planner/planner-node.d.ts.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/define-query.d.ts +47 -23
- package/out/zql/src/query/define-query.d.ts.map +1 -1
- package/out/zql/src/query/define-query.js +45 -51
- package/out/zql/src/query/define-query.js.map +1 -1
- 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.js +153 -151
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/measure-push-operator.js +42 -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 +9 -5
- package/out/zql/src/query/named.d.ts.map +1 -1
- package/out/zql/src/query/named.js +70 -85
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-definitions.d.ts +32 -0
- package/out/zql/src/query/query-definitions.d.ts.map +1 -0
- package/out/zql/src/query/query-delegate-base.d.ts +6 -14
- package/out/zql/src/query/query-delegate-base.d.ts.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +118 -134
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zql/src/query/query-delegate.d.ts +6 -8
- package/out/zql/src/query/query-delegate.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.d.ts +17 -18
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +511 -433
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internals.d.ts +11 -13
- package/out/zql/src/query/query-internals.d.ts.map +1 -1
- package/out/zql/src/query/query-internals.js +13 -19
- package/out/zql/src/query/query-internals.js.map +1 -1
- package/out/zql/src/query/query.d.ts +15 -16
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/static-query.d.ts +3 -3
- package/out/zql/src/query/static-query.d.ts.map +1 -1
- package/out/zql/src/query/static-query.js +41 -18
- 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 +25 -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.js +241 -194
- 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.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 +2 -2
- package/out/zqlite/src/query-delegate.d.ts.map +1 -1
- package/out/zqlite/src/query-delegate.js +53 -43
- 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 +96 -120
- 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 +9 -4
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +424 -327
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +23 -26
- 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-EZM3XBAB.js.map +0 -7
- package/out/chunk-HCZQVP5R.js.map +0 -7
- package/out/chunk-PFM5IJC4.js +0 -495
- package/out/chunk-PFM5IJC4.js.map +0 -7
- package/out/chunk-TAUDS4QP.js +0 -4129
- package/out/chunk-TAUDS4QP.js.map +0 -7
- package/out/chunk-VZOYWIRW.js.map +0 -7
- package/out/chunk-WPAQ4EPM.js.map +0 -7
- package/out/chunk-WWNKZSEE.js +0 -18857
- package/out/chunk-WWNKZSEE.js.map +0 -7
- package/out/expo-sqlite.js +0 -11
- package/out/expo-sqlite.js.map +0 -7
- package/out/inspector-GP3CBZRU.js.map +0 -7
- package/out/lazy-inspector-XLKVABX2.js +0 -575
- package/out/lazy-inspector-XLKVABX2.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.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 -195
- 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/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-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 -8
- package/out/zero-server/src/mod.js.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-types/src/server-schema.js +0 -2
- package/out/zero-types/src/server-schema.js.map +0 -1
- package/out/zero.js +0 -95
- 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/planner/planner-debug.js +0 -176
- package/out/zql/src/planner/planner-debug.js.map +0 -1
- package/out/zql/src/planner/planner-node.js +0 -2
- package/out/zql/src/planner/planner-node.js.map +0 -1
- package/out/zql/src/query/chained-query.d.ts +0 -35
- package/out/zql/src/query/chained-query.d.ts.map +0 -1
- package/out/zql/src/query/chained-query.js +0 -66
- package/out/zql/src/query/chained-query.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 -8
- package/out/zql/src/query/query.js.map +0 -1
- package/out/zql/src/query/root-named-query.d.ts +0 -33
- package/out/zql/src/query/root-named-query.d.ts.map +0 -1
- package/out/zql/src/query/root-named-query.js +0 -95
- package/out/zql/src/query/root-named-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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zero.js","sources":["../../../../../zero-client/src/client/zero.ts"],"sourcesContent":["import {LogContext, type LogLevel} from '@rocicorp/logger';\nimport {type Resolver, resolver} from '@rocicorp/resolver';\nimport {type DeletedClients} from '../../../replicache/src/deleted-clients.ts';\nimport {\n ReplicacheImpl,\n type ReplicacheImplOptions,\n} from '../../../replicache/src/impl.ts';\nimport {dropDatabase} from '../../../replicache/src/persist/collect-idb-databases.ts';\nimport type {Puller, PullerResult} from '../../../replicache/src/puller.ts';\nimport type {Pusher, PusherResult} from '../../../replicache/src/pusher.ts';\nimport type {ReplicacheOptions} from '../../../replicache/src/replicache-options.ts';\nimport type {\n ClientGroupID,\n ClientID,\n} from '../../../replicache/src/sync/ids.ts';\nimport type {PullRequest} from '../../../replicache/src/sync/pull.ts';\nimport type {PushRequest} from '../../../replicache/src/sync/push.ts';\nimport type {\n MutatorDefs,\n MutatorReturn,\n UpdateNeededReason as ReplicacheUpdateNeededReason,\n} from '../../../replicache/src/types.ts';\nimport {assert, unreachable} from '../../../shared/src/asserts.ts';\nimport {\n getBrowserGlobal,\n mustGetBrowserGlobal,\n} from '../../../shared/src/browser-env.ts';\nimport type {DeepMerge} from '../../../shared/src/deep-merge.ts';\nimport {getDocumentVisibilityWatcher} from '../../../shared/src/document-visible.ts';\nimport {getErrorMessage} from '../../../shared/src/error.ts';\nimport {h64} from '../../../shared/src/hash.ts';\nimport {must} from '../../../shared/src/must.ts';\nimport {navigator} from '../../../shared/src/navigator.ts';\nimport {promiseRace} from '../../../shared/src/promise-race.ts';\nimport {emptyFunction} from '../../../shared/src/sentinels.ts';\nimport {sleep, sleepWithAbort} from '../../../shared/src/sleep.ts';\nimport {Subscribable} from '../../../shared/src/subscribable.ts';\nimport * as valita from '../../../shared/src/valita.ts';\nimport type {Writable} from '../../../shared/src/writable.ts';\nimport {type ClientSchema} from '../../../zero-protocol/src/client-schema.ts';\nimport type {ConnectedMessage} from '../../../zero-protocol/src/connect.ts';\nimport {encodeSecProtocols} from '../../../zero-protocol/src/connect.ts';\nimport type {DeleteClientsBody} from '../../../zero-protocol/src/delete-clients.ts';\nimport type {Downstream} from '../../../zero-protocol/src/down.ts';\nimport {downstreamSchema} from '../../../zero-protocol/src/down.ts';\nimport {ErrorKind} from '../../../zero-protocol/src/error-kind.ts';\nimport {\n type ErrorMessage,\n ProtocolError,\n} from '../../../zero-protocol/src/error.ts';\nimport * as MutationType from '../../../zero-protocol/src/mutation-type-enum.ts';\nimport type {PingMessage} from '../../../zero-protocol/src/ping.ts';\nimport type {\n PokeEndMessage,\n PokePartMessage,\n PokeStartMessage,\n} from '../../../zero-protocol/src/poke.ts';\nimport {PROTOCOL_VERSION} from '../../../zero-protocol/src/protocol-version.ts';\nimport type {\n PullRequestMessage,\n PullResponseBody,\n PullResponseMessage,\n} from '../../../zero-protocol/src/pull.ts';\nimport type {\n CRUDMutation,\n CRUDMutationArg,\n CustomMutation,\n MutationID,\n PushMessage,\n} from '../../../zero-protocol/src/push.ts';\nimport {CRUD_MUTATION_NAME, mapCRUD} from '../../../zero-protocol/src/push.ts';\nimport type {UpQueriesPatchOp} from '../../../zero-protocol/src/queries-patch.ts';\nimport type {Upstream} from '../../../zero-protocol/src/up.ts';\nimport type {NullableVersion} from '../../../zero-protocol/src/version.ts';\nimport {nullableVersionSchema} from '../../../zero-protocol/src/version.ts';\nimport {clientSchemaFrom} from '../../../zero-schema/src/builder/schema-builder.ts';\nimport {\n type NameMapper,\n clientToServer,\n} from '../../../zero-schema/src/name-mapper.ts';\nimport type {Schema} from '../../../zero-types/src/schema.ts';\nimport type {ViewFactory} from '../../../zql/src/ivm/view.ts';\nimport {customMutatorKey} from '../../../zql/src/mutate/custom.ts';\nimport {wrapCustomQuery} from '../../../zql/src/query/define-query.ts';\nimport {\n type ClientMetricMap,\n type MetricMap,\n isClientMetric,\n} from '../../../zql/src/query/metrics-delegate.ts';\nimport type {QueryDefinitions} from '../../../zql/src/query/query-definitions.ts';\nimport type {QueryDelegate} from '../../../zql/src/query/query-delegate.ts';\nimport {newQuery} from '../../../zql/src/query/query-impl.ts';\nimport {isQueryInternals} from '../../../zql/src/query/query-internals.ts';\nimport {\n type HumanReadable,\n type MaterializeOptions,\n type PreloadOptions,\n type PullRow,\n type Query,\n type RunOptions,\n} from '../../../zql/src/query/query.ts';\nimport type {TypedView} from '../../../zql/src/query/typed-view.ts';\nimport {nanoid} from '../util/nanoid.ts';\nimport {send} from '../util/socket.ts';\nimport {ActiveClientsManager} from './active-clients-manager.ts';\nimport {registerZeroDelegate} from './bindings.ts';\nimport {ClientErrorKind} from './client-error-kind.ts';\nimport {\n ConnectionManager,\n type ConnectionManagerState,\n throwIfConnectionError,\n} from './connection-manager.ts';\nimport {ConnectionStatus} from './connection-status.ts';\nimport {type Connection, ConnectionImpl} from './connection.ts';\nimport {ZeroContext} from './context.ts';\nimport {\n type BatchMutator,\n type CRUDMutator,\n type DBMutator,\n type WithCRUD,\n makeCRUDMutate,\n makeCRUDMutator,\n} from './crud.ts';\nimport type {\n CustomMutatorDefs,\n CustomMutatorImpl,\n MakeCustomMutatorInterfaces,\n MutatorResult,\n} from './custom.ts';\nimport {makeReplicacheMutator} from './custom.ts';\nimport {DeleteClientsManager} from './delete-clients-manager.ts';\nimport {shouldEnableAnalytics} from './enable-analytics.ts';\nimport {\n ClientError,\n NO_STATUS_TRANSITION,\n type ZeroError,\n getBackoffParams,\n getErrorConnectionTransition,\n isAuthError,\n isClientError,\n isServerError,\n} from './error.ts';\nimport {\n type HTTPString,\n type WSString,\n appendPath,\n toWSString,\n} from './http-string.ts';\nimport {Inspector} from './inspector/inspector.ts';\nimport {IVMSourceBranch} from './ivm-branch.ts';\nimport {type LogOptions, createLogOptions} from './log-options.ts';\nimport {\n DID_NOT_CONNECT_VALUE,\n MetricManager,\n REPORT_INTERVAL_MS,\n type Series,\n getLastConnectErrorValue,\n shouldReportConnectError,\n} from './metrics.ts';\nimport {MutationTracker} from './mutation-tracker.ts';\nimport {MutatorProxy} from './mutator-proxy.ts';\nimport type {UpdateNeededReason, ZeroOptions} from './options.ts';\nimport {QueryManager} from './query-manager.ts';\nimport {\n reloadScheduled,\n reloadWithReason,\n reportReloadReason,\n resetBackoff,\n} from './reload-error-handler.ts';\nimport {getServer} from './server-option.ts';\nimport {version} from './version.ts';\nimport {PokeHandler} from './zero-poke-handler.ts';\nimport {\n ZeroRep,\n fromReplicacheAuthToken,\n toReplicacheAuthToken,\n} from './zero-rep.ts';\n\nexport type NoRelations = Record<string, never>;\n\nexport type MakeEntityQueriesFromSchema<S extends Schema> = {\n readonly [K in keyof S['tables'] & string]: Query<S, K>;\n};\n\n/**\n * The shape exposed on the `Zero.query` instance with custom queries.\n * Custom defined queries are added as properties that can be called to create query objects.\n */\nexport type MakeCustomQueryInterfaces<\n S extends Schema,\n QD extends QueryDefinitions<S, TContext>,\n TContext,\n> = {\n readonly [NamespaceOrName in keyof QD]: QD[NamespaceOrName] extends (options: {\n ctx: TContext;\n args: infer Args;\n }) => Query<S, infer TTable, infer TReturn>\n ? [Args] extends [undefined]\n ? () => Query<S, TTable & string, TReturn>\n : undefined extends Args\n ? (args?: Args) => Query<S, TTable & string, TReturn>\n : (args: Args) => Query<S, TTable & string, TReturn>\n : {\n readonly [P in keyof QD[NamespaceOrName]]: MakeCustomQueryInterface<\n S,\n QD[NamespaceOrName][P],\n TContext\n >;\n };\n};\n\nexport type MakeCustomQueryInterface<\n TSchema extends Schema,\n F,\n TContext,\n> = F extends (options: {\n ctx: TContext;\n args: infer Args;\n}) => Query<TSchema, infer TTable, infer TReturn>\n ? [Args] extends [undefined]\n ? () => Query<TSchema, TTable & string, TReturn>\n : undefined extends Args\n ? (args?: Args) => Query<TSchema, TTable & string, TReturn>\n : (args: Args) => Query<TSchema, TTable & string, TReturn>\n : never;\n\ndeclare const TESTING: boolean;\n\nexport type TestingContext = {\n puller: Puller;\n pusher: Pusher;\n setReload: (r: () => void) => void;\n logOptions: LogOptions;\n connectStart: () => number | undefined;\n socketResolver: () => Resolver<WebSocket>;\n connectionManager: () => ConnectionManager;\n queryDelegate: () => QueryDelegate;\n};\n\nexport const exposedToTestingSymbol = Symbol();\nexport const createLogOptionsSymbol = Symbol();\n\ninterface TestZero {\n [exposedToTestingSymbol]?: TestingContext;\n [createLogOptionsSymbol]?: (options: {\n consoleLogLevel: LogLevel;\n server: string | null;\n }) => LogOptions;\n}\n\nfunction asTestZero<\n S extends Schema,\n MD extends CustomMutatorDefs | undefined,\n Context,\n QD extends QueryDefinitions<S, Context> | undefined,\n>(z: Zero<S, MD, Context, QD>): TestZero {\n return z as TestZero;\n}\n\nexport const RUN_LOOP_INTERVAL_MS = 5_000;\n\n/**\n * Default timeout for ping operations. Controls both:\n * - How long to wait in idle before sending a ping\n * - How long to wait for a pong response\n */\nexport const DEFAULT_PING_TIMEOUT_MS = 5_000;\n\n/**\n * The amount of time we wait for a pull response before we consider a pull\n * request timed out.\n */\nexport const PULL_TIMEOUT_MS = 5_000;\n\nexport const DEFAULT_DISCONNECT_HIDDEN_DELAY_MS = 5_000;\n\n/**\n * The amount of time we allow for continuous connecting attempts before\n * transitioning to disconnected state.\n *\n * Default to 5 minutes.\n */\nexport const DEFAULT_DISCONNECT_TIMEOUT_MS = 5 * 60 * 1_000;\n\n/**\n * The amount of time we wait for a connection to be established before we\n * consider it timed out.\n */\nexport const CONNECT_TIMEOUT_MS = 10_000;\n\nconst CHECK_CONNECTIVITY_ON_ERROR_FREQUENCY = 6;\n\nconst NULL_LAST_MUTATION_ID_SENT = {clientID: '', id: -1} as const;\n\nconst DEFAULT_QUERY_CHANGE_THROTTLE_MS = 10;\n\nfunction convertOnUpdateNeededReason(\n reason: ReplicacheUpdateNeededReason,\n): UpdateNeededReason {\n return {type: reason.type};\n}\n\nfunction updateNeededReloadReasonMessage(reason: UpdateNeededReason) {\n const {type} = reason;\n let reasonMsg = '';\n switch (type) {\n case 'NewClientGroup':\n reasonMsg =\n \"This client could not sync with a newer client. This is probably due to another tab loading a newer incompatible version of the app's code.\";\n break;\n case 'VersionNotSupported':\n reasonMsg =\n \"The server no longer supports this client's protocol version.\";\n break;\n case 'SchemaVersionNotSupported':\n reasonMsg = 'Client and server schemas incompatible.';\n break;\n default:\n unreachable(type);\n }\n if (reason.message) {\n reasonMsg += ' ' + reason.message;\n }\n return reasonMsg;\n}\n\nconst serverAheadReloadReason = `Server reported that client is ahead of server. This probably happened because the server is in development mode and restarted. Currently when this happens, the dev server loses its state and on reconnect sees the client as ahead. If you see this in other cases, it may be a bug in Zero.`;\n\nfunction onClientStateNotFoundServerReason(serverErrMsg: string) {\n return `Server could not find state needed to synchronize this client. ${serverErrMsg}`;\n}\nconst ON_CLIENT_STATE_NOT_FOUND_REASON_CLIENT =\n 'The local persistent state needed to synchronize this client has been garbage collected.';\n\n// Keep in sync with packages/replicache/src/replicache-options.ts\nexport interface ReplicacheInternalAPI {\n lastMutationID(): number;\n}\n\nconst internalReplicacheImplMap = new WeakMap<object, ReplicacheImpl>();\n\nexport function getInternalReplicacheImplForTesting(\n z: object,\n): ReplicacheImpl<MutatorDefs> {\n assert(TESTING);\n return must(internalReplicacheImplMap.get(z));\n}\n\nconst CLOSE_CODE_NORMAL = 1000;\nconst CLOSE_CODE_GOING_AWAY = 1001;\ntype CloseCode = typeof CLOSE_CODE_NORMAL | typeof CLOSE_CODE_GOING_AWAY;\n\ntype MakeZeroQueryType<\n QD extends QueryDefinitions<S, TContext> | undefined,\n S extends Schema,\n TContext,\n> =\n QD extends QueryDefinitions<S, TContext>\n ? MakeEntityQueriesFromSchema<S> &\n MakeCustomQueryInterfaces<S, QD, TContext>\n : MakeEntityQueriesFromSchema<S>;\n\n/**\n * Registers both entity queries (from schema tables) and custom queries at arbitrary depth.\n * Returns a combined query interface that includes table queries and custom query namespaces.\n *\n * @param schema - The Zero schema containing table definitions\n * @param queries - Optional custom query definitions that can be nested arbitrarily deep\n * @param contextHolder - The Zero instance that will be passed to wrapCustomQuery for binding\n * @returns A query object with both entity and custom queries\n */\nfunction registerQueries<\n S extends Schema,\n TContext,\n QD extends QueryDefinitions<S, TContext> | undefined,\n>(\n schema: S,\n queries: QD,\n contextHolder: {context: TContext},\n lc: LogContext,\n): MakeZeroQueryType<QD, S, TContext> {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const rv = {} as Record<string, any>;\n\n // Register entity queries for each table\n for (const name of Object.keys(schema.tables)) {\n rv[name] = newQuery(schema, name);\n }\n\n // Register custom queries if provided\n if (queries) {\n // Recursively process query definitions at arbitrary depth\n const processQueries = (\n queriesToProcess: QueryDefinitions<S, TContext>,\n target: Record<string, unknown>,\n namespacePrefix: string[] = [],\n ) => {\n for (const [key, value] of Object.entries(queriesToProcess)) {\n if (typeof value === 'function') {\n const queryName = [...namespacePrefix, key].join('.');\n // Single query function - wrap it with the name\n const targetValue = target[key];\n if (isQueryInternals(targetValue)) {\n lc.debug?.(\n `Query key \"${[...namespacePrefix, key].join('.')}\" conflicts with an existing table name.`,\n );\n }\n\n target[key] = wrapCustomQuery(queryName, value, contextHolder);\n } else {\n // Namespace with nested queries\n let existing = target[key];\n // Check if the namespace conflicts with an existing table query\n if (isQueryInternals(existing)) {\n lc.debug?.(\n `Query namespace \"${[...namespacePrefix, key].join('.')}\" conflicts with an existing table name.`,\n );\n }\n if (existing === undefined) {\n existing = {};\n target[key] = existing;\n }\n processQueries(value, existing as Record<string, unknown>, [\n ...namespacePrefix,\n key,\n ]);\n }\n }\n };\n processQueries(queries, rv);\n }\n\n return rv as MakeZeroQueryType<QD, S, TContext>;\n}\n\nexport class Zero<\n const S extends Schema,\n MD extends CustomMutatorDefs | undefined = undefined,\n TContext = unknown,\n QD extends QueryDefinitions<S, TContext> | undefined = undefined,\n> {\n readonly version = version;\n\n readonly #rep: ReplicacheImpl<WithCRUD<MutatorDefs>>;\n readonly #server: HTTPString | null;\n readonly userID: string;\n readonly storageKey: string;\n\n readonly #lc: LogContext;\n readonly #logOptions: LogOptions;\n readonly #enableAnalytics: boolean;\n readonly #clientSchema: ClientSchema;\n\n readonly #pokeHandler: PokeHandler;\n readonly #queryManager: QueryManager;\n readonly #ivmMain: IVMSourceBranch;\n readonly #clientToServer: NameMapper;\n readonly #deleteClientsManager: DeleteClientsManager;\n readonly #mutationTracker: MutationTracker;\n\n /**\n * The queries we sent when inside the sec-protocol header when establishing a connection.\n * More queries could be registered while we're waiting for the 'connected' message\n * to come back from the server. To understand what queries we need to send\n * to the server, we diff the `initConnectionQueries` with the current set of desired queries.\n *\n * If this is set to `undefined` that means no queries were sent inside the `sec-protocol` header\n * and an `initConnection` message must be sent to the server after receiving the `connected` message.\n */\n #initConnectionQueries: Map<string, UpQueriesPatchOp> | undefined;\n\n /**\n * We try to send the deleted clients and (client groups) as part of the\n * sec-protocol header. If we can't because the header would get too large we\n * keep track of the deleted clients and send them after the connection is\n * established.\n */\n #deletedClients: DeleteClientsBody | undefined;\n\n #lastMutationIDSent: {clientID: string; id: number} =\n NULL_LAST_MUTATION_ID_SENT;\n\n #onPong: () => void = () => undefined;\n\n readonly #onlineManager: OnlineManager;\n\n readonly #onUpdateNeeded: (reason: UpdateNeededReason) => void;\n readonly #onClientStateNotFound: (reason?: string) => void;\n // Last cookie used to initiate a connection\n #connectCookie: NullableVersion = null;\n // Total number of sockets successfully connected by this client\n #connectedCount = 0;\n // Number of messages received over currently connected socket. Reset\n // on disconnect.\n #messageCount = 0;\n #connectedAt = 0;\n // Reset on successful connection.\n #connectErrorCount = 0;\n\n #abortPingTimeout = () => {\n // intentionally empty\n };\n\n /**\n * The timeout in milliseconds for ping operations. Controls both:\n * - How long to wait in idle before sending a ping\n * - How long to wait for a pong response\n *\n * Total time to detect a dead connection is 2 × pingTimeoutMs.\n *\n * The new value will take effect on the next ping cycle.\n */\n pingTimeoutMs: number;\n\n readonly #zeroContext: ZeroContext;\n\n #pendingPullsByRequestID: Map<string, Resolver<PullResponseBody>> = new Map();\n #lastMutationIDReceived = 0;\n\n #socket: WebSocket | undefined = undefined;\n #socketResolver = resolver<WebSocket>();\n /**\n * Utility promise that resolves when the socket transitions to connected.\n * It rejects if we hit an error or timeout before the connected message.\n * Used by push/pull helpers to queue work until the connection is usable.\n */\n #connectResolver = resolver<void>();\n\n #closeAbortController = new AbortController();\n\n readonly #visibilityWatcher;\n\n readonly #connectionManager: ConnectionManager;\n readonly #connection: Connection;\n readonly #activeClientsManager: Promise<ActiveClientsManager>;\n #inspector: Inspector | undefined;\n\n #connectStart: number | undefined = undefined;\n // Set on connect attempt if currently undefined.\n // Reset to undefined when\n // 1. client stops trying to connect because it is hidden\n // 2. client encounters a connect error and canary request indicates\n // the client is offline\n // 2. client successfully connects\n #totalToConnectStart: number | undefined = undefined;\n\n readonly #options: ZeroOptions<S, MD, TContext, QD>;\n\n readonly query: QD extends QueryDefinitions<S, TContext>\n ? MakeEntityQueriesFromSchema<S> &\n MakeCustomQueryInterfaces<S, QD, TContext>\n : MakeEntityQueriesFromSchema<S>;\n\n // TODO: Metrics needs to be rethought entirely as we're not going to\n // send metrics to customer server.\n #metrics: MetricManager;\n\n // Store as field to allow test subclass to override. Web API doesn't allow\n // overwriting location fields for security reasons.\n #reload = () => getBrowserGlobal('location')?.reload();\n\n /**\n * Constructs a new Zero client.\n */\n constructor(options: ZeroOptions<S, MD, TContext, QD>) {\n const {\n userID,\n storageKey,\n onOnlineChange,\n onUpdateNeeded,\n onClientStateNotFound,\n hiddenTabDisconnectDelay = DEFAULT_DISCONNECT_HIDDEN_DELAY_MS,\n pingTimeoutMs = DEFAULT_PING_TIMEOUT_MS,\n disconnectTimeoutMs = DEFAULT_DISCONNECT_TIMEOUT_MS,\n schema,\n batchViewUpdates = applyViewUpdates => applyViewUpdates(),\n maxRecentQueries = 0,\n slowMaterializeThreshold = 5_000,\n } = options;\n if (!userID) {\n throw new ClientError({\n kind: ClientErrorKind.Internal,\n message: 'ZeroOptions.userID must not be empty.',\n });\n }\n const server = getServer(options.server);\n this.#enableAnalytics = shouldEnableAnalytics(\n server,\n false /*options.enableAnalytics,*/, // Reenable analytics\n );\n\n let {kvStore = 'idb'} = options;\n if (kvStore === 'idb') {\n if (!getBrowserGlobal('indexedDB')) {\n // oxlint-disable-next-line no-console\n console.warn(\n 'IndexedDB is not supported in this environment. Falling back to memory storage.',\n );\n kvStore = 'mem';\n }\n }\n\n if (hiddenTabDisconnectDelay < 0) {\n throw new ClientError({\n kind: ClientErrorKind.Internal,\n message: 'ZeroOptions.hiddenTabDisconnectDelay must not be negative.',\n });\n }\n\n this.pingTimeoutMs = pingTimeoutMs;\n\n this.#onlineManager = new OnlineManager();\n\n if (onOnlineChange) {\n this.#onlineManager.subscribe(onOnlineChange);\n }\n\n this.#options = options;\n\n this.#logOptions = this.#createLogOptions({\n consoleLogLevel: options.logLevel ?? 'warn',\n server: null, //server, // Reenable remote logging\n enableAnalytics: this.#enableAnalytics,\n });\n const logOptions = this.#logOptions;\n\n this.#connectionManager = new ConnectionManager({\n disconnectTimeout: disconnectTimeoutMs,\n });\n\n const syncConnectionState = (state: ConnectionManagerState) => {\n this.#onlineManager.setOnline(state.name === ConnectionStatus.Connected);\n\n if (state.name === ConnectionStatus.Closed) {\n this.#queryManager.handleClosed(state.reason);\n }\n };\n syncConnectionState(this.#connectionManager.state);\n this.#connectionManager.subscribe(syncConnectionState);\n\n const {enableLegacyMutators = true, enableLegacyQueries = true} = schema;\n\n const replicacheMutators: MutatorDefs & {\n [CRUD_MUTATION_NAME]: CRUDMutator;\n } = {\n [CRUD_MUTATION_NAME]: enableLegacyMutators\n ? makeCRUDMutator(schema)\n : () =>\n Promise.reject(\n new ClientError({\n kind: ClientErrorKind.Internal,\n message: 'Zero CRUD mutators are not enabled.',\n }),\n ),\n };\n this.#ivmMain = new IVMSourceBranch(schema.tables);\n\n function assertUnique(key: string) {\n assert(\n replicacheMutators[key] === undefined,\n `A mutator, or mutator namespace, has already been defined for ${key}`,\n );\n }\n\n const sink = logOptions.logSink;\n const lc = new LogContext(logOptions.logLevel, {}, sink);\n\n this.#mutationTracker = new MutationTracker(\n lc,\n (upTo: MutationID) => this.#send(['ackMutationResponses', upTo]),\n error => this.#disconnect(lc, error),\n );\n if (options.mutators) {\n // Recursively process mutator definitions at arbitrary depth\n const processMutators = (\n mutators: CustomMutatorDefs,\n namespacePrefix: string[] = [],\n ) => {\n for (const [key, value] of Object.entries(mutators)) {\n if (typeof value === 'function') {\n const fullKey = customMutatorKey(...namespacePrefix, key);\n assertUnique(fullKey);\n replicacheMutators[fullKey] = makeReplicacheMutator(\n lc,\n value as CustomMutatorImpl<S>,\n schema,\n ) as () => MutatorReturn;\n } else if (typeof value === 'object') {\n processMutators(value, [...namespacePrefix, key]);\n } else {\n unreachable(value);\n }\n }\n };\n processMutators(options.mutators);\n }\n\n this.storageKey = storageKey ?? '';\n\n const {clientSchema, hash} = clientSchemaFrom(schema);\n this.#clientSchema = clientSchema;\n\n // Create a hash that includes storage key, URL configuration, and query parameters\n const nameKey = JSON.stringify({\n storageKey: this.storageKey,\n mutateUrl: options.mutateURL ?? '',\n queryUrl: options.getQueriesURL ?? '',\n });\n const hashedKey = h64(nameKey).toString(36);\n\n const replicacheOptions: ReplicacheOptions<WithCRUD<MutatorDefs>> = {\n // The schema stored in IDB is dependent upon both the ClientSchema\n // and the AST schema (i.e. PROTOCOL_VERSION).\n schemaVersion: `${PROTOCOL_VERSION}.${hash}`,\n logLevel: logOptions.logLevel,\n logSinks: [logOptions.logSink],\n mutators: replicacheMutators,\n name: `zero-${userID}-${hashedKey}`,\n pusher: (req, reqID) => this.#pusher(req, reqID),\n puller: (req, reqID) => this.#puller(req, reqID),\n pushDelay: 0,\n requestOptions: {\n maxDelayMs: 0,\n minDelayMs: 0,\n },\n licenseKey: 'zero-client-static-key',\n kvStore,\n };\n\n this.#zeroContext = new ZeroContext(\n lc,\n this.#ivmMain,\n (ast, ttl, gotCallback) => {\n if (enableLegacyQueries) {\n return this.#queryManager.addLegacy(ast, ttl, gotCallback);\n }\n // legacy queries are client side only. Do not track with the server\n return emptyFunction;\n },\n (ast, customQueryID, ttl, gotCallback) =>\n this.#queryManager.addCustom(ast, customQueryID, ttl, gotCallback),\n (ast, ttl) => {\n if (enableLegacyQueries) {\n this.#queryManager.updateLegacy(ast, ttl);\n }\n },\n (customQueryID, ttl) =>\n this.#queryManager.updateCustom(customQueryID, ttl),\n () => this.#queryManager.flushBatch(),\n batchViewUpdates,\n this.#addMetric,\n assertValidRunOptions,\n );\n\n // Register the delegate for bindings to access via WeakMap.\n // This avoids exposing the delegate as a public API on Zero.\n registerZeroDelegate(this, this.#zeroContext);\n\n const replicacheImplOptions: ReplicacheImplOptions = {\n enableClientGroupForking: false,\n enableMutationRecovery: false,\n enablePullAndPushInOpen: false, // Zero calls push in its connection management code\n onClientsDeleted: deletedClients =>\n this.#deleteClientsManager.onClientsDeleted(deletedClients),\n zero: new ZeroRep(\n this.#zeroContext,\n this.#ivmMain,\n options.mutators !== undefined,\n this.#mutationTracker,\n ),\n };\n\n const rep = new ReplicacheImpl(replicacheOptions, replicacheImplOptions);\n this.#rep = rep;\n\n if (TESTING) {\n internalReplicacheImplMap.set(this, rep);\n }\n this.#server = server;\n this.userID = userID;\n this.#lc = lc.withContext('clientID', rep.clientID);\n this.#connection = new ConnectionImpl(\n this.#connectionManager,\n this.#lc,\n auth => this.#setAuth(auth),\n );\n this.#mutationTracker.setClientIDAndWatch(\n rep.clientID,\n rep.experimentalWatch.bind(rep),\n );\n\n this.#activeClientsManager = makeActiveClientsManager(\n rep.clientGroupID,\n this.clientID,\n this.#closeAbortController.signal,\n (clientID: ClientID, clientGroupID: ClientGroupID) =>\n this.#deleteClientsManager.onClientsDeleted([\n {clientGroupID, clientID},\n ]),\n );\n\n const onUpdateNeededCallback = (reason: UpdateNeededReason) => {\n if (onUpdateNeeded) {\n onUpdateNeeded(reason);\n } else {\n reloadWithReason(\n this.#lc,\n this.#reload,\n reason.type,\n updateNeededReloadReasonMessage(reason),\n );\n }\n };\n this.#onUpdateNeeded = onUpdateNeededCallback;\n this.#rep.onUpdateNeeded = reason => {\n onUpdateNeededCallback(convertOnUpdateNeededReason(reason));\n };\n\n const onClientStateNotFoundCallback =\n onClientStateNotFound ??\n ((reason?: string) => {\n reloadWithReason(\n this.#lc,\n this.#reload,\n ErrorKind.ClientNotFound,\n reason ?? ON_CLIENT_STATE_NOT_FOUND_REASON_CLIENT,\n );\n });\n this.#onClientStateNotFound = onClientStateNotFoundCallback;\n this.#rep.onClientStateNotFound = onClientStateNotFoundCallback;\n\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const {mutate, mutateBatch} = makeCRUDMutate<S>(schema, rep.mutate) as any;\n\n const mutatorProxy = new MutatorProxy(\n this.#connectionManager,\n this.#mutationTracker,\n );\n\n if (options.mutators) {\n // Recursively expose mutators on the mutate property\n const exposeMutators = (\n mutators: CustomMutatorDefs,\n target: Record<string, unknown>,\n namespacePrefix: string[] = [],\n ) => {\n for (const [key, value] of Object.entries(mutators)) {\n if (typeof value === 'function') {\n const fullKey = customMutatorKey(...namespacePrefix, key);\n target[key] = mutatorProxy.wrapCustomMutator(\n must(rep.mutate[fullKey]) as unknown as (\n ...args: unknown[]\n ) => MutatorResult,\n );\n } else if (typeof value === 'object' && value !== null) {\n let existing = target[key];\n if (existing === undefined) {\n existing = {};\n target[key] = existing;\n }\n exposeMutators(value, existing as Record<string, unknown>, [\n ...namespacePrefix,\n key,\n ]);\n }\n }\n };\n exposeMutators(options.mutators, mutate);\n }\n\n this.mutate = mutate;\n this.mutateBatch = mutateBatch;\n\n this.#queryManager = new QueryManager(\n this.#lc,\n this.#mutationTracker,\n rep.clientID,\n schema.tables,\n msg => this.#send(msg),\n rep.experimentalWatch.bind(rep),\n maxRecentQueries,\n options.queryChangeThrottleMs ?? DEFAULT_QUERY_CHANGE_THROTTLE_MS,\n slowMaterializeThreshold,\n error => {\n this.#disconnect(lc, error);\n },\n );\n\n this.#clientToServer = clientToServer(schema.tables);\n\n this.#deleteClientsManager = new DeleteClientsManager(\n msg => this.#send(msg),\n rep.perdag,\n this.#lc,\n this.#rep.clientGroupID,\n );\n\n this.query = registerQueries(\n schema,\n this.#options.queries,\n this,\n lc,\n ) as QD extends QueryDefinitions<S, TContext>\n ? MakeEntityQueriesFromSchema<S> &\n MakeCustomQueryInterfaces<S, QD, TContext>\n : MakeEntityQueriesFromSchema<S>;\n\n reportReloadReason(this.#lc);\n\n this.#metrics = new MetricManager({\n reportIntervalMs: REPORT_INTERVAL_MS,\n host: getBrowserGlobal('location')?.host ?? '',\n source: 'client',\n reporter: this.#enableAnalytics\n ? allSeries => this.#reportMetrics(allSeries)\n : () => Promise.resolve(),\n lc: this.#lc,\n });\n this.#metrics.tags.push(`version:${this.version}`);\n\n this.#pokeHandler = new PokeHandler(\n poke => this.#rep.poke(poke),\n () => this.#onPokeError(),\n rep.clientID,\n schema,\n this.#lc,\n this.#mutationTracker,\n );\n\n this.#visibilityWatcher = getDocumentVisibilityWatcher(\n getBrowserGlobal('document'),\n hiddenTabDisconnectDelay,\n this.#closeAbortController.signal,\n );\n\n void this.#runLoop();\n\n this.#expose();\n\n if (TESTING) {\n asTestZero(this)[exposedToTestingSymbol] = {\n puller: this.#puller,\n pusher: this.#pusher,\n setReload: (r: () => void) => {\n this.#reload = r;\n },\n logOptions: this.#logOptions,\n connectStart: () => this.#connectStart,\n socketResolver: () => this.#socketResolver,\n connectionManager: () => this.#connectionManager,\n queryDelegate: () => this.#zeroContext,\n };\n }\n }\n\n #expose() {\n // Expose the Zero instance to the global scope.\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const g = globalThis as any;\n if (g.__zero === undefined) {\n g.__zero = this;\n } else if (g.__zero instanceof Zero) {\n const prev = g.__zero;\n g.__zero = {\n [prev.clientID]: prev,\n [this.clientID]: this,\n };\n } else {\n g.__zero[this.clientID] = this;\n }\n }\n\n #unexpose() {\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n const g = globalThis as any;\n assert(g.__zero !== undefined, 'No global zero instance found');\n if (g.__zero instanceof Zero) {\n assert(\n g.__zero === this,\n 'Global zero instance does not match this instance',\n );\n delete g.__zero;\n } else {\n delete g.__zero[this.clientID];\n if (Object.entries(g.__zero).length === 1) {\n g.__zero = Object.values(g.__zero)[0];\n }\n }\n }\n\n #send(msg: Upstream): void {\n if (\n this.#socket &&\n this.#connectionManager.is(ConnectionStatus.Connected)\n ) {\n send(this.#socket, msg);\n }\n }\n\n #createLogOptions(options: {\n consoleLogLevel: LogLevel;\n server: HTTPString | null;\n enableAnalytics: boolean;\n }): LogOptions {\n if (TESTING) {\n const testZero = asTestZero(this);\n if (testZero[createLogOptionsSymbol]) {\n return testZero[createLogOptionsSymbol](options);\n }\n }\n return createLogOptions(options);\n }\n\n /**\n * Preloads data for a query into the cache, without keeping it in memory.\n *\n * This function is useful when you want to populate the cache ahead of time,\n * for example after login, to avoid a flash of loading screen on the next page.\n *\n * Returns an object with two properties:\n * - `complete`: a Promise that resolves when the data is loaded\n * - `cleanup`: a function that can be called to cancel the preload\n *\n * @example\n * ```ts\n * const {complete, cleanup} = zero.preload(userQuery);\n * await complete;\n * // Now the data is cached and can be used immediately\n * ```\n */\n preload<\n TTable extends keyof S['tables'] & string,\n TReturn extends PullRow<TTable, S>,\n >(query: Query<S, TTable, TReturn>, options?: PreloadOptions) {\n return this.#zeroContext.preload(query, options);\n }\n\n /**\n * Executes a query once and returns the results.\n *\n * By default, waits for any pending data to sync before running the query.\n * This ensures fresh results from the server. Use `{type: 'unknown'}` to\n * run immediately with whatever data is available locally.\n *\n * @param query - The query to execute\n * @param runOptions - Options controlling query execution\n * @returns A Promise resolving to the query results\n *\n * @example\n * ```ts\n * // Wait for server sync\n * const users = await zero.run(userQuery);\n *\n * // Run with local data only\n * const cachedUsers = await zero.run(userQuery, {type: 'unknown'});\n * ```\n */\n run<TTable extends keyof S['tables'] & string, TReturn>(\n query: Query<S, TTable, TReturn>,\n runOptions?: RunOptions,\n ): Promise<HumanReadable<TReturn>> {\n return this.#zeroContext.run(query, runOptions);\n }\n\n get context(): TContext {\n return this.#options.context as TContext;\n }\n\n /**\n * Creates a materialized view of a query that stays synchronized with the database.\n *\n * The materialized view automatically updates when the underlying data changes.\n * When done with the view, call `view.destroy()` to clean up subscriptions.\n *\n * Optionally accepts a factory function to create a custom view implementation.\n *\n * @param query - The query to materialize\n * @param factory - Optional factory function to create a custom view\n * @param options - Options controlling view behavior\n * @returns A TypedView that stays synchronized with the data\n *\n * @example\n * ```ts\n * // Create a standard view\n * const view = zero.materialize(userQuery);\n * console.log(view.data); // Current query results\n * view.destroy(); // Clean up when done\n *\n * // Create a custom view\n * const customView = zero.materialize(userQuery, (query) => new MyCustomView(query));\n * ```\n */\n materialize<TTable extends keyof S['tables'] & string, TReturn>(\n query: Query<S, TTable, TReturn>,\n options?: MaterializeOptions,\n ): TypedView<HumanReadable<TReturn>>;\n materialize<T, TTable extends keyof S['tables'] & string, TReturn>(\n query: Query<S, TTable, TReturn>,\n factory: ViewFactory<S, TTable, TReturn, T>,\n options?: MaterializeOptions,\n ): T;\n materialize<T, TTable extends keyof S['tables'] & string, TReturn>(\n query: Query<S, TTable, TReturn>,\n factoryOrOptions?: ViewFactory<S, TTable, TReturn, T> | MaterializeOptions,\n maybeOptions?: MaterializeOptions,\n ) {\n let factory;\n let options;\n if (typeof factoryOrOptions === 'function') {\n factory = factoryOrOptions;\n options = maybeOptions;\n } else {\n options = factoryOrOptions;\n }\n return this.#zeroContext.materialize(query, factory, options);\n }\n\n /**\n * The server URL that this Zero instance is configured with.\n */\n get server(): HTTPString | null {\n return this.#server;\n }\n\n /**\n * The name of the IndexedDB database in which the data of this\n * instance of Zero is stored.\n */\n get idbName(): string {\n return this.#rep.idbName;\n }\n\n /**\n * The schema version of the data understood by this application.\n * See [[ZeroOptions.schemaVersion]].\n */\n get schemaVersion(): string {\n return this.#rep.schemaVersion;\n }\n\n /**\n * The schema passed into Zero when it was constructed.\n *\n * This can be paired with the inspector API to explore the client cache for\n * debugging or tooling. The inspector exposes the raw key/value map as well\n * as the per-table rows that back `zero.query[tableName].run()`.\n *\n * ```ts\n * const inspector = __zero.inspector;\n * const client = inspector.client;\n *\n * console.log('client map:', await client.map());\n *\n * for (const tableName of Object.keys(__zero.schema.tables)) {\n * console.table(await client.rows(tableName));\n * }\n * ```\n */\n get schema(): S {\n return this.#options.schema;\n }\n\n /**\n * The client ID for this instance of Zero. Each instance\n * gets a unique client ID.\n */\n get clientID(): ClientID {\n return this.#rep.clientID;\n }\n\n get clientGroupID(): Promise<ClientGroupID> {\n return this.#rep.clientGroupID;\n }\n\n /**\n * Provides simple \"CRUD\" mutations for the tables in the schema.\n *\n * Each table has `create`, `set`, `update`, and `delete` methods.\n *\n * ```ts\n * await zero.mutate.issue.create({id: '1', title: 'First issue', priority: 'high'});\n * await zero.mutate.comment.create({id: '1', text: 'First comment', issueID: '1'});\n * ```\n *\n * The `update` methods support partials. Unspecified or `undefined` fields\n * are left unchanged:\n *\n * ```ts\n * // Priority left unchanged.\n * await zero.mutate.issue.update({id: '1', title: 'Updated title'});\n * ```\n */\n readonly mutate: MD extends CustomMutatorDefs\n ? S['enableLegacyMutators'] extends false\n ? MakeCustomMutatorInterfaces<S, MD, TContext>\n : DeepMerge<DBMutator<S>, MakeCustomMutatorInterfaces<S, MD, TContext>>\n : DBMutator<S>;\n\n /**\n * Provides a way to batch multiple CRUD mutations together:\n *\n * ```ts\n * await zero.mutateBatch(m => {\n * await m.issue.create({id: '1', title: 'First issue'});\n * await m.comment.create({id: '1', text: 'First comment', issueID: '1'});\n * });\n * ```\n *\n * Batch sends all mutations in a single transaction. If one fails, all are\n * rolled back together. Batch can also be more efficient than making many\n * individual mutations.\n *\n * `mutateBatch` is not allowed inside another `mutateBatch` call. Doing so\n * will throw an error.\n */\n readonly mutateBatch: BatchMutator<S>;\n\n /**\n * The connection API for managing Zero's connection lifecycle.\n *\n * Use this to monitor connection state and manually control connections.\n *\n * @example\n * ```ts\n * // Subscribe to connection state changes\n * z.connection.state.subscribe(state => {\n * console.log('Connection state:', state.name);\n * });\n *\n * // Manually resume connection from error state\n * await z.connection.connect();\n * ```\n */\n get connection(): Connection {\n return this.#connection;\n }\n\n /**\n * Whether this Zero instance has been closed.\n *\n * Once a Zero instance has been closed it no longer syncs, you can no\n * longer query or mutate data with it, and its query views stop updating.\n */\n get closed(): boolean {\n return this.#connectionManager.is(ConnectionStatus.Closed);\n }\n\n /**\n * Closes this Zero instance.\n *\n * Once a Zero instance has been closed it no longer syncs, you can no\n * longer query or mutate data with it, and its query views stop updating.\n */\n async close(): Promise<void> {\n const lc = this.#lc.withContext('close');\n\n try {\n if (this.closed) {\n lc.debug?.('close() called on already closed instance');\n return;\n }\n\n lc.debug?.('Closing Zero instance. Stack:', new Error().stack);\n\n this.#onlineManager.cleanup();\n\n if (!this.#connectionManager.is(ConnectionStatus.Disconnected)) {\n this.#disconnect(\n lc,\n new ClientError({\n kind: ClientErrorKind.ClientClosed,\n message: 'Zero instance closed by user',\n }),\n CLOSE_CODE_NORMAL,\n );\n }\n lc.debug?.('Aborting closeAbortController due to close()');\n this.#closeAbortController.abort();\n this.#metrics.stop();\n const ret = await this.#rep.close();\n this.#unexpose();\n return ret;\n } catch (e) {\n lc.error?.('Error closing Zero instance', e);\n throw e;\n } finally {\n this.#connectionManager.closed();\n }\n }\n\n #onMessage = (e: MessageEvent<string>) => {\n const lc = this.#lc;\n lc.debug?.('received message', e.data);\n if (this.closed) {\n lc.debug?.('ignoring message because already closed');\n return;\n }\n\n let downMessage: Downstream;\n const {data} = e;\n try {\n downMessage = valita.parse(\n JSON.parse(data),\n downstreamSchema,\n 'passthrough',\n );\n } catch (e) {\n const invalidMessageError = new ClientError(\n {\n kind: ClientErrorKind.InvalidMessage,\n message: `Invalid message received from server: ${getErrorMessage(e)}${data}`,\n },\n {cause: e},\n );\n this.#disconnect(lc, invalidMessageError);\n return;\n }\n this.#messageCount++;\n const msgType = downMessage[0];\n try {\n switch (msgType) {\n case 'connected':\n return this.#handleConnectedMessage(lc, downMessage);\n\n case 'error':\n return this.#handleErrorMessage(lc, downMessage);\n\n case 'pong':\n // Receiving a pong means that the connection is healthy, as the\n // initial schema / versioning negotiations would produce an error\n // before a ping-pong timeout.\n resetBackoff();\n return this.#onPong();\n\n case 'pokeStart':\n return this.#handlePokeStart(lc, downMessage);\n\n case 'pokePart':\n if (downMessage[1].rowsPatch) {\n // Receiving row data indicates that the client is in a good state\n // and can reset the reload backoff state.\n resetBackoff();\n }\n return this.#handlePokePart(lc, downMessage);\n\n case 'pokeEnd':\n return this.#handlePokeEnd(lc, downMessage);\n\n case 'pull':\n return this.#handlePullResponse(lc, downMessage);\n\n case 'deleteClients':\n return this.#deleteClientsManager.clientsDeletedOnServer(\n downMessage[1],\n );\n\n case 'pushResponse':\n return this.#mutationTracker.processPushResponse(downMessage[1]);\n\n case 'transformError':\n this.#queryManager.handleTransformErrors(downMessage[1]);\n break;\n\n case 'inspect':\n // ignore at this layer.\n break;\n\n default:\n unreachable(msgType);\n }\n } catch (e) {\n lc.error?.('Unhandled error in onOpen', e);\n this.#disconnect(\n lc,\n new ClientError(\n {\n kind: ClientErrorKind.Internal,\n message: getErrorMessage(e),\n },\n {cause: e},\n ),\n );\n return;\n }\n };\n\n #onOpen = () => {\n let lc = this.#lc;\n try {\n assert(this.#socket, 'Socket is not set before onOpen');\n\n lc = addWebSocketIDFromSocketToLogContext(this.#socket, lc);\n if (this.#connectStart === undefined) {\n throw new Error('Got open event but connect start time is undefined.');\n } else {\n const now = Date.now();\n const timeToOpenMs = now - this.#connectStart;\n lc.info?.('Got socket open event', {\n navigatorOnline: navigator?.onLine,\n timeToOpenMs,\n });\n }\n } catch (e) {\n lc.error?.('Unhandled error in onOpen', e);\n this.#disconnect(\n lc,\n new ClientError(\n {\n kind: ClientErrorKind.Internal,\n message: getErrorMessage(e),\n },\n {cause: e},\n ),\n );\n }\n };\n\n #onClose = (e: CloseEvent) => {\n let lc = this.#lc;\n try {\n assert(this.#socket, 'Socket is not set before onClose');\n\n lc = addWebSocketIDFromSocketToLogContext(this.#socket, lc);\n const {code, reason, wasClean} = e;\n if (code <= 1001) {\n lc.info?.('Got socket close event', {code, reason, wasClean});\n } else {\n lc.error?.('Got unexpected socket close event', {\n code,\n reason,\n wasClean,\n });\n }\n\n const closeError = new ClientError(\n wasClean\n ? {\n kind: ClientErrorKind.CleanClose,\n message: 'WebSocket connection closed cleanly',\n }\n : {\n kind: ClientErrorKind.AbruptClose,\n message: 'WebSocket connection closed abruptly',\n },\n );\n this.#connectResolver.reject(closeError);\n this.#disconnect(lc, closeError);\n } catch (e) {\n lc.error?.('Unhandled error in onClose', e);\n const internalError = new ClientError(\n {\n kind: ClientErrorKind.Internal,\n message: getErrorMessage(e),\n },\n {cause: e},\n );\n this.#connectResolver.reject(internalError);\n this.#disconnect(lc, internalError);\n }\n };\n\n // An error on the connection is fatal for the connection.\n async #handleErrorMessage(\n lc: LogContext,\n downMessage: ErrorMessage,\n ): Promise<void> {\n const [, {kind, message}] = downMessage;\n\n // Rate limit errors are not fatal to the connection.\n // We really don't want to disconnect and reconnect a rate limited user as\n // it'll use more resources on the server\n if (kind === ErrorKind.MutationRateLimited) {\n this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;\n lc.error?.(kind, 'Mutation rate limited', {message});\n return;\n }\n\n lc.info?.(`${kind}: ${message}}`);\n const error = new ProtocolError(downMessage[1]);\n lc.error?.(`${error.kind}:\\n\\n${error.errorBody.message}`, error);\n\n lc.debug?.('Rejecting connect resolver due to error', error);\n this.#connectResolver.reject(error);\n this.#disconnect(lc, error);\n\n if (kind === ErrorKind.VersionNotSupported) {\n this.#onUpdateNeeded({type: kind, message});\n } else if (kind === ErrorKind.SchemaVersionNotSupported) {\n await this.#rep.disableClientGroup();\n this.#onUpdateNeeded({\n type: 'SchemaVersionNotSupported',\n message,\n });\n } else if (kind === ErrorKind.ClientNotFound) {\n await this.#rep.disableClientGroup();\n this.#onClientStateNotFound?.(onClientStateNotFoundServerReason(message));\n } else if (\n kind === ErrorKind.InvalidConnectionRequestLastMutationID ||\n kind === ErrorKind.InvalidConnectionRequestBaseCookie\n ) {\n await dropDatabase(this.#rep.idbName);\n reloadWithReason(lc, this.#reload, kind, serverAheadReloadReason);\n }\n }\n\n async #handleConnectedMessage(\n lc: LogContext,\n connectedMessage: ConnectedMessage,\n ): Promise<void> {\n const now = Date.now();\n const [, connectBody] = connectedMessage;\n lc = addWebSocketIDToLogContext(connectBody.wsid, lc);\n\n if (this.#connectedCount === 0) {\n this.#checkConnectivity('firstConnect');\n } else if (this.#connectErrorCount > 0) {\n this.#checkConnectivity('connectAfterError');\n }\n this.#connectedCount++;\n this.#connectedAt = now;\n this.#metrics.lastConnectError.clear();\n const proceedingConnectErrorCount = this.#connectErrorCount;\n this.#connectErrorCount = 0;\n\n let timeToConnectMs: number | undefined;\n let connectMsgLatencyMs: number | undefined;\n if (this.#connectStart === undefined) {\n lc.error?.('Got connected message but connect start time is undefined.');\n } else {\n timeToConnectMs = now - this.#connectStart;\n this.#metrics.timeToConnectMs.set(timeToConnectMs);\n connectMsgLatencyMs =\n connectBody.timestamp !== undefined\n ? now - connectBody.timestamp\n : undefined;\n this.#connectStart = undefined;\n }\n let totalTimeToConnectMs: number | undefined;\n if (this.#totalToConnectStart === undefined) {\n lc.error?.(\n 'Got connected message but total to connect start time is undefined.',\n );\n } else {\n totalTimeToConnectMs = now - this.#totalToConnectStart;\n this.#totalToConnectStart = undefined;\n }\n\n this.#metrics.setConnected(timeToConnectMs ?? 0, totalTimeToConnectMs ?? 0);\n\n lc.info?.('Connected', {\n navigatorOnline: navigator?.onLine,\n timeToConnectMs,\n totalTimeToConnectMs,\n connectMsgLatencyMs,\n connectedCount: this.#connectedCount,\n proceedingConnectErrorCount,\n });\n this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;\n\n lc.debug?.('Resolving connect resolver');\n const socket = must(this.#socket);\n const queriesPatch = await this.#rep.query(tx =>\n this.#queryManager.getQueriesPatch(tx, this.#initConnectionQueries),\n );\n\n const hasDeletedClients = () =>\n skipEmptyArray(this.#deletedClients?.clientIDs) ||\n skipEmptyArray(this.#deletedClients?.clientGroupIDs);\n\n const maybeSendDeletedClients = () => {\n if (hasDeletedClients()) {\n send(socket, ['deleteClients', this.#deletedClients!]);\n this.#deletedClients = undefined;\n }\n };\n\n if (queriesPatch.size > 0 && this.#initConnectionQueries !== undefined) {\n maybeSendDeletedClients();\n send(socket, [\n 'changeDesiredQueries',\n {\n desiredQueriesPatch: [...queriesPatch.values()],\n },\n ]);\n } else if (this.#initConnectionQueries === undefined) {\n // if #initConnectionQueries was undefined that means we never\n // sent `initConnection` to the server inside the sec-protocol header.\n const clientSchema = this.#clientSchema;\n send(socket, [\n 'initConnection',\n {\n desiredQueriesPatch: [...queriesPatch.values()],\n deleted: skipEmptyDeletedClients(this.#deletedClients),\n // The clientSchema only needs to be sent for the very first request.\n // Henceforth it is stored with the CVR and verified automatically.\n ...(this.#connectCookie === null ? {clientSchema} : {}),\n userPushURL: this.#options.mutateURL,\n userQueryURL: this.#options.getQueriesURL,\n },\n ]);\n this.#deletedClients = undefined;\n }\n this.#initConnectionQueries = undefined;\n\n maybeSendDeletedClients();\n\n this.#connectionManager.connected();\n this.#connectResolver.resolve();\n }\n\n /**\n * Starts a new connection. This will create the WebSocket that does the HTTP\n * request to the server.\n *\n * {@link #connect} will throw an assertion error if the\n * {@link #connectionManager} status is not {@link ConnectionManagerState.Disconnected}\n * or {@link ConnectionManagerState.Connecting}.\n * Callers MUST check the connection status before calling this method and log\n * an error as needed.\n *\n * The function will resolve once the socket is connected. If you need to know\n * when a connection has been established, as in we have received the\n * {@link ConnectedMessage}, you should await the {@link #connectResolver}\n * promise. The {@link #connectResolver} promise rejects if an error message\n * is received before the connected message is received or if the connection\n * attempt times out.\n */\n async #connect(\n lc: LogContext,\n additionalConnectParams: Record<string, string> | undefined,\n ): Promise<void> {\n if (this.closed) {\n return;\n }\n\n assert(this.#server, 'No server provided');\n\n // can be called from both disconnected and connecting states.\n // connecting() handles incrementing attempt counter if already connecting.\n assert(\n this.#connectionManager.is(ConnectionStatus.Disconnected) ||\n this.#connectionManager.is(ConnectionStatus.Connecting),\n 'connect() called from invalid state: ' +\n this.#connectionManager.state.name,\n );\n\n const wsid = nanoid();\n lc = addWebSocketIDToLogContext(wsid, lc);\n lc.info?.('Connecting...', {navigatorOnline: navigator?.onLine});\n\n this.#connectionManager.connecting();\n\n // connect() called but connect start time is defined. This should not\n // happen.\n assert(this.#connectStart === undefined, 'connect start time is defined');\n\n const now = Date.now();\n this.#connectStart = now;\n if (this.#totalToConnectStart === undefined) {\n this.#totalToConnectStart = now;\n }\n\n if (this.closed) {\n return;\n }\n this.#connectCookie = valita.parse(\n await this.#rep.cookie,\n nullableVersionSchema,\n 'passthrough',\n );\n if (this.closed) {\n return;\n }\n\n // Reject connect after a timeout.\n const timeoutID = setTimeout(() => {\n lc.debug?.('Rejecting connect resolver due to timeout');\n const timeoutError = new ClientError({\n kind: ClientErrorKind.ConnectTimeout,\n message: `Connection attempt timed out after ${CONNECT_TIMEOUT_MS / 1000} seconds`,\n });\n this.#connectResolver.reject(timeoutError);\n this.#disconnect(lc, timeoutError);\n }, CONNECT_TIMEOUT_MS);\n const abortHandler = () => {\n clearTimeout(timeoutID);\n };\n // signal.aborted cannot be true here because we checked for `this.closed` above.\n this.#closeAbortController.signal.addEventListener('abort', abortHandler);\n\n const [ws, initConnectionQueries, deletedClients] = await createSocket(\n this.#rep,\n this.#queryManager,\n this.#deleteClientsManager,\n toWSString(this.#server),\n this.#connectCookie,\n this.clientID,\n await this.clientGroupID,\n this.#clientSchema,\n this.userID,\n fromReplicacheAuthToken(this.#rep.auth),\n this.#lastMutationIDReceived,\n wsid,\n this.#options.logLevel === 'debug',\n lc,\n this.#options.mutateURL,\n this.#options.getQueriesURL,\n additionalConnectParams,\n await this.#activeClientsManager,\n this.#options.maxHeaderLength,\n );\n\n if (this.closed) {\n return;\n }\n\n this.#initConnectionQueries = initConnectionQueries;\n this.#deletedClients = deletedClients;\n ws.addEventListener('message', this.#onMessage);\n ws.addEventListener('open', this.#onOpen);\n ws.addEventListener('close', this.#onClose);\n this.#socket = ws;\n this.#socketResolver.resolve(ws);\n\n try {\n lc.debug?.('Waiting for connection to be acknowledged');\n await this.#connectResolver.promise;\n this.#mutationTracker.onConnected(this.#lastMutationIDReceived);\n // push any outstanding mutations on reconnect.\n this.#rep.push().catch(() => {});\n } finally {\n clearTimeout(timeoutID);\n this.#closeAbortController.signal.removeEventListener(\n 'abort',\n abortHandler,\n );\n }\n }\n\n #disconnect(lc: LogContext, reason: ZeroError, closeCode?: CloseCode): void {\n if (shouldReportConnectError(reason)) {\n this.#connectErrorCount++;\n this.#metrics.lastConnectError.set(getLastConnectErrorValue(reason));\n this.#metrics.timeToConnectMs.set(DID_NOT_CONNECT_VALUE);\n this.#metrics.setConnectError(reason);\n if (\n this.#connectErrorCount % CHECK_CONNECTIVITY_ON_ERROR_FREQUENCY ===\n 1\n ) {\n this.#checkConnectivity(`connectErrorCount=${this.#connectErrorCount}`);\n }\n }\n\n lc.info?.('disconnecting', {\n navigatorOnline: navigator?.onLine,\n reason: reason.kind,\n connectStart: this.#connectStart,\n totalToConnectStart: this.#totalToConnectStart,\n connectedAt: this.#connectedAt,\n connectionDuration: this.#connectedAt\n ? Date.now() - this.#connectedAt\n : 0,\n messageCount: this.#messageCount,\n connectionState: this.#connectionManager.state,\n connectErrorCount: this.#connectErrorCount,\n });\n\n const connectionStatus = this.#connectionManager.state.name;\n switch (connectionStatus) {\n case ConnectionStatus.Connected: {\n if (this.#connectStart !== undefined) {\n lc.error?.(\n 'disconnect() called while connected but connect start time is defined.',\n );\n // this._connectStart reset below.\n }\n break;\n }\n case ConnectionStatus.Closed:\n lc.debug?.('disconnect() called while closed');\n return;\n\n case ConnectionStatus.Disconnected:\n case ConnectionStatus.Connecting:\n case ConnectionStatus.NeedsAuth:\n case ConnectionStatus.Error:\n break;\n\n default:\n unreachable(connectionStatus);\n }\n\n this.#socketResolver = resolver();\n lc.debug?.('Creating new connect resolver');\n this.#connectResolver = resolver();\n this.#messageCount = 0;\n this.#connectStart = undefined; // don't reset this._totalToConnectStart\n this.#connectedAt = 0;\n this.#socket?.removeEventListener('message', this.#onMessage);\n this.#socket?.removeEventListener('open', this.#onOpen);\n this.#socket?.removeEventListener('close', this.#onClose);\n this.#socket?.close(closeCode);\n this.#socket = undefined;\n this.#lastMutationIDSent = NULL_LAST_MUTATION_ID_SENT;\n this.#pokeHandler.handleDisconnect();\n\n const transition = getErrorConnectionTransition(reason);\n\n switch (transition.status) {\n case ConnectionStatus.NeedsAuth:\n this.#connectionManager.needsAuth(transition.reason);\n break;\n case ConnectionStatus.Error:\n this.#connectionManager.error(transition.reason);\n break;\n case ConnectionStatus.Disconnected:\n this.#connectionManager.disconnected(transition.reason);\n break;\n case ConnectionStatus.Closed:\n this.#connectionManager.closed();\n break;\n case NO_STATUS_TRANSITION:\n this.#connectionManager.connecting(transition.reason);\n break;\n default:\n unreachable(transition);\n }\n }\n\n #handlePokeStart(_lc: LogContext, pokeMessage: PokeStartMessage): void {\n this.#abortPingTimeout();\n this.#pokeHandler.handlePokeStart(pokeMessage[1]);\n }\n\n #handlePokePart(_lc: LogContext, pokeMessage: PokePartMessage): void {\n this.#abortPingTimeout();\n const lastMutationIDChangeForSelf = this.#pokeHandler.handlePokePart(\n pokeMessage[1],\n );\n if (lastMutationIDChangeForSelf !== undefined) {\n this.#lastMutationIDReceived = lastMutationIDChangeForSelf;\n }\n }\n\n #handlePokeEnd(_lc: LogContext, pokeMessage: PokeEndMessage): void {\n this.#abortPingTimeout();\n this.#pokeHandler.handlePokeEnd(pokeMessage[1]);\n }\n\n #onPokeError(): void {\n const lc = this.#lc;\n lc.info?.(\n 'poke error, disconnecting?',\n !this.#connectionManager.is(ConnectionStatus.Disconnected),\n );\n\n // It is theoretically possible that we get disconnected during the\n // async poke above. Only disconnect if we are not already\n // disconnected.\n if (!this.#connectionManager.is(ConnectionStatus.Disconnected)) {\n this.#disconnect(\n lc,\n new ClientError({\n kind: ClientErrorKind.UnexpectedBaseCookie,\n message: 'Server returned unexpected base cookie during sync',\n }),\n );\n }\n }\n\n #handlePullResponse(\n lc: LogContext,\n pullResponseMessage: PullResponseMessage,\n ): void {\n this.#abortPingTimeout();\n const body = pullResponseMessage[1];\n lc = lc.withContext('requestID', body.requestID);\n lc.debug?.('Handling pull response', body);\n const resolver = this.#pendingPullsByRequestID.get(body.requestID);\n if (!resolver) {\n // This can happen because resolvers are deleted\n // from this._pendingPullsByRequestID when pulls timeout.\n lc.debug?.('No resolver found');\n return;\n }\n resolver.resolve(pullResponseMessage[1]);\n }\n\n async #pusher(req: PushRequest, requestID: string): Promise<PusherResult> {\n // The deprecation of pushVersion 0 predates zero-client\n assert(req.pushVersion === 1);\n // If we are connecting we wait until we are connected.\n await this.#connectResolver.promise;\n const lc = this.#lc.withContext('requestID', requestID);\n lc.debug?.(`pushing ${req.mutations.length} mutations`);\n const socket = this.#socket;\n assert(socket);\n\n const isMutationRecoveryPush =\n req.clientGroupID !== (await this.clientGroupID);\n const start = isMutationRecoveryPush\n ? 0\n : req.mutations.findIndex(\n m =>\n m.clientID === this.#lastMutationIDSent.clientID &&\n m.id === this.#lastMutationIDSent.id,\n ) + 1;\n lc.debug?.(\n isMutationRecoveryPush ? 'pushing for recovery' : 'pushing',\n req.mutations.length - start,\n 'mutations of',\n req.mutations.length,\n 'mutations.',\n );\n const now = Date.now();\n for (let i = start; i < req.mutations.length; i++) {\n const m = req.mutations[i];\n const timestamp = now - Math.round(performance.now() - m.timestamp);\n const zeroM =\n m.name === CRUD_MUTATION_NAME\n ? ({\n type: MutationType.CRUD,\n timestamp,\n id: m.id,\n clientID: m.clientID,\n name: m.name,\n args: [mapCRUD(m.args as CRUDMutationArg, this.#clientToServer)],\n } satisfies CRUDMutation)\n : ({\n type: MutationType.Custom,\n timestamp,\n id: m.id,\n clientID: m.clientID,\n name: m.name,\n args: [m.args],\n } satisfies CustomMutation);\n const msg: PushMessage = [\n 'push',\n {\n timestamp: now,\n clientGroupID: req.clientGroupID,\n mutations: [zeroM],\n pushVersion: req.pushVersion,\n requestID,\n },\n ];\n send(socket, msg);\n if (!isMutationRecoveryPush) {\n this.#lastMutationIDSent = {clientID: m.clientID, id: m.id};\n }\n }\n return {\n httpRequestInfo: {\n errorMessage: '',\n httpStatusCode: 200,\n },\n };\n }\n\n async #runLoop() {\n this.#lc.info?.(`Starting Zero version: ${this.version}`);\n\n if (this.#server === null) {\n this.#lc.info?.('No socket origin provided, not starting connect loop.');\n this.#connectionManager.error(\n new ClientError({\n kind: ClientErrorKind.NoSocketOrigin,\n message: 'No server socket origin provided',\n }),\n );\n return;\n }\n\n let runLoopCounter = 0;\n const bareLogContext = this.#lc;\n const getLogContext = () => {\n let lc = bareLogContext;\n if (this.#socket) {\n lc = addWebSocketIDFromSocketToLogContext(this.#socket, lc);\n }\n return lc.withContext('runLoopCounter', runLoopCounter);\n };\n\n // Set initial auth from options\n const {auth} = this.#options;\n this.#setAuth(auth);\n\n let backoffMs: number | undefined;\n let additionalConnectParams: Record<string, string> | undefined;\n\n while (this.#connectionManager.shouldContinueRunLoop()) {\n runLoopCounter++;\n let lc = getLogContext();\n backoffMs = RUN_LOOP_INTERVAL_MS;\n\n try {\n const currentState = this.#connectionManager.state;\n\n switch (currentState.name) {\n case ConnectionStatus.Connecting:\n case ConnectionStatus.Disconnected: {\n if (this.#visibilityWatcher.visibilityState === 'hidden') {\n this.#metrics.setDisconnectedWaitingForVisible();\n // reset this._totalToConnectStart since this client\n // is no longer trying to connect due to being hidden.\n this.#totalToConnectStart = undefined;\n }\n\n // If hidden, we wait for the tab to become visible before trying again.\n // or for a state change (e.g. an error)\n const visibilityResult = await promiseRace({\n visible: this.#visibilityWatcher.waitForVisible(),\n stateChange: this.#connectionManager.waitForStateChange(),\n });\n\n if (visibilityResult.key === 'stateChange') {\n throwIfConnectionError(visibilityResult.result);\n break;\n }\n\n // If a reload is pending, do not try to reconnect.\n if (reloadScheduled()) {\n break;\n }\n\n await this.#connect(lc, additionalConnectParams);\n additionalConnectParams = undefined;\n\n throwIfConnectionError(this.#connectionManager.state);\n\n // Now we have a new socket, update lc with the new wsid.\n assert(this.#socket);\n lc = getLogContext();\n\n lc.debug?.('Connected successfully');\n break;\n }\n\n case ConnectionStatus.Connected: {\n // When connected we wait for whatever happens first out of:\n // - After pingTimeoutMs we send a ping\n // - We get a message\n // - The tab becomes hidden (with a delay)\n // - We get a state change (e.g. an error or disconnect)\n\n const controller = new AbortController();\n this.#abortPingTimeout = () => controller.abort();\n const [pingTimeoutPromise, pingTimeoutAborted] = sleepWithAbort(\n this.pingTimeoutMs,\n controller.signal,\n );\n\n const raceResult = await promiseRace({\n waitForPing: pingTimeoutPromise,\n waitForPingAborted: pingTimeoutAborted,\n tabHidden: this.#visibilityWatcher.waitForHidden(),\n stateChange: this.#connectionManager.waitForStateChange(),\n });\n\n switch (raceResult.key) {\n case 'waitForPing': {\n await this.#ping(lc);\n break;\n }\n\n case 'waitForPingAborted':\n break;\n\n case 'tabHidden': {\n const hiddenError = new ClientError({\n kind: ClientErrorKind.Hidden,\n message: 'Connection closed because tab was hidden',\n });\n this.#disconnect(lc, hiddenError);\n break;\n }\n\n case 'stateChange':\n throwIfConnectionError(raceResult.result);\n break;\n\n default:\n unreachable(raceResult);\n }\n\n break;\n }\n\n case ConnectionStatus.NeedsAuth: {\n // we pause the run loop and wait for connect() to be called with new credentials\n lc.info?.(\n `Run loop paused in needs-auth state. Call zero.connection.connect({auth}) to resume.`,\n currentState.reason,\n );\n\n await this.#connectionManager.waitForStateChange();\n break;\n }\n\n case ConnectionStatus.Error: {\n // we pause the run loop and wait for a state change\n lc.info?.(\n `Run loop paused in error state. Call zero.connection.connect() to resume.`,\n currentState.reason,\n );\n\n await this.#connectionManager.waitForStateChange();\n break;\n }\n\n case ConnectionStatus.Closed:\n // run loop will terminate\n break;\n\n default:\n unreachable(currentState);\n }\n } catch (ex) {\n const isClientClosedError =\n isClientError(ex) && ex.kind === ClientErrorKind.ClientClosed;\n\n if (\n !this.#connectionManager.is(ConnectionStatus.Connected) &&\n !isClientClosedError\n ) {\n const level = isAuthError(ex) ? 'warn' : 'error';\n const kind = isServerError(ex) ? ex.kind : 'Unknown Error';\n lc[level]?.('Failed to connect', ex, kind, {\n lmid: this.#lastMutationIDReceived,\n baseCookie: this.#connectCookie,\n });\n }\n\n lc.debug?.(\n 'Got an exception in the run loop',\n 'state:',\n this.#connectionManager.state,\n 'exception:',\n ex,\n );\n\n const transition = getErrorConnectionTransition(ex);\n\n switch (transition.status) {\n case NO_STATUS_TRANSITION: {\n // We continue the loop because the error does not indicate\n // a need to transition to a new state and we should continue retrying\n\n const backoffParams = getBackoffParams(transition.reason);\n if (backoffParams) {\n if (backoffParams.minBackoffMs !== undefined) {\n backoffMs = Math.max(backoffMs, backoffParams.minBackoffMs);\n }\n if (backoffParams.maxBackoffMs !== undefined) {\n backoffMs = Math.min(backoffMs, backoffParams.maxBackoffMs);\n }\n additionalConnectParams = backoffParams.reconnectParams;\n }\n\n lc.debug?.(\n 'Sleeping',\n backoffMs,\n 'ms before reconnecting due to error, state:',\n this.#connectionManager.state,\n );\n await sleep(backoffMs);\n break;\n }\n case ConnectionStatus.NeedsAuth: {\n lc.debug?.(\n 'Auth error encountered, transitioning to needs-auth state',\n );\n this.#connectionManager.needsAuth(transition.reason);\n // run loop will enter the needs-auth state case and await a state change\n break;\n }\n case ConnectionStatus.Error: {\n lc.debug?.('Fatal error encountered, transitioning to error state');\n\n this.#connectionManager.error(transition.reason);\n // run loop will enter the error state case and await a state change\n break;\n }\n case ConnectionStatus.Disconnected: {\n this.#connectionManager.disconnected(transition.reason);\n break;\n }\n case ConnectionStatus.Closed: {\n break;\n }\n default:\n unreachable(transition);\n }\n }\n }\n }\n\n async #puller(req: PullRequest, requestID: string): Promise<PullerResult> {\n // The deprecation of pushVersion 0 predates zero-client\n assert(req.pullVersion === 1);\n const lc = this.#lc.withContext('requestID', requestID);\n lc.debug?.('Pull', req);\n // Pull request for this instance's client group. A no-op response is\n // returned as pulls for this client group are handled via poke over the\n // socket.\n if (req.clientGroupID === (await this.clientGroupID)) {\n return {\n httpRequestInfo: {\n errorMessage: '',\n httpStatusCode: 200,\n },\n };\n }\n\n // If we are connecting we wait until we are connected.\n await this.#connectResolver.promise;\n const socket = this.#socket;\n assert(socket);\n // Mutation recovery pull.\n lc.debug?.('Pull is for mutation recovery');\n const cookie = valita.parse(\n req.cookie,\n nullableVersionSchema,\n 'passthrough',\n );\n const pullRequestMessage: PullRequestMessage = [\n 'pull',\n {\n clientGroupID: req.clientGroupID,\n cookie,\n requestID,\n },\n ];\n send(socket, pullRequestMessage);\n const pullResponseResolver: Resolver<PullResponseBody> = resolver();\n this.#pendingPullsByRequestID.set(requestID, pullResponseResolver);\n try {\n const raceResult = await promiseRace({\n timeout: sleep(PULL_TIMEOUT_MS),\n success: pullResponseResolver.promise,\n });\n switch (raceResult.key) {\n case 'timeout':\n lc.debug?.('Mutation recovery pull timed out');\n throw new ClientError({\n kind: ClientErrorKind.PullTimeout,\n message: 'Pull timed out',\n });\n case 'success': {\n lc.debug?.('Returning mutation recovery pull response');\n const response = await pullResponseResolver.promise;\n return {\n response: {\n cookie: response.cookie,\n lastMutationIDChanges: response.lastMutationIDChanges,\n patch: [],\n },\n httpRequestInfo: {\n errorMessage: '',\n httpStatusCode: 200,\n },\n };\n }\n default:\n unreachable(raceResult);\n }\n } finally {\n pullResponseResolver.reject(\n new ClientError({\n kind: ClientErrorKind.PullTimeout,\n message: 'Pull timed out',\n }),\n );\n this.#pendingPullsByRequestID.delete(requestID);\n }\n }\n\n /**\n * Sets the authentication token on the replicache instance.\n *\n * @param auth - The authentication token to set.\n */\n #setAuth(auth: string | undefined | null): void {\n this.#rep.auth = toReplicacheAuthToken(auth);\n }\n\n /**\n * A rough heuristic for whether the client is currently online and\n * authenticated.\n *\n * @deprecated Use `connection` instead, which provides more detailed connection state.\n */\n get online(): boolean {\n return this.#onlineManager.online;\n }\n\n /**\n * Subscribe to online status changes.\n *\n * This is useful when you want to update state based on the online status.\n *\n * @param listener - The listener to subscribe to.\n * @returns A function to unsubscribe the listener.\n *\n * @deprecated Use `connection` instead, which provides more detailed connection state.\n */\n onOnline = (listener: (online: boolean) => void): (() => void) =>\n this.#onlineManager.subscribe(listener);\n\n /**\n * Starts a ping and waits for a pong.\n */\n async #ping(lc: LogContext): Promise<void> {\n lc.debug?.('pinging');\n const {promise, resolve} = resolver();\n this.#onPong = resolve;\n const pingMessage: PingMessage = ['ping', {}];\n const t0 = performance.now();\n assert(this.#socket);\n send(this.#socket, pingMessage);\n\n const raceResult = await promiseRace({\n waitForPong: promise,\n pingTimeout: sleep(this.pingTimeoutMs),\n stateChange: this.#connectionManager.waitForStateChange(),\n });\n\n const delta = performance.now() - t0;\n switch (raceResult.key) {\n case 'waitForPong': {\n lc.debug?.('ping succeeded in', delta, 'ms');\n return;\n }\n\n case 'pingTimeout': {\n lc.info?.('ping failed in', delta, 'ms - disconnecting');\n const pingTimeoutError = new ClientError({\n kind: ClientErrorKind.PingTimeout,\n message: 'Server ping request failed',\n });\n this.#disconnect(lc, pingTimeoutError);\n throw pingTimeoutError;\n }\n\n case 'stateChange': {\n lc.debug?.(\n 'ping aborted due to connection state change',\n raceResult.result,\n );\n throwIfConnectionError(raceResult.result);\n break;\n }\n\n default:\n unreachable(raceResult);\n }\n }\n\n // Sends a set of metrics to the server. Throws unless the server\n // returns 200.\n // TODO: Reenable metrics reporting\n async #reportMetrics(_allSeries: Series[]) {\n // if (this.#server === null) {\n // this.#lc.info?.('Skipping metrics report, socketOrigin is null');\n // return;\n // }\n // const body = JSON.stringify({series: allSeries});\n // const url = new URL('/api/metrics/v0/report', this.#server);\n // url.searchParams.set('clientID', this.clientID);\n // url.searchParams.set('clientGroupID', await this.clientGroupID);\n // url.searchParams.set('userID', this.userID);\n // url.searchParams.set('requestID', nanoid());\n // const res = await fetch(url.toString(), {\n // method: 'POST',\n // body,\n // keepalive: true,\n // });\n // if (!res.ok) {\n // const maybeBody = await res.text();\n // throw new Error(\n // `unexpected response: ${res.status} ${res.statusText} body: ${maybeBody}`,\n // );\n // }\n }\n\n #checkConnectivity(reason: string) {\n this.#checkConnectivityAsync(reason);\n }\n\n #checkConnectivityAsync(_reason: string) {\n // skipping connectivity checks for now - the server doesn't respond to\n // them so it just creates noise.\n // assert(this.#server);\n // if (this.closed) {\n // return;\n // }\n // try {\n // await checkConnectivity(\n // reason,\n // this.#server,\n // this.#lc,\n // this.#closeAbortController.signal,\n // this.#enableAnalytics,\n // );\n // } catch (e) {\n // this.#lc.info?.('Error checking connectivity for', reason, e);\n // }\n }\n\n /**\n * `inspector` is an object that can be used to inspect the state of the\n * queries a Zero instance uses. It is intended for debugging purposes.\n */\n get inspector(): Inspector {\n // We use esbuild dropLabels to strip this code when we build the code for the bundle size dashboard.\n // https://esbuild.github.io/api/#ignore-annotations\n // /packages/zero/tool/build.ts\n\n // oxlint-disable-next-line no-unused-labels\n BUNDLE_SIZE: {\n return (this.#inspector ??= new Inspector(\n this.#rep,\n this.#queryManager,\n this.#zeroContext,\n async () => {\n await this.#connectResolver.promise;\n return must(this.#socket);\n },\n ));\n }\n }\n\n #addMetric: <K extends keyof MetricMap>(\n metric: K,\n value: number,\n ...args: MetricMap[K]\n ) => void = (metric, value, ...args) => {\n assert(isClientMetric(metric), `Invalid metric: ${metric}`);\n this.#queryManager.addMetric(\n metric as keyof ClientMetricMap,\n value,\n ...(args as ClientMetricMap[keyof ClientMetricMap]),\n );\n };\n}\n\nexport class OnlineManager extends Subscribable<boolean> {\n #online = false;\n\n setOnline(online: boolean): void {\n if (this.#online === online) {\n return;\n }\n this.#online = online;\n this.notify(online);\n }\n\n get online(): boolean {\n return this.#online;\n }\n}\n\nexport async function createSocket(\n rep: ReplicacheImpl,\n queryManager: QueryManager,\n deleteClientsManager: DeleteClientsManager,\n socketOrigin: WSString,\n baseCookie: NullableVersion,\n clientID: string,\n clientGroupID: string,\n clientSchema: ClientSchema,\n userID: string,\n auth: string | undefined,\n lmid: number,\n wsid: string,\n debugPerf: boolean,\n lc: LogContext,\n userPushURL: string | undefined,\n userQueryURL: string | undefined,\n additionalConnectParams: Record<string, string> | undefined,\n activeClientsManager: Pick<ActiveClientsManager, 'activeClients'>,\n maxHeaderLength = 1024 * 8,\n): Promise<\n [\n WebSocket,\n Map<string, UpQueriesPatchOp> | undefined,\n DeleteClientsBody | undefined,\n ]\n> {\n const url = new URL(\n appendPath(socketOrigin, `/sync/v${PROTOCOL_VERSION}/connect`),\n );\n const {searchParams} = url;\n searchParams.set('clientID', clientID);\n searchParams.set('clientGroupID', clientGroupID);\n searchParams.set('userID', userID);\n searchParams.set('baseCookie', baseCookie === null ? '' : String(baseCookie));\n searchParams.set('ts', String(performance.now()));\n searchParams.set('lmid', String(lmid));\n searchParams.set('wsid', wsid);\n if (debugPerf) {\n searchParams.set('debugPerf', true.toString());\n }\n if (additionalConnectParams) {\n for (const k in additionalConnectParams) {\n if (searchParams.has(k)) {\n lc.warn?.(`skipping conflicting parameter ${k}`);\n } else {\n searchParams.set(k, additionalConnectParams[k]);\n }\n }\n }\n\n lc.info?.('Connecting to', url.toString());\n\n // Pass auth to the server via the `Sec-WebSocket-Protocol` header by passing\n // it as a `protocol` to the `WebSocket` constructor. The empty string is an\n // invalid `protocol`, and will result in an exception, so pass undefined\n // instead. encodeURIComponent to ensure it only contains chars allowed\n // for a `protocol`.\n const WS = mustGetBrowserGlobal('WebSocket');\n const queriesPatchP = rep.query(tx => queryManager.getQueriesPatch(tx));\n const deletedClientsArray = await deleteClientsManager.getDeletedClients();\n let deletedClients: DeleteClientsBody | undefined =\n convertDeletedClientsToBody(deletedClientsArray, clientGroupID);\n let queriesPatch: Map<string, UpQueriesPatchOp> | undefined =\n await queriesPatchP;\n const {activeClients} = activeClientsManager;\n\n let secProtocol = encodeSecProtocols(\n [\n 'initConnection',\n {\n desiredQueriesPatch: [...queriesPatch.values()],\n deleted: skipEmptyDeletedClients(deletedClients),\n // The clientSchema only needs to be sent for the very first request.\n // Henceforth it is stored with the CVR and verified automatically.\n ...(baseCookie === null ? {clientSchema} : {}),\n userPushURL,\n userQueryURL,\n activeClients: [...activeClients],\n },\n ],\n auth,\n );\n if (secProtocol.length > maxHeaderLength) {\n secProtocol = encodeSecProtocols(undefined, auth);\n if (secProtocol.length > maxHeaderLength) {\n lc.warn?.(\n `Encoded auth token length (${secProtocol.length}) exceeds ` +\n `ZeroOptions.maxHeaderLength (${maxHeaderLength}). This may ` +\n `cause connection failures.`,\n );\n }\n queriesPatch = undefined;\n } else {\n deletedClients = undefined;\n }\n return [\n new WS(\n // toString() required for RN URL polyfill.\n url.toString(),\n secProtocol,\n ),\n queriesPatch,\n skipEmptyDeletedClients(deletedClients),\n ];\n}\n\nfunction skipEmptyArray<T>(\n arr: readonly T[] | undefined,\n): readonly T[] | undefined {\n return arr && arr.length > 0 ? arr : undefined;\n}\n\nfunction skipEmptyDeletedClients(\n deletedClients: DeleteClientsBody | undefined,\n): DeleteClientsBody | undefined {\n if (!deletedClients) {\n return undefined;\n }\n const {clientIDs, clientGroupIDs} = deletedClients;\n if (\n (!clientIDs || clientIDs.length === 0) &&\n (!clientGroupIDs || clientGroupIDs.length === 0)\n ) {\n return undefined;\n }\n const data: Writable<DeleteClientsBody> = {};\n data.clientIDs = skipEmptyArray(clientIDs);\n data.clientGroupIDs = skipEmptyArray(clientGroupIDs);\n return data;\n}\n\nfunction convertDeletedClientsToBody(\n deletedClients: DeletedClients,\n clientGroupID: ClientGroupID,\n): DeleteClientsBody | undefined {\n if (deletedClients.length === 0) {\n return undefined;\n }\n\n const clientIDs = deletedClients\n .filter(pair => pair.clientID && pair.clientGroupID === clientGroupID)\n .map(pair => pair.clientID);\n if (clientIDs.length === 0) {\n return undefined;\n }\n\n // We no longer send clientGroupIDs\n return {clientIDs};\n}\n\n/**\n * Adds the wsid query parameter to the log context. If the URL does not\n * have a wsid we use a randomID instead.\n */\nfunction addWebSocketIDFromSocketToLogContext(\n {url}: {url: string},\n lc: LogContext,\n): LogContext {\n const wsid = new URL(url).searchParams.get('wsid') ?? nanoid();\n return addWebSocketIDToLogContext(wsid, lc);\n}\n\nfunction addWebSocketIDToLogContext(wsid: string, lc: LogContext): LogContext {\n return lc.withContext('wsid', wsid);\n}\n\nfunction assertValidRunOptions(_options?: RunOptions): void {}\n\nasync function makeActiveClientsManager(\n clientGroupID: Promise<string>,\n clientID: string,\n signal: AbortSignal,\n onDelete: ActiveClientsManager['onDelete'],\n): Promise<ActiveClientsManager> {\n const manager = await ActiveClientsManager.create(\n await clientGroupID,\n clientID,\n signal,\n );\n manager.onDelete = onDelete;\n return manager;\n}\n"],"names":["ClientErrorKind.Internal","ConnectionStatus.Connected","ConnectionStatus.Closed","ErrorKind.ClientNotFound","ConnectionStatus.Disconnected","ClientErrorKind.ClientClosed","valita.parse","e","ClientErrorKind.InvalidMessage","navigator","ClientErrorKind.CleanClose","ClientErrorKind.AbruptClose","ErrorKind.MutationRateLimited","ErrorKind.VersionNotSupported","ErrorKind.SchemaVersionNotSupported","ErrorKind.InvalidConnectionRequestLastMutationID","ErrorKind.InvalidConnectionRequestBaseCookie","ConnectionStatus.Connecting","ClientErrorKind.ConnectTimeout","ConnectionStatus.NeedsAuth","ConnectionStatus.Error","ClientErrorKind.UnexpectedBaseCookie","resolver","MutationType.CRUD","MutationType.Custom","ClientErrorKind.NoSocketOrigin","ClientErrorKind.Hidden","ClientErrorKind.PullTimeout","ClientErrorKind.PingTimeout"],"mappings":"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"}
|
|
@@ -13,9 +13,6 @@ export { ApplicationError } from '../../zero-protocol/src/application-error.ts';
|
|
|
13
13
|
export type { ApplicationErrorOptions } from '../../zero-protocol/src/application-error.ts';
|
|
14
14
|
export type { AST, Bound, ColumnReference, CompoundKey, Condition, Conjunction, CorrelatedSubquery, CorrelatedSubqueryCondition, CorrelatedSubqueryConditionOperator, Disjunction, EqualityOps, InOps, LikeOps, LiteralReference, LiteralValue, Ordering, OrderOps, OrderPart, Parameter, SimpleCondition, SimpleOperator, ValuePosition, } from '../../zero-protocol/src/ast.ts';
|
|
15
15
|
export { transformRequestMessageSchema, transformResponseMessageSchema, type TransformRequestBody, type TransformRequestMessage, type TransformResponseBody, type TransformResponseMessage, } from '../../zero-protocol/src/custom-queries.ts';
|
|
16
|
-
export { ErrorKind } from '../../zero-protocol/src/error-kind.ts';
|
|
17
|
-
export { ErrorOrigin } from '../../zero-protocol/src/error-origin.ts';
|
|
18
|
-
export { ErrorReason } from '../../zero-protocol/src/error-reason.ts';
|
|
19
16
|
export { relationships } from '../../zero-schema/src/builder/relationship-builder.ts';
|
|
20
17
|
export { createSchema } from '../../zero-schema/src/builder/schema-builder.ts';
|
|
21
18
|
export { boolean, enumeration, json, number, string, table, type ColumnBuilder, type TableBuilderWithColumns, } from '../../zero-schema/src/builder/table-builder.ts';
|
|
@@ -32,26 +29,21 @@ export type { Stream } from '../../zql/src/ivm/stream.ts';
|
|
|
32
29
|
export { applyChange, type ViewChange, } from '../../zql/src/ivm/view-apply-change.ts';
|
|
33
30
|
export type { AnyViewFactory, Entry, Format, View, ViewFactory, } from '../../zql/src/ivm/view.ts';
|
|
34
31
|
export type { DeleteID, InsertValue, SchemaQuery, ServerTransaction, Transaction, UpdateValue, UpsertValue, } from '../../zql/src/mutate/custom.ts';
|
|
35
|
-
export { defineQuery, defineQueryWithContextType, } from '../../zql/src/query/define-query.ts';
|
|
36
|
-
export type {
|
|
32
|
+
export { defineQuery, defineQueryWithContextType, isQueryDefinition, } from '../../zql/src/query/define-query.ts';
|
|
33
|
+
export type { QueryDefinition } from '../../zql/src/query/define-query.ts';
|
|
37
34
|
export { escapeLike } from '../../zql/src/query/escape-like.ts';
|
|
38
35
|
export type { ExpressionBuilder, ExpressionFactory, } from '../../zql/src/query/expression.ts';
|
|
39
36
|
export { createBuilder, syncedQuery, syncedQueryWithContext, withValidation, } from '../../zql/src/query/named.ts';
|
|
40
37
|
export type { CustomQueryID, HasParseFn, ParseFn, Parser, QueryFn, SyncedQuery, } from '../../zql/src/query/named.ts';
|
|
38
|
+
export type { QueryDefinitions } from '../../zql/src/query/query-definitions.ts';
|
|
41
39
|
export type { QueryInternals } from '../../zql/src/query/query-internals.ts';
|
|
42
40
|
export type { AnyQuery, HumanReadable, PullRow, Query, QueryResultType, QueryRowType, Row, RunOptions, ZeRow, } from '../../zql/src/query/query.ts';
|
|
43
|
-
export { RootNamedQuery } from '../../zql/src/query/root-named-query.ts';
|
|
44
41
|
export { type TTL } from '../../zql/src/query/ttl.ts';
|
|
45
42
|
export type { ResultType, TypedView } from '../../zql/src/query/typed-view.ts';
|
|
46
43
|
export { bindingsForZero, registerZeroDelegate, type BindingsForZero, } from './client/bindings.ts';
|
|
47
|
-
export {
|
|
48
|
-
export type { ConnectionState } from './client/connection-manager.ts';
|
|
49
|
-
export { ConnectionStatus } from './client/connection-status.ts';
|
|
50
|
-
export type { Connection, ConnectionSource, Source, } from './client/connection.ts';
|
|
44
|
+
export type { Connection, ConnectionSource, ConnectionState, Source, } from './client/connection.ts';
|
|
51
45
|
export type { BatchMutator, DBMutator, TableMutator } from './client/crud.ts';
|
|
52
46
|
export type { CustomMutatorDefs, CustomMutatorImpl, MakeCustomMutatorInterface, MakeCustomMutatorInterfaces, MutatorResultDetails, MutatorResultErrorDetails, MutatorResultSuccessDetails, MutatorResult as PromiseWithServerResult, } from './client/custom.ts';
|
|
53
|
-
export { isClientError, isServerError, isZeroError } from './client/error.ts';
|
|
54
|
-
export type { AuthError, ClientError, ClientErrorBody, ClosedError, NeedsAuthReason, OfflineError, ServerError, ZeroError, ZeroErrorBody, ZeroErrorDetails, ZeroErrorKind, } from './client/error.ts';
|
|
55
47
|
export type { ClientGroup as InspectorClientGroup } from './client/inspector/client-group.ts';
|
|
56
48
|
export type { Client as InspectorClient } from './client/inspector/client.ts';
|
|
57
49
|
export type { Inspector } from './client/inspector/inspector.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../zero-client/src/mod.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,2BAA2B,EAAC,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAC,gBAAgB,EAAC,MAAM,4CAA4C,CAAC;AAC5E,YAAY,EAAC,eAAe,EAAC,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAC,gBAAgB,EAAC,MAAM,sCAAsC,CAAC;AACtE,YAAY,EACV,WAAW,IAAI,aAAa,EAC5B,IAAI,IAAI,MAAM,EACd,KAAK,IAAI,OAAO,EAChB,KAAK,IAAI,OAAO,GACjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,WAAW,EAAC,MAAM,uCAAuC,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,YAAY,GACb,MAAM,uDAAuD,CAAC;AAC/D,YAAY,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAC,sBAAsB,EAAC,MAAM,kDAAkD,CAAC;AACxF,YAAY,EACV,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAC,gBAAgB,EAAC,MAAM,8CAA8C,CAAC;AAC9E,YAAY,EAAC,uBAAuB,EAAC,MAAM,8CAA8C,CAAC;AAC1F,YAAY,EACV,GAAG,EACH,KAAK,EACL,eAAe,EACf,WAAW,EACX,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,2BAA2B,EAC3B,mCAAmC,EACnC,WAAW,EACX,WAAW,EACX,KAAK,EACL,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAe,EACf,cAAc,EACd,aAAa,GACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,GAC9B,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../zero-client/src/mod.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getNonCryptoRandomValues } from "../../../shared/src/random-values.js";
|
|
2
|
+
function nanoid(size = 21) {
|
|
3
|
+
const randomBytes = getNonCryptoRandomValues(new Uint8Array(size));
|
|
4
|
+
return randomBytes.reduce((id, byte) => {
|
|
5
|
+
byte &= 63;
|
|
6
|
+
if (byte < 36) {
|
|
7
|
+
id += byte.toString(36);
|
|
8
|
+
} else if (byte < 62) {
|
|
9
|
+
id += (byte - 26).toString(36).toUpperCase();
|
|
10
|
+
} else if (byte > 62) {
|
|
11
|
+
id += "-";
|
|
12
|
+
} else {
|
|
13
|
+
id += "_";
|
|
14
|
+
}
|
|
15
|
+
return id;
|
|
16
|
+
}, "");
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
nanoid
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=nanoid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nanoid.js","sources":["../../../../../zero-client/src/util/nanoid.ts"],"sourcesContent":["// This is taken from https://github.com/ai/nanoid/blob/main/index.browser.js We\n// copy this because we want to use `--platform=neutral` which doesn't work with\n// the npm package.\n// Also we changed the random number generator to use Math.random() for compat\n// with React Native.\n\nimport {getNonCryptoRandomValues} from '../../../shared/src/random-values.ts';\n\nexport function nanoid(size = 21): string {\n // Use our custom getRandomValues function to fill a Uint8Array with random values.\n const randomBytes = getNonCryptoRandomValues(new Uint8Array(size));\n\n return randomBytes.reduce((id, byte) => {\n // It is incorrect to use bytes exceeding the alphabet size.\n // The following mask reduces the random byte in the 0-255 value\n // range to the 0-63 value range. Therefore, adding hacks, such\n // as empty string fallback or magic numbers, is unneccessary because\n // the bitmask trims bytes down to the alphabet size.\n byte &= 63;\n if (byte < 36) {\n // `0-9a-z`\n id += byte.toString(36);\n } else if (byte < 62) {\n // `A-Z`\n id += (byte - 26).toString(36).toUpperCase();\n } else if (byte > 62) {\n id += '-';\n } else {\n id += '_';\n }\n return id;\n }, '');\n}\n"],"names":[],"mappings":";AAQO,SAAS,OAAO,OAAO,IAAY;AAExC,QAAM,cAAc,yBAAyB,IAAI,WAAW,IAAI,CAAC;AAEjE,SAAO,YAAY,OAAO,CAAC,IAAI,SAAS;AAMtC,YAAQ;AACR,QAAI,OAAO,IAAI;AAEb,YAAM,KAAK,SAAS,EAAE;AAAA,IACxB,WAAW,OAAO,IAAI;AAEpB,aAAO,OAAO,IAAI,SAAS,EAAE,EAAE,YAAA;AAAA,IACjC,WAAW,OAAO,IAAI;AACpB,YAAM;AAAA,IACR,OAAO;AACL,YAAM;AAAA,IACR;AACA,WAAO;AAAA,EACT,GAAG,EAAE;AACP;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket.js","sources":["../../../../../zero-client/src/util/socket.ts"],"sourcesContent":["import type {Upstream} from '../../../zero-protocol/src/up.ts';\n\nexport function send(ws: WebSocket, data: Upstream) {\n ws.send(JSON.stringify(data));\n}\n"],"names":[],"mappings":"AAEO,SAAS,KAAK,IAAe,MAAgB;AAClD,KAAG,KAAK,KAAK,UAAU,IAAI,CAAC;AAC9B;"}
|
|
@@ -1,26 +1,34 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "../../shared/src/valita.js";
|
|
2
2
|
import { rowSchema } from "./data.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
3
|
+
import { record, number, array, object, string } from "@badrap/valita";
|
|
4
|
+
const rowCountsByQuerySchema = record(number());
|
|
5
|
+
const rowCountsBySourceSchema = record(rowCountsByQuerySchema);
|
|
6
|
+
const rowsByQuerySchema = record(array(rowSchema));
|
|
7
|
+
const rowsBySourceSchema = record(rowsByQuerySchema);
|
|
8
|
+
const analyzeQueryResultSchema = object({
|
|
9
|
+
warnings: array(string()),
|
|
10
|
+
syncedRows: record(array(rowSchema)).optional(),
|
|
11
|
+
syncedRowCount: number(),
|
|
12
|
+
start: number(),
|
|
13
|
+
/** @deprecated Use start + elapsed instead */
|
|
14
|
+
end: number(),
|
|
15
|
+
elapsed: number().optional(),
|
|
16
|
+
afterPermissions: string().optional(),
|
|
17
|
+
/** @deprecated Use readRowCountsByQuery */
|
|
18
|
+
vendedRowCounts: rowCountsBySourceSchema.optional(),
|
|
19
|
+
/** @deprecated Use readRows */
|
|
20
|
+
vendedRows: rowsBySourceSchema.optional(),
|
|
21
|
+
plans: record(array(string())).optional(),
|
|
22
|
+
readRows: rowsBySourceSchema.optional(),
|
|
23
|
+
readRowCountsByQuery: rowCountsBySourceSchema.optional(),
|
|
24
|
+
readRowCount: number().optional(),
|
|
25
|
+
dbScansByQuery: rowCountsBySourceSchema.optional()
|
|
25
26
|
});
|
|
26
|
-
|
|
27
|
+
export {
|
|
28
|
+
analyzeQueryResultSchema,
|
|
29
|
+
rowCountsByQuerySchema,
|
|
30
|
+
rowCountsBySourceSchema,
|
|
31
|
+
rowsByQuerySchema,
|
|
32
|
+
rowsBySourceSchema
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=analyze-query-result.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze-query-result.js","
|
|
1
|
+
{"version":3,"file":"analyze-query-result.js","sources":["../../../../zero-protocol/src/analyze-query-result.ts"],"sourcesContent":["import * as v from '../../shared/src/valita.ts';\n\nimport {rowSchema} from './data.ts';\n\nexport const rowCountsByQuerySchema = v.record(v.number());\nexport type RowCountsByQuery = v.Infer<typeof rowCountsByQuerySchema>;\n\nexport const rowCountsBySourceSchema = v.record(rowCountsByQuerySchema);\nexport type RowCountsBySource = v.Infer<typeof rowCountsBySourceSchema>;\n\nexport const rowsByQuerySchema = v.record(v.array(rowSchema));\nexport type RowsByQuery = v.Infer<typeof rowsByQuerySchema>;\n\nexport const rowsBySourceSchema = v.record(rowsByQuerySchema);\nexport type RowsBySource = v.Infer<typeof rowsBySourceSchema>;\n\nexport const analyzeQueryResultSchema = v.object({\n warnings: v.array(v.string()),\n syncedRows: v.record(v.array(rowSchema)).optional(),\n syncedRowCount: v.number(),\n start: v.number(),\n /** @deprecated Use start + elapsed instead */\n end: v.number(),\n elapsed: v.number().optional(),\n afterPermissions: v.string().optional(),\n /** @deprecated Use readRowCountsByQuery */\n vendedRowCounts: rowCountsBySourceSchema.optional(),\n /** @deprecated Use readRows */\n vendedRows: rowsBySourceSchema.optional(),\n plans: v.record(v.array(v.string())).optional(),\n readRows: rowsBySourceSchema.optional(),\n readRowCountsByQuery: rowCountsBySourceSchema.optional(),\n readRowCount: v.number().optional(),\n dbScansByQuery: rowCountsBySourceSchema.optional(),\n});\n\nexport type AnalyzeQueryResult = v.Infer<typeof analyzeQueryResultSchema>;\n"],"names":["v.record","v.number","v.array","v.object","v.string"],"mappings":";;;AAIO,MAAM,yBAAyBA,OAASC,QAAU;AAGlD,MAAM,0BAA0BD,OAAS,sBAAsB;AAG/D,MAAM,oBAAoBA,OAASE,MAAQ,SAAS,CAAC;AAGrD,MAAM,qBAAqBF,OAAS,iBAAiB;AAGrD,MAAM,2BAA2BG,OAAS;AAAA,EAC/C,UAAUD,MAAQE,QAAU;AAAA,EAC5B,YAAYJ,OAASE,MAAQ,SAAS,CAAC,EAAE,SAAA;AAAA,EACzC,gBAAgBD,OAAE;AAAA,EAClB,OAAOA,OAAE;AAAA;AAAA,EAET,KAAKA,OAAE;AAAA,EACP,SAASA,OAAE,EAAS,SAAA;AAAA,EACpB,kBAAkBG,OAAE,EAAS,SAAA;AAAA;AAAA,EAE7B,iBAAiB,wBAAwB,SAAA;AAAA;AAAA,EAEzC,YAAY,mBAAmB,SAAA;AAAA,EAC/B,OAAOJ,OAASE,MAAQE,OAAE,CAAQ,CAAC,EAAE,SAAA;AAAA,EACrC,UAAU,mBAAmB,SAAA;AAAA,EAC7B,sBAAsB,wBAAwB,SAAA;AAAA,EAC9C,cAAcH,OAAE,EAAS,SAAA;AAAA,EACzB,gBAAgB,wBAAwB,SAAA;AAC1C,CAAC;"}
|
|
@@ -1,40 +1,38 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
get details() {
|
|
20
|
-
return this.#details;
|
|
21
|
-
}
|
|
22
|
-
get kind() {
|
|
23
|
-
return 'Application';
|
|
24
|
-
}
|
|
1
|
+
import { getErrorMessage, getErrorDetails } from "../../shared/src/error.js";
|
|
2
|
+
class ApplicationError extends Error {
|
|
3
|
+
/**
|
|
4
|
+
* This maps onto errors for transform and push app-level failures.
|
|
5
|
+
*/
|
|
6
|
+
#details;
|
|
7
|
+
constructor(message, options) {
|
|
8
|
+
super(message, { cause: options?.cause });
|
|
9
|
+
this.name = "ApplicationError";
|
|
10
|
+
this.#details = options?.details ?? void 0;
|
|
11
|
+
}
|
|
12
|
+
get details() {
|
|
13
|
+
return this.#details;
|
|
14
|
+
}
|
|
15
|
+
get kind() {
|
|
16
|
+
return "Application";
|
|
17
|
+
}
|
|
25
18
|
}
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
function isApplicationError(error) {
|
|
20
|
+
return error instanceof ApplicationError;
|
|
28
21
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
22
|
+
function wrapWithApplicationError(error) {
|
|
23
|
+
if (isApplicationError(error)) {
|
|
24
|
+
return error;
|
|
25
|
+
}
|
|
26
|
+
const message = getErrorMessage(error);
|
|
27
|
+
const details = getErrorDetails(error);
|
|
28
|
+
return new ApplicationError(message, {
|
|
29
|
+
cause: error,
|
|
30
|
+
details
|
|
31
|
+
});
|
|
39
32
|
}
|
|
40
|
-
|
|
33
|
+
export {
|
|
34
|
+
ApplicationError,
|
|
35
|
+
isApplicationError,
|
|
36
|
+
wrapWithApplicationError
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=application-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-error.js","
|
|
1
|
+
{"version":3,"file":"application-error.js","sources":["../../../../zero-protocol/src/application-error.ts"],"sourcesContent":["import {getErrorDetails, getErrorMessage} from '../../shared/src/error.ts';\nimport type {ReadonlyJSONValue} from '../../shared/src/json.ts';\n\n/**\n * Options accepted by {@link ApplicationError}.\n *\n * Use these when you need to attach additional context to an error that will\n * be sent back to the client.\n */\nexport interface ApplicationErrorOptions<\n T extends ReadonlyJSONValue | undefined,\n> {\n details?: T;\n cause?: unknown;\n}\n\n/**\n * Error type that application code can throw to surface structured metadata back to\n * the client.\n *\n * Use this when you want to return a descriptive message along with the\n * JSON-serializable `details`.\n */\nexport class ApplicationError<\n const T extends ReadonlyJSONValue | undefined = ReadonlyJSONValue | undefined,\n> extends Error {\n /**\n * This maps onto errors for transform and push app-level failures.\n */\n readonly #details: T;\n\n constructor(\n message: string,\n options?: ApplicationErrorOptions<T> | undefined,\n ) {\n super(message, {cause: options?.cause});\n this.name = 'ApplicationError';\n this.#details = options?.details ?? (undefined as T);\n }\n\n get details(): T {\n return this.#details;\n }\n\n get kind(): 'Application' {\n return 'Application';\n }\n}\n\nexport function isApplicationError(error: unknown): error is ApplicationError {\n return error instanceof ApplicationError;\n}\n\nexport function wrapWithApplicationError<\n T extends ReadonlyJSONValue | undefined = ReadonlyJSONValue | undefined,\n>(error: unknown): ApplicationError<T> {\n if (isApplicationError(error)) {\n return error as ApplicationError<T>;\n }\n\n const message = getErrorMessage(error);\n const details = getErrorDetails(error);\n\n return new ApplicationError<T>(message, {\n cause: error,\n details: details as T,\n });\n}\n"],"names":[],"mappings":";AAuBO,MAAM,yBAEH,MAAM;AAAA;AAAA;AAAA;AAAA,EAIL;AAAA,EAET,YACE,SACA,SACA;AACA,UAAM,SAAS,EAAC,OAAO,SAAS,OAAM;AACtC,SAAK,OAAO;AACZ,SAAK,WAAW,SAAS,WAAY;AAAA,EACvC;AAAA,EAEA,IAAI,UAAa;AACf,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,OAAsB;AACxB,WAAO;AAAA,EACT;AACF;AAEO,SAAS,mBAAmB,OAA2C;AAC5E,SAAO,iBAAiB;AAC1B;AAEO,SAAS,yBAEd,OAAqC;AACrC,MAAI,mBAAmB,KAAK,GAAG;AAC7B,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,gBAAgB,KAAK;AAErC,SAAO,IAAI,iBAAoB,SAAS;AAAA,IACtC,OAAO;AAAA,IACP;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -12,7 +12,7 @@ export declare const SUBQ_PREFIX = "zsubq_";
|
|
|
12
12
|
export declare const selectorSchema: v.Type<string>;
|
|
13
13
|
export declare const toStaticParam: unique symbol;
|
|
14
14
|
export declare const planIdSymbol: unique symbol;
|
|
15
|
-
export declare const orderingSchema: v.Type<readonly (readonly [string, "
|
|
15
|
+
export declare const orderingSchema: v.Type<readonly (readonly [string, "desc" | "asc"])[]>;
|
|
16
16
|
export type System = 'permissions' | 'client' | 'test';
|
|
17
17
|
export declare const primitiveSchema: v.UnionType<[v.Type<string>, v.Type<number>, v.Type<boolean>, v.Type<null>]>;
|
|
18
18
|
export declare const equalityOpsSchema: v.Type<"=" | "!=" | "IS" | "IS NOT">;
|