@aztec/kv-store 0.48.0 → 0.50.1
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 +11 -1
- package/dest/interfaces/store.d.ts.map +1 -1
- package/dest/lmdb/store.d.ts +8 -2
- package/dest/lmdb/store.d.ts.map +1 -1
- package/dest/lmdb/store.js +36 -10
- package/dest/utils.d.ts +1 -1
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +8 -9
- package/package.json +2 -2
- package/src/interfaces/store.ts +11 -1
- package/src/lmdb/store.ts +34 -7
- package/src/utils.ts +8 -11
|
@@ -47,12 +47,22 @@ 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>;
|
|
61
|
+
/**
|
|
62
|
+
* Estimates the size of the store in bytes.
|
|
63
|
+
*/
|
|
64
|
+
estimateSize(): {
|
|
65
|
+
bytes: number;
|
|
66
|
+
};
|
|
57
67
|
}
|
|
58
68
|
//# 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;IAExB;;OAEG;IACH,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnC"}
|
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,13 @@ 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>;
|
|
78
|
+
estimateSize(): {
|
|
79
|
+
bytes: number;
|
|
80
|
+
};
|
|
75
81
|
}
|
|
76
82
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAIA,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;IASjB;;;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;IAIZ,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;CAWlC"}
|
package/dest/lmdb/store.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
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
|
+
import { mkdirSync } from 'fs';
|
|
4
5
|
import { mkdtemp } from 'fs/promises';
|
|
5
6
|
import { open } from 'lmdb';
|
|
6
7
|
import { tmpdir } from 'os';
|
|
7
|
-
import { join } from 'path';
|
|
8
|
+
import { dirname, join } from 'path';
|
|
8
9
|
import { LmdbAztecArray } from './array.js';
|
|
9
10
|
import { LmdbAztecCounter } from './counter.js';
|
|
10
11
|
import { LmdbAztecMap } from './map.js';
|
|
@@ -14,11 +15,13 @@ import { LmdbAztecSingleton } from './singleton.js';
|
|
|
14
15
|
* A key-value store backed by LMDB.
|
|
15
16
|
*/
|
|
16
17
|
export class AztecLmdbStore {
|
|
17
|
-
constructor(rootDb, isEphemeral) {
|
|
18
|
+
constructor(rootDb, isEphemeral, path) {
|
|
18
19
|
this.isEphemeral = isEphemeral;
|
|
20
|
+
this.path = path;
|
|
19
21
|
_AztecLmdbStore_rootDb.set(this, void 0);
|
|
20
22
|
_AztecLmdbStore_data.set(this, void 0);
|
|
21
23
|
_AztecLmdbStore_multiMapData.set(this, void 0);
|
|
24
|
+
_AztecLmdbStore_log.set(this, createDebugLogger('aztec:kv-store:lmdb'));
|
|
22
25
|
__classPrivateFieldSet(this, _AztecLmdbStore_rootDb, rootDb, "f");
|
|
23
26
|
// big bucket to store all the data
|
|
24
27
|
__classPrivateFieldSet(this, _AztecLmdbStore_data, rootDb.openDB('data', {
|
|
@@ -45,19 +48,26 @@ export class AztecLmdbStore {
|
|
|
45
48
|
* @returns The store
|
|
46
49
|
*/
|
|
47
50
|
static open(path, ephemeral = false, log = createDebugLogger('aztec:kv-store:lmdb')) {
|
|
48
|
-
log.
|
|
51
|
+
log.debug(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
52
|
+
if (path) {
|
|
53
|
+
mkdirSync(path, { recursive: true });
|
|
54
|
+
}
|
|
49
55
|
const rootDb = open({ path, noSync: ephemeral });
|
|
50
|
-
return new AztecLmdbStore(rootDb, ephemeral);
|
|
56
|
+
return new AztecLmdbStore(rootDb, ephemeral, path);
|
|
51
57
|
}
|
|
52
58
|
/**
|
|
53
59
|
* Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
|
|
54
60
|
* @returns A new AztecLmdbStore.
|
|
55
61
|
*/
|
|
56
62
|
async fork() {
|
|
57
|
-
const
|
|
63
|
+
const baseDir = this.path ? dirname(this.path) : tmpdir();
|
|
64
|
+
__classPrivateFieldGet(this, _AztecLmdbStore_log, "f").debug(`Forking store with basedir ${baseDir}`);
|
|
65
|
+
const forkPath = (await mkdtemp(join(baseDir, 'aztec-store-fork-'))) + (this.isEphemeral || !this.path ? '/data.mdb' : '');
|
|
66
|
+
__classPrivateFieldGet(this, _AztecLmdbStore_log, "f").verbose(`Forking store to ${forkPath}`);
|
|
58
67
|
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").backup(forkPath, false);
|
|
59
68
|
const forkDb = open(forkPath, { noSync: this.isEphemeral });
|
|
60
|
-
|
|
69
|
+
__classPrivateFieldGet(this, _AztecLmdbStore_log, "f").debug(`Forked store at ${forkPath} opened successfully`);
|
|
70
|
+
return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
|
|
61
71
|
}
|
|
62
72
|
/**
|
|
63
73
|
* Creates a new AztecMap in the store.
|
|
@@ -111,11 +121,27 @@ export class AztecLmdbStore {
|
|
|
111
121
|
return __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").transaction(callback);
|
|
112
122
|
}
|
|
113
123
|
/**
|
|
114
|
-
* Clears the store
|
|
124
|
+
* Clears all entries in the store
|
|
115
125
|
*/
|
|
116
126
|
async clear() {
|
|
117
127
|
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").clearAsync();
|
|
118
128
|
}
|
|
129
|
+
/** Deletes this store */
|
|
130
|
+
async delete() {
|
|
131
|
+
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").drop();
|
|
132
|
+
}
|
|
133
|
+
estimateSize() {
|
|
134
|
+
const stats = __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").getStats();
|
|
135
|
+
// `mapSize` represents to total amount of memory currently being used by the database.
|
|
136
|
+
// since the database is mmap'd, this is a good estimate of the size of the database for now.
|
|
137
|
+
// http://www.lmdb.tech/doc/group__mdb.html#a4bde3c8b676457342cba2fe27aed5fbd
|
|
138
|
+
if ('mapSize' in stats && typeof stats.mapSize === 'number') {
|
|
139
|
+
return { bytes: stats.mapSize };
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return { bytes: 0 };
|
|
143
|
+
}
|
|
144
|
+
}
|
|
119
145
|
}
|
|
120
|
-
_AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap();
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
146
|
+
_AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap(), _AztecLmdbStore_log = new WeakMap();
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQThDLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUXJDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQVksTUFBb0IsRUFBa0IsV0FBb0IsRUFBVSxJQUFhO1FBQTNDLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUztRQUw3Rix5Q0FBc0I7UUFDdEIsdUNBQThCO1FBQzlCLCtDQUFzQztRQUN0Qyw4QkFBTyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDO1FBRzlDLHVCQUFBLElBQUksMEJBQVcsTUFBTSxNQUFBLENBQUM7UUFFdEIsbUNBQW1DO1FBQ25DLHVCQUFBLElBQUksd0JBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakMsUUFBUSxF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
|
package/dest/utils.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { type AztecKVStore } from './interfaces/store.js';
|
|
|
4
4
|
import { AztecLmdbStore } from './lmdb/store.js';
|
|
5
5
|
export declare function createStore(config: {
|
|
6
6
|
dataDirectory: string | undefined;
|
|
7
|
-
}, rollupAddress: EthAddress, log?: Logger): Promise<AztecLmdbStore>;
|
|
7
|
+
} | (string | undefined), rollupAddress: EthAddress, log?: Logger): Promise<AztecLmdbStore>;
|
|
8
8
|
/**
|
|
9
9
|
* Clears the store if the rollup address does not match the one stored in the database.
|
|
10
10
|
* This is to prevent data from being accidentally shared between different rollup instances.
|
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,
|
|
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,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,EACpE,aAAa,EAAE,UAAU,EACzB,GAAG,GAAE,MAA4C,2BAKlD;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,CAmBZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,YAAY,CAErE"}
|
package/dest/utils.js
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
else {
|
|
8
|
-
log.info('Using ephemeral data directory');
|
|
9
|
-
}
|
|
10
|
-
return initStoreForRollup(AztecLmdbStore.open(config.dataDirectory, false), rollupAddress, log);
|
|
4
|
+
const dataDirectory = typeof config === 'string' ? config : config?.dataDirectory;
|
|
5
|
+
log.info(dataDirectory ? `Creating data store at directory ${dataDirectory}` : 'Creating ephemeral data store');
|
|
6
|
+
return initStoreForRollup(AztecLmdbStore.open(dataDirectory, false), rollupAddress, log);
|
|
11
7
|
}
|
|
12
8
|
/**
|
|
13
9
|
* Clears the store if the rollup address does not match the one stored in the database.
|
|
@@ -24,7 +20,10 @@ export async function initStoreForRollup(store, rollupAddress, log) {
|
|
|
24
20
|
const rollupAddressString = rollupAddress.toString();
|
|
25
21
|
const storedRollupAddressString = rollupAddressValue.get();
|
|
26
22
|
if (typeof storedRollupAddressString !== 'undefined' && storedRollupAddressString !== rollupAddressString) {
|
|
27
|
-
log?.warn(`Rollup address mismatch
|
|
23
|
+
log?.warn(`Rollup address mismatch. Clearing entire database...`, {
|
|
24
|
+
expected: rollupAddressString,
|
|
25
|
+
found: storedRollupAddressString,
|
|
26
|
+
});
|
|
28
27
|
await store.clear();
|
|
29
28
|
}
|
|
30
29
|
await rollupAddressValue.set(rollupAddressString);
|
|
@@ -38,4 +37,4 @@ export async function initStoreForRollup(store, rollupAddress, log) {
|
|
|
38
37
|
export function openTmpStore(ephemeral = false) {
|
|
39
38
|
return AztecLmdbStore.open(undefined, ephemeral);
|
|
40
39
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE1BQU0sVUFBVSxXQUFXLENBQ3pCLE1BQW9FLEVBQ3BFLGFBQXlCLEVBQ3pCLE1BQWMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUM7SUFFakQsTUFBTSxhQUFhLEdBQUcsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7SUFDbEYsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLG9DQUFvQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNoSCxPQUFPLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzRixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsS0FBUSxFQUNSLGFBQXlCLEVBQ3pCLEdBQVk7SUFFWixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFDRCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQXFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BHLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JELE1BQU0seUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFM0QsSUFBSSxPQUFPLHlCQUF5QixLQUFLLFdBQVcsSUFBSSx5QkFBeUIsS0FBSyxtQkFBbUIsRUFBRSxDQUFDO1FBQzFHLEdBQUcsRUFBRSxJQUFJLENBQUMsc0RBQXNELEVBQUU7WUFDaEUsUUFBUSxFQUFFLG1CQUFtQjtZQUM3QixLQUFLLEVBQUUseUJBQXlCO1NBQ2pDLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLFlBQXFCLEtBQUs7SUFDckQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuRCxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/kv-store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.50.1",
|
|
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.50.1",
|
|
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,14 @@ 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>;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Estimates the size of the store in bytes.
|
|
74
|
+
*/
|
|
75
|
+
estimateSize(): { bytes: number };
|
|
66
76
|
}
|
package/src/lmdb/store.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
2
|
|
|
3
|
+
import { mkdirSync } from 'fs';
|
|
3
4
|
import { mkdtemp } from 'fs/promises';
|
|
4
5
|
import { type Database, type Key, type RootDatabase, open } from 'lmdb';
|
|
5
6
|
import { tmpdir } from 'os';
|
|
6
|
-
import { join } from 'path';
|
|
7
|
+
import { dirname, join } from 'path';
|
|
7
8
|
|
|
8
9
|
import { type AztecArray } from '../interfaces/array.js';
|
|
9
10
|
import { type AztecCounter } from '../interfaces/counter.js';
|
|
@@ -24,8 +25,9 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
24
25
|
#rootDb: RootDatabase;
|
|
25
26
|
#data: Database<unknown, Key>;
|
|
26
27
|
#multiMapData: Database<unknown, Key>;
|
|
28
|
+
#log = createDebugLogger('aztec:kv-store:lmdb');
|
|
27
29
|
|
|
28
|
-
constructor(rootDb: RootDatabase, public readonly isEphemeral: boolean) {
|
|
30
|
+
constructor(rootDb: RootDatabase, public readonly isEphemeral: boolean, private path?: string) {
|
|
29
31
|
this.#rootDb = rootDb;
|
|
30
32
|
|
|
31
33
|
// big bucket to store all the data
|
|
@@ -59,9 +61,12 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
59
61
|
ephemeral: boolean = false,
|
|
60
62
|
log = createDebugLogger('aztec:kv-store:lmdb'),
|
|
61
63
|
): AztecLmdbStore {
|
|
62
|
-
log.
|
|
64
|
+
log.debug(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
65
|
+
if (path) {
|
|
66
|
+
mkdirSync(path, { recursive: true });
|
|
67
|
+
}
|
|
63
68
|
const rootDb = open({ path, noSync: ephemeral });
|
|
64
|
-
return new AztecLmdbStore(rootDb, ephemeral);
|
|
69
|
+
return new AztecLmdbStore(rootDb, ephemeral, path);
|
|
65
70
|
}
|
|
66
71
|
|
|
67
72
|
/**
|
|
@@ -69,10 +74,15 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
69
74
|
* @returns A new AztecLmdbStore.
|
|
70
75
|
*/
|
|
71
76
|
async fork() {
|
|
72
|
-
const
|
|
77
|
+
const baseDir = this.path ? dirname(this.path) : tmpdir();
|
|
78
|
+
this.#log.debug(`Forking store with basedir ${baseDir}`);
|
|
79
|
+
const forkPath =
|
|
80
|
+
(await mkdtemp(join(baseDir, 'aztec-store-fork-'))) + (this.isEphemeral || !this.path ? '/data.mdb' : '');
|
|
81
|
+
this.#log.verbose(`Forking store to ${forkPath}`);
|
|
73
82
|
await this.#rootDb.backup(forkPath, false);
|
|
74
83
|
const forkDb = open(forkPath, { noSync: this.isEphemeral });
|
|
75
|
-
|
|
84
|
+
this.#log.debug(`Forked store at ${forkPath} opened successfully`);
|
|
85
|
+
return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
|
|
76
86
|
}
|
|
77
87
|
|
|
78
88
|
/**
|
|
@@ -134,9 +144,26 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
134
144
|
}
|
|
135
145
|
|
|
136
146
|
/**
|
|
137
|
-
* Clears the store
|
|
147
|
+
* Clears all entries in the store
|
|
138
148
|
*/
|
|
139
149
|
async clear() {
|
|
140
150
|
await this.#rootDb.clearAsync();
|
|
141
151
|
}
|
|
152
|
+
|
|
153
|
+
/** Deletes this store */
|
|
154
|
+
async delete() {
|
|
155
|
+
await this.#rootDb.drop();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
estimateSize(): { bytes: number } {
|
|
159
|
+
const stats = this.#rootDb.getStats();
|
|
160
|
+
// `mapSize` represents to total amount of memory currently being used by the database.
|
|
161
|
+
// since the database is mmap'd, this is a good estimate of the size of the database for now.
|
|
162
|
+
// http://www.lmdb.tech/doc/group__mdb.html#a4bde3c8b676457342cba2fe27aed5fbd
|
|
163
|
+
if ('mapSize' in stats && typeof stats.mapSize === 'number') {
|
|
164
|
+
return { bytes: stats.mapSize };
|
|
165
|
+
} else {
|
|
166
|
+
return { bytes: 0 };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
142
169
|
}
|
package/src/utils.ts
CHANGED
|
@@ -5,17 +5,13 @@ import { type AztecKVStore } from './interfaces/store.js';
|
|
|
5
5
|
import { AztecLmdbStore } from './lmdb/store.js';
|
|
6
6
|
|
|
7
7
|
export function createStore(
|
|
8
|
-
config: { dataDirectory: string | undefined },
|
|
8
|
+
config: { dataDirectory: string | undefined } | (string | undefined),
|
|
9
9
|
rollupAddress: EthAddress,
|
|
10
10
|
log: Logger = createDebugLogger('aztec:kv-store'),
|
|
11
11
|
) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
log.info('Using ephemeral data directory');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return initStoreForRollup(AztecLmdbStore.open(config.dataDirectory, false), rollupAddress, log);
|
|
12
|
+
const dataDirectory = typeof config === 'string' ? config : config?.dataDirectory;
|
|
13
|
+
log.info(dataDirectory ? `Creating data store at directory ${dataDirectory}` : 'Creating ephemeral data store');
|
|
14
|
+
return initStoreForRollup(AztecLmdbStore.open(dataDirectory, false), rollupAddress, log);
|
|
19
15
|
}
|
|
20
16
|
|
|
21
17
|
/**
|
|
@@ -38,9 +34,10 @@ export async function initStoreForRollup<T extends AztecKVStore>(
|
|
|
38
34
|
const storedRollupAddressString = rollupAddressValue.get();
|
|
39
35
|
|
|
40
36
|
if (typeof storedRollupAddressString !== 'undefined' && storedRollupAddressString !== rollupAddressString) {
|
|
41
|
-
log?.warn(
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
log?.warn(`Rollup address mismatch. Clearing entire database...`, {
|
|
38
|
+
expected: rollupAddressString,
|
|
39
|
+
found: storedRollupAddressString,
|
|
40
|
+
});
|
|
44
41
|
|
|
45
42
|
await store.clear();
|
|
46
43
|
}
|