@aztec/kv-store 0.67.1 → 0.68.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 (35) hide show
  1. package/dest/indexeddb/store.d.ts.map +1 -1
  2. package/dest/indexeddb/store.js +4 -3
  3. package/dest/interfaces/array_test_suite.d.ts.map +1 -1
  4. package/dest/interfaces/array_test_suite.js +4 -1
  5. package/dest/interfaces/map.d.ts +18 -0
  6. package/dest/interfaces/map.d.ts.map +1 -1
  7. package/dest/interfaces/map_test_suite.d.ts.map +1 -1
  8. package/dest/interfaces/map_test_suite.js +4 -1
  9. package/dest/interfaces/set_test_suite.d.ts.map +1 -1
  10. package/dest/interfaces/set_test_suite.js +4 -1
  11. package/dest/interfaces/singleton_test_suite.d.ts.map +1 -1
  12. package/dest/interfaces/singleton_test_suite.js +4 -1
  13. package/dest/interfaces/store.d.ts +13 -1
  14. package/dest/interfaces/store.d.ts.map +1 -1
  15. package/dest/interfaces/store_test_suite.d.ts.map +1 -1
  16. package/dest/interfaces/store_test_suite.js +5 -1
  17. package/dest/lmdb/map.d.ts +18 -2
  18. package/dest/lmdb/map.d.ts.map +1 -1
  19. package/dest/lmdb/map.js +86 -26
  20. package/dest/lmdb/store.d.ts +15 -3
  21. package/dest/lmdb/store.d.ts.map +1 -1
  22. package/dest/lmdb/store.js +26 -10
  23. package/dest/stores/l2_tips_store.js +2 -2
  24. package/package.json +6 -6
  25. package/src/indexeddb/store.ts +3 -2
  26. package/src/interfaces/array_test_suite.ts +4 -0
  27. package/src/interfaces/map.ts +21 -0
  28. package/src/interfaces/map_test_suite.ts +4 -0
  29. package/src/interfaces/set_test_suite.ts +4 -0
  30. package/src/interfaces/singleton_test_suite.ts +4 -0
  31. package/src/interfaces/store.ts +22 -1
  32. package/src/interfaces/store_test_suite.ts +4 -0
  33. package/src/lmdb/map.ts +97 -22
  34. package/src/lmdb/store.ts +35 -12
  35. package/src/stores/l2_tips_store.ts +1 -1
package/dest/lmdb/map.js CHANGED
@@ -1,32 +1,29 @@
1
- var _LmdbAztecMap_instances, _LmdbAztecMap_startSentinel, _LmdbAztecMap_endSentinel, _LmdbAztecMap_slot;
1
+ var _LmdbAztecMapWithSize_sizeCache;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
3
  /**
4
4
  * A map backed by LMDB.
5
5
  */
6
6
  export class LmdbAztecMap {
7
7
  constructor(rootDb, mapName) {
8
- _LmdbAztecMap_instances.add(this);
9
- _LmdbAztecMap_startSentinel.set(this, void 0);
10
- _LmdbAztecMap_endSentinel.set(this, void 0);
11
8
  this.name = mapName;
12
9
  this.db = rootDb;
13
10
  // sentinels are used to define the start and end of the map
14
11
  // with LMDB's key encoding, no _primitive value_ can be "less than" an empty buffer or greater than Byte 255
15
12
  // these will be used later to answer range queries
16
- __classPrivateFieldSet(this, _LmdbAztecMap_startSentinel, ['map', this.name, 'slot', Buffer.from([])], "f");
17
- __classPrivateFieldSet(this, _LmdbAztecMap_endSentinel, ['map', this.name, 'slot', Buffer.from([255])], "f");
13
+ this.startSentinel = ['map', this.name, 'slot', Buffer.from([])];
14
+ this.endSentinel = ['map', this.name, 'slot', Buffer.from([255])];
18
15
  }
19
16
  close() {
20
17
  return this.db.close();
21
18
  }
22
19
  get(key) {
23
- return this.db.get(__classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key))?.[1];
20
+ return this.db.get(this.slot(key))?.[1];
24
21
  }
25
22
  getAsync(key) {
26
23
  return Promise.resolve(this.get(key));
27
24
  }
28
25
  *getValues(key) {
29
- const values = this.db.getValues(__classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key));
26
+ const values = this.db.getValues(this.slot(key));
30
27
  for (const value of values) {
31
28
  yield value?.[1];
32
29
  }
