@aztec/kv-store 0.46.6 → 0.47.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.
@@ -3,5 +3,6 @@ export * from './map.js';
3
3
  export * from './counter.js';
4
4
  export * from './singleton.js';
5
5
  export * from './store.js';
6
+ export * from './set.js';
6
7
  export { Range } from './common.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC"}
@@ -3,4 +3,5 @@ export * from './map.js';
3
3
  export * from './counter.js';
4
4
  export * from './singleton.js';
5
5
  export * from './store.js';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDIn0=
6
+ export * from './set.js';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDIn0=
@@ -0,0 +1,28 @@
1
+ import { type Key, type Range } from './common.js';
2
+ /**
3
+ * A set backed by a persistent store.
4
+ */
5
+ export interface AztecSet<K extends Key> {
6
+ /**
7
+ * Checks if a key exists in the set.
8
+ * @param key - The key to check
9
+ * @returns True if the key exists, false otherwise
10
+ */
11
+ has(key: K): boolean;
12
+ /**
13
+ * Adds the given value.
14
+ * @param key - The key to add.
15
+ */
16
+ add(key: K): Promise<void>;
17
+ /**
18
+ * Deletes the given key.
19
+ * @param key - The key to delete.
20
+ */
21
+ delete(key: K): Promise<void>;
22
+ /**
23
+ * Iterates over the sets's keys entries in the key's natural order
24
+ * @param range - The range of keys to iterate over
25
+ */
26
+ entries(range?: Range<K>): IterableIterator<K>;
27
+ }
28
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/interfaces/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,GAAG;IACrC;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAErB;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9B;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAChD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -2,6 +2,7 @@ import { type AztecArray } from './array.js';
2
2
  import { type Key } from './common.js';
3
3
  import { type AztecCounter } from './counter.js';
4
4
  import { type AztecMap, type AztecMultiMap } from './map.js';
5
+ import { type AztecSet } from './set.js';
5
6
  import { type AztecSingleton } from './singleton.js';
6
7
  /** A key-value store */
