@aztec/kv-store 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.76.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.
Files changed (122) hide show
  1. package/dest/config.d.ts +17 -0
  2. package/dest/config.d.ts.map +1 -0
  3. package/dest/config.js +7 -5
  4. package/dest/indexeddb/array.d.ts +21 -0
  5. package/dest/indexeddb/array.d.ts.map +1 -0
  6. package/dest/indexeddb/array.js +36 -44
  7. package/dest/indexeddb/index.d.ts +7 -0
  8. package/dest/indexeddb/index.d.ts.map +1 -0
  9. package/dest/indexeddb/index.js +4 -1
  10. package/dest/indexeddb/map.d.ts +26 -0
  11. package/dest/indexeddb/map.d.ts.map +1 -0
  12. package/dest/indexeddb/map.js +43 -72
  13. package/dest/indexeddb/set.d.ts +17 -0
  14. package/dest/indexeddb/set.d.ts.map +1 -0
  15. package/dest/indexeddb/set.js +4 -3
  16. package/dest/indexeddb/singleton.d.ts +16 -0
  17. package/dest/indexeddb/singleton.d.ts.map +1 -0
  18. package/dest/indexeddb/singleton.js +22 -17
  19. package/dest/indexeddb/store.d.ts +97 -0
  20. package/dest/indexeddb/store.d.ts.map +1 -0
  21. package/dest/indexeddb/store.js +93 -97
  22. package/dest/interfaces/array.d.ts +80 -0
  23. package/dest/interfaces/array.d.ts.map +1 -0
  24. package/dest/interfaces/array.js +2 -3
  25. package/dest/interfaces/array_test_suite.d.ts +3 -0
  26. package/dest/interfaces/array_test_suite.d.ts.map +1 -0
  27. package/dest/interfaces/array_test_suite.js +25 -29
  28. package/dest/interfaces/common.d.ts +23 -0
  29. package/dest/interfaces/common.d.ts.map +1 -0
  30. package/dest/interfaces/common.js +2 -3
  31. package/dest/interfaces/counter.d.ts +59 -0
  32. package/dest/interfaces/counter.d.ts.map +1 -0
  33. package/dest/interfaces/counter.js +2 -1
  34. package/dest/interfaces/index.d.ts +8 -0
  35. package/dest/interfaces/index.d.ts.map +1 -0
  36. package/dest/interfaces/index.js +1 -0
  37. package/dest/interfaces/map.d.ts +134 -0
  38. package/dest/interfaces/map.d.ts.map +1 -0
  39. package/dest/interfaces/map.js +2 -3
  40. package/dest/interfaces/map_test_suite.d.ts +3 -0
  41. package/dest/interfaces/map_test_suite.d.ts.map +1 -0
  42. package/dest/interfaces/map_test_suite.js +42 -87
  43. package/dest/interfaces/set.d.ts +44 -0
  44. package/dest/interfaces/set.d.ts.map +1 -0
  45. package/dest/interfaces/set.js +2 -1
  46. package/dest/interfaces/set_test_suite.d.ts +3 -0
  47. package/dest/interfaces/set_test_suite.d.ts.map +1 -0
  48. package/dest/interfaces/set_test_suite.js +22 -59
  49. package/dest/interfaces/singleton.d.ts +29 -0
  50. package/dest/interfaces/singleton.d.ts.map +1 -0
  51. package/dest/interfaces/singleton.js +2 -4
  52. package/dest/interfaces/singleton_test_suite.d.ts +3 -0
  53. package/dest/interfaces/singleton_test_suite.d.ts.map +1 -0
  54. package/dest/interfaces/singleton_test_suite.js +10 -7
  55. package/dest/interfaces/store.d.ts +145 -0
  56. package/dest/interfaces/store.d.ts.map +1 -0
  57. package/dest/interfaces/store.js +2 -1
  58. package/dest/interfaces/store_test_suite.d.ts +3 -0
  59. package/dest/interfaces/store_test_suite.d.ts.map +1 -0
  60. package/dest/interfaces/store_test_suite.js +9 -6
  61. package/dest/interfaces/utils.d.ts +16 -0
  62. package/dest/interfaces/utils.d.ts.map +1 -0
  63. package/dest/interfaces/utils.js +15 -12
  64. package/dest/lmdb/array.d.ts +23 -0
  65. package/dest/lmdb/array.d.ts.map +1 -0
  66. package/dest/lmdb/array.js +41 -46
  67. package/dest/lmdb/counter.d.ts +19 -0
  68. package/dest/lmdb/counter.d.ts.map +1 -0
  69. package/dest/lmdb/counter.js +24 -18
  70. package/dest/lmdb/index.d.ts +12 -0
  71. package/dest/lmdb/index.d.ts.map +1 -0
  72. package/dest/lmdb/index.js +6 -2
  73. package/dest/lmdb/map.d.ts +52 -0
  74. package/dest/lmdb/map.d.ts.map +1 -0
  75. package/dest/lmdb/map.js +68 -90
  76. package/dest/lmdb/set.d.ts +18 -0
  77. package/dest/lmdb/set.d.ts.map +1 -0
  78. package/dest/lmdb/set.js +5 -4
  79. package/dest/lmdb/singleton.d.ts +14 -0
  80. package/dest/lmdb/singleton.d.ts.map +1 -0
  81. package/dest/lmdb/singleton.js +14 -13
  82. package/dest/lmdb/store.d.ts +110 -0
  83. package/dest/lmdb/store.d.ts.map +1 -0
  84. package/dest/lmdb/store.js +134 -124
  85. package/dest/lmdb-v2/factory.d.ts +9 -0
  86. package/dest/lmdb-v2/factory.d.ts.map +1 -0
  87. package/dest/lmdb-v2/factory.js +19 -22
  88. package/dest/lmdb-v2/index.d.ts +3 -0
  89. package/dest/lmdb-v2/index.d.ts.map +1 -0
  90. package/dest/lmdb-v2/index.js +1 -0
  91. package/dest/lmdb-v2/map.d.ts +86 -0
  92. package/dest/lmdb-v2/map.d.ts.map +1 -0
  93. package/dest/lmdb-v2/map.js +85 -82
  94. package/dest/lmdb-v2/message.d.ts +112 -0
  95. package/dest/lmdb-v2/message.d.ts.map +1 -0
  96. package/dest/lmdb-v2/message.js +7 -6
  97. package/dest/lmdb-v2/read_transaction.d.ts +14 -0
  98. package/dest/lmdb-v2/read_transaction.d.ts.map +1 -0
  99. package/dest/lmdb-v2/read_transaction.js +53 -65
  100. package/dest/lmdb-v2/singleton.d.ts +12 -0
  101. package/dest/lmdb-v2/singleton.d.ts.map +1 -0
  102. package/dest/lmdb-v2/singleton.js +5 -7
  103. package/dest/lmdb-v2/store.d.ts +43 -0
  104. package/dest/lmdb-v2/store.d.ts.map +1 -0
  105. package/dest/lmdb-v2/store.js +26 -27
  106. package/dest/lmdb-v2/utils.d.ts +19 -0
  107. package/dest/lmdb-v2/utils.d.ts.map +1 -0
  108. package/dest/lmdb-v2/utils.js +30 -30
  109. package/dest/lmdb-v2/write_transaction.d.ts +19 -0
  110. package/dest/lmdb-v2/write_transaction.d.ts.map +1 -0
  111. package/dest/lmdb-v2/write_transaction.js +110 -130
  112. package/dest/stores/index.d.ts +2 -0
  113. package/dest/stores/index.d.ts.map +1 -0
  114. package/dest/stores/index.js +1 -0
  115. package/dest/stores/l2_tips_store.d.ts +13 -0
  116. package/dest/stores/l2_tips_store.d.ts.map +1 -0
  117. package/dest/stores/l2_tips_store.js +12 -26
  118. package/dest/utils.d.ts +12 -0
  119. package/dest/utils.d.ts.map +1 -0
  120. package/dest/utils.js +7 -3
  121. package/package.json +6 -6
  122. package/src/interfaces/index.ts +1 -1
