@aztec/kv-store 0.0.1-commit.b9865e97 → 0.0.1-commit.be03c316

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 (80) hide show
  1. package/README.md +10 -8
  2. package/dest/deprecated/indexeddb/array.d.ts +22 -0
  3. package/dest/deprecated/indexeddb/array.d.ts.map +1 -0
  4. package/dest/deprecated/indexeddb/index.d.ts +7 -0
  5. package/dest/deprecated/indexeddb/index.d.ts.map +1 -0
  6. package/dest/deprecated/indexeddb/index.js +8 -0
  7. package/dest/deprecated/indexeddb/map.d.ts +38 -0
  8. package/dest/deprecated/indexeddb/map.d.ts.map +1 -0
  9. package/dest/deprecated/indexeddb/multi_map.d.ts +14 -0
  10. package/dest/deprecated/indexeddb/multi_map.d.ts.map +1 -0
  11. package/dest/deprecated/indexeddb/set.d.ts +17 -0
  12. package/dest/deprecated/indexeddb/set.d.ts.map +1 -0
  13. package/dest/deprecated/indexeddb/singleton.d.ts +17 -0
  14. package/dest/deprecated/indexeddb/singleton.d.ts.map +1 -0
  15. package/dest/deprecated/indexeddb/store.d.ts +98 -0
  16. package/dest/deprecated/indexeddb/store.d.ts.map +1 -0
  17. package/dest/{indexeddb → deprecated/indexeddb}/store.js +2 -0
  18. package/dest/lmdb-v2/factory.d.ts +3 -2
  19. package/dest/lmdb-v2/factory.d.ts.map +1 -1
  20. package/dest/lmdb-v2/factory.js +2 -1
  21. package/dest/sqlite-opfs/errors.d.ts +28 -1
  22. package/dest/sqlite-opfs/errors.d.ts.map +1 -1
  23. package/dest/sqlite-opfs/errors.js +43 -0
  24. package/dest/sqlite-opfs/index.d.ts +3 -5
  25. package/dest/sqlite-opfs/index.d.ts.map +1 -1
  26. package/dest/sqlite-opfs/index.js +2 -8
  27. package/dest/sqlite-opfs/manage.d.ts +22 -0
  28. package/dest/sqlite-opfs/manage.d.ts.map +1 -0
  29. package/dest/sqlite-opfs/manage.js +38 -0
  30. package/dest/sqlite-opfs/pool_integrity.d.ts +20 -0
  31. package/dest/sqlite-opfs/pool_integrity.d.ts.map +1 -0
  32. package/dest/sqlite-opfs/pool_integrity.js +282 -0
  33. package/dest/sqlite-opfs/pool_lock.d.ts +8 -0
  34. package/dest/sqlite-opfs/pool_lock.d.ts.map +1 -0
  35. package/dest/sqlite-opfs/pool_lock.js +47 -0
  36. package/dest/sqlite-opfs/store.d.ts +6 -1
  37. package/dest/sqlite-opfs/store.d.ts.map +1 -1
  38. package/dest/sqlite-opfs/store.js +69 -33
  39. package/dest/sqlite-opfs/worker.js +39 -13
  40. package/dest/stores/l2_tips_store.d.ts +6 -12
  41. package/dest/stores/l2_tips_store.d.ts.map +1 -1
  42. package/dest/stores/l2_tips_store.js +22 -41
  43. package/package.json +8 -8
  44. package/src/{indexeddb → deprecated/indexeddb}/array.ts +2 -2
  45. package/src/deprecated/indexeddb/index.ts +12 -0
  46. package/src/{indexeddb → deprecated/indexeddb}/map.ts +2 -2
  47. package/src/{indexeddb → deprecated/indexeddb}/multi_map.ts +2 -2
  48. package/src/{indexeddb → deprecated/indexeddb}/set.ts +2 -2
  49. package/src/{indexeddb → deprecated/indexeddb}/singleton.ts +2 -2
  50. package/src/{indexeddb → deprecated/indexeddb}/store.ts +10 -9
  51. package/src/lmdb-v2/factory.ts +7 -1
  52. package/src/sqlite-opfs/errors.ts +50 -0
  53. package/src/sqlite-opfs/index.ts +8 -20
  54. package/src/sqlite-opfs/manage.ts +46 -0
  55. package/src/sqlite-opfs/pool_integrity.ts +327 -0
  56. package/src/sqlite-opfs/pool_lock.ts +62 -0
  57. package/src/sqlite-opfs/store.ts +57 -23
  58. package/src/sqlite-opfs/worker.ts +41 -13
  59. package/src/stores/l2_tips_store.ts +18 -40
  60. package/dest/indexeddb/array.d.ts +0 -22
  61. package/dest/indexeddb/array.d.ts.map +0 -1
  62. package/dest/indexeddb/index.d.ts +0 -7
  63. package/dest/indexeddb/index.d.ts.map +0 -1
  64. package/dest/indexeddb/index.js +0 -16
  65. package/dest/indexeddb/map.d.ts +0 -38
  66. package/dest/indexeddb/map.d.ts.map +0 -1
  67. package/dest/indexeddb/multi_map.d.ts +0 -14
  68. package/dest/indexeddb/multi_map.d.ts.map +0 -1
  69. package/dest/indexeddb/set.d.ts +0 -17
  70. package/dest/indexeddb/set.d.ts.map +0 -1
  71. package/dest/indexeddb/singleton.d.ts +0 -17
  72. package/dest/indexeddb/singleton.d.ts.map +0 -1
  73. package/dest/indexeddb/store.d.ts +0 -96
  74. package/dest/indexeddb/store.d.ts.map +0 -1
  75. package/src/indexeddb/index.ts +0 -31
  76. /package/dest/{indexeddb → deprecated/indexeddb}/array.js +0 -0
  77. /package/dest/{indexeddb → deprecated/indexeddb}/map.js +0 -0
  78. /package/dest/{indexeddb → deprecated/indexeddb}/multi_map.js +0 -0
  79. /package/dest/{indexeddb → deprecated/indexeddb}/set.js +0 -0
  80. /package/dest/{indexeddb → deprecated/indexeddb}/singleton.js +0 -0
package/README.md CHANGED
@@ -1,13 +1,6 @@
1
1
  # KV Store
2
2
 
