@rocicorp/zero 0.26.1 → 0.26.2-canary.4
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/_virtual/_@oxc-project_runtime@0.115.0/helpers/usingCtx.js +57 -0
- package/out/_virtual/_rolldown/runtime.js +27 -0
- package/out/analyze-query/src/bin-analyze.js +195 -283
- package/out/analyze-query/src/bin-analyze.js.map +1 -1
- package/out/analyze-query/src/bin-transform.js +35 -40
- package/out/analyze-query/src/bin-transform.js.map +1 -1
- package/out/analyze-query/src/explain-queries.js +11 -13
- package/out/analyze-query/src/explain-queries.js.map +1 -1
- package/out/analyze-query/src/run-ast.js +68 -103
- package/out/analyze-query/src/run-ast.js.map +1 -1
- package/out/ast-to-zql/src/ast-to-zql.js +105 -153
- package/out/ast-to-zql/src/ast-to-zql.js.map +1 -1
- package/out/ast-to-zql/src/bin.js +57 -62
- package/out/ast-to-zql/src/bin.js.map +1 -1
- package/out/ast-to-zql/src/format.js +14 -13
- package/out/ast-to-zql/src/format.js.map +1 -1
- package/out/datadog/src/datadog-log-sink.js +148 -213
- package/out/datadog/src/datadog-log-sink.js.map +1 -1
- package/out/otel/src/enabled.js +9 -11
- package/out/otel/src/enabled.js.map +1 -1
- package/out/otel/src/log-options.js +25 -35
- package/out/otel/src/log-options.js.map +1 -1
- package/out/otel/src/maybe-time.js +13 -14
- package/out/otel/src/maybe-time.js.map +1 -1
- package/out/otel/src/span.js +23 -26
- package/out/otel/src/span.js.map +1 -1
- package/out/otel/src/test-log-config.js +11 -10
- package/out/otel/src/test-log-config.js.map +1 -1
- package/out/otel/src/version.js +6 -5
- package/out/otel/src/version.js.map +1 -1
- package/out/replicache/src/async-iterable-to-array.js +8 -9
- package/out/replicache/src/async-iterable-to-array.js.map +1 -1
- package/out/replicache/src/bg-interval.js +28 -35
- package/out/replicache/src/bg-interval.js.map +1 -1
- package/out/replicache/src/btree/diff.js +6 -5
- package/out/replicache/src/btree/diff.js.map +1 -1
- package/out/replicache/src/btree/node.js +281 -372
- package/out/replicache/src/btree/node.js.map +1 -1
- package/out/replicache/src/btree/read.js +155 -256
- package/out/replicache/src/btree/read.js.map +1 -1
- package/out/replicache/src/btree/splice.js +60 -80
- package/out/replicache/src/btree/splice.js.map +1 -1
- package/out/replicache/src/btree/write.js +134 -158
- package/out/replicache/src/btree/write.js.map +1 -1
- package/out/replicache/src/call-default-fetch.js +28 -32
- package/out/replicache/src/call-default-fetch.js.map +1 -1
- package/out/replicache/src/config.js +2 -0
- package/out/replicache/src/connection-loop-delegates.js +31 -33
- package/out/replicache/src/connection-loop-delegates.js.map +1 -1
- package/out/replicache/src/connection-loop.js +174 -240
- package/out/replicache/src/connection-loop.js.map +1 -1
- package/out/replicache/src/cookies.js +22 -32
- package/out/replicache/src/cookies.js.map +1 -1
- package/out/replicache/src/dag/chunk.js +44 -50
- package/out/replicache/src/dag/chunk.js.map +1 -1
- package/out/replicache/src/dag/gc.js +94 -114
- package/out/replicache/src/dag/gc.js.map +1 -1
- package/out/replicache/src/dag/key.js +9 -11
- package/out/replicache/src/dag/key.js.map +1 -1
- package/out/replicache/src/dag/lazy-store.js +458 -510
- package/out/replicache/src/dag/lazy-store.js.map +1 -1
- package/out/replicache/src/dag/store-impl.js +147 -178
- package/out/replicache/src/dag/store-impl.js.map +1 -1
- package/out/replicache/src/dag/store.js +19 -22
- package/out/replicache/src/dag/store.js.map +1 -1
- package/out/replicache/src/dag/visitor.js +23 -21
- package/out/replicache/src/dag/visitor.js.map +1 -1
- package/out/replicache/src/db/commit.js +209 -283
- package/out/replicache/src/db/commit.js.map +1 -1
- package/out/replicache/src/db/index.js +79 -122
- package/out/replicache/src/db/index.js.map +1 -1
- package/out/replicache/src/db/read.js +44 -60
- package/out/replicache/src/db/read.js.map +1 -1
- package/out/replicache/src/db/rebase.js +22 -77
- package/out/replicache/src/db/rebase.js.map +1 -1
- package/out/replicache/src/db/write.js +162 -296
- package/out/replicache/src/db/write.js.map +1 -1
- package/out/replicache/src/deleted-clients.js +59 -87
- package/out/replicache/src/deleted-clients.js.map +1 -1
- package/out/replicache/src/error-responses.js +18 -26
- package/out/replicache/src/error-responses.js.map +1 -1
- package/out/replicache/src/expo-sqlite.js +2 -0
- package/out/replicache/src/frozen-json.js +74 -108
- package/out/replicache/src/frozen-json.js.map +1 -1
- package/out/replicache/src/get-default-puller.js +34 -46
- package/out/replicache/src/get-default-puller.js.map +1 -1
- package/out/replicache/src/get-default-pusher.js +25 -33
- package/out/replicache/src/get-default-pusher.js.map +1 -1
- package/out/replicache/src/get-kv-store-provider.js +18 -20
- package/out/replicache/src/get-kv-store-provider.js.map +1 -1
- package/out/replicache/src/hash.js +29 -29
- package/out/replicache/src/hash.js.map +1 -1
- package/out/replicache/src/http-request-info.js +9 -8
- package/out/replicache/src/http-request-info.js.map +1 -1
- package/out/replicache/src/impl.js +2 -0
- package/out/replicache/src/index-defs.js +17 -28
- package/out/replicache/src/index-defs.js.map +1 -1
- package/out/replicache/src/kv/expo-sqlite/store.js +52 -50
- package/out/replicache/src/kv/expo-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js +71 -68
- package/out/replicache/src/kv/idb-store-with-mem-fallback.js.map +1 -1
- package/out/replicache/src/kv/idb-store.js +144 -168
- package/out/replicache/src/kv/idb-store.js.map +1 -1
- package/out/replicache/src/kv/mem-store.js +57 -45
- package/out/replicache/src/kv/mem-store.js.map +1 -1
- package/out/replicache/src/kv/op-sqlite/store.js +56 -62
- package/out/replicache/src/kv/op-sqlite/store.js.map +1 -1
- package/out/replicache/src/kv/op-sqlite/types.d.ts.map +1 -1
- package/out/replicache/src/kv/op-sqlite/types.js +7 -6
- package/out/replicache/src/kv/op-sqlite/types.js.map +1 -1
- package/out/replicache/src/kv/read-impl.js +26 -25
- package/out/replicache/src/kv/read-impl.js.map +1 -1
- package/out/replicache/src/kv/sqlite-store.js +194 -207
- package/out/replicache/src/kv/sqlite-store.js.map +1 -1
- package/out/replicache/src/kv/throw-if-closed.js +12 -19
- package/out/replicache/src/kv/throw-if-closed.js.map +1 -1
- package/out/replicache/src/kv/write-impl-base.js +44 -56
- package/out/replicache/src/kv/write-impl-base.js.map +1 -1
- package/out/replicache/src/kv/write-impl.js +22 -26
- package/out/replicache/src/kv/write-impl.js.map +1 -1
- package/out/replicache/src/lazy.js +10 -11
- package/out/replicache/src/lazy.js.map +1 -1
- package/out/replicache/src/log-options.js +14 -7
- package/out/replicache/src/log-options.js.map +1 -1
- package/out/replicache/src/make-idb-name.js +14 -9
- package/out/replicache/src/make-idb-name.js.map +1 -1
- package/out/replicache/src/mutation-recovery.js +12 -0
- package/out/replicache/src/mutation-recovery.js.map +1 -0
- package/out/replicache/src/new-client-channel.js +34 -42
- package/out/replicache/src/new-client-channel.js.map +1 -1
- package/out/replicache/src/on-persist-channel.js +26 -29
- package/out/replicache/src/on-persist-channel.js.map +1 -1
- package/out/replicache/src/op-sqlite.js +2 -0
- package/out/replicache/src/patch-operation.js +27 -36
- package/out/replicache/src/patch-operation.js.map +1 -1
- package/out/replicache/src/pending-mutations.js +14 -12
- package/out/replicache/src/pending-mutations.js.map +1 -1
- package/out/replicache/src/persist/client-gc.js +36 -51
- package/out/replicache/src/persist/client-gc.js.map +1 -1
- package/out/replicache/src/persist/client-group-gc.js +29 -36
- package/out/replicache/src/persist/client-group-gc.js.map +1 -1
- package/out/replicache/src/persist/client-groups.js +80 -154
- package/out/replicache/src/persist/client-groups.js.map +1 -1
- package/out/replicache/src/persist/clients.js +212 -307
- package/out/replicache/src/persist/clients.js.map +1 -1
- package/out/replicache/src/persist/collect-idb-databases.js +109 -171
- package/out/replicache/src/persist/collect-idb-databases.js.map +1 -1
- package/out/replicache/src/persist/gather-mem-only-visitor.js +23 -24
- package/out/replicache/src/persist/gather-mem-only-visitor.js.map +1 -1
- package/out/replicache/src/persist/gather-not-cached-visitor.js +35 -33
- package/out/replicache/src/persist/gather-not-cached-visitor.js.map +1 -1
- package/out/replicache/src/persist/heartbeat.js +31 -41
- package/out/replicache/src/persist/heartbeat.js.map +1 -1
- package/out/replicache/src/persist/idb-databases-store-db-name.js +9 -12
- package/out/replicache/src/persist/idb-databases-store-db-name.js.map +1 -1
- package/out/replicache/src/persist/idb-databases-store.js +78 -97
- package/out/replicache/src/persist/idb-databases-store.js.map +1 -1
- package/out/replicache/src/persist/make-client-id.js +13 -9
- package/out/replicache/src/persist/make-client-id.js.map +1 -1
- package/out/replicache/src/persist/persist.js +113 -174
- package/out/replicache/src/persist/persist.js.map +1 -1
- package/out/replicache/src/persist/refresh.js +94 -183
- package/out/replicache/src/persist/refresh.js.map +1 -1
- package/out/replicache/src/process-scheduler.js +122 -143
- package/out/replicache/src/process-scheduler.js.map +1 -1
- package/out/replicache/src/pusher.js +21 -26
- package/out/replicache/src/pusher.js.map +1 -1
- package/out/replicache/src/replicache-impl.js +844 -1184
- package/out/replicache/src/replicache-impl.js.map +1 -1
- package/out/replicache/src/report-error.js +9 -6
- package/out/replicache/src/report-error.js.map +1 -1
- package/out/replicache/src/request-idle.js +13 -11
- package/out/replicache/src/request-idle.js.map +1 -1
- package/out/replicache/src/scan-iterator.d.ts.map +1 -1
- package/out/replicache/src/scan-iterator.js +108 -135
- package/out/replicache/src/scan-iterator.js.map +1 -1
- package/out/replicache/src/scan-options.js +33 -39
- package/out/replicache/src/scan-options.js.map +1 -1
- package/out/replicache/src/set-interval-with-signal.js +11 -10
- package/out/replicache/src/set-interval-with-signal.js.map +1 -1
- package/out/replicache/src/sqlite.js +2 -0
- package/out/replicache/src/subscriptions.js +222 -338
- package/out/replicache/src/subscriptions.js.map +1 -1
- package/out/replicache/src/sync/diff.js +52 -65
- package/out/replicache/src/sync/diff.js.map +1 -1
- package/out/replicache/src/sync/ids.js +8 -9
- package/out/replicache/src/sync/ids.js.map +1 -1
- package/out/replicache/src/sync/patch.js +34 -45
- package/out/replicache/src/sync/patch.js.map +1 -1
- package/out/replicache/src/sync/pull-error.js +15 -15
- package/out/replicache/src/sync/pull-error.js.map +1 -1
- package/out/replicache/src/sync/pull.js +145 -283
- package/out/replicache/src/sync/pull.js.map +1 -1
- package/out/replicache/src/sync/push.js +64 -79
- package/out/replicache/src/sync/push.js.map +1 -1
- package/out/replicache/src/sync/request-id.js +23 -15
- package/out/replicache/src/sync/request-id.js.map +1 -1
- package/out/replicache/src/sync/sync-head-name.js +6 -5
- package/out/replicache/src/sync/sync-head-name.js.map +1 -1
- package/out/replicache/src/to-error.js +7 -8
- package/out/replicache/src/to-error.js.map +1 -1
- package/out/replicache/src/transaction-closed-error.js +15 -15
- package/out/replicache/src/transaction-closed-error.js.map +1 -1
- package/out/replicache/src/transactions.js +120 -140
- package/out/replicache/src/transactions.js.map +1 -1
- package/out/replicache/src/version.js +9 -5
- package/out/replicache/src/version.js.map +1 -1
- package/out/replicache/src/with-transactions.js +23 -20
- package/out/replicache/src/with-transactions.js.map +1 -1
- package/out/shared/src/abort-error.js +7 -6
- package/out/shared/src/abort-error.js.map +1 -1
- package/out/shared/src/arrays.js +35 -42
- package/out/shared/src/arrays.js.map +1 -1
- package/out/shared/src/asserts.js +21 -45
- package/out/shared/src/asserts.js.map +1 -1
- package/out/shared/src/bigint-json.js +42 -38
- package/out/shared/src/bigint-json.js.map +1 -1
- package/out/shared/src/binary-search.js +27 -18
- package/out/shared/src/binary-search.js.map +1 -1
- package/out/shared/src/broadcast-channel.js +20 -23
- package/out/shared/src/broadcast-channel.js.map +1 -1
- package/out/shared/src/browser-env.js +11 -17
- package/out/shared/src/browser-env.js.map +1 -1
- package/out/shared/src/btree-set.js +419 -481
- package/out/shared/src/btree-set.js.map +1 -1
- package/out/shared/src/cache.js +43 -36
- package/out/shared/src/cache.js.map +1 -1
- package/out/shared/src/centroid.js +24 -26
- package/out/shared/src/centroid.js.map +1 -1
- package/out/shared/src/config.js +6 -6
- package/out/shared/src/config.js.map +1 -1
- package/out/shared/src/custom-key-map.js +54 -58
- package/out/shared/src/custom-key-map.js.map +1 -1
- package/out/shared/src/custom-key-set.js +53 -51
- package/out/shared/src/custom-key-set.js.map +1 -1
- package/out/shared/src/deep-clone.js +30 -41
- package/out/shared/src/deep-clone.js.map +1 -1
- package/out/shared/src/deep-merge.js +25 -24
- package/out/shared/src/deep-merge.js.map +1 -1
- package/out/shared/src/document-visible.js +63 -70
- package/out/shared/src/document-visible.js.map +1 -1
- package/out/shared/src/dotenv.js +7 -3
- package/out/shared/src/dotenv.js.map +1 -1
- package/out/shared/src/error.js +43 -64
- package/out/shared/src/error.js.map +1 -1
- package/out/shared/src/has-own.js +6 -5
- package/out/shared/src/has-own.js.map +1 -1
- package/out/shared/src/hash.js +15 -14
- package/out/shared/src/hash.js.map +1 -1
- package/out/shared/src/iterables.js +34 -47
- package/out/shared/src/iterables.js.map +1 -1
- package/out/shared/src/json-schema.js +25 -30
- package/out/shared/src/json-schema.js.map +1 -1
- package/out/shared/src/json.js +90 -129
- package/out/shared/src/json.js.map +1 -1
- package/out/shared/src/logging-test-utils.js +9 -11
- package/out/shared/src/logging-test-utils.js.map +1 -1
- package/out/shared/src/logging.js +75 -95
- package/out/shared/src/logging.js.map +1 -1
- package/out/shared/src/must.js +7 -8
- package/out/shared/src/must.js.map +1 -1
- package/out/shared/src/navigator.js +6 -5
- package/out/shared/src/navigator.js.map +1 -1
- package/out/shared/src/object-traversal.js +23 -23
- package/out/shared/src/object-traversal.js.map +1 -1
- package/out/shared/src/objects.js +15 -18
- package/out/shared/src/objects.js.map +1 -1
- package/out/shared/src/options.js +225 -302
- package/out/shared/src/options.js.map +1 -1
- package/out/shared/src/parse-big-int.js +12 -11
- package/out/shared/src/parse-big-int.js.map +1 -1
- package/out/shared/src/promise-race.js +21 -17
- package/out/shared/src/promise-race.js.map +1 -1
- package/out/shared/src/queue.js +124 -124
- package/out/shared/src/queue.js.map +1 -1
- package/out/shared/src/rand.js +13 -7
- package/out/shared/src/rand.js.map +1 -1
- package/out/shared/src/random-uint64.js +8 -7
- package/out/shared/src/random-uint64.js.map +1 -1
- package/out/shared/src/random-values.js +8 -11
- package/out/shared/src/random-values.js.map +1 -1
- package/out/shared/src/record-proxy.js +68 -57
- package/out/shared/src/record-proxy.js.map +1 -1
- package/out/shared/src/resolved-promises.js +9 -11
- package/out/shared/src/resolved-promises.js.map +1 -1
- package/out/shared/src/sentinels.js +9 -12
- package/out/shared/src/sentinels.js.map +1 -1
- package/out/shared/src/set-utils.js +41 -63
- package/out/shared/src/set-utils.js.map +1 -1
- package/out/shared/src/size-of-value.js +55 -51
- package/out/shared/src/size-of-value.js.map +1 -1
- package/out/shared/src/sleep.js +50 -45
- package/out/shared/src/sleep.js.map +1 -1
- package/out/shared/src/string-compare.js +8 -11
- package/out/shared/src/string-compare.js.map +1 -1
- package/out/shared/src/subscribable.js +34 -33
- package/out/shared/src/subscribable.js.map +1 -1
- package/out/shared/src/tdigest-schema.js +11 -7
- package/out/shared/src/tdigest-schema.js.map +1 -1
- package/out/shared/src/tdigest.js +197 -270
- package/out/shared/src/tdigest.js.map +1 -1
- package/out/shared/src/valita.js +145 -174
- package/out/shared/src/valita.js.map +1 -1
- package/out/z2s/src/compiler.d.ts.map +1 -1
- package/out/z2s/src/compiler.js +238 -468
- package/out/z2s/src/compiler.js.map +1 -1
- package/out/z2s/src/sql.d.ts +0 -1
- package/out/z2s/src/sql.d.ts.map +1 -1
- package/out/z2s/src/sql.js +149 -194
- package/out/z2s/src/sql.js.map +1 -1
- package/out/zero/package.js +194 -0
- package/out/zero/package.js.map +1 -0
- package/out/zero/src/adapters/drizzle.js +1 -6
- package/out/zero/src/adapters/pg.js +1 -6
- package/out/zero/src/adapters/postgresjs.js +1 -6
- package/out/zero/src/adapters/prisma.js +1 -5
- package/out/zero/src/analyze-query.js +1 -1
- package/out/zero/src/ast-to-zql.js +1 -1
- package/out/zero/src/bindings.js +6 -21
- package/out/zero/src/build-schema.js +5 -1
- package/out/zero/src/build-schema.js.map +1 -1
- package/out/zero/src/change-protocol/v0.js +3 -5
- package/out/zero/src/cli.js +2 -2
- package/out/zero/src/deploy-permissions.js +1 -1
- package/out/zero/src/expo-sqlite.js +2 -4
- package/out/zero/src/op-sqlite.js +2 -4
- package/out/zero/src/pg.js +2 -20
- package/out/zero/src/react-native.js +16 -12
- package/out/zero/src/react-native.js.map +1 -1
- package/out/zero/src/react.js +3 -12
- package/out/zero/src/server/runner/main.js +2 -0
- package/out/zero/src/server.js +2 -17
- package/out/zero/src/solid.js +3 -12
- package/out/zero/src/sqlite.js +2 -6
- package/out/zero/src/transform-query.js +1 -1
- package/out/zero/src/zero-cache-dev.js +124 -151
- package/out/zero/src/zero-cache-dev.js.map +1 -1
- package/out/zero/src/zero-out.js +9 -6
- package/out/zero/src/zero-out.js.map +1 -1
- package/out/zero/src/zero.js +6 -55
- package/out/zero/src/zqlite.js +2 -7
- package/out/zero-cache/src/auth/auth.js +138 -172
- package/out/zero-cache/src/auth/auth.js.map +1 -1
- package/out/zero-cache/src/auth/jwt.js +25 -33
- package/out/zero-cache/src/auth/jwt.js.map +1 -1
- package/out/zero-cache/src/auth/load-permissions.js +54 -62
- package/out/zero-cache/src/auth/load-permissions.js.map +1 -1
- package/out/zero-cache/src/auth/read-authorizer.js +70 -80
- package/out/zero-cache/src/auth/read-authorizer.js.map +1 -1
- package/out/zero-cache/src/auth/write-authorizer.js +284 -432
- package/out/zero-cache/src/auth/write-authorizer.js.map +1 -1
- package/out/zero-cache/src/config/network.js +31 -45
- package/out/zero-cache/src/config/network.js.map +1 -1
- package/out/zero-cache/src/config/normalize.js +81 -83
- package/out/zero-cache/src/config/normalize.js.map +1 -1
- package/out/zero-cache/src/config/server-context.js +32 -29
- package/out/zero-cache/src/config/server-context.js.map +1 -1
- package/out/zero-cache/src/config/zero-config.js +753 -833
- package/out/zero-cache/src/config/zero-config.js.map +1 -1
- package/out/zero-cache/src/custom/fetch.js +183 -230
- package/out/zero-cache/src/custom/fetch.js.map +1 -1
- package/out/zero-cache/src/custom-queries/transform-query.js +93 -99
- package/out/zero-cache/src/custom-queries/transform-query.js.map +1 -1
- package/out/zero-cache/src/db/create.js +27 -29
- package/out/zero-cache/src/db/create.js.map +1 -1
- package/out/zero-cache/src/db/delete-lite-db.js +11 -7
- package/out/zero-cache/src/db/delete-lite-db.js.map +1 -1
- package/out/zero-cache/src/db/lite-tables.js +118 -158
- package/out/zero-cache/src/db/lite-tables.js.map +1 -1
- package/out/zero-cache/src/db/migration-lite.js +110 -178
- package/out/zero-cache/src/db/migration-lite.js.map +1 -1
- package/out/zero-cache/src/db/migration.js +82 -151
- package/out/zero-cache/src/db/migration.js.map +1 -1
- package/out/zero-cache/src/db/mode-enum.js +8 -9
- package/out/zero-cache/src/db/mode-enum.js.map +1 -1
- package/out/zero-cache/src/db/pg-copy.js +56 -54
- package/out/zero-cache/src/db/pg-copy.js.map +1 -1
- package/out/zero-cache/src/db/pg-to-lite.js +74 -110
- package/out/zero-cache/src/db/pg-to-lite.js.map +1 -1
- package/out/zero-cache/src/db/pg-type-parser.js +19 -36
- package/out/zero-cache/src/db/pg-type-parser.js.map +1 -1
- package/out/zero-cache/src/db/run-transaction.js +19 -20
- package/out/zero-cache/src/db/run-transaction.js.map +1 -1
- package/out/zero-cache/src/db/specs.js +42 -78
- package/out/zero-cache/src/db/specs.js.map +1 -1
- package/out/zero-cache/src/db/statements.js +52 -59
- package/out/zero-cache/src/db/statements.js.map +1 -1
- package/out/zero-cache/src/db/transaction-pool.js +376 -400
- package/out/zero-cache/src/db/transaction-pool.js.map +1 -1
- package/out/zero-cache/src/db/warmup.js +13 -24
- package/out/zero-cache/src/db/warmup.js.map +1 -1
- package/out/zero-cache/src/observability/events.js +89 -99
- package/out/zero-cache/src/observability/events.js.map +1 -1
- package/out/zero-cache/src/observability/metrics.js +30 -54
- package/out/zero-cache/src/observability/metrics.js.map +1 -1
- package/out/zero-cache/src/scripts/decommission.js +42 -47
- package/out/zero-cache/src/scripts/decommission.js.map +1 -1
- package/out/zero-cache/src/scripts/deploy-permissions.js +106 -144
- package/out/zero-cache/src/scripts/deploy-permissions.js.map +1 -1
- package/out/zero-cache/src/scripts/permissions.js +86 -107
- package/out/zero-cache/src/scripts/permissions.js.map +1 -1
- package/out/zero-cache/src/server/anonymous-otel-start.js +306 -440
- package/out/zero-cache/src/server/anonymous-otel-start.js.map +1 -1
- package/out/zero-cache/src/server/change-streamer.d.ts.map +1 -1
- package/out/zero-cache/src/server/change-streamer.js +57 -130
- package/out/zero-cache/src/server/change-streamer.js.map +1 -1
- package/out/zero-cache/src/server/inspector-delegate.js +89 -100
- package/out/zero-cache/src/server/inspector-delegate.js.map +1 -1
- package/out/zero-cache/src/server/logging.js +18 -26
- package/out/zero-cache/src/server/logging.js.map +1 -1
- package/out/zero-cache/src/server/main.js +85 -142
- package/out/zero-cache/src/server/main.js.map +1 -1
- package/out/zero-cache/src/server/mutator.js +16 -13
- package/out/zero-cache/src/server/mutator.js.map +1 -1
- package/out/zero-cache/src/server/otel-diag-logger.js +42 -49
- package/out/zero-cache/src/server/otel-diag-logger.js.map +1 -1
- package/out/zero-cache/src/server/otel-log-sink.js +34 -44
- package/out/zero-cache/src/server/otel-log-sink.js.map +1 -1
- package/out/zero-cache/src/server/otel-start.js +43 -51
- package/out/zero-cache/src/server/otel-start.js.map +1 -1
- package/out/zero-cache/src/server/priority-op.js +27 -25
- package/out/zero-cache/src/server/priority-op.js.map +1 -1
- package/out/zero-cache/src/server/reaper.js +32 -43
- package/out/zero-cache/src/server/reaper.js.map +1 -1
- package/out/zero-cache/src/server/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/server/replicator.js +41 -57
- package/out/zero-cache/src/server/replicator.js.map +1 -1
- package/out/zero-cache/src/server/runner/main.js +7 -8
- package/out/zero-cache/src/server/runner/main.js.map +1 -1
- package/out/zero-cache/src/server/runner/run-worker.js +56 -52
- package/out/zero-cache/src/server/runner/run-worker.js.map +1 -1
- package/out/zero-cache/src/server/runner/runtime.js +26 -32
- package/out/zero-cache/src/server/runner/runtime.js.map +1 -1
- package/out/zero-cache/src/server/runner/zero-dispatcher.js +22 -27
- package/out/zero-cache/src/server/runner/zero-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/syncer.js +79 -148
- package/out/zero-cache/src/server/syncer.js.map +1 -1
- package/out/zero-cache/src/server/worker-dispatcher.js +84 -113
- package/out/zero-cache/src/server/worker-dispatcher.js.map +1 -1
- package/out/zero-cache/src/server/worker-urls.d.ts +2 -1
- package/out/zero-cache/src/server/worker-urls.d.ts.map +1 -1
- package/out/zero-cache/src/server/worker-urls.js +14 -18
- package/out/zero-cache/src/server/worker-urls.js.map +1 -1
- package/out/zero-cache/src/server/write-worker.js +2 -0
- package/out/zero-cache/src/services/analyze.js +61 -130
- package/out/zero-cache/src/services/analyze.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js +420 -419
- package/out/zero-cache/src/services/change-source/common/backfill-manager.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js +111 -114
- package/out/zero-cache/src/services/change-source/common/change-stream-multiplexer.js.map +1 -1
- package/out/zero-cache/src/services/change-source/common/replica-schema.js +80 -148
- package/out/zero-cache/src/services/change-source/common/replica-schema.js.map +1 -1
- package/out/zero-cache/src/services/change-source/custom/change-source.js +154 -216
- package/out/zero-cache/src/services/change-source/custom/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js +11 -14
- package/out/zero-cache/src/services/change-source/pg/backfill-metadata.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js +168 -212
- package/out/zero-cache/src/services/change-source/pg/backfill-stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/change-source.js +672 -892
- package/out/zero-cache/src/services/change-source/pg/change-source.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/decommission.js +19 -23
- package/out/zero-cache/src/services/change-source/pg/decommission.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js +258 -411
- package/out/zero-cache/src/services/change-source/pg/initial-sync.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js +59 -65
- package/out/zero-cache/src/services/change-source/pg/logical-replication/binary-reader.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js +218 -247
- package/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js +100 -142
- package/out/zero-cache/src/services/change-source/pg/logical-replication/stream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/lsn.js +17 -19
- package/out/zero-cache/src/services/change-source/pg/lsn.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js +88 -98
- package/out/zero-cache/src/services/change-source/pg/schema/ddl.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/init.js +96 -177
- package/out/zero-cache/src/services/change-source/pg/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/published.js +69 -107
- package/out/zero-cache/src/services/change-source/pg/schema/published.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js +151 -212
- package/out/zero-cache/src/services/change-source/pg/schema/shard.js.map +1 -1
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js +22 -53
- package/out/zero-cache/src/services/change-source/pg/schema/validation.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/control.js +24 -12
- package/out/zero-cache/src/services/change-source/protocol/current/control.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/data.js +180 -290
- package/out/zero-cache/src/services/change-source/protocol/current/data.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js +21 -33
- package/out/zero-cache/src/services/change-source/protocol/current/downstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/json.js +7 -18
- package/out/zero-cache/src/services/change-source/protocol/current/json.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/path.js +24 -5
- package/out/zero-cache/src/services/change-source/protocol/current/path.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/status.js +25 -19
- package/out/zero-cache/src/services/change-source/protocol/current/status.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js +24 -16
- package/out/zero-cache/src/services/change-source/protocol/current/upstream.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/current.js +51 -46
- package/out/zero-cache/src/services/change-source/protocol/current.js.map +1 -1
- package/out/zero-cache/src/services/change-source/protocol/mod.js +2 -0
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js +165 -171
- package/out/zero-cache/src/services/change-streamer/backup-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/broadcast.js +163 -169
- package/out/zero-cache/src/services/change-streamer/broadcast.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-http.js +154 -221
- 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.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js +340 -299
- package/out/zero-cache/src/services/change-streamer/change-streamer-service.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/change-streamer.js +17 -24
- package/out/zero-cache/src/services/change-streamer/change-streamer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/forwarder.js +84 -103
- package/out/zero-cache/src/services/change-streamer/forwarder.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js +49 -43
- package/out/zero-cache/src/services/change-streamer/replica-monitor.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/init.js +61 -89
- package/out/zero-cache/src/services/change-streamer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/schema/tables.d.ts +20 -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 +131 -109
- package/out/zero-cache/src/services/change-streamer/schema/tables.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/snapshot.js +26 -28
- package/out/zero-cache/src/services/change-streamer/snapshot.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/storer.js +434 -513
- package/out/zero-cache/src/services/change-streamer/storer.js.map +1 -1
- package/out/zero-cache/src/services/change-streamer/subscriber.js +142 -155
- package/out/zero-cache/src/services/change-streamer/subscriber.js.map +1 -1
- package/out/zero-cache/src/services/heapz.js +18 -20
- package/out/zero-cache/src/services/heapz.js.map +1 -1
- package/out/zero-cache/src/services/http-service.js +59 -57
- package/out/zero-cache/src/services/http-service.js.map +1 -1
- package/out/zero-cache/src/services/life-cycle.js +182 -214
- package/out/zero-cache/src/services/life-cycle.js.map +1 -1
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js +102 -81
- package/out/zero-cache/src/services/limiter/sliding-window-limiter.js.map +1 -1
- package/out/zero-cache/src/services/litestream/commands.js +144 -205
- package/out/zero-cache/src/services/litestream/commands.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/error.js +10 -14
- package/out/zero-cache/src/services/mutagen/error.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/mutagen.js +166 -264
- package/out/zero-cache/src/services/mutagen/mutagen.js.map +1 -1
- package/out/zero-cache/src/services/mutagen/pusher.js +372 -487
- package/out/zero-cache/src/services/mutagen/pusher.js.map +1 -1
- package/out/zero-cache/src/services/replicator/change-processor.js +483 -592
- package/out/zero-cache/src/services/replicator/change-processor.js.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts +4 -2
- package/out/zero-cache/src/services/replicator/incremental-sync.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/incremental-sync.js +118 -143
- package/out/zero-cache/src/services/replicator/incremental-sync.js.map +1 -1
- package/out/zero-cache/src/services/replicator/notifier.js +52 -28
- package/out/zero-cache/src/services/replicator/notifier.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replication-status.js +105 -128
- package/out/zero-cache/src/services/replicator/replication-status.js.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts +2 -1
- package/out/zero-cache/src/services/replicator/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/services/replicator/replicator.js +32 -34
- package/out/zero-cache/src/services/replicator/replicator.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/change-log.js +101 -133
- package/out/zero-cache/src/services/replicator/schema/change-log.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js +145 -174
- package/out/zero-cache/src/services/replicator/schema/column-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/constants.js +11 -5
- package/out/zero-cache/src/services/replicator/schema/constants.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/replication-state.js +56 -107
- package/out/zero-cache/src/services/replicator/schema/replication-state.js.map +1 -1
- package/out/zero-cache/src/services/replicator/schema/table-metadata.js +81 -66
- package/out/zero-cache/src/services/replicator/schema/table-metadata.js.map +1 -1
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts +69 -0
- package/out/zero-cache/src/services/replicator/write-worker-client.d.ts.map +1 -0
- package/out/zero-cache/src/services/replicator/write-worker-client.js +96 -0
- package/out/zero-cache/src/services/replicator/write-worker-client.js.map +1 -0
- package/out/zero-cache/src/services/replicator/write-worker.js +68 -0
- package/out/zero-cache/src/services/replicator/write-worker.js.map +1 -0
- package/out/zero-cache/src/services/run-ast.js +79 -120
- package/out/zero-cache/src/services/run-ast.js.map +1 -1
- package/out/zero-cache/src/services/runner.js +39 -41
- package/out/zero-cache/src/services/runner.js.map +1 -1
- package/out/zero-cache/src/services/running-state.js +129 -134
- package/out/zero-cache/src/services/running-state.js.map +1 -1
- package/out/zero-cache/src/services/statz.js +139 -200
- package/out/zero-cache/src/services/statz.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js +46 -49
- package/out/zero-cache/src/services/view-syncer/active-users-gauge.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-handler.js +257 -299
- package/out/zero-cache/src/services/view-syncer/client-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/client-schema.js +52 -82
- package/out/zero-cache/src/services/view-syncer/client-schema.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js +85 -107
- package/out/zero-cache/src/services/view-syncer/cvr-purger.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr-store.js +604 -757
- package/out/zero-cache/src/services/view-syncer/cvr-store.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/cvr.js +631 -739
- package/out/zero-cache/src/services/view-syncer/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js +60 -40
- package/out/zero-cache/src/services/view-syncer/drain-coordinator.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js +95 -178
- package/out/zero-cache/src/services/view-syncer/inspect-handler.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js +571 -722
- package/out/zero-cache/src/services/view-syncer/pipeline-driver.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.d.ts.map +1 -1
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js +246 -257
- package/out/zero-cache/src/services/view-syncer/row-record-cache.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js +59 -45
- package/out/zero-cache/src/services/view-syncer/schema/cvr.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/init.js +121 -189
- package/out/zero-cache/src/services/view-syncer/schema/init.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/schema/types.js +138 -263
- package/out/zero-cache/src/services/view-syncer/schema/types.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/snapshotter.js +322 -335
- package/out/zero-cache/src/services/view-syncer/snapshotter.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/tracer.js +7 -6
- package/out/zero-cache/src/services/view-syncer/tracer.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js +9 -11
- package/out/zero-cache/src/services/view-syncer/ttl-clock.js.map +1 -1
- package/out/zero-cache/src/services/view-syncer/view-syncer.js +1067 -1603
- package/out/zero-cache/src/services/view-syncer/view-syncer.js.map +1 -1
- package/out/zero-cache/src/types/error-with-level.js +19 -25
- package/out/zero-cache/src/types/error-with-level.js.map +1 -1
- package/out/zero-cache/src/types/http.js +17 -26
- package/out/zero-cache/src/types/http.js.map +1 -1
- package/out/zero-cache/src/types/lexi-version.js +28 -42
- package/out/zero-cache/src/types/lexi-version.js.map +1 -1
- package/out/zero-cache/src/types/lite.js +101 -121
- package/out/zero-cache/src/types/lite.js.map +1 -1
- package/out/zero-cache/src/types/names.js +6 -5
- package/out/zero-cache/src/types/names.js.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.d.ts +1 -0
- package/out/zero-cache/src/types/pg-data-type.d.ts.map +1 -1
- package/out/zero-cache/src/types/pg-data-type.js +58 -73
- package/out/zero-cache/src/types/pg-data-type.js.map +1 -1
- package/out/zero-cache/src/types/pg-types.js +12 -19
- package/out/zero-cache/src/types/pg-types.js.map +1 -1
- package/out/zero-cache/src/types/pg.js +144 -218
- package/out/zero-cache/src/types/pg.js.map +1 -1
- package/out/zero-cache/src/types/processes.js +95 -90
- package/out/zero-cache/src/types/processes.js.map +1 -1
- package/out/zero-cache/src/types/profiler.js +32 -27
- package/out/zero-cache/src/types/profiler.js.map +1 -1
- package/out/zero-cache/src/types/row-key.js +42 -30
- package/out/zero-cache/src/types/row-key.js.map +1 -1
- package/out/zero-cache/src/types/shards.js +36 -45
- package/out/zero-cache/src/types/shards.js.map +1 -1
- package/out/zero-cache/src/types/sql.js +20 -9
- package/out/zero-cache/src/types/sql.js.map +1 -1
- package/out/zero-cache/src/types/state-version.js +17 -23
- package/out/zero-cache/src/types/state-version.js.map +1 -1
- package/out/zero-cache/src/types/streams.js +234 -270
- package/out/zero-cache/src/types/streams.js.map +1 -1
- package/out/zero-cache/src/types/strings.js +10 -13
- package/out/zero-cache/src/types/strings.js.map +1 -1
- package/out/zero-cache/src/types/subscription.js +266 -226
- package/out/zero-cache/src/types/subscription.js.map +1 -1
- package/out/zero-cache/src/types/url-params.js +30 -39
- package/out/zero-cache/src/types/url-params.js.map +1 -1
- package/out/zero-cache/src/types/websocket-handoff.js +62 -75
- package/out/zero-cache/src/types/websocket-handoff.js.map +1 -1
- package/out/zero-cache/src/types/ws.js +43 -53
- package/out/zero-cache/src/types/ws.js.map +1 -1
- package/out/zero-cache/src/workers/connect-params.js +42 -43
- package/out/zero-cache/src/workers/connect-params.js.map +1 -1
- package/out/zero-cache/src/workers/connection.js +213 -282
- package/out/zero-cache/src/workers/connection.js.map +1 -1
- package/out/zero-cache/src/workers/mutator.js +22 -21
- package/out/zero-cache/src/workers/mutator.js.map +1 -1
- package/out/zero-cache/src/workers/replicator.d.ts +7 -0
- package/out/zero-cache/src/workers/replicator.d.ts.map +1 -1
- package/out/zero-cache/src/workers/replicator.js +92 -97
- package/out/zero-cache/src/workers/replicator.js.map +1 -1
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js +121 -203
- package/out/zero-cache/src/workers/syncer-ws-message-handler.js.map +1 -1
- package/out/zero-cache/src/workers/syncer.js +147 -201
- package/out/zero-cache/src/workers/syncer.js.map +1 -1
- package/out/zero-client/src/client/active-clients-manager.js +178 -187
- package/out/zero-client/src/client/active-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/bindings.js +11 -0
- package/out/zero-client/src/client/client-error-kind-enum.js +18 -29
- package/out/zero-client/src/client/client-error-kind-enum.js.map +1 -1
- package/out/zero-client/src/client/connection-manager.js +291 -346
- package/out/zero-client/src/client/connection-manager.js.map +1 -1
- package/out/zero-client/src/client/connection-status-enum.js +20 -15
- package/out/zero-client/src/client/connection-status-enum.js.map +1 -1
- package/out/zero-client/src/client/connection.js +92 -110
- package/out/zero-client/src/client/connection.js.map +1 -1
- package/out/zero-client/src/client/context.js +84 -100
- package/out/zero-client/src/client/context.js.map +1 -1
- package/out/zero-client/src/client/crud-impl.js +56 -88
- package/out/zero-client/src/client/crud-impl.js.map +1 -1
- package/out/zero-client/src/client/crud.js +127 -129
- package/out/zero-client/src/client/crud.js.map +1 -1
- package/out/zero-client/src/client/custom.d.ts.map +1 -1
- package/out/zero-client/src/client/custom.js +50 -74
- package/out/zero-client/src/client/custom.js.map +1 -1
- package/out/zero-client/src/client/delete-clients-manager.js +72 -93
- package/out/zero-client/src/client/delete-clients-manager.js.map +1 -1
- package/out/zero-client/src/client/enable-analytics.js +8 -16
- package/out/zero-client/src/client/enable-analytics.js.map +1 -1
- package/out/zero-client/src/client/error.js +118 -133
- package/out/zero-client/src/client/error.js.map +1 -1
- package/out/zero-client/src/client/http-string.js +7 -7
- package/out/zero-client/src/client/http-string.js.map +1 -1
- package/out/zero-client/src/client/inspector/client-group.js +21 -26
- package/out/zero-client/src/client/inspector/client-group.js.map +1 -1
- package/out/zero-client/src/client/inspector/client.js +23 -26
- package/out/zero-client/src/client/inspector/client.js.map +1 -1
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js +72 -73
- package/out/zero-client/src/client/inspector/html-dialog-prompt.js.map +1 -1
- package/out/zero-client/src/client/inspector/inspector.js +46 -51
- package/out/zero-client/src/client/inspector/inspector.js.map +1 -1
- package/out/zero-client/src/client/inspector/lazy-inspector.js +132 -192
- package/out/zero-client/src/client/inspector/lazy-inspector.js.map +1 -1
- package/out/zero-client/src/client/inspector/query.js +72 -77
- package/out/zero-client/src/client/inspector/query.js.map +1 -1
- package/out/zero-client/src/client/ivm-branch.js +118 -145
- package/out/zero-client/src/client/ivm-branch.js.map +1 -1
- package/out/zero-client/src/client/keys.js +15 -31
- package/out/zero-client/src/client/keys.js.map +1 -1
- package/out/zero-client/src/client/log-options.js +43 -57
- package/out/zero-client/src/client/log-options.js.map +1 -1
- package/out/zero-client/src/client/make-mutate-property.js +46 -29
- package/out/zero-client/src/client/make-mutate-property.js.map +1 -1
- package/out/zero-client/src/client/make-replicache-mutators.js +80 -96
- package/out/zero-client/src/client/make-replicache-mutators.js.map +1 -1
- package/out/zero-client/src/client/metric-name-enum.js +11 -15
- package/out/zero-client/src/client/metric-name-enum.js.map +1 -1
- package/out/zero-client/src/client/metrics.js +210 -237
- package/out/zero-client/src/client/metrics.js.map +1 -1
- package/out/zero-client/src/client/mutation-tracker.js +264 -354
- package/out/zero-client/src/client/mutation-tracker.js.map +1 -1
- package/out/zero-client/src/client/mutator-proxy.js +122 -151
- package/out/zero-client/src/client/mutator-proxy.js.map +1 -1
- package/out/zero-client/src/client/options.js +7 -10
- package/out/zero-client/src/client/options.js.map +1 -1
- package/out/zero-client/src/client/query-manager.js +305 -373
- package/out/zero-client/src/client/query-manager.js.map +1 -1
- package/out/zero-client/src/client/reload-error-handler.js +80 -101
- package/out/zero-client/src/client/reload-error-handler.js.map +1 -1
- package/out/zero-client/src/client/server-option.js +30 -59
- package/out/zero-client/src/client/server-option.js.map +1 -1
- package/out/zero-client/src/client/update-needed-reason-type-enum.js +27 -9
- package/out/zero-client/src/client/update-needed-reason-type-enum.js.map +1 -1
- package/out/zero-client/src/client/version.js +9 -5
- package/out/zero-client/src/client/version.js.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts +1 -1
- package/out/zero-client/src/client/zero-poke-handler.d.ts.map +1 -1
- package/out/zero-client/src/client/zero-poke-handler.js +205 -293
- package/out/zero-client/src/client/zero-poke-handler.js.map +1 -1
- package/out/zero-client/src/client/zero-rep.js +61 -68
- package/out/zero-client/src/client/zero-rep.js.map +1 -1
- package/out/zero-client/src/client/zero.d.ts.map +1 -1
- package/out/zero-client/src/client/zero.js +1367 -1834
- package/out/zero-client/src/client/zero.js.map +1 -1
- package/out/zero-client/src/mod.js +21 -0
- package/out/zero-client/src/util/nanoid.js +13 -18
- package/out/zero-client/src/util/nanoid.js.map +1 -1
- package/out/zero-client/src/util/socket.js +6 -5
- package/out/zero-client/src/util/socket.js.map +1 -1
- package/out/zero-pg/src/mod.js +10 -0
- package/out/zero-protocol/src/analyze-query-result.js +108 -148
- package/out/zero-protocol/src/analyze-query-result.js.map +1 -1
- package/out/zero-protocol/src/application-error.js +36 -34
- package/out/zero-protocol/src/application-error.js.map +1 -1
- package/out/zero-protocol/src/ast.js +236 -309
- package/out/zero-protocol/src/ast.js.map +1 -1
- package/out/zero-protocol/src/change-desired-queries.js +8 -13
- package/out/zero-protocol/src/change-desired-queries.js.map +1 -1
- package/out/zero-protocol/src/client-schema.js +21 -42
- package/out/zero-protocol/src/client-schema.js.map +1 -1
- package/out/zero-protocol/src/close-connection.js +20 -12
- package/out/zero-protocol/src/close-connection.js.map +1 -1
- package/out/zero-protocol/src/connect.js +37 -52
- package/out/zero-protocol/src/connect.js.map +1 -1
- package/out/zero-protocol/src/custom-queries.js +34 -65
- package/out/zero-protocol/src/custom-queries.js.map +1 -1
- package/out/zero-protocol/src/data.js +6 -9
- package/out/zero-protocol/src/data.js.map +1 -1
- package/out/zero-protocol/src/delete-clients.js +11 -17
- package/out/zero-protocol/src/delete-clients.js.map +1 -1
- package/out/zero-protocol/src/down.js +11 -23
- package/out/zero-protocol/src/down.js.map +1 -1
- package/out/zero-protocol/src/error-kind-enum.js +24 -41
- package/out/zero-protocol/src/error-kind-enum.js.map +1 -1
- package/out/zero-protocol/src/error-origin-enum.js +8 -9
- package/out/zero-protocol/src/error-origin-enum.js.map +1 -1
- package/out/zero-protocol/src/error-reason-enum.js +12 -17
- package/out/zero-protocol/src/error-reason-enum.js.map +1 -1
- package/out/zero-protocol/src/error.js +76 -152
- package/out/zero-protocol/src/error.js.map +1 -1
- package/out/zero-protocol/src/inspect-down.js +51 -74
- package/out/zero-protocol/src/inspect-down.js.map +1 -1
- package/out/zero-protocol/src/inspect-up.js +28 -46
- package/out/zero-protocol/src/inspect-up.js.map +1 -1
- package/out/zero-protocol/src/mutation-id.js +9 -9
- package/out/zero-protocol/src/mutation-id.js.map +1 -1
- package/out/zero-protocol/src/mutation-type-enum.js +7 -7
- package/out/zero-protocol/src/mutation-type-enum.js.map +1 -1
- package/out/zero-protocol/src/mutations-patch.js +21 -16
- package/out/zero-protocol/src/mutations-patch.js.map +1 -1
- package/out/zero-protocol/src/ping.js +8 -9
- package/out/zero-protocol/src/ping.js.map +1 -1
- package/out/zero-protocol/src/poke.js +53 -59
- package/out/zero-protocol/src/poke.js.map +1 -1
- package/out/zero-protocol/src/pong.js +8 -9
- package/out/zero-protocol/src/pong.js.map +1 -1
- package/out/zero-protocol/src/primary-key.js +9 -19
- package/out/zero-protocol/src/primary-key.js.map +1 -1
- package/out/zero-protocol/src/protocol-version.js +5 -11
- package/out/zero-protocol/src/protocol-version.js.map +1 -1
- package/out/zero-protocol/src/pull.js +16 -28
- package/out/zero-protocol/src/pull.js.map +1 -1
- package/out/zero-protocol/src/push.js +162 -209
- package/out/zero-protocol/src/push.js.map +1 -1
- package/out/zero-protocol/src/queries-patch.js +22 -30
- package/out/zero-protocol/src/queries-patch.js.map +1 -1
- package/out/zero-protocol/src/query-hash.js +14 -17
- package/out/zero-protocol/src/query-hash.js.map +1 -1
- package/out/zero-protocol/src/row-patch.js +23 -30
- package/out/zero-protocol/src/row-patch.js.map +1 -1
- package/out/zero-protocol/src/up.js +11 -22
- package/out/zero-protocol/src/up.js.map +1 -1
- package/out/zero-protocol/src/update-auth.js +8 -13
- package/out/zero-protocol/src/update-auth.js.map +1 -1
- package/out/zero-protocol/src/version.js +8 -9
- package/out/zero-protocol/src/version.js.map +1 -1
- package/out/zero-react/src/bindings.js +12 -0
- package/out/zero-react/src/mod.js +5 -0
- package/out/zero-react/src/use-connection-state.js +14 -11
- package/out/zero-react/src/use-connection-state.js.map +1 -1
- package/out/zero-react/src/use-query.js +283 -281
- package/out/zero-react/src/use-query.js.map +1 -1
- package/out/zero-react/src/use-zero-online.js +17 -11
- package/out/zero-react/src/use-zero-online.js.map +1 -1
- package/out/zero-react/src/zero-provider.js +53 -69
- package/out/zero-react/src/zero-provider.js.map +1 -1
- package/out/zero-react/src/zero.js +22 -0
- package/out/zero-schema/src/builder/relationship-builder.js +25 -21
- package/out/zero-schema/src/builder/relationship-builder.js.map +1 -1
- package/out/zero-schema/src/builder/schema-builder.js +51 -79
- package/out/zero-schema/src/builder/schema-builder.js.map +1 -1
- package/out/zero-schema/src/builder/table-builder.js +99 -116
- package/out/zero-schema/src/builder/table-builder.js.map +1 -1
- package/out/zero-schema/src/compiled-permissions.js +21 -25
- package/out/zero-schema/src/compiled-permissions.js.map +1 -1
- package/out/zero-schema/src/name-mapper.js +31 -47
- package/out/zero-schema/src/name-mapper.js.map +1 -1
- package/out/zero-schema/src/permissions.js +94 -181
- package/out/zero-schema/src/permissions.js.map +1 -1
- package/out/zero-schema/src/schema-config.js +26 -32
- package/out/zero-schema/src/schema-config.js.map +1 -1
- package/out/zero-server/src/adapters/drizzle.d.ts.map +1 -1
- package/out/zero-server/src/adapters/drizzle.js +79 -76
- package/out/zero-server/src/adapters/drizzle.js.map +1 -1
- package/out/zero-server/src/adapters/pg.d.ts.map +1 -1
- package/out/zero-server/src/adapters/pg.js +79 -55
- package/out/zero-server/src/adapters/pg.js.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.d.ts.map +1 -1
- package/out/zero-server/src/adapters/postgresjs.js +66 -40
- package/out/zero-server/src/adapters/postgresjs.js.map +1 -1
- package/out/zero-server/src/adapters/prisma.d.ts.map +1 -1
- package/out/zero-server/src/adapters/prisma.js +75 -55
- package/out/zero-server/src/adapters/prisma.js.map +1 -1
- package/out/zero-server/src/custom.d.ts.map +1 -1
- package/out/zero-server/src/custom.js +188 -265
- package/out/zero-server/src/custom.js.map +1 -1
- package/out/zero-server/src/logging.js +6 -5
- package/out/zero-server/src/logging.js.map +1 -1
- package/out/zero-server/src/mod.js +8 -0
- package/out/zero-server/src/pg-query-executor.js +14 -17
- package/out/zero-server/src/pg-query-executor.js.map +1 -1
- package/out/zero-server/src/process-mutations.js +293 -365
- package/out/zero-server/src/process-mutations.js.map +1 -1
- package/out/zero-server/src/push-processor.js +33 -49
- package/out/zero-server/src/push-processor.js.map +1 -1
- package/out/zero-server/src/queries/process-queries.js +106 -96
- package/out/zero-server/src/queries/process-queries.js.map +1 -1
- package/out/zero-server/src/schema.js +98 -144
- package/out/zero-server/src/schema.js.map +1 -1
- package/out/zero-server/src/zql-database.d.ts.map +1 -1
- package/out/zero-server/src/zql-database.js +54 -69
- package/out/zero-server/src/zql-database.js.map +1 -1
- package/out/zero-solid/src/bindings.js +12 -0
- package/out/zero-solid/src/mod.js +5 -0
- package/out/zero-solid/src/solid-view.js +135 -227
- package/out/zero-solid/src/solid-view.js.map +1 -1
- package/out/zero-solid/src/use-connection-state.js +18 -14
- package/out/zero-solid/src/use-connection-state.js.map +1 -1
- package/out/zero-solid/src/use-query.js +55 -100
- package/out/zero-solid/src/use-query.js.map +1 -1
- package/out/zero-solid/src/use-zero-online.js +18 -12
- package/out/zero-solid/src/use-zero-online.js.map +1 -1
- package/out/zero-solid/src/use-zero.js +65 -77
- package/out/zero-solid/src/use-zero.js.map +1 -1
- package/out/zero-solid/src/zero.js +22 -0
- package/out/zero-types/src/format.js +8 -7
- package/out/zero-types/src/format.js.map +1 -1
- package/out/zero-types/src/name-mapper.js +34 -47
- package/out/zero-types/src/name-mapper.js.map +1 -1
- package/out/zql/src/builder/builder.d.ts.map +1 -1
- package/out/zql/src/builder/builder.js +315 -476
- package/out/zql/src/builder/builder.js.map +1 -1
- package/out/zql/src/builder/debug-delegate.js +69 -74
- package/out/zql/src/builder/debug-delegate.js.map +1 -1
- package/out/zql/src/builder/filter.js +116 -140
- package/out/zql/src/builder/filter.js.map +1 -1
- package/out/zql/src/builder/like.js +41 -46
- package/out/zql/src/builder/like.js.map +1 -1
- package/out/zql/src/error.js +10 -9
- package/out/zql/src/error.js.map +1 -1
- package/out/zql/src/ivm/array-view.js +89 -91
- package/out/zql/src/ivm/array-view.js.map +1 -1
- package/out/zql/src/ivm/constraint.js +65 -74
- package/out/zql/src/ivm/constraint.js.map +1 -1
- package/out/zql/src/ivm/data.js +61 -48
- package/out/zql/src/ivm/data.js.map +1 -1
- package/out/zql/src/ivm/exists.js +164 -213
- package/out/zql/src/ivm/exists.js.map +1 -1
- package/out/zql/src/ivm/fan-in.js +62 -59
- package/out/zql/src/ivm/fan-in.js.map +1 -1
- package/out/zql/src/ivm/fan-out.js +52 -61
- package/out/zql/src/ivm/fan-out.js.map +1 -1
- package/out/zql/src/ivm/filter-operators.js +91 -96
- package/out/zql/src/ivm/filter-operators.js.map +1 -1
- package/out/zql/src/ivm/filter-push.js +22 -26
- package/out/zql/src/ivm/filter-push.js.map +1 -1
- package/out/zql/src/ivm/filter.js +41 -35
- package/out/zql/src/ivm/filter.js.map +1 -1
- package/out/zql/src/ivm/flipped-join.js +282 -391
- package/out/zql/src/ivm/flipped-join.js.map +1 -1
- package/out/zql/src/ivm/join-utils.js +85 -115
- package/out/zql/src/ivm/join-utils.js.map +1 -1
- package/out/zql/src/ivm/join.js +162 -231
- package/out/zql/src/ivm/join.js.map +1 -1
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js +21 -25
- package/out/zql/src/ivm/maybe-split-and-push-edit-change.js.map +1 -1
- package/out/zql/src/ivm/memory-source.js +364 -503
- package/out/zql/src/ivm/memory-source.js.map +1 -1
- package/out/zql/src/ivm/memory-storage.js +33 -34
- package/out/zql/src/ivm/memory-storage.js.map +1 -1
- package/out/zql/src/ivm/operator.js +13 -15
- package/out/zql/src/ivm/operator.js.map +1 -1
- package/out/zql/src/ivm/push-accumulated.js +267 -270
- package/out/zql/src/ivm/push-accumulated.js.map +1 -1
- package/out/zql/src/ivm/skip.js +91 -104
- package/out/zql/src/ivm/skip.js.map +1 -1
- package/out/zql/src/ivm/stream.js +10 -10
- package/out/zql/src/ivm/stream.js.map +1 -1
- package/out/zql/src/ivm/take.js +422 -569
- package/out/zql/src/ivm/take.js.map +1 -1
- package/out/zql/src/ivm/union-fan-in.js +157 -231
- package/out/zql/src/ivm/union-fan-in.js.map +1 -1
- package/out/zql/src/ivm/union-fan-out.js +38 -43
- package/out/zql/src/ivm/union-fan-out.js.map +1 -1
- package/out/zql/src/ivm/view-apply-change.js +166 -255
- package/out/zql/src/ivm/view-apply-change.js.map +1 -1
- package/out/zql/src/mutate/crud.js +35 -34
- package/out/zql/src/mutate/crud.js.map +1 -1
- package/out/zql/src/mutate/custom.d.ts.map +1 -1
- package/out/zql/src/mutate/custom.js +7 -11
- package/out/zql/src/mutate/custom.js.map +1 -1
- package/out/zql/src/mutate/mutator-registry.js +67 -71
- package/out/zql/src/mutate/mutator-registry.js.map +1 -1
- package/out/zql/src/mutate/mutator.js +26 -25
- package/out/zql/src/mutate/mutator.js.map +1 -1
- package/out/zql/src/planner/planner-builder.js +134 -239
- package/out/zql/src/planner/planner-builder.js.map +1 -1
- package/out/zql/src/planner/planner-connection.js +222 -212
- package/out/zql/src/planner/planner-connection.js.map +1 -1
- package/out/zql/src/planner/planner-constraint.js +15 -7
- package/out/zql/src/planner/planner-constraint.js.map +1 -1
- package/out/zql/src/planner/planner-debug.js +199 -224
- package/out/zql/src/planner/planner-debug.js.map +1 -1
- package/out/zql/src/planner/planner-fan-in.js +146 -162
- package/out/zql/src/planner/planner-fan-in.js.map +1 -1
- package/out/zql/src/planner/planner-fan-out.js +62 -74
- package/out/zql/src/planner/planner-fan-out.js.map +1 -1
- package/out/zql/src/planner/planner-graph.js +302 -334
- package/out/zql/src/planner/planner-graph.js.map +1 -1
- package/out/zql/src/planner/planner-join.js +255 -240
- package/out/zql/src/planner/planner-join.js.map +1 -1
- package/out/zql/src/planner/planner-node.js +10 -6
- package/out/zql/src/planner/planner-node.js.map +1 -1
- package/out/zql/src/planner/planner-source.js +15 -22
- package/out/zql/src/planner/planner-source.js.map +1 -1
- package/out/zql/src/planner/planner-terminus.js +28 -28
- package/out/zql/src/planner/planner-terminus.js.map +1 -1
- package/out/zql/src/query/complete-ordering.js +37 -61
- package/out/zql/src/query/complete-ordering.js.map +1 -1
- package/out/zql/src/query/create-builder.js +14 -22
- package/out/zql/src/query/create-builder.js.map +1 -1
- package/out/zql/src/query/error.js +10 -12
- package/out/zql/src/query/error.js.map +1 -1
- package/out/zql/src/query/escape-like.js +6 -5
- package/out/zql/src/query/escape-like.js.map +1 -1
- package/out/zql/src/query/expression.js +138 -157
- package/out/zql/src/query/expression.js.map +1 -1
- package/out/zql/src/query/measure-push-operator.js +35 -38
- package/out/zql/src/query/measure-push-operator.js.map +1 -1
- package/out/zql/src/query/metrics-delegate.js +7 -7
- package/out/zql/src/query/metrics-delegate.js.map +1 -1
- package/out/zql/src/query/named.js +52 -51
- package/out/zql/src/query/named.js.map +1 -1
- package/out/zql/src/query/query-delegate-base.js +190 -238
- package/out/zql/src/query/query-delegate-base.js.map +1 -1
- package/out/zql/src/query/query-impl.d.ts.map +1 -1
- package/out/zql/src/query/query-impl.js +271 -405
- package/out/zql/src/query/query-impl.js.map +1 -1
- package/out/zql/src/query/query-internals.js +16 -8
- package/out/zql/src/query/query-internals.js.map +1 -1
- package/out/zql/src/query/query-registry.js +83 -98
- package/out/zql/src/query/query-registry.js.map +1 -1
- package/out/zql/src/query/query.d.ts.map +1 -1
- package/out/zql/src/query/query.js +2 -0
- package/out/zql/src/query/runnable-query-impl.d.ts.map +1 -1
- package/out/zql/src/query/runnable-query-impl.js +30 -55
- package/out/zql/src/query/runnable-query-impl.js.map +1 -1
- package/out/zql/src/query/static-query.js +7 -14
- package/out/zql/src/query/static-query.js.map +1 -1
- package/out/zql/src/query/ttl.js +45 -67
- package/out/zql/src/query/ttl.js.map +1 -1
- package/out/zql/src/query/validate-input.js +23 -20
- package/out/zql/src/query/validate-input.js.map +1 -1
- package/out/zqlite/src/database-storage.js +99 -103
- package/out/zqlite/src/database-storage.js.map +1 -1
- package/out/zqlite/src/db.js +206 -249
- package/out/zqlite/src/db.js.map +1 -1
- package/out/zqlite/src/explain-queries.js +11 -13
- package/out/zqlite/src/explain-queries.js.map +1 -1
- package/out/zqlite/src/internal/sql-inline.js +54 -37
- package/out/zqlite/src/internal/sql-inline.js.map +1 -1
- package/out/zqlite/src/internal/sql.js +17 -15
- package/out/zqlite/src/internal/sql.js.map +1 -1
- package/out/zqlite/src/internal/statement-cache.js +117 -92
- package/out/zqlite/src/internal/statement-cache.js.map +1 -1
- package/out/zqlite/src/mod.js +5 -0
- package/out/zqlite/src/query-builder.js +81 -172
- package/out/zqlite/src/query-builder.js.map +1 -1
- package/out/zqlite/src/query-delegate.js +45 -55
- package/out/zqlite/src/query-delegate.js.map +1 -1
- package/out/zqlite/src/resolve-scalar-subqueries.js +134 -124
- package/out/zqlite/src/resolve-scalar-subqueries.js.map +1 -1
- package/out/zqlite/src/sqlite-cost-model.js +92 -97
- package/out/zqlite/src/sqlite-cost-model.js.map +1 -1
- package/out/zqlite/src/sqlite-stat-fanout.js +304 -286
- package/out/zqlite/src/sqlite-stat-fanout.js.map +1 -1
- package/out/zqlite/src/table-source.js +281 -455
- package/out/zqlite/src/table-source.js.map +1 -1
- package/package.json +8 -7
- package/out/replicache/src/db/index-operation-enum.js +0 -7
- package/out/replicache/src/db/index-operation-enum.js.map +0 -1
- package/out/replicache/src/db/meta-type-enum.js +0 -7
- package/out/replicache/src/db/meta-type-enum.js.map +0 -1
- package/out/replicache/src/format-version-enum.js +0 -11
- package/out/replicache/src/format-version-enum.js.map +0 -1
- package/out/replicache/src/http-status-unauthorized.js +0 -5
- package/out/replicache/src/http-status-unauthorized.js.map +0 -1
- package/out/replicache/src/invoke-kind-enum.js +0 -7
- package/out/replicache/src/invoke-kind-enum.js.map +0 -1
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js +0 -9
- package/out/replicache/src/sync/handle-pull-response-result-type-enum.js.map +0 -1
- package/out/zero/package.json.js +0 -9
- package/out/zero/package.json.js.map +0 -1
- package/out/zero/src/adapters/drizzle.js.map +0 -1
- package/out/zero/src/adapters/pg.js.map +0 -1
- package/out/zero/src/adapters/postgresjs.js.map +0 -1
- package/out/zero/src/adapters/prisma.js.map +0 -1
- package/out/zero/src/analyze-query.js.map +0 -1
- package/out/zero/src/ast-to-zql.js.map +0 -1
- package/out/zero/src/bindings.js.map +0 -1
- package/out/zero/src/change-protocol/v0.js.map +0 -1
- package/out/zero/src/cli.js.map +0 -1
- package/out/zero/src/deploy-permissions.js.map +0 -1
- package/out/zero/src/expo-sqlite.js.map +0 -1
- package/out/zero/src/op-sqlite.js.map +0 -1
- package/out/zero/src/pg.js.map +0 -1
- package/out/zero/src/react.js.map +0 -1
- package/out/zero/src/server.js.map +0 -1
- package/out/zero/src/solid.js.map +0 -1
- package/out/zero/src/sqlite.js.map +0 -1
- package/out/zero/src/transform-query.js.map +0 -1
- package/out/zero/src/zero.js.map +0 -1
- package/out/zero/src/zqlite.js.map +0 -1
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js +0 -11
- package/out/zero-cache/src/db/postgres-replica-identity-enum.js.map +0 -1
- package/out/zero-cache/src/db/postgres-type-class-enum.js +0 -17
- package/out/zero-cache/src/db/postgres-type-class-enum.js.map +0 -1
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js +0 -9
- package/out/zero-cache/src/services/change-streamer/error-type-enum.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rebase.js","sources":["../../../../../replicache/src/db/rebase.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport type {Write as DagWrite} from '../dag/store.ts';\nimport * as FormatVersion from '../format-version-enum.ts';\nimport type {Hash} from '../hash.ts';\nimport type {ZeroTxData} from '../replicache-options.ts';\nimport type {ClientID} from '../sync/ids.ts';\nimport {WriteTransactionImpl} from '../transactions.ts';\nimport type {MutatorDefs} from '../types.ts';\nimport {\n type Commit,\n type LocalMeta,\n type LocalMetaDD31,\n type Meta,\n assertLocalMetaDD31,\n commitFromHash,\n isLocalMetaDD31,\n} from './commit.ts';\nimport type {Write} from './write.ts';\nimport {newWriteLocal} from './write.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nasync function rebaseMutation(\n mutation: Commit<LocalMetaDD31>,\n dagWrite: DagWrite,\n basisHash: Hash,\n mutators: MutatorDefs,\n lc: LogContext,\n mutationClientID: ClientID,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<Write> {\n const localMeta = mutation.meta;\n const name = localMeta.mutatorName;\n if (isLocalMetaDD31(localMeta)) {\n assert(\n localMeta.clientID === mutationClientID,\n 'mutationClientID must match clientID of LocalMeta',\n );\n }\n const maybeMutatorImpl = mutators[name];\n if (!maybeMutatorImpl) {\n // Developers must not remove mutator names from code deployed with the\n // same schemaVersion because Replicache needs to be able to replay\n // mutations during pull.\n //\n // If we detect that this has happened, stub in a no-op mutator so that at\n // least sync can move forward. Note that the server-side mutation will\n // still get sent. This doesn't remove the queued local mutation, it just\n // removes its visible effects.\n lc.error?.(`Cannot rebase unknown mutator ${name}`);\n }\n const mutatorImpl =\n maybeMutatorImpl ||\n (async () => {\n // no op\n });\n\n const args = localMeta.mutatorArgsJSON;\n\n const basisCommit = await commitFromHash(basisHash, dagWrite);\n const nextMutationID = await basisCommit.getNextMutationID(\n mutationClientID,\n dagWrite,\n );\n if (nextMutationID !== localMeta.mutationID) {\n throw new Error(\n `Inconsistent mutation ID: original: ${localMeta.mutationID}, next: ${nextMutationID} - mutationClientID: ${mutationClientID} mutatorName: ${name}`,\n );\n }\n\n if (formatVersion >= FormatVersion.DD31) {\n assertLocalMetaDD31(localMeta);\n }\n\n const dbWrite = await newWriteLocal(\n basisHash,\n name,\n args,\n mutation.chunk.hash,\n dagWrite,\n localMeta.timestamp,\n mutationClientID,\n formatVersion,\n );\n\n const tx = new WriteTransactionImpl(\n mutationClientID,\n await dbWrite.getMutationID(),\n 'rebase',\n zeroData,\n dbWrite,\n lc,\n );\n await mutatorImpl(tx, args);\n return dbWrite;\n}\n\nexport async function rebaseMutationAndPutCommit(\n mutation: Commit<LocalMeta>,\n dagWrite: DagWrite,\n basis: Hash,\n mutators: MutatorDefs,\n lc: LogContext,\n // TODO(greg): mutationClientID can be retrieved from mutation if LocalMeta\n // is a LocalMetaDD31. As part of DD31 cleanup we can remove this arg.\n mutationClientID: ClientID,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<Commit<Meta>> {\n const tx = await rebaseMutation(\n mutation,\n dagWrite,\n basis,\n mutators,\n lc,\n mutationClientID,\n formatVersion,\n zeroData,\n );\n return tx.putCommit();\n}\n\nexport async function rebaseMutationAndCommit(\n mutation: Commit<LocalMeta>,\n dagWrite: DagWrite,\n basis: Hash,\n headName: string,\n mutators: MutatorDefs,\n lc: LogContext,\n // TODO(greg): mutationClientID can be retrieved from mutation if LocalMeta\n // is a LocalMetaDD31. As part of DD31 cleanup we can remove this arg.\n mutationClientID: ClientID,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<Hash> {\n const dbWrite = await rebaseMutation(\n mutation,\n dagWrite,\n basis,\n mutators,\n lc,\n mutationClientID,\n formatVersion,\n zeroData,\n );\n return dbWrite.commit(headName);\n}\n"],"
|
|
1
|
+
{"version":3,"file":"rebase.js","names":[],"sources":["../../../../../replicache/src/db/rebase.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport type {Write as DagWrite} from '../dag/store.ts';\nimport * as FormatVersion from '../format-version-enum.ts';\nimport type {Hash} from '../hash.ts';\nimport type {ZeroTxData} from '../replicache-options.ts';\nimport type {ClientID} from '../sync/ids.ts';\nimport {WriteTransactionImpl} from '../transactions.ts';\nimport type {MutatorDefs} from '../types.ts';\nimport {\n type Commit,\n type LocalMeta,\n type LocalMetaDD31,\n type Meta,\n assertLocalMetaDD31,\n commitFromHash,\n isLocalMetaDD31,\n} from './commit.ts';\nimport type {Write} from './write.ts';\nimport {newWriteLocal} from './write.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nasync function rebaseMutation(\n mutation: Commit<LocalMetaDD31>,\n dagWrite: DagWrite,\n basisHash: Hash,\n mutators: MutatorDefs,\n lc: LogContext,\n mutationClientID: ClientID,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<Write> {\n const localMeta = mutation.meta;\n const name = localMeta.mutatorName;\n if (isLocalMetaDD31(localMeta)) {\n assert(\n localMeta.clientID === mutationClientID,\n 'mutationClientID must match clientID of LocalMeta',\n );\n }\n const maybeMutatorImpl = mutators[name];\n if (!maybeMutatorImpl) {\n // Developers must not remove mutator names from code deployed with the\n // same schemaVersion because Replicache needs to be able to replay\n // mutations during pull.\n //\n // If we detect that this has happened, stub in a no-op mutator so that at\n // least sync can move forward. Note that the server-side mutation will\n // still get sent. This doesn't remove the queued local mutation, it just\n // removes its visible effects.\n lc.error?.(`Cannot rebase unknown mutator ${name}`);\n }\n const mutatorImpl =\n maybeMutatorImpl ||\n (async () => {\n // no op\n });\n\n const args = localMeta.mutatorArgsJSON;\n\n const basisCommit = await commitFromHash(basisHash, dagWrite);\n const nextMutationID = await basisCommit.getNextMutationID(\n mutationClientID,\n dagWrite,\n );\n if (nextMutationID !== localMeta.mutationID) {\n throw new Error(\n `Inconsistent mutation ID: original: ${localMeta.mutationID}, next: ${nextMutationID} - mutationClientID: ${mutationClientID} mutatorName: ${name}`,\n );\n }\n\n if (formatVersion >= FormatVersion.DD31) {\n assertLocalMetaDD31(localMeta);\n }\n\n const dbWrite = await newWriteLocal(\n basisHash,\n name,\n args,\n mutation.chunk.hash,\n dagWrite,\n localMeta.timestamp,\n mutationClientID,\n formatVersion,\n );\n\n const tx = new WriteTransactionImpl(\n mutationClientID,\n await dbWrite.getMutationID(),\n 'rebase',\n zeroData,\n dbWrite,\n lc,\n );\n await mutatorImpl(tx, args);\n return dbWrite;\n}\n\nexport async function rebaseMutationAndPutCommit(\n mutation: Commit<LocalMeta>,\n dagWrite: DagWrite,\n basis: Hash,\n mutators: MutatorDefs,\n lc: LogContext,\n // TODO(greg): mutationClientID can be retrieved from mutation if LocalMeta\n // is a LocalMetaDD31. As part of DD31 cleanup we can remove this arg.\n mutationClientID: ClientID,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<Commit<Meta>> {\n const tx = await rebaseMutation(\n mutation,\n dagWrite,\n basis,\n mutators,\n lc,\n mutationClientID,\n formatVersion,\n zeroData,\n );\n return tx.putCommit();\n}\n\nexport async function rebaseMutationAndCommit(\n mutation: Commit<LocalMeta>,\n dagWrite: DagWrite,\n basis: Hash,\n headName: string,\n mutators: MutatorDefs,\n lc: LogContext,\n // TODO(greg): mutationClientID can be retrieved from mutation if LocalMeta\n // is a LocalMetaDD31. As part of DD31 cleanup we can remove this arg.\n mutationClientID: ClientID,\n formatVersion: FormatVersion,\n zeroData: ZeroTxData | undefined,\n): Promise<Hash> {\n const dbWrite = await rebaseMutation(\n mutation,\n dagWrite,\n basis,\n mutators,\n lc,\n mutationClientID,\n formatVersion,\n zeroData,\n );\n return dbWrite.commit(headName);\n}\n"],"mappings":";;;;;AAwBA,eAAe,eACb,UACA,UACA,WACA,UACA,IACA,kBACA,eACA,UACgB;CAChB,MAAM,YAAY,SAAS;CAC3B,MAAM,OAAO,UAAU;AACvB,KAAI,gBAAgB,UAAU,CAC5B,QACE,UAAU,aAAa,kBACvB,oDACD;CAEH,MAAM,mBAAmB,SAAS;AAClC,KAAI,CAAC,iBASH,IAAG,QAAQ,iCAAiC,OAAO;CAErD,MAAM,cACJ,qBACC,YAAY;CAIf,MAAM,OAAO,UAAU;CAGvB,MAAM,iBAAiB,OADH,MAAM,eAAe,WAAW,SAAS,EACpB,kBACvC,kBACA,SACD;AACD,KAAI,mBAAmB,UAAU,WAC/B,OAAM,IAAI,MACR,uCAAuC,UAAU,WAAW,UAAU,eAAe,uBAAuB,iBAAiB,gBAAgB,OAC9I;AAGH,KAAI,iBAAiB,EACnB,qBAAoB,UAAU;CAGhC,MAAM,UAAU,MAAM,cACpB,WACA,MACA,MACA,SAAS,MAAM,MACf,UACA,UAAU,WACV,kBACA,cACD;AAUD,OAAM,YARK,IAAI,qBACb,kBACA,MAAM,QAAQ,eAAe,EAC7B,UACA,UACA,SACA,GACD,EACqB,KAAK;AAC3B,QAAO;;AAGT,eAAsB,2BACpB,UACA,UACA,OACA,UACA,IAGA,kBACA,eACA,UACuB;AAWvB,SAVW,MAAM,eACf,UACA,UACA,OACA,UACA,IACA,kBACA,eACA,SACD,EACS,WAAW;;AAGvB,eAAsB,wBACpB,UACA,UACA,OACA,UACA,UACA,IAGA,kBACA,eACA,UACe;AAWf,SAVgB,MAAM,eACpB,UACA,UACA,OACA,UACA,IACA,kBACA,eACA,SACD,EACc,OAAO,SAAS"}
|
|
@@ -1,311 +1,177 @@
|
|
|
1
1
|
import { assert } from "../../../shared/src/asserts.js";
|
|
2
|
-
import {
|
|
2
|
+
import { emptyHash } from "../hash.js";
|
|
3
3
|
import { BTreeRead, allEntriesAsDiff } from "../btree/read.js";
|
|
4
|
+
import { baseSnapshotHashFromHash, commitFromHash, getMutationID, newLocalDD31, newSnapshotDD31 } from "./commit.js";
|
|
5
|
+
import { diff } from "../btree/diff.js";
|
|
4
6
|
import { BTreeWrite } from "../btree/write.js";
|
|
5
|
-
import { DD31 } from "../format-version-enum.js";
|
|
6
|
-
import { emptyHash } from "../hash.js";
|
|
7
7
|
import { lazy } from "../lazy.js";
|
|
8
|
-
import {
|
|
9
|
-
import { commitFromHash, getMutationID, newSnapshotDD31, newLocalDD31, baseSnapshotHashFromHash } from "./commit.js";
|
|
10
|
-
import { Add, Remove } from "./index-operation-enum.js";
|
|
11
|
-
import { indexValue, IndexWrite } from "./index.js";
|
|
12
|
-
import { SnapshotDD31, LocalDD31 } from "./meta-type-enum.js";
|
|
8
|
+
import { IndexWrite, indexValue } from "./index.js";
|
|
13
9
|
import { Read, readIndexesForRead } from "./read.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
await this.#dagWrite.putChunk(commit.chunk);
|
|
126
|
-
return commit;
|
|
127
|
-
}
|
|
128
|
-
// Return value is the hash of the new commit.
|
|
129
|
-
async commit(headName) {
|
|
130
|
-
const commit = await this.putCommit();
|
|
131
|
-
const commitHash = commit.chunk.hash;
|
|
132
|
-
await this.#dagWrite.setHead(headName, commitHash);
|
|
133
|
-
await this.#dagWrite.commit();
|
|
134
|
-
return commitHash;
|
|
135
|
-
}
|
|
136
|
-
async commitWithDiffs(headName, diffConfig) {
|
|
137
|
-
const commit = this.putCommit();
|
|
138
|
-
const diffMap = await this.#generateDiffs(diffConfig);
|
|
139
|
-
const commitHash = (await commit).chunk.hash;
|
|
140
|
-
await this.#dagWrite.setHead(headName, commitHash);
|
|
141
|
-
await this.#dagWrite.commit();
|
|
142
|
-
return [commitHash, diffMap];
|
|
143
|
-
}
|
|
144
|
-
async #generateDiffs(diffConfig) {
|
|
145
|
-
const diffsMap = new DiffsMap();
|
|
146
|
-
if (!diffConfig.shouldComputeDiffs()) {
|
|
147
|
-
return diffsMap;
|
|
148
|
-
}
|
|
149
|
-
let valueDiff = [];
|
|
150
|
-
if (this.#basis) {
|
|
151
|
-
const basisMap = new BTreeRead(
|
|
152
|
-
this.#dagWrite,
|
|
153
|
-
this.#formatVersion,
|
|
154
|
-
this.#basis.valueHash
|
|
155
|
-
);
|
|
156
|
-
valueDiff = await diff(basisMap, this.map);
|
|
157
|
-
}
|
|
158
|
-
diffsMap.set("", valueDiff);
|
|
159
|
-
let basisIndexes;
|
|
160
|
-
if (this.#basis) {
|
|
161
|
-
basisIndexes = readIndexesForRead(
|
|
162
|
-
this.#basis,
|
|
163
|
-
this.#dagWrite,
|
|
164
|
-
this.#formatVersion
|
|
165
|
-
);
|
|
166
|
-
} else {
|
|
167
|
-
basisIndexes = /* @__PURE__ */ new Map();
|
|
168
|
-
}
|
|
169
|
-
for (const [name, index] of this.indexes) {
|
|
170
|
-
if (!diffConfig.shouldComputeDiffsForIndex(name)) {
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
const basisIndex = basisIndexes.get(name);
|
|
174
|
-
assert(index !== basisIndex, "Expected index to differ from basisIndex");
|
|
175
|
-
const indexDiffResult = await (basisIndex ? diff(basisIndex.map, index.map) : (
|
|
176
|
-
// No basis. All keys are new.
|
|
177
|
-
allEntriesAsDiff(index.map, "add")
|
|
178
|
-
));
|
|
179
|
-
diffsMap.set(name, indexDiffResult);
|
|
180
|
-
}
|
|
181
|
-
for (const [name, basisIndex] of basisIndexes) {
|
|
182
|
-
if (!this.indexes.has(name) && diffConfig.shouldComputeDiffsForIndex(name)) {
|
|
183
|
-
const indexDiffResult = await allEntriesAsDiff(basisIndex.map, "del");
|
|
184
|
-
diffsMap.set(name, indexDiffResult);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
return diffsMap;
|
|
188
|
-
}
|
|
189
|
-
close() {
|
|
190
|
-
this.#dagWrite.release();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
10
|
+
import { DiffsMap } from "../sync/diff.js";
|
|
11
|
+
//#region ../replicache/src/db/write.ts
|
|
12
|
+
var Write = class extends Read {
|
|
13
|
+
#dagWrite;
|
|
14
|
+
#basis;
|
|
15
|
+
#meta;
|
|
16
|
+
#clientID;
|
|
17
|
+
#formatVersion;
|
|
18
|
+
constructor(dagWrite, map, basis, meta, indexes, clientID, formatVersion) {
|
|
19
|
+
super(dagWrite, map, indexes);
|
|
20
|
+
this.#dagWrite = dagWrite;
|
|
21
|
+
this.#basis = basis;
|
|
22
|
+
this.#meta = meta;
|
|
23
|
+
this.#clientID = clientID;
|
|
24
|
+
this.#formatVersion = formatVersion;
|
|
25
|
+
if (basis === void 0) assert(meta.basisHash === emptyHash, "Expected basisHash to be emptyHash when basis is undefined");
|
|
26
|
+
else assert(meta.basisHash === basis.chunk.hash, "Expected meta.basisHash to equal basis.chunk.hash");
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The value needs to be frozen since it is kept in memory and used later for
|
|
30
|
+
* comparison as well as returned in `get`.
|
|
31
|
+
*/
|
|
32
|
+
async put(lc, key, value) {
|
|
33
|
+
const oldVal = lazy(() => this.map.get(key));
|
|
34
|
+
await updateIndexes(lc, this.indexes, key, oldVal, value);
|
|
35
|
+
await this.map.put(key, value);
|
|
36
|
+
}
|
|
37
|
+
getMutationID() {
|
|
38
|
+
return getMutationID(this.#clientID, this.#dagWrite, this.#meta);
|
|
39
|
+
}
|
|
40
|
+
async del(lc, key) {
|
|
41
|
+
const oldVal = lazy(() => this.map.get(key));
|
|
42
|
+
if (oldVal !== void 0) await updateIndexes(lc, this.indexes, key, oldVal, void 0);
|
|
43
|
+
return this.map.del(key);
|
|
44
|
+
}
|
|
45
|
+
async clear() {
|
|
46
|
+
await this.map.clear();
|
|
47
|
+
const ps = [];
|
|
48
|
+
for (const idx of this.indexes.values()) ps.push(idx.clear());
|
|
49
|
+
await Promise.all(ps);
|
|
50
|
+
}
|
|
51
|
+
async putCommit() {
|
|
52
|
+
const valueHash = await this.map.flush();
|
|
53
|
+
const indexRecords = [];
|
|
54
|
+
for (const index of this.indexes.values()) {
|
|
55
|
+
const valueHash = await index.flush();
|
|
56
|
+
const indexRecord = {
|
|
57
|
+
definition: index.meta.definition,
|
|
58
|
+
valueHash
|
|
59
|
+
};
|
|
60
|
+
indexRecords.push(indexRecord);
|
|
61
|
+
}
|
|
62
|
+
let commit;
|
|
63
|
+
const meta = this.#meta;
|
|
64
|
+
switch (meta.type) {
|
|
65
|
+
case 4: {
|
|
66
|
+
assert(this.#formatVersion >= 5, "Expected formatVersion >= DD31 for LocalDD31 commit");
|
|
67
|
+
const { basisHash, mutationID, mutatorName, mutatorArgsJSON, originalHash, timestamp } = meta;
|
|
68
|
+
commit = newLocalDD31(this.#dagWrite.createChunk, basisHash, await baseSnapshotHashFromHash(basisHash, this.#dagWrite), mutationID, mutatorName, mutatorArgsJSON, originalHash, valueHash, indexRecords, timestamp, this.#clientID);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case 5: {
|
|
72
|
+
assert(this.#formatVersion > 5, "Expected formatVersion > DD31 for SnapshotDD31 commit");
|
|
73
|
+
const { basisHash, lastMutationIDs, cookieJSON } = meta;
|
|
74
|
+
commit = newSnapshotDD31(this.#dagWrite.createChunk, basisHash, lastMutationIDs, cookieJSON, valueHash, indexRecords);
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
await this.#dagWrite.putChunk(commit.chunk);
|
|
79
|
+
return commit;
|
|
80
|
+
}
|
|
81
|
+
async commit(headName) {
|
|
82
|
+
const commitHash = (await this.putCommit()).chunk.hash;
|
|
83
|
+
await this.#dagWrite.setHead(headName, commitHash);
|
|
84
|
+
await this.#dagWrite.commit();
|
|
85
|
+
return commitHash;
|
|
86
|
+
}
|
|
87
|
+
async commitWithDiffs(headName, diffConfig) {
|
|
88
|
+
const commit = this.putCommit();
|
|
89
|
+
const diffMap = await this.#generateDiffs(diffConfig);
|
|
90
|
+
const commitHash = (await commit).chunk.hash;
|
|
91
|
+
await this.#dagWrite.setHead(headName, commitHash);
|
|
92
|
+
await this.#dagWrite.commit();
|
|
93
|
+
return [commitHash, diffMap];
|
|
94
|
+
}
|
|
95
|
+
async #generateDiffs(diffConfig) {
|
|
96
|
+
const diffsMap = new DiffsMap();
|
|
97
|
+
if (!diffConfig.shouldComputeDiffs()) return diffsMap;
|
|
98
|
+
let valueDiff = [];
|
|
99
|
+
if (this.#basis) valueDiff = await diff(new BTreeRead(this.#dagWrite, this.#formatVersion, this.#basis.valueHash), this.map);
|
|
100
|
+
diffsMap.set("", valueDiff);
|
|
101
|
+
let basisIndexes;
|
|
102
|
+
if (this.#basis) basisIndexes = readIndexesForRead(this.#basis, this.#dagWrite, this.#formatVersion);
|
|
103
|
+
else basisIndexes = /* @__PURE__ */ new Map();
|
|
104
|
+
for (const [name, index] of this.indexes) {
|
|
105
|
+
if (!diffConfig.shouldComputeDiffsForIndex(name)) continue;
|
|
106
|
+
const basisIndex = basisIndexes.get(name);
|
|
107
|
+
assert(index !== basisIndex, "Expected index to differ from basisIndex");
|
|
108
|
+
const indexDiffResult = await (basisIndex ? diff(basisIndex.map, index.map) : allEntriesAsDiff(index.map, "add"));
|
|
109
|
+
diffsMap.set(name, indexDiffResult);
|
|
110
|
+
}
|
|
111
|
+
for (const [name, basisIndex] of basisIndexes) if (!this.indexes.has(name) && diffConfig.shouldComputeDiffsForIndex(name)) {
|
|
112
|
+
const indexDiffResult = await allEntriesAsDiff(basisIndex.map, "del");
|
|
113
|
+
diffsMap.set(name, indexDiffResult);
|
|
114
|
+
}
|
|
115
|
+
return diffsMap;
|
|
116
|
+
}
|
|
117
|
+
close() {
|
|
118
|
+
this.#dagWrite.release();
|
|
119
|
+
}
|
|
120
|
+
};
|
|
193
121
|
async function newWriteLocal(basisHash, mutatorName, mutatorArgsJSON, originalHash, dagWrite, timestamp, clientID, formatVersion) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
mutatorName,
|
|
211
|
-
mutatorArgsJSON,
|
|
212
|
-
mutationID,
|
|
213
|
-
originalHash,
|
|
214
|
-
timestamp,
|
|
215
|
-
clientID
|
|
216
|
-
},
|
|
217
|
-
indexes,
|
|
218
|
-
clientID,
|
|
219
|
-
formatVersion
|
|
220
|
-
);
|
|
122
|
+
const basis = await commitFromHash(basisHash, dagWrite);
|
|
123
|
+
const bTreeWrite = new BTreeWrite(dagWrite, formatVersion, basis.valueHash);
|
|
124
|
+
const mutationID = await basis.getNextMutationID(clientID, dagWrite);
|
|
125
|
+
const indexes = readIndexesForWrite(basis, dagWrite, formatVersion);
|
|
126
|
+
assert(formatVersion >= 5, "Expected formatVersion >= DD31 for newWriteLocal");
|
|
127
|
+
return new Write(dagWrite, bTreeWrite, basis, {
|
|
128
|
+
type: 4,
|
|
129
|
+
basisHash,
|
|
130
|
+
baseSnapshotHash: await baseSnapshotHashFromHash(basisHash, dagWrite),
|
|
131
|
+
mutatorName,
|
|
132
|
+
mutatorArgsJSON,
|
|
133
|
+
mutationID,
|
|
134
|
+
originalHash,
|
|
135
|
+
timestamp,
|
|
136
|
+
clientID
|
|
137
|
+
}, indexes, clientID, formatVersion);
|
|
221
138
|
}
|
|
222
139
|
async function newWriteSnapshotDD31(basisHash, lastMutationIDs, cookieJSON, dagWrite, clientID, formatVersion) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
readIndexesForWrite(basis, dagWrite, formatVersion),
|
|
231
|
-
clientID,
|
|
232
|
-
formatVersion
|
|
233
|
-
);
|
|
140
|
+
const basis = await commitFromHash(basisHash, dagWrite);
|
|
141
|
+
return new Write(dagWrite, new BTreeWrite(dagWrite, formatVersion, basis.valueHash), basis, {
|
|
142
|
+
basisHash,
|
|
143
|
+
type: 5,
|
|
144
|
+
lastMutationIDs,
|
|
145
|
+
cookieJSON
|
|
146
|
+
}, readIndexesForWrite(basis, dagWrite, formatVersion), clientID, formatVersion);
|
|
234
147
|
}
|
|
235
148
|
async function updateIndexes(lc, indexes, key, oldValGetter, newVal) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
Remove,
|
|
247
|
-
key,
|
|
248
|
-
oldVal,
|
|
249
|
-
idx.meta.definition.jsonPointer,
|
|
250
|
-
idx.meta.definition.allowEmpty ?? false
|
|
251
|
-
)
|
|
252
|
-
);
|
|
253
|
-
}
|
|
254
|
-
if (newVal !== void 0) {
|
|
255
|
-
ps.push(
|
|
256
|
-
indexValue(
|
|
257
|
-
lc,
|
|
258
|
-
idx.map,
|
|
259
|
-
Add,
|
|
260
|
-
key,
|
|
261
|
-
newVal,
|
|
262
|
-
idx.meta.definition.jsonPointer,
|
|
263
|
-
idx.meta.definition.allowEmpty ?? false
|
|
264
|
-
)
|
|
265
|
-
);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
await Promise.all(ps);
|
|
149
|
+
const ps = [];
|
|
150
|
+
for (const idx of indexes.values()) {
|
|
151
|
+
const { keyPrefix } = idx.meta.definition;
|
|
152
|
+
if (!keyPrefix || key.startsWith(keyPrefix)) {
|
|
153
|
+
const oldVal = await oldValGetter();
|
|
154
|
+
if (oldVal !== void 0) ps.push(indexValue(lc, idx.map, 1, key, oldVal, idx.meta.definition.jsonPointer, idx.meta.definition.allowEmpty ?? false));
|
|
155
|
+
if (newVal !== void 0) ps.push(indexValue(lc, idx.map, 0, key, newVal, idx.meta.definition.jsonPointer, idx.meta.definition.allowEmpty ?? false));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
await Promise.all(ps);
|
|
270
159
|
}
|
|
271
160
|
function readIndexesForWrite(commit, dagWrite, formatVersion) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
index.definition.name,
|
|
276
|
-
new IndexWrite(
|
|
277
|
-
index,
|
|
278
|
-
new BTreeWrite(dagWrite, formatVersion, index.valueHash)
|
|
279
|
-
)
|
|
280
|
-
);
|
|
281
|
-
}
|
|
282
|
-
return m;
|
|
161
|
+
const m = /* @__PURE__ */ new Map();
|
|
162
|
+
for (const index of commit.indexes) m.set(index.definition.name, new IndexWrite(index, new BTreeWrite(dagWrite, formatVersion, index.valueHash)));
|
|
163
|
+
return m;
|
|
283
164
|
}
|
|
284
165
|
async function createIndexBTree(lc, dagWrite, valueMap, prefix, jsonPointer, allowEmpty, formatVersion) {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
lc,
|
|
293
|
-
indexMap,
|
|
294
|
-
Add,
|
|
295
|
-
key,
|
|
296
|
-
entry[1],
|
|
297
|
-
jsonPointer,
|
|
298
|
-
allowEmpty
|
|
299
|
-
);
|
|
300
|
-
}
|
|
301
|
-
return indexMap;
|
|
166
|
+
const indexMap = new BTreeWrite(dagWrite, formatVersion);
|
|
167
|
+
for await (const entry of valueMap.scan(prefix)) {
|
|
168
|
+
const key = entry[0];
|
|
169
|
+
if (!key.startsWith(prefix)) break;
|
|
170
|
+
await indexValue(lc, indexMap, 0, key, entry[1], jsonPointer, allowEmpty);
|
|
171
|
+
}
|
|
172
|
+
return indexMap;
|
|
302
173
|
}
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
newWriteSnapshotDD31,
|
|
308
|
-
readIndexesForWrite,
|
|
309
|
-
updateIndexes
|
|
310
|
-
};
|
|
311
|
-
//# sourceMappingURL=write.js.map
|
|
174
|
+
//#endregion
|
|
175
|
+
export { createIndexBTree, newWriteLocal, newWriteSnapshotDD31 };
|
|
176
|
+
|
|
177
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sources":["../../../../../replicache/src/db/write.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport {diff} from '../btree/diff.ts';\nimport type {InternalDiff} from '../btree/node.ts';\nimport {BTreeRead, allEntriesAsDiff} from '../btree/read.ts';\nimport {BTreeWrite} from '../btree/write.ts';\nimport type {FrozenCookie} from '../cookies.ts';\nimport type {Write as DagWrite} from '../dag/store.ts';\nimport * as FormatVersion from '../format-version-enum.ts';\nimport type {FrozenJSONValue} from '../frozen-json.ts';\nimport {type Hash, emptyHash} from '../hash.ts';\nimport {lazy} from '../lazy.ts';\nimport type {DiffComputationConfig} from '../sync/diff.ts';\nimport {DiffsMap} from '../sync/diff.ts';\nimport type {ClientID} from '../sync/ids.ts';\nimport type {Commit} from './commit.ts';\nimport {\n type Meta as CommitMeta,\n type IndexRecord,\n type Meta,\n baseSnapshotHashFromHash,\n commitFromHash,\n newLocalDD31 as commitNewLocalDD31,\n newSnapshotDD31 as commitNewSnapshotDD31,\n getMutationID,\n} from './commit.ts';\nimport * as IndexOperation from './index-operation-enum.ts';\nimport type {IndexRead} from './index.ts';\nimport {IndexWrite, indexValue} from './index.ts';\nimport * as MetaType from './meta-type-enum.ts';\nimport {Read, readIndexesForRead} from './read.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nexport class Write extends Read {\n readonly #dagWrite: DagWrite;\n readonly #basis: Commit<CommitMeta> | undefined;\n readonly #meta: CommitMeta;\n\n declare map: BTreeWrite;\n\n declare readonly indexes: Map<string, IndexWrite>;\n readonly #clientID: ClientID;\n readonly #formatVersion: FormatVersion;\n\n constructor(\n dagWrite: DagWrite,\n map: BTreeWrite,\n basis: Commit<CommitMeta> | undefined,\n meta: CommitMeta,\n indexes: Map<string, IndexWrite>,\n clientID: ClientID,\n formatVersion: FormatVersion,\n ) {\n // TypeScript has trouble\n super(dagWrite, map, indexes);\n this.#dagWrite = dagWrite;\n this.#basis = basis;\n this.#meta = meta;\n this.#clientID = clientID;\n this.#formatVersion = formatVersion;\n\n // TODO(arv): if (DEBUG) { ...\n if (basis === undefined) {\n assert(\n meta.basisHash === emptyHash,\n 'Expected basisHash to be emptyHash when basis is undefined',\n );\n } else {\n assert(\n meta.basisHash === basis.chunk.hash,\n 'Expected meta.basisHash to equal basis.chunk.hash',\n );\n }\n }\n\n /**\n * The value needs to be frozen since it is kept in memory and used later for\n * comparison as well as returned in `get`.\n */\n async put(\n lc: LogContext,\n key: string,\n value: FrozenJSONValue,\n ): Promise<void> {\n const oldVal = lazy(() => this.map.get(key));\n await updateIndexes(lc, this.indexes, key, oldVal, value);\n\n await this.map.put(key, value);\n }\n\n getMutationID(): Promise<number> {\n return getMutationID(this.#clientID, this.#dagWrite, this.#meta);\n }\n\n async del(lc: LogContext, key: string): Promise<boolean> {\n // TODO(arv): This does the binary search twice. We can do better.\n const oldVal = lazy(() => this.map.get(key));\n if (oldVal !== undefined) {\n await updateIndexes(lc, this.indexes, key, oldVal, undefined);\n }\n return this.map.del(key);\n }\n\n async clear(): Promise<void> {\n await this.map.clear();\n const ps = [];\n for (const idx of this.indexes.values()) {\n ps.push(idx.clear());\n }\n await Promise.all(ps);\n }\n\n async putCommit(): Promise<Commit<CommitMeta>> {\n const valueHash = await this.map.flush();\n const indexRecords: IndexRecord[] = [];\n\n for (const index of this.indexes.values()) {\n const valueHash = await index.flush();\n const indexRecord: IndexRecord = {\n definition: index.meta.definition,\n valueHash,\n };\n indexRecords.push(indexRecord);\n }\n\n let commit: Commit<Meta>;\n const meta = this.#meta;\n switch (meta.type) {\n case MetaType.LocalDD31: {\n assert(\n this.#formatVersion >= FormatVersion.DD31,\n 'Expected formatVersion >= DD31 for LocalDD31 commit',\n );\n const {\n basisHash,\n mutationID,\n mutatorName,\n mutatorArgsJSON,\n originalHash,\n timestamp,\n } = meta;\n commit = commitNewLocalDD31(\n this.#dagWrite.createChunk,\n basisHash,\n await baseSnapshotHashFromHash(basisHash, this.#dagWrite),\n mutationID,\n mutatorName,\n mutatorArgsJSON,\n originalHash,\n valueHash,\n indexRecords,\n timestamp,\n this.#clientID,\n );\n break;\n }\n\n case MetaType.SnapshotDD31: {\n assert(\n this.#formatVersion > FormatVersion.DD31,\n 'Expected formatVersion > DD31 for SnapshotDD31 commit',\n );\n const {basisHash, lastMutationIDs, cookieJSON} = meta;\n commit = commitNewSnapshotDD31(\n this.#dagWrite.createChunk,\n basisHash,\n lastMutationIDs,\n cookieJSON,\n valueHash,\n indexRecords,\n );\n break;\n }\n }\n await this.#dagWrite.putChunk(commit.chunk);\n return commit;\n }\n\n // Return value is the hash of the new commit.\n async commit(headName: string): Promise<Hash> {\n const commit = await this.putCommit();\n const commitHash = commit.chunk.hash;\n await this.#dagWrite.setHead(headName, commitHash);\n await this.#dagWrite.commit();\n return commitHash;\n }\n\n async commitWithDiffs(\n headName: string,\n diffConfig: DiffComputationConfig,\n ): Promise<[Hash, DiffsMap]> {\n const commit = this.putCommit();\n const diffMap = await this.#generateDiffs(diffConfig);\n const commitHash = (await commit).chunk.hash;\n await this.#dagWrite.setHead(headName, commitHash);\n await this.#dagWrite.commit();\n return [commitHash, diffMap];\n }\n\n async #generateDiffs(diffConfig: DiffComputationConfig): Promise<DiffsMap> {\n const diffsMap = new DiffsMap();\n if (!diffConfig.shouldComputeDiffs()) {\n return diffsMap;\n }\n\n let valueDiff: InternalDiff = [];\n if (this.#basis) {\n const basisMap = new BTreeRead(\n this.#dagWrite,\n this.#formatVersion,\n this.#basis.valueHash,\n );\n valueDiff = await diff(basisMap, this.map);\n }\n diffsMap.set('', valueDiff);\n let basisIndexes: Map<string, IndexRead>;\n if (this.#basis) {\n basisIndexes = readIndexesForRead(\n this.#basis,\n this.#dagWrite,\n this.#formatVersion,\n );\n } else {\n basisIndexes = new Map();\n }\n\n for (const [name, index] of this.indexes) {\n if (!diffConfig.shouldComputeDiffsForIndex(name)) {\n continue;\n }\n const basisIndex = basisIndexes.get(name);\n assert(index !== basisIndex, 'Expected index to differ from basisIndex');\n\n const indexDiffResult = await (basisIndex\n ? diff(basisIndex.map, index.map)\n : // No basis. All keys are new.\n allEntriesAsDiff(index.map, 'add'));\n diffsMap.set(name, indexDiffResult);\n }\n\n // Handle indexes in basisIndex but not in this.indexes. All keys are\n // deleted.\n for (const [name, basisIndex] of basisIndexes) {\n if (\n !this.indexes.has(name) &&\n diffConfig.shouldComputeDiffsForIndex(name)\n ) {\n const indexDiffResult = await allEntriesAsDiff(basisIndex.map, 'del');\n diffsMap.set(name, indexDiffResult);\n }\n }\n return diffsMap;\n }\n\n close(): void {\n this.#dagWrite.release();\n }\n}\n\nexport async function newWriteLocal(\n basisHash: Hash,\n mutatorName: string,\n mutatorArgsJSON: FrozenJSONValue,\n originalHash: Hash | null,\n dagWrite: DagWrite,\n timestamp: number,\n clientID: ClientID,\n formatVersion: FormatVersion,\n): Promise<Write> {\n const basis = await commitFromHash(basisHash, dagWrite);\n const bTreeWrite = new BTreeWrite(dagWrite, formatVersion, basis.valueHash);\n const mutationID = await basis.getNextMutationID(clientID, dagWrite);\n const indexes = readIndexesForWrite(basis, dagWrite, formatVersion);\n assert(\n formatVersion >= FormatVersion.DD31,\n 'Expected formatVersion >= DD31 for newWriteLocal',\n );\n return new Write(\n dagWrite,\n bTreeWrite,\n basis,\n\n {\n type: MetaType.LocalDD31,\n basisHash,\n baseSnapshotHash: await baseSnapshotHashFromHash(basisHash, dagWrite),\n mutatorName,\n mutatorArgsJSON,\n mutationID,\n originalHash,\n timestamp,\n clientID,\n },\n indexes,\n clientID,\n formatVersion,\n );\n}\n\nexport async function newWriteSnapshotDD31(\n basisHash: Hash,\n lastMutationIDs: Record<ClientID, number>,\n cookieJSON: FrozenCookie,\n dagWrite: DagWrite,\n clientID: ClientID,\n formatVersion: FormatVersion,\n): Promise<Write> {\n const basis = await commitFromHash(basisHash, dagWrite);\n const bTreeWrite = new BTreeWrite(dagWrite, formatVersion, basis.valueHash);\n return new Write(\n dagWrite,\n bTreeWrite,\n basis,\n {basisHash, type: MetaType.SnapshotDD31, lastMutationIDs, cookieJSON},\n readIndexesForWrite(basis, dagWrite, formatVersion),\n clientID,\n formatVersion,\n );\n}\n\nexport async function updateIndexes(\n lc: LogContext,\n indexes: Map<string, IndexWrite>,\n key: string,\n oldValGetter: () => Promise<FrozenJSONValue | undefined>,\n newVal: FrozenJSONValue | undefined,\n): Promise<void> {\n const ps: Promise<void>[] = [];\n for (const idx of indexes.values()) {\n const {keyPrefix} = idx.meta.definition;\n if (!keyPrefix || key.startsWith(keyPrefix)) {\n const oldVal = await oldValGetter();\n if (oldVal !== undefined) {\n ps.push(\n indexValue(\n lc,\n idx.map,\n IndexOperation.Remove,\n key,\n oldVal,\n idx.meta.definition.jsonPointer,\n idx.meta.definition.allowEmpty ?? false,\n ),\n );\n }\n if (newVal !== undefined) {\n ps.push(\n indexValue(\n lc,\n idx.map,\n IndexOperation.Add,\n key,\n newVal,\n idx.meta.definition.jsonPointer,\n idx.meta.definition.allowEmpty ?? false,\n ),\n );\n }\n }\n }\n await Promise.all(ps);\n}\n\nexport function readIndexesForWrite(\n commit: Commit<CommitMeta>,\n dagWrite: DagWrite,\n formatVersion: FormatVersion,\n): Map<string, IndexWrite> {\n const m = new Map();\n for (const index of commit.indexes) {\n m.set(\n index.definition.name,\n new IndexWrite(\n index,\n new BTreeWrite(dagWrite, formatVersion, index.valueHash),\n ),\n );\n }\n return m;\n}\n\nexport async function createIndexBTree(\n lc: LogContext,\n dagWrite: DagWrite,\n valueMap: BTreeRead,\n prefix: string,\n jsonPointer: string,\n allowEmpty: boolean,\n formatVersion: FormatVersion,\n): Promise<BTreeWrite> {\n const indexMap = new BTreeWrite(dagWrite, formatVersion);\n for await (const entry of valueMap.scan(prefix)) {\n const key = entry[0];\n if (!key.startsWith(prefix)) {\n break;\n }\n await indexValue(\n lc,\n indexMap,\n IndexOperation.Add,\n key,\n entry[1],\n jsonPointer,\n allowEmpty,\n );\n }\n return indexMap;\n}\n"],"names":["valueHash","MetaType.LocalDD31","FormatVersion.DD31","commitNewLocalDD31","MetaType.SnapshotDD31","commitNewSnapshotDD31","IndexOperation.Remove","IndexOperation.Add"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"write.js","names":["#dagWrite","#basis","#meta","#clientID","#formatVersion","#generateDiffs"],"sources":["../../../../../replicache/src/db/write.ts"],"sourcesContent":["import type {LogContext} from '@rocicorp/logger';\nimport {assert} from '../../../shared/src/asserts.ts';\nimport type {Enum} from '../../../shared/src/enum.ts';\nimport {diff} from '../btree/diff.ts';\nimport type {InternalDiff} from '../btree/node.ts';\nimport {BTreeRead, allEntriesAsDiff} from '../btree/read.ts';\nimport {BTreeWrite} from '../btree/write.ts';\nimport type {FrozenCookie} from '../cookies.ts';\nimport type {Write as DagWrite} from '../dag/store.ts';\nimport * as FormatVersion from '../format-version-enum.ts';\nimport type {FrozenJSONValue} from '../frozen-json.ts';\nimport {type Hash, emptyHash} from '../hash.ts';\nimport {lazy} from '../lazy.ts';\nimport type {DiffComputationConfig} from '../sync/diff.ts';\nimport {DiffsMap} from '../sync/diff.ts';\nimport type {ClientID} from '../sync/ids.ts';\nimport type {Commit} from './commit.ts';\nimport {\n type Meta as CommitMeta,\n type IndexRecord,\n type Meta,\n baseSnapshotHashFromHash,\n commitFromHash,\n newLocalDD31 as commitNewLocalDD31,\n newSnapshotDD31 as commitNewSnapshotDD31,\n getMutationID,\n} from './commit.ts';\nimport * as IndexOperation from './index-operation-enum.ts';\nimport type {IndexRead} from './index.ts';\nimport {IndexWrite, indexValue} from './index.ts';\nimport * as MetaType from './meta-type-enum.ts';\nimport {Read, readIndexesForRead} from './read.ts';\n\ntype FormatVersion = Enum<typeof FormatVersion>;\n\nexport class Write extends Read {\n readonly #dagWrite: DagWrite;\n readonly #basis: Commit<CommitMeta> | undefined;\n readonly #meta: CommitMeta;\n\n declare map: BTreeWrite;\n\n declare readonly indexes: Map<string, IndexWrite>;\n readonly #clientID: ClientID;\n readonly #formatVersion: FormatVersion;\n\n constructor(\n dagWrite: DagWrite,\n map: BTreeWrite,\n basis: Commit<CommitMeta> | undefined,\n meta: CommitMeta,\n indexes: Map<string, IndexWrite>,\n clientID: ClientID,\n formatVersion: FormatVersion,\n ) {\n // TypeScript has trouble\n super(dagWrite, map, indexes);\n this.#dagWrite = dagWrite;\n this.#basis = basis;\n this.#meta = meta;\n this.#clientID = clientID;\n this.#formatVersion = formatVersion;\n\n // TODO(arv): if (DEBUG) { ...\n if (basis === undefined) {\n assert(\n meta.basisHash === emptyHash,\n 'Expected basisHash to be emptyHash when basis is undefined',\n );\n } else {\n assert(\n meta.basisHash === basis.chunk.hash,\n 'Expected meta.basisHash to equal basis.chunk.hash',\n );\n }\n }\n\n /**\n * The value needs to be frozen since it is kept in memory and used later for\n * comparison as well as returned in `get`.\n */\n async put(\n lc: LogContext,\n key: string,\n value: FrozenJSONValue,\n ): Promise<void> {\n const oldVal = lazy(() => this.map.get(key));\n await updateIndexes(lc, this.indexes, key, oldVal, value);\n\n await this.map.put(key, value);\n }\n\n getMutationID(): Promise<number> {\n return getMutationID(this.#clientID, this.#dagWrite, this.#meta);\n }\n\n async del(lc: LogContext, key: string): Promise<boolean> {\n // TODO(arv): This does the binary search twice. We can do better.\n const oldVal = lazy(() => this.map.get(key));\n if (oldVal !== undefined) {\n await updateIndexes(lc, this.indexes, key, oldVal, undefined);\n }\n return this.map.del(key);\n }\n\n async clear(): Promise<void> {\n await this.map.clear();\n const ps = [];\n for (const idx of this.indexes.values()) {\n ps.push(idx.clear());\n }\n await Promise.all(ps);\n }\n\n async putCommit(): Promise<Commit<CommitMeta>> {\n const valueHash = await this.map.flush();\n const indexRecords: IndexRecord[] = [];\n\n for (const index of this.indexes.values()) {\n const valueHash = await index.flush();\n const indexRecord: IndexRecord = {\n definition: index.meta.definition,\n valueHash,\n };\n indexRecords.push(indexRecord);\n }\n\n let commit: Commit<Meta>;\n const meta = this.#meta;\n switch (meta.type) {\n case MetaType.LocalDD31: {\n assert(\n this.#formatVersion >= FormatVersion.DD31,\n 'Expected formatVersion >= DD31 for LocalDD31 commit',\n );\n const {\n basisHash,\n mutationID,\n mutatorName,\n mutatorArgsJSON,\n originalHash,\n timestamp,\n } = meta;\n commit = commitNewLocalDD31(\n this.#dagWrite.createChunk,\n basisHash,\n await baseSnapshotHashFromHash(basisHash, this.#dagWrite),\n mutationID,\n mutatorName,\n mutatorArgsJSON,\n originalHash,\n valueHash,\n indexRecords,\n timestamp,\n this.#clientID,\n );\n break;\n }\n\n case MetaType.SnapshotDD31: {\n assert(\n this.#formatVersion > FormatVersion.DD31,\n 'Expected formatVersion > DD31 for SnapshotDD31 commit',\n );\n const {basisHash, lastMutationIDs, cookieJSON} = meta;\n commit = commitNewSnapshotDD31(\n this.#dagWrite.createChunk,\n basisHash,\n lastMutationIDs,\n cookieJSON,\n valueHash,\n indexRecords,\n );\n break;\n }\n }\n await this.#dagWrite.putChunk(commit.chunk);\n return commit;\n }\n\n // Return value is the hash of the new commit.\n async commit(headName: string): Promise<Hash> {\n const commit = await this.putCommit();\n const commitHash = commit.chunk.hash;\n await this.#dagWrite.setHead(headName, commitHash);\n await this.#dagWrite.commit();\n return commitHash;\n }\n\n async commitWithDiffs(\n headName: string,\n diffConfig: DiffComputationConfig,\n ): Promise<[Hash, DiffsMap]> {\n const commit = this.putCommit();\n const diffMap = await this.#generateDiffs(diffConfig);\n const commitHash = (await commit).chunk.hash;\n await this.#dagWrite.setHead(headName, commitHash);\n await this.#dagWrite.commit();\n return [commitHash, diffMap];\n }\n\n async #generateDiffs(diffConfig: DiffComputationConfig): Promise<DiffsMap> {\n const diffsMap = new DiffsMap();\n if (!diffConfig.shouldComputeDiffs()) {\n return diffsMap;\n }\n\n let valueDiff: InternalDiff = [];\n if (this.#basis) {\n const basisMap = new BTreeRead(\n this.#dagWrite,\n this.#formatVersion,\n this.#basis.valueHash,\n );\n valueDiff = await diff(basisMap, this.map);\n }\n diffsMap.set('', valueDiff);\n let basisIndexes: Map<string, IndexRead>;\n if (this.#basis) {\n basisIndexes = readIndexesForRead(\n this.#basis,\n this.#dagWrite,\n this.#formatVersion,\n );\n } else {\n basisIndexes = new Map();\n }\n\n for (const [name, index] of this.indexes) {\n if (!diffConfig.shouldComputeDiffsForIndex(name)) {\n continue;\n }\n const basisIndex = basisIndexes.get(name);\n assert(index !== basisIndex, 'Expected index to differ from basisIndex');\n\n const indexDiffResult = await (basisIndex\n ? diff(basisIndex.map, index.map)\n : // No basis. All keys are new.\n allEntriesAsDiff(index.map, 'add'));\n diffsMap.set(name, indexDiffResult);\n }\n\n // Handle indexes in basisIndex but not in this.indexes. All keys are\n // deleted.\n for (const [name, basisIndex] of basisIndexes) {\n if (\n !this.indexes.has(name) &&\n diffConfig.shouldComputeDiffsForIndex(name)\n ) {\n const indexDiffResult = await allEntriesAsDiff(basisIndex.map, 'del');\n diffsMap.set(name, indexDiffResult);\n }\n }\n return diffsMap;\n }\n\n close(): void {\n this.#dagWrite.release();\n }\n}\n\nexport async function newWriteLocal(\n basisHash: Hash,\n mutatorName: string,\n mutatorArgsJSON: FrozenJSONValue,\n originalHash: Hash | null,\n dagWrite: DagWrite,\n timestamp: number,\n clientID: ClientID,\n formatVersion: FormatVersion,\n): Promise<Write> {\n const basis = await commitFromHash(basisHash, dagWrite);\n const bTreeWrite = new BTreeWrite(dagWrite, formatVersion, basis.valueHash);\n const mutationID = await basis.getNextMutationID(clientID, dagWrite);\n const indexes = readIndexesForWrite(basis, dagWrite, formatVersion);\n assert(\n formatVersion >= FormatVersion.DD31,\n 'Expected formatVersion >= DD31 for newWriteLocal',\n );\n return new Write(\n dagWrite,\n bTreeWrite,\n basis,\n\n {\n type: MetaType.LocalDD31,\n basisHash,\n baseSnapshotHash: await baseSnapshotHashFromHash(basisHash, dagWrite),\n mutatorName,\n mutatorArgsJSON,\n mutationID,\n originalHash,\n timestamp,\n clientID,\n },\n indexes,\n clientID,\n formatVersion,\n );\n}\n\nexport async function newWriteSnapshotDD31(\n basisHash: Hash,\n lastMutationIDs: Record<ClientID, number>,\n cookieJSON: FrozenCookie,\n dagWrite: DagWrite,\n clientID: ClientID,\n formatVersion: FormatVersion,\n): Promise<Write> {\n const basis = await commitFromHash(basisHash, dagWrite);\n const bTreeWrite = new BTreeWrite(dagWrite, formatVersion, basis.valueHash);\n return new Write(\n dagWrite,\n bTreeWrite,\n basis,\n {basisHash, type: MetaType.SnapshotDD31, lastMutationIDs, cookieJSON},\n readIndexesForWrite(basis, dagWrite, formatVersion),\n clientID,\n formatVersion,\n );\n}\n\nexport async function updateIndexes(\n lc: LogContext,\n indexes: Map<string, IndexWrite>,\n key: string,\n oldValGetter: () => Promise<FrozenJSONValue | undefined>,\n newVal: FrozenJSONValue | undefined,\n): Promise<void> {\n const ps: Promise<void>[] = [];\n for (const idx of indexes.values()) {\n const {keyPrefix} = idx.meta.definition;\n if (!keyPrefix || key.startsWith(keyPrefix)) {\n const oldVal = await oldValGetter();\n if (oldVal !== undefined) {\n ps.push(\n indexValue(\n lc,\n idx.map,\n IndexOperation.Remove,\n key,\n oldVal,\n idx.meta.definition.jsonPointer,\n idx.meta.definition.allowEmpty ?? false,\n ),\n );\n }\n if (newVal !== undefined) {\n ps.push(\n indexValue(\n lc,\n idx.map,\n IndexOperation.Add,\n key,\n newVal,\n idx.meta.definition.jsonPointer,\n idx.meta.definition.allowEmpty ?? false,\n ),\n );\n }\n }\n }\n await Promise.all(ps);\n}\n\nexport function readIndexesForWrite(\n commit: Commit<CommitMeta>,\n dagWrite: DagWrite,\n formatVersion: FormatVersion,\n): Map<string, IndexWrite> {\n const m = new Map();\n for (const index of commit.indexes) {\n m.set(\n index.definition.name,\n new IndexWrite(\n index,\n new BTreeWrite(dagWrite, formatVersion, index.valueHash),\n ),\n );\n }\n return m;\n}\n\nexport async function createIndexBTree(\n lc: LogContext,\n dagWrite: DagWrite,\n valueMap: BTreeRead,\n prefix: string,\n jsonPointer: string,\n allowEmpty: boolean,\n formatVersion: FormatVersion,\n): Promise<BTreeWrite> {\n const indexMap = new BTreeWrite(dagWrite, formatVersion);\n for await (const entry of valueMap.scan(prefix)) {\n const key = entry[0];\n if (!key.startsWith(prefix)) {\n break;\n }\n await indexValue(\n lc,\n indexMap,\n IndexOperation.Add,\n key,\n entry[1],\n jsonPointer,\n allowEmpty,\n );\n }\n return indexMap;\n}\n"],"mappings":"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"}
|