@aztec/kv-store 0.76.4-devnet-test-rc3 → 0.77.0-testnet-ignition.17
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 +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +5 -7
- package/dest/indexeddb/array.d.ts +3 -3
- package/dest/indexeddb/array.d.ts.map +1 -1
- package/dest/indexeddb/array.js +44 -36
- package/dest/indexeddb/index.d.ts +1 -1
- package/dest/indexeddb/index.d.ts.map +1 -1
- package/dest/indexeddb/index.js +1 -4
- package/dest/indexeddb/map.d.ts +4 -4
- package/dest/indexeddb/map.d.ts.map +1 -1
- package/dest/indexeddb/map.js +72 -43
- package/dest/indexeddb/set.d.ts +4 -4
- package/dest/indexeddb/set.d.ts.map +1 -1
- package/dest/indexeddb/set.js +3 -4
- package/dest/indexeddb/singleton.d.ts +3 -3
- package/dest/indexeddb/singleton.d.ts.map +1 -1
- package/dest/indexeddb/singleton.js +17 -22
- package/dest/indexeddb/store.d.ts +8 -8
- package/dest/indexeddb/store.d.ts.map +1 -1
- package/dest/indexeddb/store.js +97 -93
- package/dest/interfaces/array.js +3 -2
- package/dest/interfaces/array_test_suite.d.ts +1 -1
- package/dest/interfaces/array_test_suite.d.ts.map +1 -1
- package/dest/interfaces/array_test_suite.js +29 -25
- package/dest/interfaces/common.d.ts +1 -1
- package/dest/interfaces/common.d.ts.map +1 -1
- package/dest/interfaces/common.js +3 -2
- package/dest/interfaces/counter.d.ts +1 -1
- package/dest/interfaces/counter.d.ts.map +1 -1
- package/dest/interfaces/counter.js +1 -2
- package/dest/interfaces/index.d.ts +1 -1
- package/dest/interfaces/index.d.ts.map +1 -1
- package/dest/interfaces/index.js +0 -1
- package/dest/interfaces/map.d.ts +1 -1
- package/dest/interfaces/map.d.ts.map +1 -1
- package/dest/interfaces/map.js +3 -2
- 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 +87 -42
- package/dest/interfaces/set.d.ts +1 -1
- package/dest/interfaces/set.d.ts.map +1 -1
- package/dest/interfaces/set.js +1 -2
- package/dest/interfaces/set_test_suite.d.ts +1 -1
- package/dest/interfaces/set_test_suite.d.ts.map +1 -1
- package/dest/interfaces/set_test_suite.js +59 -22
- package/dest/interfaces/singleton.js +4 -2
- package/dest/interfaces/singleton_test_suite.d.ts +1 -1
- package/dest/interfaces/singleton_test_suite.d.ts.map +1 -1
- package/dest/interfaces/singleton_test_suite.js +7 -10
- package/dest/interfaces/store.d.ts +6 -6
- package/dest/interfaces/store.d.ts.map +1 -1
- package/dest/interfaces/store.js +1 -2
- package/dest/interfaces/store_test_suite.d.ts +1 -1
- package/dest/interfaces/store_test_suite.d.ts.map +1 -1
- package/dest/interfaces/store_test_suite.js +6 -9
- package/dest/interfaces/utils.d.ts +1 -1
- package/dest/interfaces/utils.d.ts.map +1 -1
- package/dest/interfaces/utils.js +12 -15
- package/dest/lmdb/array.d.ts +2 -2
- package/dest/lmdb/array.d.ts.map +1 -1
- package/dest/lmdb/array.js +46 -41
- package/dest/lmdb/counter.d.ts +3 -3
- package/dest/lmdb/counter.d.ts.map +1 -1
- package/dest/lmdb/counter.js +18 -24
- package/dest/lmdb/index.d.ts +1 -1
- package/dest/lmdb/index.d.ts.map +1 -1
- package/dest/lmdb/index.js +2 -6
- package/dest/lmdb/map.d.ts +3 -3
- package/dest/lmdb/map.d.ts.map +1 -1
- package/dest/lmdb/map.js +90 -68
- package/dest/lmdb/set.d.ts +3 -3
- package/dest/lmdb/set.d.ts.map +1 -1
- package/dest/lmdb/set.js +4 -5
- package/dest/lmdb/singleton.d.ts +2 -2
- package/dest/lmdb/singleton.d.ts.map +1 -1
- package/dest/lmdb/singleton.js +13 -14
- package/dest/lmdb/store.d.ts +7 -7
- package/dest/lmdb/store.d.ts.map +1 -1
- package/dest/lmdb/store.js +125 -134
- package/dest/lmdb-v2/array.d.ts +18 -0
- package/dest/lmdb-v2/array.d.ts.map +1 -0
- package/dest/lmdb-v2/array.js +101 -0
- package/dest/lmdb-v2/factory.d.ts +1 -1
- package/dest/lmdb-v2/factory.d.ts.map +1 -1
- package/dest/lmdb-v2/factory.js +30 -21
- package/dest/lmdb-v2/index.js +0 -1
- package/dest/lmdb-v2/map.js +82 -85
- package/dest/lmdb-v2/message.js +6 -7
- package/dest/lmdb-v2/read_transaction.js +65 -53
- package/dest/lmdb-v2/singleton.d.ts +1 -1
- package/dest/lmdb-v2/singleton.d.ts.map +1 -1
- package/dest/lmdb-v2/singleton.js +7 -5
- package/dest/lmdb-v2/store.d.ts +1 -1
- package/dest/lmdb-v2/store.d.ts.map +1 -1
- package/dest/lmdb-v2/store.js +31 -28
- package/dest/lmdb-v2/utils.d.ts +1 -1
- package/dest/lmdb-v2/utils.d.ts.map +1 -1
- package/dest/lmdb-v2/utils.js +30 -30
- package/dest/lmdb-v2/write_transaction.js +130 -110
- package/dest/stores/index.js +0 -1
- package/dest/stores/l2_tips_store.d.ts +2 -2
- package/dest/stores/l2_tips_store.d.ts.map +1 -1
- package/dest/stores/l2_tips_store.js +26 -12
- package/dest/utils.d.ts +3 -3
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +3 -7
- package/package.json +8 -11
- package/src/config.ts +1 -1
- package/src/indexeddb/array.ts +3 -3
- package/src/indexeddb/index.ts +1 -1
- package/src/indexeddb/map.ts +4 -4
- package/src/indexeddb/set.ts +4 -4
- package/src/indexeddb/singleton.ts +3 -3
- package/src/indexeddb/store.ts +8 -8
- package/src/interfaces/array_test_suite.ts +2 -2
- package/src/interfaces/common.ts +1 -1
- package/src/interfaces/counter.ts +1 -1
- package/src/interfaces/index.ts +1 -1
- package/src/interfaces/map.ts +1 -1
- package/src/interfaces/map_test_suite.ts +3 -3
- package/src/interfaces/set.ts +1 -1
- package/src/interfaces/set_test_suite.ts +3 -3
- package/src/interfaces/singleton_test_suite.ts +2 -2
- package/src/interfaces/store.ts +12 -12
- package/src/interfaces/store_test_suite.ts +2 -2
- package/src/interfaces/utils.ts +1 -1
- package/src/lmdb/array.ts +2 -2
- package/src/lmdb/counter.ts +3 -3
- package/src/lmdb/index.ts +1 -1
- package/src/lmdb/map.ts +3 -3
- package/src/lmdb/set.ts +3 -3
- package/src/lmdb/singleton.ts +2 -2
- package/src/lmdb/store.ts +14 -14
- package/src/lmdb-v2/array.ts +115 -0
- package/src/lmdb-v2/factory.ts +9 -5
- package/src/lmdb-v2/map.ts +1 -1
- package/src/lmdb-v2/singleton.ts +1 -1
- package/src/lmdb-v2/store.ts +4 -3
- package/src/lmdb-v2/utils.ts +1 -1
- package/src/stores/l2_tips_store.ts +10 -10
- package/src/utils.ts +4 -4
package/dest/lmdb/set.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { LmdbAztecMap } from './map.js';
|
|
2
2
|
/**
|
|
3
3
|
* A set backed by LMDB.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
constructor(rootDb, mapName)
|
|
4
|
+
*/ export class LmdbAztecSet {
|
|
5
|
+
map;
|
|
6
|
+
constructor(rootDb, mapName){
|
|
7
7
|
this.map = new LmdbAztecMap(rootDb, mapName);
|
|
8
8
|
}
|
|
9
9
|
close() {
|
|
@@ -25,9 +25,8 @@ export class LmdbAztecSet {
|
|
|
25
25
|
return this.map.keys(range);
|
|
26
26
|
}
|
|
27
27
|
async *entriesAsync(range = {}) {
|
|
28
|
-
for await (const key of this.map.keysAsync(range))
|
|
28
|
+
for await (const key of this.map.keysAsync(range)){
|
|
29
29
|
yield key;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGIvc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFZLE1BQWdCLEVBQUUsT0FBZTtRQUMzQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQU07UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBTTtRQUNiLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQWtCLEVBQUU7UUFDMUIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQWtCLEVBQUU7UUFDdEMsSUFBSSxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
package/dest/lmdb/singleton.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { Database, Key } from 'lmdb';
|
|
2
|
+
import type { AztecAsyncSingleton, AztecSingleton } from '../interfaces/singleton.js';
|
|
3
3
|
/**
|
|
4
4
|
* Stores a single value in LMDB.
|
|
5
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lmdb/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lmdb/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKtF;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;;gBAIzE,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM;IAKpD,GAAG,IAAI,CAAC,GAAG,SAAS;IAIpB,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAIlC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAG3B"}
|
package/dest/lmdb/singleton.js
CHANGED
|
@@ -1,27 +1,26 @@
|
|
|
1
|
-
var _LmdbAztecSingleton_db, _LmdbAztecSingleton_slot;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
1
|
/**
|
|
4
2
|
* Stores a single value in LMDB.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
*/ export class LmdbAztecSingleton {
|
|
4
|
+
#db;
|
|
5
|
+
#slot;
|
|
6
|
+
constructor(db, name){
|
|
7
|
+
this.#db = db;
|
|
8
|
+
this.#slot = [
|
|
9
|
+
'singleton',
|
|
10
|
+
name,
|
|
11
|
+
'value'
|
|
12
|
+
];
|
|
12
13
|
}
|
|
13
14
|
get() {
|
|
14
|
-
return
|
|
15
|
+
return this.#db.get(this.#slot);
|
|
15
16
|
}
|
|
16
17
|
getAsync() {
|
|
17
18
|
return Promise.resolve(this.get());
|
|
18
19
|
}
|
|
19
20
|
set(val) {
|
|
20
|
-
return
|
|
21
|
+
return this.#db.put(this.#slot, val);
|
|
21
22
|
}
|
|
22
23
|
delete() {
|
|
23
|
-
return
|
|
24
|
+
return this.#db.remove(this.#slot);
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
|
-
_LmdbAztecSingleton_db = new WeakMap(), _LmdbAztecSingleton_slot = new WeakMap();
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGIvc2luZ2xldG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBSTdCLFlBQVksRUFBMEIsRUFBRSxJQUFZO1FBSHBELHlDQUE0QjtRQUM1QiwyQ0FBaUI7UUFHZix1QkFBQSxJQUFJLDBCQUFPLEVBQTRCLE1BQUEsQ0FBQztRQUN4Qyx1QkFBQSxJQUFJLDRCQUFTLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsTUFBQSxDQUFDO0lBQzVDLENBQUM7SUFFRCxHQUFHO1FBQ0QsT0FBTyx1QkFBQSxJQUFJLDhCQUFJLENBQUMsR0FBRyxDQUFDLHVCQUFBLElBQUksZ0NBQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBTTtRQUNSLE9BQU8sdUJBQUEsSUFBSSw4QkFBSSxDQUFDLEdBQUcsQ0FBQyx1QkFBQSxJQUFJLGdDQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLHVCQUFBLElBQUksOEJBQUksQ0FBQyxNQUFNLENBQUMsdUJBQUEsSUFBSSxnQ0FBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
|
package/dest/lmdb/store.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type RootDatabase } from 'lmdb';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
2
|
+
import type { AztecArray, AztecAsyncArray } from '../interfaces/array.js';
|
|
3
|
+
import type { Key, StoreSize } from '../interfaces/common.js';
|
|
4
|
+
import type { AztecAsyncCounter, AztecCounter } from '../interfaces/counter.js';
|
|
5
|
+
import type { AztecAsyncMap, AztecAsyncMultiMap, AztecMap, AztecMapWithSize, AztecMultiMap, AztecMultiMapWithSize } from '../interfaces/map.js';
|
|
6
|
+
import type { AztecAsyncSet, AztecSet } from '../interfaces/set.js';
|
|
7
|
+
import type { AztecAsyncSingleton, AztecSingleton } from '../interfaces/singleton.js';
|
|
8
|
+
import type { AztecAsyncKVStore, AztecKVStore } from '../interfaces/store.js';
|
|
9
9
|
/**
|
|
10
10
|
* A key-value store backed by LMDB.
|
|
11
11
|
*/
|
package/dest/lmdb/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,YAAY,EAAQ,MAAM,MAAM,CAAC;AAI9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"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"}
|
package/dest/lmdb/store.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
var _AztecLmdbStore_rootDb, _AztecLmdbStore_data, _AztecLmdbStore_multiMapData, _AztecLmdbStore_log;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
1
|
import { randomBytes } from '@aztec/foundation/crypto';
|
|
4
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
3
|
import { promises as fs, mkdirSync } from 'fs';
|
|
@@ -13,186 +11,185 @@ import { LmdbAztecSet } from './set.js';
|
|
|
13
11
|
import { LmdbAztecSingleton } from './singleton.js';
|
|
14
12
|
/**
|
|
15
13
|
* A key-value store backed by LMDB.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
*/ export class AztecLmdbStore {
|
|
15
|
+
isEphemeral;
|
|
16
|
+
path;
|
|
17
|
+
syncGetters;
|
|
18
|
+
#rootDb;
|
|
19
|
+
#data;
|
|
20
|
+
#multiMapData;
|
|
21
|
+
#log;
|
|
22
|
+
constructor(rootDb, isEphemeral, path){
|
|
19
23
|
this.isEphemeral = isEphemeral;
|
|
20
24
|
this.path = path;
|
|
21
25
|
this.syncGetters = true;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
_AztecLmdbStore_multiMapData.set(this, void 0);
|
|
25
|
-
_AztecLmdbStore_log.set(this, createLogger('kv-store:lmdb'));
|
|
26
|
-
__classPrivateFieldSet(this, _AztecLmdbStore_rootDb, rootDb, "f");
|
|
26
|
+
this.#log = createLogger('kv-store:lmdb');
|
|
27
|
+
this.#rootDb = rootDb;
|
|
27
28
|
// big bucket to store all the data
|
|
28
|
-
|
|
29
|
+
this.#data = rootDb.openDB('data', {
|
|
29
30
|
encoding: 'msgpack',
|
|
30
|
-
keyEncoding: 'ordered-binary'
|
|
31
|
-
})
|
|
32
|
-
|
|
31
|
+
keyEncoding: 'ordered-binary'
|
|
32
|
+
});
|
|
33
|
+
this.#multiMapData = rootDb.openDB('data_dup_sort', {
|
|
33
34
|
encoding: 'ordered-binary',
|
|
34
35
|
keyEncoding: 'ordered-binary',
|
|
35
|
-
dupSort: true
|
|
36
|
-
})
|
|
36
|
+
dupSort: true
|
|
37
|
+
});
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
static open(path, mapSizeKb = 1 * 1024 * 1024, // defaults to 1 GB map size
|
|
52
|
-
ephemeral = false, log = createLogger('kv-store:lmdb')) {
|
|
40
|
+
* Creates a new AztecKVStore backed by LMDB. The path to the database is optional. If not provided,
|
|
41
|
+
* the database will be stored in a temporary location and be deleted when the process exists.
|
|
42
|
+
*
|
|
43
|
+
* The `rollupAddress` passed is checked against what is stored in the database. If they do not match,
|
|
44
|
+
* the database is cleared before returning the store. This way data is not accidentally shared between
|
|
45
|
+
* different rollup instances.
|
|
46
|
+
*
|
|
47
|
+
* @param path - A path on the disk to store the database. Optional
|
|
48
|
+
* @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
|
|
49
|
+
* @param log - A logger to use. Optional
|
|
50
|
+
* @returns The store
|
|
51
|
+
*/ static open(path, mapSizeKb = 1 * 1024 * 1024, ephemeral = false, log = createLogger('kv-store:lmdb')) {
|
|
53
52
|
const dbPath = path ?? join(tmpdir(), randomBytes(8).toString('hex'));
|
|
54
|
-
mkdirSync(dbPath, {
|
|
53
|
+
mkdirSync(dbPath, {
|
|
54
|
+
recursive: true
|
|
55
|
+
});
|
|
55
56
|
const mapSize = 1024 * mapSizeKb;
|
|
56
57
|
log.debug(`Opening LMDB database at ${path || 'temporary location'} with map size ${mapSize}`);
|
|
57
|
-
const rootDb = open({
|
|
58
|
+
const rootDb = open({
|
|
59
|
+
path: dbPath,
|
|
60
|
+
noSync: ephemeral,
|
|
61
|
+
mapSize
|
|
62
|
+
});
|
|
58
63
|
return new AztecLmdbStore(rootDb, ephemeral, dbPath);
|
|
59
64
|
}
|
|
60
65
|
/**
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
async fork() {
|
|
66
|
+
* Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
|
|
67
|
+
* @returns A new AztecLmdbStore.
|
|
68
|
+
*/ async fork() {
|
|
65
69
|
const baseDir = this.path;
|
|
66
|
-
|
|
70
|
+
this.#log.debug(`Forking store with basedir ${baseDir}`);
|
|
67
71
|
const forkPath = await fs.mkdtemp(join(baseDir, 'aztec-store-fork-'));
|
|
68
|
-
|
|
69
|
-
await
|
|
70
|
-
const forkDb = open(forkPath, {
|
|
71
|
-
|
|
72
|
+
this.#log.verbose(`Forking store to ${forkPath}`);
|
|
73
|
+
await this.#rootDb.backup(forkPath, false);
|
|
74
|
+
const forkDb = open(forkPath, {
|
|
75
|
+
noSync: this.isEphemeral
|
|
76
|
+
});
|
|
77
|
+
this.#log.debug(`Forked store at ${forkPath} opened successfully`);
|
|
72
78
|
return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
|
|
73
79
|
}
|
|
74
80
|
/**
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return new LmdbAztecMap(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
|
|
81
|
+
* Creates a new AztecMap in the store.
|
|
82
|
+
* @param name - Name of the map
|
|
83
|
+
* @returns A new AztecMap
|
|
84
|
+
*/ openMap(name) {
|
|
85
|
+
return new LmdbAztecMap(this.#data, name);
|
|
81
86
|
}
|
|
82
87
|
/**
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return new LmdbAztecSet(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
|
|
88
|
+
* Creates a new AztecSet in the store.
|
|
89
|
+
* @param name - Name of the set
|
|
90
|
+
* @returns A new AztecSet
|
|
91
|
+
*/ openSet(name) {
|
|
92
|
+
return new LmdbAztecSet(this.#data, name);
|
|
89
93
|
}
|
|
90
94
|
/**
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return new LmdbAztecMap(__classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f"), name);
|
|
95
|
+
* Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
|
|
96
|
+
* @param name - Name of the map
|
|
97
|
+
* @returns A new AztecMultiMap
|
|
98
|
+
*/ openMultiMap(name) {
|
|
99
|
+
return new LmdbAztecMap(this.#multiMapData, name);
|
|
97
100
|
}
|
|
98
101
|
openCounter(name) {
|
|
99
|
-
return new LmdbAztecCounter(
|
|
102
|
+
return new LmdbAztecCounter(this.#data, name);
|
|
100
103
|
}
|
|
101
104
|
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return new LmdbAztecMapWithSize(__classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f"), name);
|
|
105
|
+
* Creates a new AztecMultiMapWithSize in the store. A multi-map with size stores multiple values for a single key automatically.
|
|
106
|
+
* @param name - Name of the map
|
|
107
|
+
* @returns A new AztecMultiMapWithSize
|
|
108
|
+
*/ openMultiMapWithSize(name) {
|
|
109
|
+
return new LmdbAztecMapWithSize(this.#multiMapData, name);
|
|
108
110
|
}
|
|
109
111
|
/**
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return new LmdbAztecMapWithSize(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
|
|
112
|
+
* Creates a new AztecMapWithSize in the store.
|
|
113
|
+
* @param name - Name of the map
|
|
114
|
+
* @returns A new AztecMapWithSize
|
|
115
|
+
*/ openMapWithSize(name) {
|
|
116
|
+
return new LmdbAztecMapWithSize(this.#data, name);
|
|
116
117
|
}
|
|
117
118
|
/**
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
return new LmdbAztecArray(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
|
|
119
|
+
* Creates a new AztecArray in the store.
|
|
120
|
+
* @param name - Name of the array
|
|
121
|
+
* @returns A new AztecArray
|
|
122
|
+
*/ openArray(name) {
|
|
123
|
+
return new LmdbAztecArray(this.#data, name);
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
return new LmdbAztecSingleton(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
|
|
126
|
+
* Creates a new AztecSingleton in the store.
|
|
127
|
+
* @param name - Name of the singleton
|
|
128
|
+
* @returns A new AztecSingleton
|
|
129
|
+
*/ openSingleton(name) {
|
|
130
|
+
return new LmdbAztecSingleton(this.#data, name);
|
|
132
131
|
}
|
|
133
132
|
/**
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
return __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").transaction(callback);
|
|
133
|
+
* Runs a callback in a transaction.
|
|
134
|
+
* @param callback - Function to execute in a transaction
|
|
135
|
+
* @returns A promise that resolves to the return value of the callback
|
|
136
|
+
*/ transaction(callback) {
|
|
137
|
+
return this.#rootDb.transaction(callback);
|
|
140
138
|
}
|
|
141
139
|
/**
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
return await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").transaction(callback);
|
|
140
|
+
* Runs a callback in a transaction.
|
|
141
|
+
* @param callback - Function to execute in a transaction
|
|
142
|
+
* @returns A promise that resolves to the return value of the callback
|
|
143
|
+
*/ async transactionAsync(callback) {
|
|
144
|
+
return await this.#rootDb.transaction(callback);
|
|
148
145
|
}
|
|
149
146
|
/**
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
await
|
|
154
|
-
await
|
|
155
|
-
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").clearAsync();
|
|
147
|
+
* Clears all entries in the store & sub DBs.
|
|
148
|
+
*/ async clear() {
|
|
149
|
+
await this.#data.clearAsync();
|
|
150
|
+
await this.#multiMapData.clearAsync();
|
|
151
|
+
await this.#rootDb.clearAsync();
|
|
156
152
|
}
|
|
157
153
|
/**
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
await
|
|
162
|
-
await
|
|
163
|
-
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").drop();
|
|
154
|
+
* Drops the database & sub DBs.
|
|
155
|
+
*/ async drop() {
|
|
156
|
+
await this.#data.drop();
|
|
157
|
+
await this.#multiMapData.drop();
|
|
158
|
+
await this.#rootDb.drop();
|
|
164
159
|
}
|
|
165
160
|
/**
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
await
|
|
170
|
-
await
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
/** Deletes this store and removes the database files from disk */
|
|
174
|
-
async delete() {
|
|
161
|
+
* Close the database. Note, once this is closed we can no longer interact with the DB.
|
|
162
|
+
*/ async close() {
|
|
163
|
+
await this.#data.close();
|
|
164
|
+
await this.#multiMapData.close();
|
|
165
|
+
await this.#rootDb.close();
|
|
166
|
+
}
|
|
167
|
+
/** Deletes this store and removes the database files from disk */ async delete() {
|
|
175
168
|
await this.drop();
|
|
176
169
|
await this.close();
|
|
177
170
|
if (this.path) {
|
|
178
|
-
await fs.rm(this.path, {
|
|
179
|
-
|
|
171
|
+
await fs.rm(this.path, {
|
|
172
|
+
recursive: true,
|
|
173
|
+
force: true,
|
|
174
|
+
maxRetries: 3
|
|
175
|
+
});
|
|
176
|
+
this.#log.verbose(`Deleted database files at ${this.path}`);
|
|
180
177
|
}
|
|
181
178
|
}
|
|
182
179
|
estimateSize() {
|
|
183
|
-
const stats =
|
|
180
|
+
const stats = this.#rootDb.getStats();
|
|
184
181
|
// The 'mapSize' is the total amount of virtual address space allocated to the DB (effectively the maximum possible size)
|
|
185
182
|
// http://www.lmdb.tech/doc/group__mdb.html#a4bde3c8b676457342cba2fe27aed5fbd
|
|
186
183
|
let mapSize = 0;
|
|
187
184
|
if ('mapSize' in stats && typeof stats.mapSize === 'number') {
|
|
188
185
|
mapSize = stats.mapSize;
|
|
189
186
|
}
|
|
190
|
-
const dataResult = this.estimateSubDBSize(
|
|
191
|
-
const multiResult = this.estimateSubDBSize(
|
|
187
|
+
const dataResult = this.estimateSubDBSize(this.#data);
|
|
188
|
+
const multiResult = this.estimateSubDBSize(this.#multiMapData);
|
|
192
189
|
return Promise.resolve({
|
|
193
190
|
mappingSize: mapSize,
|
|
194
191
|
actualSize: dataResult.actualSize + multiResult.actualSize,
|
|
195
|
-
numItems: dataResult.numItems + multiResult.numItems
|
|
192
|
+
numItems: dataResult.numItems + multiResult.numItems
|
|
196
193
|
});
|
|
197
194
|
}
|
|
198
195
|
estimateSubDBSize(db) {
|
|
@@ -204,22 +201,16 @@ export class AztecLmdbStore {
|
|
|
204
201
|
numItems = stats.entryCount;
|
|
205
202
|
}
|
|
206
203
|
// The closest value we can get to the actual size of the database is the number of consumed pages * the page size
|
|
207
|
-
if ('treeBranchPageCount' in stats &&
|
|
208
|
-
typeof stats.treeBranchPageCount === 'number' &&
|
|
209
|
-
'treeLeafPageCount' in stats &&
|
|
210
|
-
typeof stats.treeLeafPageCount === 'number' &&
|
|
211
|
-
'overflowPages' in stats &&
|
|
212
|
-
typeof stats.overflowPages === 'number' &&
|
|
213
|
-
'pageSize' in stats &&
|
|
214
|
-
typeof stats.pageSize === 'number') {
|
|
204
|
+
if ('treeBranchPageCount' in stats && typeof stats.treeBranchPageCount === 'number' && 'treeLeafPageCount' in stats && typeof stats.treeLeafPageCount === 'number' && 'overflowPages' in stats && typeof stats.overflowPages === 'number' && 'pageSize' in stats && typeof stats.pageSize === 'number') {
|
|
215
205
|
const branchPages = stats.treeBranchPageCount;
|
|
216
206
|
const leafPages = stats.treeLeafPageCount;
|
|
217
207
|
const overflowPages = stats.overflowPages;
|
|
218
208
|
const pageSize = stats.pageSize;
|
|
219
209
|
actualSize = (branchPages + leafPages + overflowPages) * pageSize;
|
|
220
210
|
}
|
|
221
|
-
return {
|
|
211
|
+
return {
|
|
212
|
+
actualSize,
|
|
213
|
+
numItems
|
|
214
|
+
};
|
|
222
215
|
}
|
|
223
216
|
}
|
|
224
|
-
_AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap(), _AztecLmdbStore_log = new WeakMap();
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQy9DLE9BQU8sRUFBb0MsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWdCNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBWSxNQUFvQixFQUFrQixXQUFvQixFQUFVLElBQVk7UUFBMUMsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBUDVGLGdCQUFXLEdBQUcsSUFBYSxDQUFDO1FBRTVCLHlDQUFzQjtRQUN0Qix1Q0FBOEI7UUFDOUIsK0NBQXNDO1FBQ3RDLDhCQUFPLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBQztRQUduQyx1QkFBQSxJQUFJLDBCQUFXLE1BQU0sTUFBQSxDQUFDO1FBRXRCLG1DQUFtQztRQUNuQyx1QkFBQSxJQUFJLHdC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
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AztecAsyncArray } from '../interfaces/array.js';
|
|
2
|
+
import { AztecLMDBStoreV2 } from './store.js';
|
|
3
|
+
export declare class LMDBArray<T> implements AztecAsyncArray<T> {
|
|
4
|
+
private store;
|
|
5
|
+
private length;
|
|
6
|
+
private encoder;
|
|
7
|
+
private prefix;
|
|
8
|
+
constructor(store: AztecLMDBStoreV2, name: string);
|
|
9
|
+
pop(): Promise<T | undefined>;
|
|
10
|
+
push(...vals: T[]): Promise<number>;
|
|
11
|
+
setAt(index: number, val: T): Promise<boolean>;
|
|
12
|
+
atAsync(index: number): Promise<T | undefined>;
|
|
13
|
+
lengthAsync(): Promise<number>;
|
|
14
|
+
entriesAsync(): AsyncIterableIterator<[number, T]>;
|
|
15
|
+
valuesAsync(): AsyncIterableIterator<T>;
|
|
16
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<T>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/array.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,gBAAgB,EAA+B,MAAM,YAAY,CAAC;AAG3E,qBAAa,SAAS,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAKzC,OAAO,CAAC,KAAK;IAJzB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAS;gBAEH,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM;IAKzD,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAgB7B,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAWnC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAc9C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAexC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IA2BlD,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAM9C,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC;CAGnD"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Encoder } from 'msgpackr/pack';
|
|
2
|
+
import { execInReadTx, execInWriteTx } from './store.js';
|
|
3
|
+
import { deserializeKey, serializeKey } from './utils.js';
|
|
4
|
+
export class LMDBArray {
|
|
5
|
+
store;
|
|
6
|
+
length;
|
|
7
|
+
encoder;
|
|
8
|
+
prefix;
|
|
9
|
+
constructor(store, name){
|
|
10
|
+
this.store = store;
|
|
11
|
+
this.encoder = new Encoder();
|
|
12
|
+
this.length = store.openSingleton(name + ':length');
|
|
13
|
+
this.prefix = `array:${name}`;
|
|
14
|
+
}
|
|
15
|
+
pop() {
|
|
16
|
+
return execInWriteTx(this.store, async (tx)=>{
|
|
17
|
+
const length = await this.lengthAsync();
|
|
18
|
+
if (length === 0) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const val = await tx.get(serializeKey(this.prefix, length - 1));
|
|
22
|
+
await tx.remove(serializeKey(this.prefix, length - 1));
|
|
23
|
+
await this.length.set(length - 1);
|
|
24
|
+
return val ? this.encoder.unpack(val) : undefined;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
push(...vals) {
|
|
28
|
+
return execInWriteTx(this.store, async (tx)=>{
|
|
29
|
+
let length = await this.lengthAsync();
|
|
30
|
+
for (const val of vals){
|
|
31
|
+
await tx.set(serializeKey(this.prefix, length++), this.encoder.pack(val));
|
|
32
|
+
}
|
|
33
|
+
await this.length.set(length);
|
|
34
|
+
return length;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
setAt(index, val) {
|
|
38
|
+
return execInWriteTx(this.store, async (tx)=>{
|
|
39
|
+
const length = await this.lengthAsync();
|
|
40
|
+
if (index < 0) {
|
|
41
|
+
index += length;
|
|
42
|
+
}
|
|
43
|
+
if (index < 0 || index >= length) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
await tx.set(serializeKey(this.prefix, index), this.encoder.pack(val));
|
|
47
|
+
return true;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
atAsync(index) {
|
|
51
|
+
return execInReadTx(this.store, async (tx)=>{
|
|
52
|
+
const length = await this.lengthAsync();
|
|
53
|
+
if (index < 0) {
|
|
54
|
+
index += length;
|
|
55
|
+
}
|
|
56
|
+
if (index < 0 || index >= length) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const val = await tx.get(serializeKey(this.prefix, index));
|
|
60
|
+
return val ? this.encoder.unpack(val) : undefined;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async lengthAsync() {
|
|
64
|
+
return await this.length.getAsync() ?? 0;
|
|
65
|
+
}
|
|
66
|
+
async *entriesAsync() {
|
|
67
|
+
// pin array length so that pushes don't affect iteration
|
|
68
|
+
const length = await this.lengthAsync();
|
|
69
|
+
if (length === 0) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
let tx = this.store.getCurrentWriteTx();
|
|
73
|
+
const shouldClose = !tx;
|
|
74
|
+
tx ??= this.store.getReadTx();
|
|
75
|
+
try {
|
|
76
|
+
for await (const [key, val] of tx.iterate(serializeKey(this.prefix, 0), undefined, false, length)){
|
|
77
|
+
const deserializedKey = deserializeKey(this.prefix, key);
|
|
78
|
+
// if pops happened while iterating we may have read too much. Terminate early
|
|
79
|
+
if (deserializedKey === false) {
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
yield [
|
|
83
|
+
deserializedKey,
|
|
84
|
+
this.encoder.unpack(val)
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
} finally{
|
|
88
|
+
if (shouldClose) {
|
|
89
|
+
tx.close();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async *valuesAsync() {
|
|
94
|
+
for await (const [_, value] of this.entriesAsync()){
|
|
95
|
+
yield value;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
[Symbol.asyncIterator]() {
|
|
99
|
+
return this.valuesAsync();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
-
import {
|
|
2
|
+
import type { DataStoreConfig } from '../config.js';
|
|
3
3
|
import { AztecLMDBStoreV2 } from './store.js';
|
|
4
4
|
export declare function createStore(name: string, config: DataStoreConfig, log?: Logger): Promise<AztecLMDBStoreV2>;
|
|
5
5
|
export declare function openTmpStore(name: string, ephemeral?: boolean, dbMapSizeKb?: number, // 10GB
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAMlE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAMlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK9C,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAc,EACzB,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAiD,GACrD,OAAO,CAAC,gBAAgB,CAAC,CAmB3B;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,WAAW,SAAqB,EAAE,OAAO;AACzC,UAAU,SAAc,EACxB,GAAG,GAAE,MAAyC,GAC7C,OAAO,CAAC,gBAAgB,CAAC,CAG3B"}
|