@aztec/kv-store 0.49.2 → 0.51.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 +6 -0
- package/dest/interfaces/store.d.ts.map +1 -1
- package/dest/lmdb/store.d.ts +3 -0
- package/dest/lmdb/store.d.ts.map +1 -1
- package/dest/lmdb/store.js +18 -2
- 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 +5 -0
- package/src/lmdb/store.ts +17 -1
- package/src/utils.ts +8 -11
|
@@ -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;IAE9B;;OAEG;IACH,MAAM,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;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
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,6 +1,7 @@
|
|
|
1
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';
|
|
@@ -47,7 +48,10 @@ export class AztecLmdbStore {
|
|
|
47
48
|
* @returns The store
|
|
48
49
|
*/
|
|
49
50
|
static open(path, ephemeral = false, log = createDebugLogger('aztec:kv-store:lmdb')) {
|
|
50
|
-
log.
|
|
51
|
+
log.debug(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
52
|
+
if (path) {
|
|
53
|
+
mkdirSync(path, { recursive: true });
|
|
54
|
+
}
|
|
51
55
|
const rootDb = open({ path, noSync: ephemeral });
|
|
52
56
|
return new AztecLmdbStore(rootDb, ephemeral, path);
|
|
53
57
|
}
|
|
@@ -126,6 +130,18 @@ export class AztecLmdbStore {
|
|
|
126
130
|
async delete() {
|
|
127
131
|
await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").drop();
|
|
128
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
|
+
}
|
|
129
145
|
}
|
|
130
146
|
_AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap(), _AztecLmdbStore_log = new WeakMap();
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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.51.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.51.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,5 +1,6 @@
|
|
|
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';
|
|
@@ -60,7 +61,10 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
60
61
|
ephemeral: boolean = false,
|
|
61
62
|
log = createDebugLogger('aztec:kv-store:lmdb'),
|
|
62
63
|
): AztecLmdbStore {
|
|
63
|
-
log.
|
|
64
|
+
log.debug(`Opening LMDB database at ${path || 'temporary location'}`);
|
|
65
|
+
if (path) {
|
|
66
|
+
mkdirSync(path, { recursive: true });
|
|
67
|
+
}
|
|
64
68
|
const rootDb = open({ path, noSync: ephemeral });
|
|
65
69
|
return new AztecLmdbStore(rootDb, ephemeral, path);
|
|
66
70
|
}
|
|
@@ -150,4 +154,16 @@ export class AztecLmdbStore implements AztecKVStore {
|
|
|
150
154
|
async delete() {
|
|
151
155
|
await this.#rootDb.drop();
|
|
152
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
|
+
}
|
|
153
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
|
}
|