@rocicorp/zero 0.0.202410041722 → 0.1.2024100802
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/btree/src/mod.d.ts +2 -0
- package/out/btree/src/mod.d.ts.map +1 -0
- package/out/btree/src/mod.js +2 -0
- package/out/btree/src/mod.js.map +1 -0
- package/out/datadog/src/mod.js +2 -0
- package/out/datadog/src/mod.js.map +1 -0
- package/out/react.js +9 -3
- package/out/react.js.map +3 -3
- package/out/replicache/src/btree/node.d.ts.map +1 -1
- package/out/replicache/src/config.d.ts.map +1 -1
- package/out/replicache/src/connection-loop.d.ts.map +1 -1
- package/out/replicache/src/cookies.d.ts.map +1 -1
- package/out/replicache/src/dag/gc.d.ts.map +1 -1
- package/out/replicache/src/dag/lazy-store.d.ts.map +1 -1
- package/out/replicache/src/db/scan.d.ts.map +1 -1
- package/out/replicache/src/frozen-json.d.ts.map +1 -1
- package/out/replicache/src/get-default-puller.d.ts.map +1 -1
- package/out/replicache/src/hash.d.ts.map +1 -1
- package/out/replicache/src/http-request-info.d.ts.map +1 -1
- package/out/replicache/src/index-defs.d.ts.map +1 -1
- package/out/replicache/src/kv/store.d.ts.map +1 -1
- package/out/replicache/src/kv/write-impl-base.d.ts.map +1 -1
- package/out/replicache/src/mod.d.ts.map +1 -1
- package/out/replicache/src/mutation-recovery.d.ts.map +1 -1
- package/out/replicache/src/patch-operation.d.ts.map +1 -1
- package/out/replicache/src/pending-mutations.d.ts.map +1 -1
- package/out/replicache/src/persist/client-groups.d.ts.map +1 -1
- package/out/replicache/src/persist/clients.d.ts.map +1 -1
- package/out/replicache/src/puller.d.ts.map +1 -1
- package/out/replicache/src/replicache-impl.d.ts.map +1 -1
- package/out/replicache/src/replicache.d.ts.map +1 -1
- package/out/replicache/src/scan-iterator.d.ts.map +1 -1
- package/out/replicache/src/subscriptions.d.ts +1 -1
- package/out/replicache/src/subscriptions.d.ts.map +1 -1
- package/out/replicache/src/sync/ids.d.ts.map +1 -1
- package/out/replicache/src/sync/patch.d.ts.map +1 -1
- package/out/replicache/src/sync/pull.d.ts.map +1 -1
- package/out/replicache/src/sync/push.d.ts.map +1 -1
- package/out/replicache/src/sync/request-id.d.ts.map +1 -1
- package/out/replicache/src/transactions.d.ts.map +1 -1
- package/out/replicache/src/types.d.ts.map +1 -1
- package/out/zero/src/cli.js +0 -0
- package/out/zero/src/react.d.ts +1 -1
- package/out/zero/src/react.d.ts.map +1 -1
- package/out/zero/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero/src/server/change-streamer.js.map +1 -1
- package/out/zero/src/server/main.d.ts.map +1 -1
- package/out/zero/src/server/main.js.map +1 -1
- package/out/zero/src/server/replicator.d.ts.map +1 -1
- package/out/zero/src/server/replicator.js.map +1 -1
- package/out/zero/src/server/syncer.d.ts.map +1 -1
- package/out/zero/src/server/syncer.js.map +1 -1
- package/out/zero/src/zero.d.ts +1 -1
- package/out/zero/src/zero.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.d.ts +21 -21
- package/out/zero-cache/src/config/zero-config.d.ts.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +30 -20
- package/out/zero-cache/src/config/zero-config.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.map +1 -1
- package/out/zero-cache/src/db/migration-lite.d.ts.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/db/migration.d.ts.map +1 -1
- package/out/zero-cache/src/db/migration.js.map +1 -1
- package/out/zero-cache/src/db/statements.d.ts +1 -0
- package/out/zero-cache/src/db/statements.d.ts.map +1 -1
- package/out/zero-cache/src/db/statements.js +3 -0
- package/out/zero-cache/src/db/statements.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +5 -5
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/life-cycle.d.ts +38 -0
- package/out/zero-cache/src/server/life-cycle.d.ts.map +1 -0
- package/out/zero-cache/src/server/life-cycle.js +110 -0
- package/out/zero-cache/src/server/life-cycle.js.map +1 -0
- package/out/zero-cache/src/server/logging.js +1 -1
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/main.js +18 -16
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +12 -11
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/server/syncer.js +9 -8
- package/out/zero-cache/src/server/syncer.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 +5 -5
- 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 +2 -2
- 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 +2 -2
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/change-source.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/change-source.js +10 -5
- package/out/zero-cache/src/services/change-streamer/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js +4 -4
- package/out/zero-cache/src/services/change-streamer/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.js +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/lsn.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/create.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js +2 -2
- package/out/zero-cache/src/services/change-streamer/pg/schema/lite.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/schema/zero.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js +1 -1
- package/out/zero-cache/src/services/change-streamer/pg/sync-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/change.d.ts +2 -2
- package/out/zero-cache/src/services/change-streamer/schema/change.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +1 -1
- 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.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.d.ts.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.d.ts +1 -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 +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts +1 -0
- package/out/zero-cache/src/services/dispatcher/connect-params.d.ts.map +1 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js +3 -1
- package/out/zero-cache/src/services/dispatcher/connect-params.js.map +1 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.d.ts +1 -1
- package/out/zero-cache/src/services/dispatcher/dispatcher.js +2 -2
- package/out/zero-cache/src/services/dispatcher/dispatcher.js.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.d.ts.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +15 -8
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts +8 -4
- package/out/zero-cache/src/services/mutagen/mutagen.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +23 -14
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.d.ts.map +1 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.js +1 -1
- package/out/zero-cache/src/services/mutagen/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +7 -6
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +35 -29
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +4 -13
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +2 -2
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.d.ts +4 -4
- 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 +3 -3
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.d.ts +1 -1
- 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 +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/runner.d.ts +2 -5
- package/out/zero-cache/src/services/runner.d.ts.map +1 -1
- package/out/zero-cache/src/services/runner.js +4 -22
- package/out/zero-cache/src/services/runner.js.map +1 -1
- package/out/zero-cache/src/services/running-state.d.ts.map +1 -1
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/service.d.ts +8 -0
- package/out/zero-cache/src/services/service.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts +3 -2
- package/out/zero-cache/src/services/view-syncer/client-handler.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +14 -3
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- 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 +1 -1
- 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 +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/database-storage.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/database-storage.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts +10 -5
- 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 +26 -16
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.d.ts.map +1 -1
- 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 +24 -13
- package/out/zero-cache/src/services/view-syncer/snapshotter.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +16 -27
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.d.ts +3 -0
- 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 +28 -44
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/bigint-json.d.ts.map +1 -1
- package/out/zero-cache/src/types/bigint-json.js.map +1 -1
- package/out/zero-cache/src/types/error-for-client.d.ts.map +1 -1
- package/out/zero-cache/src/types/lexi-version.js.map +1 -1
- package/out/zero-cache/src/types/lite.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.d.ts +1 -1
- package/out/zero-cache/src/types/processes.d.ts.map +1 -1
- package/out/zero-cache/src/types/processes.js +8 -14
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/schema-versions.d.ts +8 -0
- package/out/zero-cache/src/types/schema-versions.d.ts.map +1 -0
- package/out/zero-cache/src/types/schema-versions.js +21 -0
- package/out/zero-cache/src/types/schema-versions.js.map +1 -0
- package/out/zero-cache/src/types/streams.d.ts.map +1 -1
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/timeout.js.map +1 -1
- package/out/zero-cache/src/workers/connection.d.ts.map +1 -1
- package/out/zero-cache/src/workers/connection.js +6 -6
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts +4 -4
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +3 -31
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.d.ts +12 -4
- package/out/zero-cache/src/workers/syncer.d.ts.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +34 -2
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/context.d.ts +4 -4
- package/out/zero-client/src/client/context.d.ts.map +1 -1
- package/out/zero-client/src/client/crud.d.ts.map +1 -1
- package/out/zero-client/src/client/keys.d.ts.map +1 -1
- package/out/zero-client/src/client/log-options.d.ts +1 -1
- package/out/zero-client/src/client/log-options.d.ts.map +1 -1
- package/out/zero-client/src/client/metrics.d.ts.map +1 -1
- package/out/zero-client/src/client/options.d.ts +1 -1
- package/out/zero-client/src/client/options.d.ts.map +1 -1
- package/out/zero-client/src/client/query-manager.d.ts +5 -3
- package/out/zero-client/src/client/query-manager.d.ts.map +1 -1
- package/out/zero-client/src/client/replicache-types.d.ts +1 -1
- package/out/zero-client/src/client/replicache-types.d.ts.map +1 -1
- package/out/zero-client/src/client/server-error.d.ts.map +1 -1
- package/out/zero-client/src/client/server-option.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +2 -2
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.d.ts +2 -2
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/mod.d.ts +2 -2
- package/out/zero-client/src/mod.d.ts.map +1 -1
- package/out/zero-client/src/util/socket.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.d.ts.map +1 -1
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.d.ts.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
- package/out/zero-protocol/src/clients-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/clients-patch.js.map +1 -1
- package/out/zero-protocol/src/connect.d.ts.map +1 -1
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/delete-clients.d.ts.map +1 -1
- package/out/zero-protocol/src/delete-clients.js.map +1 -1
- package/out/zero-protocol/src/down.d.ts +6 -2
- package/out/zero-protocol/src/down.d.ts.map +1 -1
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/entities-patch.d.ts +6 -6
- package/out/zero-protocol/src/entities-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/entities-patch.js.map +1 -1
- package/out/zero-protocol/src/entity.d.ts.map +1 -1
- package/out/zero-protocol/src/entity.js.map +1 -1
- package/out/zero-protocol/src/error.d.ts +2 -1
- package/out/zero-protocol/src/error.d.ts.map +1 -1
- package/out/zero-protocol/src/error.js +2 -1
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/ping.d.ts.map +1 -1
- package/out/zero-protocol/src/ping.js.map +1 -1
- package/out/zero-protocol/src/poke.d.ts +12 -4
- package/out/zero-protocol/src/poke.d.ts.map +1 -1
- package/out/zero-protocol/src/poke.js +4 -0
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.d.ts.map +1 -1
- package/out/zero-protocol/src/pong.js.map +1 -1
- package/out/zero-protocol/src/pull.d.ts.map +1 -1
- package/out/zero-protocol/src/pull.js.map +1 -1
- package/out/zero-protocol/src/push.d.ts +25 -25
- package/out/zero-protocol/src/push.d.ts.map +1 -1
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.d.ts.map +1 -1
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/up.d.ts +4 -4
- package/out/zero-protocol/src/up.d.ts.map +1 -1
- package/out/zero-protocol/src/up.js.map +1 -1
- package/out/zero-protocol/src/version.d.ts.map +1 -1
- package/out/zero-protocol/src/version.js.map +1 -1
- package/out/zero-react/src/use-query.d.ts +1 -1
- package/out/zero-react/src/use-query.d.ts.map +1 -1
- package/out/zero-react/src/use-zero.d.ts +1 -1
- package/out/zero-react/src/use-zero.d.ts.map +1 -1
- package/out/zero.js +98 -24
- package/out/zero.js.map +4 -4
- package/out/zql/src/zql/ast/ast.js.map +1 -1
- package/out/zql/src/zql/builder/builder.d.ts.map +1 -1
- package/out/zql/src/zql/builder/builder.js.map +1 -1
- package/out/zql/src/zql/builder/filter.js.map +1 -1
- package/out/zql/src/zql/builder/like.js.map +1 -1
- package/out/zql/src/zql/ivm/array-view.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/data.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/data.js +1 -1
- package/out/zql/src/zql/ivm/data.js.map +1 -1
- package/out/zql/src/zql/ivm/filter.js.map +1 -1
- package/out/zql/src/zql/ivm/join.js.map +1 -1
- package/out/zql/src/zql/ivm/memory-source.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/memory-source.js +1 -1
- package/out/zql/src/zql/ivm/memory-source.js.map +1 -1
- package/out/zql/src/zql/ivm/memory-storage.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/operator.d.ts.map +1 -1
- package/out/zql/src/zql/ivm/skip.js.map +1 -1
- package/out/zql/src/zql/ivm/take.js.map +1 -1
- package/out/zql/src/zql/query/query-impl.d.ts +4 -1
- package/out/zql/src/zql/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/zql/query/query.d.ts +2 -1
- package/out/zql/src/zql/query/query.d.ts.map +1 -1
- package/out/zql/src/zql/query/typed-view.d.ts.map +1 -1
- package/out/zqlite/src/internal/statement-cache.js.map +1 -1
- package/out/zqlite/src/table-source.d.ts +1 -1
- package/out/zqlite/src/table-source.d.ts.map +1 -1
- package/out/zqlite/src/table-source.js +1 -1
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +5 -5
- package/out/zero-cache/src/services/replicator/checkpointer.d.ts +0 -79
- package/out/zero-cache/src/services/replicator/checkpointer.d.ts.map +0 -1
- package/out/zero-cache/src/services/replicator/checkpointer.js +0 -124
- package/out/zero-cache/src/services/replicator/checkpointer.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rocicorp/zero",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.2024100802+9b60ed",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"prepack": "rm -rf deps && mkdir -p deps/sqlite3 && cp -r ../../deps/sqlite3/* deps/sqlite3/",
|
|
6
6
|
"preinstall": "node tool/install-sqlite3.js",
|
|
7
7
|
"build": "rm -rf out && npm run build-server && npm run build-client",
|
|
8
8
|
"build-client": "tsc -p tsconfig.client.json && tsc-alias -p tsconfig.client.json && node tool/build.js",
|
|
9
|
-
"build-server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json",
|
|
10
|
-
"check-types": "tsc
|
|
11
|
-
"check-types:watch": "tsc --
|
|
9
|
+
"build-server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json && chmod +x out/zero/src/cli.js",
|
|
10
|
+
"check-types": "tsc",
|
|
11
|
+
"check-types:watch": "tsc --watch",
|
|
12
12
|
"format": "prettier --write .",
|
|
13
13
|
"check-format": "prettier --check .",
|
|
14
14
|
"lint": "eslint --ext .ts,.tsx,.js,.jsx src/"
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"tool/install-sqlite3.js"
|
|
76
76
|
],
|
|
77
77
|
"eslintConfig": {
|
|
78
|
-
"extends": "
|
|
78
|
+
"extends": "../../eslint-config.json"
|
|
79
79
|
},
|
|
80
80
|
"prettier": "@rocicorp/prettier-config"
|
|
81
81
|
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import { Notifier } from './notifier.js';
|
|
3
|
-
/**
|
|
4
|
-
* A `Checkpointer` is consulted by the Replicator after each commit and given
|
|
5
|
-
* the opportunity to perform a blocking WAL checkpoint before the Replicator
|
|
6
|
-
* continues processing the replication stream.
|
|
7
|
-
*/
|
|
8
|
-
export interface Checkpointer {
|
|
9
|
-
maybeCheckpoint(numCommittedChanges: number, notifier: Notifier): Promise<void>;
|
|
10
|
-
stop(): void;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* The `NULL_CHECKPOINTER` is suitable for an environment in which checkpoints are
|
|
14
|
-
* handled by an external entity, such as a `litestream replicate` process.
|
|
15
|
-
*/
|
|
16
|
-
export declare const NULL_CHECKPOINTER: Checkpointer;
|
|
17
|
-
export type CheckpointerConfig = {
|
|
18
|
-
/**
|
|
19
|
-
* The number of outstanding frames or changes at which a blocking
|
|
20
|
-
* checkpoint is triggered.
|
|
21
|
-
*
|
|
22
|
-
* Defaults to 200.
|
|
23
|
-
*/
|
|
24
|
-
threshold?: number;
|
|
25
|
-
/**
|
|
26
|
-
* The base timeout to block on an active checkpoint. This timeout is increased
|
|
27
|
-
* in proportion to the size of WAL divided by the `threshold`. For example, if
|
|
28
|
-
* the size of the WAL is twice the `threshold`, the timeout will be doubled.
|
|
29
|
-
*
|
|
30
|
-
* This dynamic timeout algorithm reduces the amount of system-wide pausing in
|
|
31
|
-
* the common case, even in the presence of occasional, long-held locks due to
|
|
32
|
-
* events like a long hydration. If checkpoint is not able to start within the
|
|
33
|
-
* timeout, the checkpointer gives up and allows the system to progress. As the
|
|
34
|
-
* size of the WAL grows, the checkpointer will wait for longer timeouts to ensure
|
|
35
|
-
* that the checkpointing eventually succeeds.
|
|
36
|
-
*
|
|
37
|
-
* Defaults to 200 milliseconds.
|
|
38
|
-
*/
|
|
39
|
-
baseCheckpointTimeoutMs?: number;
|
|
40
|
-
/**
|
|
41
|
-
* A regular interval at which passive checkpoints are attempted. This allows an
|
|
42
|
-
* idle task (i.e. no sync connections) to clean up outside of the
|
|
43
|
-
* replication path.
|
|
44
|
-
*
|
|
45
|
-
* Defaults to one minute.
|
|
46
|
-
*/
|
|
47
|
-
passiveCheckpointPeriodMs?: number;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* The `WALCheckpointer` executes checkpoints when the number of WAL log entries
|
|
51
|
-
* exceeds a configurable threshold. It does this by:
|
|
52
|
-
*
|
|
53
|
-
* 1. Broadcasting a `maintenance` ReplicaState message to signal view-syncers to
|
|
54
|
-
* release their locks.
|
|
55
|
-
* 2. Executing `wal_checkpoint(TRUNCATE)` with a busy_timeout proportional to
|
|
56
|
-
* the outstanding log size.
|
|
57
|
-
* 3. Broadcasting a `version-ready` ReplicaState message to signal view-syncers to
|
|
58
|
-
* reestablish their locks.
|
|
59
|
-
*
|
|
60
|
-
* Points of interest:
|
|
61
|
-
*
|
|
62
|
-
* * The checkpointer waits for the `maintenance` broadcast to be sent to over
|
|
63
|
-
* IPC channels (in-process blocking), but does not request or wait for ACKs from
|
|
64
|
-
* the view syncers. This is because the `wal_checkpoint(TRUNCATE)` command itself
|
|
65
|
-
* will block until all read locks are released, up to the configured `busy_timeout`.
|
|
66
|
-
*
|
|
67
|
-
* * After performing the checkpoint, however, the checkpointer _does_ request ACKs
|
|
68
|
-
* from view-syncers to confirm that they have reestablished their snapshots. There
|
|
69
|
-
* is otherwise no way to know when it is safe to continue replication. This is
|
|
70
|
-
* expected to be very fast, but to avoid pathological cases the wait is capped at
|
|
71
|
-
* 100ms.
|
|
72
|
-
*/
|
|
73
|
-
export declare class WALCheckpointer implements Checkpointer {
|
|
74
|
-
#private;
|
|
75
|
-
constructor(lc: LogContext, replicaDbFile: string, cfg?: CheckpointerConfig);
|
|
76
|
-
stop(): void;
|
|
77
|
-
maybeCheckpoint(changes: number, notifier: Notifier): Promise<void>;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=checkpointer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkpointer.d.ts","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/checkpointer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAM5C,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,eAAe,CACb,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAGtB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,eAAgB,YAAW,YAAY;;gBAWhD,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,kBAAuB;IA4B9B,IAAI;IAKE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;CAwE1D"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { LogContext } from '@rocicorp/logger';
|
|
2
|
-
import { assert } from '../../../../shared/src/asserts.js';
|
|
3
|
-
import { randInt } from '../../../../shared/src/rand.js';
|
|
4
|
-
import { promiseVoid } from '../../../../shared/src/resolved-promises.js';
|
|
5
|
-
import { orTimeout } from '../../../../zero-cache/src/types/timeout.js';
|
|
6
|
-
import { Database } from '../../../../zqlite/src/db.js';
|
|
7
|
-
import { Notifier } from './notifier.js';
|
|
8
|
-
/**
|
|
9
|
-
* The `NULL_CHECKPOINTER` is suitable for an environment in which checkpoints are
|
|
10
|
-
* handled by an external entity, such as a `litestream replicate` process.
|
|
11
|
-
*/
|
|
12
|
-
export const NULL_CHECKPOINTER = {
|
|
13
|
-
maybeCheckpoint: () => promiseVoid,
|
|
14
|
-
stop: () => { },
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* The `WALCheckpointer` executes checkpoints when the number of WAL log entries
|
|
18
|
-
* exceeds a configurable threshold. It does this by:
|
|
19
|
-
*
|
|
20
|
-
* 1. Broadcasting a `maintenance` ReplicaState message to signal view-syncers to
|
|
21
|
-
* release their locks.
|
|
22
|
-
* 2. Executing `wal_checkpoint(TRUNCATE)` with a busy_timeout proportional to
|
|
23
|
-
* the outstanding log size.
|
|
24
|
-
* 3. Broadcasting a `version-ready` ReplicaState message to signal view-syncers to
|
|
25
|
-
* reestablish their locks.
|
|
26
|
-
*
|
|
27
|
-
* Points of interest:
|
|
28
|
-
*
|
|
29
|
-
* * The checkpointer waits for the `maintenance` broadcast to be sent to over
|
|
30
|
-
* IPC channels (in-process blocking), but does not request or wait for ACKs from
|
|
31
|
-
* the view syncers. This is because the `wal_checkpoint(TRUNCATE)` command itself
|
|
32
|
-
* will block until all read locks are released, up to the configured `busy_timeout`.
|
|
33
|
-
*
|
|
34
|
-
* * After performing the checkpoint, however, the checkpointer _does_ request ACKs
|
|
35
|
-
* from view-syncers to confirm that they have reestablished their snapshots. There
|
|
36
|
-
* is otherwise no way to know when it is safe to continue replication. This is
|
|
37
|
-
* expected to be very fast, but to avoid pathological cases the wait is capped at
|
|
38
|
-
* 100ms.
|
|
39
|
-
*/
|
|
40
|
-
export class WALCheckpointer {
|
|
41
|
-
#lc;
|
|
42
|
-
#db;
|
|
43
|
-
#threshold;
|
|
44
|
-
#baseCheckpointTimeoutMs;
|
|
45
|
-
#passiveCheckpointTimer;
|
|
46
|
-
#logSize = 0;
|
|
47
|
-
#outstandingChanges = 0;
|
|
48
|
-
constructor(lc, replicaDbFile, cfg = {}) {
|
|
49
|
-
const { threshold = 200, baseCheckpointTimeoutMs = 10, passiveCheckpointPeriodMs = 60_000, } = cfg;
|
|
50
|
-
assert(threshold > 0 &&
|
|
51
|
-
baseCheckpointTimeoutMs > 0 &&
|
|
52
|
-
passiveCheckpointPeriodMs > 0, `Invalid config ${JSON.stringify(cfg)}`);
|
|
53
|
-
const db = new Database(lc, replicaDbFile);
|
|
54
|
-
db.pragma('journal_mode = WAL');
|
|
55
|
-
this.#lc = lc.withContext('component', 'wal-checkpointer');
|
|
56
|
-
this.#db = db;
|
|
57
|
-
this.#threshold = threshold;
|
|
58
|
-
this.#baseCheckpointTimeoutMs = baseCheckpointTimeoutMs;
|
|
59
|
-
this.#passiveCheckpointTimer = setInterval(() => this.#checkpoint('PASSIVE'), passiveCheckpointPeriodMs);
|
|
60
|
-
}
|
|
61
|
-
stop() {
|
|
62
|
-
clearTimeout(this.#passiveCheckpointTimer);
|
|
63
|
-
this.#lc.info?.('stopped');
|
|
64
|
-
}
|
|
65
|
-
async maybeCheckpoint(changes, notifier) {
|
|
66
|
-
this.#outstandingChanges += changes;
|
|
67
|
-
// Simplification: changes and frames equivalently w.r.t. the threshold.
|
|
68
|
-
if (Math.max(this.#outstandingChanges, this.#logSize) >= this.#threshold) {
|
|
69
|
-
// If no read locks are held, a PASSIVE checkpoint may suffice.
|
|
70
|
-
// Regardless of success, #logSize gets updated to determine if a
|
|
71
|
-
// blocking checkpoint is warranted.
|
|
72
|
-
this.#checkpoint('PASSIVE');
|
|
73
|
-
}
|
|
74
|
-
if (this.#logSize >= this.#threshold) {
|
|
75
|
-
const logSize = this.#logSize;
|
|
76
|
-
const t0 = Date.now();
|
|
77
|
-
await this.#enterMaintenanceMode(notifier);
|
|
78
|
-
const t1 = Date.now();
|
|
79
|
-
// The timeout is proportional to the size of the log compared to the threshold.
|
|
80
|
-
const timeout = (this.#logSize / this.#threshold) * this.#baseCheckpointTimeoutMs;
|
|
81
|
-
const result = this.#checkpoint('TRUNCATE', timeout);
|
|
82
|
-
const t2 = Date.now();
|
|
83
|
-
await this.#exitMaintenanceMode(notifier);
|
|
84
|
-
const t3 = Date.now();
|
|
85
|
-
this.#lc.info?.(`WAL(busy=${timeout}ms): pre=${t1 - t0}ms checkpoint=${t2 - t1}ms post=${t3 - t2}ms logSize=${logSize} result`, result);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
async #enterMaintenanceMode(notifier) {
|
|
89
|
-
await Promise.all(notifier.notifySubscribers({ state: 'maintenance' }));
|
|
90
|
-
}
|
|
91
|
-
async #exitMaintenanceMode(notifier) {
|
|
92
|
-
// Request an ACK when exiting maintenance mode to maximize the chance of
|
|
93
|
-
// view syncers re-establishing snapshots at the same version. This is expected
|
|
94
|
-
// to be very fast (single-digit milliseconds).
|
|
95
|
-
//
|
|
96
|
-
// However, this is also the chance for view syncers to invoke an occasional
|
|
97
|
-
// `PRAGMA optimize` call, for which latency may be variable. To avoid holding
|
|
98
|
-
// up the replication stream indefinitely, we cap the wait at 100ms.
|
|
99
|
-
const result = await orTimeout(Promise.all(notifier.notifySubscribers({
|
|
100
|
-
state: 'version-ready',
|
|
101
|
-
ack: randomACK(),
|
|
102
|
-
})), 100);
|
|
103
|
-
if (result === 'timed-out') {
|
|
104
|
-
this.#lc.info?.('timed out waiting for view-syncer resumption');
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
#checkpoint(mode, timeoutMs) {
|
|
108
|
-
if (timeoutMs) {
|
|
109
|
-
this.#db.pragma(`busy_timeout = ${timeoutMs}`);
|
|
110
|
-
}
|
|
111
|
-
const result = checkpoint(this.#db, mode);
|
|
112
|
-
this.#logSize = result.log;
|
|
113
|
-
this.#outstandingChanges = 0;
|
|
114
|
-
return result;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
function checkpoint(db, mode) {
|
|
118
|
-
const result = db.pragma(`wal_checkpoint(${mode})`);
|
|
119
|
-
return result[0];
|
|
120
|
-
}
|
|
121
|
-
function randomACK() {
|
|
122
|
-
return randInt(Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=checkpointer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkpointer.js","sourceRoot":"","sources":["../../../../../../zero-cache/src/services/replicator/checkpointer.ts"],"names":[],"mappings":"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"}
|