3
- The Aztec KV store is an implementation of a durable key-value database with a pluggable backend. Four backends are available, each exposed as its own package entrypoint:
4
-
5
- - `@aztec/kv-store/lmdb-v2`: server / Node. The current default for node components.
6
- - `@aztec/kv-store/lmdb`: the legacy LMDB backend, backed by [`lmdb-js`](https://github.com/kriszyp/lmdb-js).
7
- - `@aztec/kv-store/indexeddb`: browser, backed by IndexedDB.
8
- - `@aztec/kv-store/sqlite-opfs`: browser, backed by SQLite over the Origin Private File System.
9
-
10
- The backend is selected at import time. You import `createStore` (and friends) from the entrypoint you want.
3
+ The Aztec KV store is an implementation of a durable key-value database with a pluggable backend.
11
4
 
12
5
  This package exports a number of primitive data structures that can be used to build domain-specific databases in each node component (e.g. a PXE database or an Archiver database). The data structures supported:
13
6
 
@@ -15,3 +8,12 @@ This package exports a number of primitive data structures that can be used to b
15
8
  - array - works like a normal in-memory JS array. It can't contain holes and it can be used as a stack (push-pop mechanics).
16
9
  - map - a hashmap where keys can be numbers or strings
17
10
  - multi-map - just like a map but each key holds multiple values. Can be used for indexing into other data structures
11
+
12
+ ## Backend selection
13
+
14
+ The backend is selected at import time, you import `createStore` (and friends) from the entrypoint you want:
15
+
16
+ - `@aztec/kv-store/lmdb-v2`: server / Node. The current default for node components.
17
+ - `@aztec/kv-store/lmdb`: the legacy LMDB backend, backed by [`lmdb-js`](https://github.com/kriszyp/lmdb-js).
18
+ - `@aztec/kv-store/sqlite-opfs`: the recommended browser backend, encryption-at-rest capable, backed by SQLite over the Origin Private File System (OPFS).
19
+ - `@aztec/kv-store/deprecated/indexeddb`: **deprecated** browser backend, backed by IndexedDB. New browser code must use `@aztec/kv-store/sqlite-opfs`, as this backend is on its way to being fully deprecated.
@@ -0,0 +1,22 @@
1
+ import type { IDBPDatabase, IDBPObjectStore } from 'idb';
2
+ import type { AztecAsyncArray } from '../../interfaces/array.js';
3
+ import type { Value } from '../../interfaces/common.js';
4
+ import type { AztecIDBSchema } from './store.js';
5
+ /**
6
+ * A persistent array backed by IndexedDB.
7
+ */
8
+ export declare class IndexedDBAztecArray<T extends Value> implements AztecAsyncArray<T> {
9
+ #private;
10
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, name: string);
11
+ set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
12
+ get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
13
+ lengthAsync(): Promise<number>;
14
+ push(...vals: T[]): Promise<number>;
15
+ pop(): Promise<T | undefined>;
16
+ atAsync(index: number): Promise<T | undefined>;
17
+ setAt(index: number, val: T): Promise<boolean>;
18
+ entriesAsync(): AsyncIterableIterator<[number, T]>;
19
+ valuesAsync(): AsyncIterableIterator<T>;
20
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXByZWNhdGVkL2luZGV4ZWRkYi9hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBR3pELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRDs7R0FFRztBQUNILHFCQUFhLG1CQUFtQixDQUFDLENBQUMsU0FBUyxLQUFLLENBQUUsWUFBVyxlQUFlLENBQUMsQ0FBQyxDQUFDOztJQU03RSxZQUFZLE1BQU0sRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFJN0Q7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxTQUFTLEVBRXBGO0lBRUQsSUFBSSxFQUFFLElBQUksZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FFdkU7SUFFSyxXQUFXLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQU1uQztJQUVLLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBY3hDO0lBRUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBV2xDO0lBRUssT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FTbkQ7SUFFSyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FvQm5EO0lBRU0sWUFBWSxJQUFJLHFCQUFxQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBTXhEO0lBRU0sV0FBVyxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUk3QztJQUVELENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUVqRDtDQUtGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;;IAM7E,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAI7D;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,IAAI,EAAE,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAEvE;IAEK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAMnC;IAEK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAcxC;IAEK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAWlC;IAEK,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CASnD;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnD;IAEM,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAMxD;IAEM,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAI7C;IAED,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAEjD;CAKF"}
@@ -0,0 +1,7 @@
1
+ import { AztecIndexedDBStore } from './store.js';
2
+ export { AztecIndexedDBStore } from './store.js';
3
+ /**
4
+ * @deprecated The IndexedDB backend is being retired. Use `@aztec/kv-store/sqlite-opfs` instead.
5
+ */
6
+ export declare function openTmpStore(ephemeral?: boolean): Promise<AztecIndexedDBStore>;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXByZWNhdGVkL2luZGV4ZWRkYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gsd0JBQWdCLFlBQVksQ0FBQyxTQUFTLEdBQUUsT0FBZSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUVyRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAErF"}
@@ -0,0 +1,8 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { AztecIndexedDBStore } from './store.js';
3
+ export { AztecIndexedDBStore } from './store.js';
4
+ /**
5
+ * @deprecated The IndexedDB backend is being retired. Use `@aztec/kv-store/sqlite-opfs` instead.
6
+ */ export function openTmpStore(ephemeral = false) {
7
+ return AztecIndexedDBStore.open(createLogger('kv-store:indexeddb'), undefined, ephemeral);
8
+ }
@@ -0,0 +1,38 @@
1
+ import type { IDBPDatabase, IDBPObjectStore } from 'idb';
2
+ import type { Key, Range, Value } from '../../interfaces/common.js';
3
+ import type { AztecAsyncMap } from '../../interfaces/map.js';
4
+ import type { AztecIDBSchema } from './store.js';
5
+ /**
6
+ * A map backed by IndexedDB.
7
+ */
8
+ export declare class IndexedDBAztecMap<K extends Key, V extends Value> implements AztecAsyncMap<K, V> {
9
+ #private;
10
+ protected name: string;
11
+ protected container: string;
12
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, mapName: string);
13
+ set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
14
+ get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
15
+ getAsync(key: K): Promise<V | undefined>;
16
+ hasAsync(key: K): Promise<boolean>;
17
+ sizeAsync(): Promise<number>;
18
+ set(key: K, val: V): Promise<void>;
19
+ setMany(entries: {
20
+ key: K;
21
+ value: V;
22
+ }[]): Promise<void>;
23
+ swap(_key: K, _fn: (val: V | undefined) => V): Promise<void>;
24
+ setIfNotExists(key: K, val: V): Promise<boolean>;
25
+ delete(key: K): Promise<void>;
26
+ entriesAsync(range?: Range<K>): AsyncIterableIterator<[K, V]>;
27
+ valuesAsync(range?: Range<K>): AsyncIterableIterator<V>;
28
+ keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
29
+ /**
30
+ * IndexedDB's structured clone downcasts Buffer (a Node.js subclass of Uint8Array) to plain Uint8Array.
31
+ * This breaks .toString() behavior: Buffer.toString() returns UTF-8, Uint8Array.toString() returns
32
+ * comma-separated decimal bytes. We restore Buffer identity on read so callers get consistent behavior.
33
+ */
34
+ protected restoreBuffers(val: V): V;
35
+ protected normalizeKey(key: K): (string | number | Uint8Array)[];
36
+ protected slot(key: K, index?: number): string;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVwcmVjYXRlZC9pbmRleGVkZGIvbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxxQkFBYSxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxLQUFLLENBQUUsWUFBVyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzs7SUFDM0YsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDdkIsU0FBUyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFLNUIsWUFBWSxNQUFNLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBSWhFO0lBRUQsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLEdBQUcsU0FBUyxFQUVwRjtJQUVELElBQUksRUFBRSxJQUFJLGVBQWUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBRXZFO0lBRUssUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FHN0M7SUFFSyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBR3ZDO0lBRUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FJakM7SUFFSyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FTdkM7SUFFSyxPQUFPLENBQUMsT0FBTyxFQUFFO1FBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7S0FBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUk1RDtJQUVELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTNEO0lBRUssY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBTXJEO0lBRUssTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVsQztJQUVNLFlBQVksQ0FBQyxLQUFLLEdBQUUsS0FBSyxDQUFDLENBQUMsQ0FBTSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBbUJ2RTtJQUVNLFdBQVcsQ0FBQyxLQUFLLEdBQUUsS0FBSyxDQUFDLENBQUMsQ0FBTSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUlqRTtJQUVNLFNBQVMsQ0FBQyxLQUFLLEdBQUUsS0FBSyxDQUFDLENBQUMsQ0FBTSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUkvRDtJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUtsQztJQU1ELFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FFL0Q7SUFFRCxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsS0FBSyxHQUFFLE1BQVUsR0FBRyxNQUFNLENBRWhEO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;;IAC3F,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAK5B,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAIhE;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,IAAI,EAAE,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAEvE;IAEK,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAG7C;IAEK,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAGvC;IAEK,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAIjC;IAEK,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CASvC;IAEK,OAAO,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D;IAED,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;IAEK,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrD;IAEK,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAElC;IAEM,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAmBvE;IAEM,WAAW,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAIjE;IAEM,SAAS,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAI/D;IAED;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAKlC;IAMD,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,CAE/D;IAED,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,CAEhD;CACF"}
@@ -0,0 +1,14 @@
1
+ import type { Key, Value } from '../../interfaces/common.js';
2
+ import type { AztecAsyncMultiMap } from '../../interfaces/multi_map.js';
3
+ import { IndexedDBAztecMap } from './map.js';
4
+ /**
5
+ * A multi map backed by IndexedDB.
6
+ */
7
+ export declare class IndexedDBAztecMultiMap<K extends Key, V extends Value> extends IndexedDBAztecMap<K, V> implements AztecAsyncMultiMap<K, V> {
8
+ set(key: K, val: V): Promise<void>;
9
+ getValuesAsync(key: K): AsyncIterableIterator<V>;
10
+ getValueCountAsync(key: K): Promise<number>;
11
+ deleteValue(key: K, val: V): Promise<void>;
12
+ delete(key: K): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlfbWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVwcmVjYXRlZC9pbmRleGVkZGIvbXVsdGlfbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU3Qzs7R0FFRztBQUNILHFCQUFhLHNCQUFzQixDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssQ0FDaEUsU0FBUSxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUM5QixZQUFXLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFcEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBa0NoRDtJQUVNLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQVl0RDtJQUVELGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVUxQztJQUVLLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWMvQztJQUVjLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FZM0M7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi_map.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/multi_map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C;;GAEG;AACH,qBAAa,sBAAsB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAChE,SAAQ,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAC9B,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAEpB,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChD;IAEM,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAYtD;IAED,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAU1C;IAEK,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/C;IAEc,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3C;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { IDBPDatabase, IDBPObjectStore } from 'idb';
2
+ import type { Key, Range } from '../../interfaces/common.js';
3
+ import type { AztecAsyncSet } from '../../interfaces/set.js';
4
+ import type { AztecIDBSchema } from './store.js';
5
+ /**
6
+ * A set backed by IndexedDB.
7
+ */
8
+ export declare class IndexedDBAztecSet<K extends Key> implements AztecAsyncSet<K> {
9
+ private map;
10
+ constructor(rootDb: IDBPDatabase<AztecIDBSchema>, mapName: string);
11
+ set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
12
+ hasAsync(key: K): Promise<boolean>;
13
+ add(key: K): Promise<void>;
14
+ delete(key: K): Promise<void>;
15
+ entriesAsync(range?: Range<K>): AsyncIterableIterator<K>;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVwcmVjYXRlZC9pbmRleGVkZGIvc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTdELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRDs7R0FFRztBQUNILHFCQUFhLGlCQUFpQixDQUFDLENBQUMsU0FBUyxHQUFHLENBQUUsWUFBVyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLE9BQU8sQ0FBQyxHQUFHLENBQWdDO0lBRTNDLFlBQVksTUFBTSxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUVoRTtJQUVELElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsY0FBYyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsRUFFcEY7SUFFRCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRWpDO0lBRUQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUV6QjtJQUVELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFNUI7SUFFTSxZQUFZLENBQUMsS0FBSyxHQUFFLEtBQUssQ0FBQyxDQUFDLENBQU0sR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FFbEU7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAgC;IAE3C,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM,EAEhE;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjC;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzB;IAED,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEM,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAElE;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { IDBPDatabase, IDBPObjectStore } from 'idb';
2
+ import type { Value } from '../../interfaces/common.js';
3
+ import type { AztecAsyncSingleton } from '../../interfaces/singleton.js';
4
+ import type { AztecIDBSchema } from './store.js';
5
+ /**
6
+ * Stores a single value in IndexedDB.
7
+ */
8
+ export declare class IndexedDBAztecSingleton<T extends Value> implements AztecAsyncSingleton<T> {
9
+ #private;
10
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, name: string);
11
+ set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
12
+ get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
13
+ getAsync(): Promise<T | undefined>;
14
+ set(val: T): Promise<boolean>;
15
+ delete(): Promise<boolean>;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVwcmVjYXRlZC9pbmRleGVkZGIvc2luZ2xldG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHekQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFakQ7O0dBRUc7QUFDSCxxQkFBYSx1QkFBdUIsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFFLFlBQVcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDOztJQU1yRixZQUFZLE1BQU0sRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFJN0Q7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsR0FBRyxTQUFTLEVBRXBGO0lBRUQsSUFBSSxFQUFFLElBQUksZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FFdkU7SUFFSyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FHdkM7SUFFSyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBVWxDO0lBRUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FHL0I7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAGzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,uBAAuB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;;IAMrF,YAAY,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAI7D;IAED,IAAI,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,EAEpF;IAED,IAAI,EAAE,IAAI,eAAe,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAEvE;IAEK,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAGvC;IAEK,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUlC;IAEK,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAG/B;CACF"}
@@ -0,0 +1,98 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import { type DBSchema, type IDBPDatabase } from 'idb';
3
+ import type { AztecAsyncArray } from '../../interfaces/array.js';
4
+ import type { Key, StoreSize, Value } from '../../interfaces/common.js';
5
+ import type { AztecAsyncCounter } from '../../interfaces/counter.js';
6
+ import type { AztecAsyncMap } from '../../interfaces/map.js';
7
+ import type { AztecAsyncMultiMap } from '../../interfaces/multi_map.js';
8
+ import type { AztecAsyncSet } from '../../interfaces/set.js';
9
+ import type { AztecAsyncSingleton } from '../../interfaces/singleton.js';
10
+ import type { AztecAsyncKVStore } from '../../interfaces/store.js';
11
+ export type StoredData<V extends Value> = {
12
+ value: V;
13
+ container: string;
14
+ key: (string | number | Uint8Array)[];
15
+ keyCount: number;
16
+ slot: string;
17
+ hash: string;
18
+ };
19
+ export interface AztecIDBSchema extends DBSchema {
20
+ data: {
21
+ value: StoredData<any>;
22
+ key: string;
23
+ indexes: {
24
+ container: string;
25
+ key: any;
26
+ keyCount: number;
27
+ hash: string;
28
+ };
29
+ };
30
+ }
31
+ /**
32
+ * A key-value store backed by IndexedDB.
33
+ *
34
+ * @deprecated The IndexedDB backend is being retired. Use `@aztec/kv-store/sqlite-opfs` instead.
35
+ */
36
+ export declare class AztecIndexedDBStore implements AztecAsyncKVStore {
37
+ #private;
38
+ readonly isEphemeral: boolean;
39
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, isEphemeral: boolean, name: string);
40
+ /**
41
+ * Creates a new AztecKVStore backed by IndexedDB. The path to the database is optional. If not provided,
42
+ * the database will be stored in a temporary location and be deleted when the process exists.
43
+ *
44
+ *
45
+ * @param path - A path on the disk to store the database. Optional
46
+ * @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
47
+ * @param log - A logger to use. Optional
48
+ * @returns The store
49
+ */
50
+ static open(log: Logger, name?: string, ephemeral?: boolean): Promise<AztecIndexedDBStore>;
51
+ /**
52
+ * Creates a new AztecMap in the store.
53
+ * @param name - Name of the map
54
+ * @returns A new AztecMap
55
+ */
56
+ openMap<K extends Key, V extends Value>(name: string): AztecAsyncMap<K, V>;
57
+ /**
58
+ * Creates a new AztecSet in the store.
59
+ * @param name - Name of the set
60
+ * @returns A new AztecSet
61
+ */
62
+ openSet<K extends Key>(name: string): AztecAsyncSet<K>;
63
+ /**
64
+ * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
65
+ * @param name - Name of the map
66
+ * @returns A new AztecMultiMap
67
+ */
68
+ openMultiMap<K extends Key, V extends Value>(name: string): AztecAsyncMultiMap<K, V>;
69
+ openCounter<K extends Key>(_name: string): AztecAsyncCounter<K>;
70
+ /**
71
+ * Creates a new AztecArray in the store.
72
+ * @param name - Name of the array
73
+ * @returns A new AztecArray
74
+ */
75
+ openArray<T extends Value>(name: string): AztecAsyncArray<T>;
76
+ /**
77
+ * Creates a new AztecSingleton in the store.
78
+ * @param name - Name of the singleton
79
+ * @returns A new AztecSingleton
80
+ */
81
+ openSingleton<T extends Value>(name: string): AztecAsyncSingleton<T>;
82
+ /**
83
+ * Runs a callback in a transaction.
84
+ * @param callback - Function to execute in a transaction
85
+ * @returns A promise that resolves to the return value of the callback
86
+ */
87
+ transactionAsync<T>(callback: () => Promise<T>): Promise<T>;
88
+ /**
89
+ * Clears all entries in the store & sub DBs.
90
+ */
91
+ clear(): Promise<void>;
92
+ /** Deletes this store and removes the database */
93
+ delete(): Promise<void>;
94
+ estimateSize(): Promise<StoreSize>;
95
+ close(): Promise<void>;
96
+ backupTo(_dstPath: string, _compact?: boolean): Promise<void>;
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXByZWNhdGVkL2luZGV4ZWRkYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRCxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxZQUFZLEVBQW9CLE1BQU0sS0FBSyxDQUFDO0FBRXpFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU9uRSxNQUFNLE1BQU0sVUFBVSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUk7SUFDeEMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNULFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLElBQUksRUFBRSxNQUFNLENBQUM7Q0FDZCxDQUFDO0FBRUYsTUFBTSxXQUFXLGNBQWUsU0FBUSxRQUFRO0lBQzlDLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUNaLE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRSxNQUFNLENBQUM7WUFDbEIsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUNULFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQztTQUNkLENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRDs7OztHQUlHO0FBQ0gscUJBQWEsbUJBQW9CLFlBQVcsaUJBQWlCOzthQWV6QyxXQUFXLEVBQUUsT0FBTztJQUZ0QyxZQUNFLE1BQU0sRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQ3BCLFdBQVcsRUFBRSxPQUFPLEVBQ3BDLElBQUksRUFBRSxNQUFNLEVBTWI7SUFDRDs7Ozs7Ozs7O09BU0c7SUFDSCxPQUFhLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEdBQUUsT0FBZSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQW1CdEc7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBSXpFO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUlyRDtJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUluRjtJQUVELFdBQVcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBRTlEO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUkzRDtJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUluRTtJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FxQjFEO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQUVWO0lBRUQsa0RBQWtEO0lBQzVDLE1BQU0sa0JBS1g7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUVqQztJQUVLLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzNCO0lBRUQsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFNUQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAoB,MAAM,KAAK,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAOnE,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI;IACxC,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,IAAI,EAAE;QACJ,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QACvB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE;YACP,SAAS,EAAE,MAAM,CAAC;YAClB,GAAG,EAAE,GAAG,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;CACH;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,iBAAiB;;aAezC,WAAW,EAAE,OAAO;IAFtC,YACE,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EACpB,WAAW,EAAE,OAAO,EACpC,IAAI,EAAE,MAAM,EAMb;IACD;;;;;;;;;OASG;IACH,OAAa,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmBtG;IAED;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAIzE;IAED;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAIrD;IAED;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAInF;IAED,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAE9D;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAI3D;IAED;;;;OAIG;IACH,aAAa,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAInE;IAED;;;;OAIG;IACH,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAqB1D;IAED;;OAEG;IACG,KAAK,kBAEV;IAED,kDAAkD;IAC5C,MAAM,kBAKX;IAED,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,CAEjC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAED,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;CACF"}
@@ -7,6 +7,8 @@ import { IndexedDBAztecSet } from './set.js';
7
7
  import { IndexedDBAztecSingleton } from './singleton.js';
8
8
  /**
9
9
  * A key-value store backed by IndexedDB.
10
+ *
11
+ * @deprecated The IndexedDB backend is being retired. Use `@aztec/kv-store/sqlite-opfs` instead.
10
12
  */ export class AztecIndexedDBStore {
11
13
  isEphemeral;
12
14
  #rootDB;
@@ -1,12 +1,13 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
2
  import { type LoggerBindings } from '@aztec/foundation/log';
3
- import { type SchemaVersionMismatchPolicy } from '@aztec/stdlib/database-version/manager';
3
+ import { type SchemaVersionMismatchPolicy, type VersionFileReadFailurePolicy } from '@aztec/stdlib/database-version/manager';
4
4
  import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
5
5
  import { AztecLMDBStoreV2 } from './store.js';
6
6
  /** Optional versioning hooks for persistent LMDB stores. */
7
7
  export type CreateStoreOptions = {
8
8
  onUpgrade?: (dataDir: string, currentVersion: number, latestVersion: number) => Promise<void>;
9
9
  schemaVersionMismatchPolicy?: SchemaVersionMismatchPolicy;
10
+ versionFileReadFailurePolicy?: VersionFileReadFailurePolicy;
10
11
  };
11
12
  export declare function createStore(name: string, schemaVersion: number, config: DataStoreConfig, bindings?: LoggerBindings, options?: CreateStoreOptions): Promise<AztecLMDBStoreV2>;
12
13
  /**
@@ -31,4 +32,4 @@ export declare function openStoreAt(dataDir: string, dbMapSizeKb?: number, maxRe
31
32
  */
32
33
  export declare function cloneEphemeralStoreFrom(srcDataMdbPath: string, name: string, dbMapSizeKb?: number, maxReaders?: number, bindings?: LoggerBindings): Promise<AztecLMDBStoreV2>;
33
34
  export declare function openVersionedStoreAt(dataDirectory: string, schemaVersion: number, rollupAddress: EthAddress, dbMapSizeKb?: number, maxReaders?: number, bindings?: LoggerBindings): Promise<AztecLMDBStoreV2>;
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBMEIsS0FBSywyQkFBMkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xILE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUk5Qyw0REFBNEQ7QUFDNUQsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlGLDJCQUEyQixDQUFDLEVBQUUsMkJBQTJCLENBQUM7Q0FDM0QsQ0FBQztBQUVGLHdCQUFzQixXQUFXLENBQy9CLElBQUksRUFBRSxNQUFNLEVBQ1osYUFBYSxFQUFFLE1BQU0sRUFDckIsTUFBTSxFQUFFLGVBQWUsRUFDdkIsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUN6QixPQUFPLEdBQUUsa0JBQXVCLEdBQy9CLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQWdDM0I7QUFFRDs7OztHQUlHO0FBQ0gsd0JBQXNCLFlBQVksQ0FDaEMsSUFBSSxFQUFFLE1BQU0sRUFDWixhQUFhLEdBQUUsT0FBYyxFQUM3QixXQUFXLFNBQXFCLEVBQ2hDLFVBQVUsU0FBYyxFQUN4QixRQUFRLENBQUMsRUFBRSxjQUFjLEdBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQW9CM0I7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQixrQkFBa0IsQ0FDdEMsSUFBSSxFQUFFLE1BQU0sRUFDWixXQUFXLFNBQXFCLEVBQ2hDLFVBQVUsU0FBYyxFQUN4QixRQUFRLENBQUMsRUFBRSxjQUFjLEdBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQWUzQjtBQUVELHdCQUFzQixXQUFXLENBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQ2YsV0FBVyxTQUFxQixFQUNoQyxVQUFVLFNBQWMsRUFDeEIsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FJM0I7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQix1QkFBdUIsQ0FDM0MsY0FBYyxFQUFFLE1BQU0sRUFDdEIsSUFBSSxFQUFFLE1BQU0sRUFDWixXQUFXLFNBQXFCLEVBQ2hDLFVBQVUsU0FBYyxFQUN4QixRQUFRLENBQUMsRUFBRSxjQUFjLEdBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQWdCM0I7QUFFRCx3QkFBc0Isb0JBQW9CLENBQ3hDLGFBQWEsRUFBRSxNQUFNLEVBQ3JCLGFBQWEsRUFBRSxNQUFNLEVBQ3JCLGFBQWEsRUFBRSxVQUFVLEVBQ3pCLFdBQVcsU0FBcUIsRUFDaEMsVUFBVSxTQUFjLEVBQ3hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBVTNCIn0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFFTCxLQUFLLDJCQUEyQixFQUNoQyxLQUFLLDRCQUE0QixFQUNsQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUk5Qyw0REFBNEQ7QUFDNUQsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlGLDJCQUEyQixDQUFDLEVBQUUsMkJBQTJCLENBQUM7SUFDMUQsNEJBQTRCLENBQUMsRUFBRSw0QkFBNEIsQ0FBQztDQUM3RCxDQUFDO0FBRUYsd0JBQXNCLFdBQVcsQ0FDL0IsSUFBSSxFQUFFLE1BQU0sRUFDWixhQUFhLEVBQUUsTUFBTSxFQUNyQixNQUFNLEVBQUUsZUFBZSxFQUN2QixRQUFRLENBQUMsRUFBRSxjQUFjLEVBQ3pCLE9BQU8sR0FBRSxrQkFBdUIsR0FDL0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBaUMzQjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsWUFBWSxDQUNoQyxJQUFJLEVBQUUsTUFBTSxFQUNaLGFBQWEsR0FBRSxPQUFjLEVBQzdCLFdBQVcsU0FBcUIsRUFDaEMsVUFBVSxTQUFjLEVBQ3hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBb0IzQjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLGtCQUFrQixDQUN0QyxJQUFJLEVBQUUsTUFBTSxFQUNaLFdBQVcsU0FBcUIsRUFDaEMsVUFBVSxTQUFjLEVBQ3hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBZTNCO0FBRUQsd0JBQXNCLFdBQVcsQ0FDL0IsT0FBTyxFQUFFLE1BQU0sRUFDZixXQUFXLFNBQXFCLEVBQ2hDLFVBQVUsU0FBYyxFQUN4QixRQUFRLENBQUMsRUFBRSxjQUFjLEdBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUkzQjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLHVCQUF1QixDQUMzQyxjQUFjLEVBQUUsTUFBTSxFQUN0QixJQUFJLEVBQUUsTUFBTSxFQUNaLFdBQVcsU0FBcUIsRUFDaEMsVUFBVSxTQUFjLEVBQ3hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBZ0IzQjtBQUVELHdCQUFzQixvQkFBb0IsQ0FDeEMsYUFBYSxFQUFFLE1BQU0sRUFDckIsYUFBYSxFQUFFLE1BQU0sRUFDckIsYUFBYSxFQUFFLFVBQVUsRUFDekIsV0FBVyxTQUFxQixFQUNoQyxVQUFVLFNBQWMsRUFDeEIsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FVM0IifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAA0B,KAAK,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAClH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;CAC3D,CAAC;AAEF,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAgC3B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,OAAc,EAC7B,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAoB3B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAI3B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,UAAU,EACzB,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAU3B"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAClC,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;CAC7D,CAAC;AAEF,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,OAAc,EAC7B,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAoB3B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAI3B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,UAAU,EACzB,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAU3B"}
@@ -24,7 +24,8 @@ export async function createStore(name, schemaVersion, config, bindings, options
24
24
  dataDirectory: subDir,
25
25
  onOpen: (dbDirectory)=>AztecLMDBStoreV2.new(dbDirectory, config.dataStoreMapSizeKb, MAX_READERS, ()=>Promise.resolve(), bindings),
26
26
  onUpgrade: options.onUpgrade,
27
- schemaVersionMismatchPolicy: options.schemaVersionMismatchPolicy
27
+ schemaVersionMismatchPolicy: options.schemaVersionMismatchPolicy,
28
+ versionFileReadFailurePolicy: options.versionFileReadFailurePolicy
28
29
  });
29
30
  log.info(`Creating ${name} data store at directory ${subDir} with map size ${config.dataStoreMapSizeKb} KB (LMDB v2)`);
30
31
  [store] = await versionManager.open();
@@ -24,4 +24,31 @@ export declare class SqliteEncryptionError extends Error {
24
24
  * strings.
25
25
  **/
26
26
  export declare function isDecryptFailureMessage(message: string): boolean;
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3FsaXRlLW9wZnMvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE1BQU0seUJBQXlCLEdBQ2pDLG9CQUFvQixHQUNwQix3Q0FBd0MsR0FDeEMsZ0JBQWdCLENBQUM7QUFFckI7O0lBRUk7QUFDSixxQkFBYSxxQkFBc0IsU0FBUSxLQUFLO0lBQzlDLFFBQVEsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLENBQUM7SUFFekMsWUFBWSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBSXZGO0NBQ0Y7QUFVRDs7O0lBR0k7QUFDSix3QkFBZ0IsdUJBQXVCLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBRWhFIn0=
27
+ /**
28
+ * Error thrown by sqlite-opfs when the on-disk database image is corrupt
29
+ * (`SQLITE_CORRUPT`, result code 11 — "database disk image is malformed").
30
+ *
31
+ * Distinct from {@link SqliteEncryptionError}: no key recovers a corrupt image,
32
+ * so there is nothing to retry. The only escape is to delete the store and start
33
+ * fresh, so consumers pattern-match on `instanceof SqliteCorruptionError` to wipe
34
+ * and reopen rather than surfacing a dead-end error.
35
+ **/
36
+ export declare class SqliteCorruptionError extends Error {
37
+ constructor(message: string, opts?: {
38
+ cause?: unknown;
39
+ });
40
+ }
41
+ /** Error thrown when another browser context already owns a store's OPFS pool. */
42
+ export declare class SqlitePoolBusyError extends Error {
43
+ readonly poolDirectory: string;
44
+ constructor(poolDirectory: string);
45
+ }
46
+ /** Error thrown when the browser context does not expose the Web Locks API required by the OPFS SAH pool. */
47
+ export declare class SqliteWebLocksUnavailableError extends Error {
48
+ constructor();
49
+ }
50
+ /**
51
+ * Returns `true` if `message` matches one of the known SQLite corruption strings.
52
+ **/
53
+ export declare function isCorruptionMessage(message: string): boolean;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3FsaXRlLW9wZnMvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE1BQU0seUJBQXlCLEdBQ2pDLG9CQUFvQixHQUNwQix3Q0FBd0MsR0FDeEMsZ0JBQWdCLENBQUM7QUFFckI7O0lBRUk7QUFDSixxQkFBYSxxQkFBc0IsU0FBUSxLQUFLO0lBQzlDLFFBQVEsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLENBQUM7SUFFekMsWUFBWSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBSXZGO0NBQ0Y7QUFVRDs7O0lBR0k7QUFDSix3QkFBZ0IsdUJBQXVCLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBRWhFO0FBRUQ7Ozs7Ozs7O0lBUUk7QUFDSixxQkFBYSxxQkFBc0IsU0FBUSxLQUFLO0lBQzlDLFlBQVksT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBR3REO0NBQ0Y7QUFFRCxrRkFBa0Y7QUFDbEYscUJBQWEsbUJBQW9CLFNBQVEsS0FBSzthQUNoQixhQUFhLEVBQUUsTUFBTTtJQUFqRCxZQUE0QixhQUFhLEVBQUUsTUFBTSxFQUdoRDtDQUNGO0FBRUQsNkdBQTZHO0FBQzdHLHFCQUFhLDhCQUErQixTQUFRLEtBQUs7SUFDdkQsY0FHQztDQUNGO0FBYUQ7O0lBRUk7QUFDSix3QkFBZ0IsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBRTVEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/sqlite-opfs/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,yBAAyB,GACjC,oBAAoB,GACpB,wCAAwC,GACxC,gBAAgB,CAAC;AAErB;;IAEI;AACJ,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IAEzC,YAAY,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAIvF;CACF;AAUD;;;IAGI;AACJ,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/sqlite-opfs/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,yBAAyB,GACjC,oBAAoB,GACpB,wCAAwC,GACxC,gBAAgB,CAAC;AAErB;;IAEI;AACJ,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IAEzC,YAAY,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAIvF;CACF;AAUD;;;IAGI;AACJ,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;;;;IAQI;AACJ,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAGtD;CACF;AAED,kFAAkF;AAClF,qBAAa,mBAAoB,SAAQ,KAAK;aAChB,aAAa,EAAE,MAAM;IAAjD,YAA4B,aAAa,EAAE,MAAM,EAGhD;CACF;AAED,6GAA6G;AAC7G,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,cAGC;CACF;AAaD;;IAEI;AACJ,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D"}
@@ -32,3 +32,46 @@
32
32
  **/ export function isDecryptFailureMessage(message) {
33
33
  return SQLITE3MC_DECRYPT_ERROR_PATTERNS.some((p)=>p.test(message));
34
34
  }
35
+ /**
36
+ * Error thrown by sqlite-opfs when the on-disk database image is corrupt
37
+ * (`SQLITE_CORRUPT`, result code 11 — "database disk image is malformed").
38
+ *
39
+ * Distinct from {@link SqliteEncryptionError}: no key recovers a corrupt image,
40
+ * so there is nothing to retry. The only escape is to delete the store and start
41
+ * fresh, so consumers pattern-match on `instanceof SqliteCorruptionError` to wipe
42
+ * and reopen rather than surfacing a dead-end error.
43
+ **/ export class SqliteCorruptionError extends Error {
44
+ constructor(message, opts){
45
+ super(message, opts?.cause !== undefined ? {
46
+ cause: opts.cause
47
+ } : undefined);
48
+ this.name = 'SqliteCorruptionError';
49
+ }
50
+ }
51
+ /** Error thrown when another browser context already owns a store's OPFS pool. */ export class SqlitePoolBusyError extends Error {
52
+ poolDirectory;
53
+ constructor(poolDirectory){
54
+ super(`SQLite-OPFS pool "${poolDirectory}" is already in use by another store instance`), this.poolDirectory = poolDirectory;
55
+ this.name = 'SqlitePoolBusyError';
56
+ }
57
+ }
58
+ /** Error thrown when the browser context does not expose the Web Locks API required by the OPFS SAH pool. */ export class SqliteWebLocksUnavailableError extends Error {
59
+ constructor(){
60
+ super('SQLite-OPFS requires the Web Locks API, but it is unavailable in this browser context');
61
+ this.name = 'SqliteWebLocksUnavailableError';
62
+ }
63
+ }
64
+ /**
65
+ * Strings/codes raised by SQLite when a database image is corrupt. Kept disjoint
66
+ * from {@link SQLITE3MC_DECRYPT_ERROR_PATTERNS}: "file is not a database"
67
+ * (SQLITE_NOTADB) is the decrypt signal, whereas a malformed image is the
68
+ * genuinely-unrecoverable SQLITE_CORRUPT.
69
+ **/ const SQLITE_CORRUPTION_ERROR_PATTERNS = [
70
+ /database disk image is malformed/i,
71
+ /\bSQLITE_CORRUPT\b/i
72
+ ];
73
+ /**
74
+ * Returns `true` if `message` matches one of the known SQLite corruption strings.
75
+ **/ export function isCorruptionMessage(message) {
76
+ return SQLITE_CORRUPTION_ERROR_PATTERNS.some((p)=>p.test(message));
77
+ }
@@ -1,10 +1,8 @@
1
- import { type Logger } from '@aztec/foundation/log';
2
- import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
3
1
  import { AztecSQLiteOPFSStore } from './store.js';
4
2
  export { AztecSQLiteOPFSStore } from './store.js';
5
- export { SqliteEncryptionError } from './errors.js';
3
+ export { SqliteCorruptionError, SqliteEncryptionError, SqlitePoolBusyError, SqliteWebLocksUnavailableError, } from './errors.js';
6
4
  export type { SqliteEncryptionErrorCode } from './errors.js';
7
- export declare function createStore(name: string, config: DataStoreConfig, schemaVersion?: number | undefined, log?: Logger): Promise<AztecSQLiteOPFSStore>;
5
+ export { OPFS_POOL_DIR_PREFIX, deletePoolDirectory, deleteStore, listStores, storePoolDirectory } from './manage.js';
8
6
  export declare function openTmpStore(ephemeral?: boolean): Promise<AztecSQLiteOPFSStore>;
9
7
  /**
10
8
  * Convenience helper for tests and consumers that want an encrypted sqlite-opfs
@@ -13,4 +11,4 @@ export declare function openTmpStore(ephemeral?: boolean): Promise<AztecSQLiteOP
13
11
  * on ephemeral `:memory:` databases) in an auto-generated OPFS directory.
14
12
  */
15
13
  export declare function openEncryptedStore(encryptionKey: Uint8Array, name?: string, poolDirectory?: string): Promise<AztecSQLiteOPFSStore>;
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcWxpdGUtb3Bmcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWxELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEQsWUFBWSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdELHdCQUFzQixXQUFXLENBQy9CLElBQUksRUFBRSxNQUFNLEVBQ1osTUFBTSxFQUFFLGVBQWUsRUFDdkIsYUFBYSxHQUFFLE1BQU0sR0FBRyxTQUFxQixFQUM3QyxHQUFHLEdBQUUsTUFBaUMsaUNBVXZDO0FBRUQsd0JBQWdCLFlBQVksQ0FBQyxTQUFTLEdBQUUsT0FBZSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUV0RjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxFQUFFLE1BQU0saUNBRWxHIn0=
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcWxpdGUtb3Bmcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2xELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQiw4QkFBOEIsR0FDL0IsTUFBTSxhQUFhLENBQUM7QUFDckIsWUFBWSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJILHdCQUFnQixZQUFZLENBQUMsU0FBUyxHQUFFLE9BQWUsR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FFdEY7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsRUFBRSxNQUFNLGlDQUVsRyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite-opfs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,aAAa,GAAE,MAAM,GAAG,SAAqB,EAC7C,GAAG,GAAE,MAAiC,iCAUvC;AAED,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEtF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,iCAElG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite-opfs/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAErH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAEtF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,iCAElG"}
@@ -1,14 +1,8 @@
1
1
  import { createLogger } from '@aztec/foundation/log';
2
- import { initStoreForRollupAndSchemaVersion } from '../utils.js';
3
2
  import { AztecSQLiteOPFSStore } from './store.js';
4
3
  export { AztecSQLiteOPFSStore } from './store.js';
5
- export { SqliteEncryptionError } from './errors.js';
6
- export async function createStore(name, config, schemaVersion = undefined, log = createLogger('kv-store')) {
7
- const { dataDirectory } = config;
8
- log.info(dataDirectory ? `Creating ${name} SQLite-OPFS data store with map size ${config.dataStoreMapSizeKb} KB` : `Creating ${name} ephemeral SQLite-OPFS data store with map size ${config.dataStoreMapSizeKb} KB`);
9
- const store = await AztecSQLiteOPFSStore.open(createLogger('kv-store:sqlite-opfs'), name, false);
10
- return initStoreForRollupAndSchemaVersion(store, schemaVersion, config.rollupAddress, log);
11
- }
4
+ export { SqliteCorruptionError, SqliteEncryptionError, SqlitePoolBusyError, SqliteWebLocksUnavailableError } from './errors.js';
5
+ export { OPFS_POOL_DIR_PREFIX, deletePoolDirectory, deleteStore, listStores, storePoolDirectory } from './manage.js';
12
6
  export function openTmpStore(ephemeral = false) {
13
7
  return AztecSQLiteOPFSStore.open(createLogger('kv-store:sqlite-opfs'), undefined, ephemeral);
14
8
  }
@@ -0,0 +1,22 @@
1
+ /** Prefix for the per-store OPFS SAH pool directories owned by this package. */
2
+ export declare const OPFS_POOL_DIR_PREFIX = ".aztec-kv-";
3
+ /**
4
+ * OPFS directory holding a store's SAH pool. One directory per store: the SAH-pool VFS allows only one
5
+ * concurrent instance per directory and its capacity does not grow automatically, so sharing a pool across
6
+ * stores would make concurrently opened stores contend for locks and orphaned stores exhaust pool slots.
7
+ */
8
+ export declare function storePoolDirectory(effectiveName: string): string;
9
+ /**
10
+ * Lists the names of every persistent sqlite-opfs store in this origin, by enumerating the per-store pool
11
+ * directories. Includes stores other than the current one, so wallets can surface and clean up data for
12
+ * networks/versions no longer in use.
13
+ */
14
+ export declare function listStores(): Promise<string[]>;
15
+ /**
16
+ * Permanently deletes a store by effective name (as returned by {@link listStores}). The store must be closed:
17
+ * an open store holds the directory's Web Lock and the removal will reject with `SqlitePoolBusyError`.
18
+ */
19
+ export declare function deleteStore(effectiveName: string): Promise<void>;
20
+ /** Permanently deletes one OPFS SAH-pool directory after exclusively locking it. */
21
+ export declare function deletePoolDirectory(poolDirectory: string): Promise<void>;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3FsaXRlLW9wZnMvbWFuYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGdGQUFnRjtBQUNoRixlQUFPLE1BQU0sb0JBQW9CLGVBQWUsQ0FBQztBQUVqRDs7OztHQUlHO0FBQ0gsd0JBQWdCLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUVoRTtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQVNwRDtBQUVEOzs7R0FHRztBQUNILHdCQUFzQixXQUFXLENBQUMsYUFBYSxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXRFO0FBRUQsb0ZBQW9GO0FBQ3BGLHdCQUFzQixtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FNOUUifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.d.ts","sourceRoot":"","sources":["../../src/sqlite-opfs/manage.ts"],"names":[],"mappings":"AAEA,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,eAAe,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;GAIG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CASpD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED,oFAAoF;AACpF,wBAAsB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E"}
@@ -0,0 +1,38 @@
1
+ import { normalizePoolDirectory, withPoolLock } from './pool_lock.js';
2
+ /** Prefix for the per-store OPFS SAH pool directories owned by this package. */ export const OPFS_POOL_DIR_PREFIX = '.aztec-kv-';
3
+ /**
4
+ * OPFS directory holding a store's SAH pool. One directory per store: the SAH-pool VFS allows only one
5
+ * concurrent instance per directory and its capacity does not grow automatically, so sharing a pool across
6
+ * stores would make concurrently opened stores contend for locks and orphaned stores exhaust pool slots.
7
+ */ export function storePoolDirectory(effectiveName) {
8
+ return `${OPFS_POOL_DIR_PREFIX}${effectiveName}`;
9
+ }
10
+ /**
11
+ * Lists the names of every persistent sqlite-opfs store in this origin, by enumerating the per-store pool
12
+ * directories. Includes stores other than the current one, so wallets can surface and clean up data for
13
+ * networks/versions no longer in use.
14
+ */ export async function listStores() {
15
+ const root = await navigator.storage.getDirectory();
16
+ const names = [];
17
+ for await (const [entryName, handle] of root.entries()){
18
+ if (handle.kind === 'directory' && entryName.startsWith(OPFS_POOL_DIR_PREFIX)) {
19
+ names.push(entryName.slice(OPFS_POOL_DIR_PREFIX.length));
20
+ }
21
+ }
22
+ return names;
23
+ }
24
+ /**
25
+ * Permanently deletes a store by effective name (as returned by {@link listStores}). The store must be closed:
26
+ * an open store holds the directory's Web Lock and the removal will reject with `SqlitePoolBusyError`.
27
+ */ export async function deleteStore(effectiveName) {
28
+ await deletePoolDirectory(storePoolDirectory(effectiveName));
29
+ }
30
+ /** Permanently deletes one OPFS SAH-pool directory after exclusively locking it. */ export async function deletePoolDirectory(poolDirectory) {
31
+ poolDirectory = normalizePoolDirectory(poolDirectory);
32
+ await withPoolLock(poolDirectory, async ()=>{
33
+ const root = await navigator.storage.getDirectory();
34
+ await root.removeEntry(poolDirectory, {
35
+ recursive: true
36
+ });
37
+ });
38
+ }
@@ -0,0 +1,20 @@
1
+ export declare const OPFS_QUARANTINE_ROOT_DIRECTORY = ".aztec-sqlite-quarantine";
2
+ export interface DuplicatePoolAssociation {
3
+ logicalPath: string;
4
+ opaqueFileNames: string[];
5
+ }
6
+ export interface PoolQuarantineMetadata {
7
+ formatVersion: 1;
8
+ originalPoolDirectory: string;
9
+ quarantinedAt: string;
10
+ duplicateAssociations: DuplicatePoolAssociation[];
11
+ }
12
+ export interface PoolQuarantineResult extends PoolQuarantineMetadata {
13
+ quarantineDirectory: string;
14
+ }
15
+ /**
16
+ * Detects duplicate SAH logical-file associations and, if found, copies the complete pool into quarantine before
17
+ * removing the original. The caller must hold the pool's exclusive Web Lock for the whole operation.
18
+ */
19
+ export declare function quarantineDuplicatePool(poolDirectory: string): Promise<PoolQuarantineResult | undefined>;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9vbF9pbnRlZ3JpdHkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcWxpdGUtb3Bmcy9wb29sX2ludGVncml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5Q0EsZUFBTyxNQUFNLDhCQUE4Qiw2QkFBNkIsQ0FBQztBQUV6RSxNQUFNLFdBQVcsd0JBQXdCO0lBQ3ZDLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFDcEIsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDO0NBQzNCO0FBRUQsTUFBTSxXQUFXLHNCQUFzQjtJQUNyQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUM5QixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLENBQUM7Q0FDbkQ7QUFFRCxNQUFNLFdBQVcsb0JBQXFCLFNBQVEsc0JBQXNCO0lBQ2xFLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztDQUM3QjtBQUVEOzs7R0FHRztBQUNILHdCQUFzQix1QkFBdUIsQ0FBQyxhQUFhLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsQ0E2QzlHIn0=