@aztec/kv-store 0.48.0 → 0.49.2
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.
|
@@ -47,12 +47,16 @@ export interface AztecKVStore {
|
|
|
47
47
|
*/
|
|
48
48
|
transaction<T extends Exclude<any, Promise<any>>>(callback: () => T): Promise<T>;
|
|
49
49
|
/**
|
|
50
|
-
* Clears the store
|
|
50
|
+
* Clears all entries in the store
|
|
51
51
|
*/
|
|
52
52
|
clear(): Promise<void>;
|
|
53
53
|
/**
|
|
54
54
|
* Forks the store.
|
|
55
55
|
*/
|
|
56
56
|
fork(): Promise<AztecKVStore>;
|
|
57
|
+
/**
|
|
58
|
+
* Deletes the store
|
|
59
|
+
*/
|
|
60
|
+
delete(): Promise<void>;
|
|
57
61
|
}
|
|
58
62
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -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;IAEvB;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,YAAY,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;IAE9B;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
|
package/dest/lmdb/store.d.ts
CHANGED
|
@@ -11,7 +11,8 @@ import { type AztecKVStore } from '../interfaces/store.js';
|
|
|
11
11
|
export declare class AztecLmdbStore implements AztecKVStore {
|
|
12
12
|
#private;
|
|
13
13
|
readonly isEphemeral: boolean;
|
|
14
|
-
|
|
14
|
+
private path?;
|
|
15
|
+
constructor(rootDb: RootDatabase, isEphemeral: boolean, path?: string | undefined);
|
|
15
16
|
/**
|
|
16
17
|
* Creates a new AztecKVStore backed by LMDB. The path to the database is optional. If not provided,
|
|
17
18
|
* the database will be stored in a temporary location and be deleted when the process exists.
|
|
@@ -69,8 +70,10 @@ export declare class AztecLmdbStore implements AztecKVStore {
|
|
|
69
70
|
*/
|
|
70
71
|
transaction<T>(callback: () => T): Promise<T>;
|
|
71
72
|
/**
|
|
72
|
-
* Clears the store
|
|
73
|
+
* Clears all entries in the store
|
|
73
74
|
*/
|
|
74
75
|
clear(): Promise<void>;
|
|
76
|
+
/** Deletes this store */
|
|
77
|
+
delete(): Promise<void>;
|
|
75
78
|
}
|
|
76
79
|
//# sourceMappingURL=store.d.ts.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":"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;;
|
|
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;;aAMC,WAAW,EAAE,OAAO;IAAE,OAAO,CAAC,IAAI,CAAC;gBAAzE,MAAM,EAAE,YAAY,EAAkB,WAAW,EAAE,OAAO,EAAU,IAAI,CAAC,oBAAQ;IAgB7F;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,GAAE,OAAe,EAC1B,GAAG,yCAA2C,GAC7C,cAAc;IAMjB;;;OAGG;IACG,IAAI;IAYV;;;;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;IAIX,yBAAyB;IACnB,MAAM;CAGb"}
|
package/dest/lmdb/store.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
var _AztecLmdbStore_rootDb, _AztecLmdbStore_data, _AztecLmdbStore_multiMapData;
|
|
1
|
+
var _AztecLmdbStore_rootDb, _AztecLmdbStore_data, _AztecLmdbStore_multiMapData, _AztecLmdbStore_log;
|
|
2
2
|
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { mkdtemp } from 'fs/promises';
|
|
5
5
|
import { open } from 'lmdb';
|
|
6
6
|
import { tmpdir } from 'os';
|
|
7
|
-
import { join } from 'path';
|
|
7
|
+
import { dirname, join } from 'path';
|
|
8
8
|
import { LmdbAztecArray } from './array.js';
|
|
9
9
|
import { LmdbAztecCounter } from './counter.js';
|
|
10
10
|
import { LmdbAztecMap } from './map.js';
|
|
@@ -14,11 +14,13 @@ import { LmdbAztecSingleton } from './singleton.js';
|
|
|
14
14
|
* A key-value store backed by LMDB.
|
|
15
15
|
*/
|
|
16
16
|
export class AztecLmdbStore {
|
|
17
|
-
constructor(rootDb, isEphemeral) {
|
|
17
|
+
constructor(rootDb, isEphemeral, path) {
|
|
18
18
|
this.isEphemeral = isEphemeral;
|
|
19
|
+
this.path = path;
|
|
19
20
|
_AztecLmdbStore_rootDb.set(this, void 0);
|
|
20
21
|
_AztecLmdbStore_data.set(this, void 0);
|
|
21
22
|
_AztecLmdbStore_multiMapData.set(this, void 0);
|
|
23
|
+
_AztecLmdbStore_log.set(this, createDebugLogger('aztec:kv-store:lmdb'));
|
|
22
24
|
__classPrivateFieldSet(this, _AztecLmdbStore_rootDb, rootDb, "f");
|
|
23
25
|
// big bucket to store all the data
|
|
24
26
|
__classPrivateFieldSet(this, _AztecLmdbStore_data, rootDb.openDB('data', {
|
|
@@ -45,19 +47,23 @@ export class AztecLmdbStore {
|
|
|
45
47
|
* @returns The store
|
|
46
48
|
*/
|
|
47
49
|
static open(path, ephemeral = false, log = createDebugLogger('aztec:kv-store:lmdb')) {
|
|
48
|
-
log.
|
|
50
|
+
log.verbose(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
49
51
|
const rootDb = open({ path, noSync: ephemeral });
|
|
50
|
-
return new AztecLmdbStore(rootDb, ephemeral);
|
|
52
|
+
return new AztecLmdbStore(rootDb, ephemeral, path);
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
|
|
54
56
|
* @returns A new AztecLmdbStore.
|
|
55
57
|
*/
|
|
56
58
|
async fork() {
|
|
57
|
-
const
|
|
59
|
+
const baseDir = this.path ? dirname(this.path) : tmpdir();
|
|
60
|
+
__classPrivateFieldGet(this, _AztecLmdbStore_log, "f").debug(`Forking store with basedir ${baseDir}`);
|
|
61
|
+
const forkPath = (await mkdtemp(join(baseDir, 'aztec-store-fork-'))) + (this.isEphemeral || !this.path ? '/data.mdb' : '');
|
|
62
|
+
__classPrivateFieldGet(this, _AztecLmdbStore_log, "f").verbose(`Forking store to ${forkPath}`);
|
|
58
63
|
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").backup(forkPath, false);
|
|
59
64
|
const forkDb = open(forkPath, { noSync: this.isEphemeral });
|
|
60
|
-
|
|
65
|
+
__classPrivateFieldGet(this, _AztecLmdbStore_log, "f").debug(`Forked store at ${forkPath} opened successfully`);
|
|
66
|
+
return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
|
|
61
67
|
}
|
|
62
68
|
/**
|
|
63
69
|
* Creates a new AztecMap in the store.
|
|
@@ -111,11 +117,15 @@ export class AztecLmdbStore {
|
|
|
111
117
|
return __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").transaction(callback);
|
|
112
118
|
}
|
|
113
119
|
/**
|
|
114
|
-
* Clears the store
|
|
120
|
+
* Clears all entries in the store
|
|
115
121
|
*/
|
|
116
122
|
async clear() {
|
|
117
123
|
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").clearAsync();
|
|
118
124
|
}
|
|
125
|
+
/** Deletes this store */
|
|
126
|
+
async delete() {
|
|
127
|
+
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").drop();
|
|
128
|
+
}
|
|
119
129
|
}
|
|
120
|
-
_AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap();
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
_AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap(), _AztecLmdbStore_log = new WeakMap();
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEMsT0FBTyxFQUE4QyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVFyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQU16QixZQUFZLE1BQW9CLEVBQWtCLFdBQW9CLEVBQVUsSUFBYTtRQUEzQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUFVLFNBQUksR0FBSixJQUFJLENBQVM7UUFMN0YseUNBQXNCO1FBQ3RCLHVDQUE4QjtRQUM5QiwrQ0FBc0M7UUFDdEMsOEJBQU8saUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBQztRQUc5Qyx1QkFBQSxJQUFJLDBCQUFXLE1BQU0sTUFBQSxDQUFDO1FBRXRCLG1DQUFtQztRQUNuQyx1QkFBQSxJQUFJLHdCQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pDLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFdBQVcsRUFBRSxnQkFBZ0I7U0FDOUIsQ0FB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/kv-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.2",
|
|
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.49.2",
|
|
56
56
|
"lmdb": "^3.0.6"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
package/src/interfaces/store.ts
CHANGED
|
@@ -55,7 +55,7 @@ export interface AztecKVStore {
|
|
|
55
55
|
transaction<T extends Exclude<any, Promise<any>>>(callback: () => T): Promise<T>;
|
|
56
56
|
|
|
57
57
|
/**
|
|
58
|
-
* Clears the store
|
|
58
|
+
* Clears all entries in the store
|
|
59
59
|
*/
|
|
60
60
|
clear(): Promise<void>;
|
|
61
61
|
|
|
@@ -63,4 +63,9 @@ export interface AztecKVStore {
|
|
|
63
63
|
* Forks the store.
|
|
64
64
|
*/
|
|
65
65
|
fork(): Promise<AztecKVStore>;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Deletes the store
|
|
69
|
+
*/
|
|
70
|
+
delete(): Promise<void>;
|
|
66
71
|
}
|
package/src/lmdb/store.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { createDebugLogger } from '@aztec/foundation/log';
|
|
|
3
3
|
import { mkdtemp } from 'fs/promises';
|
|
4
4
|
import { type Database, type Key, type RootDatabase, open } from 'lmdb';
|
|
5
5
|
import { tmpdir } from 'os';
|
|
6
|
-
import { join } from 'path';
|
|
6
|
+
import { dirname, join } from 'path';
|
|
7
7
|
|
|
8
8
|
import { type AztecArray } from '../interfaces/array.js';
|
|
9
9
|
import { type AztecCounter } from '../interfaces/counter.js';
|
|
@@ -24,8 +24,9 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
24
24
|
#rootDb: RootDatabase;
|
|
25
25
|
#data: Database<unknown, Key>;
|
|
26
26
|
#multiMapData: Database<unknown, Key>;
|
|
27
|
+
#log = createDebugLogger('aztec:kv-store:lmdb');
|
|
27
28
|
|
|
28
|
-
constructor(rootDb: RootDatabase, public readonly isEphemeral: boolean) {
|
|
29
|
+
constructor(rootDb: RootDatabase, public readonly isEphemeral: boolean, private path?: string) {
|
|
29
30
|
this.#rootDb = rootDb;
|
|
30
31
|
|
|
31
32
|
// big bucket to store all the data
|
|
@@ -59,9 +60,9 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
59
60
|
ephemeral: boolean = false,
|
|
60
61
|
log = createDebugLogger('aztec:kv-store:lmdb'),
|
|
61
62
|
): AztecLmdbStore {
|
|
62
|
-
log.
|
|
63
|
+
log.verbose(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
63
64
|
const rootDb = open({ path, noSync: ephemeral });
|
|
64
|
-
return new AztecLmdbStore(rootDb, ephemeral);
|
|
65
|
+
return new AztecLmdbStore(rootDb, ephemeral, path);
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
/**
|
|
@@ -69,10 +70,15 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
69
70
|
* @returns A new AztecLmdbStore.
|
|
70
71
|
*/
|
|
71
72
|
async fork() {
|
|
72
|
-
const
|
|
73
|
+
const baseDir = this.path ? dirname(this.path) : tmpdir();
|
|
74
|
+
this.#log.debug(`Forking store with basedir ${baseDir}`);
|
|
75
|
+
const forkPath =
|
|
76
|
+
(await mkdtemp(join(baseDir, 'aztec-store-fork-'))) + (this.isEphemeral || !this.path ? '/data.mdb' : '');
|
|
77
|
+
this.#log.verbose(`Forking store to ${forkPath}`);
|
|
73
78
|
await this.#rootDb.backup(forkPath, false);
|
|
74
79
|
const forkDb = open(forkPath, { noSync: this.isEphemeral });
|
|
75
|
-
|
|
80
|
+
this.#log.debug(`Forked store at ${forkPath} opened successfully`);
|
|
81
|
+
return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
|
|
76
82
|
}
|
|
77
83
|
|
|
78
84
|
/**
|
|
@@ -134,9 +140,14 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
134
140
|
}
|
|
135
141
|
|
|
136
142
|
/**
|
|
137
|
-
* Clears the store
|
|
143
|
+
* Clears all entries in the store
|
|
138
144
|
*/
|
|
139
145
|
async clear() {
|
|
140
146
|
await this.#rootDb.clearAsync();
|
|
141
147
|
}
|
|
148
|
+
|
|
149
|
+
/** Deletes this store */
|
|
150
|
+
async delete() {
|
|
151
|
+
await this.#rootDb.drop();
|
|
152
|
+
}
|
|
142
153
|
}
|