@aztec/kv-store 0.66.0 → 0.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dest/indexeddb/array.d.ts +21 -0
  2. package/dest/indexeddb/array.d.ts.map +1 -0
  3. package/dest/indexeddb/array.js +96 -0
  4. package/dest/indexeddb/index.d.ts +7 -0
  5. package/dest/indexeddb/index.d.ts.map +1 -0
  6. package/dest/indexeddb/index.js +22 -0
  7. package/dest/indexeddb/map.d.ts +26 -0
  8. package/dest/indexeddb/map.d.ts.map +1 -0
  9. package/dest/indexeddb/map.js +104 -0
  10. package/dest/indexeddb/set.d.ts +17 -0
  11. package/dest/indexeddb/set.d.ts.map +1 -0
  12. package/dest/indexeddb/set.js +25 -0
  13. package/dest/indexeddb/singleton.d.ts +16 -0
  14. package/dest/indexeddb/singleton.d.ts.map +1 -0
  15. package/dest/indexeddb/singleton.js +42 -0
  16. package/dest/indexeddb/store.d.ts +100 -0
  17. package/dest/indexeddb/store.d.ts.map +1 -0
  18. package/dest/indexeddb/store.js +156 -0
  19. package/dest/interfaces/array.d.ts +43 -11
  20. package/dest/interfaces/array.d.ts.map +1 -1
  21. package/dest/interfaces/array_test_suite.d.ts +3 -0
  22. package/dest/interfaces/array_test_suite.d.ts.map +1 -0
  23. package/dest/interfaces/array_test_suite.js +97 -0
  24. package/dest/interfaces/counter.d.ts +21 -1
  25. package/dest/interfaces/counter.d.ts.map +1 -1
  26. package/dest/interfaces/map.d.ts +62 -12
  27. package/dest/interfaces/map.d.ts.map +1 -1
  28. package/dest/interfaces/map_test_suite.d.ts +3 -0
  29. package/dest/interfaces/map_test_suite.d.ts.map +1 -0
  30. package/dest/interfaces/map_test_suite.js +114 -0
  31. package/dest/interfaces/set.d.ts +23 -7
  32. package/dest/interfaces/set.d.ts.map +1 -1
  33. package/dest/interfaces/set_test_suite.d.ts +3 -0
  34. package/dest/interfaces/set_test_suite.d.ts.map +1 -0
  35. package/dest/interfaces/set_test_suite.js +56 -0
  36. package/dest/interfaces/singleton.d.ts +14 -5
  37. package/dest/interfaces/singleton.d.ts.map +1 -1
  38. package/dest/interfaces/singleton_test_suite.d.ts +3 -0
  39. package/dest/interfaces/singleton_test_suite.d.ts.map +1 -0
  40. package/dest/interfaces/singleton_test_suite.js +30 -0
  41. package/dest/interfaces/store.d.ts +71 -8
  42. package/dest/interfaces/store.d.ts.map +1 -1
  43. package/dest/interfaces/store_test_suite.d.ts +3 -0
  44. package/dest/interfaces/store_test_suite.d.ts.map +1 -0
  45. package/dest/interfaces/store_test_suite.js +36 -0
  46. package/dest/interfaces/utils.d.ts +16 -0
  47. package/dest/interfaces/utils.d.ts.map +1 -0
  48. package/dest/interfaces/utils.js +19 -0
  49. package/dest/lmdb/array.d.ts +7 -2
  50. package/dest/lmdb/array.d.ts.map +1 -1
  51. package/dest/lmdb/array.js +20 -1
  52. package/dest/lmdb/counter.d.ts +5 -2
  53. package/dest/lmdb/counter.d.ts.map +1 -1
  54. package/dest/lmdb/counter.js +10 -1
  55. package/dest/lmdb/index.d.ts +10 -0
  56. package/dest/lmdb/index.d.ts.map +1 -1
  57. package/dest/lmdb/index.js +28 -1
  58. package/dest/lmdb/map.d.ts +8 -2
  59. package/dest/lmdb/map.d.ts.map +1 -1
  60. package/dest/lmdb/map.js +27 -1
  61. package/dest/lmdb/set.d.ts +4 -2
  62. package/dest/lmdb/set.d.ts.map +1 -1
  63. package/dest/lmdb/set.js +9 -1
  64. package/dest/lmdb/singleton.d.ts +3 -2
  65. package/dest/lmdb/singleton.d.ts.map +1 -1
  66. package/dest/lmdb/singleton.js +4 -1
  67. package/dest/lmdb/store.d.ts +21 -13
  68. package/dest/lmdb/store.d.ts.map +1 -1
  69. package/dest/lmdb/store.js +23 -19
  70. package/dest/stores/l2_tips_store.d.ts +2 -2
  71. package/dest/stores/l2_tips_store.d.ts.map +1 -1
  72. package/dest/stores/l2_tips_store.js +12 -12
  73. package/dest/utils.d.ts +8 -7
  74. package/dest/utils.d.ts.map +1 -1
  75. package/dest/utils.js +6 -29
  76. package/package.json +54 -37
  77. package/src/indexeddb/array.ts +118 -0
  78. package/src/indexeddb/index.ts +29 -0
  79. package/src/indexeddb/map.ts +142 -0
  80. package/src/indexeddb/set.ts +37 -0
  81. package/src/indexeddb/singleton.ts +49 -0
  82. package/src/indexeddb/store.ts +192 -0
  83. package/src/interfaces/array.ts +48 -12
  84. package/src/interfaces/array_test_suite.ts +126 -0
  85. package/src/interfaces/counter.ts +23 -1
  86. package/src/interfaces/map.ts +69 -14
  87. package/src/interfaces/map_test_suite.ts +154 -0
  88. package/src/interfaces/set.ts +25 -8
  89. package/src/interfaces/set_test_suite.ts +77 -0
  90. package/src/interfaces/singleton.ts +14 -6
  91. package/src/interfaces/singleton_test_suite.ts +42 -0
  92. package/src/interfaces/store.ts +78 -8
  93. package/src/interfaces/store_test_suite.ts +52 -0
  94. package/src/interfaces/utils.ts +21 -0
  95. package/src/lmdb/array.ts +26 -2
  96. package/src/lmdb/counter.ts +14 -2
  97. package/src/lmdb/index.ts +36 -0
  98. package/src/lmdb/map.ts +34 -2
  99. package/src/lmdb/set.ts +12 -2
  100. package/src/lmdb/singleton.ts +6 -2
  101. package/src/lmdb/store.ts +39 -32
  102. package/src/stores/l2_tips_store.ts +16 -16
  103. package/src/utils.ts +8 -37