@@ -37,32 +34,32 @@ export class LmdbAztecMap {
37
34
  }
38
35
  }
39
36
  has(key) {
40
- return this.db.doesExist(__classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key));
37
+ return this.db.doesExist(this.slot(key));
41
38
  }
42
39
  hasAsync(key) {
43
40
  return Promise.resolve(this.has(key));
44
41
  }
45
42
  async set(key, val) {
46
- await this.db.put(__classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key), [key, val]);
43
+ await this.db.put(this.slot(key), [key, val]);
47
44
  }
48
45
  swap(key, fn) {
49
46
  return this.db.childTransaction(() => {
50
- const slot = __classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key);
47
+ const slot = this.slot(key);
51
48
  const entry = this.db.get(slot);
52
49
  void this.db.put(slot, [key, fn(entry?.[1])]);
53
50
  });
54
51
  }
55
52
  setIfNotExists(key, val) {
56
- const slot = __classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key);
53
+ const slot = this.slot(key);
57
54
  return this.db.ifNoExists(slot, () => {
58
55
  void this.db.put(slot, [key, val]);
59
56
  });
60
57
  }
61
58
  async delete(key) {
62
- await this.db.remove(__classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key));
59
+ await this.db.remove(this.slot(key));
63
60
  }
64
61
  async deleteValue(key, val) {
65
- await this.db.remove(__classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, key), [key, val]);
62
+ await this.db.remove(this.slot(key), [key, val]);
66
63
  }
67
64
  *entries(range = {}) {
68
65
  const { reverse = false, limit } = range;
@@ -70,18 +67,18 @@ export class LmdbAztecMap {
70
67
  // in that case, we need to swap the start and end sentinels
71
68
  const start = reverse
72
69
  ? range.end
73
- ? __classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, range.end)
74
- : __classPrivateFieldGet(this, _LmdbAztecMap_endSentinel, "f")
70
+ ? this.slot(range.end)
71
+ : this.endSentinel
75
72
  : range.start
76
- ? __classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, range.start)
77
- : __classPrivateFieldGet(this, _LmdbAztecMap_startSentinel, "f");
73
+ ? this.slot(range.start)
74
+ : this.startSentinel;
78
75
  const end = reverse
79
76
  ? range.start
80
- ? __classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, range.start)
81
- : __classPrivateFieldGet(this, _LmdbAztecMap_startSentinel, "f")
77
+ ? this.slot(range.start)
78
+ : this.startSentinel
82
79
  : range.end
83
- ? __classPrivateFieldGet(this, _LmdbAztecMap_instances, "m", _LmdbAztecMap_slot).call(this, range.end)
84
- : __classPrivateFieldGet(this, _LmdbAztecMap_endSentinel, "f");
80
+ ? this.slot(range.end)
81
+ : this.endSentinel;
85
82
  const lmdbRange = {
86
83
  start,
87
84
  end,
@@ -118,8 +115,71 @@ export class LmdbAztecMap {
118
115
  yield key;
119
116
  }
120
117
  }
