@fireproof/core 0.20.5-dev-preview-1 → 0.20.5-dev-preview-3
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/apply-head-queue.d.ts +18 -0
- package/apply-head-queue.d.ts.map +1 -0
- package/apply-head-queue.js +47 -0
- package/apply-head-queue.js.map +1 -0
- package/blockstore/attachable-store.d.ts +19 -0
- package/blockstore/attachable-store.d.ts.map +1 -0
- package/blockstore/attachable-store.js +316 -0
- package/blockstore/attachable-store.js.map +1 -0
- package/blockstore/commit-queue.d.ts +17 -0
- package/blockstore/commit-queue.d.ts.map +1 -0
- package/blockstore/commit-queue.js +60 -0
- package/blockstore/commit-queue.js.map +1 -0
- package/blockstore/commitor.d.ts +21 -0
- package/blockstore/commitor.d.ts.map +1 -0
- package/blockstore/commitor.js +95 -0
- package/blockstore/commitor.js.map +1 -0
- package/blockstore/connect-raw.d.ts +2 -0
- package/blockstore/connect-raw.d.ts.map +1 -0
- package/blockstore/connect-raw.js +2 -0
- package/blockstore/connect-raw.js.map +1 -0
- package/blockstore/connection-base.d.ts +2 -0
- package/blockstore/connection-base.d.ts.map +1 -0
- package/blockstore/connection-base.js +2 -0
- package/blockstore/connection-base.js.map +1 -0
- package/blockstore/encrypt-helpers.d.ts +2 -0
- package/blockstore/encrypt-helpers.d.ts.map +1 -0
- package/blockstore/encrypt-helpers.js +2 -0
- package/blockstore/encrypt-helpers.js.map +1 -0
- package/blockstore/fp-envelope.d.ts +32 -0
- package/blockstore/fp-envelope.d.ts.map +1 -0
- package/blockstore/fp-envelope.js +14 -0
- package/blockstore/fp-envelope.js.map +1 -0
- package/blockstore/gateway.d.ts +20 -0
- package/blockstore/gateway.d.ts.map +1 -0
- package/blockstore/gateway.js +2 -0
- package/blockstore/gateway.js.map +1 -0
- package/blockstore/index.d.ts +16 -0
- package/blockstore/index.d.ts.map +1 -0
- package/blockstore/index.js +16 -0
- package/blockstore/index.js.map +1 -0
- package/blockstore/interceptor-gateway.d.ts +29 -0
- package/blockstore/interceptor-gateway.d.ts.map +1 -0
- package/blockstore/interceptor-gateway.js +137 -0
- package/blockstore/interceptor-gateway.js.map +1 -0
- package/blockstore/loader-helpers.d.ts +10 -0
- package/blockstore/loader-helpers.d.ts.map +1 -0
- package/blockstore/loader-helpers.js +115 -0
- package/blockstore/loader-helpers.js.map +1 -0
- package/blockstore/loader.d.ts +61 -0
- package/blockstore/loader.d.ts.map +1 -0
- package/blockstore/loader.js +494 -0
- package/blockstore/loader.js.map +1 -0
- package/blockstore/register-store-protocol.d.ts +22 -0
- package/blockstore/register-store-protocol.d.ts.map +1 -0
- package/blockstore/register-store-protocol.js +114 -0
- package/blockstore/register-store-protocol.js.map +1 -0
- package/blockstore/serde-gateway.d.ts +78 -0
- package/blockstore/serde-gateway.d.ts.map +1 -0
- package/blockstore/serde-gateway.js +2 -0
- package/blockstore/serde-gateway.js.map +1 -0
- package/blockstore/store-factory.d.ts +11 -0
- package/blockstore/store-factory.d.ts.map +1 -0
- package/blockstore/store-factory.js +104 -0
- package/blockstore/store-factory.js.map +1 -0
- package/blockstore/store-remote.d.ts +2 -0
- package/blockstore/store-remote.d.ts.map +1 -0
- package/blockstore/store-remote.js +2 -0
- package/blockstore/store-remote.js.map +1 -0
- package/blockstore/store.d.ts +86 -0
- package/blockstore/store.d.ts.map +1 -0
- package/blockstore/store.js +439 -0
- package/blockstore/store.js.map +1 -0
- package/blockstore/task-manager.d.ts +19 -0
- package/blockstore/task-manager.d.ts.map +1 -0
- package/blockstore/task-manager.js +50 -0
- package/blockstore/task-manager.js.map +1 -0
- package/blockstore/transaction.d.ts +62 -0
- package/blockstore/transaction.d.ts.map +1 -0
- package/blockstore/transaction.js +261 -0
- package/blockstore/transaction.js.map +1 -0
- package/blockstore/types.d.ts +508 -0
- package/blockstore/types.d.ts.map +1 -0
- package/blockstore/types.js +83 -0
- package/blockstore/types.js.map +1 -0
- package/blockstore/uri-interceptor.d.ts +19 -0
- package/blockstore/uri-interceptor.d.ts.map +1 -0
- package/blockstore/uri-interceptor.js +61 -0
- package/blockstore/uri-interceptor.js.map +1 -0
- package/bundle-not-impl.d.ts +2 -0
- package/bundle-not-impl.d.ts.map +1 -0
- package/bundle-not-impl.js +4 -0
- package/bundle-not-impl.js.map +1 -0
- package/cli/main.js +26616 -0
- package/crdt-clock.d.ts +27 -0
- package/crdt-clock.d.ts.map +1 -0
- package/crdt-clock.js +138 -0
- package/crdt-clock.js.map +1 -0
- package/crdt-helpers.d.ts +19 -0
- package/crdt-helpers.d.ts.map +1 -0
- package/crdt-helpers.js +332 -0
- package/crdt-helpers.js.map +1 -0
- package/crdt.d.ts +41 -0
- package/crdt.d.ts.map +1 -0
- package/crdt.js +164 -0
- package/crdt.js.map +1 -0
- package/database.d.ts +34 -0
- package/database.d.ts.map +1 -0
- package/database.js +124 -0
- package/database.js.map +1 -0
- package/deno.json +2 -2
- package/index.d.ts +15 -2741
- package/index.d.ts.map +1 -0
- package/index.js +14 -7274
- package/index.js.map +1 -1
- package/indexer-helpers.d.ts +69 -0
- package/indexer-helpers.d.ts.map +1 -0
- package/indexer-helpers.js +136 -0
- package/indexer-helpers.js.map +1 -0
- package/indexer.d.ts +24 -0
- package/indexer.d.ts.map +1 -0
- package/indexer.js +230 -0
- package/indexer.js.map +1 -0
- package/ledger.d.ts +55 -0
- package/ledger.d.ts.map +1 -0
- package/ledger.js +234 -0
- package/ledger.js.map +1 -0
- package/package.json +26 -17
- package/protocols/cloud/http-connection.d.ts +25 -0
- package/protocols/cloud/http-connection.d.ts.map +1 -0
- package/protocols/cloud/http-connection.js +153 -0
- package/protocols/cloud/http-connection.js.map +1 -0
- package/protocols/cloud/index.d.ts +10 -0
- package/protocols/cloud/index.d.ts.map +1 -0
- package/protocols/cloud/index.js +10 -0
- package/protocols/cloud/index.js.map +1 -0
- package/protocols/cloud/msg-raw-connection-base.d.ts +16 -0
- package/protocols/cloud/msg-raw-connection-base.d.ts.map +1 -0
- package/protocols/cloud/msg-raw-connection-base.js +22 -0
- package/protocols/cloud/msg-raw-connection-base.js.map +1 -0
- package/protocols/cloud/msg-types-data.d.ts +36 -0
- package/protocols/cloud/msg-types-data.d.ts.map +1 -0
- package/protocols/cloud/msg-types-data.js +38 -0
- package/protocols/cloud/msg-types-data.js.map +1 -0
- package/protocols/cloud/msg-types-meta.d.ts +41 -0
- package/protocols/cloud/msg-types-meta.d.ts.map +1 -0
- package/protocols/cloud/msg-types-meta.js +98 -0
- package/protocols/cloud/msg-types-meta.js.map +1 -0
- package/protocols/cloud/msg-types-wal.d.ts +33 -0
- package/protocols/cloud/msg-types-wal.d.ts.map +1 -0
- package/protocols/cloud/msg-types-wal.js +38 -0
- package/protocols/cloud/msg-types-wal.js.map +1 -0
- package/protocols/cloud/msg-types.d.ts +282 -0
- package/protocols/cloud/msg-types.d.ts.map +1 -0
- package/protocols/cloud/msg-types.js +278 -0
- package/protocols/cloud/msg-types.js.map +1 -0
- package/protocols/cloud/msger.d.ts +79 -0
- package/protocols/cloud/msger.d.ts.map +1 -0
- package/protocols/cloud/msger.js +198 -0
- package/protocols/cloud/msger.js.map +1 -0
- package/protocols/cloud/ws-connection.d.ts +29 -0
- package/protocols/cloud/ws-connection.d.ts.map +1 -0
- package/protocols/cloud/ws-connection.js +166 -0
- package/protocols/cloud/ws-connection.js.map +1 -0
- package/protocols/index.d.ts +2 -0
- package/protocols/index.d.ts.map +1 -0
- package/protocols/index.js +2 -0
- package/protocols/index.js.map +1 -0
- package/react/create-attach.d.ts +6 -0
- package/react/create-attach.d.ts.map +1 -0
- package/react/create-attach.js +75 -0
- package/react/create-attach.js.map +1 -0
- package/react/{index.d.cts → img-file.d.ts} +6 -53
- package/react/img-file.d.ts.map +1 -0
- package/react/img-file.js +57 -0
- package/react/img-file.js.map +1 -0
- package/react/index.d.ts +5 -336
- package/react/index.d.ts.map +1 -0
- package/react/index.js +4 -358
- package/react/index.js.map +1 -1
- package/react/types.d.ts +71 -0
- package/react/types.d.ts.map +1 -0
- package/react/types.js +2 -0
- package/react/types.js.map +1 -0
- package/react/use-all-docs.d.ts +4 -0
- package/react/use-all-docs.d.ts.map +1 -0
- package/react/use-all-docs.js +25 -0
- package/react/use-all-docs.js.map +1 -0
- package/react/use-attach.d.ts +6 -0
- package/react/use-attach.d.ts.map +1 -0
- package/react/use-attach.js +75 -0
- package/react/use-attach.js.map +1 -0
- package/react/use-changes.d.ts +4 -0
- package/react/use-changes.d.ts.map +1 -0
- package/react/use-changes.js +19 -0
- package/react/use-changes.js.map +1 -0
- package/react/use-document.d.ts +4 -0
- package/react/use-document.d.ts.map +1 -0
- package/react/use-document.js +109 -0
- package/react/use-document.js.map +1 -0
- package/react/use-fireproof.d.ts +6 -0
- package/react/use-fireproof.d.ts.map +1 -0
- package/react/use-fireproof.js +20 -0
- package/react/use-fireproof.js.map +1 -0
- package/react/use-live-query.d.ts +4 -0
- package/react/use-live-query.d.ts.map +1 -0
- package/react/use-live-query.js +27 -0
- package/react/use-live-query.js.map +1 -0
- package/runtime/files.d.ts +12 -0
- package/runtime/files.d.ts.map +1 -0
- package/runtime/files.js +29 -0
- package/runtime/files.js.map +1 -0
- package/runtime/gateways/cloud/gateway.d.ts +42 -0
- package/runtime/gateways/cloud/gateway.d.ts.map +1 -0
- package/runtime/gateways/cloud/gateway.js +528 -0
- package/runtime/gateways/cloud/gateway.js.map +1 -0
- package/runtime/gateways/cloud/index.d.ts +3 -0
- package/runtime/gateways/cloud/index.d.ts.map +1 -0
- package/runtime/gateways/cloud/index.js +3 -0
- package/runtime/gateways/cloud/index.js.map +1 -0
- package/runtime/gateways/cloud/to-cloud.d.ts +46 -0
- package/runtime/gateways/cloud/to-cloud.d.ts.map +1 -0
- package/runtime/gateways/cloud/to-cloud.js +159 -0
- package/runtime/gateways/cloud/to-cloud.js.map +1 -0
- package/runtime/gateways/def-serde-gateway.d.ts +18 -0
- package/runtime/gateways/def-serde-gateway.d.ts.map +1 -0
- package/runtime/gateways/def-serde-gateway.js +89 -0
- package/runtime/gateways/def-serde-gateway.js.map +1 -0
- package/runtime/gateways/file/deno/deno-filesystem.d.ts +27 -0
- package/runtime/gateways/file/deno/deno-filesystem.d.ts.map +1 -0
- package/runtime/gateways/file/deno/deno-filesystem.js +52 -0
- package/runtime/gateways/file/deno/deno-filesystem.js.map +1 -0
- package/runtime/gateways/file/deno/get-sys-file-system.d.ts +4 -0
- package/runtime/gateways/file/deno/get-sys-file-system.d.ts.map +1 -0
- package/runtime/gateways/file/deno/get-sys-file-system.js +11 -0
- package/runtime/gateways/file/deno/get-sys-file-system.js.map +1 -0
- package/runtime/gateways/file/deno/index.d.ts +2 -0
- package/runtime/gateways/file/deno/index.d.ts.map +1 -0
- package/runtime/gateways/file/deno/index.js +2 -0
- package/runtime/gateways/file/deno/index.js.map +1 -0
- package/runtime/gateways/file/gateway-impl.d.ts +18 -0
- package/runtime/gateways/file/gateway-impl.d.ts.map +1 -0
- package/runtime/gateways/file/gateway-impl.js +121 -0
- package/runtime/gateways/file/gateway-impl.js.map +1 -0
- package/runtime/gateways/file/index.d.ts +3 -0
- package/runtime/gateways/file/index.d.ts.map +1 -0
- package/runtime/gateways/file/index.js +3 -0
- package/runtime/gateways/file/index.js.map +1 -0
- package/runtime/gateways/file/key-bag-file.d.ts +19 -0
- package/runtime/gateways/file/key-bag-file.d.ts.map +1 -0
- package/runtime/gateways/file/key-bag-file.js +40 -0
- package/runtime/gateways/file/key-bag-file.js.map +1 -0
- package/runtime/gateways/file/node/get-sys-file-system.d.ts +4 -0
- package/runtime/gateways/file/node/get-sys-file-system.d.ts.map +1 -0
- package/runtime/gateways/file/node/get-sys-file-system.js +11 -0
- package/runtime/gateways/file/node/get-sys-file-system.js.map +1 -0
- package/runtime/gateways/file/node/index.d.ts +2 -0
- package/runtime/gateways/file/node/index.d.ts.map +1 -0
- package/runtime/gateways/file/node/index.js +2 -0
- package/runtime/gateways/file/node/index.js.map +1 -0
- package/runtime/gateways/file/node/node-filesystem.d.ts +32 -0
- package/runtime/gateways/file/node/node-filesystem.d.ts.map +1 -0
- package/runtime/gateways/file/node/node-filesystem.js +33 -0
- package/runtime/gateways/file/node/node-filesystem.js.map +1 -0
- package/runtime/gateways/file/node/to-array-buffer.d.ts +2 -0
- package/runtime/gateways/file/node/to-array-buffer.d.ts.map +1 -0
- package/runtime/gateways/file/node/to-array-buffer.js +12 -0
- package/runtime/gateways/file/node/to-array-buffer.js.map +1 -0
- package/runtime/gateways/file/sys-file-system-factory.d.ts +4 -0
- package/runtime/gateways/file/sys-file-system-factory.d.ts.map +1 -0
- package/runtime/gateways/file/sys-file-system-factory.js +13 -0
- package/runtime/gateways/file/sys-file-system-factory.js.map +1 -0
- package/runtime/gateways/file/utils.d.ts +5 -0
- package/runtime/gateways/file/utils.d.ts.map +1 -0
- package/runtime/gateways/file/utils.js +27 -0
- package/runtime/gateways/file/utils.js.map +1 -0
- package/runtime/gateways/file/version.d.ts +2 -0
- package/runtime/gateways/file/version.d.ts.map +1 -0
- package/runtime/gateways/file/version.js +2 -0
- package/runtime/gateways/file/version.js.map +1 -0
- package/runtime/gateways/fp-envelope-serialize.d.ts +50 -0
- package/runtime/gateways/fp-envelope-serialize.d.ts.map +1 -0
- package/runtime/gateways/fp-envelope-serialize.js +141 -0
- package/runtime/gateways/fp-envelope-serialize.js.map +1 -0
- package/runtime/gateways/index.d.ts +6 -0
- package/runtime/gateways/index.d.ts.map +1 -0
- package/runtime/gateways/index.js +6 -0
- package/runtime/gateways/index.js.map +1 -0
- package/runtime/gateways/indexeddb/gateway-impl.d.ts +22 -0
- package/runtime/gateways/indexeddb/gateway-impl.d.ts.map +1 -0
- package/runtime/gateways/indexeddb/gateway-impl.js +147 -0
- package/runtime/gateways/indexeddb/gateway-impl.js.map +1 -0
- package/runtime/gateways/indexeddb/index.d.ts +6 -0
- package/runtime/gateways/indexeddb/index.d.ts.map +1 -0
- package/runtime/gateways/indexeddb/index.js +6 -0
- package/runtime/gateways/indexeddb/index.js.map +1 -0
- package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts +15 -0
- package/runtime/gateways/indexeddb/key-bag-indexeddb.d.ts.map +1 -0
- package/runtime/gateways/indexeddb/key-bag-indexeddb.js +42 -0
- package/runtime/gateways/indexeddb/key-bag-indexeddb.js.map +1 -0
- package/runtime/gateways/indexeddb-version.d.ts +2 -0
- package/runtime/gateways/indexeddb-version.d.ts.map +1 -0
- package/runtime/gateways/indexeddb-version.js +2 -0
- package/runtime/gateways/indexeddb-version.js.map +1 -0
- package/runtime/gateways/memory/gateway.d.ts +18 -0
- package/runtime/gateways/memory/gateway.d.ts.map +1 -0
- package/runtime/gateways/memory/gateway.js +73 -0
- package/runtime/gateways/memory/gateway.js.map +1 -0
- package/runtime/gateways/memory/version.d.ts +2 -0
- package/runtime/gateways/memory/version.d.ts.map +1 -0
- package/runtime/gateways/memory/version.js +2 -0
- package/runtime/gateways/memory/version.js.map +1 -0
- package/runtime/index.d.ts +13 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +13 -0
- package/runtime/index.js.map +1 -0
- package/runtime/key-bag-memory.d.ts +12 -0
- package/runtime/key-bag-memory.d.ts.map +1 -0
- package/runtime/key-bag-memory.js +23 -0
- package/runtime/key-bag-memory.js.map +1 -0
- package/runtime/key-bag.d.ts +85 -0
- package/runtime/key-bag.d.ts.map +1 -0
- package/runtime/key-bag.js +411 -0
- package/runtime/key-bag.js.map +1 -0
- package/runtime/keyed-crypto.d.ts +19 -0
- package/runtime/keyed-crypto.d.ts.map +1 -0
- package/runtime/keyed-crypto.js +192 -0
- package/runtime/keyed-crypto.js.map +1 -0
- package/runtime/memory-sys-container.d.ts +2 -0
- package/runtime/memory-sys-container.d.ts.map +1 -0
- package/runtime/memory-sys-container.js +2 -0
- package/runtime/memory-sys-container.js.map +1 -0
- package/runtime/meta-key-hack.d.ts +42 -0
- package/runtime/meta-key-hack.d.ts.map +1 -0
- package/runtime/meta-key-hack.js +201 -0
- package/runtime/meta-key-hack.js.map +1 -0
- package/runtime/sts-service/index.d.ts +40 -0
- package/runtime/sts-service/index.d.ts.map +1 -0
- package/runtime/sts-service/index.js +102 -0
- package/runtime/sts-service/index.js.map +1 -0
- package/runtime/sys-container.d.ts +2 -0
- package/runtime/sys-container.d.ts.map +1 -0
- package/runtime/sys-container.js +2 -0
- package/runtime/sys-container.js.map +1 -0
- package/runtime/wait-pr-multiformats/block.d.ts +47 -0
- package/runtime/wait-pr-multiformats/block.d.ts.map +1 -0
- package/runtime/wait-pr-multiformats/block.js +64 -0
- package/runtime/wait-pr-multiformats/block.js.map +1 -0
- package/runtime/wait-pr-multiformats/codec-interface.d.ts +29 -0
- package/runtime/wait-pr-multiformats/codec-interface.d.ts.map +1 -0
- package/runtime/wait-pr-multiformats/codec-interface.js +2 -0
- package/runtime/wait-pr-multiformats/codec-interface.js.map +1 -0
- package/runtime/wait-pr-multiformats/index.d.ts +3 -0
- package/runtime/wait-pr-multiformats/index.d.ts.map +1 -0
- package/runtime/wait-pr-multiformats/index.js +3 -0
- package/runtime/wait-pr-multiformats/index.js.map +1 -0
- package/tests/blockstore/interceptor-gateway.test.ts +10 -9
- package/tests/blockstore/keyed-crypto.test.ts +2 -2
- package/tests/blockstore/loader.test.ts +68 -51
- package/tests/blockstore/standalone.test.ts +152 -0
- package/tests/blockstore/store.test.ts +16 -9
- package/tests/blockstore/transaction.test.ts +19 -16
- package/tests/fireproof/all-gateway.test.ts +12 -27
- package/tests/fireproof/attachable.test.ts +426 -97
- package/tests/fireproof/crdt.test.ts +23 -0
- package/tests/fireproof/database.test.ts +13 -12
- package/tests/fireproof/fireproof.test.ts +2 -5
- package/tests/fireproof/indexer.test.ts +4 -0
- package/tests/helpers.ts +30 -14
- package/tests/react/img-file.test.tsx +0 -9
- package/tests/react/use-fireproof-stability.test.tsx +5 -5
- package/tests/react/use-fireproof.test.tsx +18 -13
- package/tests/runtime/meta-key-hack.test.ts +7 -6
- package/tests/setup.indexeddb.ts +0 -9
- package/types.d.ts +460 -0
- package/types.d.ts.map +1 -0
- package/types.js +60 -0
- package/types.js.map +1 -0
- package/use-fireproof/iframe-strategy.d.ts +13 -0
- package/use-fireproof/iframe-strategy.d.ts.map +1 -0
- package/use-fireproof/iframe-strategy.js +83 -0
- package/use-fireproof/iframe-strategy.js.map +1 -0
- package/use-fireproof/index.d.ts +10 -0
- package/use-fireproof/index.d.ts.map +1 -0
- package/use-fireproof/index.js +16 -0
- package/use-fireproof/index.js.map +1 -0
- package/use-fireproof/redirect-strategy.d.ts +8 -0
- package/use-fireproof/redirect-strategy.d.ts.map +1 -0
- package/use-fireproof/redirect-strategy.js +31 -0
- package/use-fireproof/redirect-strategy.js.map +1 -0
- package/utils.d.ts +45 -0
- package/utils.d.ts.map +1 -0
- package/utils.js +406 -0
- package/utils.js.map +1 -0
- package/version.d.ts +2 -0
- package/version.d.ts.map +1 -0
- package/version.js +4 -0
- package/version.js.map +1 -0
- package/write-queue.d.ts +9 -0
- package/write-queue.d.ts.map +1 -0
- package/write-queue.js +70 -0
- package/write-queue.js.map +1 -0
- package/deno/index.d.ts +0 -7
- package/deno/index.js +0 -67
- package/deno/index.js.map +0 -1
- package/deno/metafile-esm.json +0 -1
- package/index.cjs +0 -7275
- package/index.cjs.map +0 -1
- package/index.d.cts +0 -2741
- package/indexeddb/index.cjs +0 -218
- package/indexeddb/index.cjs.map +0 -1
- package/indexeddb/index.d.cts +0 -30
- package/indexeddb/index.d.ts +0 -30
- package/indexeddb/index.js +0 -195
- package/indexeddb/index.js.map +0 -1
- package/indexeddb/metafile-cjs.json +0 -1
- package/indexeddb/metafile-esm.json +0 -1
- package/metafile-cjs.json +0 -1
- package/metafile-esm.json +0 -1
- package/node/index.cjs +0 -93
- package/node/index.cjs.map +0 -1
- package/node/index.d.cts +0 -7
- package/node/index.d.ts +0 -7
- package/node/index.js +0 -60
- package/node/index.js.map +0 -1
- package/node/metafile-cjs.json +0 -1
- package/node/metafile-esm.json +0 -1
- package/react/index.cjs +0 -392
- package/react/index.cjs.map +0 -1
- package/react/metafile-cjs.json +0 -1
- package/react/metafile-esm.json +0 -1
- package/tests/www/gallery.html +0 -132
- package/tests/www/iife.html +0 -42
- package/tests/www/todo-aws.html +0 -232
- package/tests/www/todo-ipfs.html +0 -213
- package/tests/www/todo-local.html +0 -214
- package/tests/www/todo-netlify.html +0 -227
- package/tests/www/todo.html +0 -254
@@ -0,0 +1,19 @@
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
2
|
+
export function createUseChanges(database) {
|
3
|
+
return function useChanges(since = [], opts = {}) {
|
4
|
+
const [result, setResult] = useState({
|
5
|
+
docs: [],
|
6
|
+
});
|
7
|
+
const queryString = useMemo(() => JSON.stringify(opts), [opts]);
|
8
|
+
const refreshRows = useCallback(async () => {
|
9
|
+
const res = await database.changes(since, opts);
|
10
|
+
setResult({ ...res, docs: res.rows.map((r) => r.value) });
|
11
|
+
}, [since, queryString]);
|
12
|
+
useEffect(() => {
|
13
|
+
refreshRows();
|
14
|
+
return database.subscribe(refreshRows);
|
15
|
+
}, [refreshRows]);
|
16
|
+
return result;
|
17
|
+
};
|
18
|
+
}
|
19
|
+
//# sourceMappingURL=use-changes.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-changes.js","sourceRoot":"","sources":["../../../../src/react/use-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOlE,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,OAAO,SAAS,UAAU,CAAqB,QAAmB,EAAE,EAAE,OAAuB,EAAE;QAC7F,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAmB;YACrD,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACzC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;YACnD,SAAS,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAqB,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;QAEzB,SAAS,CAAC,GAAG,EAAE;YACb,WAAW,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAElB,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { DocTypes, Database } from "@fireproof/core";
|
2
|
+
import type { UseDocumentInitialDocOrFn, UseDocumentResult } from "./types.js";
|
3
|
+
export declare function createUseDocument(database: Database): <T extends DocTypes>(initialDocOrFn?: UseDocumentInitialDocOrFn<T>) => UseDocumentResult<T>;
|
4
|
+
//# sourceMappingURL=use-document.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-document.d.ts","sourceRoot":"","sources":["../../../../src/react/use-document.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,QAAQ,EAAa,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,KAAK,EAA2B,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAKxG,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,IACtB,CAAC,SAAS,QAAQ,EAAE,iBAAiB,yBAAyB,CAAC,CAAC,CAAC,KAAG,iBAAiB,CAAC,CAAC,CAAC,CAkIrH"}
|
@@ -0,0 +1,109 @@
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState, useRef } from "react";
|
2
|
+
import { deepClone } from "@fireproof/core";
|
3
|
+
export function createUseDocument(database) {
|
4
|
+
return function useDocument(initialDocOrFn) {
|
5
|
+
const updateHappenedRef = useRef(false);
|
6
|
+
let initialDoc;
|
7
|
+
if (typeof initialDocOrFn === "function") {
|
8
|
+
initialDoc = initialDocOrFn();
|
9
|
+
}
|
10
|
+
else {
|
11
|
+
initialDoc = initialDocOrFn ?? {};
|
12
|
+
}
|
13
|
+
const originalInitialDoc = useMemo(() => deepClone({ ...initialDoc }), []);
|
14
|
+
const [doc, setDoc] = useState(initialDoc);
|
15
|
+
const refresh = useCallback(async () => {
|
16
|
+
if (doc._id) {
|
17
|
+
try {
|
18
|
+
const gotDoc = await database.get(doc._id);
|
19
|
+
setDoc(gotDoc);
|
20
|
+
}
|
21
|
+
catch {
|
22
|
+
setDoc(initialDoc);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
else {
|
26
|
+
setDoc(initialDoc);
|
27
|
+
}
|
28
|
+
}, [doc._id]);
|
29
|
+
const save = useCallback(async (existingDoc) => {
|
30
|
+
updateHappenedRef.current = false;
|
31
|
+
const toSave = existingDoc ?? doc;
|
32
|
+
const res = await database.put(toSave);
|
33
|
+
if (!updateHappenedRef.current && !doc._id && !existingDoc) {
|
34
|
+
setDoc((d) => ({ ...d, _id: res.id }));
|
35
|
+
}
|
36
|
+
return res;
|
37
|
+
}, [doc]);
|
38
|
+
const remove = useCallback(async (existingDoc) => {
|
39
|
+
const id = existingDoc?._id ?? doc._id;
|
40
|
+
if (!id)
|
41
|
+
throw database.logger.Error().Msg(`Document must have an _id to be removed`).AsError();
|
42
|
+
const gotDoc = await database.get(id).catch(() => undefined);
|
43
|
+
if (!gotDoc)
|
44
|
+
throw database.logger.Error().Str("id", id).Msg(`Document not found`).AsError();
|
45
|
+
const res = await database.del(id);
|
46
|
+
setDoc(initialDoc);
|
47
|
+
return res;
|
48
|
+
}, [doc, initialDoc]);
|
49
|
+
const merge = useCallback((newDoc) => {
|
50
|
+
updateHappenedRef.current = true;
|
51
|
+
setDoc((prev) => ({ ...prev, ...newDoc }));
|
52
|
+
}, []);
|
53
|
+
const replace = useCallback((newDoc) => {
|
54
|
+
updateHappenedRef.current = true;
|
55
|
+
setDoc(newDoc);
|
56
|
+
}, []);
|
57
|
+
const reset = useCallback(() => {
|
58
|
+
updateHappenedRef.current = true;
|
59
|
+
setDoc({ ...originalInitialDoc });
|
60
|
+
}, [originalInitialDoc]);
|
61
|
+
const updateDoc = useCallback((newDoc, opts = { replace: false, reset: false }) => {
|
62
|
+
if (!newDoc) {
|
63
|
+
return opts.reset ? reset() : refresh();
|
64
|
+
}
|
65
|
+
return opts.replace ? replace(newDoc) : merge(newDoc);
|
66
|
+
}, [refresh, reset, replace, merge]);
|
67
|
+
useEffect(() => {
|
68
|
+
if (!doc._id)
|
69
|
+
return;
|
70
|
+
return database.subscribe((changes) => {
|
71
|
+
if (updateHappenedRef.current) {
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
if (changes.find((c) => c._id === doc._id)) {
|
75
|
+
void refresh();
|
76
|
+
}
|
77
|
+
}, true);
|
78
|
+
}, [doc._id, refresh]);
|
79
|
+
useEffect(() => {
|
80
|
+
void refresh();
|
81
|
+
}, [refresh]);
|
82
|
+
const submit = useCallback(async (e) => {
|
83
|
+
if (e?.preventDefault)
|
84
|
+
e.preventDefault();
|
85
|
+
await save();
|
86
|
+
reset();
|
87
|
+
}, [save, reset]);
|
88
|
+
const apiObject = {
|
89
|
+
doc: { ...doc },
|
90
|
+
merge,
|
91
|
+
replace,
|
92
|
+
reset,
|
93
|
+
refresh,
|
94
|
+
save,
|
95
|
+
remove,
|
96
|
+
submit,
|
97
|
+
};
|
98
|
+
const tuple = [{ ...doc }, updateDoc, save, remove, reset, refresh];
|
99
|
+
Object.assign(apiObject, tuple);
|
100
|
+
Object.defineProperty(apiObject, Symbol.iterator, {
|
101
|
+
enumerable: false,
|
102
|
+
value: function* () {
|
103
|
+
yield* tuple;
|
104
|
+
},
|
105
|
+
});
|
106
|
+
return apiObject;
|
107
|
+
};
|
108
|
+
}
|
109
|
+
//# sourceMappingURL=use-document.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-document.js","sourceRoot":"","sources":["../../../../src/react/use-document.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { Database } from "@fireproof/core";
|
2
|
+
import type { UseFPConfig, UseFireproof } from "./types.js";
|
3
|
+
export declare const FireproofCtx: UseFireproof;
|
4
|
+
export declare function useFireproof(name?: string | Database, config?: UseFPConfig): UseFireproof;
|
5
|
+
export type { AllDocsResult, ChangesResult, LiveQueryResult, UseAllDocs, UseChanges, UseDocument, UseDocumentResult, UseFireproof, UseLiveQuery, } from "./types.js";
|
6
|
+
//# sourceMappingURL=use-fireproof.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-fireproof.d.ts","sourceRoot":"","sources":["../../../../src/react/use-fireproof.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAa,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAS5D,eAAO,MAAM,YAAY,EAAS,YAAY,CAAC;AAgB/C,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAM,GAAG,QAAyB,EAAE,MAAM,GAAE,WAAgB,GAAG,YAAY,CAW7G;AAGD,YAAY,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC"}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import { toSortedArray } from "@adviser/cement/utils";
|
2
|
+
import { fireproof } from "@fireproof/core";
|
3
|
+
import { useMemo } from "react";
|
4
|
+
import { useAttach } from "./use-attach.js";
|
5
|
+
import { createUseAllDocs } from "./use-all-docs.js";
|
6
|
+
import { createUseChanges } from "./use-changes.js";
|
7
|
+
import { createUseDocument } from "./use-document.js";
|
8
|
+
import { createUseLiveQuery } from "./use-live-query.js";
|
9
|
+
export const FireproofCtx = {};
|
10
|
+
export function useFireproof(name = "useFireproof", config = {}) {
|
11
|
+
const strConfig = JSON.stringify(toSortedArray(config));
|
12
|
+
const database = useMemo(() => (typeof name === "string" ? fireproof(name, config) : name), [name, strConfig]);
|
13
|
+
const attach = useAttach(database, config);
|
14
|
+
const useDocument = useMemo(() => createUseDocument(database), [database.name, strConfig]);
|
15
|
+
const useLiveQuery = useMemo(() => createUseLiveQuery(database), [database.name, strConfig]);
|
16
|
+
const useAllDocs = useMemo(() => createUseAllDocs(database), [database.name, strConfig]);
|
17
|
+
const useChanges = useMemo(() => createUseChanges(database), [database.name, strConfig]);
|
18
|
+
return { database, useLiveQuery, useDocument, useAllDocs, useChanges, attach };
|
19
|
+
}
|
20
|
+
//# sourceMappingURL=use-fireproof.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-fireproof.js","sourceRoot":"","sources":["../../../../src/react/use-fireproof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAY,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAKzD,MAAM,CAAC,MAAM,YAAY,GAAG,EAAkB,CAAC;AAgB/C,MAAM,UAAU,YAAY,CAAC,OAA0B,cAAc,EAAE,SAAsB,EAAE;IAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC/G,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3F,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC7F,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzF,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACjF,CAAC"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { DocFragment, DocTypes, IndexKeyType, IndexRow, MapFn, Database } from "@fireproof/core";
|
2
|
+
import type { LiveQueryResult } from "./types.js";
|
3
|
+
export declare function createUseLiveQuery(database: Database): <T extends DocTypes, K extends IndexKeyType = string, R extends DocFragment = T>(mapFn: MapFn<T> | string, query?: {}, initialRows?: IndexRow<K, T, R>[]) => LiveQueryResult<T, K, R>;
|
4
|
+
//# sourceMappingURL=use-live-query.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-live-query.d.ts","sourceRoot":"","sources":["../../../../src/react/use-live-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAa,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,IACtB,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,YAAY,GAAG,MAAM,EAAE,CAAC,SAAS,WAAW,GAAG,CAAC,EACzG,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EACxB,UAAU,EACV,cAAa,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAO,KACpC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CA2B5B"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
2
|
+
export function createUseLiveQuery(database) {
|
3
|
+
return function useLiveQuery(mapFn, query = {}, initialRows = []) {
|
4
|
+
const [result, setResult] = useState({
|
5
|
+
docs: initialRows.map((r) => r.doc).filter((r) => !!r),
|
6
|
+
rows: initialRows,
|
7
|
+
});
|
8
|
+
const queryString = useMemo(() => JSON.stringify(query), [query]);
|
9
|
+
const mapFnString = useMemo(() => mapFn.toString(), [mapFn]);
|
10
|
+
const refreshRows = useCallback(async () => {
|
11
|
+
const res = await database.query(mapFn, query);
|
12
|
+
setResult({
|
13
|
+
docs: res.rows.map((r) => r.doc).filter((r) => !!r),
|
14
|
+
rows: res.rows,
|
15
|
+
});
|
16
|
+
}, [database, mapFnString, queryString]);
|
17
|
+
useEffect(() => {
|
18
|
+
refreshRows();
|
19
|
+
const unsubscribe = database.subscribe(refreshRows);
|
20
|
+
return () => {
|
21
|
+
unsubscribe();
|
22
|
+
};
|
23
|
+
}, [database, refreshRows]);
|
24
|
+
return result;
|
25
|
+
};
|
26
|
+
}
|
27
|
+
//# sourceMappingURL=use-live-query.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"use-live-query.js","sourceRoot":"","sources":["../../../../src/react/use-live-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOlE,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,OAAO,SAAS,YAAY,CAC1B,KAAwB,EACxB,KAAK,GAAG,EAAE,EACV,cAAmC,EAAE;QAErC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAA2B;YAC7D,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACzC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAU,KAAK,EAAE,KAAK,CAAC,CAAC;YACxD,SAAS,CAAC;gBACR,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtE,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;QACL,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAEzC,SAAS,CAAC,GAAG,EAAE;YACb,WAAW,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACpD,OAAO,GAAG,EAAE;gBACV,WAAW,EAAE,CAAC;YAChB,CAAC,CAAC;QACJ,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAE5B,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { DocFileMeta } from "../types.js";
|
2
|
+
import { AnyLink, AnyBlock } from "../blockstore/index.js";
|
3
|
+
import { Result } from "@adviser/cement";
|
4
|
+
export declare function encodeFile(blob: Blob): Promise<{
|
5
|
+
cid: AnyLink;
|
6
|
+
blocks: AnyBlock[];
|
7
|
+
}>;
|
8
|
+
export interface BlockGetter {
|
9
|
+
get(cid: AnyLink): Promise<Uint8Array>;
|
10
|
+
}
|
11
|
+
export declare function decodeFile(blocks: unknown, cid: AnyLink, meta: DocFileMeta): Promise<Result<File>>;
|
12
|
+
//# sourceMappingURL=files.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../../../src/runtime/files.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAoB,MAAM,EAAa,MAAM,iBAAiB,CAAC;AAKtE,wBAAsB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,CAe1F;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CACxC;AAUD,wBAAsB,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAkBxG"}
|
package/runtime/files.js
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
import * as raw from "multiformats/codecs/raw";
|
2
|
+
import { CID } from "multiformats/cid";
|
3
|
+
import { sha256 as hasher } from "multiformats/hashes/sha2";
|
4
|
+
import { exception2Result, Result, top_uint8 } from "@adviser/cement";
|
5
|
+
export async function encodeFile(blob) {
|
6
|
+
const data = await top_uint8(blob);
|
7
|
+
const bytes = raw.encode(data);
|
8
|
+
const hash = await hasher.digest(bytes);
|
9
|
+
const cid = CID.create(1, raw.code, hash);
|
10
|
+
const block = { cid, bytes };
|
11
|
+
return { cid, blocks: [block] };
|
12
|
+
}
|
13
|
+
function isHasBlockAGet(obj) {
|
14
|
+
return typeof obj.get === "function";
|
15
|
+
}
|
16
|
+
export async function decodeFile(blocks, cid, meta) {
|
17
|
+
if (!isHasBlockAGet(blocks)) {
|
18
|
+
return Result.Err(new Error("Invalid block storage"));
|
19
|
+
}
|
20
|
+
return exception2Result(async () => {
|
21
|
+
const bytes = await blocks.get(cid);
|
22
|
+
const data = raw.decode(bytes);
|
23
|
+
return new File([data], "file", {
|
24
|
+
type: meta.type,
|
25
|
+
lastModified: meta.lastModified || 0,
|
26
|
+
});
|
27
|
+
});
|
28
|
+
}
|
29
|
+
//# sourceMappingURL=files.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../../src/runtime/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;AAG/C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKtE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAU;IAEzC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAGnC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAG/B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAG1C,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAE7B,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAClC,CAAC;AAMD,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,OAAQ,GAAmB,CAAC,GAAG,KAAK,UAAU,CAAC;AACxD,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAe,EAAE,GAAY,EAAE,IAAiB;IAE/E,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAEjC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAGpC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAG/B,OAAO,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
import { Result, URI, Logger, ResolveOnce } from "@adviser/cement";
|
2
|
+
import type { SuperThis } from "../../../types.js";
|
3
|
+
import { MsgConnected, MsgConnectedAuth } from "../../../protocols/cloud/msger.js";
|
4
|
+
import { SerdeGateway, SerdeGatewayCtx, SerdeGetResult, UnsubscribeResult, VoidResult } from "../../../blockstore/serde-gateway.js";
|
5
|
+
import { FPEnvelope, FPEnvelopeMeta } from "../../../blockstore/fp-envelope.js";
|
6
|
+
type ConnectedSerdeGatewayCtx = SerdeGatewayCtx & {
|
7
|
+
conn: AuthedConnection;
|
8
|
+
};
|
9
|
+
export interface StoreTypeGateway {
|
10
|
+
get: <S>(ctx: ConnectedSerdeGatewayCtx, url: URI) => Promise<SerdeGetResult<S>>;
|
11
|
+
put: <T>(ctx: ConnectedSerdeGatewayCtx, url: URI, body: FPEnvelope<T>) => Promise<VoidResult>;
|
12
|
+
delete: (ctx: ConnectedSerdeGatewayCtx, url: URI) => Promise<VoidResult>;
|
13
|
+
}
|
14
|
+
interface ConnectionItem {
|
15
|
+
readonly connection: ResolveOnce<Result<MsgConnected>>;
|
16
|
+
readonly trackPuts: Set<string>;
|
17
|
+
}
|
18
|
+
export interface AuthedConnection {
|
19
|
+
readonly conn: Result<MsgConnectedAuth>;
|
20
|
+
readonly citem: ConnectionItem;
|
21
|
+
}
|
22
|
+
export declare class FireproofCloudGateway implements SerdeGateway {
|
23
|
+
#private;
|
24
|
+
readonly logger: Logger;
|
25
|
+
readonly sthis: SuperThis;
|
26
|
+
constructor(sthis: SuperThis);
|
27
|
+
buildUrl(ctx: SerdeGatewayCtx, baseUrl: URI, key: string): Promise<Result<URI>>;
|
28
|
+
start(ctx: SerdeGatewayCtx, uri: URI): Promise<Result<URI>>;
|
29
|
+
get<S>(ctx: SerdeGatewayCtx, uri: URI): Promise<SerdeGetResult<S>>;
|
30
|
+
put<T>(ctx: SerdeGatewayCtx, uri: URI, body: FPEnvelope<T>): Promise<VoidResult>;
|
31
|
+
delete(ctx: SerdeGatewayCtx, uri: URI): Promise<VoidResult>;
|
32
|
+
close(ctx: SerdeGatewayCtx, uri: URI): Promise<VoidResult>;
|
33
|
+
matchURI(uri: URI): () => string;
|
34
|
+
registerConnectionURI(uri: URI, itemFactory: () => ConnectionItem): void;
|
35
|
+
getCloudConnectionItem(logger: Logger, uri: URI): Promise<AuthedConnection>;
|
36
|
+
subscribe(ctx: SerdeGatewayCtx, uri: URI, callback: (meta: FPEnvelopeMeta) => Promise<void>): Promise<UnsubscribeResult>;
|
37
|
+
destroy(ctx: SerdeGatewayCtx, uri: URI): Promise<VoidResult>;
|
38
|
+
getPlain(): Promise<Result<Uint8Array>>;
|
39
|
+
}
|
40
|
+
export declare function registerFireproofCloudStoreProtocol(protocol?: string): () => void;
|
41
|
+
export {};
|
42
|
+
//# sourceMappingURL=gateway.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../../../src/runtime/gateways/cloud/gateway.ts"],"names":[],"mappings":"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"}
|