@@ -0,0 +1,21 @@
1
+ import { type IDBPDatabase, type IDBPObjectStore } from 'idb';
2
+ import { type AztecAsyncArray } from '../interfaces/array.js';
3
+ import { type AztecIDBSchema } from './store.js';
4
+ /**
5
+ * A persistent array backed by IndexedDB.
6
+ */
7
+ export declare class IndexedDBAztecArray<T> implements AztecAsyncArray<T> {
8
+ #private;
9
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, name: string);
10
+ set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
11
+ get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
12
+ lengthAsync(): Promise<number>;
13
+ push(...vals: T[]): Promise<number>;
14
+ pop(): Promise<T | undefined>;
15
+ atAsync(index: number): Promise<T | undefined>;
16
+ setAt(index: number, val: T): Promise<boolean>;
17
+ entriesAsync(): AsyncIterableIterator<[number, T]>;
18
+ valuesAsync(): AsyncIterableIterator<T>;
19
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
20
+ }
21
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/indexeddb/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,mBAAmB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;;gBAMnD,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM;IAM9D,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;IAQ9B,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAenC,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAa7B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAW9C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB7C,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAQlD,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAM9C,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC;CAOnD"}
@@ -0,0 +1,96 @@
1
+ var _IndexedDBAztecArray_instances, _IndexedDBAztecArray__db, _IndexedDBAztecArray_rootDB, _IndexedDBAztecArray_container, _IndexedDBAztecArray_name, _IndexedDBAztecArray_slot;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ /**
4
+ * A persistent array backed by IndexedDB.
5
+ */
6
+ export class IndexedDBAztecArray {
7
+ constructor(rootDB, name) {
8
+ _IndexedDBAztecArray_instances.add(this);
9
+ _IndexedDBAztecArray__db.set(this, void 0);
10
+ _IndexedDBAztecArray_rootDB.set(this, void 0);
11
+ _IndexedDBAztecArray_container.set(this, void 0);
12
+ _IndexedDBAztecArray_name.set(this, void 0);
13
+ __classPrivateFieldSet(this, _IndexedDBAztecArray_rootDB, rootDB, "f");
14
+ __classPrivateFieldSet(this, _IndexedDBAztecArray_name, name, "f");
15
+ __classPrivateFieldSet(this, _IndexedDBAztecArray_container, `array:${__classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f")}`, "f");
16
+ }
17
+ set db(db) {
18
+ __classPrivateFieldSet(this, _IndexedDBAztecArray__db, db, "f");
19
+ }
20
+ get db() {
21
+ return __classPrivateFieldGet(this, _IndexedDBAztecArray__db, "f") ? __classPrivateFieldGet(this, _IndexedDBAztecArray__db, "f") : __classPrivateFieldGet(this, _IndexedDBAztecArray_rootDB, "f").transaction('data', 'readwrite').store;
22
+ }
23
+ async lengthAsync() {
24
+ return ((await this.db
25
+ .index('key')
26
+ .count(IDBKeyRange.bound([__classPrivateFieldGet(this, _IndexedDBAztecArray_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f")], [__classPrivateFieldGet(this, _IndexedDBAztecArray_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f")]))) ?? 0);
27
+ }
28
+ async push(...vals) {
29
+ let length = await this.lengthAsync();
30
+ for (const val of vals) {
31
+ await this.db.put({
32
+ value: val,
33
+ container: __classPrivateFieldGet(this, _IndexedDBAztecArray_container, "f"),
34
+ key: __classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f"),
35
+ keyCount: length + 1,
36
+ slot: __classPrivateFieldGet(this, _IndexedDBAztecArray_instances, "m", _IndexedDBAztecArray_slot).call(this, length),
37
+ });
38
+ length += 1;
39
+ }
40
+ return length;
41
+ }
42
+ async pop() {
43
+ const length = await this.lengthAsync();
44
+ if (length === 0) {
45
+ return undefined;
46
+ }
47
+ const slot = __classPrivateFieldGet(this, _IndexedDBAztecArray_instances, "m", _IndexedDBAztecArray_slot).call(this, length - 1);
48
+ const data = await this.db.get(slot);
49
+ await this.db.delete(slot);
50
+ return data?.value;
51
+ }
52
+ async atAsync(index) {
53
+ const length = await this.lengthAsync();
54
+ if (index < 0) {
55
+ index = length + index;
56
+ }
57
+ const data = await this.db.get(__classPrivateFieldGet(this, _IndexedDBAztecArray_instances, "m", _IndexedDBAztecArray_slot).call(this, index));
58
+ return data?.value;
59
+ }
60
+ async setAt(index, val) {
61
+ const length = await this.lengthAsync();
62
+ if (index < 0) {
63
+ index = length + index;
64
+ }
65
+ if (index < 0 || index >= length) {
66
+ return Promise.resolve(false);
67
+ }
68
+ await this.db.put({
69
+ value: val,
70
+ container: __classPrivateFieldGet(this, _IndexedDBAztecArray_container, "f"),
71
+ key: __classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f"),
72
+ keyCount: index + 1,
73
+ slot: __classPrivateFieldGet(this, _IndexedDBAztecArray_instances, "m", _IndexedDBAztecArray_slot).call(this, index),
74
+ });
75
+ return true;
76
+ }
77
+ async *entriesAsync() {
78
+ const index = this.db.index('key');
79
+ const rangeQuery = IDBKeyRange.bound([__classPrivateFieldGet(this, _IndexedDBAztecArray_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f")], [__classPrivateFieldGet(this, _IndexedDBAztecArray_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f")]);
80
+ for await (const cursor of index.iterate(rangeQuery)) {
81
+ yield [cursor.value.keyCount - 1, cursor.value.value];
82
+ }
83
+ }
84
+ async *valuesAsync() {
85
+ for await (const [_, value] of this.entriesAsync()) {
86
+ yield value;
87
+ }
88
+ }
89
+ [(_IndexedDBAztecArray__db = new WeakMap(), _IndexedDBAztecArray_rootDB = new WeakMap(), _IndexedDBAztecArray_container = new WeakMap(), _IndexedDBAztecArray_name = new WeakMap(), _IndexedDBAztecArray_instances = new WeakSet(), Symbol.asyncIterator)]() {
90
+ return this.valuesAsync();
91
+ }
92
+ }
93
+ _IndexedDBAztecArray_slot = function _IndexedDBAztecArray_slot(index) {
94
+ return `array:${__classPrivateFieldGet(this, _IndexedDBAztecArray_name, "f")}:slot:${index}`;
95
+ };
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXhlZGRiL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLFlBQVksTUFBb0MsRUFBRSxJQUFZOztRQUw5RCwyQ0FBc0U7UUFDdEUsOENBQXNDO1FBQ3RDLGlEQUFtQjtRQUNuQiw0Q0FBYztRQUdaLHVCQUFBLElBQUksK0JBQVcsTUFBTSxNQUFBLENBQUM7UUFDdEIsdUJBQUEsSUFBSSw2QkFBUyxJQUFJLE1BQUEsQ0FBQztRQUNsQix1QkFBQSxJQUFJLGtDQUFjLFNBQVMsdUJBQUEsSUFBSSxpQ0FBTSxFQUFFLE1BQUEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxFQUFFLENBQUMsRUFBOEU7UUFDbkYsdUJBQUEsSUFBSSw0QkFBUSxFQUFFLE1BQUEsQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBTyx1QkFBQSxJQUFJLGdDQUFLLENBQUMsQ0FBQyxDQUFDLHVCQUFBLElBQUksZ0NBQUssQ0FBQyxDQUFDLENBQUMsdUJBQUEsSUFBSSxtQ0FBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLE9BQU8sQ0FDTCxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7YUFDWCxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ1osS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyx1QkFBQSxJQUFJLHNDQUFXLEVBQUUsdUJBQUEsSUFBSSxpQ0FBTSxDQUFDLEVBQUUsQ0FBQyx1QkFBQSxJQUFJLHNDQUFXLEVBQUUsdUJBQUEsSUFBSSxpQ0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUNoRyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxJ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
@@ -0,0 +1,7 @@
1
+ import { type Logger } from '@aztec/foundation/log';
2
+ import { type DataStoreConfig } from '../config.js';
3
+ import { AztecIndexedDBStore } from './store.js';
4
+ export { AztecIndexedDBStore } from './store.js';
5
+ export declare function createStore(name: string, config: DataStoreConfig, log?: Logger): Promise<AztecIndexedDBStore>;
6
+ export declare function openTmpStore(ephemeral?: boolean): Promise<AztecIndexedDBStore>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/indexeddb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,GAAE,MAAiC,gCAgB9G;AAED,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAErF"}
@@ -0,0 +1,22 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { initStoreForRollup } from '../utils.js';
3
+ import { AztecIndexedDBStore } from './store.js';
4
+ export { AztecIndexedDBStore } from './store.js';
5
+ export async function createStore(name, config, log = createLogger('kv-store')) {
6
+ let { dataDirectory } = config;
7
+ if (typeof dataDirectory !== 'undefined') {
8
+ dataDirectory = `${dataDirectory}/${name}`;
9
+ }
10
+ log.info(dataDirectory
11
+ ? `Creating ${name} data store at directory ${dataDirectory} with map size ${config.dataStoreMapSizeKB} KB`
12
+ : `Creating ${name} ephemeral data store with map size ${config.dataStoreMapSizeKB} KB`);
13
+ const store = await AztecIndexedDBStore.open(createLogger('kv-store:indexeddb'), dataDirectory ?? '', false);
14
+ if (config.l1Contracts?.rollupAddress) {
15
+ return initStoreForRollup(store, config.l1Contracts.rollupAddress, log);
16
+ }
17
+ return store;
18
+ }
19
+ export function openTmpStore(ephemeral = false) {
20
+ return AztecIndexedDBStore.open(createLogger('kv-store:indexeddb'), undefined, ephemeral);
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXhlZGRiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsTUFBdUIsRUFBRSxNQUFjLFlBQVksQ0FBQyxVQUFVLENBQUM7SUFDN0csSUFBSSxFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvQixJQUFJLE9BQU8sYUFBYSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLGFBQWEsR0FBRyxHQUFHLGFBQWEsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FDTixhQUFhO1FBQ1gsQ0FBQyxDQUFDLFlBQVksSUFBSSw0QkFBNEIsYUFBYSxrQkFBa0IsTUFBTSxDQUFDLGtCQUFrQixLQUFLO1FBQzNHLENBQUMsQ0FBQyxZQUFZLElBQUksdUNBQXVDLE1BQU0sQ0FBQyxrQkFBa0IsS0FBSyxDQUMxRixDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsYUFBYSxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM3RyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDdEMsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsWUFBcUIsS0FBSztJQUNyRCxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDNUYsQ0FBQyJ9
@@ -0,0 +1,26 @@
1
+ import { type IDBPDatabase, type IDBPObjectStore } from 'idb';
2
+ import { type Key, type Range } from '../interfaces/common.js';
3
+ import { type AztecAsyncMultiMap } 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> implements AztecAsyncMultiMap<K, V> {
9
+ #private;
10
+ protected name: string;
11
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, mapName: string);
12
+ set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
13
+ get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
14
+ getAsync(key: K): Promise<V | undefined>;
15
+ getValuesAsync(key: K): AsyncIterableIterator<V>;
16
+ hasAsync(key: K): Promise<boolean>;
17
+ set(key: K, val: V): Promise<void>;
18
+ swap(_key: K, _fn: (val: V | undefined) => V): Promise<void>;
19
+ setIfNotExists(key: K, val: V): Promise<boolean>;
20
+ delete(key: K): Promise<void>;
21
+ deleteValue(key: K, val: V): Promise<void>;
22
+ entriesAsync(range?: Range<K>): AsyncIterableIterator<[K, V]>;
23
+ valuesAsync(range?: Range<K>): AsyncIterableIterator<V>;
24
+ keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
25
+ }
26
+ //# sourceMappingURL=map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/indexeddb/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAE,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;;IAClF,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;gBAMX,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM;IAMjE,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;IAKvC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAajD,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAaxC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAQhD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzC,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAkBjE,WAAW,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAM3D,SAAS,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAmBjE"}
@@ -0,0 +1,104 @@
1
+ var _IndexedDBAztecMap_instances, _IndexedDBAztecMap_container, _IndexedDBAztecMap__db, _IndexedDBAztecMap_rootDB, _IndexedDBAztecMap_denormalizeKey, _IndexedDBAztecMap_normalizeKey, _IndexedDBAztecMap_slot;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ /**
4
+ * A map backed by IndexedDB.
5
+ */
6
+ export class IndexedDBAztecMap {
7
+ constructor(rootDB, mapName) {
8
+ _IndexedDBAztecMap_instances.add(this);
9
+ _IndexedDBAztecMap_container.set(this, void 0);
10
+ _IndexedDBAztecMap__db.set(this, void 0);
11
+ _IndexedDBAztecMap_rootDB.set(this, void 0);
12
+ this.name = mapName;
13
+ __classPrivateFieldSet(this, _IndexedDBAztecMap_container, `map:${mapName}`, "f");
14
+ __classPrivateFieldSet(this, _IndexedDBAztecMap_rootDB, rootDB, "f");
15
+ }
16
+ set db(db) {
17
+ __classPrivateFieldSet(this, _IndexedDBAztecMap__db, db, "f");
18
+ }
19
+ get db() {
20
+ return __classPrivateFieldGet(this, _IndexedDBAztecMap__db, "f") ? __classPrivateFieldGet(this, _IndexedDBAztecMap__db, "f") : __classPrivateFieldGet(this, _IndexedDBAztecMap_rootDB, "f").transaction('data', 'readwrite').store;
21
+ }
22
+ async getAsync(key) {
23
+ const data = await this.db.get(__classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_slot).call(this, key));
24
+ return data?.value;
25
+ }
26
+ async *getValuesAsync(key) {
27
+ const index = this.db.index('keyCount');
28
+ const rangeQuery = IDBKeyRange.bound([__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key), 0], [__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key), Number.MAX_SAFE_INTEGER], false, false);
29
+ for await (const cursor of index.iterate(rangeQuery)) {
30
+ yield cursor.value.value;
31
+ }
32
+ }
33
+ async hasAsync(key) {
34
+ const result = (await this.getAsync(key)) !== undefined;
35
+ return result;
36
+ }
37
+ async set(key, val) {
38
+ const count = await this.db
39
+ .index('key')
40
+ .count(IDBKeyRange.bound([__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key)], [__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key)]));
41
+ await this.db.put({
42
+ value: val,
43
+ container: __classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"),
44
+ key: __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key),
45
+ keyCount: count + 1,
46
+ slot: __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_slot).call(this, key, count),
47
+ });
48
+ }
49
+ swap(_key, _fn) {
50
+ throw new Error('Not implemented');
51
+ }
52
+ async setIfNotExists(key, val) {
53
+ if (!(await this.hasAsync(key))) {
54
+ await this.set(key, val);
55
+ return true;
56
+ }
57
+ return false;
58
+ }
59
+ async delete(key) {
60
+ await this.db.delete(__classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_slot).call(this, key));
61
+ }
62
+ async deleteValue(key, val) {
63
+ const index = this.db.index('keyCount');
64
+ const rangeQuery = IDBKeyRange.bound([__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key), 0], [__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key), Number.MAX_SAFE_INTEGER], false, false);
65
+ for await (const cursor of index.iterate(rangeQuery)) {
66
+ if (JSON.stringify(cursor.value.value) === JSON.stringify(val)) {
67
+ await cursor.delete();
68
+ return;
69
+ }
70
+ }
71
+ }
72
+ async *entriesAsync(range = {}) {
73
+ const index = this.db.index('key');
74
+ const rangeQuery = IDBKeyRange.bound([__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), range.start ?? ''], [__classPrivateFieldGet(this, _IndexedDBAztecMap_container, "f"), range.end ?? '\uffff'], !!range.reverse, !range.reverse);
75
+ let count = 0;
76
+ for await (const cursor of index.iterate(rangeQuery, range.reverse ? 'prev' : 'next')) {
77
+ if (range.limit && count >= range.limit) {
78
+ return;
79
+ }
80
+ yield [cursor.value.key, cursor.value.value];
81
+ count++;
82
+ }
83
+ }
84
+ async *valuesAsync(range = {}) {
85
+ for await (const [_, value] of this.entriesAsync(range)) {
86
+ yield value;
87
+ }
88
+ }
89
+ async *keysAsync(range = {}) {
90
+ for await (const [key, _] of this.entriesAsync(range)) {
91
+ yield __classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_denormalizeKey).call(this, key);
92
+ }
93
+ }
94
+ }
95
+ _IndexedDBAztecMap_container = new WeakMap(), _IndexedDBAztecMap__db = new WeakMap(), _IndexedDBAztecMap_rootDB = new WeakMap(), _IndexedDBAztecMap_instances = new WeakSet(), _IndexedDBAztecMap_denormalizeKey = function _IndexedDBAztecMap_denormalizeKey(key) {
96
+ const denormalizedKey = key.split(',').map(part => (isNaN(parseInt(part)) ? part : parseInt(part)));
97
+ return (denormalizedKey.length > 1 ? denormalizedKey : key);
98
+ }, _IndexedDBAztecMap_normalizeKey = function _IndexedDBAztecMap_normalizeKey(key) {
99
+ const arrayKey = Array.isArray(key) ? key : [key];
100
+ return arrayKey.join(',');
101
+ }, _IndexedDBAztecMap_slot = function _IndexedDBAztecMap_slot(key, index = 0) {
102
+ return `map:${this.name}:slot:${__classPrivateFieldGet(this, _IndexedDBAztecMap_instances, "m", _IndexedDBAztecMap_normalizeKey).call(this, key)}:${index}`;
103
+ };
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4ZWRkYi9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQTs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFPNUIsWUFBWSxNQUFvQyxFQUFFLE9BQWU7O1FBTGpFLCtDQUFtQjtRQUVuQix5Q0FBc0U7UUFDdEUsNENBQXNDO1FBR3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO1FBQ3BCLHVCQUFBLElBQUksZ0NBQWMsT0FBTyxPQUFPLEVBQUUsTUFBQSxDQUFDO1FBQ25DLHVCQUFBLElBQUksNkJBQVcsTUFBTSxNQUFBLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksRUFBRSxDQUFDLEVBQThFO1FBQ25GLHVCQUFBLElBQUksMEJBQVEsRUFBRSxNQUFBLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE9BQU8sdUJBQUEsSUFBSSw4QkFBSyxDQUFDLENBQUMsQ0FBQyx1QkFBQSxJQUFJLDhCQUFLLENBQUMsQ0FBQyxDQUFDLHVCQUFBLElBQUksaUNBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFNO1FBQ25CLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsdUJBQUEsSUFBSSw2REFBTSxNQUFWLElBQUksRUFBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxFQUFFLEtBQVUsQ0FBQztJQUMxQixDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQU07UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtB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
@@ -0,0 +1,17 @@
1
+ import { type IDBPDatabase, type IDBPObjectStore } from 'idb';
2
+ import { type Key, type 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=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/indexeddb/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,KAAK,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;gBAE/B,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,MAAM;IAIjE,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;IAIlC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItB,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAGpE"}
@@ -0,0 +1,25 @@
1
+ import { IndexedDBAztecMap } from './map.js';
2
+ /**
3
+ * A set backed by IndexedDB.
4
+ */
5
+ export class IndexedDBAztecSet {
6
+ constructor(rootDb, mapName) {
7
+ this.map = new IndexedDBAztecMap(rootDb, mapName);
8
+ }
9
+ set db(db) {
10
+ this.map.db = db;
11
+ }
12
+ hasAsync(key) {
13
+ return this.map.hasAsync(key);
14
+ }
15
+ add(key) {
16
+ return this.map.set(key, true);
17
+ }
18
+ delete(key) {
19
+ return this.map.delete(key);
20
+ }
21
+ async *entriesAsync(range = {}) {
22
+ yield* this.map.keysAsync(range);
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4ZWRkYi9zZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRzdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUFZLE1BQW9DLEVBQUUsT0FBZTtRQUMvRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUE4RTtRQUNuRixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxHQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQU07UUFDUixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQU07UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBa0IsRUFBRTtRQUN0QyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,16 @@
1
+ import { type IDBPDatabase, type IDBPObjectStore } from 'idb';
2
+ import { type AztecAsyncSingleton } from '../interfaces/singleton.js';
3
+ import { type AztecIDBSchema } from './store.js';
4
+ /**
5
+ * Stores a single value in IndexedDB.
6
+ */
7
+ export declare class IndexedDBAztecSingleton<T> implements AztecAsyncSingleton<T> {
8
+ #private;
9
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, name: string);
10
+ set db(db: IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'> | undefined);
11
+ get db(): IDBPObjectStore<AztecIDBSchema, ['data'], 'data', 'readwrite'>;
12
+ getAsync(): Promise<T | undefined>;
13
+ set(val: T): Promise<boolean>;
14
+ delete(): Promise<boolean>;
15
+ }
16
+ //# sourceMappingURL=singleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/indexeddb/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,KAAK,CAAC;AAE9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,qBAAa,uBAAuB,CAAC,CAAC,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;;gBAM3D,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM;IAM9D,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;IAKlC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAW7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAIjC"}
@@ -0,0 +1,42 @@
1
+ var _IndexedDBAztecSingleton__db, _IndexedDBAztecSingleton_rootDB, _IndexedDBAztecSingleton_container, _IndexedDBAztecSingleton_slot;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ /**
4
+ * Stores a single value in IndexedDB.
5
+ */
6
+ export class IndexedDBAztecSingleton {
7
+ constructor(rootDB, name) {
8
+ _IndexedDBAztecSingleton__db.set(this, void 0);
9
+ _IndexedDBAztecSingleton_rootDB.set(this, void 0);
10
+ _IndexedDBAztecSingleton_container.set(this, void 0);
11
+ _IndexedDBAztecSingleton_slot.set(this, void 0);
12
+ __classPrivateFieldSet(this, _IndexedDBAztecSingleton_rootDB, rootDB, "f");
13
+ __classPrivateFieldSet(this, _IndexedDBAztecSingleton_container, `singleton:${name}`, "f");
14
+ __classPrivateFieldSet(this, _IndexedDBAztecSingleton_slot, `singleton:${name}:value`, "f");
15
+ }
16
+ set db(db) {
17
+ __classPrivateFieldSet(this, _IndexedDBAztecSingleton__db, db, "f");
18
+ }
19
+ get db() {
20
+ return __classPrivateFieldGet(this, _IndexedDBAztecSingleton__db, "f") ? __classPrivateFieldGet(this, _IndexedDBAztecSingleton__db, "f") : __classPrivateFieldGet(this, _IndexedDBAztecSingleton_rootDB, "f").transaction('data', 'readwrite').store;
21
+ }
22
+ async getAsync() {
23
+ const data = await this.db.get(__classPrivateFieldGet(this, _IndexedDBAztecSingleton_slot, "f"));
24
+ return data?.value;
25
+ }
26
+ async set(val) {
27
+ const result = await this.db.put({
28
+ container: __classPrivateFieldGet(this, _IndexedDBAztecSingleton_container, "f"),
29
+ slot: __classPrivateFieldGet(this, _IndexedDBAztecSingleton_slot, "f"),
30
+ key: __classPrivateFieldGet(this, _IndexedDBAztecSingleton_slot, "f"),
31
+ keyCount: 1,
32
+ value: val,
33
+ });
34
+ return result !== undefined;
35
+ }
36
+ async delete() {
37
+ await this.db.delete(__classPrivateFieldGet(this, _IndexedDBAztecSingleton_slot, "f"));
38
+ return true;
39
+ }
40
+ }
41
+ _IndexedDBAztecSingleton__db = new WeakMap(), _IndexedDBAztecSingleton_rootDB = new WeakMap(), _IndexedDBAztecSingleton_container = new WeakMap(), _IndexedDBAztecSingleton_slot = new WeakMap();
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2luZGV4ZWRkYi9zaW5nbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFNbEMsWUFBWSxNQUFvQyxFQUFFLElBQVk7UUFMOUQsK0NBQXNFO1FBQ3RFLGtEQUFzQztRQUN0QyxxREFBbUI7UUFDbkIsZ0RBQWM7UUFHWix1QkFBQSxJQUFJLG1DQUFXLE1BQU0sTUFBQSxDQUFDO1FBQ3RCLHVCQUFBLElBQUksc0NBQWMsYUFBYSxJQUFJLEVBQUUsTUFBQSxDQUFDO1FBQ3RDLHVCQUFBLElBQUksaUNBQVMsYUFBYSxJQUFJLFFBQVEsTUFBQSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLEVBQUUsQ0FBQyxFQUE4RTtRQUNuRix1QkFBQSxJQUFJLGdDQUFRLEVBQUUsTUFBQSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJLEVBQUU7UUFDSixPQUFPLHVCQUFBLElBQUksb0NBQUssQ0FBQyxDQUFDLENBQUMsdUJBQUEsSUFBSSxvQ0FBSyxDQUFDLENBQUMsQ0FBQyx1QkFBQSxJQUFJLHVDQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckYsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyx1QkFBQSxJQUFJLHFDQUFNLENBQUMsQ0FBQztRQUMzQyxPQUFPLElBQUksRUFBRSxLQUFVLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBTTtRQUNkLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7WUFDL0IsU0FBUyxFQUFFLHVCQUFBLElBQUksMENBQVc7WUFDMUIsSUFBSSxFQUFFLHVCQUFBLElBQUkscUNBQU07WUFDaEIsR0FBRyxFQUFFLHVCQUFBLElBQUkscUNBQU07WUFDZixRQUFRLEVBQUUsQ0FBQztZQUNYLEtBQUssRUFBRSxHQUFHO1NBQ1gsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLEtBQUssU0FBUyxDQUFDO0lBQzlCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsdUJBQUEsSUFBSSxxQ0FBTSxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YifQ==
@@ -0,0 +1,100 @@
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 } from '../interfaces/common.js';
5
+ import { type AztecAsyncCounter } from '../interfaces/counter.js';
6
+ import { type AztecAsyncMap, type AztecAsyncMultiMap } from '../interfaces/map.js';
7
+ import { type AztecAsyncSet } from '../interfaces/set.js';
8
+ import { type AztecAsyncSingleton } from '../interfaces/singleton.js';
9
+ import { type AztecAsyncKVStore } from '../interfaces/store.js';
10
+ export type StoredData<V> = {
11
+ value: V;
12
+ container: string;
13
+ key: string;
14
+ keyCount: number;
15
+ slot: string;
16
+ };
17
+ export interface AztecIDBSchema extends DBSchema {
18
+ data: {
19
+ value: StoredData<any>;
20
+ key: string;
21
+ indexes: {
22
+ container: string;
23
+ key: string;
24
+ keyCount: number;
25
+ };
26
+ };
27
+ }
28
+ /**
29
+ * A key-value store backed by IndexedDB.
30
+ */
31
+ export declare class AztecIndexedDBStore implements AztecAsyncKVStore {
32
+ #private;
33
+ readonly isEphemeral: boolean;
34
+ constructor(rootDB: IDBPDatabase<AztecIDBSchema>, isEphemeral: boolean, log: Logger, name: string);
35
+ /**
36
+ * Creates a new AztecKVStore backed by IndexedDB. The path to the database is optional. If not provided,
37
+ * the database will be stored in a temporary location and be deleted when the process exists.
38
+ *
39
+ *
40
+ * @param path - A path on the disk to store the database. Optional
41
+ * @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
42
+ * @param log - A logger to use. Optional
43
+ * @returns The store
44
+ */
45
+ static open(log: Logger, name?: string, ephemeral?: boolean): Promise<AztecIndexedDBStore>;
46
+ /**
47
+ * Forks the current DB into a new DB by backing it up to a temporary location and opening a new indexedb.
48
+ * @returns A new AztecIndexedDBStore.
49
+ */
50
+ fork(): Promise<AztecAsyncKVStore>;
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>(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>(name: string): AztecAsyncMultiMap<K, V>;
69
+ openCounter<K extends Key | Array<string | number>>(_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>(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>(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(): {
95
+ mappingSize: number;
96
+ actualSize: number;
97
+ numItems: number;
98
+ };
99
+ }
100
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/indexeddb/store.ts"],"names":[],"mappings":"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"}