7
8
  export interface AztecKVStore {
@@ -11,6 +12,12 @@ export interface AztecKVStore {
11
12
  * @returns The map
12
13
  */
13
14
  openMap<K extends string | number, V>(name: string): AztecMap<K, V>;
15
+ /**
16
+ * Creates a new set.
17
+ * @param name - The name of the set
18
+ * @returns The set
19
+ */
20
+ openSet<K extends string | number>(name: string): AztecSet<K>;
14
21
  /**
15
22
  * Creates a new multi-map.
16
23
  * @param name - The name of the multi-map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/interfaces/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,KAAK,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,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;CACxB"}
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;CACxB"}
@@ -0,0 +1,16 @@
1
+ import { type Database } from 'lmdb';
2
+ import { type Key, type Range } from '../interfaces/common.js';
3
+ import { type AztecSet } from '../interfaces/set.js';
4
+ /**
5
+ * A set backed by LMDB.
6
+ */
7
+ export declare class LmdbAztecSet<K extends Key> implements AztecSet<K> {
8
+ private map;
9
+ constructor(rootDb: Database, mapName: string);
10
+ close(): Promise<void>;
11
+ has(key: K): boolean;
12
+ add(key: K): Promise<void>;
13
+ delete(key: K): Promise<void>;
14
+ entries(range?: Range<K>): IterableIterator<K>;
15
+ }
16
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/lmdb/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAA2B;gBAC1B,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IAI7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,OAAO,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC;CAGnD"}
@@ -0,0 +1,25 @@
1
+ import { LmdbAztecMap } from './map.js';
2
+ /**
3
+ * A set backed by LMDB.
4
+ */
5
+ export class LmdbAztecSet {
6
+ constructor(rootDb, mapName) {
7
+ this.map = new LmdbAztecMap(rootDb, mapName);
8
+ }
9
+ close() {
10
+ return this.map.close();
11
+ }
12
+ has(key) {
13
+ return this.map.has(key);
14
+ }
15
+ add(key) {
16
+ return this.map.set(key, true);
17
+ }
18
+ delete(key) {
19
+ return this.map.delete(key);
20
+ }
21
+ entries(range = {}) {
22
+ return this.map.keys(range);
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGIvc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUV2QixZQUFZLE1BQWdCLEVBQUUsT0FBZTtRQUMzQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQU07UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxHQUFHLENBQUMsR0FBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFrQixFQUFFO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNGIn0=
@@ -2,6 +2,7 @@ import { type RootDatabase } from 'lmdb';
2
2
  import { type AztecArray } from '../interfaces/array.js';
3
3
  import { type AztecCounter } from '../interfaces/counter.js';
4
4
  import { type AztecMap, type AztecMultiMap } from '../interfaces/map.js';
5
+ import { type AztecSet } from '../interfaces/set.js';
5
6
  import { type AztecSingleton } from '../interfaces/singleton.js';
6
7
  import { type AztecKVStore } from '../interfaces/store.js';
7
8
  /**
@@ -30,6 +31,12 @@ export declare class AztecLmdbStore implements AztecKVStore {
30
31
  * @returns A new AztecMap
31
32
  */
32
33
  openMap<K extends string | number, V>(name: string): AztecMap<K, V>;
34
+ /**
35
+ * Creates a new AztecSet in the store.
36
+ * @param name - Name of the set
37
+ * @returns A new AztecSet
38
+ */
39
+ openSet<K extends string | number>(name: string): AztecSet<K>;
33
40
  /**
34
41
  * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
35
42
  * @param name - Name of the map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,YAAY,EAAQ,MAAM,MAAM,CAAC;AAExE,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,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;GAEG;AACH,qBAAa,cAAe,YAAW,YAAY;;gBAKrC,MAAM,EAAE,YAAY;IAgBhC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,GAAE,OAAe,EAC1B,GAAG,yCAA2C,GAC7C,cAAc;IASjB;;;;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,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;CAGZ"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,YAAY,EAAQ,MAAM,MAAM,CAAC;AAExE,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;;gBAKrC,MAAM,EAAE,YAAY;IAgBhC;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,GAAE,OAAe,EAC1B,GAAG,yCAA2C,GAC7C,cAAc;IASjB;;;;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;CAGZ"}
@@ -5,6 +5,7 @@ import { open } from 'lmdb';
5
5
  import { LmdbAztecArray } from './array.js';
6
6
  import { LmdbAztecCounter } from './counter.js';
7
7
  import { LmdbAztecMap } from './map.js';
8
+ import { LmdbAztecSet } from './set.js';
8
9
  import { LmdbAztecSingleton } from './singleton.js';
9
10
  /**
10
11
  * A key-value store backed by LMDB.
@@ -55,6 +56,14 @@ export class AztecLmdbStore {
55
56
  openMap(name) {
56
57
  return new LmdbAztecMap(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
57
58
  }
59
+ /**
60
+ * Creates a new AztecSet in the store.
61
+ * @param name - Name of the set
62
+ * @returns A new AztecSet
63
+ */
64
+ openSet(name) {
65
+ return new LmdbAztecSet(__classPrivateFieldGet(this, _AztecLmdbStore_data, "f"), name);
66
+ }
58
67
  /**
59
68
  * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
60
69
  * @param name - Name of the map
@@ -98,4 +107,4 @@ export class AztecLmdbStore {
98
107
  }
99
108
  }
100
109
  _AztecLmdbStore_rootDb = new WeakMap(), _AztecLmdbStore_data = new WeakMap(), _AztecLmdbStore_multiMapData = new WeakMap();
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBOEMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBT3hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUt6QixZQUFZLE1BQW9CO1FBSmhDLHlDQUFzQjtRQUN0Qix1Q0FBOEI7UUFDOUIsK0NBQXNDO1FBR3BDLHVCQUFBLElBQUksMEJBQVcsTUFBTSxNQUFBLENBQUM7UUFFdEIsbUNBQW1DO1FBQ25DLHVCQUFBLElBQUksd0JBQVMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDakMsUUFBUSxFQUFFLFNBQVM7WUFDbkIsV0FBVyxFQUFFLGdCQUFnQjtTQUM5QixDQUFDLE1BQUEsQ0FBQztRQUVILHVCQUFBLElBQUksZ0NBQWlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFO1lBQ2xELFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsV0FBVyxFQUFFLGdCQUFnQjtZQUM3QixPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsTUFBQSxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILE1BQU0sQ0FBQyxJQUFJLENBQ1QsSUFBYSxFQUNiLFlBQXFCLEtBQUssRUFDMUIsR0FBRyxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDO1FBRTlDLEdBQUcsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLElBQUksSUFBSSxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDckUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUk7WUFDSixNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUErQixJQUFZO1FBQ2hELE9BQU8sSUFBSSxZQUFZLENBQUMsdUJBQUEsSUFBSSw0QkFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUErQixJQUFZO1FBQ3JELE9BQU8sSUFBSSxZQUFZLENBQUMsdUJBQUEsSUFBSSxvQ0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxXQUFXLENBQXFELElBQVk7UUFDMUUsT0FBTyxJQUFJLGdCQUFnQixDQUFDLHVCQUFBLElBQUksNEJBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBSSxJQUFZO1FBQ3ZCLE9BQU8sSUFBSSxjQUFjLENBQUMsdUJBQUEsSUFBSSw0QkFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFJLElBQVk7UUFDM0IsT0FBTyxJQUFJLGtCQUFrQixDQUFDLHVCQUFBLElBQUksNEJBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBSSxRQUFpQjtRQUM5QixPQUFPLHVCQUFBLElBQUksOEJBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLHVCQUFBLElBQUksOEJBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0YifQ==
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTFELE9BQU8sRUFBOEMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBUXhFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRDs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBS3pCLFlBQVksTUFBb0I7UUFKaEMseUNBQXNCO1FBQ3RCLHVDQUE4QjtRQUM5QiwrQ0FBc0M7UUFHcEMsdUJBQUEsSUFBSSwwQkFBVyxNQUFNLE1BQUEsQ0FBQztRQUV0QixtQ0FBbUM7UUFDbkMsdUJBQUEsSUFBSSx3QkFBUyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNqQyxRQUFRLEVBQUUsU0FBUztZQUNuQixXQUFXLEVBQUUsZ0JBQWdCO1NBQzlCLENBQUMsTUFBQSxDQUFDO1FBRUgsdUJBQUEsSUFBSSxnQ0FBaUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDbEQsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixXQUFXLEVBQUUsZ0JBQWdCO1lBQzdCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxNQUFBLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFhLEVBQ2IsWUFBcUIsS0FBSyxFQUMxQixHQUFHLEdBQUcsaUJBQWlCLENBQUMscUJBQXFCLENBQUM7UUFFOUMsR0FBRyxDQUFDLElBQUksQ0FBQyw0QkFBNEIsSUFBSSxJQUFJLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUNyRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSTtZQUNKLE1BQU0sRUFBRSxTQUFTO1NBQ2xCLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQStCLElBQVk7UUFDaEQsT0FBTyxJQUFJLFlBQVksQ0FBQyx1QkFBQSxJQUFJLDRCQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQTRCLElBQVk7UUFDN0MsT0FBTyxJQUFJLFlBQVksQ0FBQyx1QkFBQSxJQUFJLDRCQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQStCLElBQVk7UUFDckQsT0FBTyxJQUFJLFlBQVksQ0FBQyx1QkFBQSxJQUFJLG9DQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVcsQ0FBcUQsSUFBWTtRQUMxRSxPQUFPLElBQUksZ0JBQWdCLENBQUMsdUJBQUEsSUFBSSw0QkFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFJLElBQVk7UUFDdkIsT0FBTyxJQUFJLGNBQWMsQ0FBQyx1QkFBQSxJQUFJLDRCQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUksSUFBWTtRQUMzQixPQUFPLElBQUksa0JBQWtCLENBQUMsdUJBQUEsSUFBSSw0QkFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsV0FBVyxDQUFJLFFBQWlCO1FBQzlCLE9BQU8sdUJBQUEsSUFBSSw4QkFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sdUJBQUEsSUFBSSw4QkFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRiJ9
package/dest/utils.d.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import { type EthAddress } from '@aztec/foundation/eth-address';
2
2
  import { type Logger } from '@aztec/foundation/log';
3
3
  import { type AztecKVStore } from './interfaces/store.js';
4
+ import { AztecLmdbStore } from './lmdb/store.js';
5
+ export declare function createStore(config: {
6
+ dataDirectory: string | undefined;
7
+ }, rollupAddress: EthAddress, log?: Logger): Promise<AztecLmdbStore>;
4
8
  /**
5
9
  * Clears the store if the rollup address does not match the one stored in the database.
6
10
  * This is to prevent data from being accidentally shared between different rollup instances.
@@ -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,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D;;;;;;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,CAeZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,YAAY,CAErE"}
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,EAC7C,aAAa,EAAE,UAAU,EACzB,GAAG,GAAE,MAA4C,2BAGlD;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,CAeZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,YAAY,CAErE"}
package/dest/utils.js CHANGED
@@ -1,4 +1,8 @@
1
+ import { createDebugLogger } from '@aztec/foundation/log';
1
2
  import { AztecLmdbStore } from './lmdb/store.js';
3
+ export function createStore(config, rollupAddress, log = createDebugLogger('aztec:kv-store')) {
4
+ return initStoreForRollup(AztecLmdbStore.open(config.dataDirectory, false, log), rollupAddress, log);
5
+ }
2
6
  /**
3
7
  * Clears the store if the rollup address does not match the one stored in the database.
4
8
  * This is to prevent data from being accidentally shared between different rollup instances.
@@ -25,4 +29,4 @@ export async function initStoreForRollup(store, rollupAddress, log) {
25
29
  export function openTmpStore(ephemeral = false) {
26
30
  return AztecLmdbStore.open(undefined, ephemeral);
27
31
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQ3RDLEtBQVEsRUFDUixhQUF5QixFQUN6QixHQUFZO0lBRVosTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFxQyxlQUFlLENBQUMsQ0FBQztJQUNwRyxNQUFNLG1CQUFtQixHQUFHLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRCxNQUFNLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNELElBQUksT0FBTyx5QkFBeUIsS0FBSyxXQUFXLElBQUkseUJBQXlCLEtBQUssbUJBQW1CLEVBQUUsQ0FBQztRQUMxRyxHQUFHLEVBQUUsSUFBSSxDQUNQLHFDQUFxQyxhQUFhLFdBQVcsa0JBQWtCLCtCQUErQixDQUMvRyxDQUFDO1FBRUYsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELE1BQU0sa0JBQWtCLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDbEQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsWUFBcUIsS0FBSztJQUNyRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25ELENBQUMifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE1BQU0sVUFBVSxXQUFXLENBQ3pCLE1BQTZDLEVBQzdDLGFBQXlCLEVBQ3pCLE1BQWMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUM7SUFFakQsT0FBTyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsS0FBUSxFQUNSLGFBQXlCLEVBQ3pCLEdBQVk7SUFFWixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxhQUFhLENBQXFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3BHLE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JELE1BQU0seUJBQXlCLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFM0QsSUFBSSxPQUFPLHlCQUF5QixLQUFLLFdBQVcsSUFBSSx5QkFBeUIsS0FBSyxtQkFBbUIsRUFBRSxDQUFDO1FBQzFHLEdBQUcsRUFBRSxJQUFJLENBQ1AscUNBQXFDLGFBQWEsV0FBVyxrQkFBa0IsK0JBQStCLENBQy9HLENBQUM7UUFFRixNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNsRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxZQUFxQixLQUFLO0lBQ3JELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkQsQ0FBQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/kv-store",
3
- "version": "0.46.6",
3
+ "version": "0.47.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.46.6",
55
+ "@aztec/foundation": "0.47.0",
56
56
  "lmdb": "^3.0.6"
57
57
  },
58
58
  "devDependencies": {
@@ -3,4 +3,5 @@ export * from './map.js';
3
3
  export * from './counter.js';
4
4
  export * from './singleton.js';
5
5
  export * from './store.js';
6
+ export * from './set.js';
6
7
  export { Range } from './common.js';
@@ -0,0 +1,31 @@
1
+ import { type Key, type Range } from './common.js';
2
+
3
+ /**
4
+ * A set backed by a persistent store.
5
+ */
6
+ export interface AztecSet<K extends Key> {
7
+ /**
8
+ * Checks if a key exists in the set.
9
+ * @param key - The key to check
10
+ * @returns True if the key exists, false otherwise
11
+ */
12
+ has(key: K): boolean;
13
+
14
+ /**
15
+ * Adds the given value.
16
+ * @param key - The key to add.
17
+ */
18
+ add(key: K): Promise<void>;
19
+
20
+ /**
21
+ * Deletes the given key.
22
+ * @param key - The key to delete.
23
+ */
24
+ delete(key: K): Promise<void>;
25
+
26
+ /**
27
+ * Iterates over the sets's keys entries in the key's natural order
28
+ * @param range - The range of keys to iterate over
29
+ */
30
+ entries(range?: Range<K>): IterableIterator<K>;
31
+ }
@@ -2,6 +2,7 @@ import { type AztecArray } from './array.js';
2
2
  import { type Key } from './common.js';
3
3
  import { type AztecCounter } from './counter.js';
4
4
  import { type AztecMap, type AztecMultiMap } from './map.js';
5
+ import { type AztecSet } from './set.js';
5
6
  import { type AztecSingleton } from './singleton.js';
6
7
 
7
8
  /** A key-value store */
@@ -13,6 +14,13 @@ export interface AztecKVStore {
13
14
  */
14
15
  openMap<K extends string | number, V>(name: string): AztecMap<K, V>;
15
16
 
17
+ /**
18
+ * Creates a new set.
19
+ * @param name - The name of the set
20
+ * @returns The set
21
+ */
22
+ openSet<K extends string | number>(name: string): AztecSet<K>;
23
+
16
24
  /**
17
25
  * Creates a new multi-map.
18
26
  * @param name - The name of the multi-map
@@ -0,0 +1,35 @@
1
+ import { type Database } from 'lmdb';
2
+
3
+ import { type Key, type Range } from '../interfaces/common.js';
4
+ import { type AztecSet } from '../interfaces/set.js';
5
+ import { LmdbAztecMap } from './map.js';
6
+
7
+ /**
8
+ * A set backed by LMDB.
9
+ */
10
+ export class LmdbAztecSet<K extends Key> implements AztecSet<K> {
11
+ private map: LmdbAztecMap<K, boolean>;
12
+ constructor(rootDb: Database, mapName: string) {
13
+ this.map = new LmdbAztecMap(rootDb, mapName);
14
+ }
15
+
16
+ close(): Promise<void> {
17
+ return this.map.close();
18
+ }
19
+
20
+ has(key: K): boolean {
21
+ return this.map.has(key);
22
+ }
23
+
24
+ add(key: K): Promise<void> {
25
+ return this.map.set(key, true);
26
+ }
27
+
28
+ delete(key: K): Promise<void> {
29
+ return this.map.delete(key);
30
+ }
31
+
32
+ entries(range: Range<K> = {}): IterableIterator<K> {
33
+ return this.map.keys(range);
34
+ }
35
+ }
package/src/lmdb/store.ts CHANGED
@@ -5,11 +5,13 @@ import { type Database, type Key, type RootDatabase, open } from 'lmdb';
5
5
  import { type AztecArray } from '../interfaces/array.js';
6
6
  import { type AztecCounter } from '../interfaces/counter.js';
7
7
  import { type AztecMap, type AztecMultiMap } from '../interfaces/map.js';
8
+ import { type AztecSet } from '../interfaces/set.js';
8
9
  import { type AztecSingleton } from '../interfaces/singleton.js';
9
10
  import { type AztecKVStore } from '../interfaces/store.js';
10
11
  import { LmdbAztecArray } from './array.js';
11
12
  import { LmdbAztecCounter } from './counter.js';
12
13
  import { LmdbAztecMap } from './map.js';
14
+ import { LmdbAztecSet } from './set.js';
13
15
  import { LmdbAztecSingleton } from './singleton.js';
14
16
 
15
17
  /**
@@ -71,6 +73,15 @@ export class AztecLmdbStore implements AztecKVStore {
71
73
  return new LmdbAztecMap(this.#data, name);
72
74
  }
73
75
 
76
+ /**
77
+ * Creates a new AztecSet in the store.
78
+ * @param name - Name of the set
79
+ * @returns A new AztecSet
80
+ */
81
+ openSet<K extends string | number>(name: string): AztecSet<K> {
82
+ return new LmdbAztecSet(this.#data, name);
83
+ }
84
+
74
85
  /**
75
86
  * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
76
87
  * @param name - Name of the map
package/src/utils.ts CHANGED
@@ -1,9 +1,17 @@
1
1
  import { type EthAddress } from '@aztec/foundation/eth-address';
2
- import { type Logger } from '@aztec/foundation/log';
2
+ import { type Logger, createDebugLogger } from '@aztec/foundation/log';
3
3
 
4
4
  import { type AztecKVStore } from './interfaces/store.js';
5
5
  import { AztecLmdbStore } from './lmdb/store.js';
6
6
 
7
+ export function createStore(
8
+ config: { dataDirectory: string | undefined },
9
+ rollupAddress: EthAddress,
10
+ log: Logger = createDebugLogger('aztec:kv-store'),
11
+ ) {
12
+ return initStoreForRollup(AztecLmdbStore.open(config.dataDirectory, false, log), rollupAddress, log);
13
+ }
14
+
7
15
  /**
8
16
  * Clears the store if the rollup address does not match the one stored in the database.
9
17
  * This is to prevent data from being accidentally shared between different rollup instances.