@rocicorp/zero 0.25.0-canary.7 → 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.js +289 -322
- 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 -126
- 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.js +9 -4
- 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.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.js +139 -161
- 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 +234 -355
- 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.js +24 -26
- 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.js +28 -37
- package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +2 -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 -372
- 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 +193 -178
- 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.js +83 -92
- 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 -616
- 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 -482
- 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.js +229 -280
- 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 +3 -2
- 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 +45 -2
- 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 +3 -6
- 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 +9 -12
- 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.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.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.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 +4 -4
- 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 +1 -1
- 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.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 +26 -9
- 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 +3 -2
- 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 +1 -1
- 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 +10 -10
- 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.js +202 -251
- 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-fan-in.js +154 -164
- 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 +6 -6
- package/out/zql/src/planner/planner-graph.d.ts.map +1 -1
- package/out/zql/src/planner/planner-graph.js +315 -338
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.js +234 -342
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-source.js +23 -12
- package/out/zql/src/planner/planner-source.js.map +1 -1
- package/out/zql/src/planner/planner-terminus.js +28 -27
- package/out/zql/src/planner/planner-terminus.js.map +1 -1
- package/out/zql/src/query/complete-ordering.d.ts +5 -0
- package/out/zql/src/query/complete-ordering.d.ts.map +1 -0
- package/out/zql/src/query/complete-ordering.js +71 -0
- package/out/zql/src/query/complete-ordering.js.map +1 -0
- package/out/zql/src/query/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.js +94 -125
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.js +277 -353
- package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
- 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 +22 -25
- 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-FODUNUAD.js +0 -18850
- package/out/chunk-FODUNUAD.js.map +0 -7
- package/out/chunk-HCZQVP5R.js.map +0 -7
- package/out/chunk-S633A55A.js +0 -495
- package/out/chunk-S633A55A.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/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-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
|
@@ -1,529 +1,403 @@
|
|
|
1
|
-
import { resolver } from
|
|
1
|
+
import { resolver } from "@rocicorp/resolver";
|
|
2
2
|
import { assert } from "../../../shared/src/asserts.js";
|
|
3
3
|
import { stringify } from "../../../shared/src/bigint-json.js";
|
|
4
4
|
import { Queue } from "../../../shared/src/queue.js";
|
|
5
5
|
import { promiseVoid } from "../../../shared/src/resolved-promises.js";
|
|
6
|
-
import { disableStatementTimeout
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
6
|
+
import { disableStatementTimeout } from "../types/pg.js";
|
|
7
|
+
class TransactionPool {
|
|
8
|
+
#lc;
|
|
9
|
+
#mode;
|
|
10
|
+
#init;
|
|
11
|
+
#cleanup;
|
|
12
|
+
#tasks = new Queue();
|
|
13
|
+
#workers = [];
|
|
14
|
+
#initialWorkers;
|
|
15
|
+
#maxWorkers;
|
|
16
|
+
#timeoutTask;
|
|
17
|
+
#numWorkers;
|
|
18
|
+
#numWorking = 0;
|
|
19
|
+
#db;
|
|
20
|
+
// set when running. stored to allow adaptive pool sizing.
|
|
21
|
+
#refCount = 1;
|
|
22
|
+
#done = false;
|
|
23
|
+
#failure;
|
|
24
|
+
/**
|
|
25
|
+
* @param init A {@link Task} that is run in each Transaction before it begins
|
|
26
|
+
* processing general tasks. This can be used to to set the transaction
|
|
27
|
+
* mode, export/set snapshots, etc. This will be run even if
|
|
28
|
+
* {@link fail} has been called on the pool.
|
|
29
|
+
* @param cleanup A {@link Task} that is run in each Transaction before it closes.
|
|
30
|
+
* This will be run even if {@link fail} has been called, or if a
|
|
31
|
+
* preceding Task threw an Error.
|
|
32
|
+
* @param initialWorkers The initial number of transaction workers to process tasks.
|
|
33
|
+
* This is the steady state number of workers that will be kept
|
|
34
|
+
* alive if the TransactionPool is long lived.
|
|
35
|
+
* This must be greater than 0. Defaults to 1.
|
|
36
|
+
* @param maxWorkers When specified, allows the pool to grow to `maxWorkers`. This
|
|
37
|
+
* must be greater than or equal to `initialWorkers`. On-demand
|
|
38
|
+
* workers will be shut down after an idle timeout of 5 seconds.
|
|
39
|
+
*/
|
|
40
|
+
constructor(lc, mode, init, cleanup, initialWorkers = 1, maxWorkers = initialWorkers, timeoutTasks = TIMEOUT_TASKS) {
|
|
41
|
+
assert(initialWorkers > 0);
|
|
42
|
+
assert(maxWorkers >= initialWorkers);
|
|
43
|
+
this.#lc = lc;
|
|
44
|
+
this.#mode = mode;
|
|
45
|
+
this.#init = init ? this.#stmtRunner(init) : void 0;
|
|
46
|
+
this.#cleanup = cleanup ? this.#stmtRunner(cleanup) : void 0;
|
|
47
|
+
this.#initialWorkers = initialWorkers;
|
|
48
|
+
this.#numWorkers = initialWorkers;
|
|
49
|
+
this.#maxWorkers = maxWorkers;
|
|
50
|
+
this.#timeoutTask = timeoutTasks;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Starts the pool of workers to process Tasks with transactions opened from the
|
|
54
|
+
* specified {@link db}.
|
|
55
|
+
*/
|
|
56
|
+
run(db) {
|
|
57
|
+
assert(!this.#db, "already running");
|
|
58
|
+
this.#db = db;
|
|
59
|
+
for (let i = 0; i < this.#numWorkers; i++) {
|
|
60
|
+
this.#addWorker(db);
|
|
59
61
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
62
|
+
return this;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Adds context parameters to internal LogContext. This is useful for context values that
|
|
66
|
+
* are not known when the TransactionPool is constructed (e.g. determined after a database
|
|
67
|
+
* call when the pool is running).
|
|
68
|
+
*
|
|
69
|
+
* Returns an object that can be used to add more parameters.
|
|
70
|
+
*/
|
|
71
|
+
addLoggingContext(key, value) {
|
|
72
|
+
this.#lc = this.#lc.withContext(key, value);
|
|
73
|
+
return {
|
|
74
|
+
addLoggingContext: (key2, value2) => this.addLoggingContext(key2, value2)
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Returns a promise that:
|
|
79
|
+
*
|
|
80
|
+
* * resolves after {@link setDone} has been called (or the the pool as been {@link unref}ed
|
|
81
|
+
* to a 0 ref count), once all added tasks have been processed and all transactions have been
|
|
82
|
+
* committed or closed.
|
|
83
|
+
*
|
|
84
|
+
* * rejects if processing was aborted with {@link fail} or if processing any of
|
|
85
|
+
* the tasks resulted in an error. All uncommitted transactions will have been
|
|
86
|
+
* rolled back.
|
|
87
|
+
*
|
|
88
|
+
* Note that partial failures are possible if processing writes with multiple workers
|
|
89
|
+
* (e.g. `setDone` is called, allowing some workers to commit, after which other
|
|
90
|
+
* workers encounter errors). Using a TransactionPool in this manner does not make
|
|
91
|
+
* sense in terms of transactional semantics, and is thus not recommended.
|
|
92
|
+
*
|
|
93
|
+
* For reads, however, multiple workers is useful for performing parallel reads
|
|
94
|
+
* at the same snapshot. See {@link synchronizedSnapshots} for an example.
|
|
95
|
+
* Resolves or rejects when all workers are done or failed.
|
|
96
|
+
*/
|
|
97
|
+
async done() {
|
|
98
|
+
const numWorkers = this.#workers.length;
|
|
99
|
+
await Promise.all(this.#workers);
|
|
100
|
+
if (numWorkers < this.#workers.length) {
|
|
101
|
+
await Promise.all(this.#workers);
|
|
71
102
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
103
|
+
this.#lc.debug?.("transaction pool done");
|
|
104
|
+
}
|
|
105
|
+
#addWorker(db) {
|
|
106
|
+
const id = this.#workers.length + 1;
|
|
107
|
+
const lc = this.#lc.withContext("tx", id);
|
|
108
|
+
const tt = this.#workers.length < this.#initialWorkers ? this.#timeoutTask.forInitialWorkers : this.#timeoutTask.forExtraWorkers;
|
|
109
|
+
const { timeoutMs } = tt;
|
|
110
|
+
const timeoutTask = tt.task === "done" ? "done" : this.#stmtRunner(tt.task);
|
|
111
|
+
const worker = async (tx) => {
|
|
112
|
+
try {
|
|
113
|
+
lc.debug?.("started transaction");
|
|
114
|
+
disableStatementTimeout(tx);
|
|
115
|
+
let last = promiseVoid;
|
|
116
|
+
const executeTask = async (runner) => {
|
|
117
|
+
runner !== this.#init && this.#numWorking++;
|
|
118
|
+
const { pending } = await runner.run(tx, lc, () => {
|
|
119
|
+
runner !== this.#init && this.#numWorking--;
|
|
120
|
+
});
|
|
121
|
+
last = pending ?? last;
|
|
83
122
|
};
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
* to a 0 ref count), once all added tasks have been processed and all transactions have been
|
|
90
|
-
* committed or closed.
|
|
91
|
-
*
|
|
92
|
-
* * rejects if processing was aborted with {@link fail} or if processing any of
|
|
93
|
-
* the tasks resulted in an error. All uncommitted transactions will have been
|
|
94
|
-
* rolled back.
|
|
95
|
-
*
|
|
96
|
-
* Note that partial failures are possible if processing writes with multiple workers
|
|
97
|
-
* (e.g. `setDone` is called, allowing some workers to commit, after which other
|
|
98
|
-
* workers encounter errors). Using a TransactionPool in this manner does not make
|
|
99
|
-
* sense in terms of transactional semantics, and is thus not recommended.
|
|
100
|
-
*
|
|
101
|
-
* For reads, however, multiple workers is useful for performing parallel reads
|
|
102
|
-
* at the same snapshot. See {@link synchronizedSnapshots} for an example.
|
|
103
|
-
* Resolves or rejects when all workers are done or failed.
|
|
104
|
-
*/
|
|
105
|
-
async done() {
|
|
106
|
-
const numWorkers = this.#workers.length;
|
|
107
|
-
await Promise.all(this.#workers);
|
|
108
|
-
if (numWorkers < this.#workers.length) {
|
|
109
|
-
// If workers were added after the initial set, they must be awaited to ensure
|
|
110
|
-
// that the results (i.e. rejections) of all workers are accounted for. This only
|
|
111
|
-
// needs to be re-done once, because the fact that the first `await` completed
|
|
112
|
-
// guarantees that the pool is in a terminal state and no new workers can be added.
|
|
113
|
-
await Promise.all(this.#workers);
|
|
114
|
-
}
|
|
115
|
-
this.#lc.debug?.('transaction pool done');
|
|
116
|
-
}
|
|
117
|
-
#addWorker(db) {
|
|
118
|
-
const id = this.#workers.length + 1;
|
|
119
|
-
const lc = this.#lc.withContext('tx', id);
|
|
120
|
-
const tt = this.#workers.length < this.#initialWorkers
|
|
121
|
-
? this.#timeoutTask.forInitialWorkers
|
|
122
|
-
: this.#timeoutTask.forExtraWorkers;
|
|
123
|
-
const { timeoutMs } = tt;
|
|
124
|
-
const timeoutTask = tt.task === 'done' ? 'done' : this.#stmtRunner(tt.task);
|
|
125
|
-
const worker = async (tx) => {
|
|
126
|
-
try {
|
|
127
|
-
lc.debug?.('started transaction');
|
|
128
|
-
disableStatementTimeout(tx);
|
|
129
|
-
let last = promiseVoid;
|
|
130
|
-
const executeTask = async (runner) => {
|
|
131
|
-
runner !== this.#init && this.#numWorking++;
|
|
132
|
-
const { pending } = await runner.run(tx, lc, () => {
|
|
133
|
-
runner !== this.#init && this.#numWorking--;
|
|
134
|
-
});
|
|
135
|
-
last = pending ?? last;
|
|
136
|
-
};
|
|
137
|
-
let task = this.#init ?? (await this.#tasks.dequeue(timeoutTask, timeoutMs));
|
|
138
|
-
try {
|
|
139
|
-
while (task !== 'done') {
|
|
140
|
-
if (task instanceof Error ||
|
|
141
|
-
(task !== this.#init && this.#failure)) {
|
|
142
|
-
throw this.#failure ?? task;
|
|
143
|
-
}
|
|
144
|
-
await executeTask(task);
|
|
145
|
-
// await the next task.
|
|
146
|
-
task = await this.#tasks.dequeue(timeoutTask, timeoutMs);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
finally {
|
|
150
|
-
// Execute the cleanup task even on failure.
|
|
151
|
-
if (this.#cleanup) {
|
|
152
|
-
await executeTask(this.#cleanup);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
lc.debug?.('closing transaction');
|
|
156
|
-
// Given the semantics of a Postgres transaction, the last statement
|
|
157
|
-
// will only succeed if all of the preceding statements succeeded.
|
|
158
|
-
return last;
|
|
123
|
+
let task = this.#init ?? await this.#tasks.dequeue(timeoutTask, timeoutMs);
|
|
124
|
+
try {
|
|
125
|
+
while (task !== "done") {
|
|
126
|
+
if (task instanceof Error || task !== this.#init && this.#failure) {
|
|
127
|
+
throw this.#failure ?? task;
|
|
159
128
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
};
|
|
168
|
-
this.#workers.push(db
|
|
169
|
-
.begin(this.#mode, worker)
|
|
170
|
-
.catch(e => {
|
|
171
|
-
if (e instanceof RollbackSignal) {
|
|
172
|
-
// A RollbackSignal is used to gracefully rollback the postgres.js
|
|
173
|
-
// transaction block. It should not be thrown up to the application.
|
|
174
|
-
lc.debug?.('aborted transaction');
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
throw e;
|
|
178
|
-
}
|
|
179
|
-
})
|
|
180
|
-
.finally(() => this.#numWorkers--));
|
|
181
|
-
// After adding the worker, enqueue a terminal signal if we are in either of the
|
|
182
|
-
// terminal states (both of which prevent more tasks from being enqueued), to ensure
|
|
183
|
-
// that the added worker eventually exits.
|
|
184
|
-
if (this.#done) {
|
|
185
|
-
this.#tasks.enqueue('done');
|
|
129
|
+
await executeTask(task);
|
|
130
|
+
task = await this.#tasks.dequeue(timeoutTask, timeoutMs);
|
|
131
|
+
}
|
|
132
|
+
} finally {
|
|
133
|
+
if (this.#cleanup) {
|
|
134
|
+
await executeTask(this.#cleanup);
|
|
135
|
+
}
|
|
186
136
|
}
|
|
187
|
-
|
|
188
|
-
|
|
137
|
+
lc.debug?.("closing transaction");
|
|
138
|
+
return last;
|
|
139
|
+
} catch (e) {
|
|
140
|
+
if (e !== this.#failure) {
|
|
141
|
+
lc.error?.("error from worker", e);
|
|
142
|
+
this.fail(e);
|
|
189
143
|
}
|
|
144
|
+
throw e;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
this.#workers.push(
|
|
148
|
+
db.begin(this.#mode, worker).catch((e) => {
|
|
149
|
+
if (e instanceof RollbackSignal) {
|
|
150
|
+
lc.debug?.("aborted transaction");
|
|
151
|
+
} else {
|
|
152
|
+
throw e;
|
|
153
|
+
}
|
|
154
|
+
}).finally(() => this.#numWorkers--)
|
|
155
|
+
);
|
|
156
|
+
if (this.#done) {
|
|
157
|
+
this.#tasks.enqueue("done");
|
|
190
158
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
* returning a Promise that resolves when the statements are either processed
|
|
194
|
-
* by the database or rejected.
|
|
195
|
-
*
|
|
196
|
-
* Note that statement failures will result in failing the entire
|
|
197
|
-
* TransactionPool (per transaction semantics). However, the returned Promise
|
|
198
|
-
* itself will resolve rather than reject. As such, it is fine to ignore
|
|
199
|
-
* returned Promises in order to pipeline requests to the database. It is
|
|
200
|
-
* recommended to occasionally await them (e.g. after some threshold) in
|
|
201
|
-
* order to avoid memory blowup in the case of database slowness.
|
|
202
|
-
*/
|
|
203
|
-
process(task) {
|
|
204
|
-
const r = resolver();
|
|
205
|
-
this.#process(this.#stmtRunner(task, r));
|
|
206
|
-
return r.promise;
|
|
207
|
-
}
|
|
208
|
-
#start = performance.now();
|
|
209
|
-
#stmts = 0;
|
|
210
|
-
/**
|
|
211
|
-
* Implements the semantics specified in {@link process()}.
|
|
212
|
-
*
|
|
213
|
-
* Specifically:
|
|
214
|
-
* * `freeWorker()` is called as soon as the statements are produced,
|
|
215
|
-
* allowing them to be pipelined to the database.
|
|
216
|
-
* * Statement errors result in failing the transaction pool.
|
|
217
|
-
* * The client-supplied Resolver resolves on success or failure;
|
|
218
|
-
* it is never rejected.
|
|
219
|
-
*/
|
|
220
|
-
#stmtRunner(task, r = resolver()) {
|
|
221
|
-
return {
|
|
222
|
-
run: async (tx, lc, freeWorker) => {
|
|
223
|
-
let stmts;
|
|
224
|
-
try {
|
|
225
|
-
stmts = await task(tx, lc);
|
|
226
|
-
}
|
|
227
|
-
catch (e) {
|
|
228
|
-
r.resolve();
|
|
229
|
-
throw e;
|
|
230
|
-
}
|
|
231
|
-
finally {
|
|
232
|
-
freeWorker();
|
|
233
|
-
}
|
|
234
|
-
if (stmts.length === 0) {
|
|
235
|
-
r.resolve();
|
|
236
|
-
return { pending: null };
|
|
237
|
-
}
|
|
238
|
-
// Execute the statements (i.e. send to the db) immediately.
|
|
239
|
-
// The last result is returned for the worker to await before
|
|
240
|
-
// closing the transaction.
|
|
241
|
-
const last = stmts.reduce((_, stmt) => stmt
|
|
242
|
-
.execute()
|
|
243
|
-
.then(() => {
|
|
244
|
-
if (++this.#stmts % 1000 === 0) {
|
|
245
|
-
const q = stmt;
|
|
246
|
-
lc.debug?.(`executed ${this.#stmts}th statement (${(performance.now() - this.#start).toFixed(3)} ms)`, {
|
|
247
|
-
statement: q.string,
|
|
248
|
-
params: stringify(q.parameters),
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
})
|
|
252
|
-
.catch(e => this.fail(e)), promiseVoid);
|
|
253
|
-
return { pending: last.then(r.resolve) };
|
|
254
|
-
},
|
|
255
|
-
rejected: r.resolve,
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Processes and returns the result of executing the {@link ReadTask} from
|
|
260
|
-
* within the transaction. An error thrown by the task will result in
|
|
261
|
-
* rejecting the returned Promise, but will not affect the transaction pool
|
|
262
|
-
* itself.
|
|
263
|
-
*/
|
|
264
|
-
processReadTask(readTask) {
|
|
265
|
-
const r = resolver();
|
|
266
|
-
this.#process(this.#readRunner(readTask, r));
|
|
267
|
-
return r.promise;
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Implements the semantics specified in {@link processReadTask()}.
|
|
271
|
-
*
|
|
272
|
-
* Specifically:
|
|
273
|
-
* * `freeWorker()` is called as soon as the result is produced,
|
|
274
|
-
* before resolving the client-supplied Resolver.
|
|
275
|
-
* * Errors result in rejecting the client-supplied Resolver but
|
|
276
|
-
* do not affect transaction pool.
|
|
277
|
-
*/
|
|
278
|
-
#readRunner(readTask, r) {
|
|
279
|
-
return {
|
|
280
|
-
run: async (tx, lc, freeWorker) => {
|
|
281
|
-
let result;
|
|
282
|
-
try {
|
|
283
|
-
result = await readTask(tx, lc);
|
|
284
|
-
freeWorker();
|
|
285
|
-
r.resolve(result);
|
|
286
|
-
}
|
|
287
|
-
catch (e) {
|
|
288
|
-
freeWorker();
|
|
289
|
-
r.reject(e);
|
|
290
|
-
}
|
|
291
|
-
return { pending: null };
|
|
292
|
-
},
|
|
293
|
-
rejected: r.reject,
|
|
294
|
-
};
|
|
159
|
+
if (this.#failure) {
|
|
160
|
+
this.#tasks.enqueue(this.#failure);
|
|
295
161
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Processes the statements produced by the specified {@link Task},
|
|
165
|
+
* returning a Promise that resolves when the statements are either processed
|
|
166
|
+
* by the database or rejected.
|
|
167
|
+
*
|
|
168
|
+
* Note that statement failures will result in failing the entire
|
|
169
|
+
* TransactionPool (per transaction semantics). However, the returned Promise
|
|
170
|
+
* itself will resolve rather than reject. As such, it is fine to ignore
|
|
171
|
+
* returned Promises in order to pipeline requests to the database. It is
|
|
172
|
+
* recommended to occasionally await them (e.g. after some threshold) in
|
|
173
|
+
* order to avoid memory blowup in the case of database slowness.
|
|
174
|
+
*/
|
|
175
|
+
process(task) {
|
|
176
|
+
const r = resolver();
|
|
177
|
+
this.#process(this.#stmtRunner(task, r));
|
|
178
|
+
return r.promise;
|
|
179
|
+
}
|
|
180
|
+
#start = performance.now();
|
|
181
|
+
#stmts = 0;
|
|
182
|
+
/**
|
|
183
|
+
* Implements the semantics specified in {@link process()}.
|
|
184
|
+
*
|
|
185
|
+
* Specifically:
|
|
186
|
+
* * `freeWorker()` is called as soon as the statements are produced,
|
|
187
|
+
* allowing them to be pipelined to the database.
|
|
188
|
+
* * Statement errors result in failing the transaction pool.
|
|
189
|
+
* * The client-supplied Resolver resolves on success or failure;
|
|
190
|
+
* it is never rejected.
|
|
191
|
+
*/
|
|
192
|
+
#stmtRunner(task, r = resolver()) {
|
|
193
|
+
return {
|
|
194
|
+
run: async (tx, lc, freeWorker) => {
|
|
195
|
+
let stmts;
|
|
196
|
+
try {
|
|
197
|
+
stmts = await task(tx, lc);
|
|
198
|
+
} catch (e) {
|
|
199
|
+
r.resolve();
|
|
200
|
+
throw e;
|
|
201
|
+
} finally {
|
|
202
|
+
freeWorker();
|
|
301
203
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
const outstanding = this.#tasks.size();
|
|
306
|
-
if (outstanding > this.#numWorkers - this.#numWorking) {
|
|
307
|
-
this.#db && this.#addWorker(this.#db);
|
|
308
|
-
this.#numWorkers++;
|
|
309
|
-
this.#lc.debug?.(`Increased pool size to ${this.#numWorkers}`);
|
|
310
|
-
}
|
|
204
|
+
if (stmts.length === 0) {
|
|
205
|
+
r.resolve();
|
|
206
|
+
return { pending: null };
|
|
311
207
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
208
|
+
const last = stmts.reduce(
|
|
209
|
+
(_, stmt) => stmt.execute().then(() => {
|
|
210
|
+
if (++this.#stmts % 1e3 === 0) {
|
|
211
|
+
const q = stmt;
|
|
212
|
+
lc.debug?.(
|
|
213
|
+
`executed ${this.#stmts}th statement (${(performance.now() - this.#start).toFixed(3)} ms)`,
|
|
214
|
+
{
|
|
215
|
+
statement: q.string,
|
|
216
|
+
params: stringify(q.parameters)
|
|
217
|
+
}
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
}).catch((e) => this.fail(e)),
|
|
221
|
+
promiseVoid
|
|
222
|
+
);
|
|
223
|
+
return { pending: last.then(r.resolve) };
|
|
224
|
+
},
|
|
225
|
+
rejected: r.resolve
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Processes and returns the result of executing the {@link ReadTask} from
|
|
230
|
+
* within the transaction. An error thrown by the task will result in
|
|
231
|
+
* rejecting the returned Promise, but will not affect the transaction pool
|
|
232
|
+
* itself.
|
|
233
|
+
*/
|
|
234
|
+
processReadTask(readTask) {
|
|
235
|
+
const r = resolver();
|
|
236
|
+
this.#process(this.#readRunner(readTask, r));
|
|
237
|
+
return r.promise;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Implements the semantics specified in {@link processReadTask()}.
|
|
241
|
+
*
|
|
242
|
+
* Specifically:
|
|
243
|
+
* * `freeWorker()` is called as soon as the result is produced,
|
|
244
|
+
* before resolving the client-supplied Resolver.
|
|
245
|
+
* * Errors result in rejecting the client-supplied Resolver but
|
|
246
|
+
* do not affect transaction pool.
|
|
247
|
+
*/
|
|
248
|
+
#readRunner(readTask, r) {
|
|
249
|
+
return {
|
|
250
|
+
run: async (tx, lc, freeWorker) => {
|
|
251
|
+
let result;
|
|
252
|
+
try {
|
|
253
|
+
result = await readTask(tx, lc);
|
|
254
|
+
freeWorker();
|
|
255
|
+
r.resolve(result);
|
|
256
|
+
} catch (e) {
|
|
257
|
+
freeWorker();
|
|
258
|
+
r.reject(e);
|
|
329
259
|
}
|
|
260
|
+
return { pending: null };
|
|
261
|
+
},
|
|
262
|
+
rejected: r.reject
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
#process(runner) {
|
|
266
|
+
assert(!this.#done, "already set done");
|
|
267
|
+
if (this.#failure) {
|
|
268
|
+
runner.rejected(this.#failure);
|
|
269
|
+
return;
|
|
330
270
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
* error in the code.)
|
|
340
|
-
*
|
|
341
|
-
* It follows that:
|
|
342
|
-
* * The creator of the TransactionPool is responsible for running it.
|
|
343
|
-
* * The TransactionPool should be ref'ed before being sharing.
|
|
344
|
-
* * The receiver of the TransactionPool is only responsible for unref'ing it.
|
|
345
|
-
*
|
|
346
|
-
* On the other hand, a transaction pool that fails with a runtime error can still be ref'ed;
|
|
347
|
-
* attempts to use the pool will result in the runtime error as expected.
|
|
348
|
-
*/
|
|
349
|
-
// TODO: Get rid of the ref-counting stuff. It's no longer needed.
|
|
350
|
-
ref(count = 1) {
|
|
351
|
-
assert(this.#db !== undefined && !this.#done, `Cannot ref() a TransactionPool that is not running`);
|
|
352
|
-
this.#refCount += count;
|
|
271
|
+
this.#tasks.enqueue(runner);
|
|
272
|
+
if (this.#numWorkers < this.#maxWorkers) {
|
|
273
|
+
const outstanding = this.#tasks.size();
|
|
274
|
+
if (outstanding > this.#numWorkers - this.#numWorking) {
|
|
275
|
+
this.#db && this.#addWorker(this.#db);
|
|
276
|
+
this.#numWorkers++;
|
|
277
|
+
this.#lc.debug?.(`Increased pool size to ${this.#numWorkers}`);
|
|
278
|
+
}
|
|
353
279
|
}
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Ends all workers with a ROLLBACK. Throws if the pool is already done
|
|
283
|
+
* or aborted.
|
|
284
|
+
*/
|
|
285
|
+
abort() {
|
|
286
|
+
this.fail(new RollbackSignal());
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Signals to all workers to end their transaction once all pending tasks have
|
|
290
|
+
* been completed. Throws if the pool is already done or aborted.
|
|
291
|
+
*/
|
|
292
|
+
setDone() {
|
|
293
|
+
assert(!this.#done, "already set done");
|
|
294
|
+
this.#done = true;
|
|
295
|
+
for (let i = 0; i < this.#numWorkers; i++) {
|
|
296
|
+
this.#tasks.enqueue("done");
|
|
363
297
|
}
|
|
364
|
-
|
|
365
|
-
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* An alternative to explicitly calling {@link setDone}, `ref()` increments an internal reference
|
|
301
|
+
* count, and {@link unref} decrements it. When the reference count reaches 0, {@link setDone} is
|
|
302
|
+
* automatically called. A TransactionPool is initialized with a reference count of 1.
|
|
303
|
+
*
|
|
304
|
+
* `ref()` should be called before sharing the pool with another component, and only after the
|
|
305
|
+
* pool has been started with {@link run()}. It must not be called on a TransactionPool that is
|
|
306
|
+
* already done (either via {@link unref()} or {@link setDone()}. (Doing so indicates a logical
|
|
307
|
+
* error in the code.)
|
|
308
|
+
*
|
|
309
|
+
* It follows that:
|
|
310
|
+
* * The creator of the TransactionPool is responsible for running it.
|
|
311
|
+
* * The TransactionPool should be ref'ed before being sharing.
|
|
312
|
+
* * The receiver of the TransactionPool is only responsible for unref'ing it.
|
|
313
|
+
*
|
|
314
|
+
* On the other hand, a transaction pool that fails with a runtime error can still be ref'ed;
|
|
315
|
+
* attempts to use the pool will result in the runtime error as expected.
|
|
316
|
+
*/
|
|
317
|
+
// TODO: Get rid of the ref-counting stuff. It's no longer needed.
|
|
318
|
+
ref(count = 1) {
|
|
319
|
+
assert(
|
|
320
|
+
this.#db !== void 0 && !this.#done,
|
|
321
|
+
`Cannot ref() a TransactionPool that is not running`
|
|
322
|
+
);
|
|
323
|
+
this.#refCount += count;
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Decrements the internal reference count, automatically invoking {@link setDone} when it reaches 0.
|
|
327
|
+
*/
|
|
328
|
+
unref(count = 1) {
|
|
329
|
+
assert(count <= this.#refCount);
|
|
330
|
+
this.#refCount -= count;
|
|
331
|
+
if (this.#refCount === 0) {
|
|
332
|
+
this.setDone();
|
|
366
333
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
334
|
+
}
|
|
335
|
+
isRunning() {
|
|
336
|
+
return this.#db !== void 0 && !this.#done && this.#failure === void 0;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Signals all workers to fail their transactions with the given {@link err}.
|
|
340
|
+
*/
|
|
341
|
+
fail(err) {
|
|
342
|
+
if (!this.#failure) {
|
|
343
|
+
this.#failure = ensureError(err);
|
|
344
|
+
if (this.#failure instanceof ControlFlowError) {
|
|
345
|
+
this.#lc.debug?.(this.#failure);
|
|
346
|
+
} else {
|
|
347
|
+
this.#lc.error?.(this.#failure);
|
|
348
|
+
}
|
|
349
|
+
for (let i = 0; i < this.#numWorkers; i++) {
|
|
350
|
+
this.#tasks.enqueue(this.#failure);
|
|
351
|
+
}
|
|
384
352
|
}
|
|
353
|
+
}
|
|
385
354
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
let firstWorkerRun = false;
|
|
397
|
-
// Note: Neither init task should `await`, as processing in each pool can proceed
|
|
398
|
-
// as soon as the statements have been sent to the db. However, the `cleanupExport`
|
|
399
|
-
// task must `await` the result of `setSnapshot` to ensure that exporting transaction
|
|
400
|
-
// does not close before the snapshot has been captured.
|
|
401
|
-
return {
|
|
402
|
-
exportSnapshot: tx => {
|
|
403
|
-
if (!firstWorkerRun) {
|
|
404
|
-
firstWorkerRun = true;
|
|
405
|
-
const stmt = tx `SELECT pg_export_snapshot() AS snapshot; SET TRANSACTION READ ONLY;`.simple();
|
|
406
|
-
// Intercept the promise to propagate the information to `snapshotExported`.
|
|
407
|
-
stmt.then(result => exportSnapshot(result[0].snapshot), failExport);
|
|
408
|
-
return [stmt]; // Also return the stmt so that it gets awaited (and errors handled).
|
|
409
|
-
}
|
|
410
|
-
return snapshotExported.then(snapshotID => [
|
|
411
|
-
tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`),
|
|
412
|
-
tx `SET TRANSACTION READ ONLY`.simple(),
|
|
413
|
-
]);
|
|
414
|
-
},
|
|
415
|
-
setSnapshot: tx => snapshotExported.then(snapshotID => {
|
|
416
|
-
const stmt = tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`);
|
|
417
|
-
// Intercept the promise to propagate the information to `cleanupExport`.
|
|
418
|
-
stmt.then(captureSnapshot, failCapture);
|
|
419
|
-
return [stmt];
|
|
420
|
-
}),
|
|
421
|
-
cleanupExport: async () => {
|
|
422
|
-
await snapshotCaptured;
|
|
423
|
-
return [];
|
|
424
|
-
},
|
|
425
|
-
snapshotID: snapshotExported,
|
|
426
|
-
};
|
|
427
|
-
}
|
|
428
|
-
/**
|
|
429
|
-
* Returns `init` and `cleanup` {@link Task}s for a TransactionPool that ensure its workers
|
|
430
|
-
* share a single view of the database. This is used for View Notifier and View Syncer logic
|
|
431
|
-
* that allows multiple entities to perform parallel reads on the same snapshot of the database.
|
|
432
|
-
*/
|
|
433
|
-
export function sharedSnapshot() {
|
|
434
|
-
const { promise: snapshotExported, resolve: exportSnapshot, reject: failExport, } = resolver();
|
|
435
|
-
// Set by the first worker to run its initTask, who becomes responsible for
|
|
436
|
-
// exporting the snapshot.
|
|
437
|
-
let firstWorkerRun = false;
|
|
438
|
-
// Set when any worker is done, signalling that all non-sentinel Tasks have been
|
|
439
|
-
// dequeued, and thus any subsequently spawned workers should skip their initTask
|
|
440
|
-
// since the snapshot is no longer needed (and soon to become invalid).
|
|
441
|
-
let firstWorkerDone = false;
|
|
442
|
-
return {
|
|
443
|
-
init: (tx, lc) => {
|
|
444
|
-
if (!firstWorkerRun) {
|
|
445
|
-
firstWorkerRun = true;
|
|
446
|
-
const stmt = tx `SELECT pg_export_snapshot() AS snapshot;`.simple();
|
|
447
|
-
// Intercept the promise to propagate the information to `snapshotExported`.
|
|
448
|
-
stmt.then(result => exportSnapshot(result[0].snapshot), failExport);
|
|
449
|
-
return [stmt]; // Also return the stmt so that it gets awaited (and errors handled).
|
|
450
|
-
}
|
|
451
|
-
if (!firstWorkerDone) {
|
|
452
|
-
return snapshotExported.then(snapshotID => [
|
|
453
|
-
tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`),
|
|
454
|
-
]);
|
|
455
|
-
}
|
|
456
|
-
lc.debug?.('All work is done. No need to set snapshot');
|
|
457
|
-
return [];
|
|
458
|
-
},
|
|
459
|
-
cleanup: () => {
|
|
460
|
-
firstWorkerDone = true;
|
|
461
|
-
return [];
|
|
462
|
-
},
|
|
463
|
-
snapshotID: snapshotExported,
|
|
464
|
-
};
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* @returns An `init` Task for importing a snapshot from another transaction.
|
|
468
|
-
*/
|
|
469
|
-
export function importSnapshot(snapshotID) {
|
|
470
|
-
const { promise: imported, resolve, reject } = resolver();
|
|
471
|
-
return {
|
|
472
|
-
init: tx => {
|
|
473
|
-
const stmt = tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`);
|
|
474
|
-
stmt.then(() => resolve(), reject);
|
|
475
|
-
return [stmt];
|
|
476
|
-
},
|
|
477
|
-
imported,
|
|
478
|
-
};
|
|
355
|
+
function importSnapshot(snapshotID) {
|
|
356
|
+
const { promise: imported, resolve, reject } = resolver();
|
|
357
|
+
return {
|
|
358
|
+
init: (tx) => {
|
|
359
|
+
const stmt = tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`);
|
|
360
|
+
stmt.then(() => resolve(), reject);
|
|
361
|
+
return [stmt];
|
|
362
|
+
},
|
|
363
|
+
imported
|
|
364
|
+
};
|
|
479
365
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
*/
|
|
486
|
-
export class ControlFlowError extends Error {
|
|
487
|
-
constructor(cause) {
|
|
488
|
-
super();
|
|
489
|
-
this.cause = cause;
|
|
490
|
-
}
|
|
366
|
+
class ControlFlowError extends Error {
|
|
367
|
+
constructor(cause) {
|
|
368
|
+
super();
|
|
369
|
+
this.cause = cause;
|
|
370
|
+
}
|
|
491
371
|
}
|
|
492
|
-
/**
|
|
493
|
-
* Internal error used to rollback the worker transaction. This is used
|
|
494
|
-
* instead of executing a `ROLLBACK` statement because the postgres.js
|
|
495
|
-
* library will otherwise try to execute an extraneous `COMMIT`, which
|
|
496
|
-
* results in outputting a "no transaction in progress" warning to the
|
|
497
|
-
* database logs.
|
|
498
|
-
*
|
|
499
|
-
* Throwing an exception, on the other hand, executes the postgres.js
|
|
500
|
-
* codepath that calls `ROLLBACK` instead.
|
|
501
|
-
*/
|
|
502
372
|
class RollbackSignal extends ControlFlowError {
|
|
503
|
-
|
|
504
|
-
|
|
373
|
+
name = "RollbackSignal";
|
|
374
|
+
message = "rolling back transaction";
|
|
505
375
|
}
|
|
506
376
|
function ensureError(err) {
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
377
|
+
if (err instanceof Error) {
|
|
378
|
+
return err;
|
|
379
|
+
}
|
|
380
|
+
const error = new Error();
|
|
381
|
+
error.cause = err;
|
|
382
|
+
return error;
|
|
513
383
|
}
|
|
514
|
-
|
|
515
|
-
const
|
|
516
|
-
const
|
|
517
|
-
const
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
384
|
+
const IDLE_TIMEOUT_MS = 5e3;
|
|
385
|
+
const KEEPALIVE_TIMEOUT_MS = 6e4;
|
|
386
|
+
const KEEPALIVE_TASK = (tx) => [tx`SELECT 1`.simple()];
|
|
387
|
+
const TIMEOUT_TASKS = {
|
|
388
|
+
forInitialWorkers: {
|
|
389
|
+
timeoutMs: KEEPALIVE_TIMEOUT_MS,
|
|
390
|
+
task: KEEPALIVE_TASK
|
|
391
|
+
},
|
|
392
|
+
forExtraWorkers: {
|
|
393
|
+
timeoutMs: IDLE_TIMEOUT_MS,
|
|
394
|
+
task: "done"
|
|
395
|
+
}
|
|
396
|
+
};
|
|
397
|
+
export {
|
|
398
|
+
ControlFlowError,
|
|
399
|
+
TIMEOUT_TASKS,
|
|
400
|
+
TransactionPool,
|
|
401
|
+
importSnapshot
|
|
528
402
|
};
|
|
529
|
-
//# sourceMappingURL=transaction-pool.js.map
|
|
403
|
+
//# sourceMappingURL=transaction-pool.js.map
|