@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,74 +0,0 @@
|
|
1
|
-
import { fireproof, DocResponse, DocWithId, index, Database, isDatabase } from "@fireproof/core";
|
2
|
-
import { mockSuperThis } from "../helpers.js";
|
3
|
-
|
4
|
-
describe("Hello World Test", function () {
|
5
|
-
it("should pass the hello world test", function () {
|
6
|
-
const result = fireproof("hello"); // call to your library function
|
7
|
-
expect(result.name).toBe("hello");
|
8
|
-
});
|
9
|
-
});
|
10
|
-
|
11
|
-
describe("hello public API", () => {
|
12
|
-
interface TestDoc {
|
13
|
-
foo: string;
|
14
|
-
}
|
15
|
-
let db: Database;
|
16
|
-
let ok: DocResponse;
|
17
|
-
let doc: DocWithId<TestDoc>;
|
18
|
-
// let idx: Index<string, TestDoc>;
|
19
|
-
const sthis = mockSuperThis();
|
20
|
-
afterEach(async () => {
|
21
|
-
await db.close();
|
22
|
-
await db.destroy();
|
23
|
-
});
|
24
|
-
beforeEach(async () => {
|
25
|
-
await sthis.start();
|
26
|
-
db = fireproof("test-public-api");
|
27
|
-
index<TestDoc, string>(db, "test-index", (doc) => doc.foo);
|
28
|
-
ok = await db.put({ _id: "test", foo: "bar" });
|
29
|
-
doc = await db.get("test");
|
30
|
-
});
|
31
|
-
it("should have a ledger", function () {
|
32
|
-
expect(db).toBeTruthy();
|
33
|
-
expect(isDatabase(db)).toBeTruthy();
|
34
|
-
});
|
35
|
-
it("should put", function () {
|
36
|
-
expect(ok).toBeTruthy();
|
37
|
-
expect(ok.id).toBe("test");
|
38
|
-
});
|
39
|
-
it("should get", function () {
|
40
|
-
expect(doc.foo).toBe("bar");
|
41
|
-
});
|
42
|
-
it("should get when you open it again", async () => {
|
43
|
-
await db.close();
|
44
|
-
db = fireproof("test-public-api");
|
45
|
-
doc = await db.get("test");
|
46
|
-
expect(doc.foo).toBe("bar");
|
47
|
-
});
|
48
|
-
});
|
49
|
-
|
50
|
-
describe("Simplified Reopening a ledger", function () {
|
51
|
-
let db: Database;
|
52
|
-
afterEach(async () => {
|
53
|
-
await db.close();
|
54
|
-
await db.destroy();
|
55
|
-
});
|
56
|
-
beforeEach(async () => {
|
57
|
-
db = fireproof("test-reopen-simple");
|
58
|
-
const ok = await db.put({ _id: "test", foo: "bar" });
|
59
|
-
expect(ok).toBeTruthy();
|
60
|
-
expect(ok.id).toBe("test");
|
61
|
-
});
|
62
|
-
|
63
|
-
it("should persist data", async () => {
|
64
|
-
const doc = await db.get<{ foo: string }>("test");
|
65
|
-
expect(doc.foo).toBe("bar");
|
66
|
-
});
|
67
|
-
|
68
|
-
it("should have the same data on reopen", async () => {
|
69
|
-
const db2 = fireproof("test-reopen-simple");
|
70
|
-
const doc = await db2.get<{ foo: string }>("test");
|
71
|
-
expect(doc.foo).toBe("bar");
|
72
|
-
await db2.close();
|
73
|
-
});
|
74
|
-
});
|
@@ -1,458 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
Index,
|
3
|
-
index,
|
4
|
-
CRDT,
|
5
|
-
IndexRows,
|
6
|
-
toStoreURIRuntime,
|
7
|
-
bs,
|
8
|
-
rt,
|
9
|
-
defaultWriteQueueOpts,
|
10
|
-
ensureSuperThis,
|
11
|
-
LedgerOpts,
|
12
|
-
Database,
|
13
|
-
CRDTImpl,
|
14
|
-
fireproof,
|
15
|
-
} from "@fireproof/core";
|
16
|
-
import { tracer } from "../helpers.js";
|
17
|
-
import { AppContext } from "@adviser/cement";
|
18
|
-
|
19
|
-
interface TestType {
|
20
|
-
readonly title: string;
|
21
|
-
readonly score: number;
|
22
|
-
}
|
23
|
-
|
24
|
-
describe("basic Index", () => {
|
25
|
-
let db: Database;
|
26
|
-
let indexer: Index<TestType, string>;
|
27
|
-
let didMap: boolean;
|
28
|
-
const sthis = ensureSuperThis();
|
29
|
-
afterEach(async () => {
|
30
|
-
await db.close();
|
31
|
-
await db.destroy();
|
32
|
-
// await indexer.close();
|
33
|
-
// await indexer.destroy();
|
34
|
-
});
|
35
|
-
beforeEach(async () => {
|
36
|
-
await sthis.start();
|
37
|
-
db = fireproof("test-indexer");
|
38
|
-
await db.put({ title: "amazing" });
|
39
|
-
await db.put({ title: "creative" });
|
40
|
-
await db.put({ title: "bazillas" });
|
41
|
-
indexer = new Index<TestType, string>(sthis, db.ledger.crdt, "hello", (doc) => {
|
42
|
-
didMap = true;
|
43
|
-
return doc.title;
|
44
|
-
});
|
45
|
-
await indexer.ready();
|
46
|
-
});
|
47
|
-
it("should have properties", function () {
|
48
|
-
expect(indexer.crdt).toBe(db.ledger.crdt);
|
49
|
-
// expect(indexer.crdt.name).toBe("test-indexer");
|
50
|
-
expect(indexer.name).toBe("hello");
|
51
|
-
expect(indexer.mapFn).toBeTruthy();
|
52
|
-
});
|
53
|
-
it("should call the map function on first query", async () => {
|
54
|
-
didMap = false;
|
55
|
-
await indexer.query();
|
56
|
-
expect(didMap).toBeTruthy();
|
57
|
-
});
|
58
|
-
it("should not call the map function on second query", async () => {
|
59
|
-
await indexer.query();
|
60
|
-
didMap = false;
|
61
|
-
await indexer.query();
|
62
|
-
expect(didMap).toBeFalsy();
|
63
|
-
});
|
64
|
-
it("should get results", async () => {
|
65
|
-
const result = await indexer.query();
|
66
|
-
expect(result).toBeTruthy();
|
67
|
-
expect(result.rows).toBeTruthy();
|
68
|
-
expect(result.rows.length).toBe(3);
|
69
|
-
});
|
70
|
-
it("should be in order", async () => {
|
71
|
-
const { rows } = await indexer.query();
|
72
|
-
expect(rows[0].key).toBe("amazing");
|
73
|
-
});
|
74
|
-
it("should work with limit", async () => {
|
75
|
-
const { rows } = await indexer.query({ limit: 1 });
|
76
|
-
expect(rows.length).toBe(1);
|
77
|
-
});
|
78
|
-
it("should work with descending", async () => {
|
79
|
-
const { rows } = await indexer.query({ descending: true });
|
80
|
-
expect(rows[0].key).toBe("creative");
|
81
|
-
});
|
82
|
-
it("should range query all", async () => {
|
83
|
-
const { rows } = await indexer.query({ range: ["a", "z"] });
|
84
|
-
expect(rows.length).toBe(3);
|
85
|
-
expect(rows[0].key).toBe("amazing");
|
86
|
-
});
|
87
|
-
it("should range query all twice", async () => {
|
88
|
-
const { rows } = await indexer.query({ range: ["a", "z"] });
|
89
|
-
expect(rows.length).toBe(3);
|
90
|
-
expect(rows[0].key).toBe("amazing");
|
91
|
-
const { rows: rows2 } = await indexer.query({ range: ["a", "z"] });
|
92
|
-
expect(rows2.length).toBe(3);
|
93
|
-
expect(rows2[0].key).toBe("amazing");
|
94
|
-
});
|
95
|
-
it("should range query", async () => {
|
96
|
-
const { rows } = await indexer.query({ range: ["b", "d"] });
|
97
|
-
expect(rows[0].key).toBe("bazillas");
|
98
|
-
});
|
99
|
-
it("should key query", async () => {
|
100
|
-
const { rows } = await indexer.query({ key: "bazillas" });
|
101
|
-
expect(rows.length).toBe(1);
|
102
|
-
});
|
103
|
-
it("should include docs", async () => {
|
104
|
-
const { rows } = await indexer.query({ includeDocs: true });
|
105
|
-
expect(rows[0]).toBeTruthy();
|
106
|
-
expect(rows[0].id).toBeTruthy();
|
107
|
-
expect(rows[0].doc).toBeTruthy();
|
108
|
-
expect(rows[0].doc?._id).toBe(rows[0].id);
|
109
|
-
});
|
110
|
-
});
|
111
|
-
|
112
|
-
describe("Index query with compound key", function () {
|
113
|
-
let db: Database;
|
114
|
-
let indexer: Index<TestType, [string, number]>;
|
115
|
-
const sthis = ensureSuperThis();
|
116
|
-
afterEach(async () => {
|
117
|
-
await db.close();
|
118
|
-
await db.destroy();
|
119
|
-
// await indexer.close();
|
120
|
-
// await indexer.destroy();
|
121
|
-
});
|
122
|
-
beforeEach(async () => {
|
123
|
-
await sthis.start();
|
124
|
-
db = fireproof("test-indexer");
|
125
|
-
await db.put({ title: "amazing", score: 1 });
|
126
|
-
await db.put({ title: "creative", score: 2 });
|
127
|
-
await db.put({ title: "creative", score: 20 });
|
128
|
-
await db.put({ title: "bazillas", score: 3 });
|
129
|
-
indexer = new Index<TestType, [string, number]>(sthis, db.ledger.crdt, "hello", (doc) => {
|
130
|
-
return [doc.title, doc.score];
|
131
|
-
});
|
132
|
-
await indexer.ready();
|
133
|
-
});
|
134
|
-
it("should prefix query", async () => {
|
135
|
-
const { rows } = await indexer.query({ prefix: "creative" });
|
136
|
-
expect(rows.length).toBe(2);
|
137
|
-
expect(rows[0].key).toEqual(["creative", 2]);
|
138
|
-
expect(rows[1].key).toEqual(["creative", 20]);
|
139
|
-
});
|
140
|
-
});
|
141
|
-
|
142
|
-
describe("basic Index with map fun", function () {
|
143
|
-
let db: Database;
|
144
|
-
let indexer: Index<TestType, string>;
|
145
|
-
const sthis = ensureSuperThis();
|
146
|
-
afterEach(async () => {
|
147
|
-
await db.close();
|
148
|
-
await db.destroy();
|
149
|
-
// await indexer.close();
|
150
|
-
// await indexer.destroy();
|
151
|
-
});
|
152
|
-
beforeEach(async () => {
|
153
|
-
await sthis.start();
|
154
|
-
db = fireproof("test-indexer");
|
155
|
-
await db.put({ title: "amazing" });
|
156
|
-
await db.put({ title: "creative" });
|
157
|
-
await db.put({ title: "bazillas" });
|
158
|
-
indexer = new Index<TestType, string>(sthis, db.ledger.crdt, "hello", (doc, map) => {
|
159
|
-
map(doc.title);
|
160
|
-
});
|
161
|
-
await indexer.ready();
|
162
|
-
});
|
163
|
-
it("should get results", async () => {
|
164
|
-
const result = await indexer.query();
|
165
|
-
expect(result).toBeTruthy();
|
166
|
-
expect(result.rows).toBeTruthy();
|
167
|
-
expect(result.rows.length).toBe(3);
|
168
|
-
expect(result.rows[0].key).toBe("amazing");
|
169
|
-
});
|
170
|
-
});
|
171
|
-
|
172
|
-
describe("basic Index with map fun with value", function () {
|
173
|
-
let db: Database;
|
174
|
-
let indexer: Index<TestType, string, number>;
|
175
|
-
const sthis = ensureSuperThis();
|
176
|
-
afterEach(async () => {
|
177
|
-
await db.close();
|
178
|
-
await db.destroy();
|
179
|
-
});
|
180
|
-
beforeEach(async () => {
|
181
|
-
await sthis.start();
|
182
|
-
db = fireproof("test-indexer");
|
183
|
-
await db.put({ title: "amazing" });
|
184
|
-
await db.put({ title: "creative" });
|
185
|
-
await db.put({ title: "bazillas" });
|
186
|
-
indexer = new Index<TestType, string, number>(sthis, db.ledger.crdt, "hello", (doc, map) => {
|
187
|
-
map(doc.title, doc.title.length);
|
188
|
-
});
|
189
|
-
});
|
190
|
-
it("should get results", async () => {
|
191
|
-
const result = await indexer.query();
|
192
|
-
expect(result).toBeTruthy();
|
193
|
-
expect(result.rows).toBeTruthy();
|
194
|
-
expect(result.rows.length).toBe(3);
|
195
|
-
expect(result.rows[0].key).toBe("amazing");
|
196
|
-
// @jchris why is this not a object?
|
197
|
-
expect(result.rows[0].value).toBe(7);
|
198
|
-
});
|
199
|
-
it("should include docs", async () => {
|
200
|
-
const { rows } = await indexer.query({ includeDocs: true });
|
201
|
-
expect(rows[0].doc).toBeTruthy();
|
202
|
-
expect(rows[0].doc?._id).toBe(rows[0].id);
|
203
|
-
expect(rows.length).toBe(3);
|
204
|
-
expect(rows[0].key).toBe("amazing");
|
205
|
-
// @jchris why is this not a object?
|
206
|
-
expect(rows[0].value).toBe(7);
|
207
|
-
});
|
208
|
-
});
|
209
|
-
|
210
|
-
describe("Index query with map and compound key", function () {
|
211
|
-
let db: Database;
|
212
|
-
let indexer: Index<TestType, [string, number]>;
|
213
|
-
const sthis = ensureSuperThis();
|
214
|
-
afterEach(async () => {
|
215
|
-
await db.close();
|
216
|
-
await db.destroy();
|
217
|
-
// await indexer.close();
|
218
|
-
// await indexer.destroy();
|
219
|
-
});
|
220
|
-
beforeEach(async () => {
|
221
|
-
await sthis.start();
|
222
|
-
db = fireproof("test-indexer");
|
223
|
-
await db.put({ title: "amazing", score: 1 });
|
224
|
-
await db.put({ title: "creative", score: 2 });
|
225
|
-
await db.put({ title: "creative", score: 20 });
|
226
|
-
await db.put({ title: "bazillas", score: 3 });
|
227
|
-
indexer = new Index<TestType, [string, number]>(sthis, db.ledger.crdt, "hello", (doc, emit) => {
|
228
|
-
emit([doc.title, doc.score]);
|
229
|
-
});
|
230
|
-
await indexer.ready();
|
231
|
-
});
|
232
|
-
it("should prefix query", async () => {
|
233
|
-
const { rows } = await indexer.query({ prefix: "creative" });
|
234
|
-
expect(rows.length).toBe(2);
|
235
|
-
expect(rows[0].key).toEqual(["creative", 2]);
|
236
|
-
expect(rows[1].key).toEqual(["creative", 20]);
|
237
|
-
});
|
238
|
-
});
|
239
|
-
|
240
|
-
describe("basic Index with string fun", function () {
|
241
|
-
let db: Database;
|
242
|
-
let indexer: Index<TestType, string>;
|
243
|
-
const sthis = ensureSuperThis();
|
244
|
-
afterEach(async () => {
|
245
|
-
await db.close();
|
246
|
-
await db.destroy();
|
247
|
-
// await indexer.close();
|
248
|
-
// await indexer.destroy();
|
249
|
-
});
|
250
|
-
beforeEach(async () => {
|
251
|
-
await sthis.start();
|
252
|
-
db = fireproof("test-indexer");
|
253
|
-
await db.put({ title: "amazing" });
|
254
|
-
await db.put({ title: "creative" });
|
255
|
-
await db.put({ title: "bazillas" });
|
256
|
-
indexer = new Index<TestType, string>(sthis, db.ledger.crdt, "title");
|
257
|
-
await indexer.ready();
|
258
|
-
});
|
259
|
-
it("should get results", async () => {
|
260
|
-
const result = await indexer.query();
|
261
|
-
expect(result).toBeTruthy();
|
262
|
-
expect(result.rows).toBeTruthy();
|
263
|
-
expect(result.rows.length).toBe(3);
|
264
|
-
});
|
265
|
-
it("should include docs", async () => {
|
266
|
-
const { rows } = await indexer.query();
|
267
|
-
expect(rows.length).toBeTruthy();
|
268
|
-
expect(rows[0].doc).toBeTruthy();
|
269
|
-
});
|
270
|
-
});
|
271
|
-
|
272
|
-
describe("basic Index with string fun and numeric keys", function () {
|
273
|
-
let db: Database;
|
274
|
-
let indexer: Index<TestType, string>;
|
275
|
-
const sthis = ensureSuperThis();
|
276
|
-
afterEach(async () => {
|
277
|
-
await db.close();
|
278
|
-
await db.destroy();
|
279
|
-
// await indexer.close();
|
280
|
-
// await indexer.destroy();
|
281
|
-
});
|
282
|
-
beforeEach(async () => {
|
283
|
-
await sthis.start();
|
284
|
-
db = fireproof("test-indexer");
|
285
|
-
await db.put({ points: 0 });
|
286
|
-
await db.put({ points: 1 });
|
287
|
-
await db.put({ points: 2 });
|
288
|
-
await db.put({ points: 3 });
|
289
|
-
indexer = new Index<TestType, string>(sthis, db.ledger.crdt, "points");
|
290
|
-
await indexer.ready();
|
291
|
-
});
|
292
|
-
it("should get results", async () => {
|
293
|
-
const result = await indexer.query();
|
294
|
-
expect(result).toBeTruthy();
|
295
|
-
expect(result.rows).toBeTruthy();
|
296
|
-
expect(result.rows.length).toBe(4);
|
297
|
-
});
|
298
|
-
it("should include docs", async () => {
|
299
|
-
const { rows } = await indexer.query();
|
300
|
-
expect(rows.length).toBeTruthy();
|
301
|
-
expect(rows[0].doc).toBeTruthy();
|
302
|
-
});
|
303
|
-
});
|
304
|
-
|
305
|
-
describe("basic Index upon cold start", function () {
|
306
|
-
interface TestType {
|
307
|
-
title: string;
|
308
|
-
score?: number;
|
309
|
-
}
|
310
|
-
let crdt: CRDT;
|
311
|
-
let indexer: Index<TestType>;
|
312
|
-
let didMap: number;
|
313
|
-
let mapFn: (doc: TestType) => string;
|
314
|
-
let result: IndexRows<TestType>;
|
315
|
-
const sthis = ensureSuperThis();
|
316
|
-
let dbOpts: LedgerOpts;
|
317
|
-
// result, mapFn;
|
318
|
-
afterEach(async () => {
|
319
|
-
await crdt.close();
|
320
|
-
await crdt.destroy();
|
321
|
-
// await indexer.close();
|
322
|
-
// await indexer.destroy();
|
323
|
-
});
|
324
|
-
beforeEach(async () => {
|
325
|
-
await sthis.start();
|
326
|
-
const logger = sthis.logger.With().Module("IndexerTest").Logger();
|
327
|
-
logger.Debug().Msg("enter beforeEach");
|
328
|
-
dbOpts = {
|
329
|
-
name: "test-indexer-cold",
|
330
|
-
writeQueue: defaultWriteQueueOpts({}),
|
331
|
-
keyBag: rt.kb.defaultKeyBagOpts(sthis),
|
332
|
-
storeUrls: toStoreURIRuntime(sthis, "test-indexer-cold"),
|
333
|
-
storeEnDe: bs.ensureStoreEnDeFile({}),
|
334
|
-
ctx: new AppContext(),
|
335
|
-
tracer,
|
336
|
-
};
|
337
|
-
crdt = new CRDTImpl(sthis, dbOpts);
|
338
|
-
await crdt.bulk([
|
339
|
-
{ id: "abc1", value: { title: "amazing" } },
|
340
|
-
{ id: "abc2", value: { title: "creative" } },
|
341
|
-
{ id: "abc3", value: { title: "bazillas" } },
|
342
|
-
]);
|
343
|
-
logger.Debug().Msg("post bulk beforeEach");
|
344
|
-
didMap = 0;
|
345
|
-
mapFn = (doc) => {
|
346
|
-
didMap++;
|
347
|
-
return doc.title;
|
348
|
-
};
|
349
|
-
indexer = await index<TestType>(crdt, "hello", mapFn);
|
350
|
-
logger.Debug().Msg("post index beforeEach");
|
351
|
-
await indexer.ready();
|
352
|
-
logger.Debug().Msg("post indexer.ready beforeEach");
|
353
|
-
// new Index(db._crdt.indexBlockstore, db._crdt, 'hello', mapFn)
|
354
|
-
result = await indexer.query();
|
355
|
-
|
356
|
-
logger.Debug().Msg("post indexer.query beforeEach");
|
357
|
-
expect(indexer.indexHead).toEqual(crdt.clock.head);
|
358
|
-
});
|
359
|
-
it("should call map on first query", function () {
|
360
|
-
expect(didMap).toBeTruthy();
|
361
|
-
expect(didMap).toEqual(3);
|
362
|
-
});
|
363
|
-
it("should get results on first query", function () {
|
364
|
-
expect(result).toBeTruthy();
|
365
|
-
expect(result.rows).toBeTruthy();
|
366
|
-
expect(result.rows.length).toEqual(3);
|
367
|
-
});
|
368
|
-
it("should work on cold load", async () => {
|
369
|
-
const crdt2 = new CRDTImpl(sthis, dbOpts);
|
370
|
-
await crdt2.ready();
|
371
|
-
const { result, head } = await crdt2.changes();
|
372
|
-
expect(result).toBeTruthy();
|
373
|
-
await crdt2.ready();
|
374
|
-
const indexer2 = await index<TestType>(crdt2, "hello", mapFn);
|
375
|
-
await indexer2.ready();
|
376
|
-
const result2 = await indexer2.query();
|
377
|
-
expect(indexer2.indexHead).toEqual(head);
|
378
|
-
expect(result2).toBeTruthy();
|
379
|
-
expect(result2.rows.length).toEqual(3);
|
380
|
-
expect(indexer2.indexHead).toEqual(head);
|
381
|
-
});
|
382
|
-
it.skip("should not rerun the map function on seen changes", async () => {
|
383
|
-
didMap = 0;
|
384
|
-
const crdt2 = new CRDTImpl(sthis, dbOpts);
|
385
|
-
const indexer2 = await index(crdt2, "hello", mapFn);
|
386
|
-
const { result, head } = await crdt2.changes([]);
|
387
|
-
expect(result.length).toEqual(3);
|
388
|
-
expect(head.length).toEqual(1);
|
389
|
-
const { result: ch2, head: h2 } = await crdt2.changes(head);
|
390
|
-
expect(ch2.length).toEqual(0);
|
391
|
-
expect(h2.length).toEqual(1);
|
392
|
-
expect(h2).toEqual(head);
|
393
|
-
const result2 = await indexer2.query();
|
394
|
-
expect(indexer2.indexHead).toEqual(head);
|
395
|
-
expect(result2).toBeTruthy();
|
396
|
-
expect(result2.rows.length).toEqual(3);
|
397
|
-
expect(didMap).toEqual(0);
|
398
|
-
await crdt2.bulk([{ id: "abc4", value: { title: "despicable", score: 0 } }]);
|
399
|
-
|
400
|
-
const { result: ch3, head: h3 } = await crdt2.changes(head);
|
401
|
-
expect(ch3.length).toEqual(1);
|
402
|
-
expect(h3.length).toEqual(1);
|
403
|
-
const result3 = await indexer2.query();
|
404
|
-
expect(result3).toBeTruthy();
|
405
|
-
expect(result3.rows.length).toEqual(4);
|
406
|
-
expect(didMap).toEqual(1);
|
407
|
-
});
|
408
|
-
it("should ignore meta when map function definiton changes", async () => {
|
409
|
-
const crdt2 = new CRDTImpl(sthis, dbOpts);
|
410
|
-
const result = await index<TestType>(crdt2, "hello", (doc) => doc.title.split("").reverse().join("")).query();
|
411
|
-
expect(result.rows.length).toEqual(3);
|
412
|
-
expect(result.rows[0].key).toEqual("evitaerc"); // creative
|
413
|
-
});
|
414
|
-
});
|
415
|
-
|
416
|
-
describe("basic Index with no data", function () {
|
417
|
-
let db: Database;
|
418
|
-
let indexer: Index<TestType>;
|
419
|
-
let didMap: boolean;
|
420
|
-
const sthis = ensureSuperThis();
|
421
|
-
afterEach(async () => {
|
422
|
-
await db.close();
|
423
|
-
await db.destroy();
|
424
|
-
// await indexer.close();
|
425
|
-
// await indexer.destroy();
|
426
|
-
});
|
427
|
-
beforeEach(async () => {
|
428
|
-
await sthis.start();
|
429
|
-
db = fireproof("test-indexer");
|
430
|
-
indexer = new Index<TestType>(sthis, db.ledger.crdt, "hello", (doc) => {
|
431
|
-
didMap = true;
|
432
|
-
return doc.title;
|
433
|
-
});
|
434
|
-
await indexer.ready();
|
435
|
-
});
|
436
|
-
it("should have properties", function () {
|
437
|
-
expect(indexer.crdt).toEqual(db.ledger.crdt);
|
438
|
-
expect(indexer.name).toEqual("hello");
|
439
|
-
expect(indexer.mapFn).toBeTruthy();
|
440
|
-
});
|
441
|
-
it("should not call the map function on first query", async () => {
|
442
|
-
didMap = false;
|
443
|
-
await indexer.query();
|
444
|
-
expect(didMap).toBeFalsy();
|
445
|
-
});
|
446
|
-
it("should not call the map function on second query", async () => {
|
447
|
-
await indexer.query();
|
448
|
-
didMap = false;
|
449
|
-
await indexer.query();
|
450
|
-
expect(didMap).toBeFalsy();
|
451
|
-
});
|
452
|
-
it("should get results", async () => {
|
453
|
-
const result = await indexer.query();
|
454
|
-
expect(result).toBeTruthy();
|
455
|
-
expect(result.rows).toBeTruthy();
|
456
|
-
expect(result.rows.length).toEqual(0);
|
457
|
-
});
|
458
|
-
});
|
@@ -1,65 +0,0 @@
|
|
1
|
-
import { Database, ensureSuperThis, fireproof } from "@fireproof/core";
|
2
|
-
|
3
|
-
interface DBItem {
|
4
|
-
readonly db: Database;
|
5
|
-
readonly name: string;
|
6
|
-
}
|
7
|
-
|
8
|
-
function shuffle(ina: DBItem[]): DBItem[] {
|
9
|
-
const array = [...ina];
|
10
|
-
for (let i = array.length - 1; i > 0; i--) {
|
11
|
-
const j = Math.floor(Math.random() * (i + 1));
|
12
|
-
[array[i], array[j]] = [array[j], array[i]];
|
13
|
-
}
|
14
|
-
return array;
|
15
|
-
}
|
16
|
-
|
17
|
-
describe("Multiple Databases", () => {
|
18
|
-
const dbs: DBItem[] = [];
|
19
|
-
const sthis = ensureSuperThis();
|
20
|
-
const rows = 10;
|
21
|
-
const concurrentDbs = 7;
|
22
|
-
beforeEach(async () => {
|
23
|
-
const group = sthis.nextId().str;
|
24
|
-
await Promise.all(
|
25
|
-
Array(concurrentDbs)
|
26
|
-
.fill(0)
|
27
|
-
.map(async (_, i) => {
|
28
|
-
const name = `db-${group}-${i}`;
|
29
|
-
const db = fireproof(name);
|
30
|
-
dbs.push({ db, name });
|
31
|
-
for (let i = 0; i < rows; i++) {
|
32
|
-
await db.put({ _id: `${name}-${i}`, hello: "world" });
|
33
|
-
}
|
34
|
-
}),
|
35
|
-
);
|
36
|
-
});
|
37
|
-
afterEach(async () => {
|
38
|
-
await Promise.all(
|
39
|
-
dbs.map(async (db) => {
|
40
|
-
await db.db.close();
|
41
|
-
await db.db.destroy();
|
42
|
-
}),
|
43
|
-
);
|
44
|
-
dbs.length = 0;
|
45
|
-
});
|
46
|
-
|
47
|
-
it("random access to multiple databases", async () => {
|
48
|
-
const random = shuffle(dbs);
|
49
|
-
const res = await Promise.all(
|
50
|
-
random.map((di) => {
|
51
|
-
return Promise.all(
|
52
|
-
Array(10)
|
53
|
-
.fill(0)
|
54
|
-
.map(async (_, i) => di.db.get(`${di.name}-${i}`)),
|
55
|
-
);
|
56
|
-
}),
|
57
|
-
);
|
58
|
-
// console.log(res)
|
59
|
-
res.forEach((res, i) => {
|
60
|
-
for (let j = 0; j < rows; j++) {
|
61
|
-
expect(res[j]._id).toBe(`${random[i].name}-${j}`);
|
62
|
-
}
|
63
|
-
});
|
64
|
-
});
|
65
|
-
});
|