@aztec/kv-store 1.0.0-nightly.20250605 → 1.0.0-nightly.20250607
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/indexeddb/map.d.ts +1 -0
- package/dest/indexeddb/map.d.ts.map +1 -1
- package/dest/indexeddb/map.js +10 -0
- package/dest/interfaces/map.d.ts +10 -0
- package/dest/interfaces/map.d.ts.map +1 -1
- package/dest/interfaces/map_test_suite.d.ts.map +1 -1
- package/dest/interfaces/map_test_suite.js +11 -0
- package/dest/interfaces/multi_map_test_suite.d.ts.map +1 -1
- package/dest/interfaces/multi_map_test_suite.js +23 -0
- package/dest/lmdb/map.d.ts +2 -0
- package/dest/lmdb/map.d.ts.map +1 -1
- package/dest/lmdb/map.js +10 -0
- package/dest/lmdb-v2/map.d.ts +1 -0
- package/dest/lmdb-v2/map.d.ts.map +1 -1
- package/dest/lmdb-v2/map.js +3 -0
- package/dest/lmdb-v2/message.d.ts +16 -5
- package/dest/lmdb-v2/message.d.ts.map +1 -1
- package/dest/lmdb-v2/message.js +6 -5
- package/dest/lmdb-v2/multi_map.d.ts +1 -0
- package/dest/lmdb-v2/multi_map.d.ts.map +1 -1
- package/dest/lmdb-v2/multi_map.js +3 -0
- package/dest/lmdb-v2/read_transaction.d.ts +2 -0
- package/dest/lmdb-v2/read_transaction.d.ts.map +1 -1
- package/dest/lmdb-v2/read_transaction.js +34 -0
- package/package.json +5 -5
- package/src/indexeddb/map.ts +5 -0
- package/src/interfaces/map.ts +12 -0
- package/src/interfaces/map_test_suite.ts +16 -0
- package/src/interfaces/multi_map_test_suite.ts +31 -0
- package/src/lmdb/map.ts +9 -0
- package/src/lmdb-v2/map.ts +4 -0
- package/src/lmdb-v2/message.ts +13 -0
- package/src/lmdb-v2/multi_map.ts +4 -0
- package/src/lmdb-v2/read_transaction.ts +40 -0
package/dest/indexeddb/map.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export declare class IndexedDBAztecMap<K extends Key, V extends Value> implement
|
|
|
14
14
|
get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
|
|
15
15
|
getAsync(key: K): Promise<V | undefined>;
|
|
16
16
|
hasAsync(key: K): Promise<boolean>;
|
|
17
|
+
sizeAsync(): Promise<number>;
|
|
17
18
|
set(key: K, val: V): Promise<void>;
|
|
18
19
|
swap(_key: K, _fn: (val: V | undefined) => V): Promise<void>;
|
|
19
20
|
setIfNotExists(key: K, val: V): Promise<boolean>;
|
|
@@ -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;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;gBAKhB,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM;IAMjE,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;IAKxC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,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;gBAKhB,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM;IAMjE,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;IAKxC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAKtB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQhD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5B,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAkBjE,WAAW,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM3D,SAAS,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAWhE,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM;IAKtC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM;CAGlD"}
|
package/dest/indexeddb/map.js
CHANGED
|
@@ -25,6 +25,16 @@ import { hash } from 'ohash';
|
|
|
25
25
|
const result = await this.getAsync(key) !== undefined;
|
|
26
26
|
return result;
|
|
27
27
|
}
|
|
28
|
+
sizeAsync() {
|
|
29
|
+
const rangeQuery = IDBKeyRange.bound([
|
|
30
|
+
this.container,
|
|
31
|
+
''
|
|
32
|
+
], [
|
|
33
|
+
this.container,
|
|
34
|
+
'\uffff'
|
|
35
|
+
]);
|
|
36
|
+
return this.db.count(rangeQuery);
|
|
37
|
+
}
|
|
28
38
|
async set(key, val) {
|
|
29
39
|
await this.db.put({
|
|
30
40
|
value: val,
|
package/dest/interfaces/map.d.ts
CHANGED
|
@@ -27,6 +27,11 @@ export interface AztecMap<K extends Key, V extends Value> extends AztecBaseMap<K
|
|
|
27
27
|
* @param key - The key to get the value from
|
|
28
28
|
*/
|
|
29
29
|
get(key: K): V | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Gets the current size of the map.
|
|
32
|
+
* @returns The size of the map
|
|
33
|
+
*/
|
|
34
|
+
size(): number;
|
|
30
35
|
/**
|
|
31
36
|
* Checks if a key exists in the map.
|
|
32
37
|
* @param key - The key to check
|
|
@@ -83,6 +88,11 @@ export interface AztecAsyncMap<K extends Key, V extends Value> extends AztecBase
|
|
|
83
88
|
* @param range - The range of keys to iterate over
|
|
84
89
|
*/
|
|
85
90
|
keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
91
|
+
/**
|
|
92
|
+
* Gets the current size of the map.
|
|
93
|
+
* @returns The size of the map
|
|
94
|
+
*/
|
|
95
|
+
sizeAsync(): Promise<number>;
|
|
86
96
|
}
|
|
87
97
|
export {};
|
|
88
98
|
//# sourceMappingURL=map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/interfaces/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,UAAU,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK;IACnD;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjD;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AACD,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE3B;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE9C;;;OAGG;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE5C;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9D;;;OAGG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAExD;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/interfaces/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAErD;;GAEG;AACH,UAAU,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK;IACnD;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjD;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AACD,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAE3B;;;OAGG;IACH,IAAI,IAAI,MAAM,CAAC;IAEf;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpD;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE9C;;;OAGG;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE5C;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9D;;;OAGG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAExD;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAEtD;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/map_test_suite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,
|
|
1
|
+
{"version":3,"file":"map_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/map_test_suite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QA8I5B"}
|
|
@@ -15,6 +15,9 @@ export function describeAztecMap(testName, getStore, forceAsync = false) {
|
|
|
15
15
|
async function get(key, sut = map) {
|
|
16
16
|
return isSyncStore(store) && !forceAsync ? sut.get(key) : await sut.getAsync(key);
|
|
17
17
|
}
|
|
18
|
+
async function size(sut = map) {
|
|
19
|
+
return isSyncStore(store) && !forceAsync ? sut.size() : await sut.sizeAsync();
|
|
20
|
+
}
|
|
18
21
|
async function entries() {
|
|
19
22
|
return isSyncStore(store) && !forceAsync ? await toArray(map.entries()) : await toArray(map.entriesAsync());
|
|
20
23
|
}
|
|
@@ -48,6 +51,14 @@ export function describeAztecMap(testName, getStore, forceAsync = false) {
|
|
|
48
51
|
expect(await get('foo')).to.equal(undefined);
|
|
49
52
|
expect(await get('baz')).to.equal('qux');
|
|
50
53
|
});
|
|
54
|
+
it('should be able to return size of the map', async ()=>{
|
|
55
|
+
await map.set('foo', 'bar');
|
|
56
|
+
expect(await size()).to.equal(1);
|
|
57
|
+
await map.set('baz', 'qux');
|
|
58
|
+
expect(await size()).to.equal(2);
|
|
59
|
+
await map.delete('foo');
|
|
60
|
+
expect(await size()).to.equal(1);
|
|
61
|
+
});
|
|
51
62
|
it('should be able to iterate over entries when there are no keys', async ()=>{
|
|
52
63
|
expect(await entries()).to.deep.equal([]);
|
|
53
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi_map_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/multi_map_test_suite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,
|
|
1
|
+
{"version":3,"file":"multi_map_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/multi_map_test_suite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAqO5B"}
|
|
@@ -15,6 +15,9 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
|
|
|
15
15
|
async function get(key, sut = multiMap) {
|
|
16
16
|
return isSyncStore(store) && !forceAsync ? sut.get(key) : await sut.getAsync(key);
|
|
17
17
|
}
|
|
18
|
+
async function size(sut = multiMap) {
|
|
19
|
+
return isSyncStore(store) && !forceAsync ? sut.size() : await sut.sizeAsync();
|
|
20
|
+
}
|
|
18
21
|
async function entries() {
|
|
19
22
|
return isSyncStore(store) && !forceAsync ? await toArray(multiMap.entries()) : await toArray(multiMap.entriesAsync());
|
|
20
23
|
}
|
|
@@ -46,6 +49,14 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
|
|
|
46
49
|
expect(await get('foo')).to.equal(undefined);
|
|
47
50
|
expect(await get('baz')).to.equal('qux');
|
|
48
51
|
});
|
|
52
|
+
it('should be able to get size of the map', async ()=>{
|
|
53
|
+
await multiMap.set('foo', 'bar');
|
|
54
|
+
expect(await size()).to.equal(1);
|
|
55
|
+
await multiMap.set('baz', 'qux');
|
|
56
|
+
expect(await size()).to.equal(2);
|
|
57
|
+
await multiMap.delete('foo');
|
|
58
|
+
expect(await size()).to.equal(1);
|
|
59
|
+
});
|
|
49
60
|
it('should be able to iterate over entries when there are no keys', async ()=>{
|
|
50
61
|
expect(await entries()).to.deep.equal([]);
|
|
51
62
|
});
|
|
@@ -104,6 +115,18 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
|
|
|
104
115
|
'3'
|
|
105
116
|
]);
|
|
106
117
|
});
|
|
118
|
+
it('should be able to get size of the map with duplicate keys', async ()=>{
|
|
119
|
+
await multiMap.set('foo', '1');
|
|
120
|
+
await multiMap.set('foo', '2');
|
|
121
|
+
await multiMap.set('foo', '3');
|
|
122
|
+
expect(await size()).to.equal(3);
|
|
123
|
+
await multiMap.set('bar', '1');
|
|
124
|
+
await multiMap.set('bar', '2');
|
|
125
|
+
await multiMap.set('bar', '3');
|
|
126
|
+
expect(await size()).to.equal(6);
|
|
127
|
+
await multiMap.deleteValue('foo', '2');
|
|
128
|
+
expect(await size()).to.equal(5);
|
|
129
|
+
});
|
|
107
130
|
it('should be able to delete the last and first values for a key', async ()=>{
|
|
108
131
|
await multiMap.set('foo', '1');
|
|
109
132
|
await multiMap.set('foo', '2');
|
package/dest/lmdb/map.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare class LmdbAztecMap<K extends Key, V extends Value> implements Azt
|
|
|
25
25
|
entriesAsync(range?: Range<K>): AsyncIterableIterator<[K, V]>;
|
|
26
26
|
values(range?: Range<K>): IterableIterator<V>;
|
|
27
27
|
valuesAsync(range?: Range<K>): AsyncIterableIterator<V>;
|
|
28
|
+
size(): number;
|
|
29
|
+
sizeAsync(): Promise<number>;
|
|
28
30
|
keys(range?: Range<K>): IterableIterator<K>;
|
|
29
31
|
keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
30
32
|
protected slot(key: K): MapValueSlot<K>;
|
package/dest/lmdb/map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/lmdb/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEpE,uDAAuD;AACvD,KAAK,YAAY,CAAC,CAAC,SAAS,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAEvE;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IACtG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;gBAEhC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IAW7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1C,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,OAAO,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA2CjD,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMnE,MAAM,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAM3C,WAAW,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/lmdb/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEpE,uDAAuD;AACvD,KAAK,YAAY,CAAC,CAAC,SAAS,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAEvE;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IACtG,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;gBAEhC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IAW7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAO1C,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,OAAO,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IA2CjD,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAMnE,MAAM,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAM3C,WAAW,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAMlE,IAAI,IAAI,MAAM;IAKd,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,IAAI,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;IAMzC,SAAS,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAMhE,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;IAIjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B"}
|
package/dest/lmdb/map.js
CHANGED
|
@@ -110,6 +110,16 @@
|
|
|
110
110
|
yield value;
|
|
111
111
|
}
|
|
112
112
|
}
|
|
113
|
+
size() {
|
|
114
|
+
const iterator = this.db.getRange({
|
|
115
|
+
start: this.startSentinel,
|
|
116
|
+
end: this.endSentinel
|
|
117
|
+
});
|
|
118
|
+
return iterator.asArray.length;
|
|
119
|
+
}
|
|
120
|
+
sizeAsync() {
|
|
121
|
+
return Promise.resolve(this.size());
|
|
122
|
+
}
|
|
113
123
|
*keys(range = {}) {
|
|
114
124
|
for (const [key, _] of this.entries(range)){
|
|
115
125
|
yield key;
|
package/dest/lmdb-v2/map.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export declare class LMDBMap<K extends Key, V extends Value> implements AztecAsy
|
|
|
25
25
|
delete(key: K): Promise<void>;
|
|
26
26
|
getAsync(key: K): Promise<V | undefined>;
|
|
27
27
|
hasAsync(key: K): Promise<boolean>;
|
|
28
|
+
sizeAsync(): Promise<number>;
|
|
28
29
|
/**
|
|
29
30
|
* Iterates over the map's key-value entries in the key's natural order
|
|
30
31
|
* @param range - The range of keys to iterate over
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,YAAY,CAAC;AAGhF,qBAAa,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAK/E,OAAO,CAAC,KAAK;IAJf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiB;gBAGtB,KAAK,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM;IAId;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhD;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOxC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC;;;OAGG;IACI,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgCpE;;;OAGG;IACI,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM9D;;;OAGG;IACI,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAK7D"}
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,YAAY,CAAC;AAGhF,qBAAa,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAK/E,OAAO,CAAC,KAAK;IAJf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiB;gBAGtB,KAAK,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM;IAId;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAYhD;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOxC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B;;;OAGG;IACI,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgCpE;;;OAGG;IACI,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM9D;;;OAGG;IACI,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAK7D"}
|
package/dest/lmdb-v2/map.js
CHANGED
|
@@ -48,6 +48,9 @@ export class LMDBMap {
|
|
|
48
48
|
hasAsync(key) {
|
|
49
49
|
return execInReadTx(this.store, async (tx)=>!!await tx.get(serializeKey(this.prefix, key)));
|
|
50
50
|
}
|
|
51
|
+
sizeAsync() {
|
|
52
|
+
return execInReadTx(this.store, (tx)=>tx.countEntries(minKey(this.prefix), maxKey(this.prefix), false));
|
|
53
|
+
}
|
|
51
54
|
/**
|
|
52
55
|
* Iterates over the map's key-value entries in the key's natural order
|
|
53
56
|
* @param range - The range of keys to iterate over
|
|
@@ -9,11 +9,12 @@ export declare enum LMDBMessageType {
|
|
|
9
9
|
HAS = 102,
|
|
10
10
|
START_CURSOR = 103,
|
|
11
11
|
ADVANCE_CURSOR = 104,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
ADVANCE_CURSOR_COUNT = 105,
|
|
13
|
+
CLOSE_CURSOR = 106,
|
|
14
|
+
BATCH = 107,
|
|
15
|
+
STATS = 108,
|
|
16
|
+
CLOSE = 109,
|
|
17
|
+
COPY_STORE = 110
|
|
17
18
|
}
|
|
18
19
|
type Key = Uint8Array;
|
|
19
20
|
type Value = Uint8Array;
|
|
@@ -46,6 +47,10 @@ interface AdvanceCursorRequest {
|
|
|
46
47
|
cursor: number;
|
|
47
48
|
count: number | null;
|
|
48
49
|
}
|
|
50
|
+
interface AdvanceCursorCountRequest {
|
|
51
|
+
cursor: number;
|
|
52
|
+
endKey: Key;
|
|
53
|
+
}
|
|
49
54
|
interface CloseCursorRequest {
|
|
50
55
|
cursor: number;
|
|
51
56
|
}
|
|
@@ -66,6 +71,7 @@ export type LMDBRequestBody = {
|
|
|
66
71
|
[LMDBMessageType.HAS]: HasRequest;
|
|
67
72
|
[LMDBMessageType.START_CURSOR]: StartCursorRequest;
|
|
68
73
|
[LMDBMessageType.ADVANCE_CURSOR]: AdvanceCursorRequest;
|
|
74
|
+
[LMDBMessageType.ADVANCE_CURSOR_COUNT]: AdvanceCursorCountRequest;
|
|
69
75
|
[LMDBMessageType.CLOSE_CURSOR]: CloseCursorRequest;
|
|
70
76
|
[LMDBMessageType.BATCH]: BatchRequest;
|
|
71
77
|
[LMDBMessageType.STATS]: void;
|
|
@@ -86,6 +92,10 @@ interface AdvanceCursorResponse {
|
|
|
86
92
|
entries: Array<KeyValues>;
|
|
87
93
|
done: boolean;
|
|
88
94
|
}
|
|
95
|
+
interface AdvanceCursorCountResponse {
|
|
96
|
+
count: number;
|
|
97
|
+
done: boolean;
|
|
98
|
+
}
|
|
89
99
|
interface BatchResponse {
|
|
90
100
|
durationNs: number;
|
|
91
101
|
}
|
|
@@ -107,6 +117,7 @@ export type LMDBResponseBody = {
|
|
|
107
117
|
[LMDBMessageType.HAS]: HasResponse;
|
|
108
118
|
[LMDBMessageType.START_CURSOR]: StartCursorResponse;
|
|
109
119
|
[LMDBMessageType.ADVANCE_CURSOR]: AdvanceCursorResponse;
|
|
120
|
+
[LMDBMessageType.ADVANCE_CURSOR_COUNT]: AdvanceCursorCountResponse;
|
|
110
121
|
[LMDBMessageType.CLOSE_CURSOR]: BoolResponse;
|
|
111
122
|
[LMDBMessageType.BATCH]: BatchResponse;
|
|
112
123
|
[LMDBMessageType.STATS]: StatsResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/message.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/message.ts"],"names":[],"mappings":"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"}
|
package/dest/lmdb-v2/message.js
CHANGED
|
@@ -10,10 +10,11 @@ export var LMDBMessageType = /*#__PURE__*/ function(LMDBMessageType) {
|
|
|
10
10
|
LMDBMessageType[LMDBMessageType["HAS"] = 102] = "HAS";
|
|
11
11
|
LMDBMessageType[LMDBMessageType["START_CURSOR"] = 103] = "START_CURSOR";
|
|
12
12
|
LMDBMessageType[LMDBMessageType["ADVANCE_CURSOR"] = 104] = "ADVANCE_CURSOR";
|
|
13
|
-
LMDBMessageType[LMDBMessageType["
|
|
14
|
-
LMDBMessageType[LMDBMessageType["
|
|
15
|
-
LMDBMessageType[LMDBMessageType["
|
|
16
|
-
LMDBMessageType[LMDBMessageType["
|
|
17
|
-
LMDBMessageType[LMDBMessageType["
|
|
13
|
+
LMDBMessageType[LMDBMessageType["ADVANCE_CURSOR_COUNT"] = 105] = "ADVANCE_CURSOR_COUNT";
|
|
14
|
+
LMDBMessageType[LMDBMessageType["CLOSE_CURSOR"] = 106] = "CLOSE_CURSOR";
|
|
15
|
+
LMDBMessageType[LMDBMessageType["BATCH"] = 107] = "BATCH";
|
|
16
|
+
LMDBMessageType[LMDBMessageType["STATS"] = 108] = "STATS";
|
|
17
|
+
LMDBMessageType[LMDBMessageType["CLOSE"] = 109] = "CLOSE";
|
|
18
|
+
LMDBMessageType[LMDBMessageType["COPY_STORE"] = 110] = "COPY_STORE";
|
|
18
19
|
return LMDBMessageType;
|
|
19
20
|
}({});
|
|
@@ -25,6 +25,7 @@ export declare class LMDBMultiMap<K extends Key, V extends Value> implements Azt
|
|
|
25
25
|
delete(key: K): Promise<void>;
|
|
26
26
|
getAsync(key: K): Promise<V | undefined>;
|
|
27
27
|
hasAsync(key: K): Promise<boolean>;
|
|
28
|
+
sizeAsync(): Promise<number>;
|
|
28
29
|
/**
|
|
29
30
|
* Iterates over the map's key-value entries in the key's natural order
|
|
30
31
|
* @param range - The range of keys to iterate over
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi_map.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/multi_map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,YAAY,CAAC;AAGhF,qBAAa,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAIzF,OAAO,CAAC,KAAK;IAHf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiB;gBAEtB,KAAK,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM;IAKd;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhD;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOxC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC;;;OAGG;IACI,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgCpE;;;OAGG;IACI,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM9D;;;OAGG;IACI,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM5D,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAMxD"}
|
|
1
|
+
{"version":3,"file":"multi_map.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/multi_map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,YAAY,CAAC;AAGhF,qBAAa,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAIzF,OAAO,CAAC,KAAK;IAHf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAiB;gBAEtB,KAAK,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM;IAKd;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhD;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOxC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B;;;OAGG;IACI,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgCpE;;;OAGG;IACI,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM9D;;;OAGG;IACI,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM5D,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAMxD"}
|
|
@@ -46,6 +46,9 @@ export class LMDBMultiMap {
|
|
|
46
46
|
hasAsync(key) {
|
|
47
47
|
return execInReadTx(this.store, async (tx)=>(await tx.getIndex(serializeKey(this.prefix, key))).length > 0);
|
|
48
48
|
}
|
|
49
|
+
sizeAsync() {
|
|
50
|
+
return execInReadTx(this.store, (tx)=>tx.countEntriesIndex(minKey(this.prefix), maxKey(this.prefix), false));
|
|
51
|
+
}
|
|
49
52
|
/**
|
|
50
53
|
* Iterates over the map's key-value entries in the key's natural order
|
|
51
54
|
* @param range - The range of keys to iterate over
|
|
@@ -10,5 +10,7 @@ export declare class ReadTransaction {
|
|
|
10
10
|
getIndex(key: Uint8Array): Promise<Uint8Array[]>;
|
|
11
11
|
iterate(startKey: Uint8Array, endKey?: Uint8Array, reverse?: boolean, limit?: number): AsyncIterable<[Uint8Array, Uint8Array]>;
|
|
12
12
|
iterateIndex(startKey: Uint8Array, endKey?: Uint8Array, reverse?: boolean, limit?: number): AsyncIterable<[Uint8Array, Uint8Array[]]>;
|
|
13
|
+
countEntries(startKey: Uint8Array, endKey: Uint8Array, reverse: boolean): Promise<number>;
|
|
14
|
+
countEntriesIndex(startKey: Uint8Array, endKey: Uint8Array, reverse: boolean): Promise<number>;
|
|
13
15
|
}
|
|
14
16
|
//# sourceMappingURL=read_transaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read_transaction.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/read_transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,kBAAkB,EAAmB,MAAM,cAAc,CAAC;AAEpG,qBAAa,eAAe;;IAGd,SAAS,CAAC,OAAO,EAAE,kBAAkB;IAFjD,SAAS,CAAC,IAAI,UAAQ;gBAEA,OAAO,EAAE,kBAAkB;IAE1C,KAAK,IAAI,IAAI;IAOpB,SAAS,CAAC,YAAY;IAMT,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAMrD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM/C,OAAO,CACnB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,UAAQ,EACf,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAI5B,YAAY,CACxB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,UAAQ,EACf,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"read_transaction.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/read_transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,kBAAkB,EAAmB,MAAM,cAAc,CAAC;AAEpG,qBAAa,eAAe;;IAGd,SAAS,CAAC,OAAO,EAAE,kBAAkB;IAFjD,SAAS,CAAC,IAAI,UAAQ;gBAEA,OAAO,EAAE,kBAAkB;IAE1C,KAAK,IAAI,IAAI;IAOpB,SAAS,CAAC,YAAY;IAMT,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAMrD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM/C,OAAO,CACnB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,UAAQ,EACf,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAI5B,YAAY,CACxB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,UAAQ,EACf,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IAIrC,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzF,iBAAiB,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAqGtG"}
|
|
@@ -43,6 +43,12 @@ export class ReadTransaction {
|
|
|
43
43
|
async *iterateIndex(startKey, endKey, reverse = false, limit) {
|
|
44
44
|
yield* this.#iterate(Database.INDEX, startKey, endKey, reverse, limit, (vals)=>vals);
|
|
45
45
|
}
|
|
46
|
+
countEntries(startKey, endKey, reverse) {
|
|
47
|
+
return this.#countEntries(Database.DATA, startKey, endKey, reverse);
|
|
48
|
+
}
|
|
49
|
+
countEntriesIndex(startKey, endKey, reverse) {
|
|
50
|
+
return this.#countEntries(Database.INDEX, startKey, endKey, reverse);
|
|
51
|
+
}
|
|
46
52
|
async *#iterate(db, startKey, endKey, reverse, limit, map) {
|
|
47
53
|
this.assertIsOpen();
|
|
48
54
|
const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
|
|
@@ -98,4 +104,32 @@ export class ReadTransaction {
|
|
|
98
104
|
}
|
|
99
105
|
}
|
|
100
106
|
}
|
|
107
|
+
async #countEntries(db, startKey, endKey, reverse) {
|
|
108
|
+
this.assertIsOpen();
|
|
109
|
+
const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
|
|
110
|
+
key: startKey,
|
|
111
|
+
reverse,
|
|
112
|
+
count: 0,
|
|
113
|
+
onePage: false,
|
|
114
|
+
db
|
|
115
|
+
});
|
|
116
|
+
const cursor = response.cursor;
|
|
117
|
+
try {
|
|
118
|
+
if (!cursor) {
|
|
119
|
+
return 0;
|
|
120
|
+
}
|
|
121
|
+
const advanceResponse = await this.channel.sendMessage(LMDBMessageType.ADVANCE_CURSOR_COUNT, {
|
|
122
|
+
cursor,
|
|
123
|
+
endKey: endKey
|
|
124
|
+
});
|
|
125
|
+
return advanceResponse.count;
|
|
126
|
+
} finally{
|
|
127
|
+
// we might not have anything to close
|
|
128
|
+
if (typeof cursor === 'number') {
|
|
129
|
+
await this.channel.sendMessage(LMDBMessageType.CLOSE_CURSOR, {
|
|
130
|
+
cursor
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
101
135
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/kv-store",
|
|
3
|
-
"version": "1.0.0-nightly.
|
|
3
|
+
"version": "1.0.0-nightly.20250607",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/interfaces/index.js",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"./package.local.json"
|
|
24
24
|
],
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@aztec/ethereum": "1.0.0-nightly.
|
|
27
|
-
"@aztec/foundation": "1.0.0-nightly.
|
|
28
|
-
"@aztec/native": "1.0.0-nightly.
|
|
29
|
-
"@aztec/stdlib": "1.0.0-nightly.
|
|
26
|
+
"@aztec/ethereum": "1.0.0-nightly.20250607",
|
|
27
|
+
"@aztec/foundation": "1.0.0-nightly.20250607",
|
|
28
|
+
"@aztec/native": "1.0.0-nightly.20250607",
|
|
29
|
+
"@aztec/stdlib": "1.0.0-nightly.20250607",
|
|
30
30
|
"idb": "^8.0.0",
|
|
31
31
|
"lmdb": "^3.2.0",
|
|
32
32
|
"msgpackr": "^1.11.2",
|
package/src/indexeddb/map.ts
CHANGED
|
@@ -39,6 +39,11 @@ export class IndexedDBAztecMap<K extends Key, V extends Value> implements AztecA
|
|
|
39
39
|
return result;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
+
sizeAsync(): Promise<number> {
|
|
43
|
+
const rangeQuery = IDBKeyRange.bound([this.container, ''], [this.container, '\uffff']);
|
|
44
|
+
return this.db.count(rangeQuery);
|
|
45
|
+
}
|
|
46
|
+
|
|
42
47
|
async set(key: K, val: V): Promise<void> {
|
|
43
48
|
await this.db.put({
|
|
44
49
|
value: val,
|
package/src/interfaces/map.ts
CHANGED
|
@@ -31,6 +31,12 @@ export interface AztecMap<K extends Key, V extends Value> extends AztecBaseMap<K
|
|
|
31
31
|
*/
|
|
32
32
|
get(key: K): V | undefined;
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Gets the current size of the map.
|
|
36
|
+
* @returns The size of the map
|
|
37
|
+
*/
|
|
38
|
+
size(): number;
|
|
39
|
+
|
|
34
40
|
/**
|
|
35
41
|
* Checks if a key exists in the map.
|
|
36
42
|
* @param key - The key to check
|
|
@@ -96,4 +102,10 @@ export interface AztecAsyncMap<K extends Key, V extends Value> extends AztecBase
|
|
|
96
102
|
* @param range - The range of keys to iterate over
|
|
97
103
|
*/
|
|
98
104
|
keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Gets the current size of the map.
|
|
108
|
+
* @returns The size of the map
|
|
109
|
+
*/
|
|
110
|
+
sizeAsync(): Promise<number>;
|
|
99
111
|
}
|
|
@@ -31,6 +31,12 @@ export function describeAztecMap(
|
|
|
31
31
|
: await (sut as AztecAsyncMap<any, any>).getAsync(key);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
async function size(sut: AztecAsyncMap<any, any> | AztecMap<any, any> = map) {
|
|
35
|
+
return isSyncStore(store) && !forceAsync
|
|
36
|
+
? (sut as AztecMap<any, any>).size()
|
|
37
|
+
: await (sut as AztecAsyncMap<any, any>).sizeAsync();
|
|
38
|
+
}
|
|
39
|
+
|
|
34
40
|
async function entries() {
|
|
35
41
|
return isSyncStore(store) && !forceAsync
|
|
36
42
|
? await toArray((map as AztecMap<any, any>).entries())
|
|
@@ -82,6 +88,16 @@ export function describeAztecMap(
|
|
|
82
88
|
expect(await get('baz')).to.equal('qux');
|
|
83
89
|
});
|
|
84
90
|
|
|
91
|
+
it('should be able to return size of the map', async () => {
|
|
92
|
+
await map.set('foo', 'bar');
|
|
93
|
+
expect(await size()).to.equal(1);
|
|
94
|
+
await map.set('baz', 'qux');
|
|
95
|
+
expect(await size()).to.equal(2);
|
|
96
|
+
|
|
97
|
+
await map.delete('foo');
|
|
98
|
+
expect(await size()).to.equal(1);
|
|
99
|
+
});
|
|
100
|
+
|
|
85
101
|
it('should be able to iterate over entries when there are no keys', async () => {
|
|
86
102
|
expect(await entries()).to.deep.equal([]);
|
|
87
103
|
});
|
|
@@ -31,6 +31,12 @@ export function describeAztecMultiMap(
|
|
|
31
31
|
: await (sut as AztecAsyncMultiMap<any, any>).getAsync(key);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
async function size(sut: AztecAsyncMultiMap<any, any> | AztecMultiMap<any, any> = multiMap) {
|
|
35
|
+
return isSyncStore(store) && !forceAsync
|
|
36
|
+
? (sut as AztecMultiMap<any, any>).size()
|
|
37
|
+
: await (sut as AztecAsyncMultiMap<any, any>).sizeAsync();
|
|
38
|
+
}
|
|
39
|
+
|
|
34
40
|
async function entries() {
|
|
35
41
|
return isSyncStore(store) && !forceAsync
|
|
36
42
|
? await toArray((multiMap as AztecMultiMap<any, any>).entries())
|
|
@@ -81,6 +87,16 @@ export function describeAztecMultiMap(
|
|
|
81
87
|
expect(await get('baz')).to.equal('qux');
|
|
82
88
|
});
|
|
83
89
|
|
|
90
|
+
it('should be able to get size of the map', async () => {
|
|
91
|
+
await multiMap.set('foo', 'bar');
|
|
92
|
+
expect(await size()).to.equal(1);
|
|
93
|
+
await multiMap.set('baz', 'qux');
|
|
94
|
+
expect(await size()).to.equal(2);
|
|
95
|
+
|
|
96
|
+
await multiMap.delete('foo');
|
|
97
|
+
expect(await size()).to.equal(1);
|
|
98
|
+
});
|
|
99
|
+
|
|
84
100
|
it('should be able to iterate over entries when there are no keys', async () => {
|
|
85
101
|
expect(await entries()).to.deep.equal([]);
|
|
86
102
|
});
|
|
@@ -133,6 +149,21 @@ export function describeAztecMultiMap(
|
|
|
133
149
|
expect(await getValues('foo')).to.deep.equal(['1', '3']);
|
|
134
150
|
});
|
|
135
151
|
|
|
152
|
+
it('should be able to get size of the map with duplicate keys', async () => {
|
|
153
|
+
await multiMap.set('foo', '1');
|
|
154
|
+
await multiMap.set('foo', '2');
|
|
155
|
+
await multiMap.set('foo', '3');
|
|
156
|
+
expect(await size()).to.equal(3);
|
|
157
|
+
|
|
158
|
+
await multiMap.set('bar', '1');
|
|
159
|
+
await multiMap.set('bar', '2');
|
|
160
|
+
await multiMap.set('bar', '3');
|
|
161
|
+
expect(await size()).to.equal(6);
|
|
162
|
+
|
|
163
|
+
await multiMap.deleteValue('foo', '2');
|
|
164
|
+
expect(await size()).to.equal(5);
|
|
165
|
+
});
|
|
166
|
+
|
|
136
167
|
it('should be able to delete the last and first values for a key', async () => {
|
|
137
168
|
await multiMap.set('foo', '1');
|
|
138
169
|
await multiMap.set('foo', '2');
|
package/src/lmdb/map.ts
CHANGED
|
@@ -131,6 +131,15 @@ export class LmdbAztecMap<K extends Key, V extends Value> implements AztecMap<K,
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
size(): number {
|
|
135
|
+
const iterator = this.db.getRange({ start: this.startSentinel, end: this.endSentinel });
|
|
136
|
+
return iterator.asArray.length;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
sizeAsync(): Promise<number> {
|
|
140
|
+
return Promise.resolve(this.size());
|
|
141
|
+
}
|
|
142
|
+
|
|
134
143
|
*keys(range: Range<K> = {}): IterableIterator<K> {
|
|
135
144
|
for (const [key, _] of this.entries(range)) {
|
|
136
145
|
yield key;
|
package/src/lmdb-v2/map.ts
CHANGED
|
@@ -62,6 +62,10 @@ export class LMDBMap<K extends Key, V extends Value> implements AztecAsyncMap<K,
|
|
|
62
62
|
return execInReadTx(this.store, async tx => !!(await tx.get(serializeKey(this.prefix, key))));
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
sizeAsync(): Promise<number> {
|
|
66
|
+
return execInReadTx(this.store, tx => tx.countEntries(minKey(this.prefix), maxKey(this.prefix), false));
|
|
67
|
+
}
|
|
68
|
+
|
|
65
69
|
/**
|
|
66
70
|
* Iterates over the map's key-value entries in the key's natural order
|
|
67
71
|
* @param range - The range of keys to iterate over
|
package/src/lmdb-v2/message.ts
CHANGED
|
@@ -12,6 +12,7 @@ export enum LMDBMessageType {
|
|
|
12
12
|
|
|
13
13
|
START_CURSOR,
|
|
14
14
|
ADVANCE_CURSOR,
|
|
15
|
+
ADVANCE_CURSOR_COUNT,
|
|
15
16
|
CLOSE_CURSOR,
|
|
16
17
|
|
|
17
18
|
BATCH,
|
|
@@ -60,6 +61,11 @@ interface AdvanceCursorRequest {
|
|
|
60
61
|
count: number | null;
|
|
61
62
|
}
|
|
62
63
|
|
|
64
|
+
interface AdvanceCursorCountRequest {
|
|
65
|
+
cursor: number;
|
|
66
|
+
endKey: Key;
|
|
67
|
+
}
|
|
68
|
+
|
|
63
69
|
interface CloseCursorRequest {
|
|
64
70
|
cursor: number;
|
|
65
71
|
}
|
|
@@ -86,6 +92,7 @@ export type LMDBRequestBody = {
|
|
|
86
92
|
|
|
87
93
|
[LMDBMessageType.START_CURSOR]: StartCursorRequest;
|
|
88
94
|
[LMDBMessageType.ADVANCE_CURSOR]: AdvanceCursorRequest;
|
|
95
|
+
[LMDBMessageType.ADVANCE_CURSOR_COUNT]: AdvanceCursorCountRequest;
|
|
89
96
|
[LMDBMessageType.CLOSE_CURSOR]: CloseCursorRequest;
|
|
90
97
|
|
|
91
98
|
[LMDBMessageType.BATCH]: BatchRequest;
|
|
@@ -114,6 +121,11 @@ interface AdvanceCursorResponse {
|
|
|
114
121
|
done: boolean;
|
|
115
122
|
}
|
|
116
123
|
|
|
124
|
+
interface AdvanceCursorCountResponse {
|
|
125
|
+
count: number;
|
|
126
|
+
done: boolean;
|
|
127
|
+
}
|
|
128
|
+
|
|
117
129
|
interface BatchResponse {
|
|
118
130
|
durationNs: number;
|
|
119
131
|
}
|
|
@@ -140,6 +152,7 @@ export type LMDBResponseBody = {
|
|
|
140
152
|
|
|
141
153
|
[LMDBMessageType.START_CURSOR]: StartCursorResponse;
|
|
142
154
|
[LMDBMessageType.ADVANCE_CURSOR]: AdvanceCursorResponse;
|
|
155
|
+
[LMDBMessageType.ADVANCE_CURSOR_COUNT]: AdvanceCursorCountResponse;
|
|
143
156
|
[LMDBMessageType.CLOSE_CURSOR]: BoolResponse;
|
|
144
157
|
|
|
145
158
|
[LMDBMessageType.BATCH]: BatchResponse;
|
package/src/lmdb-v2/multi_map.ts
CHANGED
|
@@ -60,6 +60,10 @@ export class LMDBMultiMap<K extends Key, V extends Value> implements AztecAsyncM
|
|
|
60
60
|
return execInReadTx(this.store, async tx => (await tx.getIndex(serializeKey(this.prefix, key))).length > 0);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
sizeAsync(): Promise<number> {
|
|
64
|
+
return execInReadTx(this.store, tx => tx.countEntriesIndex(minKey(this.prefix), maxKey(this.prefix), false));
|
|
65
|
+
}
|
|
66
|
+
|
|
63
67
|
/**
|
|
64
68
|
* Iterates over the map's key-value entries in the key's natural order
|
|
65
69
|
* @param range - The range of keys to iterate over
|
|
@@ -48,6 +48,14 @@ export class ReadTransaction {
|
|
|
48
48
|
yield* this.#iterate(Database.INDEX, startKey, endKey, reverse, limit, vals => vals);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
public countEntries(startKey: Uint8Array, endKey: Uint8Array, reverse: boolean): Promise<number> {
|
|
52
|
+
return this.#countEntries(Database.DATA, startKey, endKey, reverse);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public countEntriesIndex(startKey: Uint8Array, endKey: Uint8Array, reverse: boolean): Promise<number> {
|
|
56
|
+
return this.#countEntries(Database.INDEX, startKey, endKey, reverse);
|
|
57
|
+
}
|
|
58
|
+
|
|
51
59
|
async *#iterate<T>(
|
|
52
60
|
db: string,
|
|
53
61
|
startKey: Uint8Array,
|
|
@@ -113,4 +121,36 @@ export class ReadTransaction {
|
|
|
113
121
|
}
|
|
114
122
|
}
|
|
115
123
|
}
|
|
124
|
+
|
|
125
|
+
async #countEntries(db: string, startKey: Uint8Array, endKey: Uint8Array, reverse: boolean): Promise<number> {
|
|
126
|
+
this.assertIsOpen();
|
|
127
|
+
|
|
128
|
+
const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
|
|
129
|
+
key: startKey,
|
|
130
|
+
reverse,
|
|
131
|
+
count: 0,
|
|
132
|
+
onePage: false,
|
|
133
|
+
db,
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const cursor = response.cursor;
|
|
137
|
+
|
|
138
|
+
try {
|
|
139
|
+
if (!cursor) {
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const advanceResponse = await this.channel.sendMessage(LMDBMessageType.ADVANCE_CURSOR_COUNT, {
|
|
144
|
+
cursor,
|
|
145
|
+
endKey: endKey,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
return advanceResponse.count;
|
|
149
|
+
} finally {
|
|
150
|
+
// we might not have anything to close
|
|
151
|
+
if (typeof cursor === 'number') {
|
|
152
|
+
await this.channel.sendMessage(LMDBMessageType.CLOSE_CURSOR, { cursor });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
116
156
|
}
|