118
+ slot(key) {
119
+ return ['map', this.name, 'slot', key];
120
+ }
121
+ async clear() {
122
+ const lmdbRange = {
123
+ start: this.startSentinel,
124
+ end: this.endSentinel,
125
+ };
126
+ const iterator = this.db.getRange(lmdbRange);
127
+ for (const { key } of iterator) {
128
+ await this.db.remove(key);
129
+ }
130
+ }
131
+ }
132
+ export class LmdbAztecMapWithSize extends LmdbAztecMap {
133
+ constructor(rootDb, mapName) {
134
+ super(rootDb, mapName);
135
+ _LmdbAztecMapWithSize_sizeCache.set(this, void 0);
136
+ }
137
+ async set(key, val) {
138
+ await this.db.childTransaction(() => {
139
+ const exists = this.db.doesExist(this.slot(key));
140
+ this.db.putSync(this.slot(key), [key, val], {
141
+ appendDup: true,
142
+ });
143
+ if (!exists) {
144
+ __classPrivateFieldSet(this, _LmdbAztecMapWithSize_sizeCache, undefined, "f"); // Invalidate cache
145
+ }
146
+ });
147
+ }
148
+ async delete(key) {
149
+ await this.db.childTransaction(async () => {
150
+ const exists = this.db.doesExist(this.slot(key));
151
+ if (exists) {
152
+ await this.db.remove(this.slot(key));
153
+ __classPrivateFieldSet(this, _LmdbAztecMapWithSize_sizeCache, undefined, "f"); // Invalidate cache
154
+ }
155
+ });
156
+ }
157
+ async deleteValue(key, val) {
158
+ await this.db.childTransaction(async () => {
159
+ const exists = this.db.doesExist(this.slot(key));
160
+ if (exists) {
161
+ await this.db.remove(this.slot(key), [key, val]);
162
+ __classPrivateFieldSet(this, _LmdbAztecMapWithSize_sizeCache, undefined, "f"); // Invalidate cache
163
+ }
164
+ });
165
+ }
166
+ /**
167
+ * Gets the size of the map by counting entries.
168
+ * @returns The number of entries in the map
169
+ */
170
+ size() {
171
+ if (__classPrivateFieldGet(this, _LmdbAztecMapWithSize_sizeCache, "f") === undefined) {
172
+ __classPrivateFieldSet(this, _LmdbAztecMapWithSize_sizeCache, this.db.getCount({
173
+ start: this.startSentinel,
174
+ end: this.endSentinel,
175
+ }), "f");
176
+ }
177
+ return __classPrivateFieldGet(this, _LmdbAztecMapWithSize_sizeCache, "f");
178
+ }
179
+ // Reset cache on clear/drop operations
180
+ clearCache() {
181
+ __classPrivateFieldSet(this, _LmdbAztecMapWithSize_sizeCache, undefined, "f");
182
+ }
121
183
  }
122
- _LmdbAztecMap_startSentinel = new WeakMap(), _LmdbAztecMap_endSentinel = new WeakMap(), _LmdbAztecMap_instances = new WeakSet(), _LmdbAztecMap_slot = function _LmdbAztecMap_slot(key) {
123
- return ['map', this.name, 'slot', key];
124
- };
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGIvbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQU92QixZQUFZLE1BQWdCLEVBQUUsT0FBZTs7UUFIN0MsOENBQXFDO1FBQ3JDLDRDQUFtQztRQUdqQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsRUFBRSxHQUFHLE1BQTJDLENBQUM7UUFFdEQsNERBQTREO1FBQzVELDZHQUE2RztRQUM3RyxtREFBbUQ7UUFDbkQsdUJBQUEsSUFBSSwrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFBLENBQUM7UUFDbEUsdUJBQUEsSUFBSSw2QkFBZ0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBQSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsdUJBQUEsSUFBSSxtREFBTSxNQUFWLElBQUksRUFBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFNO1FBQ2IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsQ0FBQyxTQUFTLENBQUMsR0FBTTtRQUNmLE1BQU0sTUFB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
184
+ _LmdbAztecMapWithSize_sizeCache = new WeakMap();
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGIvbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQU92QixZQUFZLE1BQWdCLEVBQUUsT0FBZTtRQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsRUFBRSxHQUFHLE1BQTJDLENBQUM7UUFFdEQsNERBQTREO1FBQzVELDZHQUE2RztRQUM3RyxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFNO1FBQ2IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsQ0FBQyxTQUFTLENBQUMsR0FBTTtRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FB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
@@ -2,7 +2,7 @@ import { type RootDatabase } from 'lmdb';
2
2
  import { type AztecArray, type AztecAsyncArray } from '../interfaces/array.js';
3
3
  import { type Key } from '../interfaces/common.js';
4
4
  import { type AztecAsyncCounter, type AztecCounter } from '../interfaces/counter.js';
5
- import { type AztecAsyncMap, type AztecAsyncMultiMap, type AztecMap, type AztecMultiMap } from '../interfaces/map.js';
5
+ import { type AztecAsyncMap, type AztecAsyncMultiMap, type AztecMap, type AztecMapWithSize, type AztecMultiMap, type AztecMultiMapWithSize } from '../interfaces/map.js';
6
6
  import { type AztecAsyncSet, type AztecSet } from '../interfaces/set.js';
7
7
  import { type AztecAsyncSingleton, type AztecSingleton } from '../interfaces/singleton.js';
8
8
  import { type AztecAsyncKVStore, type AztecKVStore } from '../interfaces/store.js';
@@ -12,9 +12,9 @@ import { type AztecAsyncKVStore, type AztecKVStore } from '../interfaces/store.j
12
12
  export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
