@fireproof/core 0.21.0-dev-preview-6 → 0.22.0-dev-preview
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/index.d.ts +2 -16
- package/index.js +2 -15
- package/index.js.map +1 -1
- package/index.ts +2 -0
- package/package.json +11 -70
- package/tsconfig.json +18 -0
- package/README.md +0 -269
- package/apply-head-queue.d.ts +0 -18
- package/apply-head-queue.d.ts.map +0 -1
- package/apply-head-queue.js +0 -47
- package/apply-head-queue.js.map +0 -1
- package/blockstore/attachable-store.d.ts +0 -19
- package/blockstore/attachable-store.d.ts.map +0 -1
- package/blockstore/attachable-store.js +0 -317
- package/blockstore/attachable-store.js.map +0 -1
- package/blockstore/commit-queue.d.ts +0 -17
- package/blockstore/commit-queue.d.ts.map +0 -1
- package/blockstore/commit-queue.js +0 -60
- package/blockstore/commit-queue.js.map +0 -1
- package/blockstore/commitor.d.ts +0 -21
- package/blockstore/commitor.d.ts.map +0 -1
- package/blockstore/commitor.js +0 -95
- package/blockstore/commitor.js.map +0 -1
- package/blockstore/connect-raw.d.ts +0 -2
- package/blockstore/connect-raw.d.ts.map +0 -1
- package/blockstore/connect-raw.js +0 -2
- package/blockstore/connect-raw.js.map +0 -1
- package/blockstore/connection-base.d.ts +0 -2
- package/blockstore/connection-base.d.ts.map +0 -1
- package/blockstore/connection-base.js +0 -2
- package/blockstore/connection-base.js.map +0 -1
- package/blockstore/encrypt-helpers.d.ts +0 -2
- package/blockstore/encrypt-helpers.d.ts.map +0 -1
- package/blockstore/encrypt-helpers.js +0 -2
- package/blockstore/encrypt-helpers.js.map +0 -1
- package/blockstore/fp-envelope.d.ts +0 -32
- package/blockstore/fp-envelope.d.ts.map +0 -1
- package/blockstore/fp-envelope.js +0 -14
- package/blockstore/fp-envelope.js.map +0 -1
- package/blockstore/gateway.d.ts +0 -20
- package/blockstore/gateway.d.ts.map +0 -1
- package/blockstore/gateway.js +0 -2
- package/blockstore/gateway.js.map +0 -1
- package/blockstore/index.d.ts +0 -16
- package/blockstore/index.d.ts.map +0 -1
- package/blockstore/index.js +0 -16
- package/blockstore/index.js.map +0 -1
- package/blockstore/interceptor-gateway.d.ts +0 -29
- package/blockstore/interceptor-gateway.d.ts.map +0 -1
- package/blockstore/interceptor-gateway.js +0 -137
- package/blockstore/interceptor-gateway.js.map +0 -1
- package/blockstore/loader-helpers.d.ts +0 -10
- package/blockstore/loader-helpers.d.ts.map +0 -1
- package/blockstore/loader-helpers.js +0 -115
- package/blockstore/loader-helpers.js.map +0 -1
- package/blockstore/loader.d.ts +0 -61
- package/blockstore/loader.d.ts.map +0 -1
- package/blockstore/loader.js +0 -493
- package/blockstore/loader.js.map +0 -1
- package/blockstore/register-store-protocol.d.ts +0 -22
- package/blockstore/register-store-protocol.d.ts.map +0 -1
- package/blockstore/register-store-protocol.js +0 -125
- package/blockstore/register-store-protocol.js.map +0 -1
- package/blockstore/serde-gateway.d.ts +0 -78
- package/blockstore/serde-gateway.d.ts.map +0 -1
- package/blockstore/serde-gateway.js +0 -2
- package/blockstore/serde-gateway.js.map +0 -1
- package/blockstore/store-factory.d.ts +0 -11
- package/blockstore/store-factory.d.ts.map +0 -1
- package/blockstore/store-factory.js +0 -104
- package/blockstore/store-factory.js.map +0 -1
- package/blockstore/store-remote.d.ts +0 -2
- package/blockstore/store-remote.d.ts.map +0 -1
- package/blockstore/store-remote.js +0 -2
- package/blockstore/store-remote.js.map +0 -1
- package/blockstore/store.d.ts +0 -86
- package/blockstore/store.d.ts.map +0 -1
- package/blockstore/store.js +0 -437
- package/blockstore/store.js.map +0 -1
- package/blockstore/task-manager.d.ts +0 -19
- package/blockstore/task-manager.d.ts.map +0 -1
- package/blockstore/task-manager.js +0 -50
- package/blockstore/task-manager.js.map +0 -1
- package/blockstore/transaction.d.ts +0 -62
- package/blockstore/transaction.d.ts.map +0 -1
- package/blockstore/transaction.js +0 -256
- package/blockstore/transaction.js.map +0 -1
- package/blockstore/types.d.ts +0 -510
- package/blockstore/types.d.ts.map +0 -1
- package/blockstore/types.js +0 -83
- package/blockstore/types.js.map +0 -1
- package/blockstore/uri-interceptor.d.ts +0 -19
- package/blockstore/uri-interceptor.d.ts.map +0 -1
- package/blockstore/uri-interceptor.js +0 -61
- package/blockstore/uri-interceptor.js.map +0 -1
- package/bundle-not-impl.d.ts +0 -2
- package/bundle-not-impl.d.ts.map +0 -1
- package/bundle-not-impl.js +0 -4
- package/bundle-not-impl.js.map +0 -1
- package/cli/main.js +0 -26613
- package/crdt-clock.d.ts +0 -26
- package/crdt-clock.d.ts.map +0 -1
- package/crdt-clock.js +0 -133
- package/crdt-clock.js.map +0 -1
- package/crdt-helpers.d.ts +0 -19
- package/crdt-helpers.d.ts.map +0 -1
- package/crdt-helpers.js +0 -332
- package/crdt-helpers.js.map +0 -1
- package/crdt.d.ts +0 -41
- package/crdt.d.ts.map +0 -1
- package/crdt.js +0 -164
- package/crdt.js.map +0 -1
- package/database.d.ts +0 -34
- package/database.d.ts.map +0 -1
- package/database.js +0 -133
- package/database.js.map +0 -1
- package/deno.json +0 -20
- package/index.d.ts.map +0 -1
- package/indexer-helpers.d.ts +0 -68
- package/indexer-helpers.d.ts.map +0 -1
- package/indexer-helpers.js +0 -157
- package/indexer-helpers.js.map +0 -1
- package/indexer.d.ts +0 -24
- package/indexer.d.ts.map +0 -1
- package/indexer.js +0 -239
- package/indexer.js.map +0 -1
- package/ledger.d.ts +0 -55
- package/ledger.d.ts.map +0 -1
- package/ledger.js +0 -240
- package/ledger.js.map +0 -1
- package/protocols/cloud/http-connection.d.ts +0 -25
- package/protocols/cloud/http-connection.d.ts.map +0 -1
- package/protocols/cloud/http-connection.js +0 -153
- package/protocols/cloud/http-connection.js.map +0 -1
- package/protocols/cloud/index.d.ts +0 -10
- package/protocols/cloud/index.d.ts.map +0 -1
- package/protocols/cloud/index.js +0 -10
- package/protocols/cloud/index.js.map +0 -1
- package/protocols/cloud/msg-raw-connection-base.d.ts +0 -16
- package/protocols/cloud/msg-raw-connection-base.d.ts.map +0 -1
- package/protocols/cloud/msg-raw-connection-base.js +0 -22
- package/protocols/cloud/msg-raw-connection-base.js.map +0 -1
- package/protocols/cloud/msg-types-data.d.ts +0 -36
- package/protocols/cloud/msg-types-data.d.ts.map +0 -1
- package/protocols/cloud/msg-types-data.js +0 -38
- package/protocols/cloud/msg-types-data.js.map +0 -1
- package/protocols/cloud/msg-types-meta.d.ts +0 -41
- package/protocols/cloud/msg-types-meta.d.ts.map +0 -1
- package/protocols/cloud/msg-types-meta.js +0 -98
- package/protocols/cloud/msg-types-meta.js.map +0 -1
- package/protocols/cloud/msg-types-wal.d.ts +0 -33
- package/protocols/cloud/msg-types-wal.d.ts.map +0 -1
- package/protocols/cloud/msg-types-wal.js +0 -38
- package/protocols/cloud/msg-types-wal.js.map +0 -1
- package/protocols/cloud/msg-types.d.ts +0 -296
- package/protocols/cloud/msg-types.d.ts.map +0 -1
- package/protocols/cloud/msg-types.js +0 -296
- package/protocols/cloud/msg-types.js.map +0 -1
- package/protocols/cloud/msger.d.ts +0 -79
- package/protocols/cloud/msger.d.ts.map +0 -1
- package/protocols/cloud/msger.js +0 -198
- package/protocols/cloud/msger.js.map +0 -1
- package/protocols/cloud/ws-connection.d.ts +0 -29
- package/protocols/cloud/ws-connection.d.ts.map +0 -1
- package/protocols/cloud/ws-connection.js +0 -166
- package/protocols/cloud/ws-connection.js.map +0 -1
- package/protocols/index.d.ts +0 -2
- package/protocols/index.d.ts.map +0 -1
- package/protocols/index.js +0 -2
- package/protocols/index.js.map +0 -1
- package/react/img-file.d.ts +0 -303
- package/react/img-file.d.ts.map +0 -1
- package/react/img-file.js +0 -92
- package/react/img-file.js.map +0 -1
- package/react/index.d.ts +0 -5
- package/react/index.d.ts.map +0 -1
- package/react/index.js +0 -5
- package/react/index.js.map +0 -1
- package/react/types.d.ts +0 -71
- package/react/types.d.ts.map +0 -1
- package/react/types.js +0 -2
- package/react/types.js.map +0 -1
- package/react/use-all-docs.d.ts +0 -4
- package/react/use-all-docs.d.ts.map +0 -1
- package/react/use-all-docs.js +0 -25
- package/react/use-all-docs.js.map +0 -1
- package/react/use-attach.d.ts +0 -6
- package/react/use-attach.d.ts.map +0 -1
- package/react/use-attach.js +0 -75
- package/react/use-attach.js.map +0 -1
- package/react/use-changes.d.ts +0 -4
- package/react/use-changes.d.ts.map +0 -1
- package/react/use-changes.js +0 -19
- package/react/use-changes.js.map +0 -1
- package/react/use-document.d.ts +0 -4
- package/react/use-document.d.ts.map +0 -1
- package/react/use-document.js +0 -109
- package/react/use-document.js.map +0 -1
- package/react/use-fireproof.d.ts +0 -6
- package/react/use-fireproof.d.ts.map +0 -1
- package/react/use-fireproof.js +0 -20
- package/react/use-fireproof.js.map +0 -1
- package/react/use-live-query.d.ts +0 -4
- package/react/use-live-query.d.ts.map +0 -1
- package/react/use-live-query.js +0 -24
- package/react/use-live-query.js.map +0 -1
- package/runtime/files.d.ts +0 -12
- package/runtime/files.d.ts.map +0 -1
- package/runtime/files.js +0 -29
- package/runtime/files.js.map +0 -1
- package/runtime/gateways/cloud/gateway.d.ts +0 -41
- package/runtime/gateways/cloud/gateway.d.ts.map +0 -1
- package/runtime/gateways/cloud/gateway.js +0 -512
- package/runtime/gateways/cloud/gateway.js.map +0 -1
- package/runtime/gateways/cloud/index.d.ts +0 -3
- package/runtime/gateways/cloud/index.d.ts.map +0 -1
- package/runtime/gateways/cloud/index.js +0 -3
- package/runtime/gateways/cloud/index.js.map +0 -1
- package/runtime/gateways/cloud/to-cloud.d.ts +0 -46
- package/runtime/gateways/cloud/to-cloud.d.ts.map +0 -1
- package/runtime/gateways/cloud/to-cloud.js +0 -159
- package/runtime/gateways/cloud/to-cloud.js.map +0 -1
- package/runtime/gateways/def-serde-gateway.d.ts +0 -18
- package/runtime/gateways/def-serde-gateway.d.ts.map +0 -1
- package/runtime/gateways/def-serde-gateway.js +0 -92
- package/runtime/gateways/def-serde-gateway.js.map +0 -1
- package/runtime/gateways/file/deno/deno-filesystem.d.ts +0 -27
- package/runtime/gateways/file/deno/deno-filesystem.d.ts.map +0 -1
- package/runtime/gateways/file/deno/deno-filesystem.js +0 -52
- package/runtime/gateways/file/deno/deno-filesystem.js.map +0 -1
- package/runtime/gateways/file/deno/get-sys-file-system.d.ts +0 -4
- package/runtime/gateways/file/deno/get-sys-file-system.d.ts.map +0 -1
- package/runtime/gateways/file/deno/get-sys-file-system.js +0 -11
- package/runtime/gateways/file/deno/get-sys-file-system.js.map +0 -1
- package/runtime/gateways/file/deno/index.d.ts +0 -2
- package/runtime/gateways/file/deno/index.d.ts.map +0 -1
- package/runtime/gateways/file/deno/index.js +0 -2
- package/runtime/gateways/file/deno/index.js.map +0 -1
- package/runtime/gateways/file/gateway-impl.d.ts +0 -18
- package/runtime/gateways/file/gateway-impl.d.ts.map +0 -1
- package/runtime/gateways/file/gateway-impl.js +0 -121
- package/runtime/gateways/file/gateway-impl.js.map +0 -1
- package/runtime/gateways/file/index.d.ts +0 -3
- package/runtime/gateways/file/index.d.ts.map +0 -1
- package/runtime/gateways/file/index.js +0 -3
- package/runtime/gateways/file/index.js.map +0 -1
- package/runtime/gateways/file/key-bag-file.d.ts +0 -19
- package/runtime/gateways/file/key-bag-file.d.ts.map +0 -1
- package/runtime/gateways/file/key-bag-file.js +0 -40
- package/runtime/gateways/file/key-bag-file.js.map +0 -1
- package/runtime/gateways/file/node/get-sys-file-system.d.ts +0 -4
- package/runtime/gateways/file/node/get-sys-file-system.d.ts.map +0 -1
- package/runtime/gateways/file/node/get-sys-file-system.js +0 -11
- package/runtime/gateways/file/node/get-sys-file-system.js.map +0 -1
- package/runtime/gateways/file/node/index.d.ts +0 -2
- package/runtime/gateways/file/node/index.d.ts.map +0 -1
- package/runtime/gateways/file/node/index.js +0 -2
- package/runtime/gateways/file/node/index.js.map +0 -1
- package/runtime/gateways/file/node/node-filesystem.d.ts +0 -32
- package/runtime/gateways/file/node/node-filesystem.d.ts.map +0 -1
- package/runtime/gateways/file/node/node-filesystem.js +0 -33
- package/runtime/gateways/file/node/node-filesystem.js.map +0 -1
- package/runtime/gateways/file/node/to-array-buffer.d.ts +0 -2
- package/runtime/gateways/file/node/to-array-buffer.d.ts.map +0 -1
- package/runtime/gateways/file/node/to-array-buffer.js +0 -12
- package/runtime/gateways/file/node/to-array-buffer.js.map +0 -1
- package/runtime/gateways/file/sys-file-system-factory.d.ts +0 -4
- package/runtime/gateways/file/sys-file-system-factory.d.ts.map +0 -1
- package/runtime/gateways/file/sys-file-system-factory.js +0 -13
- package/runtime/gateways/file/sys-file-system-factory.js.map +0 -1
- package/runtime/gateways/file/utils.d.ts +0 -5
- package/runtime/gateways/file/utils.d.ts.map +0 -1
- package/runtime/gateways/file/utils.js +0 -27
- package/runtime/gateways/file/utils.js.map +0 -1
- package/runtime/gateways/file/version.d.ts +0 -2
- package/runtime/gateways/file/version.d.ts.map +0 -1
- package/runtime/gateways/file/version.js +0 -2
- package/runtime/gateways/file/version.js.map +0 -1
- package/runtime/gateways/fp-envelope-serialize.d.ts +0 -50
- package/runtime/gateways/fp-envelope-serialize.d.ts.map +0 -1
- package/runtime/gateways/fp-envelope-serialize.js +0 -141
- package/runtime/gateways/fp-envelope-serialize.js.map +0 -1
- package/runtime/gateways/index.d.ts +0 -6
- package/runtime/gateways/index.d.ts.map +0 -1
- package/runtime/gateways/index.js +0 -6
- package/runtime/gateways/index.js.map +0 -1
- package/runtime/gateways/indexeddb/gateway-impl.d.ts +0 -22
- package/runtime/gateways/indexeddb/gateway-impl.d.ts.map +0 -1
- package/runtime/gateways/indexeddb/gateway-impl.js +0 -147
- package/runtime/gateways/indexeddb/gateway-impl.js.map +0 -1
- package/runtime/gateways/indexeddb/index.d.ts +0 -6
- package/runtime/gateways/indexeddb/index.d.ts.map +0 -1
- package/runtime/gateways/indexeddb/index.js +0 -6
- package/runtime/gateways/indexeddb/index.js.map +0 -1
- package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts +0 -15
- package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts.map +0 -1
- package/runtime/gateways/indexeddb/key-bag-indexeddb.js +0 -42
- package/runtime/gateways/indexeddb/key-bag-indexeddb.js.map +0 -1
- package/runtime/gateways/indexeddb-version.d.ts +0 -2
- package/runtime/gateways/indexeddb-version.d.ts.map +0 -1
- package/runtime/gateways/indexeddb-version.js +0 -2
- package/runtime/gateways/indexeddb-version.js.map +0 -1
- package/runtime/gateways/memory/gateway.d.ts +0 -18
- package/runtime/gateways/memory/gateway.d.ts.map +0 -1
- package/runtime/gateways/memory/gateway.js +0 -73
- package/runtime/gateways/memory/gateway.js.map +0 -1
- package/runtime/gateways/memory/version.d.ts +0 -2
- package/runtime/gateways/memory/version.d.ts.map +0 -1
- package/runtime/gateways/memory/version.js +0 -2
- package/runtime/gateways/memory/version.js.map +0 -1
- package/runtime/index.d.ts +0 -13
- package/runtime/index.d.ts.map +0 -1
- package/runtime/index.js +0 -13
- package/runtime/index.js.map +0 -1
- package/runtime/key-bag-memory.d.ts +0 -12
- package/runtime/key-bag-memory.d.ts.map +0 -1
- package/runtime/key-bag-memory.js +0 -23
- package/runtime/key-bag-memory.js.map +0 -1
- package/runtime/key-bag.d.ts +0 -85
- package/runtime/key-bag.d.ts.map +0 -1
- package/runtime/key-bag.js +0 -411
- package/runtime/key-bag.js.map +0 -1
- package/runtime/keyed-crypto.d.ts +0 -19
- package/runtime/keyed-crypto.d.ts.map +0 -1
- package/runtime/keyed-crypto.js +0 -192
- package/runtime/keyed-crypto.js.map +0 -1
- package/runtime/memory-sys-container.d.ts +0 -2
- package/runtime/memory-sys-container.d.ts.map +0 -1
- package/runtime/memory-sys-container.js +0 -2
- package/runtime/memory-sys-container.js.map +0 -1
- package/runtime/meta-key-hack.d.ts +0 -42
- package/runtime/meta-key-hack.d.ts.map +0 -1
- package/runtime/meta-key-hack.js +0 -201
- package/runtime/meta-key-hack.js.map +0 -1
- package/runtime/sts-service/index.d.ts +0 -40
- package/runtime/sts-service/index.d.ts.map +0 -1
- package/runtime/sts-service/index.js +0 -108
- package/runtime/sts-service/index.js.map +0 -1
- package/runtime/sys-container.d.ts +0 -2
- package/runtime/sys-container.d.ts.map +0 -1
- package/runtime/sys-container.js +0 -2
- package/runtime/sys-container.js.map +0 -1
- package/runtime/wait-pr-multiformats/block.d.ts +0 -47
- package/runtime/wait-pr-multiformats/block.d.ts.map +0 -1
- package/runtime/wait-pr-multiformats/block.js +0 -64
- package/runtime/wait-pr-multiformats/block.js.map +0 -1
- package/runtime/wait-pr-multiformats/codec-interface.d.ts +0 -29
- package/runtime/wait-pr-multiformats/codec-interface.d.ts.map +0 -1
- package/runtime/wait-pr-multiformats/codec-interface.js +0 -2
- package/runtime/wait-pr-multiformats/codec-interface.js.map +0 -1
- package/runtime/wait-pr-multiformats/index.d.ts +0 -3
- package/runtime/wait-pr-multiformats/index.d.ts.map +0 -1
- package/runtime/wait-pr-multiformats/index.js +0 -3
- package/runtime/wait-pr-multiformats/index.js.map +0 -1
- package/tests/blockstore/fp-envelope.test.ts-off +0 -65
- package/tests/blockstore/fragment-gateway.test.ts-off +0 -106
- package/tests/blockstore/interceptor-gateway.test.ts +0 -254
- package/tests/blockstore/keyed-crypto-indexeddb-file.test.ts +0 -128
- package/tests/blockstore/keyed-crypto.test.ts +0 -526
- package/tests/blockstore/loader.test.ts +0 -297
- package/tests/blockstore/standalone.test.ts +0 -152
- package/tests/blockstore/store.test.ts +0 -192
- package/tests/blockstore/transaction.test.ts +0 -130
- package/tests/fireproof/all-gateway.test.ts +0 -461
- package/tests/fireproof/attachable.test.ts +0 -686
- package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.car +0 -0
- package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts +0 -324
- package/tests/fireproof/charwise-boolean.test.ts +0 -66
- package/tests/fireproof/crdt.test.ts +0 -570
- package/tests/fireproof/database.test.ts +0 -779
- package/tests/fireproof/deleted-docs-handling.test.ts +0 -111
- package/tests/fireproof/fireproof.test.fixture.ts +0 -133
- package/tests/fireproof/fireproof.test.ts +0 -777
- package/tests/fireproof/hello.test.ts +0 -74
- package/tests/fireproof/indexer.test.ts +0 -458
- package/tests/fireproof/multiple-ledger.test.ts +0 -65
- package/tests/fireproof/query-docs.test.ts +0 -116
- package/tests/fireproof/query-limit-issue.test.ts +0 -147
- package/tests/fireproof/query-property-inconsistency.test.ts +0 -89
- package/tests/fireproof/query-result-properties.test.ts +0 -42
- package/tests/fireproof/stable-cid.test.ts +0 -69
- package/tests/fireproof/utils.test.ts +0 -135
- package/tests/gateway/file/loader-config.test.ts +0 -307
- package/tests/gateway/indexeddb/loader-config.test.ts +0 -79
- package/tests/helpers.ts +0 -174
- package/tests/react/img-file.test.tsx +0 -190
- package/tests/react/use-all-docs.test.tsx +0 -173
- package/tests/react/use-document-with-nonexistent-id.test.tsx +0 -96
- package/tests/react/use-fireproof-db-switch.test.tsx +0 -91
- package/tests/react/use-fireproof-stability.test.tsx +0 -145
- package/tests/react/use-fireproof.test.tsx +0 -645
- package/tests/runtime/fp-envelope-serialize.test.ts +0 -254
- package/tests/runtime/meta-key-hack.test.ts +0 -95
- package/tests/setup.file.ts +0 -1
- package/tests/setup.indexeddb.ts +0 -0
- package/tests/setup.memory.ts +0 -2
- package/tests/utils.test.ts +0 -192
- package/tests/vitest.file.config.ts +0 -14
- package/tests/vitest.indexeddb.config.ts +0 -37
- package/tests/vitest.memory.config.ts +0 -25
- package/types.d.ts +0 -462
- package/types.d.ts.map +0 -1
- package/types.js +0 -60
- package/types.js.map +0 -1
- package/use-fireproof/iframe-strategy.d.ts +0 -13
- package/use-fireproof/iframe-strategy.d.ts.map +0 -1
- package/use-fireproof/iframe-strategy.js +0 -83
- package/use-fireproof/iframe-strategy.js.map +0 -1
- package/use-fireproof/index.d.ts +0 -10
- package/use-fireproof/index.d.ts.map +0 -1
- package/use-fireproof/index.js +0 -16
- package/use-fireproof/index.js.map +0 -1
- package/use-fireproof/redirect-strategy.d.ts +0 -8
- package/use-fireproof/redirect-strategy.d.ts.map +0 -1
- package/use-fireproof/redirect-strategy.js +0 -31
- package/use-fireproof/redirect-strategy.js.map +0 -1
- package/utils.d.ts +0 -49
- package/utils.d.ts.map +0 -1
- package/utils.js +0 -454
- package/utils.js.map +0 -1
- package/version.d.ts +0 -2
- package/version.d.ts.map +0 -1
- package/version.js +0 -4
- package/version.js.map +0 -1
- package/write-queue.d.ts +0 -9
- package/write-queue.d.ts.map +0 -1
- package/write-queue.js +0 -70
- package/write-queue.js.map +0 -1
@@ -1,570 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
CRDT,
|
3
|
-
defaultWriteQueueOpts,
|
4
|
-
ensureSuperThis,
|
5
|
-
LedgerOpts,
|
6
|
-
toStoreURIRuntime,
|
7
|
-
rt,
|
8
|
-
CRDTImpl,
|
9
|
-
bs,
|
10
|
-
CRDTMeta,
|
11
|
-
DocValue,
|
12
|
-
Index,
|
13
|
-
index,
|
14
|
-
} from "@fireproof/core";
|
15
|
-
import { tracer } from "../helpers.js";
|
16
|
-
import { AppContext } from "@adviser/cement";
|
17
|
-
|
18
|
-
describe("Fresh crdt", function () {
|
19
|
-
let crdt: CRDT;
|
20
|
-
const sthis = ensureSuperThis();
|
21
|
-
afterEach(async () => {
|
22
|
-
await crdt.close();
|
23
|
-
await crdt.destroy();
|
24
|
-
});
|
25
|
-
beforeEach(async () => {
|
26
|
-
await sthis.start();
|
27
|
-
const dbOpts: LedgerOpts = {
|
28
|
-
name: "test-crdt",
|
29
|
-
writeQueue: defaultWriteQueueOpts({}),
|
30
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
31
|
-
storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
|
32
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
33
|
-
ctx: new AppContext(),
|
34
|
-
tracer,
|
35
|
-
};
|
36
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
37
|
-
await crdt.ready();
|
38
|
-
});
|
39
|
-
it("should have an empty head", async () => {
|
40
|
-
const head = crdt.clock.head;
|
41
|
-
expect(head.length).toBe(0);
|
42
|
-
});
|
43
|
-
it("should accept put and return results", async () => {
|
44
|
-
const didPut = await crdt.bulk([{ id: "hello", value: { hello: "world" } }]);
|
45
|
-
const head = didPut.head;
|
46
|
-
expect(head.length).toBe(1);
|
47
|
-
});
|
48
|
-
it("should accept multi-put and return results", async () => {
|
49
|
-
const didPut = await crdt.bulk([
|
50
|
-
{ id: "ace", value: { points: 11 } },
|
51
|
-
{ id: "king", value: { points: 10 } },
|
52
|
-
]);
|
53
|
-
const head = didPut.head;
|
54
|
-
expect(head.length).toBe(1);
|
55
|
-
});
|
56
|
-
});
|
57
|
-
|
58
|
-
describe("CRDT with one record", function () {
|
59
|
-
interface CRDTTestType {
|
60
|
-
readonly hello: string;
|
61
|
-
readonly nice: string;
|
62
|
-
}
|
63
|
-
let crdt: CRDT;
|
64
|
-
let firstPut: CRDTMeta;
|
65
|
-
const sthis = ensureSuperThis();
|
66
|
-
|
67
|
-
afterEach(async () => {
|
68
|
-
await crdt.close();
|
69
|
-
await crdt.destroy();
|
70
|
-
});
|
71
|
-
|
72
|
-
beforeEach(async () => {
|
73
|
-
await sthis.start();
|
74
|
-
const dbOpts: LedgerOpts = {
|
75
|
-
name: "test-crdt",
|
76
|
-
writeQueue: defaultWriteQueueOpts({}),
|
77
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
78
|
-
storeUrls: toStoreURIRuntime(sthis, `test@${sthis.nextId().str}`),
|
79
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
80
|
-
ctx: new AppContext(),
|
81
|
-
tracer,
|
82
|
-
};
|
83
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
84
|
-
firstPut = await crdt.bulk([{ id: "hello", value: { hello: "world" } }]);
|
85
|
-
});
|
86
|
-
it("should have a one-element head", async () => {
|
87
|
-
const head = crdt.clock.head;
|
88
|
-
expect(head.length).toBe(1);
|
89
|
-
});
|
90
|
-
it("should return the head", async () => {
|
91
|
-
expect(firstPut.head.length).toBe(1);
|
92
|
-
});
|
93
|
-
it("return the record on get", async () => {
|
94
|
-
const got = (await crdt.get("hello")) as DocValue<CRDTTestType>;
|
95
|
-
expect(got).toBeTruthy();
|
96
|
-
expect(got.doc.hello).toBe("world");
|
97
|
-
});
|
98
|
-
it("should accept another put and return results", async () => {
|
99
|
-
const didPut = await crdt.bulk([{ id: "nice", value: { nice: "data" } }]);
|
100
|
-
const head = didPut.head;
|
101
|
-
expect(head.length).toBe(1);
|
102
|
-
const { doc } = (await crdt.get("nice")) as DocValue<CRDTTestType>;
|
103
|
-
expect(doc.nice).toBe("data");
|
104
|
-
});
|
105
|
-
it("should allow for a delete", async () => {
|
106
|
-
const didDel = await crdt.bulk([{ id: "hello", del: true }]);
|
107
|
-
expect(didDel.head).toBeTruthy();
|
108
|
-
const got = await crdt.get("hello");
|
109
|
-
expect(got).toBeFalsy();
|
110
|
-
});
|
111
|
-
it("should offer changes", async () => {
|
112
|
-
const { result } = await crdt.changes<Partial<CRDTTestType>>([]);
|
113
|
-
expect(result.length).toBe(1);
|
114
|
-
expect(result[0].id).toBe("hello");
|
115
|
-
expect(result[0].value?.hello).toBe("world");
|
116
|
-
});
|
117
|
-
});
|
118
|
-
|
119
|
-
describe("CRDT with a multi-write", function () {
|
120
|
-
interface CRDTTestType {
|
121
|
-
readonly points: number;
|
122
|
-
}
|
123
|
-
let crdt: CRDT;
|
124
|
-
let firstPut: CRDTMeta;
|
125
|
-
const sthis = ensureSuperThis();
|
126
|
-
|
127
|
-
afterEach(async () => {
|
128
|
-
await crdt.close();
|
129
|
-
await crdt.destroy();
|
130
|
-
});
|
131
|
-
beforeEach(async () => {
|
132
|
-
await sthis.start();
|
133
|
-
const dbOpts: LedgerOpts = {
|
134
|
-
name: "test-crdt",
|
135
|
-
writeQueue: defaultWriteQueueOpts({}),
|
136
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
137
|
-
storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
|
138
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
139
|
-
ctx: new AppContext(),
|
140
|
-
tracer,
|
141
|
-
};
|
142
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
143
|
-
firstPut = await crdt.bulk([
|
144
|
-
{ id: "ace", value: { points: 11 } },
|
145
|
-
{ id: "king", value: { points: 10 } },
|
146
|
-
]);
|
147
|
-
});
|
148
|
-
it("should have a one-element head", async () => {
|
149
|
-
const head = crdt.clock.head;
|
150
|
-
expect(head.length).toBe(1);
|
151
|
-
expect(firstPut.head.length).toBe(1);
|
152
|
-
});
|
153
|
-
it("return the records on get", async () => {
|
154
|
-
const { doc } = (await crdt.get("ace")) as DocValue<CRDTTestType>;
|
155
|
-
expect(doc.points).toBe(11);
|
156
|
-
|
157
|
-
const got2 = (await crdt.get("king")) as DocValue<CRDTTestType>;
|
158
|
-
expect(got2).toBeTruthy();
|
159
|
-
expect(got2.doc.points).toBe(10);
|
160
|
-
});
|
161
|
-
it("should accept another put and return results", async () => {
|
162
|
-
const didPut = await crdt.bulk([{ id: "queen", value: { points: 10 } }]);
|
163
|
-
const head = didPut.head;
|
164
|
-
expect(head.length).toBe(1);
|
165
|
-
const got = (await crdt.get("queen")) as DocValue<CRDTTestType>;
|
166
|
-
expect(got).toBeTruthy();
|
167
|
-
expect(got.doc.points).toBe(10);
|
168
|
-
});
|
169
|
-
it("should offer changes", async () => {
|
170
|
-
const { result } = await crdt.changes<CRDTTestType>([]);
|
171
|
-
expect(result.length).toBe(2);
|
172
|
-
expect(result[0].id).toBe("ace");
|
173
|
-
expect(result[0].value?.points).toBe(11);
|
174
|
-
expect(result[1].id).toBe("king");
|
175
|
-
});
|
176
|
-
it("should offer changes since", async () => {
|
177
|
-
/** @type {CRDTMeta} */
|
178
|
-
const secondPut = await crdt.bulk([
|
179
|
-
{ id: "queen", value: { points: 10 } },
|
180
|
-
{ id: "jack", value: { points: 10 } },
|
181
|
-
]);
|
182
|
-
expect(secondPut.head).toBeTruthy();
|
183
|
-
const { result: r2, head: h2 } = await crdt.changes<CRDTTestType>();
|
184
|
-
expect(r2.length).toBe(4);
|
185
|
-
const { result: r3 } = await crdt.changes(firstPut.head);
|
186
|
-
expect(r3.length).toBe(2);
|
187
|
-
const { result: r4 } = await crdt.changes(h2);
|
188
|
-
expect(r4.length).toBe(0);
|
189
|
-
});
|
190
|
-
});
|
191
|
-
|
192
|
-
interface CRDTTestType {
|
193
|
-
readonly points: number;
|
194
|
-
}
|
195
|
-
describe("CRDT with two multi-writes", function () {
|
196
|
-
let crdt: CRDT;
|
197
|
-
let firstPut: CRDTMeta;
|
198
|
-
let secondPut: CRDTMeta;
|
199
|
-
const sthis = ensureSuperThis();
|
200
|
-
afterEach(async () => {
|
201
|
-
await crdt.close();
|
202
|
-
await crdt.destroy();
|
203
|
-
});
|
204
|
-
beforeEach(async () => {
|
205
|
-
await sthis.start();
|
206
|
-
const dbOpts: LedgerOpts = {
|
207
|
-
name: "test-crdt",
|
208
|
-
writeQueue: defaultWriteQueueOpts({}),
|
209
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
210
|
-
storeUrls: toStoreURIRuntime(sthis, `test-multiple-writes@${sthis.nextId().str}`),
|
211
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
212
|
-
ctx: new AppContext(),
|
213
|
-
tracer,
|
214
|
-
};
|
215
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
216
|
-
firstPut = await crdt.bulk([
|
217
|
-
{ id: "ace", value: { points: 11 } },
|
218
|
-
{ id: "king", value: { points: 10 } },
|
219
|
-
]);
|
220
|
-
secondPut = await crdt.bulk([
|
221
|
-
{ id: "queen", value: { points: 10 } },
|
222
|
-
{ id: "jack", value: { points: 10 } },
|
223
|
-
]);
|
224
|
-
});
|
225
|
-
it("should have a one-element head", async () => {
|
226
|
-
const head = crdt.clock.head;
|
227
|
-
expect(head.length).toBe(1);
|
228
|
-
expect(firstPut.head.length).toBe(1);
|
229
|
-
expect(secondPut.head.length).toBe(1);
|
230
|
-
expect(firstPut.head[0]).not.toBe(secondPut.head[0]);
|
231
|
-
});
|
232
|
-
it("return the records on get", async () => {
|
233
|
-
const ret = await crdt.get("ace");
|
234
|
-
expect(ret).not.toBeNull();
|
235
|
-
const { doc } = ret as DocValue<CRDTTestType>;
|
236
|
-
expect(doc.points).toBe(11);
|
237
|
-
|
238
|
-
for (const key of ["king", "queen", "jack"]) {
|
239
|
-
const { doc } = (await crdt.get(key)) as DocValue<CRDTTestType>;
|
240
|
-
expect(doc.points).toBe(10);
|
241
|
-
}
|
242
|
-
});
|
243
|
-
it("should offer changes", async () => {
|
244
|
-
const { result } = await crdt.changes<CRDTTestType>();
|
245
|
-
expect(result.length).toBe(4);
|
246
|
-
expect(result[0].id).toBe("ace");
|
247
|
-
expect(result[0].value?.points).toBe(11);
|
248
|
-
expect(result[1].id).toBe("king");
|
249
|
-
expect(result[2].id).toBe("queen");
|
250
|
-
expect(result[3].id).toBe("jack");
|
251
|
-
});
|
252
|
-
});
|
253
|
-
|
254
|
-
describe("Compact a named CRDT with writes", function () {
|
255
|
-
let crdt: CRDT;
|
256
|
-
const sthis = ensureSuperThis();
|
257
|
-
afterEach(async () => {
|
258
|
-
await crdt.close();
|
259
|
-
await crdt.destroy();
|
260
|
-
});
|
261
|
-
beforeEach(async () => {
|
262
|
-
await sthis.start();
|
263
|
-
// sthis.env.set(
|
264
|
-
// "FP_STORAGE_URL",
|
265
|
-
// BuildURI.from(sthis.env.get("FP_STORAGE_URL")).setParam(PARAM.STORE_KEY, "insecure").toString(),
|
266
|
-
// );
|
267
|
-
// console.log("FP_STORAGE_URL", sthis.env.get("FP_STORAGE_URL"));
|
268
|
-
const dbOpts: LedgerOpts = {
|
269
|
-
name: "test-crdt",
|
270
|
-
writeQueue: defaultWriteQueueOpts({}),
|
271
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
272
|
-
storeUrls: toStoreURIRuntime(sthis, `named-crdt-compaction-${sthis.nextId().str}`),
|
273
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
274
|
-
ctx: new AppContext(),
|
275
|
-
tracer,
|
276
|
-
};
|
277
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
278
|
-
for (let i = 0; i < 10; i++) {
|
279
|
-
const bulk = [
|
280
|
-
{ id: "ace", value: { points: 11 } },
|
281
|
-
{ id: "king", value: { points: 10 } },
|
282
|
-
];
|
283
|
-
await crdt.bulk(bulk);
|
284
|
-
}
|
285
|
-
// await sleep(1000);
|
286
|
-
});
|
287
|
-
it("has data", async () => {
|
288
|
-
const got = (await crdt.get("ace")) as DocValue<CRDTTestType>;
|
289
|
-
expect(got.doc).toBeTruthy();
|
290
|
-
expect(got.doc.points).toBe(11);
|
291
|
-
});
|
292
|
-
it("should start with blocks", async () => {
|
293
|
-
const blz: bs.AnyBlock[] = [];
|
294
|
-
for await (const blk of crdt.blockstore.entries()) {
|
295
|
-
blz.push(blk);
|
296
|
-
}
|
297
|
-
// expect(blz.map((i) => sthis.txt.decode(i.bytes) + "\n=================\n")).toEqual([
|
298
|
-
//
|
299
|
-
// ])
|
300
|
-
expect(blz.map((i) => i.cid.toString())).toEqual([
|
301
|
-
"bafyreicuomyooryb747esregkhooc4phr656tocowyo6dwcocq22h7qdhu",
|
302
|
-
"bafyreig5jhovaiocwk3vfafzdspgtwinftjygyghjzigkc554muhdmp5ba",
|
303
|
-
"bafyreiegj7yumreue7llzqroebigscedyzrkeir3zneg5q7zia77itowy4",
|
304
|
-
"bafyreihobual6tt3hgdfve4h5uzt7fey62se3dfecbuj6f4ndkkwquke4u",
|
305
|
-
"bafyreibqqcs3r6mhpr3525na6jtqnjcf6dmgskk27x4a2jb3r2qveqgexm",
|
306
|
-
"bafyreibr7udlekt4xgavn54i4zfsdlrmi4r76iq6gh3bdq4xh52px6to3e",
|
307
|
-
"bafyreidg2eyas62nvwvi6ggq44tsldj4kwmupyk2xtwmxbwf77g3noqtp4",
|
308
|
-
"bafyreigbzxzj4eh7ljfvzlc7smdextuuk7gvep5mpnb3igaj5r2qzjlfye",
|
309
|
-
"bafyreicr7takuntpofvk52xerdcoiq7wdt73ef54acoya2geig2ywkqlsi",
|
310
|
-
"bafyreihmmgm5sufvnsgjic4fbizkdbajpy2yrklyieadstbtegfr4qko2m",
|
311
|
-
"bafyreibnu44uyu3ggqwgmnlxodw6dyta3qg7e5qldsjq7bkbv452ova6oa",
|
312
|
-
"bafyreieh4nlzg7enfczmj4z7uxvgrnykh7ajw7crxjrncqfrzj47ip6t6m",
|
313
|
-
"bafyreigqqrccymfvvdfetjd2twsdzjwxbb6cn6tedqntvpgp5vboky2ol4",
|
314
|
-
"bafyreid6kkobhgdmce2cyroepyos3jwumtdrfuzi6suldlxzjsgagc3fvi",
|
315
|
-
"bafyreibo2d56wo5ldey24hygtmsfhdxsqgdpmtne5oitehxjppipru33ma",
|
316
|
-
"bafyreifjv6havcza3is7w6ii345f5akba7e34xqcxwoqozmsnihkivykum",
|
317
|
-
"bafyreig6eroqeg3y7am4bnrun3yzbvd656epzxjyivdpzwqo3j3vpuwysi",
|
318
|
-
"bafyreibpsnfsducp7refempcyqnte54j7ueh4ysdlabggihclbddfnuzxm",
|
319
|
-
"bafyreicfkkygbzz5zawr3xbfah2gy3e7w4opzysew4tini7xnksujj4gf4",
|
320
|
-
"bafyreiddjm5xkpfa5vmyhoj5opocrwo6zbdnmqyhouc5ttfxoilmaf25bm",
|
321
|
-
"bafyreibp7vlgfexaknaoxpemnnwadyfa4cfuc3euzlkslskks2n44wwspu",
|
322
|
-
"bafyreichwj7izzpxeyjkhwl26pq45m4hnhxcgzqfk5ffeqkscafleiwfzm",
|
323
|
-
"bafyreidzjjqou36q2ghqdue4buq7536w4sl5aejni6tw25mzsusl26gtwu",
|
324
|
-
"bafyreibxibqhi6wh5klrje7ne4htffeqyyqfd6y7x2no6wnhid4nixizau",
|
325
|
-
"bafyreidnvv4mwvweup5w52ddre2sl4syhvczm6ejqsmuekajowdl2cf2q4",
|
326
|
-
"bafyreihh6nbfbhgkf5lz7hhsscjgiquw426rxzr3fprbgonekzmyvirrhe",
|
327
|
-
"bafyreiejg3twlaxr7gfvvhtxrhvwaydytdv4guidmtvaz5dskm6gp73ryi",
|
328
|
-
"bafyreiblui55o25dopc5faol3umsnuohb5carto7tot4kicnkfc37he4h4",
|
329
|
-
]);
|
330
|
-
// expect(blz.length).toBe(13);
|
331
|
-
}, 1000000);
|
332
|
-
it("should start with changes", async () => {
|
333
|
-
const { result } = await crdt.changes();
|
334
|
-
expect(result.length).toBe(2);
|
335
|
-
expect(result[0].id).toBe("ace");
|
336
|
-
});
|
337
|
-
it.skip("should have fewer blocks after compact", async () => {
|
338
|
-
await crdt.compact();
|
339
|
-
const blz: bs.AnyBlock[] = [];
|
340
|
-
for await (const blk of crdt.blockstore.entries()) {
|
341
|
-
blz.push(blk);
|
342
|
-
}
|
343
|
-
expect(blz.length).toBe(23);
|
344
|
-
});
|
345
|
-
it("should have data after compact", async () => {
|
346
|
-
await crdt.compact();
|
347
|
-
const got = (await crdt.get("ace")) as DocValue<CRDTTestType>;
|
348
|
-
expect(got.doc).toBeTruthy();
|
349
|
-
expect(got.doc.points).toBe(11);
|
350
|
-
});
|
351
|
-
it("should have changes after compact", async () => {
|
352
|
-
const chs = await crdt.changes();
|
353
|
-
expect(chs.result[0].id).toBe("ace");
|
354
|
-
});
|
355
|
-
});
|
356
|
-
|
357
|
-
describe("CRDT with an index", function () {
|
358
|
-
let crdt: CRDT;
|
359
|
-
let idx: Index<CRDTTestType, number>;
|
360
|
-
const sthis = ensureSuperThis();
|
361
|
-
afterEach(async () => {
|
362
|
-
await crdt.close();
|
363
|
-
await crdt.destroy();
|
364
|
-
});
|
365
|
-
beforeEach(async () => {
|
366
|
-
await sthis.start();
|
367
|
-
const dbOpts: LedgerOpts = {
|
368
|
-
name: "test-crdt",
|
369
|
-
writeQueue: defaultWriteQueueOpts({}),
|
370
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
371
|
-
storeUrls: toStoreURIRuntime(sthis, "test-crdt-cold"),
|
372
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
373
|
-
ctx: new AppContext(),
|
374
|
-
tracer,
|
375
|
-
};
|
376
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
377
|
-
await crdt.bulk([
|
378
|
-
{ id: "ace", value: { points: 11 } },
|
379
|
-
{ id: "king", value: { points: 10 } },
|
380
|
-
]);
|
381
|
-
idx = await index<CRDTTestType, number>(crdt, "points");
|
382
|
-
});
|
383
|
-
it("should query the data", async () => {
|
384
|
-
const got = await idx.query({ range: [9, 12] });
|
385
|
-
expect(got.rows.length).toBe(2);
|
386
|
-
expect(got.rows[0].id).toBe("king");
|
387
|
-
expect(got.rows[0].key).toBe(10);
|
388
|
-
});
|
389
|
-
it("should register the index", async () => {
|
390
|
-
const rIdx = await index<CRDTTestType, number>(crdt, "points");
|
391
|
-
expect(rIdx).toBeTruthy();
|
392
|
-
expect(rIdx.name).toBe("points");
|
393
|
-
const got = await rIdx.query({ range: [9, 12] });
|
394
|
-
expect(got.rows.length).toBe(2);
|
395
|
-
expect(got.rows[0].id).toBe("king");
|
396
|
-
expect(got.rows[0].key).toBe(10);
|
397
|
-
});
|
398
|
-
it.skip("creating a different index with same name should not work", async () => {
|
399
|
-
const e = await index(crdt, "points", (doc) => doc._id)
|
400
|
-
.query()
|
401
|
-
.catch((err) => err);
|
402
|
-
expect(e.message).toMatch(/cannot apply/);
|
403
|
-
});
|
404
|
-
});
|
405
|
-
|
406
|
-
describe("Loader with a committed transaction", function () {
|
407
|
-
let loader: bs.Loader;
|
408
|
-
let blockstore: bs.EncryptedBlockstore;
|
409
|
-
let crdt: CRDT;
|
410
|
-
let done: CRDTMeta;
|
411
|
-
const dbname = "test-loader";
|
412
|
-
const sthis = ensureSuperThis();
|
413
|
-
afterEach(async () => {
|
414
|
-
await crdt.close();
|
415
|
-
await crdt.destroy();
|
416
|
-
});
|
417
|
-
beforeEach(async () => {
|
418
|
-
await sthis.start();
|
419
|
-
const dbOpts: LedgerOpts = {
|
420
|
-
name: "test-crdt",
|
421
|
-
writeQueue: defaultWriteQueueOpts({}),
|
422
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
423
|
-
storeUrls: toStoreURIRuntime(sthis, dbname),
|
424
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
425
|
-
ctx: new AppContext(),
|
426
|
-
tracer,
|
427
|
-
};
|
428
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
429
|
-
blockstore = crdt.blockstore as bs.EncryptedBlockstore;
|
430
|
-
expect(blockstore.loader).toBeTruthy();
|
431
|
-
loader = blockstore.loader as bs.Loader;
|
432
|
-
done = await crdt.bulk([{ id: "foo", value: { foo: "bar" } }]);
|
433
|
-
});
|
434
|
-
// it("should have a name", function () {
|
435
|
-
// expect(loader.ebOpts.storeUrls).toEqual({
|
436
|
-
// data: "file://./dist/fp-dir-file?name=test-loader&store=data&storekey=%40test-loader-data%40&suffix=.car&urlGen=fromEnv",
|
437
|
-
// file: "file://./dist/fp-dir-file?name=test-loader&store=data&storekey=%40test-loader-data%40&urlGen=fromEnv",
|
438
|
-
// meta: "file://./dist/fp-dir-file?name=test-loader&store=meta&storekey=%40test-loader-meta%40&urlGen=fromEnv",
|
439
|
-
// wal: "file://./dist/fp-dir-file?name=test-loader&store=wal&storekey=%40test-loader-wal%40&urlGen=fromEnv",
|
440
|
-
// });
|
441
|
-
// });
|
442
|
-
it("should commit a transaction", function () {
|
443
|
-
expect(done.head).toBeTruthy();
|
444
|
-
// expect(done.cars).toBeTruthy();
|
445
|
-
expect(loader.carLog.length).toBe(1 + 1 /* genesis */);
|
446
|
-
});
|
447
|
-
it("can load the car", async () => {
|
448
|
-
const blk = loader.carLog.asArray()[0][0];
|
449
|
-
expect(blk).toBeTruthy();
|
450
|
-
const reader = await loader.loadCar(blk, loader.attachedStores.local());
|
451
|
-
expect(reader).toBeTruthy();
|
452
|
-
assert(bs.isCarBlockItemReady(reader));
|
453
|
-
const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
|
454
|
-
expect(parsed.cars).toBeTruthy();
|
455
|
-
expect(parsed.cars.length).toBe(0 + 1 /* genesis */);
|
456
|
-
expect(parsed.meta).toBeTruthy();
|
457
|
-
expect(parsed.meta.head).toBeTruthy();
|
458
|
-
});
|
459
|
-
});
|
460
|
-
|
461
|
-
describe("Loader with two committed transactions", function () {
|
462
|
-
let loader: bs.Loader;
|
463
|
-
let crdt: CRDT;
|
464
|
-
let blockstore: bs.EncryptedBlockstore;
|
465
|
-
let done1: CRDTMeta;
|
466
|
-
let done2: CRDTMeta;
|
467
|
-
const sthis = ensureSuperThis();
|
468
|
-
afterEach(async () => {
|
469
|
-
await crdt.close();
|
470
|
-
await crdt.destroy();
|
471
|
-
});
|
472
|
-
beforeEach(async () => {
|
473
|
-
await sthis.start();
|
474
|
-
const dbOpts: LedgerOpts = {
|
475
|
-
name: "test-crdt",
|
476
|
-
writeQueue: defaultWriteQueueOpts({}),
|
477
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
478
|
-
storeUrls: toStoreURIRuntime(sthis, "test-loader"),
|
479
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
480
|
-
ctx: new AppContext(),
|
481
|
-
tracer,
|
482
|
-
};
|
483
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
484
|
-
blockstore = crdt.blockstore as bs.EncryptedBlockstore;
|
485
|
-
expect(blockstore.loader).toBeTruthy();
|
486
|
-
loader = blockstore.loader as bs.Loader;
|
487
|
-
done1 = await crdt.bulk([{ id: "apple", value: { foo: "bar" } }]);
|
488
|
-
done2 = await crdt.bulk([{ id: "orange", value: { foo: "bar" } }]);
|
489
|
-
});
|
490
|
-
it("should commit two transactions", function () {
|
491
|
-
expect(done1.head).toBeTruthy();
|
492
|
-
// expect(done1.cars).toBeTruthy();
|
493
|
-
expect(done2.head).toBeTruthy();
|
494
|
-
// expect(done2.cars).toBeTruthy();
|
495
|
-
expect(done1.head).not.toBe(done2.head);
|
496
|
-
// expect(done1.cars).not.toBe(done2.cars);
|
497
|
-
// expect(blockstore.transactions.size).toBe(2);
|
498
|
-
expect(loader.carLog.length).toBe(2 + 1 /* genesis */);
|
499
|
-
// expect(loader.carLog.indexOf(done1.cars)).toBe(1);
|
500
|
-
// expect(loader.carLog.map((cs) => cs.toString()).indexOf(done1.cars.toString())).toBe(1);
|
501
|
-
// expect(loader.carLog.indexOf(done2.cars)).toBe(0);
|
502
|
-
// expect(loader.carLog.map((cs) => cs.toString()).indexOf(done2.cars.toString())).toBe(0);
|
503
|
-
});
|
504
|
-
it("can load the car", async () => {
|
505
|
-
const blk = loader.carLog.asArray()[0][0];
|
506
|
-
expect(blk).toBeTruthy();
|
507
|
-
const reader = await loader.loadCar(blk, loader.attachedStores.local());
|
508
|
-
expect(reader).toBeTruthy();
|
509
|
-
assert(bs.isCarBlockItemReady(reader));
|
510
|
-
const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
|
511
|
-
expect(parsed.cars).toBeTruthy();
|
512
|
-
expect(parsed.cars.length).toBe(1 + 1 /* genesis */);
|
513
|
-
expect(parsed.meta).toBeTruthy();
|
514
|
-
expect(parsed.meta.head).toBeTruthy();
|
515
|
-
});
|
516
|
-
});
|
517
|
-
|
518
|
-
describe("Loader with many committed transactions", function () {
|
519
|
-
let loader: bs.Loader;
|
520
|
-
let blockstore: bs.EncryptedBlockstore;
|
521
|
-
let crdt: CRDT;
|
522
|
-
let dones: CRDTMeta[];
|
523
|
-
const count = 10;
|
524
|
-
const sthis = ensureSuperThis();
|
525
|
-
afterEach(async () => {
|
526
|
-
await crdt.close();
|
527
|
-
await crdt.destroy();
|
528
|
-
});
|
529
|
-
beforeEach(async () => {
|
530
|
-
await sthis.start();
|
531
|
-
const dbOpts: LedgerOpts = {
|
532
|
-
name: "test-crdt",
|
533
|
-
writeQueue: defaultWriteQueueOpts({}),
|
534
|
-
keyBag: rt.defaultKeyBagOpts(sthis),
|
535
|
-
storeUrls: toStoreURIRuntime(sthis, "test-loader-many"),
|
536
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
537
|
-
ctx: new AppContext(),
|
538
|
-
tracer,
|
539
|
-
};
|
540
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
541
|
-
blockstore = crdt.blockstore as bs.EncryptedBlockstore;
|
542
|
-
expect(blockstore.loader).toBeTruthy();
|
543
|
-
loader = blockstore.loader as bs.Loader;
|
544
|
-
dones = [];
|
545
|
-
for (let i = 0; i < count; i++) {
|
546
|
-
const did = await crdt.bulk([{ id: `apple${i}`, value: { foo: "bar" } }]);
|
547
|
-
dones.push(did);
|
548
|
-
}
|
549
|
-
});
|
550
|
-
it("should commit many transactions", function () {
|
551
|
-
for (const done of dones) {
|
552
|
-
expect(done.head).toBeTruthy();
|
553
|
-
// expect(done.cars).toBeTruthy();
|
554
|
-
}
|
555
|
-
expect(blockstore.transactions.size).toBe(0); // cleaned up on commit
|
556
|
-
expect(loader.carLog.length).toBe(count + 1 /* genesis */);
|
557
|
-
});
|
558
|
-
it("can load the car", async () => {
|
559
|
-
const blk = loader.carLog.asArray()[2][0];
|
560
|
-
// expect(dones[5].cars).toBeTruthy();
|
561
|
-
const reader = await loader.loadCar(blk, loader.attachedStores.local());
|
562
|
-
expect(reader).toBeTruthy();
|
563
|
-
assert(bs.isCarBlockItemReady(reader));
|
564
|
-
const parsed = await bs.parseCarFile<CRDTMeta>(reader, loader.logger);
|
565
|
-
expect(parsed.cars).toBeTruthy();
|
566
|
-
expect(parsed.cars.length).toBe(7 + 1 /* genesis */);
|
567
|
-
expect(parsed.meta).toBeTruthy();
|
568
|
-
expect(parsed.meta.head).toBeTruthy();
|
569
|
-
});
|
570
|
-
});
|