@@ -0,0 +1,110 @@
1
+ import { type RootDatabase } from 'lmdb';
2
+ import { type AztecArray, type AztecAsyncArray } from '../interfaces/array.js';
3
+ import { type Key, type StoreSize } from '../interfaces/common.js';
4
+ import { type AztecAsyncCounter, type AztecCounter } from '../interfaces/counter.js';
5
+ import { type AztecAsyncMap, type AztecAsyncMultiMap, type AztecMap, type AztecMapWithSize, type AztecMultiMap, type AztecMultiMapWithSize } from '../interfaces/map.js';
6
+ import { type AztecAsyncSet, type AztecSet } from '../interfaces/set.js';
7
+ import { type AztecAsyncSingleton, type AztecSingleton } from '../interfaces/singleton.js';
8
+ import { type AztecAsyncKVStore, type AztecKVStore } from '../interfaces/store.js';
9
+ /**
10
+ * A key-value store backed by LMDB.
11
+ */
12
+ export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
13
+ #private;
14
+ readonly isEphemeral: boolean;
15
+ private path;
16
+ syncGetters: true;
17
+ constructor(rootDb: RootDatabase, isEphemeral: boolean, path: string);
18
+ /**
19
+ * Creates a new AztecKVStore backed by LMDB. The path to the database is optional. If not provided,
20
+ * the database will be stored in a temporary location and be deleted when the process exists.
21
+ *
22
+ * The `rollupAddress` passed is checked against what is stored in the database. If they do not match,
23
+ * the database is cleared before returning the store. This way data is not accidentally shared between
24
+ * different rollup instances.
25
+ *
26
+ * @param path - A path on the disk to store the database. Optional
27
+ * @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
28
+ * @param log - A logger to use. Optional
29
+ * @returns The store
30
+ */
31
+ static open(path?: string, mapSizeKb?: number, // defaults to 1 GB map size
32
+ ephemeral?: boolean, log?: import("@aztec/foundation/log").Logger): AztecLmdbStore;
33
+ /**
34
+ * Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
35
+ * @returns A new AztecLmdbStore.
36
+ */
37
+ fork(): Promise<AztecLmdbStore>;
38
+ /**
39
+ * Creates a new AztecMap in the store.
40
+ * @param name - Name of the map
41
+ * @returns A new AztecMap
42
+ */
43
+ openMap<K extends Key, V>(name: string): AztecMap<K, V> & AztecAsyncMap<K, V>;
44
+ /**
45
+ * Creates a new AztecSet in the store.
46
+ * @param name - Name of the set
47
+ * @returns A new AztecSet
48
+ */
49
+ openSet<K extends Key>(name: string): AztecSet<K> & AztecAsyncSet<K>;
50
+ /**
51
+ * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
52
+ * @param name - Name of the map
53
+ * @returns A new AztecMultiMap
54
+ */
55
+ openMultiMap<K extends Key, V>(name: string): AztecMultiMap<K, V> & AztecAsyncMultiMap<K, V>;
56
+ openCounter<K extends Key>(name: string): AztecCounter<K> & AztecAsyncCounter<K>;
57
+ /**
58
+ * Creates a new AztecMultiMapWithSize in the store. A multi-map with size stores multiple values for a single key automatically.
59
+ * @param name - Name of the map
60
+ * @returns A new AztecMultiMapWithSize
61
+ */
62
+ openMultiMapWithSize<K extends Key, V>(name: string): AztecMultiMapWithSize<K, V>;
63
+ /**
64
+ * Creates a new AztecMapWithSize in the store.
65
+ * @param name - Name of the map
66
+ * @returns A new AztecMapWithSize
67
+ */
68
+ openMapWithSize<K extends Key, V>(name: string): AztecMapWithSize<K, V>;
69
+ /**
70
+ * Creates a new AztecArray in the store.
71
+ * @param name - Name of the array
72
+ * @returns A new AztecArray
73
+ */
74
+ openArray<T>(name: string): AztecArray<T> & AztecAsyncArray<T>;
75
+ /**
76
+ * Creates a new AztecSingleton in the store.
77
+ * @param name - Name of the singleton
78
+ * @returns A new AztecSingleton
79
+ */
80
+ openSingleton<T>(name: string): AztecSingleton<T> & AztecAsyncSingleton<T>;
81
+ /**
82
+ * Runs a callback in a transaction.
83
+ * @param callback - Function to execute in a transaction
84
+ * @returns A promise that resolves to the return value of the callback
85
+ */
86
+ transaction<T>(callback: () => T): Promise<T>;
87
+ /**
88
+ * Runs a callback in a transaction.
89
+ * @param callback - Function to execute in a transaction
90
+ * @returns A promise that resolves to the return value of the callback
91
+ */
92
+ transactionAsync<T>(callback: () => Promise<T>): Promise<T>;
93
+ /**
94
+ * Clears all entries in the store & sub DBs.
95
+ */
96
+ clear(): Promise<void>;
97
+ /**
98
+ * Drops the database & sub DBs.
99
+ */
100
+ drop(): Promise<void>;
101
+ /**
102
+ * Close the database. Note, once this is closed we can no longer interact with the DB.
103
+ */
104
+ close(): Promise<void>;
105
+ /** Deletes this store and removes the database files from disk */
106
+ delete(): Promise<void>;
107
+ estimateSize(): Promise<StoreSize>;
108
+ private estimateSubDBSize;
109
+ }
110
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ var _AztecLmdbStore_rootDb, _AztecLmdbStore_data, _AztecLmdbStore_multiMapData, _AztecLmdbStore_log;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { randomBytes } from '@aztec/foundation/crypto';
2
4
  import { createLogger } from '@aztec/foundation/log';