13
13
  #private;
14
14
  readonly isEphemeral: boolean;
15
- private path?;
15
+ private path;
16
16
  syncGetters: true;
17
- constructor(rootDb: RootDatabase, isEphemeral: boolean, path?: string | undefined);
17
+ constructor(rootDb: RootDatabase, isEphemeral: boolean, path: string);
18
18
  /**
19
19
  * Creates a new AztecKVStore backed by LMDB. The path to the database is optional. If not provided,
20
20
  * the database will be stored in a temporary location and be deleted when the process exists.
@@ -54,6 +54,18 @@ export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
54
54
  */
55
55
  openMultiMap<K extends Key, V>(name: string): AztecMultiMap<K, V> & AztecAsyncMultiMap<K, V>;
56
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>;
57
69
  /**
58
70
  * Creates a new AztecArray in the store.
59
71
  * @param name - Name of the array
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,YAAY,EAAQ,MAAM,MAAM,CAAC;AAI9D,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtH,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3F,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAOnF;;GAEG;AACH,qBAAa,cAAe,YAAW,YAAY,EAAE,iBAAiB;;aAQlB,WAAW,EAAE,OAAO;IAAE,OAAO,CAAC,IAAI,CAAC;IAPrF,WAAW,OAAiB;gBAOhB,MAAM,EAAE,YAAY,EAAkB,WAAW,EAAE,OAAO,EAAU,IAAI,CAAC,oBAAQ;IAgB7F;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,SAAkB,EAAE,4BAA4B;IACzD,SAAS,GAAE,OAAe,EAC1B,GAAG,yCAAgC,GAClC,cAAc;IAUjB;;;OAGG;IACG,IAAI;IAYV;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAI7E;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAIpE;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5F,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAIhF;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAI9D;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAI1E;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7C;;;;OAIG;IACG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE;;OAEG;IACG,KAAK;IAMX;;OAEG;IACG,IAAI;IAMV;;OAEG;IACG,KAAK;IAMX,kEAAkE;IAC5D,MAAM;IASZ,YAAY,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAiB7E,OAAO,CAAC,iBAAiB;CA2B1B"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  var _AztecLmdbStore_rootDb, _AztecLmdbStore_data, _AztecLmdbStore_multiMapData, _AztecLmdbStore_log;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ import { randomBytes } from '@aztec/foundation/crypto';
3
4
  import { createLogger } from '@aztec/foundation/log';
4
5
  import { promises as fs, mkdirSync } from 'fs';
5
6
  import { open } from 'lmdb';
6
7
  import { tmpdir } from 'os';
7
- import { dirname, join } from 'path';
8
+ import { join } from 'path';
8
9
  import { LmdbAztecArray } from './array.js';
9
10
  import { LmdbAztecCounter } from './counter.js';
10
- import { LmdbAztecMap } from './map.js';
11
+ import { LmdbAztecMap, LmdbAztecMapWithSize } from './map.js';
11
12
  import { LmdbAztecSet } from './set.js';
12
13
  import { LmdbAztecSingleton } from './singleton.js';
13
14
  /**
@@ -49,22 +50,21 @@ export class AztecLmdbStore {
49
50
  */
50
51
  static open(path, mapSizeKb = 1 * 1024 * 1024, // defaults to 1 GB map size
51
52
  ephemeral = false, log = createLogger('kv-store:lmdb')) {
52
- if (path) {
53
- mkdirSync(path, { recursive: true });
54
- }
53
+ const dbPath = path ?? join(tmpdir(), randomBytes(8).toString('hex'));
54
+ mkdirSync(dbPath, { recursive: true });
55
55
  const mapSize = 1024 * mapSizeKb;
56
56
  log.debug(`Opening LMDB database at ${path || 'temporary location'} with map size ${mapSize}`);
57
- const rootDb = open({ path, noSync: ephemeral, mapSize });
58
- return new AztecLmdbStore(rootDb, ephemeral, path);
57
+ const rootDb = open({ path: dbPath, noSync: ephemeral, mapSize });
58
+ return new AztecLmdbStore(rootDb, ephemeral, dbPath);
59
59
  }
60
60
  /**
61
61
  * Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
62
62
  * @returns A new AztecLmdbStore.
63
63
  */
