@aztec/kv-store 0.47.1 → 0.48.0
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/interfaces/store.d.ts +4 -0
- package/dest/interfaces/store.d.ts.map +1 -1
- package/dest/lmdb/store.d.ts +7 -1
- package/dest/lmdb/store.d.ts.map +1 -1
- package/dest/lmdb/store.js +18 -7
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +11 -2
- package/package.json +2 -2
- package/src/interfaces/store.ts +5 -0
- package/src/lmdb/store.ts +17 -6
- package/src/utils.ts +10 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/interfaces/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAwB;AACxB,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpE;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9D;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9E;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE1C;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAElD;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE1D;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEjF;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/interfaces/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,wBAAwB;AACxB,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpE;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9D;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9E;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE1C;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAElD;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAE1D;;;OAGG;IACH,WAAW,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEjF;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;CAC/B"}
|
package/dest/lmdb/store.d.ts
CHANGED
|
@@ -10,7 +10,8 @@ import { type AztecKVStore } from '../interfaces/store.js';
|
|
|
10
10
|
*/
|
|
11
11
|
export declare class AztecLmdbStore implements AztecKVStore {
|
|
12
12
|
#private;
|
|
13
|
-
|
|
13
|
+
readonly isEphemeral: boolean;
|
|
14
|
+
constructor(rootDb: RootDatabase, isEphemeral: boolean);
|
|
14
15
|
/**
|
|
15
16
|
* Creates a new AztecKVStore backed by LMDB. The path to the database is optional. If not provided,
|
|
16
17
|
* the database will be stored in a temporary location and be deleted when the process exists.
|
|
@@ -25,6 +26,11 @@ export declare class AztecLmdbStore implements AztecKVStore {
|
|
|
25
26
|
* @returns The store
|
|
26
27
|
*/
|
|
27
28
|
static open(path?: string, ephemeral?: boolean, log?: import("@aztec/foundation/log").Logger): AztecLmdbStore;
|
|
29
|
+
/**
|
|
30
|
+
* Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
|
|
31
|
+
* @returns A new AztecLmdbStore.
|
|
32
|
+
*/
|
|
33
|
+
fork(): Promise<AztecLmdbStore>;
|
|
28
34
|
/**
|
|
29
35
|
* Creates a new AztecMap in the store.
|
|
30
36
|
* @param name - Name of the map
|
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":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAA2B,KAAK,YAAY,EAAQ,MAAM,MAAM,CAAC;AAIxE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAO3D;;GAEG;AACH,qBAAa,cAAe,YAAW,YAAY;;aAKC,WAAW,EAAE,OAAO;gBAA1D,MAAM,EAAE,YAAY,EAAkB,WAAW,EAAE,OAAO;IAgBtE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,GAAE,OAAe,EAC1B,GAAG,yCAA2C,GAC7C,cAAc;IAMjB;;;OAGG;IACG,IAAI;IAOV;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAInE;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC;IAI7D;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAI7E,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IAI9F;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAIzC;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC;IAIjD;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7C;;OAEG;IACG,KAAK;CAGZ"}
|
package/dest/lmdb/store.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
var _AztecLmdbStore_rootDb, _AztecLmdbStore_data, _AztecLmdbStore_multiMapData;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
|
+
import { mkdtemp } from 'fs/promises';
|
|
4
5
|
import { open } from 'lmdb';
|
|
6
|
+
import { tmpdir } from 'os';
|
|
7
|
+
import { join } from 'path';
|
|
5
8
|
import { LmdbAztecArray } from './array.js';
|
|
6
9
|
import { LmdbAztecCounter } from './counter.js';
|
|
7
10
|
import { LmdbAztecMap } from './map.js';
|
|
@@ -11,7 +14,8 @@ import { LmdbAztecSingleton } from './singleton.js';
|
|
|
11
14
|
* A key-value store backed by LMDB.
|
|
12
15
|
*/
|
|
13
16
|
export class AztecLmdbStore {
|
|
14
|
-
constructor(rootDb) {
|
|
17
|
+
constructor(rootDb, isEphemeral) {
|
|
18
|
+
this.isEphemeral = isEphemeral;
|
|
15
19
|
_AztecLmdbStore_rootDb.set(this, void 0);
|
|
16
20
|
_AztecLmdbStore_data.set(this, void 0);
|
|
17
21
|
_AztecLmdbStore_multiMapData.set(this, void 0);
|
|
@@ -42,11 +46,18 @@ export class AztecLmdbStore {
|
|
|
42
46
|
*/
|
|
43
47
|
static open(path, ephemeral = false, log = createDebugLogger('aztec:kv-store:lmdb')) {
|
|
44
48
|
log.info(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
45
|
-
const rootDb = open({
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
const rootDb = open({ path, noSync: ephemeral });
|
|
50
|
+
return new AztecLmdbStore(rootDb, ephemeral);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
|
|
54
|
+
* @returns A new AztecLmdbStore.
|
|
55
|
+
*/
|
|
56
|
+
async fork() {
|
|
57
|
+
const forkPath = join(await mkdtemp(join(tmpdir(), 'aztec-store-fork-')), 'root.mdb');
|
|
58
|
+
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").backup(forkPath, false);
|
|
59
|
+
const forkDb = open(forkPath, { noSync: this.isEphemeral });
|
|
60
|
+
return new AztecLmdbStore(forkDb, this.isEphemeral);
|
|
50
61
|
}
|
|
51
62
|
/**
|
|
52
63
|
* Creates a new AztecMap in the store.
|
|
@@ -107,4 +118,4 @@ export class AztecLmdbStore {
|
|
|
107
118
|
}
|
|
108
119
|
}
|
|
109
120
|
_AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap();
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUE4QyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztBQUM1QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUTVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQVksTUFBb0IsRUFBa0IsV0FBb0I7UUFBcEIsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFKdEUseUNBQXNCO1FBQ3RCLHVDQUE4QjtRQUM5QiwrQ0FBc0M7UUFHcEMsdUJBQUEsSUFBSSwwQkFBVyxNQUFNLE1BQUEsQ0FBQztRQUV0QixtQ0FBbUM7UUFDbkMsdUJBQUEsSUFBSSx3QkFBUyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQyxRQUFRLEVBQUUsU0FBUztZQUNuQixXQUFXLEVBQUUsZ0JBQWdCO1NBQzlCLENBQUMsTUFBQSxDQUFDO1FBRUgsdUJBQUEsSUFBSSxnQ0FBaUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDbEQsUUFBUSxFQUFFLGdCQUFn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
|
package/dest/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,wBAAgB,WAAW,CACzB,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAC7C,aAAa,EAAE,UAAU,EACzB,GAAG,GAAE,MAA4C,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,KAAK,MAAM,EAAqB,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,wBAAgB,WAAW,CACzB,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAC7C,aAAa,EAAE,UAAU,EACzB,GAAG,GAAE,MAA4C,2BASlD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,YAAY,EAC7D,KAAK,EAAE,CAAC,EACR,aAAa,EAAE,UAAU,EACzB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,YAAY,CAErE"}
|
package/dest/utils.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
2
|
import { AztecLmdbStore } from './lmdb/store.js';
|
|
3
3
|
export function createStore(config, rollupAddress, log = createDebugLogger('aztec:kv-store')) {
|
|
4
|
-
|
|
4
|
+
if (config.dataDirectory) {
|
|
5
|
+
log.info(`Using data directory: ${config.dataDirectory}`);
|
|
6
|
+
}
|
|
7
|
+
else {
|
|
8
|
+
log.info('Using ephemeral data directory');
|
|
9
|
+
}
|
|
10
|
+
return initStoreForRollup(AztecLmdbStore.open(config.dataDirectory, false), rollupAddress, log);
|
|
5
11
|
}
|
|
6
12
|
/**
|
|
7
13
|
* Clears the store if the rollup address does not match the one stored in the database.
|
|
@@ -11,6 +17,9 @@ export function createStore(config, rollupAddress, log = createDebugLogger('azte
|
|
|
11
17
|
* @returns A promise that resolves when the store is cleared, or rejects if the rollup address does not match
|
|
12
18
|
*/
|
|
13
19
|
export async function initStoreForRollup(store, rollupAddress, log) {
|
|
20
|
+
if (!rollupAddress) {
|
|
21
|
+
throw new Error('Rollup address is required');
|
|
22
|
+
}
|
|
14
23
|
const rollupAddressValue = store.openSingleton('rollupAddress');
|
|
15
24
|
const rollupAddressString = rollupAddress.toString();
|
|
16
25
|
const storedRollupAddressString = rollupAddressValue.get();
|
|
@@ -29,4 +38,4 @@ export async function initStoreForRollup(store, rollupAddress, log) {
|
|
|
29
38
|
export function openTmpStore(ephemeral = false) {
|
|
30
39
|
return AztecLmdbStore.open(undefined, ephemeral);
|
|
31
40
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE1BQU0sVUFBVSxXQUFXLENBQ3pCLE1BQTZDLEVBQzdDLGFBQXlCLEVBQ3pCLE1BQWMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUM7SUFFakQsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztTQUFNLENBQUM7UUFDTixHQUFHLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELE9BQU8sa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsRyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsS0FBUSxFQUNSLGFBQXlCLEVBQ3pCLEdBQVk7SUFFWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQXFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BHLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JELE1BQU0seUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFM0QsSUFBSSxPQUFPLHlCQUF5QixLQUFLLFdBQVcsSUFBSSx5QkFBeUIsS0FBSyxtQkFBbUIsRUFBRSxDQUFDO1FBQzFHLEdBQUcsRUFBRSxJQUFJLENBQ1AscUNBQXFDLGFBQWEsV0FBVyxrQkFBa0IsK0JBQStCLENBQy9HLENBQUM7UUFFRixNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNsRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxZQUFxQixLQUFLO0lBQ3JELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkQsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/kv-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/interfaces/index.js",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
]
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@aztec/foundation": "0.
|
|
55
|
+
"@aztec/foundation": "0.48.0",
|
|
56
56
|
"lmdb": "^3.0.6"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
package/src/interfaces/store.ts
CHANGED
package/src/lmdb/store.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
2
|
|
|
3
|
+
import { mkdtemp } from 'fs/promises';
|
|
3
4
|
import { type Database, type Key, type RootDatabase, open } from 'lmdb';
|
|
5
|
+
import { tmpdir } from 'os';
|
|
6
|
+
import { join } from 'path';
|
|
4
7
|
|
|
5
8
|
import { type AztecArray } from '../interfaces/array.js';
|
|
6
9
|
import { type AztecCounter } from '../interfaces/counter.js';
|
|
@@ -22,7 +25,7 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
22
25
|
#data: Database<unknown, Key>;
|
|
23
26
|
#multiMapData: Database<unknown, Key>;
|
|
24
27
|
|
|
25
|
-
constructor(rootDb: RootDatabase) {
|
|
28
|
+
constructor(rootDb: RootDatabase, public readonly isEphemeral: boolean) {
|
|
26
29
|
this.#rootDb = rootDb;
|
|
27
30
|
|
|
28
31
|
// big bucket to store all the data
|
|
@@ -57,11 +60,19 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
57
60
|
log = createDebugLogger('aztec:kv-store:lmdb'),
|
|
58
61
|
): AztecLmdbStore {
|
|
59
62
|
log.info(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
60
|
-
const rootDb = open({
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
const rootDb = open({ path, noSync: ephemeral });
|
|
64
|
+
return new AztecLmdbStore(rootDb, ephemeral);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
|
|
69
|
+
* @returns A new AztecLmdbStore.
|
|
70
|
+
*/
|
|
71
|
+
async fork() {
|
|
72
|
+
const forkPath = join(await mkdtemp(join(tmpdir(), 'aztec-store-fork-')), 'root.mdb');
|
|
73
|
+
await this.#rootDb.backup(forkPath, false);
|
|
74
|
+
const forkDb = open(forkPath, { noSync: this.isEphemeral });
|
|
75
|
+
return new AztecLmdbStore(forkDb, this.isEphemeral);
|
|
65
76
|
}
|
|
66
77
|
|
|
67
78
|
/**
|
package/src/utils.ts
CHANGED
|
@@ -9,7 +9,13 @@ export function createStore(
|
|
|
9
9
|
rollupAddress: EthAddress,
|
|
10
10
|
log: Logger = createDebugLogger('aztec:kv-store'),
|
|
11
11
|
) {
|
|
12
|
-
|
|
12
|
+
if (config.dataDirectory) {
|
|
13
|
+
log.info(`Using data directory: ${config.dataDirectory}`);
|
|
14
|
+
} else {
|
|
15
|
+
log.info('Using ephemeral data directory');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return initStoreForRollup(AztecLmdbStore.open(config.dataDirectory, false), rollupAddress, log);
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
/**
|
|
@@ -24,6 +30,9 @@ export async function initStoreForRollup<T extends AztecKVStore>(
|
|
|
24
30
|
rollupAddress: EthAddress,
|
|
25
31
|
log?: Logger,
|
|
26
32
|
): Promise<T> {
|
|
33
|
+
if (!rollupAddress) {
|
|
34
|
+
throw new Error('Rollup address is required');
|
|
35
|
+
}
|
|
27
36
|
const rollupAddressValue = store.openSingleton<ReturnType<EthAddress['toString']>>('rollupAddress');
|
|
28
37
|
const rollupAddressString = rollupAddress.toString();
|
|
29
38
|
const storedRollupAddressString = rollupAddressValue.get();
|