3
5
  import { promises as fs, mkdirSync } from 'fs';
@@ -11,184 +13,186 @@ import { LmdbAztecSet } from './set.js';
11
13
  import { LmdbAztecSingleton } from './singleton.js';
12
14
  /**
13
15
  * A key-value store backed by LMDB.
14
- */ export class AztecLmdbStore {
15
- isEphemeral;
16
- path;
17
- syncGetters;
18
- #rootDb;
19
- #data;
20
- #multiMapData;
21
- #log;
22
- constructor(rootDb, isEphemeral, path){
16
+ */
17
+ export class AztecLmdbStore {
18
+ constructor(rootDb, isEphemeral, path) {
23
19
  this.isEphemeral = isEphemeral;
24
20
  this.path = path;
25
21
  this.syncGetters = true;
26
- this.#log = createLogger('kv-store:lmdb');
27
- this.#rootDb = rootDb;
22
+ _AztecLmdbStore_rootDb.set(this, void 0);
23
+ _AztecLmdbStore_data.set(this, void 0);
24
+ _AztecLmdbStore_multiMapData.set(this, void 0);
25
+ _AztecLmdbStore_log.set(this, createLogger('kv-store:lmdb'));
26
+ __classPrivateFieldSet(this, _AztecLmdbStore_rootDb, rootDb, "f");
28
27
  // big bucket to store all the data
29
- this.#data = rootDb.openDB('data', {
28
+ __classPrivateFieldSet(this, _AztecLmdbStore_data, rootDb.openDB('data', {
30
29
  encoding: 'msgpack',
31
- keyEncoding: 'ordered-binary'
32
- });
33
- this.#multiMapData = rootDb.openDB('data_dup_sort', {
30
+ keyEncoding: 'ordered-binary',
31
+ }), "f");
32
+ __classPrivateFieldSet(this, _AztecLmdbStore_multiMapData, rootDb.openDB('data_dup_sort', {
34
33
  encoding: 'ordered-binary',
35
34
  keyEncoding: 'ordered-binary',
36
- dupSort: true
37
- });
35
+ dupSort: true,
36
+ }), "f");
38
37
  }
