@aztec/kv-store 0.0.0-test.1 → 0.0.1-commit.0208eb9
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/dest/config.d.ts +2 -2
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +5 -3
- package/dest/indexeddb/array.d.ts +3 -2
- package/dest/indexeddb/array.d.ts.map +1 -1
- package/dest/indexeddb/array.js +24 -7
- package/dest/indexeddb/index.d.ts +2 -2
- package/dest/indexeddb/index.d.ts.map +1 -1
- package/dest/indexeddb/index.js +4 -7
- package/dest/indexeddb/map.d.ts +12 -6
- package/dest/indexeddb/map.d.ts.map +1 -1
- package/dest/indexeddb/map.js +39 -61
- package/dest/indexeddb/multi_map.d.ts +14 -0
- package/dest/indexeddb/multi_map.d.ts.map +1 -0
- package/dest/indexeddb/multi_map.js +107 -0
- package/dest/indexeddb/set.d.ts +1 -1
- package/dest/indexeddb/set.d.ts.map +1 -1
- package/dest/indexeddb/singleton.d.ts +3 -2
- package/dest/indexeddb/singleton.d.ts.map +1 -1
- package/dest/indexeddb/singleton.js +6 -2
- package/dest/indexeddb/store.d.ts +15 -16
- package/dest/indexeddb/store.d.ts.map +1 -1
- package/dest/indexeddb/store.js +45 -42
- package/dest/interfaces/array.d.ts +5 -4
- package/dest/interfaces/array.d.ts.map +1 -1
- package/dest/interfaces/array.js +1 -3
- package/dest/interfaces/array_test_suite.d.ts +1 -1
- package/dest/interfaces/common.d.ts +11 -9
- package/dest/interfaces/common.d.ts.map +1 -1
- package/dest/interfaces/common.js +8 -3
- package/dest/interfaces/counter.d.ts +1 -1
- package/dest/interfaces/index.d.ts +4 -2
- package/dest/interfaces/index.d.ts.map +1 -1
- package/dest/interfaces/index.js +2 -0
- package/dest/interfaces/map.d.ts +21 -49
- package/dest/interfaces/map.d.ts.map +1 -1
- package/dest/interfaces/map.js +1 -1
- package/dest/interfaces/map_test_suite.d.ts +1 -1
- package/dest/interfaces/map_test_suite.d.ts.map +1 -1
- package/dest/interfaces/map_test_suite.js +181 -70
- package/dest/interfaces/multi_map.d.ts +41 -0
- package/dest/interfaces/multi_map.d.ts.map +1 -0
- package/dest/interfaces/multi_map.js +3 -0
- package/dest/interfaces/multi_map_test_suite.d.ts +3 -0
- package/dest/interfaces/multi_map_test_suite.d.ts.map +1 -0
- package/dest/interfaces/multi_map_test_suite.js +364 -0
- package/dest/interfaces/set.d.ts +1 -1
- package/dest/interfaces/set_test_suite.d.ts +1 -1
- package/dest/interfaces/singleton.d.ts +1 -1
- package/dest/interfaces/singleton_test_suite.d.ts +1 -1
- package/dest/interfaces/store.d.ts +18 -43
- package/dest/interfaces/store.d.ts.map +1 -1
- package/dest/interfaces/utils.d.ts +3 -1
- package/dest/interfaces/utils.d.ts.map +1 -1
- package/dest/interfaces/utils.js +3 -1
- package/dest/lmdb/array.d.ts +3 -2
- package/dest/lmdb/array.d.ts.map +1 -1
- package/dest/lmdb/array.js +4 -2
- package/dest/lmdb/counter.d.ts +1 -1
- package/dest/lmdb/counter.d.ts.map +1 -1
- package/dest/lmdb/index.d.ts +2 -2
- package/dest/lmdb/index.d.ts.map +1 -1
- package/dest/lmdb/index.js +5 -5
- package/dest/lmdb/map.d.ts +11 -23
- package/dest/lmdb/map.d.ts.map +1 -1
- package/dest/lmdb/map.js +15 -81
- package/dest/lmdb/multi_map.d.ts +13 -0
- package/dest/lmdb/multi_map.d.ts.map +1 -0
- package/dest/lmdb/multi_map.js +44 -0
- package/dest/lmdb/set.d.ts +1 -1
- package/dest/lmdb/set.d.ts.map +1 -1
- package/dest/lmdb/singleton.d.ts +1 -1
- package/dest/lmdb/singleton.d.ts.map +1 -1
- package/dest/lmdb/store.d.ts +9 -25
- package/dest/lmdb/store.d.ts.map +1 -1
- package/dest/lmdb/store.js +12 -32
- package/dest/lmdb-v2/array.d.ts +4 -3
- package/dest/lmdb-v2/array.d.ts.map +1 -1
- package/dest/lmdb-v2/array.js +4 -2
- package/dest/lmdb-v2/factory.d.ts +6 -9
- package/dest/lmdb-v2/factory.d.ts.map +1 -1
- package/dest/lmdb-v2/factory.js +26 -12
- package/dest/lmdb-v2/index.d.ts +1 -1
- package/dest/lmdb-v2/map.d.ts +12 -45
- package/dest/lmdb-v2/map.d.ts.map +1 -1
- package/dest/lmdb-v2/map.js +17 -104
- package/dest/lmdb-v2/message.d.ts +24 -5
- package/dest/lmdb-v2/message.d.ts.map +1 -1
- package/dest/lmdb-v2/message.js +6 -4
- package/dest/lmdb-v2/multi_map.d.ts +52 -0
- package/dest/lmdb-v2/multi_map.d.ts.map +1 -0
- package/dest/lmdb-v2/multi_map.js +123 -0
- package/dest/lmdb-v2/read_transaction.d.ts +3 -1
- package/dest/lmdb-v2/read_transaction.d.ts.map +1 -1
- package/dest/lmdb-v2/read_transaction.js +34 -0
- package/dest/lmdb-v2/set.d.ts +15 -0
- package/dest/lmdb-v2/set.d.ts.map +1 -0
- package/dest/lmdb-v2/set.js +23 -0
- package/dest/lmdb-v2/singleton.d.ts +2 -2
- package/dest/lmdb-v2/singleton.d.ts.map +1 -1
- package/dest/lmdb-v2/singleton.js +1 -1
- package/dest/lmdb-v2/store.d.ts +13 -13
- package/dest/lmdb-v2/store.d.ts.map +1 -1
- package/dest/lmdb-v2/store.js +19 -29
- package/dest/lmdb-v2/tx-helpers.d.ts +6 -0
- package/dest/lmdb-v2/tx-helpers.d.ts.map +1 -0
- package/dest/lmdb-v2/tx-helpers.js +21 -0
- package/dest/lmdb-v2/utils.d.ts +3 -14
- package/dest/lmdb-v2/utils.d.ts.map +1 -1
- package/dest/lmdb-v2/utils.js +0 -94
- package/dest/lmdb-v2/write_transaction.d.ts +3 -5
- package/dest/lmdb-v2/write_transaction.d.ts.map +1 -1
- package/dest/lmdb-v2/write_transaction.js +9 -5
- package/dest/stores/index.d.ts +2 -1
- package/dest/stores/index.d.ts.map +1 -1
- package/dest/stores/index.js +1 -0
- package/dest/stores/l2_tips_store.d.ts +24 -8
- package/dest/stores/l2_tips_store.d.ts.map +1 -1
- package/dest/stores/l2_tips_store.js +63 -45
- package/dest/utils.d.ts +9 -6
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +51 -16
- package/package.json +25 -16
- package/src/config.ts +6 -4
- package/src/indexeddb/array.ts +9 -5
- package/src/indexeddb/index.ts +10 -8
- package/src/indexeddb/map.ts +38 -55
- package/src/indexeddb/multi_map.ts +105 -0
- package/src/indexeddb/singleton.ts +5 -2
- package/src/indexeddb/store.ts +71 -56
- package/src/interfaces/array.ts +5 -3
- package/src/interfaces/common.ts +20 -9
- package/src/interfaces/index.ts +3 -1
- package/src/interfaces/map.ts +19 -53
- package/src/interfaces/map_test_suite.ts +101 -44
- package/src/interfaces/multi_map.ts +45 -0
- package/src/interfaces/multi_map_test_suite.ts +374 -0
- package/src/interfaces/store.ts +18 -53
- package/src/interfaces/utils.ts +2 -0
- package/src/lmdb/array.ts +2 -1
- package/src/lmdb/index.ts +11 -6
- package/src/lmdb/map.ts +23 -94
- package/src/lmdb/multi_map.ts +51 -0
- package/src/lmdb/store.ts +24 -48
- package/src/lmdb-v2/array.ts +8 -3
- package/src/lmdb-v2/factory.ts +29 -18
- package/src/lmdb-v2/map.ts +30 -127
- package/src/lmdb-v2/message.ts +23 -0
- package/src/lmdb-v2/multi_map.ts +150 -0
- package/src/lmdb-v2/read_transaction.ts +40 -0
- package/src/lmdb-v2/set.ts +33 -0
- package/src/lmdb-v2/singleton.ts +6 -2
- package/src/lmdb-v2/store.ts +24 -42
- package/src/lmdb-v2/tx-helpers.ts +29 -0
- package/src/lmdb-v2/utils.ts +0 -118
- package/src/lmdb-v2/write_transaction.ts +11 -10
- package/src/stores/index.ts +2 -0
- package/src/stores/l2_tips_store.ts +67 -49
- package/src/utils.ts +79 -21
- package/dest/interfaces/store_test_suite.d.ts +0 -3
- package/dest/interfaces/store_test_suite.d.ts.map +0 -1
- package/dest/interfaces/store_test_suite.js +0 -37
- package/src/interfaces/store_test_suite.ts +0 -56
package/dest/config.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
|
2
2
|
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
3
|
export type DataStoreConfig = {
|
|
4
4
|
dataDirectory: string | undefined;
|
|
5
|
-
|
|
5
|
+
dataStoreMapSizeKb: number;
|
|
6
6
|
l1Contracts?: {
|
|
7
7
|
rollupAddress: EthAddress;
|
|
8
8
|
};
|
|
@@ -14,4 +14,4 @@ export declare const dataConfigMappings: ConfigMappingsType<DataStoreConfig>;
|
|
|
14
14
|
* @returns The archiver configuration.
|
|
15
15
|
*/
|
|
16
16
|
export declare function getDataConfigFromEnv(): DataStoreConfig;
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUE2QyxNQUFNLDBCQUEwQixDQUFDO0FBQzlHLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE1BQU0sTUFBTSxlQUFlLEdBQUc7SUFDNUIsYUFBYSxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbEMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLFdBQVcsQ0FBQyxFQUFFO1FBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQTtLQUFFLENBQUM7Q0FDN0MsQ0FBQztBQUVGLGVBQU8sTUFBTSxrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxlQUFlLENBZ0JsRSxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILHdCQUFnQixvQkFBb0IsSUFBSSxlQUFlLENBRXREIn0=
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAC9G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE;QAAE,aAAa,EAAE,UAAU,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAC9G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE;QAAE,aAAa,EAAE,UAAU,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,eAAe,CAgBlE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,eAAe,CAEtD"}
|
package/dest/config.js
CHANGED
|
@@ -5,14 +5,16 @@ export const dataConfigMappings = {
|
|
|
5
5
|
env: 'DATA_DIRECTORY',
|
|
6
6
|
description: 'Optional dir to store data. If omitted will store in memory.'
|
|
7
7
|
},
|
|
8
|
-
|
|
8
|
+
dataStoreMapSizeKb: {
|
|
9
9
|
env: 'DATA_STORE_MAP_SIZE_KB',
|
|
10
|
-
description: '
|
|
10
|
+
description: 'The maximum possible size of a data store DB in KB. Can be overridden by component-specific options.',
|
|
11
11
|
...numberConfigHelper(128 * 1_024 * 1_024)
|
|
12
12
|
},
|
|
13
13
|
l1Contracts: {
|
|
14
14
|
description: 'The deployed L1 contract addresses',
|
|
15
|
-
nested:
|
|
15
|
+
nested: {
|
|
16
|
+
rollupAddress: l1ContractAddressesMapping.rollupAddress
|
|
17
|
+
}
|
|
16
18
|
}
|
|
17
19
|
};
|
|
18
20
|
/**
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { IDBPDatabase, IDBPObjectStore } from 'idb';
|
|
2
2
|
import type { AztecAsyncArray } from '../interfaces/array.js';
|
|
3
|
+
import type { Value } from '../interfaces/common.js';
|
|
3
4
|
import type { AztecIDBSchema } from './store.js';
|
|
4
5
|
/**
|
|
5
6
|
* A persistent array backed by IndexedDB.
|
|
6
7
|
*/
|
|
7
|
-
export declare class IndexedDBAztecArray<T> implements AztecAsyncArray<T> {
|
|
8
|
+
export declare class IndexedDBAztecArray<T extends Value> implements AztecAsyncArray<T> {
|
|
8
9
|
#private;
|
|
9
10
|
constructor(rootDB: IDBPDatabase<AztecIDBSchema>, name: string);
|
|
10
11
|
set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
|
|
@@ -18,4 +19,4 @@ export declare class IndexedDBAztecArray<T> implements AztecAsyncArray<T> {
|
|
|
18
19
|
valuesAsync(): AsyncIterableIterator<T>;
|
|
19
20
|
[Symbol.asyncIterator](): AsyncIterableIterator<T>;
|
|
20
21
|
}
|
|
21
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleGVkZGIvYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxxQkFBYSxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFFLFlBQVcsZUFBZSxDQUFDLENBQUMsQ0FBQzs7SUFNN0UsWUFBWSxNQUFNLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBSTdEO0lBRUQsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLEdBQUcsU0FBUyxFQUVwRjtJQUVELElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBRXZFO0lBRUssV0FBVyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FNbkM7SUFFSyxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQWN4QztJQUVLLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQVdsQztJQUVLLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBU25EO0lBRUssS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBb0JuRDtJQUVNLFlBQVksSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQU14RDtJQUVNLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FJN0M7SUFFRCxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FFakQ7Q0FLRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/indexeddb/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/indexeddb/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;;IAM7E,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAI7D;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,IAAI,EAAE,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAEvE;IAEK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAMnC;IAEK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAcxC;IAEK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAWlC;IAEK,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CASnD;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnD;IAEM,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAMxD;IAEM,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAI7C;IAED,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAEjD;CAKF"}
|
package/dest/indexeddb/array.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
var _computedKey;
|
|
2
|
+
import { hash } from 'ohash';
|
|
3
|
+
_computedKey = Symbol.asyncIterator;
|
|
1
4
|
/**
|
|
2
5
|
* A persistent array backed by IndexedDB.
|
|
3
6
|
*/ export class IndexedDBAztecArray {
|
|
@@ -19,10 +22,14 @@
|
|
|
19
22
|
async lengthAsync() {
|
|
20
23
|
return await this.db.index('key').count(IDBKeyRange.bound([
|
|
21
24
|
this.#container,
|
|
22
|
-
|
|
25
|
+
[
|
|
26
|
+
this.#name
|
|
27
|
+
]
|
|
23
28
|
], [
|
|
24
29
|
this.#container,
|
|
25
|
-
|
|
30
|
+
[
|
|
31
|
+
this.#name
|
|
32
|
+
]
|
|
26
33
|
])) ?? 0;
|
|
27
34
|
}
|
|
28
35
|
async push(...vals) {
|
|
@@ -30,8 +37,11 @@
|
|
|
30
37
|
for (const val of vals){
|
|
31
38
|
await this.db.put({
|
|
32
39
|
value: val,
|
|
40
|
+
hash: hash(val),
|
|
33
41
|
container: this.#container,
|
|
34
|
-
key:
|
|
42
|
+
key: [
|
|
43
|
+
this.#name
|
|
44
|
+
],
|
|
35
45
|
keyCount: length + 1,
|
|
36
46
|
slot: this.#slot(length)
|
|
37
47
|
});
|
|
@@ -67,8 +77,11 @@
|
|
|
67
77
|
}
|
|
68
78
|
await this.db.put({
|
|
69
79
|
value: val,
|
|
80
|
+
hash: hash(val),
|
|
70
81
|
container: this.#container,
|
|
71
|
-
key:
|
|
82
|
+
key: [
|
|
83
|
+
this.#name
|
|
84
|
+
],
|
|
72
85
|
keyCount: index + 1,
|
|
73
86
|
slot: this.#slot(index)
|
|
74
87
|
});
|
|
@@ -78,10 +91,14 @@
|
|
|
78
91
|
const index = this.db.index('key');
|
|
79
92
|
const rangeQuery = IDBKeyRange.bound([
|
|
80
93
|
this.#container,
|
|
81
|
-
|
|
94
|
+
[
|
|
95
|
+
this.#name
|
|
96
|
+
]
|
|
82
97
|
], [
|
|
83
98
|
this.#container,
|
|
84
|
-
|
|
99
|
+
[
|
|
100
|
+
this.#name
|
|
101
|
+
]
|
|
85
102
|
]);
|
|
86
103
|
for await (const cursor of index.iterate(rangeQuery)){
|
|
87
104
|
yield [
|
|
@@ -95,7 +112,7 @@
|
|
|
95
112
|
yield value;
|
|
96
113
|
}
|
|
97
114
|
}
|
|
98
|
-
[
|
|
115
|
+
[_computedKey]() {
|
|
99
116
|
return this.valuesAsync();
|
|
100
117
|
}
|
|
101
118
|
#slot(index) {
|
|
@@ -2,6 +2,6 @@ import { type Logger } from '@aztec/foundation/log';
|
|
|
2
2
|
import type { DataStoreConfig } from '../config.js';
|
|
3
3
|
import { AztecIndexedDBStore } from './store.js';
|
|
4
4
|
export { AztecIndexedDBStore } from './store.js';
|
|
5
|
-
export declare function createStore(name: string, config: DataStoreConfig, log?: Logger): Promise<AztecIndexedDBStore>;
|
|
5
|
+
export declare function createStore(name: string, config: DataStoreConfig, schemaVersion?: number | undefined, log?: Logger): Promise<AztecIndexedDBStore>;
|
|
6
6
|
export declare function openTmpStore(ephemeral?: boolean): Promise<AztecIndexedDBStore>;
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleGVkZGIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRWxFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpELHdCQUFzQixXQUFXLENBQy9CLElBQUksRUFBRSxNQUFNLEVBQ1osTUFBTSxFQUFFLGVBQWUsRUFDdkIsYUFBYSxHQUFFLE1BQU0sR0FBRyxTQUFxQixFQUM3QyxHQUFHLEdBQUUsTUFBaUMsZ0NBY3ZDO0FBRUQsd0JBQWdCLFlBQVksQ0FBQyxTQUFTLEdBQUUsT0FBZSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUVyRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexeddb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexeddb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,aAAa,GAAE,MAAM,GAAG,SAAqB,EAC7C,GAAG,GAAE,MAAiC,gCAcvC;AAED,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAErF"}
|
package/dest/indexeddb/index.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
-
import {
|
|
2
|
+
import { initStoreForRollupAndSchemaVersion } from '../utils.js';
|
|
3
3
|
import { AztecIndexedDBStore } from './store.js';
|
|
4
4
|
export { AztecIndexedDBStore } from './store.js';
|
|
5
|
-
export async function createStore(name, config, log = createLogger('kv-store')) {
|
|
5
|
+
export async function createStore(name, config, schemaVersion = undefined, log = createLogger('kv-store')) {
|
|
6
6
|
let { dataDirectory } = config;
|
|
7
7
|
if (typeof dataDirectory !== 'undefined') {
|
|
8
8
|
dataDirectory = `${dataDirectory}/${name}`;
|
|
9
9
|
}
|
|
10
|
-
log.info(dataDirectory ? `Creating ${name} data store at directory ${dataDirectory} with map size ${config.
|
|
10
|
+
log.info(dataDirectory ? `Creating ${name} data store at directory ${dataDirectory} with map size ${config.dataStoreMapSizeKb} KB` : `Creating ${name} ephemeral data store with map size ${config.dataStoreMapSizeKb} KB`);
|
|
11
11
|
const store = await AztecIndexedDBStore.open(createLogger('kv-store:indexeddb'), dataDirectory ?? '', false);
|
|
12
|
-
|
|
13
|
-
return initStoreForRollup(store, config.l1Contracts.rollupAddress, log);
|
|
14
|
-
}
|
|
15
|
-
return store;
|
|
12
|
+
return initStoreForRollupAndSchemaVersion(store, schemaVersion, config.l1Contracts?.rollupAddress, log);
|
|
16
13
|
}
|
|
17
14
|
export function openTmpStore(ephemeral = false) {
|
|
18
15
|
return AztecIndexedDBStore.open(createLogger('kv-store:indexeddb'), undefined, ephemeral);
|
package/dest/indexeddb/map.d.ts
CHANGED
|
@@ -1,26 +1,32 @@
|
|
|
1
1
|
import type { IDBPDatabase, IDBPObjectStore } from 'idb';
|
|
2
|
-
import type { Key, Range } from '../interfaces/common.js';
|
|
3
|
-
import type {
|
|
2
|
+
import type { Key, Range, Value } from '../interfaces/common.js';
|
|
3
|
+
import type { AztecAsyncMap } from '../interfaces/map.js';
|
|
4
4
|
import type { AztecIDBSchema } from './store.js';
|
|
5
5
|
/**
|
|
6
6
|
* A map backed by IndexedDB.
|
|
7
7
|
*/
|
|
8
|
-
export declare class IndexedDBAztecMap<K extends Key, V> implements
|
|
8
|
+
export declare class IndexedDBAztecMap<K extends Key, V extends Value> implements AztecAsyncMap<K, V> {
|
|
9
9
|
#private;
|
|
10
10
|
protected name: string;
|
|
11
|
+
protected container: string;
|
|
11
12
|
constructor(rootDB: IDBPDatabase<AztecIDBSchema>, mapName: string);
|
|
12
13
|
set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
|
|
13
14
|
get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
|
|
14
15
|
getAsync(key: K): Promise<V | undefined>;
|
|
15
|
-
getValuesAsync(key: K): AsyncIterableIterator<V>;
|
|
16
16
|
hasAsync(key: K): Promise<boolean>;
|
|
17
|
+
sizeAsync(): Promise<number>;
|
|
17
18
|
set(key: K, val: V): Promise<void>;
|
|
19
|
+
setMany(entries: {
|
|
20
|
+
key: K;
|
|
21
|
+
value: V;
|
|
22
|
+
}[]): Promise<void>;
|
|
18
23
|
swap(_key: K, _fn: (val: V | undefined) => V): Promise<void>;
|
|
19
24
|
setIfNotExists(key: K, val: V): Promise<boolean>;
|
|
20
25
|
delete(key: K): Promise<void>;
|
|
21
|
-
deleteValue(key: K, val: V): Promise<void>;
|
|
22
26
|
entriesAsync(range?: Range<K>): AsyncIterableIterator<[K, V]>;
|
|
23
27
|
valuesAsync(range?: Range<K>): AsyncIterableIterator<V>;
|
|
24
28
|
keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
29
|
+
protected normalizeKey(key: K): (string | number | Uint8Array)[];
|
|
30
|
+
protected slot(key: K, index?: number): string;
|
|
25
31
|
}
|
|
26
|
-
//# sourceMappingURL=
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXhlZGRiL21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBR3pELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gscUJBQWEsaUJBQWlCLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsS0FBSyxDQUFFLFlBQVcsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7O0lBQzNGLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3ZCLFNBQVMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBSzVCLFlBQVksTUFBTSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUloRTtJQUVELElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsRUFFcEY7SUFFRCxJQUFJLEVBQUUsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUV2RTtJQUVLLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBRzdDO0lBRUssUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUd2QztJQUVLLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBSWpDO0lBRUssR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBU3ZDO0lBRUssT0FBTyxDQUFDLE9BQU8sRUFBRTtRQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0tBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJNUQ7SUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUUzRDtJQUVLLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQU1yRDtJQUVLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbEM7SUFFTSxZQUFZLENBQUMsS0FBSyxHQUFFLEtBQUssQ0FBQyxDQUFDLENBQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQW1CdkU7SUFFTSxXQUFXLENBQUMsS0FBSyxHQUFFLEtBQUssQ0FBQyxDQUFDLENBQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FJakU7SUFFTSxTQUFTLENBQUMsS0FBSyxHQUFFLEtBQUssQ0FBQyxDQUFDLENBQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FJL0Q7SUFNRCxTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBRS9EO0lBRUQsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssR0FBRSxNQUFVLEdBQUcsTUFBTSxDQUVoRDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/indexeddb/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/indexeddb/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;;IAC3F,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAK5B,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAIhE;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,IAAI,EAAE,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAEvE;IAEK,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAG7C;IAEK,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAGvC;IAEK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAIjC;IAEK,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASvC;IAEK,OAAO,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D;IAED,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;IAEK,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrD;IAEK,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAElC;IAEM,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAmBvE;IAEM,WAAW,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAIjE;IAEM,SAAS,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAI/D;IAMD,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,CAE/D;IAED,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,CAEhD;CACF"}
|
package/dest/indexeddb/map.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import { hash } from 'ohash';
|
|
1
2
|
/**
|
|
2
3
|
* A map backed by IndexedDB.
|
|
3
4
|
*/ export class IndexedDBAztecMap {
|
|
4
5
|
name;
|
|
5
|
-
|
|
6
|
+
container;
|
|
6
7
|
#_db;
|
|
7
8
|
#rootDB;
|
|
8
9
|
constructor(rootDB, mapName){
|
|
9
10
|
this.name = mapName;
|
|
10
|
-
this
|
|
11
|
+
this.container = `map:${mapName}`;
|
|
11
12
|
this.#rootDB = rootDB;
|
|
12
13
|
}
|
|
13
14
|
set db(db) {
|
|
@@ -17,44 +18,37 @@
|
|
|
17
18
|
return this.#_db ? this.#_db : this.#rootDB.transaction('data', 'readwrite').store;
|
|
18
19
|
}
|
|
19
20
|
async getAsync(key) {
|
|
20
|
-
const data = await this.db.get(this
|
|
21
|
+
const data = await this.db.get(this.slot(key));
|
|
21
22
|
return data?.value;
|
|
22
23
|
}
|
|
23
|
-
async *getValuesAsync(key) {
|
|
24
|
-
const index = this.db.index('keyCount');
|
|
25
|
-
const rangeQuery = IDBKeyRange.bound([
|
|
26
|
-
this.#container,
|
|
27
|
-
this.#normalizeKey(key),
|
|
28
|
-
0
|
|
29
|
-
], [
|
|
30
|
-
this.#container,
|
|
31
|
-
this.#normalizeKey(key),
|
|
32
|
-
Number.MAX_SAFE_INTEGER
|
|
33
|
-
], false, false);
|
|
34
|
-
for await (const cursor of index.iterate(rangeQuery)){
|
|
35
|
-
yield cursor.value.value;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
24
|
async hasAsync(key) {
|
|
39
25
|
const result = await this.getAsync(key) !== undefined;
|
|
40
26
|
return result;
|
|
41
27
|
}
|
|
42
|
-
async
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
this
|
|
28
|
+
async sizeAsync() {
|
|
29
|
+
const index = this.db.index('key');
|
|
30
|
+
const rangeQuery = IDBKeyRange.bound([
|
|
31
|
+
this.container
|
|
46
32
|
], [
|
|
47
|
-
this
|
|
48
|
-
|
|
49
|
-
|
|
33
|
+
this.container + '\uffff'
|
|
34
|
+
], true, true);
|
|
35
|
+
return await index.count(rangeQuery);
|
|
36
|
+
}
|
|
37
|
+
async set(key, val) {
|
|
50
38
|
await this.db.put({
|
|
51
39
|
value: val,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
40
|
+
hash: hash(val),
|
|
41
|
+
container: this.container,
|
|
42
|
+
key: this.normalizeKey(key),
|
|
43
|
+
keyCount: 1,
|
|
44
|
+
slot: this.slot(key)
|
|
56
45
|
});
|
|
57
46
|
}
|
|
47
|
+
async setMany(entries) {
|
|
48
|
+
for (const { key, value } of entries){
|
|
49
|
+
await this.set(key, value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
58
52
|
swap(_key, _fn) {
|
|
59
53
|
throw new Error('Not implemented');
|
|
60
54
|
}
|
|
@@ -66,34 +60,20 @@
|
|
|
66
60
|
return false;
|
|
67
61
|
}
|
|
68
62
|
async delete(key) {
|
|
69
|
-
await this.db.delete(this
|
|
70
|
-
}
|
|
71
|
-
async deleteValue(key, val) {
|
|
72
|
-
const index = this.db.index('keyCount');
|
|
73
|
-
const rangeQuery = IDBKeyRange.bound([
|
|
74
|
-
this.#container,
|
|
75
|
-
this.#normalizeKey(key),
|
|
76
|
-
0
|
|
77
|
-
], [
|
|
78
|
-
this.#container,
|
|
79
|
-
this.#normalizeKey(key),
|
|
80
|
-
Number.MAX_SAFE_INTEGER
|
|
81
|
-
], false, false);
|
|
82
|
-
for await (const cursor of index.iterate(rangeQuery)){
|
|
83
|
-
if (JSON.stringify(cursor.value.value) === JSON.stringify(val)) {
|
|
84
|
-
await cursor.delete();
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
63
|
+
await this.db.delete(this.slot(key));
|
|
88
64
|
}
|
|
89
65
|
async *entriesAsync(range = {}) {
|
|
90
66
|
const index = this.db.index('key');
|
|
67
|
+
const startKey = range.start ? this.normalizeKey(range.start) : [];
|
|
68
|
+
const endKey = range.end ? this.normalizeKey(range.end) : [
|
|
69
|
+
'\uffff'
|
|
70
|
+
];
|
|
91
71
|
const rangeQuery = IDBKeyRange.bound([
|
|
92
|
-
this
|
|
93
|
-
|
|
72
|
+
this.container,
|
|
73
|
+
startKey
|
|
94
74
|
], [
|
|
95
|
-
this
|
|
96
|
-
|
|
75
|
+
this.container,
|
|
76
|
+
endKey
|
|
97
77
|
], !!range.reverse, !range.reverse);
|
|
98
78
|
let count = 0;
|
|
99
79
|
for await (const cursor of index.iterate(rangeQuery, range.reverse ? 'prev' : 'next')){
|
|
@@ -101,7 +81,7 @@
|
|
|
101
81
|
return;
|
|
102
82
|
}
|
|
103
83
|
yield [
|
|
104
|
-
cursor.value.key,
|
|
84
|
+
this.#denormalizeKey(cursor.value.key),
|
|
105
85
|
cursor.value.value
|
|
106
86
|
];
|
|
107
87
|
count++;
|
|
@@ -114,20 +94,18 @@
|
|
|
114
94
|
}
|
|
115
95
|
async *keysAsync(range = {}) {
|
|
116
96
|
for await (const [key, _] of this.entriesAsync(range)){
|
|
117
|
-
yield
|
|
97
|
+
yield key;
|
|
118
98
|
}
|
|
119
99
|
}
|
|
120
100
|
#denormalizeKey(key) {
|
|
121
|
-
|
|
122
|
-
return denormalizedKey.length > 1 ? denormalizedKey : key;
|
|
101
|
+
return key.length > 1 ? key : key[0];
|
|
123
102
|
}
|
|
124
|
-
|
|
125
|
-
|
|
103
|
+
normalizeKey(key) {
|
|
104
|
+
return Array.isArray(key) ? key : [
|
|
126
105
|
key
|
|
127
106
|
];
|
|
128
|
-
return arrayKey.join(',');
|
|
129
107
|
}
|
|
130
|
-
|
|
131
|
-
return `map:${this.name}:slot:${this
|
|
108
|
+
slot(key, index = 0) {
|
|
109
|
+
return `map:${this.name}:slot:${this.normalizeKey(key)}:${index}`;
|
|
132
110
|
}
|
|
133
111
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Key, Value } from '../interfaces/common.js';
|
|
2
|
+
import type { AztecAsyncMultiMap } from '../interfaces/multi_map.js';
|
|
3
|
+
import { IndexedDBAztecMap } from './map.js';
|
|
4
|
+
/**
|
|
5
|
+
* A multi map backed by IndexedDB.
|
|
6
|
+
*/
|
|
7
|
+
export declare class IndexedDBAztecMultiMap<K extends Key, V extends Value> extends IndexedDBAztecMap<K, V> implements AztecAsyncMultiMap<K, V> {
|
|
8
|
+
set(key: K, val: V): Promise<void>;
|
|
9
|
+
getValuesAsync(key: K): AsyncIterableIterator<V>;
|
|
10
|
+
getValueCountAsync(key: K): Promise<number>;
|
|
11
|
+
deleteValue(key: K, val: V): Promise<void>;
|
|
12
|
+
delete(key: K): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlfbWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXhlZGRiL211bHRpX21hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFN0M7O0dBRUc7QUFDSCxxQkFBYSxzQkFBc0IsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxLQUFLLENBQ2hFLFNBQVEsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDOUIsWUFBVyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXBCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWtDaEQ7SUFFTSxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FZdEQ7SUFFRCxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FVMUM7SUFFSyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FjL0M7SUFFYyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBWTNDO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi_map.d.ts","sourceRoot":"","sources":["../../src/indexeddb/multi_map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C;;GAEG;AACH,qBAAa,sBAAsB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAChE,SAAQ,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAC9B,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChD;IAEM,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAYtD;IAED,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAU1C;IAEK,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/C;IAEc,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3C;CACF"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { hash } from 'ohash';
|
|
2
|
+
import { IndexedDBAztecMap } from './map.js';
|
|
3
|
+
/**
|
|
4
|
+
* A multi map backed by IndexedDB.
|
|
5
|
+
*/ export class IndexedDBAztecMultiMap extends IndexedDBAztecMap {
|
|
6
|
+
async set(key, val) {
|
|
7
|
+
// Inserting repeated values is a no-op
|
|
8
|
+
const exists = !!await this.db.index('hash').get(IDBKeyRange.bound([
|
|
9
|
+
this.container,
|
|
10
|
+
this.normalizeKey(key),
|
|
11
|
+
hash(val)
|
|
12
|
+
], [
|
|
13
|
+
this.container,
|
|
14
|
+
this.normalizeKey(key),
|
|
15
|
+
hash(val)
|
|
16
|
+
]));
|
|
17
|
+
if (exists) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// Get the maximum keyCount for the given key
|
|
21
|
+
// In order to support sparse multimaps, we cannot rely
|
|
22
|
+
// on just counting the number of entries for the key, since we would repeat slots
|
|
23
|
+
// if we delete an entry
|
|
24
|
+
// set -> container:key:0 (keyCount = 1)
|
|
25
|
+
// set -> container:key:1 (keyCount = 2)
|
|
26
|
+
// delete -> container:key:0 (keyCount = 1)
|
|
27
|
+
// set -> container:key:1 <--- already exists!
|
|
28
|
+
// Instead, we iterate in reverse order to get the last inserted entry
|
|
29
|
+
const index = this.db.index('keyCount');
|
|
30
|
+
const rangeQuery = IDBKeyRange.upperBound([
|
|
31
|
+
this.container,
|
|
32
|
+
this.normalizeKey(key),
|
|
33
|
+
Number.MAX_SAFE_INTEGER
|
|
34
|
+
]);
|
|
35
|
+
const maxEntry = (await index.iterate(rangeQuery, 'prevunique').next()).value;
|
|
36
|
+
const count = maxEntry?.value?.keyCount ?? 0;
|
|
37
|
+
await this.db.put({
|
|
38
|
+
value: val,
|
|
39
|
+
hash: hash(val),
|
|
40
|
+
container: this.container,
|
|
41
|
+
key: this.normalizeKey(key),
|
|
42
|
+
keyCount: count + 1,
|
|
43
|
+
slot: this.slot(key, count)
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async *getValuesAsync(key) {
|
|
47
|
+
// Iterate over the whole range of keyCount for the given key
|
|
48
|
+
const index = this.db.index('keyCount');
|
|
49
|
+
const rangeQuery = IDBKeyRange.bound([
|
|
50
|
+
this.container,
|
|
51
|
+
this.normalizeKey(key),
|
|
52
|
+
0
|
|
53
|
+
], [
|
|
54
|
+
this.container,
|
|
55
|
+
this.normalizeKey(key),
|
|
56
|
+
Number.MAX_SAFE_INTEGER
|
|
57
|
+
], false, false);
|
|
58
|
+
for await (const cursor of index.iterate(rangeQuery)){
|
|
59
|
+
yield cursor.value.value;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
getValueCountAsync(key) {
|
|
63
|
+
// Count entries over the keyCount index range for this key
|
|
64
|
+
const index = this.db.index('keyCount');
|
|
65
|
+
const rangeQuery = IDBKeyRange.bound([
|
|
66
|
+
this.container,
|
|
67
|
+
this.normalizeKey(key),
|
|
68
|
+
0
|
|
69
|
+
], [
|
|
70
|
+
this.container,
|
|
71
|
+
this.normalizeKey(key),
|
|
72
|
+
Number.MAX_SAFE_INTEGER
|
|
73
|
+
], false, false);
|
|
74
|
+
return index.count(rangeQuery);
|
|
75
|
+
}
|
|
76
|
+
async deleteValue(key, val) {
|
|
77
|
+
// Since we know the value, we can hash it and directly query the "hash" index
|
|
78
|
+
// to avoid having to iterate over all the values
|
|
79
|
+
const fullKey = await this.db.index('hash').getKey(IDBKeyRange.bound([
|
|
80
|
+
this.container,
|
|
81
|
+
this.normalizeKey(key),
|
|
82
|
+
hash(val)
|
|
83
|
+
], [
|
|
84
|
+
this.container,
|
|
85
|
+
this.normalizeKey(key),
|
|
86
|
+
hash(val)
|
|
87
|
+
]));
|
|
88
|
+
if (fullKey) {
|
|
89
|
+
await this.db.delete(fullKey);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async delete(key) {
|
|
93
|
+
const index = this.db.index('keyCount');
|
|
94
|
+
const rangeQuery = IDBKeyRange.bound([
|
|
95
|
+
this.container,
|
|
96
|
+
this.normalizeKey(key),
|
|
97
|
+
0
|
|
98
|
+
], [
|
|
99
|
+
this.container,
|
|
100
|
+
this.normalizeKey(key),
|
|
101
|
+
Number.MAX_SAFE_INTEGER
|
|
102
|
+
], false, false);
|
|
103
|
+
for await (const cursor of index.iterate(rangeQuery)){
|
|
104
|
+
await cursor.delete();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
package/dest/indexeddb/set.d.ts
CHANGED
|
@@ -14,4 +14,4 @@ export declare class IndexedDBAztecSet<K extends Key> implements AztecAsyncSet<K
|
|
|
14
14
|
delete(key: K): Promise<void>;
|
|
15
15
|
entriesAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
16
16
|
}
|
|
17
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXhlZGRiL3NldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxxQkFBYSxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFFLFlBQVcsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUN2RSxPQUFPLENBQUMsR0FBRyxDQUFnQztJQUUzQyxZQUFZLE1BQU0sRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFFaEU7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxTQUFTLEVBRXBGO0lBRUQsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUVqQztJQUVELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFekI7SUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sWUFBWSxDQUFDLEtBQUssR0FBRSxLQUFLLENBQUMsQ0FBQyxDQUFNLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBRWxFO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/indexeddb/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAgC;
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/indexeddb/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAgC;IAE3C,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAEhE;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjC;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzB;IAED,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEM,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAElE;CACF"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { IDBPDatabase, IDBPObjectStore } from 'idb';
|
|
2
|
+
import type { Value } from '../interfaces/common.js';
|
|
2
3
|
import type { AztecAsyncSingleton } from '../interfaces/singleton.js';
|
|
3
4
|
import type { AztecIDBSchema } from './store.js';
|
|
4
5
|
/**
|
|
5
6
|
* Stores a single value in IndexedDB.
|
|
6
7
|
*/
|
|
7
|
-
export declare class IndexedDBAztecSingleton<T> implements AztecAsyncSingleton<T> {
|
|
8
|
+
export declare class IndexedDBAztecSingleton<T extends Value> implements AztecAsyncSingleton<T> {
|
|
8
9
|
#private;
|
|
9
10
|
constructor(rootDB: IDBPDatabase<AztecIDBSchema>, name: string);
|
|
10
11
|
set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
|
|
@@ -13,4 +14,4 @@ export declare class IndexedDBAztecSingleton<T> implements AztecAsyncSingleton<T
|
|
|
13
14
|
set(val: T): Promise<boolean>;
|
|
14
15
|
delete(): Promise<boolean>;
|
|
15
16
|
}
|
|
16
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXhlZGRiL3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBR3pELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gscUJBQWEsdUJBQXVCLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBRSxZQUFXLG1CQUFtQixDQUFDLENBQUMsQ0FBQzs7SUFNckYsWUFBWSxNQUFNLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBSTdEO0lBRUQsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLEdBQUcsU0FBUyxFQUVwRjtJQUVELElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBRXZFO0lBRUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBR3ZDO0lBRUssR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVVsQztJQUVLLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBRy9CO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/indexeddb/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/indexeddb/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,uBAAuB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;;IAMrF,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAI7D;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,IAAI,EAAE,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAEvE;IAEK,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAGvC;IAEK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUlC;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAG/B;CACF"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { hash } from 'ohash';
|
|
1
2
|
/**
|
|
2
3
|
* Stores a single value in IndexedDB.
|
|
3
4
|
*/ export class IndexedDBAztecSingleton {
|
|
@@ -24,9 +25,12 @@
|
|
|
24
25
|
const result = await this.db.put({
|
|
25
26
|
container: this.#container,
|
|
26
27
|
slot: this.#slot,
|
|
27
|
-
key:
|
|
28
|
+
key: [
|
|
29
|
+
this.#slot
|
|
30
|
+
],
|
|
28
31
|
keyCount: 1,
|
|
29
|
-
value: val
|
|
32
|
+
value: val,
|
|
33
|
+
hash: hash(val)
|
|
30
34
|
});
|
|
31
35
|
return result !== undefined;
|
|
32
36
|
}
|