@rocicorp/zero 0.0.2024100800 → 0.0.202410040736
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/package.json +6 -8
- package/out/btree/b+tree.d.ts +0 -471
- package/out/btree/b+tree.d.ts.map +0 -1
- package/out/btree/b+tree.js +0 -1708
- package/out/btree/b+tree.js.map +0 -1
- package/out/btree/interfaces.d.ts +0 -270
- package/out/btree/interfaces.d.ts.map +0 -1
- package/out/btree/interfaces.js +0 -3
- package/out/btree/interfaces.js.map +0 -1
- package/out/btree/src/mod.d.ts +0 -2
- package/out/btree/src/mod.d.ts.map +0 -1
- package/out/btree/src/mod.js +0 -2
- package/out/btree/src/mod.js.map +0 -1
- package/out/chunk-2RUT5EQV.js +0 -28
- package/out/chunk-2RUT5EQV.js.map +0 -7
- package/out/datadog/src/datadog-log-sink.d.ts +0 -20
- package/out/datadog/src/datadog-log-sink.d.ts.map +0 -1
- package/out/datadog/src/datadog-log-sink.js +0 -231
- package/out/datadog/src/datadog-log-sink.js.map +0 -1
- package/out/datadog/src/mod.d.ts +0 -2
- package/out/datadog/src/mod.d.ts.map +0 -1
- package/out/datadog/src/mod.js +0 -2
- package/out/datadog/src/mod.js.map +0 -1
- package/out/react.js +0 -114
- package/out/react.js.map +0 -7
- package/out/replicache/src/async-iterable-to-array.d.ts +0 -2
- package/out/replicache/src/async-iterable-to-array.d.ts.map +0 -1
- package/out/replicache/src/bg-interval.d.ts +0 -3
- package/out/replicache/src/bg-interval.d.ts.map +0 -1
- package/out/replicache/src/binary-search.d.ts +0 -15
- package/out/replicache/src/binary-search.d.ts.map +0 -1
- package/out/replicache/src/broadcast-channel.d.ts +0 -3
- package/out/replicache/src/broadcast-channel.d.ts.map +0 -1
- package/out/replicache/src/btree/diff.d.ts +0 -4
- package/out/replicache/src/btree/diff.d.ts.map +0 -1
- package/out/replicache/src/btree/node.d.ts +0 -125
- package/out/replicache/src/btree/node.d.ts.map +0 -1
- package/out/replicache/src/btree/read.d.ts +0 -32
- package/out/replicache/src/btree/read.d.ts.map +0 -1
- package/out/replicache/src/btree/splice.d.ts +0 -9
- package/out/replicache/src/btree/splice.d.ts.map +0 -1
- package/out/replicache/src/btree/write.d.ts +0 -24
- package/out/replicache/src/btree/write.d.ts.map +0 -1
- package/out/replicache/src/call-default-fetch.d.ts +0 -6
- package/out/replicache/src/call-default-fetch.d.ts.map +0 -1
- package/out/replicache/src/config.d.ts +0 -13
- package/out/replicache/src/config.d.ts.map +0 -1
- package/out/replicache/src/connection-loop-delegates.d.ts +0 -20
- package/out/replicache/src/connection-loop-delegates.d.ts.map +0 -1
- package/out/replicache/src/connection-loop.d.ts +0 -28
- package/out/replicache/src/connection-loop.d.ts.map +0 -1
- package/out/replicache/src/cookies.d.ts +0 -29
- package/out/replicache/src/cookies.d.ts.map +0 -1
- package/out/replicache/src/dag/chunk.d.ts +0 -35
- package/out/replicache/src/dag/chunk.d.ts.map +0 -1
- package/out/replicache/src/dag/gc.d.ts +0 -42
- package/out/replicache/src/dag/gc.d.ts.map +0 -1
- package/out/replicache/src/dag/key-type-enum.d.ts +0 -10
- package/out/replicache/src/dag/key-type-enum.d.ts.map +0 -1
- package/out/replicache/src/dag/key.d.ts +0 -21
- package/out/replicache/src/dag/key.d.ts.map +0 -1
- package/out/replicache/src/dag/lazy-store.d.ts +0 -181
- package/out/replicache/src/dag/lazy-store.d.ts.map +0 -1
- package/out/replicache/src/dag/store-impl.d.ts +0 -38
- package/out/replicache/src/dag/store-impl.d.ts.map +0 -1
- package/out/replicache/src/dag/store.d.ts +0 -36
- package/out/replicache/src/dag/store.d.ts.map +0 -1
- package/out/replicache/src/dag/visitor.d.ts +0 -13
- package/out/replicache/src/dag/visitor.d.ts.map +0 -1
- package/out/replicache/src/db/commit.d.ts +0 -127
- package/out/replicache/src/db/commit.d.ts.map +0 -1
- package/out/replicache/src/db/index-operation-enum.d.ts +0 -6
- package/out/replicache/src/db/index-operation-enum.d.ts.map +0 -1
- package/out/replicache/src/db/index.d.ts +0 -30
- package/out/replicache/src/db/index.d.ts.map +0 -1
- package/out/replicache/src/db/meta-type-enum.d.ts +0 -12
- package/out/replicache/src/db/meta-type-enum.d.ts.map +0 -1
- package/out/replicache/src/db/read.d.ts +0 -24
- package/out/replicache/src/db/read.d.ts.map +0 -1
- package/out/replicache/src/db/rebase.d.ts +0 -10
- package/out/replicache/src/db/rebase.d.ts.map +0 -1
- package/out/replicache/src/db/scan.d.ts +0 -15
- package/out/replicache/src/db/scan.d.ts.map +0 -1
- package/out/replicache/src/db/write.d.ts +0 -39
- package/out/replicache/src/db/write.d.ts.map +0 -1
- package/out/replicache/src/error-responses.d.ts +0 -26
- package/out/replicache/src/error-responses.d.ts.map +0 -1
- package/out/replicache/src/filter-async-iterable.d.ts +0 -10
- package/out/replicache/src/filter-async-iterable.d.ts.map +0 -1
- package/out/replicache/src/format-version-enum.d.ts +0 -13
- package/out/replicache/src/format-version-enum.d.ts.map +0 -1
- package/out/replicache/src/format-version.d.ts +0 -3
- package/out/replicache/src/format-version.d.ts.map +0 -1
- package/out/replicache/src/frozen-json.d.ts +0 -35
- package/out/replicache/src/frozen-json.d.ts.map +0 -1
- package/out/replicache/src/get-default-puller.d.ts +0 -14
- package/out/replicache/src/get-default-puller.d.ts.map +0 -1
- package/out/replicache/src/get-default-pusher.d.ts +0 -10
- package/out/replicache/src/get-default-pusher.d.ts.map +0 -1
- package/out/replicache/src/hash.d.ts +0 -29
- package/out/replicache/src/hash.d.ts.map +0 -1
- package/out/replicache/src/http-request-info.d.ts +0 -6
- package/out/replicache/src/http-request-info.d.ts.map +0 -1
- package/out/replicache/src/impl.d.ts +0 -4
- package/out/replicache/src/impl.d.ts.map +0 -1
- package/out/replicache/src/index-defs.d.ts +0 -36
- package/out/replicache/src/index-defs.d.ts.map +0 -1
- package/out/replicache/src/invoke-kind-enum.d.ts +0 -6
- package/out/replicache/src/invoke-kind-enum.d.ts.map +0 -1
- package/out/replicache/src/iterable-union.d.ts +0 -5
- package/out/replicache/src/iterable-union.d.ts.map +0 -1
- package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts +0 -25
- package/out/replicache/src/kv/idb-store-with-mem-fallback.d.ts.map +0 -1
- package/out/replicache/src/kv/idb-store.d.ts +0 -18
- package/out/replicache/src/kv/idb-store.d.ts.map +0 -1
- package/out/replicache/src/kv/mem-store.d.ts +0 -23
- package/out/replicache/src/kv/mem-store.d.ts.map +0 -1
- package/out/replicache/src/kv/read-impl.d.ts +0 -11
- package/out/replicache/src/kv/read-impl.d.ts.map +0 -1
- package/out/replicache/src/kv/store.d.ts +0 -76
- package/out/replicache/src/kv/store.d.ts.map +0 -1
- package/out/replicache/src/kv/write-impl-base.d.ts +0 -18
- package/out/replicache/src/kv/write-impl-base.d.ts.map +0 -1
- package/out/replicache/src/kv/write-impl.d.ts +0 -9
- package/out/replicache/src/kv/write-impl.d.ts.map +0 -1
- package/out/replicache/src/lazy.d.ts +0 -2
- package/out/replicache/src/lazy.d.ts.map +0 -1
- package/out/replicache/src/log-options.d.ts +0 -10
- package/out/replicache/src/log-options.d.ts.map +0 -1
- package/out/replicache/src/merge-async-iterables.d.ts +0 -16
- package/out/replicache/src/merge-async-iterables.d.ts.map +0 -1
- package/out/replicache/src/mod.d.ts +0 -38
- package/out/replicache/src/mod.d.ts.map +0 -1
- package/out/replicache/src/mutation-recovery.d.ts +0 -43
- package/out/replicache/src/mutation-recovery.d.ts.map +0 -1
- package/out/replicache/src/new-client-channel.d.ts +0 -6
- package/out/replicache/src/new-client-channel.d.ts.map +0 -1
- package/out/replicache/src/on-persist-channel.d.ts +0 -10
- package/out/replicache/src/on-persist-channel.d.ts.map +0 -1
- package/out/replicache/src/patch-operation.d.ts +0 -32
- package/out/replicache/src/patch-operation.d.ts.map +0 -1
- package/out/replicache/src/pending-mutations.d.ts +0 -14
- package/out/replicache/src/pending-mutations.d.ts.map +0 -1
- package/out/replicache/src/persist/client-gc.d.ts +0 -17
- package/out/replicache/src/persist/client-gc.d.ts.map +0 -1
- package/out/replicache/src/persist/client-group-gc.d.ts +0 -10
- package/out/replicache/src/persist/client-group-gc.d.ts.map +0 -1
- package/out/replicache/src/persist/client-groups.d.ts +0 -72
- package/out/replicache/src/persist/client-groups.d.ts.map +0 -1
- package/out/replicache/src/persist/clients.d.ts +0 -155
- package/out/replicache/src/persist/clients.d.ts.map +0 -1
- package/out/replicache/src/persist/collect-idb-databases.d.ts +0 -91
- package/out/replicache/src/persist/collect-idb-databases.d.ts.map +0 -1
- package/out/replicache/src/persist/gather-mem-only-visitor.d.ts +0 -12
- package/out/replicache/src/persist/gather-mem-only-visitor.d.ts.map +0 -1
- package/out/replicache/src/persist/gather-not-cached-visitor.d.ts +0 -17
- package/out/replicache/src/persist/gather-not-cached-visitor.d.ts.map +0 -1
- package/out/replicache/src/persist/heartbeat.d.ts +0 -9
- package/out/replicache/src/persist/heartbeat.d.ts.map +0 -1
- package/out/replicache/src/persist/idb-databases-store-db-name.d.ts +0 -5
- package/out/replicache/src/persist/idb-databases-store-db-name.d.ts.map +0 -1
- package/out/replicache/src/persist/idb-databases-store.d.ts +0 -24
- package/out/replicache/src/persist/idb-databases-store.d.ts.map +0 -1
- package/out/replicache/src/persist/make-client-id.d.ts +0 -6
- package/out/replicache/src/persist/make-client-id.d.ts.map +0 -1
- package/out/replicache/src/persist/persist.d.ts +0 -26
- package/out/replicache/src/persist/persist.d.ts.map +0 -1
- package/out/replicache/src/persist/refresh.d.ts +0 -13
- package/out/replicache/src/persist/refresh.d.ts.map +0 -1
- package/out/replicache/src/process-scheduler.d.ts +0 -20
- package/out/replicache/src/process-scheduler.d.ts.map +0 -1
- package/out/replicache/src/puller.d.ts +0 -61
- package/out/replicache/src/puller.d.ts.map +0 -1
- package/out/replicache/src/pusher.d.ts +0 -33
- package/out/replicache/src/pusher.d.ts.map +0 -1
- package/out/replicache/src/replicache-impl.d.ts +0 -321
- package/out/replicache/src/replicache-impl.d.ts.map +0 -1
- package/out/replicache/src/replicache-options.d.ts +0 -209
- package/out/replicache/src/replicache-options.d.ts.map +0 -1
- package/out/replicache/src/replicache.d.ts +0 -298
- package/out/replicache/src/replicache.d.ts.map +0 -1
- package/out/replicache/src/request-idle.d.ts +0 -6
- package/out/replicache/src/request-idle.d.ts.map +0 -1
- package/out/replicache/src/scan-iterator.d.ts +0 -127
- package/out/replicache/src/scan-iterator.d.ts.map +0 -1
- package/out/replicache/src/scan-options.d.ts +0 -67
- package/out/replicache/src/scan-options.d.ts.map +0 -1
- package/out/replicache/src/set-interval-with-signal.d.ts +0 -2
- package/out/replicache/src/set-interval-with-signal.d.ts.map +0 -1
- package/out/replicache/src/size-of-value.d.ts +0 -19
- package/out/replicache/src/size-of-value.d.ts.map +0 -1
- package/out/replicache/src/subscriptions.d.ts +0 -137
- package/out/replicache/src/subscriptions.d.ts.map +0 -1
- package/out/replicache/src/sync/diff.d.ts +0 -31
- package/out/replicache/src/sync/diff.d.ts.map +0 -1
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.d.ts +0 -8
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.d.ts.map +0 -1
- package/out/replicache/src/sync/ids.d.ts +0 -13
- package/out/replicache/src/sync/ids.d.ts.map +0 -1
- package/out/replicache/src/sync/patch.d.ts +0 -5
- package/out/replicache/src/sync/patch.d.ts.map +0 -1
- package/out/replicache/src/sync/pull-error.d.ts +0 -9
- package/out/replicache/src/sync/pull-error.d.ts.map +0 -1
- package/out/replicache/src/sync/pull.d.ts +0 -78
- package/out/replicache/src/sync/pull.d.ts.map +0 -1
- package/out/replicache/src/sync/push.d.ts +0 -65
- package/out/replicache/src/sync/push.d.ts.map +0 -1
- package/out/replicache/src/sync/request-id.d.ts +0 -10
- package/out/replicache/src/sync/request-id.d.ts.map +0 -1
- package/out/replicache/src/sync/sync-head-name.d.ts +0 -2
- package/out/replicache/src/sync/sync-head-name.d.ts.map +0 -1
- package/out/replicache/src/test-license-key.d.ts +0 -3
- package/out/replicache/src/test-license-key.d.ts.map +0 -1
- package/out/replicache/src/to-error.d.ts +0 -2
- package/out/replicache/src/to-error.d.ts.map +0 -1
- package/out/replicache/src/transaction-closed-error.d.ts +0 -12
- package/out/replicache/src/transaction-closed-error.d.ts.map +0 -1
- package/out/replicache/src/transactions.d.ts +0 -156
- package/out/replicache/src/transactions.d.ts.map +0 -1
- package/out/replicache/src/types.d.ts +0 -57
- package/out/replicache/src/types.d.ts.map +0 -1
- package/out/replicache/src/version.d.ts +0 -5
- package/out/replicache/src/version.d.ts.map +0 -1
- package/out/replicache/src/with-transactions.d.ts +0 -23
- package/out/replicache/src/with-transactions.d.ts.map +0 -1
- package/out/shared/src/abort-error.d.ts +0 -4
- package/out/shared/src/abort-error.d.ts.map +0 -1
- package/out/shared/src/abort-error.js +0 -4
- package/out/shared/src/abort-error.js.map +0 -1
- package/out/shared/src/asserts.d.ts +0 -17
- package/out/shared/src/asserts.d.ts.map +0 -1
- package/out/shared/src/asserts.js +0 -73
- package/out/shared/src/asserts.js.map +0 -1
- package/out/shared/src/browser-env.d.ts +0 -3
- package/out/shared/src/browser-env.d.ts.map +0 -1
- package/out/shared/src/config.d.ts +0 -3
- package/out/shared/src/config.d.ts.map +0 -1
- package/out/shared/src/config.js +0 -3
- package/out/shared/src/config.js.map +0 -1
- package/out/shared/src/custom-key-map.d.ts +0 -26
- package/out/shared/src/custom-key-map.d.ts.map +0 -1
- package/out/shared/src/custom-key-map.js +0 -65
- package/out/shared/src/custom-key-map.js.map +0 -1
- package/out/shared/src/deep-clone.d.ts +0 -4
- package/out/shared/src/deep-clone.d.ts.map +0 -1
- package/out/shared/src/document-visible.d.ts +0 -9
- package/out/shared/src/document-visible.d.ts.map +0 -1
- package/out/shared/src/has-own.d.ts +0 -5
- package/out/shared/src/has-own.d.ts.map +0 -1
- package/out/shared/src/has-own.js +0 -8
- package/out/shared/src/has-own.js.map +0 -1
- package/out/shared/src/immutable.d.ts +0 -11
- package/out/shared/src/immutable.d.ts.map +0 -1
- package/out/shared/src/iterables.d.ts +0 -11
- package/out/shared/src/iterables.d.ts.map +0 -1
- package/out/shared/src/json-schema.d.ts +0 -5
- package/out/shared/src/json-schema.d.ts.map +0 -1
- package/out/shared/src/json-schema.js +0 -36
- package/out/shared/src/json-schema.js.map +0 -1
- package/out/shared/src/json.d.ts +0 -55
- package/out/shared/src/json.d.ts.map +0 -1
- package/out/shared/src/json.js +0 -164
- package/out/shared/src/json.js.map +0 -1
- package/out/shared/src/must.d.ts +0 -2
- package/out/shared/src/must.d.ts.map +0 -1
- package/out/shared/src/must.js +0 -8
- package/out/shared/src/must.js.map +0 -1
- package/out/shared/src/navigator.d.ts +0 -7
- package/out/shared/src/navigator.d.ts.map +0 -1
- package/out/shared/src/parse-big-int.d.ts +0 -2
- package/out/shared/src/parse-big-int.d.ts.map +0 -1
- package/out/shared/src/parse-big-int.js +0 -11
- package/out/shared/src/parse-big-int.js.map +0 -1
- package/out/shared/src/queue.d.ts +0 -40
- package/out/shared/src/queue.d.ts.map +0 -1
- package/out/shared/src/queue.js +0 -118
- package/out/shared/src/queue.js.map +0 -1
- package/out/shared/src/rand.d.ts +0 -7
- package/out/shared/src/rand.d.ts.map +0 -1
- package/out/shared/src/rand.js +0 -11
- package/out/shared/src/rand.js.map +0 -1
- package/out/shared/src/random-uint64.d.ts +0 -2
- package/out/shared/src/random-uint64.d.ts.map +0 -1
- package/out/shared/src/random-values.d.ts +0 -2
- package/out/shared/src/random-values.d.ts.map +0 -1
- package/out/shared/src/resolved-promises.d.ts +0 -5
- package/out/shared/src/resolved-promises.d.ts.map +0 -1
- package/out/shared/src/resolved-promises.js +0 -5
- package/out/shared/src/resolved-promises.js.map +0 -1
- package/out/shared/src/set-utils.d.ts +0 -9
- package/out/shared/src/set-utils.d.ts.map +0 -1
- package/out/shared/src/set-utils.js +0 -60
- package/out/shared/src/set-utils.js.map +0 -1
- package/out/shared/src/sleep.d.ts +0 -15
- package/out/shared/src/sleep.d.ts.map +0 -1
- package/out/shared/src/sleep.js +0 -54
- package/out/shared/src/sleep.js.map +0 -1
- package/out/shared/src/string-compare.d.ts +0 -2
- package/out/shared/src/string-compare.d.ts.map +0 -1
- package/out/shared/src/string-compare.js +0 -10
- package/out/shared/src/string-compare.js.map +0 -1
- package/out/shared/src/types.d.ts +0 -2
- package/out/shared/src/types.d.ts.map +0 -1
- package/out/shared/src/valita.d.ts +0 -27
- package/out/shared/src/valita.d.ts.map +0 -1
- package/out/shared/src/valita.js +0 -118
- package/out/shared/src/valita.js.map +0 -1
- package/out/shared/src/xxhash.d.ts +0 -3
- package/out/shared/src/xxhash.d.ts.map +0 -1
- package/out/shared/src/xxhash.js +0 -4
- package/out/shared/src/xxhash.js.map +0 -1
- package/out/zero/src/cli.d.ts +0 -3
- package/out/zero/src/cli.d.ts.map +0 -1
- package/out/zero/src/cli.js +0 -3
- package/out/zero/src/cli.js.map +0 -1
- package/out/zero/src/react.d.ts +0 -2
- package/out/zero/src/react.d.ts.map +0 -1
- package/out/zero/src/server/change-streamer.d.ts +0 -2
- package/out/zero/src/server/change-streamer.d.ts.map +0 -1
- 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.d.ts +0 -2
- package/out/zero/src/server/main.d.ts.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/replicator.d.ts +0 -2
- package/out/zero/src/server/replicator.d.ts.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/syncer.d.ts +0 -2
- package/out/zero/src/server/syncer.d.ts.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/src/zero.d.ts +0 -2
- package/out/zero/src/zero.d.ts.map +0 -1
- package/out/zero-cache/src/config/zero-config.d.ts +0 -1509
- package/out/zero-cache/src/config/zero-config.d.ts.map +0 -1
- package/out/zero-cache/src/config/zero-config.js +0 -237
- package/out/zero-cache/src/config/zero-config.js.map +0 -1
- package/out/zero-cache/src/db/lite-tables.d.ts +0 -5
- package/out/zero-cache/src/db/lite-tables.d.ts.map +0 -1
- package/out/zero-cache/src/db/lite-tables.js +0 -75
- package/out/zero-cache/src/db/lite-tables.js.map +0 -1
- package/out/zero-cache/src/db/migration-lite.d.ts +0 -38
- package/out/zero-cache/src/db/migration-lite.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration-lite.js +0 -161
- package/out/zero-cache/src/db/migration-lite.js.map +0 -1
- package/out/zero-cache/src/db/migration.d.ts +0 -38
- package/out/zero-cache/src/db/migration.d.ts.map +0 -1
- package/out/zero-cache/src/db/migration.js +0 -139
- package/out/zero-cache/src/db/migration.js.map +0 -1
- package/out/zero-cache/src/db/statements.d.ts +0 -32
- package/out/zero-cache/src/db/statements.d.ts.map +0 -1
- package/out/zero-cache/src/db/statements.js +0 -51
- package/out/zero-cache/src/db/statements.js.map +0 -1
- package/out/zero-cache/src/db/transaction-pool.d.ts +0 -187
- package/out/zero-cache/src/db/transaction-pool.d.ts.map +0 -1
- package/out/zero-cache/src/db/transaction-pool.js +0 -445
- package/out/zero-cache/src/db/transaction-pool.js.map +0 -1
- package/out/zero-cache/src/server/change-streamer.d.ts +0 -3
- package/out/zero-cache/src/server/change-streamer.d.ts.map +0 -1
- package/out/zero-cache/src/server/change-streamer.js +0 -30
- package/out/zero-cache/src/server/change-streamer.js.map +0 -1
- package/out/zero-cache/src/server/life-cycle.d.ts +0 -38
- package/out/zero-cache/src/server/life-cycle.d.ts.map +0 -1
- package/out/zero-cache/src/server/life-cycle.js +0 -110
- package/out/zero-cache/src/server/life-cycle.js.map +0 -1
- package/out/zero-cache/src/server/logging.d.ts +0 -6
- package/out/zero-cache/src/server/logging.d.ts.map +0 -1
- package/out/zero-cache/src/server/logging.js +0 -23
- package/out/zero-cache/src/server/logging.js.map +0 -1
- package/out/zero-cache/src/server/main.d.ts +0 -2
- package/out/zero-cache/src/server/main.d.ts.map +0 -1
- package/out/zero-cache/src/server/main.js +0 -94
- package/out/zero-cache/src/server/main.js.map +0 -1
- package/out/zero-cache/src/server/replicator.d.ts +0 -3
- package/out/zero-cache/src/server/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/server/replicator.js +0 -36
- package/out/zero-cache/src/server/replicator.js.map +0 -1
- package/out/zero-cache/src/server/syncer.d.ts +0 -3
- package/out/zero-cache/src/server/syncer.d.ts.map +0 -1
- package/out/zero-cache/src/server/syncer.js +0 -46
- package/out/zero-cache/src/server/syncer.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts +0 -23
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +0 -98
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts +0 -39
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +0 -212
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +0 -110
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +0 -7
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts +0 -19
- package/out/zero-cache/src/services/change-streamer/forwarder.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.js +0 -56
- package/out/zero-cache/src/services/change-streamer/forwarder.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts +0 -14
- package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/change-source.js +0 -211
- package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts +0 -6
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +0 -192
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts +0 -17
- package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.js +0 -17
- package/out/zero-cache/src/services/change-streamer/pg/lsn.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +0 -6
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +0 -29
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +0 -79
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js +0 -237
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +0 -5
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js +0 -111
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +0 -26
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.js +0 -185
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +0 -11
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js +0 -86
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/shard-config.d.ts +0 -19
- package/out/zero-cache/src/services/change-streamer/pg/shard-config.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/shard-config.js +0 -2
- package/out/zero-cache/src/services/change-streamer/pg/shard-config.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts +0 -4
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +0 -12
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +0 -31
- package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/change.js +0 -2
- package/out/zero-cache/src/services/change-streamer/schema/change.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.d.ts +0 -4
- package/out/zero-cache/src/services/change-streamer/schema/init.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js +0 -10
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +0 -22
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.js +0 -49
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +0 -22
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +0 -157
- package/out/zero-cache/src/services/change-streamer/storer.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +0 -27
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts.map +0 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +0 -70
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +0 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +0 -21
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +0 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js +0 -38
- package/out/zero-cache/src/services/dispatcher/connect-params.js.map +0 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +0 -19
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts.map +0 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.js +0 -54
- package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +0 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts +0 -11
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.d.ts.map +0 -1
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.js +0 -33
- package/out/zero-cache/src/services/dispatcher/websocket-handoff.js.map +0 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts +0 -57
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +0 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +0 -137
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +0 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +0 -28
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +0 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +0 -256
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +0 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts +0 -20
- package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +0 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.js +0 -187
- package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +0 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +0 -40
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +0 -348
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +0 -1
- package/out/zero-cache/src/services/replicator/notifier.d.ts +0 -30
- package/out/zero-cache/src/services/replicator/notifier.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/notifier.js +0 -54
- package/out/zero-cache/src/services/replicator/notifier.js.map +0 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +0 -56
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/replicator.js +0 -27
- package/out/zero-cache/src/services/replicator/replicator.js.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +0 -35
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js +0 -78
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +0 -25
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js +0 -90
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +0 -1
- package/out/zero-cache/src/services/runner.d.ts +0 -18
- package/out/zero-cache/src/services/runner.d.ts.map +0 -1
- package/out/zero-cache/src/services/runner.js +0 -45
- package/out/zero-cache/src/services/runner.js.map +0 -1
- package/out/zero-cache/src/services/running-state.d.ts +0 -56
- package/out/zero-cache/src/services/running-state.d.ts.map +0 -1
- package/out/zero-cache/src/services/running-state.js +0 -106
- package/out/zero-cache/src/services/running-state.js.map +0 -1
- package/out/zero-cache/src/services/service.d.ts +0 -37
- package/out/zero-cache/src/services/service.d.ts.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/client-handler.d.ts +0 -54
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +0 -195
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts +0 -44
- package/out/zero-cache/src/services/view-syncer/cvr-store.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +0 -386
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts +0 -146
- package/out/zero-cache/src/services/view-syncer/cvr.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +0 -446
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/database-storage.d.ts +0 -22
- package/out/zero-cache/src/services/view-syncer/database-storage.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/database-storage.js +0 -129
- package/out/zero-cache/src/services/view-syncer/database-storage.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +0 -108
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +0 -300
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts +0 -54
- package/out/zero-cache/src/services/view-syncer/schema/cvr.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +0 -181
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts +0 -4
- package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js +0 -12
- package/out/zero-cache/src/services/view-syncer/schema/pg-migrations.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts +0 -783
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +0 -213
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts +0 -177
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +0 -363
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +0 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +0 -40
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts.map +0 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +0 -506
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +0 -1
- package/out/zero-cache/src/types/bigint-json.d.ts +0 -26
- package/out/zero-cache/src/types/bigint-json.d.ts.map +0 -1
- package/out/zero-cache/src/types/bigint-json.js +0 -49
- package/out/zero-cache/src/types/bigint-json.js.map +0 -1
- package/out/zero-cache/src/types/error-for-client.d.ts +0 -7
- package/out/zero-cache/src/types/error-for-client.d.ts.map +0 -1
- package/out/zero-cache/src/types/error-for-client.js +0 -17
- package/out/zero-cache/src/types/error-for-client.js.map +0 -1
- package/out/zero-cache/src/types/lexi-version.d.ts +0 -29
- package/out/zero-cache/src/types/lexi-version.d.ts.map +0 -1
- package/out/zero-cache/src/types/lexi-version.js +0 -36
- package/out/zero-cache/src/types/lexi-version.js.map +0 -1
- package/out/zero-cache/src/types/lite.d.ts +0 -11
- package/out/zero-cache/src/types/lite.d.ts.map +0 -1
- package/out/zero-cache/src/types/lite.js +0 -26
- package/out/zero-cache/src/types/lite.js.map +0 -1
- package/out/zero-cache/src/types/names.d.ts +0 -5
- package/out/zero-cache/src/types/names.d.ts.map +0 -1
- package/out/zero-cache/src/types/names.js +0 -4
- package/out/zero-cache/src/types/names.js.map +0 -1
- package/out/zero-cache/src/types/pg.d.ts +0 -31
- package/out/zero-cache/src/types/pg.d.ts.map +0 -1
- package/out/zero-cache/src/types/pg.js +0 -60
- package/out/zero-cache/src/types/pg.js.map +0 -1
- package/out/zero-cache/src/types/processes.d.ts +0 -57
- package/out/zero-cache/src/types/processes.d.ts.map +0 -1
- package/out/zero-cache/src/types/processes.js +0 -115
- package/out/zero-cache/src/types/processes.js.map +0 -1
- package/out/zero-cache/src/types/row-key.d.ts +0 -37
- package/out/zero-cache/src/types/row-key.d.ts.map +0 -1
- package/out/zero-cache/src/types/row-key.js +0 -64
- package/out/zero-cache/src/types/row-key.js.map +0 -1
- package/out/zero-cache/src/types/satisfies.d.ts +0 -14
- package/out/zero-cache/src/types/satisfies.d.ts.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-cache/src/types/schema-versions.d.ts +0 -8
- package/out/zero-cache/src/types/schema-versions.d.ts.map +0 -1
- package/out/zero-cache/src/types/schema-versions.js +0 -21
- package/out/zero-cache/src/types/schema-versions.js.map +0 -1
- package/out/zero-cache/src/types/specs.d.ts +0 -29
- package/out/zero-cache/src/types/specs.d.ts.map +0 -1
- package/out/zero-cache/src/types/specs.js +0 -2
- package/out/zero-cache/src/types/specs.js.map +0 -1
- package/out/zero-cache/src/types/sql.d.ts +0 -11
- package/out/zero-cache/src/types/sql.d.ts.map +0 -1
- package/out/zero-cache/src/types/sql.js +0 -15
- package/out/zero-cache/src/types/sql.js.map +0 -1
- package/out/zero-cache/src/types/streams.d.ts +0 -33
- package/out/zero-cache/src/types/streams.d.ts.map +0 -1
- package/out/zero-cache/src/types/streams.js +0 -141
- package/out/zero-cache/src/types/streams.js.map +0 -1
- package/out/zero-cache/src/types/subscription.d.ts +0 -158
- package/out/zero-cache/src/types/subscription.d.ts.map +0 -1
- package/out/zero-cache/src/types/subscription.js +0 -233
- package/out/zero-cache/src/types/subscription.js.map +0 -1
- package/out/zero-cache/src/types/timeout.d.ts +0 -11
- package/out/zero-cache/src/types/timeout.d.ts.map +0 -1
- package/out/zero-cache/src/types/timeout.js +0 -23
- package/out/zero-cache/src/types/timeout.js.map +0 -1
- package/out/zero-cache/src/types/url-params.d.ts +0 -10
- package/out/zero-cache/src/types/url-params.d.ts.map +0 -1
- package/out/zero-cache/src/types/url-params.js +0 -35
- package/out/zero-cache/src/types/url-params.js.map +0 -1
- package/out/zero-cache/src/workers/connection.d.ts +0 -25
- package/out/zero-cache/src/workers/connection.d.ts.map +0 -1
- package/out/zero-cache/src/workers/connection.js +0 -189
- package/out/zero-cache/src/workers/connection.js.map +0 -1
- package/out/zero-cache/src/workers/replicator.d.ts +0 -17
- package/out/zero-cache/src/workers/replicator.d.ts.map +0 -1
- package/out/zero-cache/src/workers/replicator.js +0 -77
- package/out/zero-cache/src/workers/replicator.js.map +0 -1
- package/out/zero-cache/src/workers/syncer.d.ts +0 -36
- package/out/zero-cache/src/workers/syncer.d.ts.map +0 -1
- package/out/zero-cache/src/workers/syncer.js +0 -104
- package/out/zero-cache/src/workers/syncer.js.map +0 -1
- package/out/zero-client/src/client/context.d.ts +0 -23
- package/out/zero-client/src/client/context.d.ts.map +0 -1
- package/out/zero-client/src/client/crud.d.ts +0 -52
- package/out/zero-client/src/client/crud.d.ts.map +0 -1
- package/out/zero-client/src/client/enable-analytics.d.ts +0 -3
- package/out/zero-client/src/client/enable-analytics.d.ts.map +0 -1
- package/out/zero-client/src/client/http-string.d.ts +0 -7
- package/out/zero-client/src/client/http-string.d.ts.map +0 -1
- package/out/zero-client/src/client/keys.d.ts +0 -11
- package/out/zero-client/src/client/keys.d.ts.map +0 -1
- package/out/zero-client/src/client/log-options.d.ts +0 -12
- package/out/zero-client/src/client/log-options.d.ts.map +0 -1
- package/out/zero-client/src/client/metrics.d.ts +0 -115
- package/out/zero-client/src/client/metrics.d.ts.map +0 -1
- package/out/zero-client/src/client/options.d.ts +0 -94
- package/out/zero-client/src/client/options.d.ts.map +0 -1
- package/out/zero-client/src/client/query-manager.d.ts +0 -18
- package/out/zero-client/src/client/query-manager.d.ts.map +0 -1
- package/out/zero-client/src/client/reload-error-handler.d.ts +0 -5
- package/out/zero-client/src/client/reload-error-handler.d.ts.map +0 -1
- package/out/zero-client/src/client/replicache-types.d.ts +0 -48
- package/out/zero-client/src/client/replicache-types.d.ts.map +0 -1
- package/out/zero-client/src/client/server-error.d.ts +0 -12
- package/out/zero-client/src/client/server-error.d.ts.map +0 -1
- package/out/zero-client/src/client/server-option.d.ts +0 -3
- package/out/zero-client/src/client/server-option.d.ts.map +0 -1
- package/out/zero-client/src/client/version.d.ts +0 -5
- package/out/zero-client/src/client/version.d.ts.map +0 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +0 -28
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +0 -1
- package/out/zero-client/src/client/zero.d.ts +0 -182
- package/out/zero-client/src/client/zero.d.ts.map +0 -1
- package/out/zero-client/src/mod.d.ts +0 -9
- package/out/zero-client/src/mod.d.ts.map +0 -1
- package/out/zero-client/src/util/nanoid.d.ts +0 -2
- package/out/zero-client/src/util/nanoid.d.ts.map +0 -1
- package/out/zero-client/src/util/socket.d.ts +0 -3
- package/out/zero-client/src/util/socket.d.ts.map +0 -1
- package/out/zero-protocol/src/ast.d.ts +0 -69
- package/out/zero-protocol/src/ast.d.ts.map +0 -1
- package/out/zero-protocol/src/ast.js +0 -64
- package/out/zero-protocol/src/ast.js.map +0 -1
- package/out/zero-protocol/src/change-desired-queries.d.ts +0 -71
- package/out/zero-protocol/src/change-desired-queries.d.ts.map +0 -1
- package/out/zero-protocol/src/change-desired-queries.js +0 -10
- package/out/zero-protocol/src/change-desired-queries.js.map +0 -1
- package/out/zero-protocol/src/clients-patch.d.ts +0 -37
- package/out/zero-protocol/src/clients-patch.d.ts.map +0 -1
- package/out/zero-protocol/src/clients-patch.js +0 -15
- package/out/zero-protocol/src/clients-patch.js.map +0 -1
- package/out/zero-protocol/src/connect.d.ts +0 -88
- package/out/zero-protocol/src/connect.d.ts.map +0 -1
- package/out/zero-protocol/src/connect.js +0 -25
- package/out/zero-protocol/src/connect.js.map +0 -1
- package/out/zero-protocol/src/delete-clients.d.ts +0 -11
- package/out/zero-protocol/src/delete-clients.d.ts.map +0 -1
- package/out/zero-protocol/src/delete-clients.js +0 -9
- package/out/zero-protocol/src/delete-clients.js.map +0 -1
- package/out/zero-protocol/src/down.d.ts +0 -114
- package/out/zero-protocol/src/down.d.ts.map +0 -1
- package/out/zero-protocol/src/down.js +0 -8
- package/out/zero-protocol/src/down.js.map +0 -1
- package/out/zero-protocol/src/entities-patch.d.ts +0 -66
- package/out/zero-protocol/src/entities-patch.d.ts.map +0 -1
- package/out/zero-protocol/src/entities-patch.js +0 -27
- package/out/zero-protocol/src/entities-patch.js.map +0 -1
- package/out/zero-protocol/src/entity.d.ts +0 -9
- package/out/zero-protocol/src/entity.d.ts.map +0 -1
- package/out/zero-protocol/src/entity.js +0 -8
- package/out/zero-protocol/src/entity.js.map +0 -1
- package/out/zero-protocol/src/error.d.ts +0 -21
- package/out/zero-protocol/src/error.d.ts.map +0 -1
- package/out/zero-protocol/src/error.js +0 -28
- package/out/zero-protocol/src/error.js.map +0 -1
- package/out/zero-protocol/src/mod.d.ts +0 -16
- package/out/zero-protocol/src/mod.d.ts.map +0 -1
- package/out/zero-protocol/src/mod.js +0 -16
- package/out/zero-protocol/src/mod.js.map +0 -1
- package/out/zero-protocol/src/ping.d.ts +0 -6
- package/out/zero-protocol/src/ping.d.ts.map +0 -1
- package/out/zero-protocol/src/ping.js +0 -4
- package/out/zero-protocol/src/ping.js.map +0 -1
- package/out/zero-protocol/src/poke.d.ts +0 -244
- package/out/zero-protocol/src/poke.d.ts.map +0 -1
- package/out/zero-protocol/src/poke.js +0 -73
- package/out/zero-protocol/src/poke.js.map +0 -1
- package/out/zero-protocol/src/pong.d.ts +0 -6
- package/out/zero-protocol/src/pong.d.ts.map +0 -1
- package/out/zero-protocol/src/pong.js +0 -4
- package/out/zero-protocol/src/pong.js.map +0 -1
- package/out/zero-protocol/src/pull.d.ts +0 -26
- package/out/zero-protocol/src/pull.d.ts.map +0 -1
- package/out/zero-protocol/src/pull.js +0 -24
- package/out/zero-protocol/src/pull.js.map +0 -1
- package/out/zero-protocol/src/push.d.ts +0 -257
- package/out/zero-protocol/src/push.d.ts.map +0 -1
- package/out/zero-protocol/src/push.js +0 -77
- package/out/zero-protocol/src/push.js.map +0 -1
- package/out/zero-protocol/src/queries-patch.d.ts +0 -103
- package/out/zero-protocol/src/queries-patch.d.ts.map +0 -1
- package/out/zero-protocol/src/queries-patch.js +0 -17
- package/out/zero-protocol/src/queries-patch.js.map +0 -1
- package/out/zero-protocol/src/up.d.ts +0 -116
- package/out/zero-protocol/src/up.d.ts.map +0 -1
- package/out/zero-protocol/src/up.js +0 -9
- package/out/zero-protocol/src/up.js.map +0 -1
- package/out/zero-protocol/src/version.d.ts +0 -6
- package/out/zero-protocol/src/version.d.ts.map +0 -1
- package/out/zero-protocol/src/version.js +0 -4
- package/out/zero-protocol/src/version.js.map +0 -1
- package/out/zero-react/src/mod.d.ts +0 -3
- package/out/zero-react/src/mod.d.ts.map +0 -1
- package/out/zero-react/src/use-query.d.ts +0 -3
- package/out/zero-react/src/use-query.d.ts.map +0 -1
- package/out/zero-react/src/use-zero.d.ts +0 -8
- package/out/zero-react/src/use-zero.d.ts.map +0 -1
- package/out/zero.js +0 -15868
- package/out/zero.js.map +0 -7
- package/out/zql/src/zql/ast/ast.d.ts +0 -84
- package/out/zql/src/zql/ast/ast.d.ts.map +0 -1
- package/out/zql/src/zql/ast/ast.js +0 -54
- package/out/zql/src/zql/ast/ast.js.map +0 -1
- package/out/zql/src/zql/builder/builder.d.ts +0 -56
- package/out/zql/src/zql/builder/builder.d.ts.map +0 -1
- package/out/zql/src/zql/builder/builder.js +0 -115
- package/out/zql/src/zql/builder/builder.js.map +0 -1
- package/out/zql/src/zql/builder/error.d.ts +0 -3
- package/out/zql/src/zql/builder/error.d.ts.map +0 -1
- package/out/zql/src/zql/builder/error.js +0 -3
- package/out/zql/src/zql/builder/error.js.map +0 -1
- package/out/zql/src/zql/builder/filter.d.ts +0 -6
- package/out/zql/src/zql/builder/filter.d.ts.map +0 -1
- package/out/zql/src/zql/builder/filter.js +0 -53
- package/out/zql/src/zql/builder/filter.js.map +0 -1
- package/out/zql/src/zql/builder/like.d.ts +0 -3
- package/out/zql/src/zql/builder/like.d.ts.map +0 -1
- package/out/zql/src/zql/builder/like.js +0 -60
- package/out/zql/src/zql/builder/like.js.map +0 -1
- package/out/zql/src/zql/ivm/array-view.d.ts +0 -42
- package/out/zql/src/zql/ivm/array-view.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/change.d.ts +0 -44
- package/out/zql/src/zql/ivm/change.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/change.js +0 -2
- package/out/zql/src/zql/ivm/change.js.map +0 -1
- package/out/zql/src/zql/ivm/data.d.ts +0 -72
- package/out/zql/src/zql/ivm/data.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/data.js +0 -84
- package/out/zql/src/zql/ivm/data.js.map +0 -1
- package/out/zql/src/zql/ivm/filter.d.ts +0 -27
- package/out/zql/src/zql/ivm/filter.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/filter.js +0 -60
- package/out/zql/src/zql/ivm/filter.js.map +0 -1
- package/out/zql/src/zql/ivm/join.d.ts +0 -37
- package/out/zql/src/zql/ivm/join.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/join.js +0 -228
- package/out/zql/src/zql/ivm/join.js.map +0 -1
- package/out/zql/src/zql/ivm/lookahead-iterator.d.ts +0 -13
- package/out/zql/src/zql/ivm/lookahead-iterator.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/lookahead-iterator.js +0 -45
- package/out/zql/src/zql/ivm/lookahead-iterator.js.map +0 -1
- package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts +0 -10
- package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.js +0 -34
- package/out/zql/src/zql/ivm/maybe-split-and-push-edit-change.js.map +0 -1
- package/out/zql/src/zql/ivm/memory-source.d.ts +0 -65
- package/out/zql/src/zql/ivm/memory-source.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/memory-source.js +0 -508
- package/out/zql/src/zql/ivm/memory-source.js.map +0 -1
- package/out/zql/src/zql/ivm/memory-storage.d.ts +0 -18
- package/out/zql/src/zql/ivm/memory-storage.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/operator.d.ts +0 -89
- package/out/zql/src/zql/ivm/operator.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/operator.js +0 -2
- package/out/zql/src/zql/ivm/operator.js.map +0 -1
- package/out/zql/src/zql/ivm/schema.d.ts +0 -29
- package/out/zql/src/zql/ivm/schema.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/schema.js +0 -3
- package/out/zql/src/zql/ivm/schema.js.map +0 -1
- package/out/zql/src/zql/ivm/skip.d.ts +0 -24
- package/out/zql/src/zql/ivm/skip.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/skip.js +0 -113
- package/out/zql/src/zql/ivm/skip.js.map +0 -1
- package/out/zql/src/zql/ivm/source.d.ts +0 -57
- package/out/zql/src/zql/ivm/source.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/source.js +0 -2
- package/out/zql/src/zql/ivm/source.js.map +0 -1
- package/out/zql/src/zql/ivm/stream.d.ts +0 -11
- package/out/zql/src/zql/ivm/stream.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/stream.js +0 -19
- package/out/zql/src/zql/ivm/stream.js.map +0 -1
- package/out/zql/src/zql/ivm/take.d.ts +0 -24
- package/out/zql/src/zql/ivm/take.d.ts.map +0 -1
- package/out/zql/src/zql/ivm/take.js +0 -453
- package/out/zql/src/zql/ivm/take.js.map +0 -1
- package/out/zql/src/zql/query/query-impl.d.ts +0 -48
- package/out/zql/src/zql/query/query-impl.d.ts.map +0 -1
- package/out/zql/src/zql/query/query.d.ts +0 -131
- package/out/zql/src/zql/query/query.d.ts.map +0 -1
- package/out/zql/src/zql/query/schema.d.ts +0 -53
- package/out/zql/src/zql/query/schema.d.ts.map +0 -1
- package/out/zql/src/zql/query/typed-view.d.ts +0 -10
- package/out/zql/src/zql/query/typed-view.d.ts.map +0 -1
- package/out/zqlite/src/db.d.ts +0 -23
- package/out/zqlite/src/db.d.ts.map +0 -1
- package/out/zqlite/src/db.js +0 -117
- package/out/zqlite/src/db.js.map +0 -1
- package/out/zqlite/src/internal/sql.d.ts +0 -9
- package/out/zqlite/src/internal/sql.d.ts.map +0 -1
- package/out/zqlite/src/internal/sql.js +0 -14
- package/out/zqlite/src/internal/sql.js.map +0 -1
- package/out/zqlite/src/internal/statement-cache.d.ts +0 -67
- package/out/zqlite/src/internal/statement-cache.d.ts.map +0 -1
- package/out/zqlite/src/internal/statement-cache.js +0 -119
- package/out/zqlite/src/internal/statement-cache.js.map +0 -1
- package/out/zqlite/src/table-source.d.ts +0 -43
- package/out/zqlite/src/table-source.d.ts.map +0 -1
- package/out/zqlite/src/table-source.js +0 -393
- package/out/zqlite/src/table-source.js.map +0 -1
|
@@ -1,445 +0,0 @@
|
|
|
1
|
-
import { resolver } from '@rocicorp/resolver';
|
|
2
|
-
import { assert } from '../../../shared/src/asserts.js';
|
|
3
|
-
import { Queue } from '../../../shared/src/queue.js';
|
|
4
|
-
export var Mode;
|
|
5
|
-
(function (Mode) {
|
|
6
|
-
Mode["SERIALIZABLE"] = "ISOLATION LEVEL SERIALIZABLE";
|
|
7
|
-
Mode["READONLY"] = "ISOLATION LEVEL REPEATABLE READ READ ONLY";
|
|
8
|
-
})(Mode || (Mode = {}));
|
|
9
|
-
/**
|
|
10
|
-
* A TransactionPool is a pool of one or more {@link postgres.TransactionSql}
|
|
11
|
-
* objects that participate in processing a dynamic queue of tasks.
|
|
12
|
-
*
|
|
13
|
-
* This can be used for serializing a set of tasks that arrive asynchronously
|
|
14
|
-
* to a single transaction (for writing) or performing parallel reads across
|
|
15
|
-
* multiple connections at the same snapshot (e.g. read only snapshot transactions).
|
|
16
|
-
*/
|
|
17
|
-
export class TransactionPool {
|
|
18
|
-
#lc;
|
|
19
|
-
#mode;
|
|
20
|
-
#init;
|
|
21
|
-
#cleanup;
|
|
22
|
-
#tasks = new Queue();
|
|
23
|
-
#workers = [];
|
|
24
|
-
#initialWorkers;
|
|
25
|
-
#maxWorkers;
|
|
26
|
-
#timeoutTask;
|
|
27
|
-
#numWorkers;
|
|
28
|
-
#numWorking = 0;
|
|
29
|
-
#db; // set when running. stored to allow adaptive pool sizing.
|
|
30
|
-
#refCount = 1;
|
|
31
|
-
#done = false;
|
|
32
|
-
#failure;
|
|
33
|
-
/**
|
|
34
|
-
* @param init A {@link Task} that is run in each Transaction before it begins
|
|
35
|
-
* processing general tasks. This can be used to to set the transaction
|
|
36
|
-
* mode, export/set snapshots, etc. This will be run even if
|
|
37
|
-
* {@link fail} has been called on the pool.
|
|
38
|
-
* @param cleanup A {@link Task} that is run in each Transaction before it closes.
|
|
39
|
-
* This will be run even if {@link fail} has been called, or if a
|
|
40
|
-
* preceding Task threw an Error.
|
|
41
|
-
* @param initialWorkers The initial number of transaction workers to process tasks.
|
|
42
|
-
* This is the steady state number of workers that will be kept
|
|
43
|
-
* alive if the TransactionPool is long lived.
|
|
44
|
-
* This must be greater than 0. Defaults to 1.
|
|
45
|
-
* @param maxWorkers When specified, allows the pool to grow to `maxWorkers`. This
|
|
46
|
-
* must be greater than or equal to `initialWorkers`. On-demand
|
|
47
|
-
* workers will be shut down after an idle timeout of 5 seconds.
|
|
48
|
-
*/
|
|
49
|
-
constructor(lc, mode, init, cleanup, initialWorkers = 1, maxWorkers = initialWorkers, timeoutTasks = TIMEOUT_TASKS) {
|
|
50
|
-
assert(initialWorkers > 0);
|
|
51
|
-
assert(maxWorkers >= initialWorkers);
|
|
52
|
-
this.#lc = lc;
|
|
53
|
-
this.#mode = mode;
|
|
54
|
-
this.#init = init ? queuedStmt(init) : undefined;
|
|
55
|
-
this.#cleanup = cleanup ? queuedStmt(cleanup) : undefined;
|
|
56
|
-
this.#initialWorkers = initialWorkers;
|
|
57
|
-
this.#numWorkers = initialWorkers;
|
|
58
|
-
this.#maxWorkers = maxWorkers;
|
|
59
|
-
this.#timeoutTask = timeoutTasks;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Starts the pool of workers to process Tasks with transactions opened from the
|
|
63
|
-
* specified {@link db}.
|
|
64
|
-
*/
|
|
65
|
-
run(db) {
|
|
66
|
-
assert(!this.#db, 'already running');
|
|
67
|
-
this.#db = db;
|
|
68
|
-
for (let i = 0; i < this.#numWorkers; i++) {
|
|
69
|
-
this.#addWorker(db);
|
|
70
|
-
}
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Adds context parameters to internal LogContext. This is useful for context values that
|
|
75
|
-
* are not known when the TransactionPool is constructed (e.g. determined after a database
|
|
76
|
-
* call when the pool is running).
|
|
77
|
-
*
|
|
78
|
-
* Returns an object that can be used to add more parameters.
|
|
79
|
-
*/
|
|
80
|
-
addLoggingContext(key, value) {
|
|
81
|
-
this.#lc = this.#lc.withContext(key, value);
|
|
82
|
-
return {
|
|
83
|
-
addLoggingContext: (key, value) => this.addLoggingContext(key, value),
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Returns a promise that:
|
|
88
|
-
*
|
|
89
|
-
* * resolves after {@link setDone} has been called (or the the pool as been {@link unref}ed
|
|
90
|
-
* to a 0 ref count), once all added tasks have been processed and all transactions have been
|
|
91
|
-
* committed or closed.
|
|
92
|
-
*
|
|
93
|
-
* * rejects if processing was aborted with {@link fail} or if processing any of
|
|
94
|
-
* the tasks resulted in an error. All uncommitted transactions will have been
|
|
95
|
-
* rolled back.
|
|
96
|
-
*
|
|
97
|
-
* Note that partial failures are possible if processing writes with multiple workers
|
|
98
|
-
* (e.g. `setDone` is called, allowing some workers to commit, after which other
|
|
99
|
-
* workers encounter errors). Using a TransactionPool in this manner does not make
|
|
100
|
-
* sense in terms of transactional semantics, and is thus not recommended.
|
|
101
|
-
*
|
|
102
|
-
* For reads, however, multiple workers is useful for performing parallel reads
|
|
103
|
-
* at the same snapshot. See {@link synchronizedSnapshots} for an example.
|
|
104
|
-
* Resolves or rejects when all workers are done or failed.
|
|
105
|
-
*/
|
|
106
|
-
async done() {
|
|
107
|
-
const numWorkers = this.#workers.length;
|
|
108
|
-
await Promise.all(this.#workers);
|
|
109
|
-
if (numWorkers < this.#workers.length) {
|
|
110
|
-
// If workers were added after the initial set, they must be awaited to ensure
|
|
111
|
-
// that the results (i.e. rejections) of all workers are accounted for. This only
|
|
112
|
-
// needs to be re-done once, because the fact that the first `await` completed
|
|
113
|
-
// guarantees that the pool is in a terminal state and no new workers can be added.
|
|
114
|
-
await Promise.all(this.#workers);
|
|
115
|
-
}
|
|
116
|
-
this.#lc.debug?.('transaction pool done');
|
|
117
|
-
}
|
|
118
|
-
#addWorker(db) {
|
|
119
|
-
const lc = this.#lc.withContext('worker', `#${this.#workers.length + 1}`);
|
|
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' : { task: queuedStmt(tt.task) };
|
|
125
|
-
const worker = async (tx) => {
|
|
126
|
-
try {
|
|
127
|
-
lc.debug?.('started worker');
|
|
128
|
-
const pending = [];
|
|
129
|
-
const executeTask = async (taskTracker) => {
|
|
130
|
-
const { task, resolver } = taskTracker;
|
|
131
|
-
task !== this.#init && this.#numWorking++;
|
|
132
|
-
let result;
|
|
133
|
-
try {
|
|
134
|
-
result = await task(tx, lc);
|
|
135
|
-
if (result instanceof Statements) {
|
|
136
|
-
// Execute the statements (i.e. send to the db) immediately and add them to
|
|
137
|
-
// `pending` for the final await.
|
|
138
|
-
//
|
|
139
|
-
// Optimization: Fail immediately on rejections to prevent more tasks from
|
|
140
|
-
// queueing up. This can save a lot of time if an initial task fails before
|
|
141
|
-
// many subsequent tasks (e.g. transaction replay detection).
|
|
142
|
-
const start = Date.now();
|
|
143
|
-
pending.push(...result.stmts.map(stmt => stmt
|
|
144
|
-
.execute()
|
|
145
|
-
.then(() => lc.debug?.(`Executed statement (${Date.now() - start} ms)`, stmt.strings))
|
|
146
|
-
.catch(e => this.fail(e))));
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
catch (e) {
|
|
150
|
-
if (resolver) {
|
|
151
|
-
resolver.reject(e); // Reject the ReadTask only.
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
throw e; // Fail the pool for (write) Tasks.
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
finally {
|
|
158
|
-
task !== this.#init && this.#numWorking--;
|
|
159
|
-
resolver?.resolve(
|
|
160
|
-
// Note: This must be a ReadResult because of the TaskTracker type.
|
|
161
|
-
result instanceof ReadResult ? result.result : result?.stmts);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
let task = this.#init
|
|
165
|
-
? { task: this.#init }
|
|
166
|
-
: await this.#tasks.dequeue(timeoutTask, timeoutMs);
|
|
167
|
-
try {
|
|
168
|
-
while (task !== 'done') {
|
|
169
|
-
if (task instanceof Error ||
|
|
170
|
-
(task.task !== this.#init && this.#failure)) {
|
|
171
|
-
await Promise.allSettled(pending); // avoid unhandled rejections
|
|
172
|
-
throw this.#failure ?? task;
|
|
173
|
-
}
|
|
174
|
-
await executeTask(task);
|
|
175
|
-
// await the next task.
|
|
176
|
-
task = await this.#tasks.dequeue(timeoutTask, timeoutMs);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
finally {
|
|
180
|
-
// Execute the cleanup task even on failure.
|
|
181
|
-
if (this.#cleanup) {
|
|
182
|
-
await executeTask({ task: this.#cleanup });
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
lc.debug?.('worker done');
|
|
186
|
-
return Promise.all(pending);
|
|
187
|
-
}
|
|
188
|
-
catch (e) {
|
|
189
|
-
lc.error?.('error from worker', e);
|
|
190
|
-
this.fail(e); // A failure in any worker should fail the pool.
|
|
191
|
-
throw e;
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
this.#workers.push(db.begin(this.#mode, worker).finally(() => this.#numWorkers--));
|
|
195
|
-
// After adding the worker, enqueue a terminal signal if we are in either of the
|
|
196
|
-
// terminal states (both of which prevent more tasks from being enqueued), to ensure
|
|
197
|
-
// that the added worker eventually exits.
|
|
198
|
-
if (this.#done) {
|
|
199
|
-
void this.#tasks.enqueue('done');
|
|
200
|
-
}
|
|
201
|
-
if (this.#failure) {
|
|
202
|
-
void this.#tasks.enqueue(this.#failure);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
process(task) {
|
|
206
|
-
this.#trackAndProcess({ task: queuedStmt(task) });
|
|
207
|
-
}
|
|
208
|
-
#trackAndProcess(taskTracker) {
|
|
209
|
-
assert(!this.#done, 'already set done');
|
|
210
|
-
if (this.#failure) {
|
|
211
|
-
taskTracker.resolver?.reject(this.#failure);
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
void this.#tasks.enqueue(taskTracker);
|
|
215
|
-
// Check if the pool size can and should be increased.
|
|
216
|
-
if (this.#numWorkers < this.#maxWorkers) {
|
|
217
|
-
const outstanding = this.#tasks.size();
|
|
218
|
-
if (outstanding > this.#numWorkers - this.#numWorking) {
|
|
219
|
-
this.#db && this.#addWorker(this.#db);
|
|
220
|
-
this.#numWorkers++;
|
|
221
|
-
this.#lc.debug?.(`Increased pool size to ${this.#numWorkers}`);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
processReadTask(readTask) {
|
|
226
|
-
const r = resolver();
|
|
227
|
-
this.#trackAndProcess({
|
|
228
|
-
task: queuedRead(readTask),
|
|
229
|
-
resolver: r,
|
|
230
|
-
});
|
|
231
|
-
return r.promise;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Signals to all workers to end their transaction once all pending tasks have
|
|
235
|
-
* been completed.
|
|
236
|
-
*/
|
|
237
|
-
setDone() {
|
|
238
|
-
assert(!this.#done, 'already set done');
|
|
239
|
-
this.#done = true;
|
|
240
|
-
for (let i = 0; i < this.#workers.length; i++) {
|
|
241
|
-
void this.#tasks.enqueue('done');
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* An alternative to explicitly calling {@link setDone}, `ref()` increments an internal reference
|
|
246
|
-
* count, and {@link unref} decrements it. When the reference count reaches 0, {@link setDone} is
|
|
247
|
-
* automatically called. A TransactionPool is initialized with a reference count of 1.
|
|
248
|
-
*
|
|
249
|
-
* `ref()` should be called before sharing the pool with another component, and only after the
|
|
250
|
-
* pool has been started with {@link run()}. It must not be called on a TransactionPool that is
|
|
251
|
-
* already done (either via {@link unref()} or {@link setDone()}. (Doing so indicates a logical
|
|
252
|
-
* error in the code.)
|
|
253
|
-
*
|
|
254
|
-
* It follows that:
|
|
255
|
-
* * The creator of the TransactionPool is responsible for running it.
|
|
256
|
-
* * The TransactionPool should be ref'ed before being sharing.
|
|
257
|
-
* * The receiver of the TransactionPool is only responsible for unref'ing it.
|
|
258
|
-
*
|
|
259
|
-
* On the other hand, a transaction pool that fails with a runtime error can still be ref'ed;
|
|
260
|
-
* attempts to use the pool will result in the runtime error as expected.
|
|
261
|
-
*/
|
|
262
|
-
ref(count = 1) {
|
|
263
|
-
assert(this.#db !== undefined && !this.#done, `Cannot ref() a TransactionPool that is not running`);
|
|
264
|
-
this.#refCount += count;
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Decrements the internal reference count, automatically invoking {@link setDone} when it reaches 0.
|
|
268
|
-
*/
|
|
269
|
-
unref(count = 1) {
|
|
270
|
-
assert(count <= this.#refCount);
|
|
271
|
-
this.#refCount -= count;
|
|
272
|
-
if (this.#refCount === 0) {
|
|
273
|
-
this.setDone();
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
isRunning() {
|
|
277
|
-
return this.#db !== undefined && !this.#done && this.#failure === undefined;
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Signals all workers to fail their transactions with the given {@link err}.
|
|
281
|
-
*/
|
|
282
|
-
fail(err) {
|
|
283
|
-
if (!this.#failure) {
|
|
284
|
-
this.#failure = ensureError(err); // Fail fast: this is checked in the worker loop.
|
|
285
|
-
if (this.#failure instanceof ControlFlowError) {
|
|
286
|
-
this.#lc.debug?.(this.#failure);
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
this.#lc.error?.(this.#failure);
|
|
290
|
-
}
|
|
291
|
-
for (let i = 0; i < this.#workers.length; i++) {
|
|
292
|
-
// Enqueue the Error to terminate any workers waiting for tasks.
|
|
293
|
-
void this.#tasks.enqueue(this.#failure);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Init Tasks for Postgres snapshot synchronization across transactions.
|
|
300
|
-
*
|
|
301
|
-
* https://www.postgresql.org/docs/9.3/functions-admin.html#:~:text=Snapshot%20Synchronization%20Functions,identical%20content%20in%20the%20database.
|
|
302
|
-
*/
|
|
303
|
-
export function synchronizedSnapshots() {
|
|
304
|
-
const { promise: snapshotExported, resolve: exportSnapshot, reject: failExport, } = resolver();
|
|
305
|
-
const { promise: snapshotCaptured, resolve: captureSnapshot, reject: failCapture, } = resolver();
|
|
306
|
-
// Set by the first worker to run its initTask, who becomes responsible for
|
|
307
|
-
// exporting the snapshot. TODO: Plumb the workerNum and use that instead.
|
|
308
|
-
let firstWorkerRun = false;
|
|
309
|
-
// Note: Neither init task should `await`, as processing in each pool can proceed
|
|
310
|
-
// as soon as the statements have been sent to the db. However, the `cleanupExport`
|
|
311
|
-
// task must `await` the result of `setSnapshot` to ensure that exporting transaction
|
|
312
|
-
// does not close before the snapshot has been captured.
|
|
313
|
-
return {
|
|
314
|
-
exportSnapshot: tx => {
|
|
315
|
-
if (!firstWorkerRun) {
|
|
316
|
-
firstWorkerRun = true;
|
|
317
|
-
const stmt = tx `SELECT pg_export_snapshot() AS snapshot; SET TRANSACTION READ ONLY;`.simple();
|
|
318
|
-
// Intercept the promise to propagate the information to `snapshotExported`.
|
|
319
|
-
stmt.then(result => exportSnapshot(result[0].snapshot), failExport);
|
|
320
|
-
return [stmt]; // Also return the stmt so that it gets awaited (and errors handled).
|
|
321
|
-
}
|
|
322
|
-
return snapshotExported.then(snapshotID => [
|
|
323
|
-
tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`),
|
|
324
|
-
tx `SET TRANSACTION READ ONLY`.simple(),
|
|
325
|
-
]);
|
|
326
|
-
},
|
|
327
|
-
setSnapshot: tx => snapshotExported.then(snapshotID => {
|
|
328
|
-
const stmt = tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`);
|
|
329
|
-
// Intercept the promise to propagate the information to `cleanupExport`.
|
|
330
|
-
stmt.then(captureSnapshot, failCapture);
|
|
331
|
-
return [stmt];
|
|
332
|
-
}),
|
|
333
|
-
cleanupExport: async () => {
|
|
334
|
-
await snapshotCaptured;
|
|
335
|
-
return [];
|
|
336
|
-
},
|
|
337
|
-
snapshotID: snapshotExported,
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Returns `init` and `cleanup` {@link Task}s for a TransactionPool that ensure its workers
|
|
342
|
-
* share a single view of the database. This is used for View Notifier and View Syncer logic
|
|
343
|
-
* that allows multiple entities to perform parallel reads on the same snapshot of the database.
|
|
344
|
-
*/
|
|
345
|
-
export function sharedSnapshot() {
|
|
346
|
-
const { promise: snapshotExported, resolve: exportSnapshot, reject: failExport, } = resolver();
|
|
347
|
-
// Set by the first worker to run its initTask, who becomes responsible for
|
|
348
|
-
// exporting the snapshot.
|
|
349
|
-
let firstWorkerRun = false;
|
|
350
|
-
// Set when any worker is done, signalling that all non-sentinel Tasks have been
|
|
351
|
-
// dequeued, and thus any subsequently spawned workers should skip their initTask
|
|
352
|
-
// since the snapshot is no longer needed (and soon to become invalid).
|
|
353
|
-
let firstWorkerDone = false;
|
|
354
|
-
return {
|
|
355
|
-
init: (tx, lc) => {
|
|
356
|
-
if (!firstWorkerRun) {
|
|
357
|
-
firstWorkerRun = true;
|
|
358
|
-
const stmt = tx `SELECT pg_export_snapshot() AS snapshot;`.simple();
|
|
359
|
-
// Intercept the promise to propagate the information to `snapshotExported`.
|
|
360
|
-
stmt.then(result => exportSnapshot(result[0].snapshot), failExport);
|
|
361
|
-
return [stmt]; // Also return the stmt so that it gets awaited (and errors handled).
|
|
362
|
-
}
|
|
363
|
-
if (!firstWorkerDone) {
|
|
364
|
-
return snapshotExported.then(snapshotID => [
|
|
365
|
-
tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`),
|
|
366
|
-
]);
|
|
367
|
-
}
|
|
368
|
-
lc.debug?.('All work is done. No need to set snapshot');
|
|
369
|
-
return [];
|
|
370
|
-
},
|
|
371
|
-
cleanup: () => {
|
|
372
|
-
firstWorkerDone = true;
|
|
373
|
-
return [];
|
|
374
|
-
},
|
|
375
|
-
snapshotID: snapshotExported,
|
|
376
|
-
};
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* @returns An `init` Task for importing a snapshot from another transaction.
|
|
380
|
-
*/
|
|
381
|
-
export function importSnapshot(snapshotID) {
|
|
382
|
-
const { promise: imported, resolve, reject } = resolver();
|
|
383
|
-
return {
|
|
384
|
-
init: tx => {
|
|
385
|
-
const stmt = tx.unsafe(`SET TRANSACTION SNAPSHOT '${snapshotID}'`);
|
|
386
|
-
stmt.then(() => resolve(), reject);
|
|
387
|
-
return [stmt];
|
|
388
|
-
},
|
|
389
|
-
imported,
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* A superclass of Errors used for control flow that is needed to handle
|
|
394
|
-
* another Error but does not constitute an error condition itself (e.g.
|
|
395
|
-
* aborting transactions after a previous one fails). Subclassing this Error
|
|
396
|
-
* will result in lowering the log level from `error` to `debug`.
|
|
397
|
-
*/
|
|
398
|
-
export class ControlFlowError extends Error {
|
|
399
|
-
constructor(err) {
|
|
400
|
-
super();
|
|
401
|
-
this.cause = err;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
function ensureError(err) {
|
|
405
|
-
if (err instanceof Error) {
|
|
406
|
-
return err;
|
|
407
|
-
}
|
|
408
|
-
const error = new Error();
|
|
409
|
-
error.cause = err;
|
|
410
|
-
return error;
|
|
411
|
-
}
|
|
412
|
-
// Internal classes for handling read and write tasks in the same queue.
|
|
413
|
-
class Statements {
|
|
414
|
-
stmts;
|
|
415
|
-
constructor(stmts) {
|
|
416
|
-
this.stmts = stmts;
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
class ReadResult {
|
|
420
|
-
result;
|
|
421
|
-
constructor(result) {
|
|
422
|
-
this.result = result;
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
function queuedStmt(task) {
|
|
426
|
-
return async (tx, lc) => new Statements(await task(tx, lc));
|
|
427
|
-
}
|
|
428
|
-
function queuedRead(task) {
|
|
429
|
-
return async (tx, lc) => new ReadResult(await task(tx, lc));
|
|
430
|
-
}
|
|
431
|
-
const IDLE_TIMEOUT_MS = 5_000;
|
|
432
|
-
const KEEPALIVE_TIMEOUT_MS = 60_000;
|
|
433
|
-
const KEEPALIVE_TASK = tx => [tx `SELECT 1`.simple()];
|
|
434
|
-
// Production timeout tasks. Overridden in tests.
|
|
435
|
-
const TIMEOUT_TASKS = {
|
|
436
|
-
forInitialWorkers: {
|
|
437
|
-
timeoutMs: KEEPALIVE_TIMEOUT_MS,
|
|
438
|
-
task: KEEPALIVE_TASK,
|
|
439
|
-
},
|
|
440
|
-
forExtraWorkers: {
|
|
441
|
-
timeoutMs: IDLE_TIMEOUT_MS,
|
|
442
|
-
task: 'done',
|
|
443
|
-
},
|
|
444
|
-
};
|
|
445
|
-
//# sourceMappingURL=transaction-pool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-pool.js","sourceRoot":"","sources":["../../../../../zero-cache/src/db/transaction-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,MAAM,EACZ,MAAM,uBAAuB,CAAC;AAM/B,wBAA8B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCrE"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { must } from '../../../shared/src/must.js';
|
|
2
|
-
import { getZeroConfig } from '../config/zero-config.js';
|
|
3
|
-
import { ChangeStreamerHttpServer } from '../services/change-streamer/change-streamer-http.js';
|
|
4
|
-
import { initializeStreamer } from '../services/change-streamer/change-streamer-service.js';
|
|
5
|
-
import { initializeChangeSource } from '../services/change-streamer/pg/change-source.js';
|
|
6
|
-
import { pgClient } from '../types/pg.js';
|
|
7
|
-
import { parentWorker, singleProcessMode, } from '../types/processes.js';
|
|
8
|
-
import { exitAfter, runUntilKilled } from './life-cycle.js';
|
|
9
|
-
import { createLogContext } from './logging.js';
|
|
10
|
-
const MAX_CHANGE_DB_CONNECTIONS = 5;
|
|
11
|
-
export default async function runWorker(parent) {
|
|
12
|
-
const config = await getZeroConfig();
|
|
13
|
-
const lc = createLogContext(config.log, { worker: 'change-streamer' });
|
|
14
|
-
// Kick off DB connection warmup in the background.
|
|
15
|
-
const changeDB = pgClient(lc, config.changeDBConnStr, {
|
|
16
|
-
max: MAX_CHANGE_DB_CONNECTIONS,
|
|
17
|
-
});
|
|
18
|
-
void Promise.allSettled(Array.from({ length: MAX_CHANGE_DB_CONNECTIONS }, () => changeDB `SELECT 1`.simple().execute()));
|
|
19
|
-
// Note: This performs initial sync of the replica if necessary.
|
|
20
|
-
const { changeSource, replicationConfig } = await initializeChangeSource(lc, config.upstreamDBConnStr, config.shard, config.replicaDBFile);
|
|
21
|
-
const changeStreamer = await initializeStreamer(lc, changeDB, changeSource, replicationConfig);
|
|
22
|
-
const changeStreamerWebServer = new ChangeStreamerHttpServer(lc, changeStreamer);
|
|
23
|
-
parent.send(['ready', { ready: true }]);
|
|
24
|
-
return runUntilKilled(lc, parent, changeStreamer, changeStreamerWebServer);
|
|
25
|
-
}
|
|
26
|
-
// fork()
|
|
27
|
-
if (!singleProcessMode()) {
|
|
28
|
-
exitAfter(runWorker(must(parentWorker)));
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=change-streamer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-streamer.js","sourceRoot":"","sources":["../../../../../zero-cache/src/server/change-streamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,6BAA6B,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAC,wBAAwB,EAAC,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAC,kBAAkB,EAAC,MAAM,wDAAwD,CAAC;AAC1F,OAAO,EAAC,sBAAsB,EAAC,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACL,YAAY,EACZ,iBAAiB,GAElB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,SAAS,EAAE,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEpC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IACpD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,iBAAiB,EAAC,CAAC,CAAC;IAErE,mDAAmD;IACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,eAAe,EAAE;QACpD,GAAG,EAAE,yBAAyB;KAC/B,CAAC,CAAC;IACH,KAAK,OAAO,CAAC,UAAU,CACrB,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,yBAAyB,EAAC,EAAE,GAAG,EAAE,CACnD,QAAQ,CAAA,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CACtC,CACF,CAAC;IAEF,gEAAgE;IAChE,MAAM,EAAC,YAAY,EAAE,iBAAiB,EAAC,GAAG,MAAM,sBAAsB,CACpE,EAAE,EACF,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,aAAa,CACrB,CAAC;IAEF,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAC7C,EAAE,EACF,QAAQ,EACR,YAAY,EACZ,iBAAiB,CAClB,CAAC;IAEF,MAAM,uBAAuB,GAAG,IAAI,wBAAwB,CAC1D,EAAE,EACF,cAAc,CACf,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IAEtC,OAAO,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS;AACT,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import type { EventEmitter } from 'stream';
|
|
3
|
-
import type { SingletonService } from '../services/service.js';
|
|
4
|
-
import type { Worker } from '../types/processes.js';
|
|
5
|
-
/**
|
|
6
|
-
* * `user-facing` workers serve external requests and are the first to
|
|
7
|
-
* receive a `SIGTERM` or `SIGINT` signal for graceful shutdown.
|
|
8
|
-
*
|
|
9
|
-
* * `supporting` workers support `user-facing` workers and are sent
|
|
10
|
-
* the `SIGTERM` signal only after all `user-facing` workers have
|
|
11
|
-
* exited.
|
|
12
|
-
*
|
|
13
|
-
* For other kill signals, such as `SIGQUIT`, all workers
|
|
14
|
-
* are stopped without draining. Additionally, if any worker exits
|
|
15
|
-
* unexpectedly, all workers sent an immediate `SIGQUIT` signal.
|
|
16
|
-
*/
|
|
17
|
-
export type WorkerType = 'user-facing' | 'supporting';
|
|
18
|
-
export declare const GRACEFUL_SHUTDOWN: readonly ["SIGTERM", "SIGINT"];
|
|
19
|
-
export declare const FORCEFUL_SHUTDOWN: readonly ["SIGQUIT"];
|
|
20
|
-
/**
|
|
21
|
-
* Handles termination signals and coordination of graceful shutdown.
|
|
22
|
-
*/
|
|
23
|
-
export declare class Terminator {
|
|
24
|
-
#private;
|
|
25
|
-
constructor(lc: LogContext, proc?: EventEmitter, exit?: (code: number) => never);
|
|
26
|
-
addWorker(worker: Worker, type: WorkerType): Worker;
|
|
27
|
-
logErrorAndExit(err: unknown): never;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Runs the specified services, stopping them on `SIGTERM` or `SIGINT` with
|
|
31
|
-
* an optional {@link SingletonService.drain drain()}, or stopping them
|
|
32
|
-
* without draining for `SIGQUIT`.
|
|
33
|
-
*
|
|
34
|
-
* @returns a Promise that resolves/rejects when any of the services stops/throws.
|
|
35
|
-
*/
|
|
36
|
-
export declare function runUntilKilled(lc: LogContext, parent: Worker, ...services: SingletonService[]): Promise<void>;
|
|
37
|
-
export declare function exitAfter(running: Promise<void>): void;
|
|
38
|
-
//# sourceMappingURL=life-cycle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"life-cycle.d.ts","sourceRoot":"","sources":["../../../../../zero-cache/src/server/life-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACzC,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;AAEtD,eAAO,MAAM,iBAAiB,gCAAiC,CAAC;AAChE,eAAO,MAAM,iBAAiB,sBAAuB,CAAC;AAEtD;;GAEG;AACH,qBAAa,UAAU;;gBASnB,EAAE,EAAE,UAAU,EAEd,IAAI,GAAE,YAAsB,EAC5B,IAAI,UAAU,MAAM,UAAuB;IA6B7C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM;IAWnD,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK;CAkCrC;AAQD;;;;;;GAMG;AAEH,wBAAsB,cAAc,CAClC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,GAAG,QAAQ,EAAE,gBAAgB,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAK/C"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { LogContext } from '@rocicorp/logger';
|
|
2
|
-
export const GRACEFUL_SHUTDOWN = ['SIGTERM', 'SIGINT'];
|
|
3
|
-
export const FORCEFUL_SHUTDOWN = ['SIGQUIT'];
|
|
4
|
-
/**
|
|
5
|
-
* Handles termination signals and coordination of graceful shutdown.
|
|
6
|
-
*/
|
|
7
|
-
export class Terminator {
|
|
8
|
-
#lc;
|
|
9
|
-
#userFacing = new Set();
|
|
10
|
-
#all = new Set();
|
|
11
|
-
#exit;
|
|
12
|
-
#drainStart = 0;
|
|
13
|
-
constructor(lc,
|
|
14
|
-
// testing hooks
|
|
15
|
-
proc = process, exit = (code) => process.exit(code)) {
|
|
16
|
-
this.#lc = lc.withContext('component', 'terminator');
|
|
17
|
-
// Propagate `SIGTERM` and `SIGINT` to all user-facing workers,
|
|
18
|
-
// initiating a graceful shutdown. The terminator process will
|
|
19
|
-
// exit once all user-facing workers have exited ...
|
|
20
|
-
for (const signal of GRACEFUL_SHUTDOWN) {
|
|
21
|
-
proc.on(signal, () => {
|
|
22
|
-
this.#drainStart = Date.now();
|
|
23
|
-
kill(this.#userFacing, signal);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
// ... which will result in sending `SIGTERM` to the remaining workers.
|
|
27
|
-
proc.on('exit', code => kill(this.#all, code === 0 ? GRACEFUL_SHUTDOWN[0] : FORCEFUL_SHUTDOWN[0]));
|
|
28
|
-
// For other (catchable) kill signals, exit with a non-zero error code
|
|
29
|
-
// to send a `SIGQUIT` to all workers. For this signal, workers are
|
|
30
|
-
// stopped immediately without draining. See `runUntilKilled()`.
|
|
31
|
-
for (const signal of FORCEFUL_SHUTDOWN) {
|
|
32
|
-
proc.on(signal, () => exit(-1));
|
|
33
|
-
}
|
|
34
|
-
this.#exit = exit;
|
|
35
|
-
}
|
|
36
|
-
addWorker(worker, type) {
|
|
37
|
-
if (type === 'user-facing') {
|
|
38
|
-
this.#userFacing.add(worker);
|
|
39
|
-
}
|
|
40
|
-
this.#all.add(worker);
|
|
41
|
-
worker.on('error', err => this.logErrorAndExit(err));
|
|
42
|
-
worker.on('close', code => this.#onExit(code, worker, type));
|
|
43
|
-
return worker;
|
|
44
|
-
}
|
|
45
|
-
logErrorAndExit(err) {
|
|
46
|
-
this.#lc.error?.(`shutting down for error`, err);
|
|
47
|
-
this.#exit(-1);
|
|
48
|
-
}
|
|
49
|
-
#onExit(code, worker, type) {
|
|
50
|
-
if (code !== 0) {
|
|
51
|
-
this.#lc.error?.(`shutting down because worker exited with code ${code}`);
|
|
52
|
-
return this.#exit(code);
|
|
53
|
-
}
|
|
54
|
-
if (type === 'supporting') {
|
|
55
|
-
this.#lc.error?.(`shutting down because supporting worker exited with code ${code}`);
|
|
56
|
-
return this.#exit(-1);
|
|
57
|
-
}
|
|
58
|
-
if (this.#drainStart === 0) {
|
|
59
|
-
this.#lc.error?.(`shutting down because user-facing worker exited before SIGTERM`);
|
|
60
|
-
return this.#exit(-1);
|
|
61
|
-
}
|
|
62
|
-
// user-facing worker finished draining.
|
|
63
|
-
this.#userFacing.delete(worker);
|
|
64
|
-
this.#all.delete(worker);
|
|
65
|
-
if (this.#userFacing.size === 0) {
|
|
66
|
-
this.#lc.info?.(`all user-facing workers drained (${Date.now() - this.#drainStart} ms)`);
|
|
67
|
-
return this.#exit(0);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function kill(workers, signal) {
|
|
72
|
-
for (const worker of workers) {
|
|
73
|
-
worker.kill(signal);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Runs the specified services, stopping them on `SIGTERM` or `SIGINT` with
|
|
78
|
-
* an optional {@link SingletonService.drain drain()}, or stopping them
|
|
79
|
-
* without draining for `SIGQUIT`.
|
|
80
|
-
*
|
|
81
|
-
* @returns a Promise that resolves/rejects when any of the services stops/throws.
|
|
82
|
-
*/
|
|
83
|
-
export async function runUntilKilled(lc, parent, ...services) {
|
|
84
|
-
for (const signal of [...GRACEFUL_SHUTDOWN, ...FORCEFUL_SHUTDOWN]) {
|
|
85
|
-
parent.once(signal, () => {
|
|
86
|
-
const GRACEFUL_SIGNALS = GRACEFUL_SHUTDOWN;
|
|
87
|
-
services.forEach(async (svc) => {
|
|
88
|
-
if (GRACEFUL_SIGNALS.includes(signal) && svc.drain) {
|
|
89
|
-
lc.info?.(`draining ${svc.constructor.name} (${svc.id})`);
|
|
90
|
-
await svc.drain();
|
|
91
|
-
}
|
|
92
|
-
lc.info?.(`stopping ${svc.constructor.name} (${svc.id}) for ${signal}`);
|
|
93
|
-
await svc.stop();
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
try {
|
|
98
|
-
// Run all services and resolve when any of them stops.
|
|
99
|
-
const svc = await Promise.race(services.map(svc => svc.run().then(() => svc)));
|
|
100
|
-
lc.info?.(`${svc.constructor.name} (${svc.id}) stopped`);
|
|
101
|
-
}
|
|
102
|
-
catch (e) {
|
|
103
|
-
lc.error?.(`exiting on error`, e);
|
|
104
|
-
throw e;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
export function exitAfter(running) {
|
|
108
|
-
void running.then(() => process.exit(0), () => process.exit(-1));
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=life-cycle.js.map
|