39
38
  /**
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')) {
39
+ * Creates a new AztecKVStore backed by LMDB. The path to the database is optional. If not provided,
40
+ * the database will be stored in a temporary location and be deleted when the process exists.
41
+ *
42
+ * The `rollupAddress` passed is checked against what is stored in the database. If they do not match,
43
+ * the database is cleared before returning the store. This way data is not accidentally shared between
44
+ * different rollup instances.
45
+ *
46
+ * @param path - A path on the disk to store the database. Optional
47
+ * @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
48
+ * @param log - A logger to use. Optional
49
+ * @returns The store
50
+ */
51
+ static open(path, mapSizeKb = 1 * 1024 * 1024, // defaults to 1 GB map size
52
+ ephemeral = false, log = createLogger('kv-store:lmdb')) {
52
53
  const dbPath = path ?? join(tmpdir(), randomBytes(8).toString('hex'));
53
- mkdirSync(dbPath, {
54
- recursive: true
55
- });
54
+ mkdirSync(dbPath, { recursive: true });
56
55
  const mapSize = 1024 * mapSizeKb;
57
56
  log.debug(`Opening LMDB database at ${path || 'temporary location'} with map size ${mapSize}`);
58
- const rootDb = open({
59
- path: dbPath,
60
- noSync: ephemeral,
61
- mapSize
62
- });
57
+ const rootDb = open({ path: dbPath, noSync: ephemeral, mapSize });
63
58
  return new AztecLmdbStore(rootDb, ephemeral, dbPath);
64
59
  }