64
64
  async fork() {
65
- const baseDir = this.path ? dirname(this.path) : tmpdir();
65
+ const baseDir = this.path;
66
66
  __classPrivateFieldGet(this, _AztecLmdbStore_log, "f").debug(`Forking store with basedir ${baseDir}`);
67
- const forkPath = (await fs.mkdtemp(join(baseDir, 'aztec-store-fork-'))) + (this.isEphemeral || !this.path ? '/data.mdb' : '');
67
+ const forkPath = await fs.mkdtemp(join(baseDir, 'aztec-store-fork-'));
68
68
  __classPrivateFieldGet(this, _AztecLmdbStore_log, "f").verbose(`Forking store to ${forkPath}`);
69
69
  await __classPrivateFieldGet(this, _AztecLmdbStore_rootDb, "f").backup(forkPath, false);
70
70
  const forkDb = open(forkPath, { noSync: this.isEphemeral });
@@ -98,6 +98,22 @@ export class AztecLmdbStore {
98
98
  openCounter(name) {
99
99
  return new LmdbAztecCounter(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
100
100
  }
101
+ /**
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);
108
+ }
109
+ /**
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);
116
+ }
101
117
  /**
102
118
  * Creates a new AztecArray in the store.
103
119
  * @param name - Name of the array
@@ -206,4 +222,4 @@ export class AztecLmdbStore {
206
222
  }
207
223
  }
208
224
  _AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap(), _AztecLmdbStore_log = new WeakMap();
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsUUFBUSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDL0MsT0FBTyxFQUFvQyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVNyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQVF6QixZQUFZLE1BQW9CLEVBQWtCLFdBQW9CLEVBQVUsSUFBYTtRQUEzQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUztRQUFVLFNBQUksR0FBSixJQUFJLENBQVM7UUFQN0YsZ0JBQVcsR0FBRyxJQUFhLENBQUM7UUFFNUIseUNBQXNCO1FBQ3RCLHVDQUE4QjtRQUM5QiwrQ0FBc0M7UUFDdEMsOEJBQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFDO1FBR25DLHVCQUFBLElBQUksMEJBQVcsTUFBTSxNQUFBLENBQUM7UUFFdEIsbUNBQW1DO1FBQ25DLHVCQUFBLElBQUksd0JBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakMsUUFBUSxF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
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsT0FBTyxFQUFFLFFBQVEsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQy9DLE9BQU8sRUFBb0MsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDNUIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWdCNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBWSxNQUFvQixFQUFrQixXQUFvQixFQUFVLElBQVk7UUFBMUMsZ0JBQVcsR0FBWCxXQUFXLENBQVM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBUDVGLGdCQUFXLEdBQUcsSUFBYSxDQUFDO1FBRTVCLHlDQUFzQjtRQUN0Qix1Q0FBOEI7UUFDOUIsK0NBQXNDO1FBQ3RDLDhCQUFPLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBQztRQUduQyx1QkFBQSxJQUFJLDBCQUFXLE1BQU0sTUFBQSxDQUFDO1FBRXRCLG1DQUFtQztRQUNuQyx1QkFBQSxJQUFJLHdC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
@@ -28,10 +28,10 @@ export class L2TipsStore {
28
28
  async handleBlockStreamEvent(event) {
29
29
  switch (event.type) {
30
30
  case 'blocks-added':
31
- await this.l2TipsStore.set('latest', event.blocks.at(-1).number);
32
31
  for (const block of event.blocks) {
33
32
  await this.l2BlockHashesStore.set(block.number, block.header.hash().toString());
34
33
  }
34
+ await this.l2TipsStore.set('latest', event.blocks.at(-1).number);
35
35
  break;
36
36
  case 'chain-pruned':
37
37
  await this.l2TipsStore.set('latest', event.blockNumber);
@@ -48,4 +48,4 @@ export class L2TipsStore {
48
48
  }
49
49
  }
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDJfdGlwc19zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZXMvbDJfdGlwc19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxvRUFBb0U7QUFDcEUsTUFBTSxPQUFPLFdBQVc7SUFJdEIsWUFBWSxLQUF3QixFQUFFLFNBQWlCO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBYztRQUNsQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUMzQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBZTtRQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksV0FBVyxLQUFLLFNBQVMsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBeUI7UUFDM0QsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsS0FBSyxjQUFjO2dCQUNqQixNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsRSxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRixDQUFDO2dCQUNELE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsTUFBTTtZQUNSLEtBQUssY0FBYztnQkFDakIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUN0RixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBQ0QsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibDJfdGlwc19zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yZXMvbDJfdGlwc19zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxvRUFBb0U7QUFDcEUsTUFBTSxPQUFPLFdBQVc7SUFJdEIsWUFBWSxLQUF3QixFQUFFLFNBQWlCO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBYztRQUNsQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxTQUFTLEVBQUUsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUMzQyxNQUFNLEVBQUUsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBZTtRQUNwQyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELElBQUksV0FBVyxLQUFLLFNBQVMsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLENBQUM7UUFDRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx5Q0FBeUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsS0FBeUI7UUFDM0QsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsS0FBSyxjQUFjO2dCQUNqQixLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDakMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRixDQUFDO2dCQUNELE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xFLE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsTUFBTTtZQUNSLEtBQUssY0FBYztnQkFDakIsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUN4RCxNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0QsSUFBSSxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDO29CQUN0RixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzVDLENBQUM7Z0JBQ0QsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/kv-store",
3
- "version": "0.67.1",
3
+ "version": "0.68.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/interfaces/index.js",
@@ -24,9 +24,9 @@
24
24
  "./package.local.json"
25
25
  ],
26
26
  "dependencies": {
27
- "@aztec/circuit-types": "0.67.1",
28
- "@aztec/ethereum": "0.67.1",
29
- "@aztec/foundation": "0.67.1",
27
+ "@aztec/circuit-types": "0.68.0",
28
+ "@aztec/ethereum": "0.68.0",
29
+ "@aztec/foundation": "0.68.0",
30
30
  "idb": "^8.0.0",
31
31
  "lmdb": "^3.0.6"
32
32
  },
@@ -83,9 +83,9 @@
83
83
  },
84
84
  "reporters": [
85
85
  [
86
- "default",
86
+ "jest-silent-reporter",
87
87
  {
88
- "summaryThreshold": 9999
88
+ "useDots": true
89
89
  }
90
90
  ]
91
91
  ],
@@ -1,6 +1,6 @@
1
1
  import { type Logger } from '@aztec/foundation/log';
2
2
 
3
- import { type DBSchema, type IDBPDatabase, openDB } from 'idb';
3
+ import { type DBSchema, type IDBPDatabase, deleteDB, openDB } from 'idb';
4
4
 
5
5
  import { type AztecAsyncArray } from '../interfaces/array.js';
6
6
  import { type Key } from '../interfaces/common.js';
@@ -183,7 +183,8 @@ export class AztecIndexedDBStore implements AztecAsyncKVStore {
183
183
  /** Deletes this store and removes the database */
184
184
  delete() {
185
185
  this.#containers.clear();
186
- return Promise.resolve(this.#rootDB.deleteObjectStore('data'));
186
+ this.#rootDB.close();
187
+ return deleteDB(this.#name);
187
188
  }
188
189
 
189
190
  estimateSize(): { mappingSize: number; actualSize: number; numItems: number } {
@@ -20,6 +20,10 @@ export function describeAztecArray(
20
20
  arr = store.openArray<number>('test');
21
21
  });
22
22
 
23
+ afterEach(async () => {
24
+ await store.delete();
25
+ });
26
+
23
27
  async function length(sut: AztecAsyncArray<number> | AztecArray<number> = arr) {
24
28
  return isSyncStore(store) && !forceAsync
25
29
  ? (sut as AztecArray<number>).length
@@ -62,6 +62,19 @@ export interface AztecMap<K extends Key, V> extends AztecBaseMap<K, V> {
62
62
  * @param range - The range of keys to iterate over
63
63
  */
64
64
  keys(range?: Range<K>): IterableIterator<K>;
65
+
66
+ /**
67
+ * Clears the map.
68
+ */
69
+ clear(): Promise<void>;
70
+ }
71
+
72
+ export interface AztecMapWithSize<K extends Key, V> extends AztecMap<K, V> {
73
+ /**
74
+ * Gets the size of the map.
75
+ * @returns The size of the map
76
+ */
77
+ size(): number;
65
78
  }
66
79
 
67
80
  /**
@@ -82,6 +95,14 @@ export interface AztecMultiMap<K extends Key, V> extends AztecMap<K, V> {
82
95
  deleteValue(key: K, val: V): Promise<void>;
83
96
  }
84
97
 
98
+ export interface AztecMultiMapWithSize<K extends Key, V> extends AztecMultiMap<K, V> {
99
+ /**
100
+ * Gets the size of the map.
101
+ * @returns The size of the map
102
+ */
103
+ size(): number;
104
+ }
105
+
85
106
  /**
86
107
  * A map backed by a persistent store.
87
108
  */
@@ -21,6 +21,10 @@ export function describeAztecMap(
21
21
  map = store.openMultiMap<string | [number, string], string>('test');
22
22
  });
23
23
 
24
+ afterEach(async () => {
25
+ await store.delete();
26
+ });
27
+
24
28
  async function get(key: Key, sut: AztecAsyncMap<any, any> | AztecMap<any, any> = map) {
25
29
  return isSyncStore(store) && !forceAsync
26
30
  ? (sut as AztecMultiMap<any, any>).get(key)
@@ -21,6 +21,10 @@ export function describeAztecSet(
21
21
  set = store.openSet<string>('test');
22
22
  });
23
23
 
24
+ afterEach(async () => {
25
+ await store.delete();
26
+ });
27
+
24
28
  async function has(key: string) {
25
29
  return isSyncStore(store) && !forceAsync
26
30
  ? (set as AztecSet<string>).has(key)
@@ -18,6 +18,10 @@ export function describeAztecSingleton(
18
18
  singleton = store.openSingleton<string>('test');
19
19
  });
20
20
 
21
+ afterEach(async () => {
22
+ await store.delete();
23
+ });
24
+
21
25
  async function get() {
22
26
  return isSyncStore(store) && !forceAsync
23
27
  ? (singleton as AztecSingleton<string>).get()
@@ -1,7 +1,14 @@
1
1
  import { type AztecArray, type AztecAsyncArray } from './array.js';
2
2
  import { type Key } from './common.js';
3
3
  import { type AztecAsyncCounter, type AztecCounter } from './counter.js';
4
- import { type AztecAsyncMap, type AztecAsyncMultiMap, type AztecMap, type AztecMultiMap } from './map.js';
4
+ import {
5
+ type AztecAsyncMap,
6
+ type AztecAsyncMultiMap,
7
+ type AztecMap,
8
+ type AztecMapWithSize,
9
+ type AztecMultiMap,
10
+ type AztecMultiMapWithSize,
11
+ } from './map.js';
5
12
  import { type AztecAsyncSet, type AztecSet } from './set.js';
6
13
  import { type AztecAsyncSingleton, type AztecSingleton } from './singleton.js';
7
14
 
@@ -29,6 +36,20 @@ export interface AztecKVStore {
29
36
  */
30
37
  openMultiMap<K extends Key, V>(name: string): AztecMultiMap<K, V>;
31
38
 
39
+ /**
40
+ * Creates a new multi-map with size.
41
+ * @param name - The name of the multi-map
42
+ * @returns The multi-map
43
+ */
44
+ openMultiMapWithSize<K extends Key, V>(name: string): AztecMultiMapWithSize<K, V>;
45
+
46
+ /**
47
+ * Creates a new map with size.
48
+ * @param name - The name of the map
49
+ * @returns The map
50
+ */
51
+ openMapWithSize<K extends Key, V>(name: string): AztecMapWithSize<K, V>;
52
+
32
53
  /**
33
54
  * Creates a new array.
34
55
  * @param name - The name of the array
@@ -32,21 +32,25 @@ export function describeAztecStore(
32
32
  expect(await get(forkedStore, forkedSingleton)).to.equal('bar');
33
33
  await forkedSingleton.delete();
34
34
  expect(await get(store, singleton)).to.equal('foo');
35
+ await forkedStore.delete();
35
36
  };
36
37
 
37
38
  it('forks a persistent store', async () => {
38
39
  const store = await getPersistentStore();
39
40
  await itForks(store);
41
+ await store.delete();
40
42
  });
41
43
 
42
44
  it('forks a persistent store with no path', async () => {
43
45
  const store = await getPersistentNoPathStore();
44
46
  await itForks(store);
47
+ await store.delete();
45
48
  });
46
49
 
47
50
  it('forks an ephemeral store', async () => {
48
51
  const store = await getEphemeralStore();
49
52
  await itForks(store);
53
+ await store.delete();
50
54
  });
51
55
  });
52
56
  }