@optimystic/db-core 0.0.1
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/README.md +328 -0
- package/dist/index.min.js +18 -0
- package/dist/index.min.js.map +7 -0
- package/dist/src/blocks/block-store.d.ts +12 -0
- package/dist/src/blocks/block-store.d.ts.map +1 -0
- package/dist/src/blocks/block-store.js +2 -0
- package/dist/src/blocks/block-store.js.map +1 -0
- package/dist/src/blocks/block-types.d.ts +3 -0
- package/dist/src/blocks/block-types.d.ts.map +1 -0
- package/dist/src/blocks/block-types.js +9 -0
- package/dist/src/blocks/block-types.js.map +1 -0
- package/dist/src/blocks/helpers.d.ts +4 -0
- package/dist/src/blocks/helpers.d.ts.map +1 -0
- package/dist/src/blocks/helpers.js +12 -0
- package/dist/src/blocks/helpers.js.map +1 -0
- package/dist/src/blocks/index.d.ts +5 -0
- package/dist/src/blocks/index.d.ts.map +1 -0
- package/dist/src/blocks/index.js +5 -0
- package/dist/src/blocks/index.js.map +1 -0
- package/dist/src/blocks/structs.d.ts +14 -0
- package/dist/src/blocks/structs.d.ts.map +1 -0
- package/dist/src/blocks/structs.js +2 -0
- package/dist/src/blocks/structs.js.map +1 -0
- package/dist/src/btree/btree.d.ts +135 -0
- package/dist/src/btree/btree.d.ts.map +1 -0
- package/dist/src/btree/btree.js +727 -0
- package/dist/src/btree/btree.js.map +1 -0
- package/dist/src/btree/independent-trunk.d.ts +17 -0
- package/dist/src/btree/independent-trunk.d.ts.map +1 -0
- package/dist/src/btree/independent-trunk.js +41 -0
- package/dist/src/btree/independent-trunk.js.map +1 -0
- package/dist/src/btree/index.d.ts +6 -0
- package/dist/src/btree/index.d.ts.map +1 -0
- package/dist/src/btree/index.js +6 -0
- package/dist/src/btree/index.js.map +1 -0
- package/dist/src/btree/key-range.d.ts +13 -0
- package/dist/src/btree/key-range.d.ts.map +1 -0
- package/dist/src/btree/key-range.js +20 -0
- package/dist/src/btree/key-range.js.map +1 -0
- package/dist/src/btree/keyset.d.ts +4 -0
- package/dist/src/btree/keyset.d.ts.map +1 -0
- package/dist/src/btree/keyset.js +4 -0
- package/dist/src/btree/keyset.js.map +1 -0
- package/dist/src/btree/nodes.d.ts +16 -0
- package/dist/src/btree/nodes.d.ts.map +1 -0
- package/dist/src/btree/nodes.js +9 -0
- package/dist/src/btree/nodes.js.map +1 -0
- package/dist/src/btree/path.d.ts +22 -0
- package/dist/src/btree/path.d.ts.map +1 -0
- package/dist/src/btree/path.js +39 -0
- package/dist/src/btree/path.js.map +1 -0
- package/dist/src/btree/tree-block.d.ts +7 -0
- package/dist/src/btree/tree-block.d.ts.map +1 -0
- package/dist/src/btree/tree-block.js +5 -0
- package/dist/src/btree/tree-block.js.map +1 -0
- package/dist/src/btree/trunk.d.ts +13 -0
- package/dist/src/btree/trunk.d.ts.map +1 -0
- package/dist/src/btree/trunk.js +2 -0
- package/dist/src/btree/trunk.js.map +1 -0
- package/dist/src/chain/chain-nodes.d.ts +18 -0
- package/dist/src/chain/chain-nodes.d.ts.map +1 -0
- package/dist/src/chain/chain-nodes.js +10 -0
- package/dist/src/chain/chain-nodes.js.map +1 -0
- package/dist/src/chain/chain.d.ts +75 -0
- package/dist/src/chain/chain.d.ts.map +1 -0
- package/dist/src/chain/chain.js +268 -0
- package/dist/src/chain/chain.js.map +1 -0
- package/dist/src/chain/index.d.ts +2 -0
- package/dist/src/chain/index.d.ts.map +1 -0
- package/dist/src/chain/index.js +2 -0
- package/dist/src/chain/index.js.map +1 -0
- package/dist/src/cluster/i-cluster.d.ts +5 -0
- package/dist/src/cluster/i-cluster.d.ts.map +1 -0
- package/dist/src/cluster/i-cluster.js +2 -0
- package/dist/src/cluster/i-cluster.js.map +1 -0
- package/dist/src/cluster/index.d.ts +3 -0
- package/dist/src/cluster/index.d.ts.map +1 -0
- package/dist/src/cluster/index.js +3 -0
- package/dist/src/cluster/index.js.map +1 -0
- package/dist/src/cluster/structs.d.ts +47 -0
- package/dist/src/cluster/structs.d.ts.map +1 -0
- package/dist/src/cluster/structs.js +2 -0
- package/dist/src/cluster/structs.js.map +1 -0
- package/dist/src/collection/action.d.ts +26 -0
- package/dist/src/collection/action.d.ts.map +1 -0
- package/dist/src/collection/action.js +2 -0
- package/dist/src/collection/action.js.map +1 -0
- package/dist/src/collection/collection.d.ts +48 -0
- package/dist/src/collection/collection.d.ts.map +1 -0
- package/dist/src/collection/collection.js +175 -0
- package/dist/src/collection/collection.js.map +1 -0
- package/dist/src/collection/index.d.ts +4 -0
- package/dist/src/collection/index.d.ts.map +1 -0
- package/dist/src/collection/index.js +4 -0
- package/dist/src/collection/index.js.map +1 -0
- package/dist/src/collection/struct.d.ts +16 -0
- package/dist/src/collection/struct.d.ts.map +1 -0
- package/dist/src/collection/struct.js +2 -0
- package/dist/src/collection/struct.js.map +1 -0
- package/dist/src/collections/diary/diary.d.ts +9 -0
- package/dist/src/collections/diary/diary.d.ts.map +1 -0
- package/dist/src/collections/diary/diary.js +37 -0
- package/dist/src/collections/diary/diary.js.map +1 -0
- package/dist/src/collections/diary/index.d.ts +3 -0
- package/dist/src/collections/diary/index.d.ts.map +1 -0
- package/dist/src/collections/diary/index.js +3 -0
- package/dist/src/collections/diary/index.js.map +1 -0
- package/dist/src/collections/diary/struct.d.ts +2 -0
- package/dist/src/collections/diary/struct.d.ts.map +1 -0
- package/dist/src/collections/diary/struct.js +3 -0
- package/dist/src/collections/diary/struct.js.map +1 -0
- package/dist/src/collections/index.d.ts +3 -0
- package/dist/src/collections/index.d.ts.map +1 -0
- package/dist/src/collections/index.js +3 -0
- package/dist/src/collections/index.js.map +1 -0
- package/dist/src/collections/tree/collection-trunk.d.ts +11 -0
- package/dist/src/collections/tree/collection-trunk.d.ts.map +1 -0
- package/dist/src/collections/tree/collection-trunk.js +22 -0
- package/dist/src/collections/tree/collection-trunk.js.map +1 -0
- package/dist/src/collections/tree/index.d.ts +3 -0
- package/dist/src/collections/tree/index.d.ts.map +1 -0
- package/dist/src/collections/tree/index.js +3 -0
- package/dist/src/collections/tree/index.js.map +1 -0
- package/dist/src/collections/tree/struct.d.ts +12 -0
- package/dist/src/collections/tree/struct.d.ts.map +1 -0
- package/dist/src/collections/tree/struct.js +4 -0
- package/dist/src/collections/tree/struct.js.map +1 -0
- package/dist/src/collections/tree/tree.d.ts +34 -0
- package/dist/src/collections/tree/tree.d.ts.map +1 -0
- package/dist/src/collections/tree/tree.js +100 -0
- package/dist/src/collections/tree/tree.js.map +1 -0
- package/dist/src/index.d.ts +18 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +18 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/log/index.d.ts +3 -0
- package/dist/src/log/index.d.ts.map +1 -0
- package/dist/src/log/index.js +3 -0
- package/dist/src/log/index.js.map +1 -0
- package/dist/src/log/log.d.ts +57 -0
- package/dist/src/log/log.d.ts.map +1 -0
- package/dist/src/log/log.js +131 -0
- package/dist/src/log/log.js.map +1 -0
- package/dist/src/log/struct.d.ts +36 -0
- package/dist/src/log/struct.d.ts.map +1 -0
- package/dist/src/log/struct.js +3 -0
- package/dist/src/log/struct.js.map +1 -0
- package/dist/src/network/i-key-network.d.ts +21 -0
- package/dist/src/network/i-key-network.d.ts.map +1 -0
- package/dist/src/network/i-key-network.js +2 -0
- package/dist/src/network/i-key-network.js.map +1 -0
- package/dist/src/network/i-peer-network.d.ts +8 -0
- package/dist/src/network/i-peer-network.d.ts.map +1 -0
- package/dist/src/network/i-peer-network.js +2 -0
- package/dist/src/network/i-peer-network.js.map +1 -0
- package/dist/src/network/i-repo.d.ts +17 -0
- package/dist/src/network/i-repo.d.ts.map +1 -0
- package/dist/src/network/i-repo.js +2 -0
- package/dist/src/network/i-repo.js.map +1 -0
- package/dist/src/network/index.d.ts +6 -0
- package/dist/src/network/index.d.ts.map +1 -0
- package/dist/src/network/index.js +6 -0
- package/dist/src/network/index.js.map +1 -0
- package/dist/src/network/repo-protocol.d.ts +19 -0
- package/dist/src/network/repo-protocol.d.ts.map +1 -0
- package/dist/src/network/repo-protocol.js +2 -0
- package/dist/src/network/repo-protocol.js.map +1 -0
- package/dist/src/network/struct.d.ts +115 -0
- package/dist/src/network/struct.d.ts.map +1 -0
- package/dist/src/network/struct.js +2 -0
- package/dist/src/network/struct.js.map +1 -0
- package/dist/src/transaction/actions-engine.d.ts +37 -0
- package/dist/src/transaction/actions-engine.d.ts.map +1 -0
- package/dist/src/transaction/actions-engine.js +67 -0
- package/dist/src/transaction/actions-engine.js.map +1 -0
- package/dist/src/transaction/context.d.ts +60 -0
- package/dist/src/transaction/context.d.ts.map +1 -0
- package/dist/src/transaction/context.js +91 -0
- package/dist/src/transaction/context.js.map +1 -0
- package/dist/src/transaction/coordinator.d.ts +118 -0
- package/dist/src/transaction/coordinator.d.ts.map +1 -0
- package/dist/src/transaction/coordinator.js +417 -0
- package/dist/src/transaction/coordinator.js.map +1 -0
- package/dist/src/transaction/index.d.ts +10 -0
- package/dist/src/transaction/index.d.ts.map +1 -0
- package/dist/src/transaction/index.js +7 -0
- package/dist/src/transaction/index.js.map +1 -0
- package/dist/src/transaction/session.d.ts +80 -0
- package/dist/src/transaction/session.d.ts.map +1 -0
- package/dist/src/transaction/session.js +161 -0
- package/dist/src/transaction/session.js.map +1 -0
- package/dist/src/transaction/transaction.d.ts +156 -0
- package/dist/src/transaction/transaction.d.ts.map +1 -0
- package/dist/src/transaction/transaction.js +31 -0
- package/dist/src/transaction/transaction.js.map +1 -0
- package/dist/src/transaction/validator.d.ts +46 -0
- package/dist/src/transaction/validator.d.ts.map +1 -0
- package/dist/src/transaction/validator.js +97 -0
- package/dist/src/transaction/validator.js.map +1 -0
- package/dist/src/transactor/index.d.ts +4 -0
- package/dist/src/transactor/index.d.ts.map +1 -0
- package/dist/src/transactor/index.js +4 -0
- package/dist/src/transactor/index.js.map +1 -0
- package/dist/src/transactor/network-transactor.d.ts +36 -0
- package/dist/src/transactor/network-transactor.d.ts.map +1 -0
- package/dist/src/transactor/network-transactor.js +297 -0
- package/dist/src/transactor/network-transactor.js.map +1 -0
- package/dist/src/transactor/transactor-source.d.ts +24 -0
- package/dist/src/transactor/transactor-source.d.ts.map +1 -0
- package/dist/src/transactor/transactor-source.js +62 -0
- package/dist/src/transactor/transactor-source.js.map +1 -0
- package/dist/src/transactor/transactor.d.ts +38 -0
- package/dist/src/transactor/transactor.d.ts.map +1 -0
- package/dist/src/transactor/transactor.js +2 -0
- package/dist/src/transactor/transactor.js.map +1 -0
- package/dist/src/transform/atomic.d.ts +8 -0
- package/dist/src/transform/atomic.d.ts.map +1 -0
- package/dist/src/transform/atomic.js +14 -0
- package/dist/src/transform/atomic.js.map +1 -0
- package/dist/src/transform/cache-source.d.ts +13 -0
- package/dist/src/transform/cache-source.d.ts.map +1 -0
- package/dist/src/transform/cache-source.js +52 -0
- package/dist/src/transform/cache-source.js.map +1 -0
- package/dist/src/transform/helpers.d.ts +25 -0
- package/dist/src/transform/helpers.d.ts.map +1 -0
- package/dist/src/transform/helpers.js +105 -0
- package/dist/src/transform/helpers.js.map +1 -0
- package/dist/src/transform/index.d.ts +6 -0
- package/dist/src/transform/index.d.ts.map +1 -0
- package/dist/src/transform/index.js +6 -0
- package/dist/src/transform/index.js.map +1 -0
- package/dist/src/transform/struct.d.ts +19 -0
- package/dist/src/transform/struct.d.ts.map +1 -0
- package/dist/src/transform/struct.js +2 -0
- package/dist/src/transform/struct.js.map +1 -0
- package/dist/src/transform/tracker.d.ts +22 -0
- package/dist/src/transform/tracker.d.ts.map +1 -0
- package/dist/src/transform/tracker.js +64 -0
- package/dist/src/transform/tracker.js.map +1 -0
- package/dist/src/utility/actor.d.ts +11 -0
- package/dist/src/utility/actor.d.ts.map +1 -0
- package/dist/src/utility/actor.js +39 -0
- package/dist/src/utility/actor.js.map +1 -0
- package/dist/src/utility/batch-coordinator.d.ts +56 -0
- package/dist/src/utility/batch-coordinator.d.ts.map +1 -0
- package/dist/src/utility/batch-coordinator.js +127 -0
- package/dist/src/utility/batch-coordinator.js.map +1 -0
- package/dist/src/utility/block-id-to-bytes.d.ts +3 -0
- package/dist/src/utility/block-id-to-bytes.d.ts.map +1 -0
- package/dist/src/utility/block-id-to-bytes.js +7 -0
- package/dist/src/utility/block-id-to-bytes.js.map +1 -0
- package/dist/src/utility/ensured.d.ts +3 -0
- package/dist/src/utility/ensured.d.ts.map +1 -0
- package/dist/src/utility/ensured.js +24 -0
- package/dist/src/utility/ensured.js.map +1 -0
- package/dist/src/utility/groupby.d.ts +8 -0
- package/dist/src/utility/groupby.d.ts.map +1 -0
- package/dist/src/utility/groupby.js +15 -0
- package/dist/src/utility/groupby.js.map +1 -0
- package/dist/src/utility/is-record-empty.d.ts +3 -0
- package/dist/src/utility/is-record-empty.d.ts.map +1 -0
- package/dist/src/utility/is-record-empty.js +7 -0
- package/dist/src/utility/is-record-empty.js.map +1 -0
- package/dist/src/utility/latches.d.ts +11 -0
- package/dist/src/utility/latches.d.ts.map +1 -0
- package/dist/src/utility/latches.js +36 -0
- package/dist/src/utility/latches.js.map +1 -0
- package/dist/src/utility/nameof.d.ts +3 -0
- package/dist/src/utility/nameof.d.ts.map +1 -0
- package/dist/src/utility/nameof.js +5 -0
- package/dist/src/utility/nameof.js.map +1 -0
- package/dist/src/utility/pending.d.ts +13 -0
- package/dist/src/utility/pending.d.ts.map +1 -0
- package/dist/src/utility/pending.js +37 -0
- package/dist/src/utility/pending.js.map +1 -0
- package/package.json +56 -0
- package/src/blocks/block-store.ts +13 -0
- package/src/blocks/block-types.ts +11 -0
- package/src/blocks/helpers.ts +13 -0
- package/src/blocks/index.ts +5 -0
- package/src/blocks/structs.ts +17 -0
- package/src/btree/btree.ts +804 -0
- package/src/btree/independent-trunk.ts +54 -0
- package/src/btree/index.ts +5 -0
- package/src/btree/key-range.ts +15 -0
- package/src/btree/keyset.ts +6 -0
- package/src/btree/nodes.ts +25 -0
- package/src/btree/path.ts +37 -0
- package/src/btree/tree-block.ts +11 -0
- package/src/btree/trunk.ts +14 -0
- package/src/chain/chain-nodes.ts +24 -0
- package/src/chain/chain.ts +324 -0
- package/src/chain/index.ts +2 -0
- package/src/cluster/i-cluster.ts +6 -0
- package/src/cluster/index.ts +2 -0
- package/src/cluster/structs.ts +46 -0
- package/src/collection/action.ts +31 -0
- package/src/collection/collection.ts +200 -0
- package/src/collection/index.ts +3 -0
- package/src/collection/struct.ts +20 -0
- package/src/collections/diary/diary.ts +43 -0
- package/src/collections/diary/index.ts +2 -0
- package/src/collections/diary/struct.ts +3 -0
- package/src/collections/index.ts +2 -0
- package/src/collections/tree/collection-trunk.ts +25 -0
- package/src/collections/tree/index.ts +2 -0
- package/src/collections/tree/readme.md +19 -0
- package/src/collections/tree/struct.ts +18 -0
- package/src/collections/tree/tree.ts +124 -0
- package/src/index.ts +17 -0
- package/src/log/index.ts +2 -0
- package/src/log/log.ts +155 -0
- package/src/log/struct.ts +40 -0
- package/src/network/i-key-network.ts +24 -0
- package/src/network/i-peer-network.ts +8 -0
- package/src/network/i-repo.ts +19 -0
- package/src/network/index.ts +5 -0
- package/src/network/repo-protocol.ts +12 -0
- package/src/network/struct.ts +137 -0
- package/src/transaction/actions-engine.ts +83 -0
- package/src/transaction/context.ts +103 -0
- package/src/transaction/coordinator.ts +583 -0
- package/src/transaction/index.ts +30 -0
- package/src/transaction/session.ts +182 -0
- package/src/transaction/transaction.ts +205 -0
- package/src/transaction/validator.ts +150 -0
- package/src/transactor/index.ts +4 -0
- package/src/transactor/network-transactor.ts +435 -0
- package/src/transactor/transactor-source.ts +65 -0
- package/src/transactor/transactor.ts +44 -0
- package/src/transform/atomic.ts +16 -0
- package/src/transform/cache-source.ts +57 -0
- package/src/transform/helpers.ts +117 -0
- package/src/transform/index.ts +5 -0
- package/src/transform/struct.ts +22 -0
- package/src/transform/tracker.ts +70 -0
- package/src/utility/actor.ts +62 -0
- package/src/utility/batch-coordinator.ts +174 -0
- package/src/utility/block-id-to-bytes.ts +8 -0
- package/src/utility/ensured.ts +32 -0
- package/src/utility/groupby.ts +18 -0
- package/src/utility/is-record-empty.ts +5 -0
- package/src/utility/latches.ts +42 -0
- package/src/utility/nameof.ts +7 -0
- package/src/utility/pending.ts +41 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BlockType, IBlock, BlockId, BlockHeader, BlockOperation } from "./index.js";
|
|
2
|
+
export type BlockSource<T extends IBlock> = {
|
|
3
|
+
createBlockHeader(type: BlockType, newId?: BlockId): BlockHeader;
|
|
4
|
+
tryGet(id: BlockId): Promise<T | undefined>;
|
|
5
|
+
generateId(): BlockId;
|
|
6
|
+
};
|
|
7
|
+
export type BlockStore<T extends IBlock> = BlockSource<T> & {
|
|
8
|
+
insert(block: T): void;
|
|
9
|
+
update(blockId: BlockId, op: BlockOperation): void;
|
|
10
|
+
delete(blockId: BlockId): void;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=block-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-store.d.ts","sourceRoot":"","sources":["../../../src/blocks/block-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1F,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,IAAI;IAC3C,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IACjE,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAC5C,UAAU,IAAI,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG;IAC3D,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI,CAAC;IACnD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-store.js","sourceRoot":"","sources":["../../../src/blocks/block-store.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-types.d.ts","sourceRoot":"","sources":["../../../src/blocks/block-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAInC,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,UAMnE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const blockTypes = new Map();
|
|
2
|
+
export function registerBlockType(blockType, name) {
|
|
3
|
+
if (blockTypes.has(blockType)) {
|
|
4
|
+
throw new Error(`Block type ${blockType} (${name}) already registered (${blockTypes.get(blockType)})`);
|
|
5
|
+
}
|
|
6
|
+
blockTypes.set(blockType, name);
|
|
7
|
+
return blockType;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=block-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-types.js","sourceRoot":"","sources":["../../../src/blocks/block-types.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;AAEhD,MAAM,UAAU,iBAAiB,CAAC,SAAoB,EAAE,IAAY;IACnE,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,KAAK,IAAI,yBAAyB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxG,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BlockOperation, IBlock, BlockId, BlockStore } from "../index.js";
|
|
2
|
+
export declare function get<T extends IBlock>(store: BlockStore<T>, id: BlockId): Promise<T>;
|
|
3
|
+
export declare function apply<T extends IBlock>(store: BlockStore<T>, block: IBlock, op: BlockOperation): void;
|
|
4
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/blocks/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG/E,wBAAsB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAIzF;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,QAG9F"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { applyOperation } from "../transform/helpers.js";
|
|
2
|
+
export async function get(store, id) {
|
|
3
|
+
const block = await store.tryGet(id);
|
|
4
|
+
if (!block)
|
|
5
|
+
throw Error(`Missing block (${id})`);
|
|
6
|
+
return block;
|
|
7
|
+
}
|
|
8
|
+
export function apply(store, block, op) {
|
|
9
|
+
applyOperation(block, op);
|
|
10
|
+
store.update(block.header.id, op);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/blocks/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAmB,KAAoB,EAAE,EAAW;IAC5E,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,MAAM,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,KAAK,CAAmB,KAAoB,EAAE,KAAa,EAAE,EAAkB;IAC9F,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/blocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type BlockId = string;
|
|
2
|
+
export type BlockType = string;
|
|
3
|
+
export type BlockHeader = {
|
|
4
|
+
id: BlockId;
|
|
5
|
+
type: BlockType;
|
|
6
|
+
collectionId: BlockId;
|
|
7
|
+
};
|
|
8
|
+
/** A simple block with only a header. Blocks should be treated as immutable */
|
|
9
|
+
export type IBlock = {
|
|
10
|
+
header: BlockHeader;
|
|
11
|
+
};
|
|
12
|
+
export type BlockOperation = [entity: string, index: number, deleteCount: number, inserted: unknown[] | unknown];
|
|
13
|
+
export type BlockOperations = BlockOperation[];
|
|
14
|
+
//# sourceMappingURL=structs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structs.d.ts","sourceRoot":"","sources":["../../../src/blocks/structs.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACtB,CAAA;AAED,gFAAgF;AAChF,MAAM,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,WAAW,CAAC;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAA;AAChH,MAAM,MAAM,eAAe,GAAG,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../src/blocks/structs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Path, type ITreeTrunk, type KeyRange, type getTrunkFunc } from "./index.js";
|
|
2
|
+
import type { BlockId, BlockStore } from "../blocks/index.js";
|
|
3
|
+
import type { BranchNode, ITreeNode, LeafNode } from "./nodes.js";
|
|
4
|
+
import type { TreeBlock } from "./tree-block.js";
|
|
5
|
+
export declare const NodeCapacity = 64;
|
|
6
|
+
/**
|
|
7
|
+
* Represents a lightweight B+(ish)Tree (data at leaves, but no linked list of leaves).
|
|
8
|
+
* Allows for efficient storage and retrieval of data in a sorted manner.
|
|
9
|
+
* @template TEntry The type of entries stored in the B-tree.
|
|
10
|
+
* @template TKey The type of keys used for indexing the entries. This might be an element of TEntry, or TEntry itself.
|
|
11
|
+
*/
|
|
12
|
+
export declare class BTree<TKey, TEntry> {
|
|
13
|
+
readonly store: BlockStore<ITreeNode>;
|
|
14
|
+
readonly trunk: ITreeTrunk;
|
|
15
|
+
readonly keyFromEntry: (entry: TEntry) => TKey;
|
|
16
|
+
readonly compare: (a: TKey, b: TKey) => number;
|
|
17
|
+
protected _version: number;
|
|
18
|
+
/**
|
|
19
|
+
* @param [compare=(a: TKey, b: TKey) => a < b ? -1 : a > b ? 1 : 0] a comparison function for keys. The default uses < and > operators.
|
|
20
|
+
* @param [keyFromEntry=(entry: TEntry) => entry as unknown as TKey] a function to extract the key from an entry. The default assumes the key is the entry itself.
|
|
21
|
+
*/
|
|
22
|
+
constructor(store: BlockStore<ITreeNode>, trunk: ITreeTrunk, keyFromEntry?: (entry: TEntry) => TKey, compare?: (a: TKey, b: TKey) => number);
|
|
23
|
+
static createRoot(store: BlockStore<ITreeNode>): LeafNode<never>;
|
|
24
|
+
static create<TKey, TEntry>(store: BlockStore<ITreeNode | TreeBlock>, createTrunk: getTrunkFunc, keyFromEntry?: (entry: TEntry) => TKey, compare?: (a: TKey, b: TKey) => 0 | 1 | -1, newId?: BlockId): BTree<TKey, TEntry>;
|
|
25
|
+
/** @returns a path to the first entry (on = false if no entries) */
|
|
26
|
+
first(): Promise<Path<TKey, TEntry>>;
|
|
27
|
+
/** @returns a path to the last entry (on = false if no entries) */
|
|
28
|
+
last(): Promise<Path<TKey, TEntry>>;
|
|
29
|
+
/** Attempts to find the given key
|
|
30
|
+
* @returns Path to the key or the "crack" before it. If `on` is true on the resulting path, the key was found.
|
|
31
|
+
* If `on` is false, next() and prior() can attempt to move to the nearest match. */
|
|
32
|
+
find(key: TKey): Promise<Path<TKey, TEntry>>;
|
|
33
|
+
/** Retrieves the entry for the given key.
|
|
34
|
+
* Use find instead for a path to the key, the nearest match, or as a basis for navigation.
|
|
35
|
+
* @returns the entry for the given key if found; undefined otherwise. */
|
|
36
|
+
get(key: TKey): Promise<TEntry | undefined>;
|
|
37
|
+
/** @returns the entry for the given path if on an entry; undefined otherwise. */
|
|
38
|
+
at(path: Path<TKey, TEntry>): TEntry | undefined;
|
|
39
|
+
/** Iterates based on the given range
|
|
40
|
+
* WARNING: mutation during iteration will result in an exception
|
|
41
|
+
*/
|
|
42
|
+
range(range: KeyRange<TKey>): AsyncIterableIterator<Path<TKey, TEntry>>;
|
|
43
|
+
/** @returns true if the given path remains valid; false if the tree has been mutated, invalidating the path. */
|
|
44
|
+
isValid(path: Path<TKey, TEntry>): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Adds a value to the tree. Be sure to check the result, as the tree does not allow duplicate keys.
|
|
47
|
+
* Added entries are frozen to ensure immutability
|
|
48
|
+
* @returns path to the new (on = true) or conflicting (on = false) row. */
|
|
49
|
+
insert(entry: TEntry): Promise<Path<TKey, TEntry>>;
|
|
50
|
+
/** Updates the entry at the given path to the given value. Deletes and inserts if the key changes.
|
|
51
|
+
* @returns path to resulting entry and whether it was an update (as opposed to an insert).
|
|
52
|
+
* * on = true if update/insert succeeded.
|
|
53
|
+
* * wasUpdate = true if updated; false if inserted.
|
|
54
|
+
* * Returned path is on entry
|
|
55
|
+
* * on = false if update/insert failed.
|
|
56
|
+
* * wasUpdate = true, given path is not on an entry
|
|
57
|
+
* * else newEntry's new key already present; returned path is "near" existing entry */
|
|
58
|
+
updateAt(path: Path<TKey, TEntry>, newEntry: TEntry): Promise<[path: Path<TKey, TEntry>, wasUpdate: boolean]>;
|
|
59
|
+
/** Inserts the entry if it doesn't exist, or updates it if it does.
|
|
60
|
+
* The entry is frozen to ensure immutability.
|
|
61
|
+
* @returns path to the new entry. on = true if existing; on = false if new. */
|
|
62
|
+
upsert(entry: TEntry): Promise<Path<TKey, TEntry>>;
|
|
63
|
+
/** Inserts or updates depending on the existence of the given key, using callbacks to generate the new value.
|
|
64
|
+
* @param newEntry the new entry to insert if the key doesn't exist.
|
|
65
|
+
* @param getUpdated a callback to generate an updated entry if the key does exist. WARNING: mutation in this callback will cause merge to error.
|
|
66
|
+
* @returns path to new entry and whether an update or insert attempted.
|
|
67
|
+
* If getUpdated callback returns a row that is already present, the resulting path will not be on. */
|
|
68
|
+
merge(newEntry: TEntry, getUpdated: (existing: TEntry) => TEntry): Promise<[path: Path<TKey, TEntry>, wasUpdate: boolean]>;
|
|
69
|
+
/** Deletes the entry at the given path.
|
|
70
|
+
* The on property of the path will be cleared.
|
|
71
|
+
* @returns true if the delete succeeded (the key was found); false otherwise.
|
|
72
|
+
*/
|
|
73
|
+
deleteAt(path: Path<TKey, TEntry>): Promise<boolean>;
|
|
74
|
+
drop(): Promise<void>;
|
|
75
|
+
/** Iterates forward starting from the path location (inclusive) to the end.
|
|
76
|
+
* WARNING: mutation during iteration will result in an exception.
|
|
77
|
+
*/
|
|
78
|
+
ascending(path: Path<TKey, TEntry>): AsyncIterableIterator<Path<TKey, TEntry>>;
|
|
79
|
+
/** Iterates backward starting from the path location (inclusive) to the end.
|
|
80
|
+
* WARNING: mutation during iteration will result in an exception
|
|
81
|
+
*/
|
|
82
|
+
descending(path: Path<TKey, TEntry>): AsyncIterableIterator<Path<TKey, TEntry>>;
|
|
83
|
+
/** Computed (not stored) count. Computes the sum using leaf-node lengths. O(n/af) where af is average fill.
|
|
84
|
+
* @param from if provided, the count will start from the given path (inclusive). If ascending is false,
|
|
85
|
+
* the count will start from the end of the tree. Ascending is true by default.
|
|
86
|
+
*/
|
|
87
|
+
getCount(from?: {
|
|
88
|
+
path: Path<TKey, TEntry>;
|
|
89
|
+
ascending?: boolean;
|
|
90
|
+
}): Promise<number>;
|
|
91
|
+
/** @returns a path one step forward. on will be true if the path hasn't hit the end. */
|
|
92
|
+
next(path: Path<TKey, TEntry>): Promise<Path<TKey, TEntry>>;
|
|
93
|
+
/** Attempts to advance the given path one step forward. (mutates the path) */
|
|
94
|
+
moveNext(path: Path<TKey, TEntry>): Promise<void>;
|
|
95
|
+
/** @returns a path one step backward. on will be true if the path hasn't hit the end. */
|
|
96
|
+
prior(path: Path<TKey, TEntry>): Promise<Path<TKey, TEntry>>;
|
|
97
|
+
/** Attempts to advance the given path one step backwards. (mutates the path) */
|
|
98
|
+
movePrior(path: Path<TKey, TEntry>): Promise<void>;
|
|
99
|
+
/** @remarks Assumes the path is "on" */
|
|
100
|
+
protected keyFromPath(path: Path<TKey, TEntry>): TKey;
|
|
101
|
+
private internalAscending;
|
|
102
|
+
private internalDescending;
|
|
103
|
+
private findFirst;
|
|
104
|
+
private findLast;
|
|
105
|
+
protected getPath(node: ITreeNode, key: TKey): Promise<Path<TKey, TEntry>>;
|
|
106
|
+
private indexOfEntry;
|
|
107
|
+
protected indexOfKey(keys: TKey[], key: TKey): number;
|
|
108
|
+
private internalNext;
|
|
109
|
+
private internalPrior;
|
|
110
|
+
private internalUpdate;
|
|
111
|
+
protected internalDelete(path: Path<TKey, TEntry>): Promise<boolean>;
|
|
112
|
+
private internalInsert;
|
|
113
|
+
private internalInsertAt;
|
|
114
|
+
/** Starting from the given node, recursively working down to the leaf, build onto the path based on the beginning-most entry. */
|
|
115
|
+
private moveToFirst;
|
|
116
|
+
/** Starting from the given node, recursively working down to the leaf, build onto the path based on the end-most entry. */
|
|
117
|
+
private moveToLast;
|
|
118
|
+
/** Construct a path based on the first-most edge of the given. */
|
|
119
|
+
private getFirst;
|
|
120
|
+
/** Construct a path based on the last-most edge of the given node */
|
|
121
|
+
private getLast;
|
|
122
|
+
private leafInsert;
|
|
123
|
+
private branchInsert;
|
|
124
|
+
protected rebalanceLeaf(path: Path<TKey, TEntry>, depth: number): Promise<ITreeNode | undefined>;
|
|
125
|
+
protected rebalanceBranch(path: Path<TKey, TEntry>, depth: number): Promise<ITreeNode | undefined>;
|
|
126
|
+
protected updatePartition(nodeIndex: number, path: Path<TKey, TEntry>, depth: number, newKey: TKey): void;
|
|
127
|
+
protected insertPartition(branch: BranchNode<TKey>, index: number, key: TKey, node: BlockId, nodeOffset?: number): void;
|
|
128
|
+
protected deletePartition(branch: BranchNode<TKey>, index: number, nodeOffset?: number): void;
|
|
129
|
+
private validatePath;
|
|
130
|
+
/** Iterates every node ID below and including the given node. */
|
|
131
|
+
private nodeIds;
|
|
132
|
+
protected getEntry(path: Path<TKey, TEntry>): TEntry;
|
|
133
|
+
protected updateEntry(path: Path<TKey, TEntry>, entry: TEntry): void;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=btree.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"btree.d.ts","sourceRoot":"","sources":["../../../src/btree/btree.ts"],"names":[],"mappings":"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"}
|