65
60
  /**
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() {
61
+ * Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
62
+ * @returns A new AztecLmdbStore.
63
+ */
64
+ async fork() {
69
65
  const baseDir = this.path;
70
- this.#log.debug(`Forking store with basedir ${baseDir}`);
66
+ __classPrivateFieldGet(this, _AztecLmdbStore_log, "f").debug(`Forking store with basedir ${baseDir}`);
71
67
  const forkPath = await fs.mkdtemp(join(baseDir, 'aztec-store-fork-'));
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`);
68
+ __classPrivateFieldGet(this, _AztecLmdbStore_log, "f").verbose(`Forking store to ${forkPath}`);
69
+ await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").backup(forkPath, false);
70
+ const forkDb = open(forkPath, { noSync: this.isEphemeral });
71
+ __classPrivateFieldGet(this, _AztecLmdbStore_log, "f").debug(`Forked store at ${forkPath} opened successfully`);
78
72
  return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
79
73
  }
80
74
  /**
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);
75
+ * Creates a new AztecMap in the store.
76
+ * @param name - Name of the map
77
+ * @returns A new AztecMap
78
+ */
79
+ openMap(name) {
80
+ return new LmdbAztecMap(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
86
81
  }
87
82
  /**
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);
83
+ * Creates a new AztecSet in the store.
84
+ * @param name - Name of the set
85
+ * @returns A new AztecSet
86
+ */
87
+ openSet(name) {
88
+ return new LmdbAztecSet(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
93
89
  }
94
90
  /**
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);
91
+ * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
92
+ * @param name - Name of the map
93
+ * @returns A new AztecMultiMap
94
+ */
95
+ openMultiMap(name) {
96
+ return new LmdbAztecMap(__classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f"), name);
100
97
  }
101
98
  openCounter(name) {
102
- return new LmdbAztecCounter(this.#data, name);
99
+ return new LmdbAztecCounter(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
103
100
  }
104
101
  /**
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);
102
+ * Creates a new AztecMultiMapWithSize in the store. A multi-map with size stores multiple values for a single key automatically.
103
+ * @param name - Name of the map
104
+ * @returns A new AztecMultiMapWithSize
105
+ */
106
+ openMultiMapWithSize(name) {
107
+ return new LmdbAztecMapWithSize(__classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f"), name);
110
108
  }
111
109
  /**
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);
110
+ * Creates a new AztecMapWithSize in the store.
111
+ * @param name - Name of the map
112
+ * @returns A new AztecMapWithSize
113
+ */
114
+ openMapWithSize(name) {
115
+ return new LmdbAztecMapWithSize(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
117
116
  }
118
117
  /**
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);
118
+ * Creates a new AztecArray in the store.
119
+ * @param name - Name of the array
120
+ * @returns A new AztecArray
121
+ */
122
+ openArray(name) {
123
+ return new LmdbAztecArray(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
124
124
  }
125
125
  /**
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);
126
+ * Creates a new AztecSingleton in the store.
127
+ * @param name - Name of the singleton
128
+ * @returns A new AztecSingleton
129
+ */
130
+ openSingleton(name) {
131
+ return new LmdbAztecSingleton(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
131
132
  }
132
133
  /**
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);
134
+ * Runs a callback in a transaction.
135
+ * @param callback - Function to execute in a transaction
136
+ * @returns A promise that resolves to the return value of the callback
137
+ */
138
+ transaction(callback) {
139
+ return __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").transaction(callback);
138
140
  }
139
141
  /**
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);
142
+ * Runs a callback in a transaction.
143
+ * @param callback - Function to execute in a transaction
144
+ * @returns A promise that resolves to the return value of the callback
145
+ */
146
+ async transactionAsync(callback) {
147
+ return await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").transaction(callback);
145
148
  }
146
149
  /**
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();
150
+ * Clears all entries in the store & sub DBs.
151
+ */
152
+ async clear() {
153
+ await __classPrivateFieldGet(this, _AztecLmdbStore_data, "f").clearAsync();
154
+ await __classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f").clearAsync();
155
+ await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").clearAsync();
152
156
  }
153
157
  /**
154
- * Drops the database & sub DBs.
155
- */ async drop() {
156
- await this.#data.drop();
157
- await this.#multiMapData.drop();
158
- await this.#rootDb.drop();
158
+ * Drops the database & sub DBs.
159
+ */
160
+ async drop() {
161
+ await __classPrivateFieldGet(this, _AztecLmdbStore_data, "f").drop();
162
+ await __classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f").drop();
163
+ await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").drop();
159
164
  }
160
165
  /**
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() {
166
+ * Close the database. Note, once this is closed we can no longer interact with the DB.
167
+ */
168
+ async close() {
169
+ await __classPrivateFieldGet(this, _AztecLmdbStore_data, "f").close();
170
+ await __classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f").close();
171
+ await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").close();
172
+ }
173
+ /** Deletes this store and removes the database files from disk */
174
+ async delete() {
168
175
  await this.drop();
169
176
  await this.close();
170
177
  if (this.path) {
171
- await fs.rm(this.path, {
172
- recursive: true,
173
- force: true
174
- });
175
- this.#log.verbose(`Deleted database files at ${this.path}`);
178
+ await fs.rm(this.path, { recursive: true, force: true });
179
+ __classPrivateFieldGet(this, _AztecLmdbStore_log, "f").verbose(`Deleted database files at ${this.path}`);
176
180
  }
177
181
  }
178
182
  estimateSize() {
179
- const stats = this.#rootDb.getStats();
183
+ const stats = __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").getStats();
180
184
  // The 'mapSize' is the total amount of virtual address space allocated to the DB (effectively the maximum possible size)
181
185
  // http://www.lmdb.tech/doc/group__mdb.html#a4bde3c8b676457342cba2fe27aed5fbd
182
186
  let mapSize = 0;
183
187
  if ('mapSize' in stats && typeof stats.mapSize === 'number') {
184
188
  mapSize = stats.mapSize;
185
189
  }
186
- const dataResult = this.estimateSubDBSize(this.#data);
187
- const multiResult = this.estimateSubDBSize(this.#multiMapData);
190
+ const dataResult = this.estimateSubDBSize(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"));
191
+ const multiResult = this.estimateSubDBSize(__classPrivateFieldGet(this, _AztecLmdbStore_multiMapData, "f"));
188
192
  return Promise.resolve({
189
193
  mappingSize: mapSize,
190
194
  actualSize: dataResult.actualSize + multiResult.actualSize,
191
- numItems: dataResult.numItems + multiResult.numItems
195
+ numItems: dataResult.numItems + multiResult.numItems,
192
196
  });
193
197
  }
194
198
  estimateSubDBSize(db) {
@@ -200,16 +204,22 @@ import { LmdbAztecSingleton } from './singleton.js';
200
204
  numItems = stats.entryCount;
201
205
  }
202
206
  // The closest value we can get to the actual size of the database is the number of consumed pages * the page size
203
- 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') {
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
215
  const branchPages = stats.treeBranchPageCount;
205
216
  const leafPages = stats.treeLeafPageCount;
206
217
  const overflowPages = stats.overflowPages;
207
218
  const pageSize = stats.pageSize;
208
219
  actualSize = (branchPages + leafPages + overflowPages) * pageSize;
209
220
  }
210
- return {
211
- actualSize,
212
- numItems
213
- };
221
+ return { actualSize, numItems };
214
222
  }
215
223
  }
224
+ _AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap(), _AztecLmdbStore_log = new WeakMap();
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQy9DLE9BQU8sRUFBb0MsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWdCNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBWSxNQUFvQixFQUFrQixXQUFvQixFQUFVLElBQVk7UUFBMUMsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBUDVGLGdCQUFXLEdBQUcsSUFBYSxDQUFDO1FBRTVCLHlDQUFzQjtRQUN0Qix1Q0FBOEI7UUFDOUIsK0NBQXNDO1FBQ3RDLDhCQUFPLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBQztRQUduQyx1QkFBQSxJQUFJLDBCQUFXLE1BQU0sTUFBQSxDQUFDO1FBRXRCLG1DQUFtQztRQUNuQyx1QkFBQSxJQUFJLHdCQUFTLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pDLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFdBQVcsRUFBRSxnQkFBZ0I7U0FDOUIsQ0FBQyxNQUFBLENBQUM7UUFFSCx1QkFBQSxJQUFJLGdDQUFpQixNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtZQUNsRCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFdBQVcsRUFBRSxnQkFBZ0I7WUFDN0IsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLE1BQUEsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUNULElBQWEsRUFDYixTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsNEJBQTRCO0lBQ3pELFlBQXFCLEtBQUssRUFDMUIsR0FBRyxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFFbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdEUsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxTQUFTLENBQUM7UUFDakMsR0FBRyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLG9CQUFvQixrQkFBa0IsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsRSxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJO1FBQ1IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxQix1QkFBQSxJQUFJLDJCQUFLLENBQUMsS0FBSyxDQUFDLDhCQUE4QixPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUN0RSx1QkFBQSxJQUFJLDJCQUFLLENBQUMsT0FBTyxDQUFDLG9CQUFvQixRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sdUJBQUEsSUFBSSw4QkFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM1RCx1QkFBQSxJQUFJLDJCQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixRQUFRLHNCQUFzQixDQUFDLENBQUM7UUFDbkUsT0FBTyxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBbUIsSUFBWTtRQUNwQyxPQUFPLElBQUksWUFBWSxDQUFDLHVCQUFBLElBQUksNEJBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBZ0IsSUFBWTtRQUNqQyxPQUFPLElBQUksWUFBWSxDQUFDLHVCQUFBLElBQUksNEJBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBbUIsSUFBWTtRQUN6QyxPQUFPLElBQUksWUFBWSxDQUFDLHVCQUFBLElBQUksb0NBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFnQixJQUFZO1FBQ3JDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyx1QkFBQSxJQUFJLDRCQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBbUIsSUFBWTtRQUNqRCxPQUFPLElBQUksb0JBQW9CLENBQUMsdUJBQUEsSUFBSSxvQ0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFtQixJQUFZO1FBQzVDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyx1QkFBQSxJQUFJLDRCQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUksSUFBWTtRQUN2QixPQUFPLElBQUksY0FBYyxDQUFDLHVCQUFBLElBQUksNEJBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBSSxJQUFZO1FBQzNCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyx1QkFBQSxJQUFJLDRCQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUksUUFBaUI7UUFDOUIsT0FBTyx1QkFBQSxJQUFJLDhCQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFJLFFBQTBCO1FBQ2xELE9BQU8sTUFBTSx1QkFBQSxJQUFJLDhCQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsTUFBTSx1QkFBQSxJQUFJLDRCQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUIsTUFBTSx1QkFBQSxJQUFJLG9DQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsTUFBTSx1QkFBQSxJQUFJLDhCQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLHVCQUFBLElBQUksNEJBQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixNQUFNLHVCQUFBLElBQUksb0NBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxNQUFNLHVCQUFBLElBQUksOEJBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sdUJBQUEsSUFBSSw0QkFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sdUJBQUEsSUFBSSxvQ0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pDLE1BQU0sdUJBQUEsSUFBSSw4QkFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN6RCx1QkFBQSxJQUFJLDJCQUFLLENBQUMsT0FBTyxDQUFDLDZCQUE2QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLEtBQUssR0FBRyx1QkFBQSxJQUFJLDhCQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEMseUhBQXlIO1FBQ3pILDZFQUE2RTtRQUM3RSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1RCxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUMxQixDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUFBLElBQUksNEJBQU0sQ0FBQyxDQUFDO1FBQ3RELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBQSxJQUFJLG9DQUFjLENBQUMsQ0FBQztRQUMvRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDckIsV0FBVyxFQUFFLE9BQU87WUFDcEIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVU7WUFDMUQsUUFBUSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVE7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEVBQTBCO1FBQ2xELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLGdFQUFnRTtRQUNoRSxJQUFJLFlBQVksSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xFLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzlCLENBQUM7UUFDRCxrSEFBa0g7UUFDbEgsSUFDRSxxQkFBcUIsSUFBSSxLQUFLO1lBQzlCLE9BQU8sS0FBSyxDQUFDLG1CQUFtQixLQUFLLFFBQVE7WUFDN0MsbUJBQW1CLElBQUksS0FBSztZQUM1QixPQUFPLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxRQUFRO1lBQzNDLGVBQWUsSUFBSSxLQUFLO1lBQ3hCLE9BQU8sS0FBSyxDQUFDLGFBQWEsS0FBSyxRQUFRO1lBQ3ZDLFVBQVUsSUFBSSxLQUFLO1lBQ25CLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQ2xDLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDOUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQzFDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7WUFDMUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNoQyxVQUFVLEdBQUcsQ0FBQyxXQUFXLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,9 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { type DataStoreConfig } from '../config.js';
3
+ import { AztecLMDBStoreV2 } from './store.js';
4
+ export declare function createStore(name: string, config: DataStoreConfig, log?: Logger): Promise<AztecLMDBStoreV2>;
5
+ export declare function openTmpStore(name: string, ephemeral?: boolean, dbMapSizeKb?: number, // 10GB
6
+ maxReaders?: number, log?: Logger): Promise<AztecLMDBStoreV2>;
7
+ export declare function openStoreAt(dataDir: string, dbMapSizeKb?: number, // 10GB
8
+ maxReaders?: number, log?: Logger): Promise<AztecLMDBStoreV2>;
9
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +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,KAAK,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,CAe3B;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"}
@@ -11,54 +11,51 @@ export async function createStore(name, config, log = createLogger('kv-store:lmd
11
11
  let store;
12
12
  if (typeof dataDirectory !== 'undefined') {
13
13
  const subDir = join(dataDirectory, name);
14
- await mkdir(subDir, {
15
- recursive: true
16
- });
14
+ await mkdir(subDir, { recursive: true });
17
15
  if (l1Contracts) {
18
16
  const { rollupAddress } = l1Contracts;
19
- const localRollupAddress = await readFile(join(subDir, ROLLUP_ADDRESS_FILE), 'utf-8').then(EthAddress.fromString).catch(()=>EthAddress.ZERO);
17
+ const localRollupAddress = await readFile(join(subDir, ROLLUP_ADDRESS_FILE), 'utf-8')
18
+ .then(EthAddress.fromString)
19
+ .catch(() => EthAddress.ZERO);
20
20
  if (!localRollupAddress.equals(rollupAddress)) {
21
21
  if (!localRollupAddress.isZero()) {
22
22
  log.warn(`Rollup address mismatch. Clearing entire database...`, {
23
23
  expected: rollupAddress,
24
- found: localRollupAddress
25
- });
26
- await rm(subDir, {
27
- recursive: true,
28
- force: true
29
- });
30
- await mkdir(subDir, {
31
- recursive: true
24
+ found: localRollupAddress,
32
25
  });
26
+ await rm(subDir, { recursive: true, force: true });
27
+ await mkdir(subDir, { recursive: true });
33
28
  }
34
29
  await writeFile(join(subDir, ROLLUP_ADDRESS_FILE), rollupAddress.toString());
35
30
  }
36
31
  }
37
32
  log.info(`Creating ${name} data store at directory ${subDir} with map size ${config.dataStoreMapSizeKB} KB (LMDB v2)`);
38
- store = await AztecLMDBStoreV2.new(subDir, config.dataStoreMapSizeKB, MAX_READERS, ()=>Promise.resolve(), log);
39
- } else {
33
+ store = await AztecLMDBStoreV2.new(subDir, config.dataStoreMapSizeKB, MAX_READERS, () => Promise.resolve(), log);
34
+ }
35
+ else {
40
36
  store = await openTmpStore(name, true, config.dataStoreMapSizeKB, MAX_READERS, log);
41
37
  }
42
38
  return store;
43
39
  }
44
- export async function openTmpStore(name, ephemeral = true, dbMapSizeKb = 10 * 1_024 * 1_024, maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2:' + name)) {
40
+ export async function openTmpStore(name, ephemeral = true, dbMapSizeKb = 10 * 1024 * 1024, // 10GB
41
+ maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2:' + name)) {
45
42
  const dataDir = await mkdtemp(join(tmpdir(), name + '-'));
46
43
  log.debug(`Created temporary data store at: ${dataDir} with size: ${dbMapSizeKb} KB (LMDB v2)`);
47
44
  // pass a cleanup callback because process.on('beforeExit', cleanup) does not work under Jest
48
- const cleanup = async ()=>{
45
+ const cleanup = async () => {
49
46
  if (ephemeral) {
50
- await rm(dataDir, {
51
- recursive: true,
52
- force: true
53
- });
47
+ await rm(dataDir, { recursive: true, force: true });
54
48
  log.debug(`Deleted temporary data store: ${dataDir}`);
55
- } else {
49
+ }
50
+ else {
56
51
  log.debug(`Leaving temporary data store: ${dataDir}`);
57
52
  }
58
53
  };
59
54
  return AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, cleanup, log);
60
55
  }
61
- export function openStoreAt(dataDir, dbMapSizeKb = 10 * 1_024 * 1_024, maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2')) {
56
+ export function openStoreAt(dataDir, dbMapSizeKb = 10 * 1024 * 1024, // 10GB
57
+ maxReaders = MAX_READERS, log = createLogger('kv-store:lmdb-v2')) {
62
58
  log.debug(`Opening data store at: ${dataDir} with size: ${dbMapSizeKb} KB (LMDB v2)`);
63
59
  return AztecLMDBStoreV2.new(dataDir, dbMapSizeKb, maxReaders, undefined, log);
64
60
  }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHNUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTlDLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFDN0MsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBRXZCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixJQUFZLEVBQ1osTUFBdUIsRUFDdkIsTUFBYyxZQUFZLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBRXRELE1BQU0sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTlDLElBQUksS0FBdUIsQ0FBQztJQUM1QixJQUFJLE9BQU8sYUFBYSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekMsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsV0FBVyxDQUFDO1lBQ3RDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxR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
@@ -0,0 +1,3 @@
1
+ export * from './store.js';
2
+ export * from './factory.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from './store.js';
2
2
  export * from './factory.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi12Mi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQyJ9