@aztec/kv-store 0.82.2-alpha-testnet.4 → 0.82.3

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 (40) hide show
  1. package/dest/indexeddb/store.d.ts +1 -5
  2. package/dest/indexeddb/store.d.ts.map +1 -1
  3. package/dest/indexeddb/store.js +3 -19
  4. package/dest/interfaces/store.d.ts +6 -20
  5. package/dest/interfaces/store.d.ts.map +1 -1
  6. package/dest/lmdb/store.d.ts +1 -5
  7. package/dest/lmdb/store.d.ts.map +1 -1
  8. package/dest/lmdb/store.js +3 -15
  9. package/dest/lmdb-v2/message.d.ts +8 -1
  10. package/dest/lmdb-v2/message.d.ts.map +1 -1
  11. package/dest/lmdb-v2/message.js +1 -0
  12. package/dest/lmdb-v2/store.d.ts +1 -1
  13. package/dest/lmdb-v2/store.d.ts.map +1 -1
  14. package/dest/lmdb-v2/store.js +10 -4
  15. package/dest/stores/index.d.ts +3 -0
  16. package/dest/stores/index.d.ts.map +1 -1
  17. package/dest/stores/index.js +1 -0
  18. package/dest/stores/interface.d.ts +3 -0
  19. package/dest/stores/interface.d.ts.map +1 -0
  20. package/dest/stores/interface.js +1 -0
  21. package/dest/stores/l2_tips_memory_store.d.ts +11 -0
  22. package/dest/stores/l2_tips_memory_store.d.ts.map +1 -0
  23. package/dest/stores/l2_tips_memory_store.js +58 -0
  24. package/dest/stores/l2_tips_store.d.ts +1 -1
  25. package/dest/stores/l2_tips_store.d.ts.map +1 -1
  26. package/dest/stores/l2_tips_store.js +1 -1
  27. package/package.json +5 -5
  28. package/src/indexeddb/store.ts +4 -23
  29. package/src/interfaces/store.ts +7 -22
  30. package/src/lmdb/store.ts +4 -15
  31. package/src/lmdb-v2/message.ts +9 -0
  32. package/src/lmdb-v2/store.ts +6 -5
  33. package/src/stores/index.ts +5 -0
  34. package/src/stores/interface.ts +3 -0
  35. package/src/stores/l2_tips_memory_store.ts +66 -0
  36. package/src/stores/l2_tips_store.ts +1 -1
  37. package/dest/interfaces/store_test_suite.d.ts +0 -3
  38. package/dest/interfaces/store_test_suite.d.ts.map +0 -1
  39. package/dest/interfaces/store_test_suite.js +0 -37
  40. package/src/interfaces/store_test_suite.ts +0 -56
@@ -44,11 +44,6 @@ export declare class AztecIndexedDBStore implements AztecAsyncKVStore {
44
44
  * @returns The store
45
45
  */
46
46
  static open(log: Logger, name?: string, ephemeral?: boolean): Promise<AztecIndexedDBStore>;
47
- /**
48
- * Forks the current DB into a new DB by backing it up to a temporary location and opening a new indexedb.
49
- * @returns A new AztecIndexedDBStore.
50
- */
51
- fork(): Promise<AztecAsyncKVStore>;
52
47
  /**
53
48
  * Creates a new AztecMap in the store.
54
49
  * @param name - Name of the map
@@ -94,5 +89,6 @@ export declare class AztecIndexedDBStore implements AztecAsyncKVStore {
94
89
  delete(): Promise<void>;
95
90
  estimateSize(): Promise<StoreSize>;
96
91
  close(): Promise<void>;
92
+ backupTo(_dstPath: string, _compact?: boolean): Promise<void>;
97
93
  }
98
94
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/indexeddb/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/indexeddb/store.ts"],"names":[],"mappings":"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"}
@@ -55,25 +55,6 @@ import { IndexedDBAztecSingleton } from './singleton.js';
55
55
  return kvStore;
56
56
  }
57
57
  /**
58
- * Forks the current DB into a new DB by backing it up to a temporary location and opening a new indexedb.
59
- * @returns A new AztecIndexedDBStore.
60
- */ async fork() {
61
- const forkedStore = await AztecIndexedDBStore.open(this.#log, undefined, true);
62
- this.#log.verbose(`Forking store to ${forkedStore.#name}`);
63
- // Copy old data to new store
64
- const oldData = this.#rootDB.transaction('data').store;
65
- const dataToWrite = [];
66
- for await (const cursor of oldData.iterate()){
67
- dataToWrite.push(cursor.value);
68
- }
69
- const tx = forkedStore.#rootDB.transaction('data', 'readwrite').store;
70
- for (const data of dataToWrite){
71
- await tx.add(data);
72
- }
73
- this.#log.debug(`Forked store at ${forkedStore.#name} opened successfully`);
74
- return forkedStore;
75
- }
76
- /**
77
58
  * Creates a new AztecMap in the store.
78
59
  * @param name - Name of the map
79
60
  * @returns A new AztecMap
@@ -162,4 +143,7 @@ import { IndexedDBAztecSingleton } from './singleton.js';
162
143
  close() {
163
144
  return Promise.resolve();
164
145
  }
146
+ backupTo(_dstPath, _compact) {
147
+ throw new Error('Method not implemented.');
148
+ }
165
149
  }
@@ -52,10 +52,6 @@ export interface AztecKVStore {
52
52
  * Clears all entries in the store
53
53
  */
54
54
  clear(): Promise<void>;
55
- /**
56
- * Forks the store.
57
- */
58
- fork(): Promise<AztecKVStore>;
59
55
  /**
60
56
  * Deletes the store
61
57
  */
@@ -110,25 +106,15 @@ export interface AztecAsyncKVStore {
110
106
  * @param callback - The callback to execute in a transaction
111
107
  */
112
108
  transactionAsync<T extends Exclude<any, Promise<any>>>(callback: () => Promise<T>): Promise<T>;
113
- /**
114
- * Clears all entries in the store
115
- */
109
+ /** Clears all entries in the store */
116
110
  clear(): Promise<void>;
117
- /**
118
- * Forks the store.
119
- */
120
- fork(): Promise<AztecAsyncKVStore>;
121
- /**
122
- * Deletes the store
123
- */
111
+ /** Deletes the store */
124
112
  delete(): Promise<void>;
125
- /**
126
- * Estimates the size of the store in bytes.
127
- */
113
+ /** Estimates the size of the store in bytes. */
128
114
  estimateSize(): Promise<StoreSize>;
129
- /**
130
- * Closes the store
131
- */
115
+ /** Closes the store */
132
116
  close(): Promise<void>;
117
+ /** Backups the store to the target folder.*/
118
+ backupTo(dstPath: string, compact?: boolean): Promise<void>;
133
119
  }
134
120
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/interfaces/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/interfaces/store.ts"],"names":[],"mappings":"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"}
@@ -31,11 +31,6 @@ export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
31
31
  */
32
32
  static open(path?: string, mapSizeKb?: number, // defaults to 1 GB map size
33
33
  ephemeral?: boolean, log?: import("@aztec/foundation/log").Logger): AztecLmdbStore;
34
- /**
35
- * Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
36
- * @returns A new AztecLmdbStore.
37
- */
38
- fork(): Promise<AztecLmdbStore>;
39
34
  /**
40
35
  * Creates a new AztecMap in the store.
41
36
  * @param name - Name of the map
@@ -95,5 +90,6 @@ export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
95
90
  delete(): Promise<void>;
96
91
  estimateSize(): Promise<StoreSize>;
97
92
  private estimateSubDBSize;
93
+ backupTo(_dstPath: string, _compact?: boolean): Promise<void>;
98
94
  }
99
95
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,YAAY,EAAQ,MAAM,MAAM,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQ9E;;GAEG;AACH,qBAAa,cAAe,YAAW,YAAY,EAAE,iBAAiB;;aAQlB,WAAW,EAAE,OAAO;IAAE,OAAO,CAAC,IAAI;IAPpF,WAAW,OAAiB;gBAOhB,MAAM,EAAE,YAAY,EAAkB,WAAW,EAAE,OAAO,EAAU,IAAI,EAAE,MAAM;IAgB5F;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,SAAkB,EAAE,4BAA4B;IACzD,SAAS,GAAE,OAAe,EAC1B,GAAG,yCAAgC,GAClC,cAAc;IASjB;;;OAGG;IACG,IAAI;IAWV;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAI7E;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAIpE;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5F,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAIhF;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAI9D;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAI1E;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7C;;;;OAIG;IACG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE;;OAEG;IACG,KAAK;IAMX;;OAEG;IACG,IAAI;IAMV;;OAEG;IACG,KAAK;IAMX,kEAAkE;IAC5D,MAAM;IASZ,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAiBlC,OAAO,CAAC,iBAAiB;CA2B1B"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,YAAY,EAAQ,MAAM,MAAM,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAQ9E;;GAEG;AACH,qBAAa,cAAe,YAAW,YAAY,EAAE,iBAAiB;;aAQlB,WAAW,EAAE,OAAO;IAAE,OAAO,CAAC,IAAI;IAPpF,WAAW,OAAiB;gBAOhB,MAAM,EAAE,YAAY,EAAkB,WAAW,EAAE,OAAO,EAAU,IAAI,EAAE,MAAM;IAgB5F;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,SAAkB,EAAE,4BAA4B;IACzD,SAAS,GAAE,OAAe,EAC1B,GAAG,yCAAgC,GAClC,cAAc;IASjB;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAI7E;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC;IAIpE;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAI5F,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC;IAIhF;;;;OAIG;IACH,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAI9D;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAI1E;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7C;;;;OAIG;IACG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjE;;OAEG;IACG,KAAK;IAMX;;OAEG;IACG,IAAI;IAMV;;OAEG;IACG,KAAK;IAMX,kEAAkE;IAC5D,MAAM;IASZ,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAiBlC,OAAO,CAAC,iBAAiB;IA4BzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAG9D"}
@@ -64,21 +64,6 @@ import { LmdbAztecSingleton } from './singleton.js';
64
64
  return new AztecLmdbStore(rootDb, ephemeral, dbPath);
65
65
  }
66
66
  /**
67
- * Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
68
- * @returns A new AztecLmdbStore.
69
- */ async fork() {
70
- const baseDir = this.path;
71
- this.#log.debug(`Forking store with basedir ${baseDir}`);
72
- const forkPath = await fs.mkdtemp(join(baseDir, 'aztec-store-fork-'));
73
- this.#log.verbose(`Forking store to ${forkPath}`);
74
- await this.#rootDb.backup(forkPath, false);
75
- const forkDb = open(forkPath, {
76
- noSync: this.isEphemeral
77
- });
78
- this.#log.debug(`Forked store at ${forkPath} opened successfully`);
79
- return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
80
- }
81
- /**
82
67
  * Creates a new AztecMap in the store.
83
68
  * @param name - Name of the map
84
69
  * @returns A new AztecMap
@@ -200,4 +185,7 @@ import { LmdbAztecSingleton } from './singleton.js';
200
185
  numItems
201
186
  };
202
187
  }
188
+ backupTo(_dstPath, _compact) {
189
+ throw new Error('Method not implemented.');
190
+ }
203
191
  }
@@ -12,7 +12,8 @@ export declare enum LMDBMessageType {
12
12
  CLOSE_CURSOR = 105,
13
13
  BATCH = 106,
14
14
  STATS = 107,
15
- CLOSE = 108
15
+ CLOSE = 108,
16
+ COPY_STORE = 109
16
17
  }
17
18
  type Key = Uint8Array;
18
19
  type Value = Uint8Array;
@@ -48,6 +49,10 @@ interface AdvanceCursorRequest {
48
49
  interface CloseCursorRequest {
49
50
  cursor: number;
50
51
  }
52
+ interface CopyStoreRequest {
53
+ dstPath: string;
54
+ compact: boolean;
55
+ }
51
56
  export interface Batch {
52
57
  addEntries: Array<KeyValues>;
53
58
  removeEntries: Array<KeyOptionalValues>;
@@ -65,6 +70,7 @@ export type LMDBRequestBody = {
65
70
  [LMDBMessageType.BATCH]: BatchRequest;
66
71
  [LMDBMessageType.STATS]: void;
67
72
  [LMDBMessageType.CLOSE]: void;
73
+ [LMDBMessageType.COPY_STORE]: CopyStoreRequest;
68
74
  };
69
75
  interface GetResponse {
70
76
  values: OptionalValues;
@@ -104,6 +110,7 @@ export type LMDBResponseBody = {
104
110
  [LMDBMessageType.BATCH]: BatchResponse;
105
111
  [LMDBMessageType.STATS]: StatsResponse;
106
112
  [LMDBMessageType.CLOSE]: BoolResponse;
113
+ [LMDBMessageType.COPY_STORE]: BoolResponse;
107
114
  };
108
115
  export interface LMDBMessageChannel {
109
116
  sendMessage<T extends LMDBMessageType>(msgType: T, body: LMDBRequestBody[T]): Promise<LMDBResponseBody[T]>;
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/message.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,6 @@ export var LMDBMessageType = /*#__PURE__*/ function(LMDBMessageType) {
14
14
  LMDBMessageType[LMDBMessageType["BATCH"] = 106] = "BATCH";
15
15
  LMDBMessageType[LMDBMessageType["STATS"] = 107] = "STATS";
16
16
  LMDBMessageType[LMDBMessageType["CLOSE"] = 108] = "CLOSE";
17
+ LMDBMessageType[LMDBMessageType["COPY_STORE"] = 109] = "COPY_STORE";
17
18
  return LMDBMessageType;
18
19
  }({});
@@ -23,6 +23,7 @@ export declare class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageC
23
23
  get dataDirectory(): string;
24
24
  private start;
25
25
  static new(dataDir: string, dbMapSizeKb?: number, maxReaders?: number, cleanup?: () => Promise<void>, log?: Logger): Promise<AztecLMDBStoreV2>;
26
+ backupTo(dstPath: string, compact?: boolean): Promise<void>;
26
27
  getReadTx(): ReadTransaction;
27
28
  getCurrentWriteTx(): WriteTransaction | undefined;
28
29
  openMap<K extends Key, V>(name: string): AztecAsyncMap<K, V>;
@@ -33,7 +34,6 @@ export declare class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageC
33
34
  openCounter<K extends Key>(_name: string): AztecAsyncCounter<K>;
34
35
  transactionAsync<T extends Exclude<any, Promise<any>>>(callback: (tx: WriteTransaction) => Promise<T>): Promise<T>;
35
36
  clear(): Promise<void>;
36
- fork(): Promise<AztecAsyncKVStore>;
37
37
  delete(): Promise<void>;
38
38
  close(): Promise<void>;
39
39
  sendMessage<T extends LMDBMessageType>(msgType: T, body: LMDBRequestBody[T]): Promise<LMDBResponseBody[T]>;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/store.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { createLogger } from '@aztec/foundation/log';
2
2
  import { Semaphore, SerialQueue } from '@aztec/foundation/queue';
3
3
  import { MsgpackChannel, NativeLMDBStore } from '@aztec/native';
4
4
  import { AsyncLocalStorage } from 'async_hooks';
5
- import { rm } from 'fs/promises';
5
+ import { mkdir, rm } from 'fs/promises';
6
6
  // eslint-disable-next-line import/no-cycle
7
7
  import { LMDBArray } from './array.js';
8
8
  // eslint-disable-next-line import/no-cycle
@@ -54,6 +54,15 @@ export class AztecLMDBStoreV2 {
54
54
  await db.start();
55
55
  return db;
56
56
  }
57
+ async backupTo(dstPath, compact = true) {
58
+ await mkdir(dstPath, {
59
+ recursive: true
60
+ });
61
+ await this.channel.sendMessage(LMDBMessageType.COPY_STORE, {
62
+ dstPath,
63
+ compact
64
+ });
65
+ }
57
66
  getReadTx() {
58
67
  if (!this.open) {
59
68
  throw new Error('Store is closed');
@@ -113,9 +122,6 @@ export class AztecLMDBStoreV2 {
113
122
  clear() {
114
123
  return Promise.resolve();
115
124
  }
116
- fork() {
117
- throw new Error('Not implemented');
118
- }
119
125
  async delete() {
120
126
  await this.close();
121
127
  await rm(this.dataDir, {
@@ -1,2 +1,5 @@
1
+ import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
1
2
  export * from './l2_tips_store.js';
3
+ export * from './l2_tips_memory_store.js';
4
+ export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
2
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErG,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,yBAAyB,GAAG,8BAA8B,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from './l2_tips_store.js';
2
+ export * from './l2_tips_memory_store.js';
@@ -0,0 +1,3 @@
1
+ import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
2
+ export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
3
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/stores/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AAErG,MAAM,MAAM,WAAW,GAAG,yBAAyB,GAAG,8BAA8B,CAAC"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,11 @@
1
+ import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider, L2Tips } from '@aztec/stdlib/block';
2
+ /** Stores currently synced L2 tips and unfinalized block hashes. */
3
+ export declare class L2TipsMemoryStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
4
+ private readonly l2TipsStore;
5
+ private readonly l2BlockHashesStore;
6
+ getL2BlockHash(number: number): Promise<string | undefined>;
7
+ getL2Tips(): Promise<L2Tips>;
8
+ private getL2Tip;
9
+ handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=l2_tips_memory_store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"l2_tips_memory_store.d.ts","sourceRoot":"","sources":["../../src/stores/l2_tips_memory_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAE9B,MAAM,EACP,MAAM,qBAAqB,CAAC;AAE7B,oEAAoE;AACpE,qBAAa,iBAAkB,YAAW,yBAAyB,EAAE,8BAA8B;IACjG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAkC;IAE9D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI3D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAQnC,OAAO,CAAC,QAAQ;IAaH,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CA0B9E"}
@@ -0,0 +1,58 @@
1
+ /** Stores currently synced L2 tips and unfinalized block hashes. */ export class L2TipsMemoryStore {
2
+ l2TipsStore = new Map();
3
+ l2BlockHashesStore = new Map();
4
+ getL2BlockHash(number) {
5
+ return Promise.resolve(this.l2BlockHashesStore.get(number));
6
+ }
7
+ getL2Tips() {
8
+ return Promise.resolve({
9
+ latest: this.getL2Tip('latest'),
10
+ finalized: this.getL2Tip('finalized'),
11
+ proven: this.getL2Tip('proven')
12
+ });
13
+ }
14
+ getL2Tip(tag) {
15
+ const blockNumber = this.l2TipsStore.get(tag);
16
+ if (blockNumber === undefined || blockNumber === 0) {
17
+ return {
18
+ number: 0,
19
+ hash: undefined
20
+ };
21
+ }
22
+ const blockHash = this.l2BlockHashesStore.get(blockNumber);
23
+ if (!blockHash) {
24
+ throw new Error(`Block hash not found for block number ${blockNumber}`);
25
+ }
26
+ return {
27
+ number: blockNumber,
28
+ hash: blockHash
29
+ };
30
+ }
31
+ async handleBlockStreamEvent(event) {
32
+ switch(event.type){
33
+ case 'blocks-added':
34
+ {
35
+ const blocks = event.blocks.map((b)=>b.block);
36
+ for (const block of blocks){
37
+ this.l2BlockHashesStore.set(block.number, (await block.header.hash()).toString());
38
+ }
39
+ this.l2TipsStore.set('latest', blocks.at(-1).number);
40
+ break;
41
+ }
42
+ case 'chain-pruned':
43
+ this.l2TipsStore.set('latest', event.blockNumber);
44
+ break;
45
+ case 'chain-proven':
46
+ this.l2TipsStore.set('proven', event.blockNumber);
47
+ break;
48
+ case 'chain-finalized':
49
+ this.l2TipsStore.set('finalized', event.blockNumber);
50
+ for (const key of this.l2BlockHashesStore.keys()){
51
+ if (key < event.blockNumber) {
52
+ this.l2BlockHashesStore.delete(key);
53
+ }
54
+ }
55
+ break;
56
+ }
57
+ }
58
+ }
@@ -1,7 +1,7 @@
1
1
  import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider, L2Tips } from '@aztec/stdlib/block';
2
2
  import type { AztecAsyncKVStore } from '../interfaces/store.js';
3
3
  /** Stores currently synced L2 tips and unfinalized block hashes. */
4
- export declare class L2TipsStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
4
+ export declare class L2TipsKVStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
5
5
  private readonly l2TipsStore;
6
6
  private readonly l2BlockHashesStore;
7
7
  constructor(store: AztecAsyncKVStore, namespace: string);
@@ -1 +1 @@
1
- {"version":3,"file":"l2_tips_store.d.ts","sourceRoot":"","sources":["../../src/stores/l2_tips_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAE9B,MAAM,EACP,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,oEAAoE;AACpE,qBAAa,WAAY,YAAW,yBAAyB,EAAE,8BAA8B;IAC3F,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;IAChE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;gBAEvD,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM;IAKhD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAQ3B,QAAQ;IAaT,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB9E"}
1
+ {"version":3,"file":"l2_tips_store.d.ts","sourceRoot":"","sources":["../../src/stores/l2_tips_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,yBAAyB,EACzB,8BAA8B,EAE9B,MAAM,EACP,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,oEAAoE;AACpE,qBAAa,aAAc,YAAW,yBAAyB,EAAE,8BAA8B;IAC7F,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoC;IAChE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgC;gBAEvD,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM;IAKhD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAQ3B,QAAQ;IAaT,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB9E"}
@@ -1,4 +1,4 @@
1
- /** Stores currently synced L2 tips and unfinalized block hashes. */ export class L2TipsStore {
1
+ /** Stores currently synced L2 tips and unfinalized block hashes. */ export class L2TipsKVStore {
2
2
  l2TipsStore;
3
3
  l2BlockHashesStore;
4
4
  constructor(store, namespace){
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/kv-store",
3
- "version": "0.82.2-alpha-testnet.4",
3
+ "version": "0.82.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/interfaces/index.js",
@@ -25,10 +25,10 @@
25
25
  "./package.local.json"
26
26
  ],
27
27
  "dependencies": {
28
- "@aztec/ethereum": "0.82.2-alpha-testnet.4",
29
- "@aztec/foundation": "0.82.2-alpha-testnet.4",
30
- "@aztec/native": "0.82.2-alpha-testnet.4",
31
- "@aztec/stdlib": "0.82.2-alpha-testnet.4",
28
+ "@aztec/ethereum": "0.82.3",
29
+ "@aztec/foundation": "0.82.3",
30
+ "@aztec/native": "0.82.3",
31
+ "@aztec/stdlib": "0.82.3",
32
32
  "idb": "^8.0.0",
33
33
  "lmdb": "^3.2.0",
34
34
  "msgpackr": "^1.11.2",
@@ -74,29 +74,6 @@ export class AztecIndexedDBStore implements AztecAsyncKVStore {
74
74
  return kvStore;
75
75
  }
76
76
 
77
- /**
78
- * Forks the current DB into a new DB by backing it up to a temporary location and opening a new indexedb.
79
- * @returns A new AztecIndexedDBStore.
80
- */
81
- async fork(): Promise<AztecAsyncKVStore> {
82
- const forkedStore = await AztecIndexedDBStore.open(this.#log, undefined, true);
83
- this.#log.verbose(`Forking store to ${forkedStore.#name}`);
84
-
85
- // Copy old data to new store
86
- const oldData = this.#rootDB.transaction('data').store;
87
- const dataToWrite = [];
88
- for await (const cursor of oldData.iterate()) {
89
- dataToWrite.push(cursor.value);
90
- }
91
- const tx = forkedStore.#rootDB.transaction('data', 'readwrite').store;
92
- for (const data of dataToWrite) {
93
- await tx.add(data);
94
- }
95
-
96
- this.#log.debug(`Forked store at ${forkedStore.#name} opened successfully`);
97
- return forkedStore;
98
- }
99
-
100
77
  /**
101
78
  * Creates a new AztecMap in the store.
102
79
  * @param name - Name of the map
@@ -200,4 +177,8 @@ export class AztecIndexedDBStore implements AztecAsyncKVStore {
200
177
  close(): Promise<void> {
201
178
  return Promise.resolve();
202
179
  }
180
+
181
+ backupTo(_dstPath: string, _compact?: boolean): Promise<void> {
182
+ throw new Error('Method not implemented.');
183
+ }
203
184
  }
@@ -61,11 +61,6 @@ export interface AztecKVStore {
61
61
  */
62
62
  clear(): Promise<void>;
63
63
 
64
- /**
65
- * Forks the store.
66
- */
67
- fork(): Promise<AztecKVStore>;
68
-
69
64
  /**
70
65
  * Deletes the store
71
66
  */
@@ -130,28 +125,18 @@ export interface AztecAsyncKVStore {
130
125
  */
131
126
  transactionAsync<T extends Exclude<any, Promise<any>>>(callback: () => Promise<T>): Promise<T>;
132
127
 
133
- /**
134
- * Clears all entries in the store
135
- */
128
+ /** Clears all entries in the store */
136
129
  clear(): Promise<void>;
137
130
 
138
- /**
139
- * Forks the store.
140
- */
141
- fork(): Promise<AztecAsyncKVStore>;
142
-
143
- /**
144
- * Deletes the store
145
- */
131
+ /** Deletes the store */
146
132
  delete(): Promise<void>;
147
133
 
148
- /**
149
- * Estimates the size of the store in bytes.
150
- */
134
+ /** Estimates the size of the store in bytes. */
151
135
  estimateSize(): Promise<StoreSize>;
152
136
 
153
- /**
154
- * Closes the store
155
- */
137
+ /** Closes the store */
156
138
  close(): Promise<void>;
139
+
140
+ /** Backups the store to the target folder.*/
141
+ backupTo(dstPath: string, compact?: boolean): Promise<void>;
157
142
  }
package/src/lmdb/store.ts CHANGED
@@ -75,21 +75,6 @@ export class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
75
75
  return new AztecLmdbStore(rootDb, ephemeral, dbPath);
76
76
  }
77
77
 
78
- /**
79
- * Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
80
- * @returns A new AztecLmdbStore.
81
- */
82
- async fork() {
83
- const baseDir = this.path;
84
- this.#log.debug(`Forking store with basedir ${baseDir}`);
85
- const forkPath = await fs.mkdtemp(join(baseDir, 'aztec-store-fork-'));
86
- this.#log.verbose(`Forking store to ${forkPath}`);
87
- await this.#rootDb.backup(forkPath, false);
88
- const forkDb = open(forkPath, { noSync: this.isEphemeral });
89
- this.#log.debug(`Forked store at ${forkPath} opened successfully`);
90
- return new AztecLmdbStore(forkDb, this.isEphemeral, forkPath);
91
- }
92
-
93
78
  /**
94
79
  * Creates a new AztecMap in the store.
95
80
  * @param name - Name of the map
@@ -238,4 +223,8 @@ export class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
238
223
  }
239
224
  return { actualSize, numItems };
240
225
  }
226
+
227
+ backupTo(_dstPath: string, _compact?: boolean): Promise<void> {
228
+ throw new Error('Method not implemented.');
229
+ }
241
230
  }
@@ -19,6 +19,7 @@ export enum LMDBMessageType {
19
19
  STATS,
20
20
 
21
21
  CLOSE,
22
+ COPY_STORE,
22
23
  }
23
24
 
24
25
  type Key = Uint8Array;
@@ -63,6 +64,11 @@ interface CloseCursorRequest {
63
64
  cursor: number;
64
65
  }
65
66
 
67
+ interface CopyStoreRequest {
68
+ dstPath: string;
69
+ compact: boolean;
70
+ }
71
+
66
72
  export interface Batch {
67
73
  addEntries: Array<KeyValues>;
68
74
  removeEntries: Array<KeyOptionalValues>;
@@ -87,6 +93,7 @@ export type LMDBRequestBody = {
87
93
  [LMDBMessageType.STATS]: void;
88
94
 
89
95
  [LMDBMessageType.CLOSE]: void;
96
+ [LMDBMessageType.COPY_STORE]: CopyStoreRequest;
90
97
  };
91
98
 
92
99
  interface GetResponse {
@@ -139,6 +146,8 @@ export type LMDBResponseBody = {
139
146
  [LMDBMessageType.STATS]: StatsResponse;
140
147
 
141
148
  [LMDBMessageType.CLOSE]: BoolResponse;
149
+
150
+ [LMDBMessageType.COPY_STORE]: BoolResponse;
142
151
  };
143
152
 
144
153
  export interface LMDBMessageChannel {
@@ -3,7 +3,7 @@ import { Semaphore, SerialQueue } from '@aztec/foundation/queue';
3
3
  import { MsgpackChannel, NativeLMDBStore } from '@aztec/native';
4
4
 
5
5
  import { AsyncLocalStorage } from 'async_hooks';
6
- import { rm } from 'fs/promises';
6
+ import { mkdir, rm } from 'fs/promises';
7
7
 
8
8
  import type { AztecAsyncArray } from '../interfaces/array.js';
9
9
  import type { Key, StoreSize } from '../interfaces/common.js';
@@ -82,6 +82,11 @@ export class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
82
82
  return db;
83
83
  }
84
84
 
85
+ public async backupTo(dstPath: string, compact = true) {
86
+ await mkdir(dstPath, { recursive: true });
87
+ await this.channel.sendMessage(LMDBMessageType.COPY_STORE, { dstPath, compact });
88
+ }
89
+
85
90
  public getReadTx(): ReadTransaction {
86
91
  if (!this.open) {
87
92
  throw new Error('Store is closed');
@@ -155,10 +160,6 @@ export class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
155
160
  return Promise.resolve();
156
161
  }
157
162
 
158
- fork(): Promise<AztecAsyncKVStore> {
159
- throw new Error('Not implemented');
160
- }
161
-
162
163
  async delete(): Promise<void> {
163
164
  await this.close();
164
165
  await rm(this.dataDir, { recursive: true, force: true, maxRetries: 3 });
@@ -1 +1,6 @@
1
+ import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
2
+
1
3
  export * from './l2_tips_store.js';
4
+ export * from './l2_tips_memory_store.js';
5
+
6
+ export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
@@ -0,0 +1,3 @@
1
+ import type { L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from '@aztec/stdlib/block';
2
+
3
+ export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
@@ -0,0 +1,66 @@
1
+ import type {
2
+ L2BlockId,
3
+ L2BlockStreamEvent,
4
+ L2BlockStreamEventHandler,
5
+ L2BlockStreamLocalDataProvider,
6
+ L2BlockTag,
7
+ L2Tips,
8
+ } from '@aztec/stdlib/block';
9
+
10
+ /** Stores currently synced L2 tips and unfinalized block hashes. */
11
+ export class L2TipsMemoryStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
12
+ private readonly l2TipsStore: Map<L2BlockTag, number> = new Map();
13
+ private readonly l2BlockHashesStore: Map<number, string> = new Map();
14
+
15
+ public getL2BlockHash(number: number): Promise<string | undefined> {
16
+ return Promise.resolve(this.l2BlockHashesStore.get(number));
17
+ }
18
+
19
+ public getL2Tips(): Promise<L2Tips> {
20
+ return Promise.resolve({
21
+ latest: this.getL2Tip('latest'),
22
+ finalized: this.getL2Tip('finalized'),
23
+ proven: this.getL2Tip('proven'),
24
+ });
25
+ }
26
+
27
+ private getL2Tip(tag: L2BlockTag): L2BlockId {
28
+ const blockNumber = this.l2TipsStore.get(tag);
29
+ if (blockNumber === undefined || blockNumber === 0) {
30
+ return { number: 0, hash: undefined };
31
+ }
32
+ const blockHash = this.l2BlockHashesStore.get(blockNumber);
33
+ if (!blockHash) {
34
+ throw new Error(`Block hash not found for block number ${blockNumber}`);
35
+ }
36
+
37
+ return { number: blockNumber, hash: blockHash };
38
+ }
39
+
40
+ public async handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
41
+ switch (event.type) {
42
+ case 'blocks-added': {
43
+ const blocks = event.blocks.map(b => b.block);
44
+ for (const block of blocks) {
45
+ this.l2BlockHashesStore.set(block.number, (await block.header.hash()).toString());
46
+ }
47
+ this.l2TipsStore.set('latest', blocks.at(-1)!.number);
48
+ break;
49
+ }
50
+ case 'chain-pruned':
51
+ this.l2TipsStore.set('latest', event.blockNumber);
52
+ break;
53
+ case 'chain-proven':
54
+ this.l2TipsStore.set('proven', event.blockNumber);
55
+ break;
56
+ case 'chain-finalized':
57
+ this.l2TipsStore.set('finalized', event.blockNumber);
58
+ for (const key of this.l2BlockHashesStore.keys()) {
59
+ if (key < event.blockNumber) {
60
+ this.l2BlockHashesStore.delete(key);
61
+ }
62
+ }
63
+ break;
64
+ }
65
+ }
66
+ }
@@ -11,7 +11,7 @@ import type { AztecAsyncMap } from '../interfaces/map.js';
11
11
  import type { AztecAsyncKVStore } from '../interfaces/store.js';
12
12
 
13
13
  /** Stores currently synced L2 tips and unfinalized block hashes. */
14
- export class L2TipsStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
14
+ export class L2TipsKVStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
15
15
  private readonly l2TipsStore: AztecAsyncMap<L2BlockTag, number>;
16
16
  private readonly l2BlockHashesStore: AztecAsyncMap<number, string>;
17
17
 
@@ -1,3 +0,0 @@
1
- import type { AztecAsyncKVStore, AztecKVStore } from './store.js';
2
- export declare function describeAztecStore(testName: string, getPersistentStore: () => Promise<AztecKVStore | AztecAsyncKVStore>, getPersistentNoPathStore: () => Promise<AztecKVStore | AztecAsyncKVStore>, getEphemeralStore: () => Promise<AztecKVStore | AztecAsyncKVStore>): void;
3
- //# sourceMappingURL=store_test_suite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/store_test_suite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,EACnE,wBAAwB,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,EACzE,iBAAiB,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,QA6CnE"}
@@ -1,37 +0,0 @@
1
- import { expect } from 'chai';
2
- import { isSyncStore } from './utils.js';
3
- export function describeAztecStore(testName, getPersistentStore, getPersistentNoPathStore, getEphemeralStore) {
4
- describe(testName, ()=>{
5
- async function get(store, singleton) {
6
- return isSyncStore(store) ? singleton.get() : await singleton.getAsync();
7
- }
8
- const itForks = async (store)=>{
9
- const singleton = store.openSingleton('singleton');
10
- await singleton.set('foo');
11
- const forkedStore = await store.fork();
12
- const forkedSingleton = forkedStore.openSingleton('singleton');
13
- expect(await get(store, singleton)).to.equal('foo');
14
- await forkedSingleton.set('bar');
15
- expect(await get(store, singleton)).to.equal('foo');
16
- expect(await get(forkedStore, forkedSingleton)).to.equal('bar');
17
- await forkedSingleton.delete();
18
- expect(await get(store, singleton)).to.equal('foo');
19
- await forkedStore.delete();
20
- };
21
- it('forks a persistent store', async ()=>{
22
- const store = await getPersistentStore();
23
- await itForks(store);
24
- await store.delete();
25
- });
26
- it('forks a persistent store with no path', async ()=>{
27
- const store = await getPersistentNoPathStore();
28
- await itForks(store);
29
- await store.delete();
30
- });
31
- it('forks an ephemeral store', async ()=>{
32
- const store = await getEphemeralStore();
33
- await itForks(store);
34
- await store.delete();
35
- });
36
- });
37
- }
@@ -1,56 +0,0 @@
1
- import { expect } from 'chai';
2
-
3
- import type { AztecAsyncSingleton, AztecSingleton } from './singleton.js';
4
- import type { AztecAsyncKVStore, AztecKVStore } from './store.js';
5
- import { isSyncStore } from './utils.js';
6
-
7
- export function describeAztecStore(
8
- testName: string,
9
- getPersistentStore: () => Promise<AztecKVStore | AztecAsyncKVStore>,
10
- getPersistentNoPathStore: () => Promise<AztecKVStore | AztecAsyncKVStore>,
11
- getEphemeralStore: () => Promise<AztecKVStore | AztecAsyncKVStore>,
12
- ) {
13
- describe(testName, () => {
14
- async function get(
15
- store: AztecKVStore | AztecAsyncKVStore,
16
- singleton: AztecSingleton<string> | AztecAsyncSingleton<string>,
17
- ) {
18
- return isSyncStore(store)
19
- ? (singleton as AztecSingleton<string>).get()
20
- : await (singleton as AztecAsyncSingleton<string>).getAsync();
21
- }
22
-
23
- const itForks = async (store: AztecKVStore | AztecAsyncKVStore) => {
24
- const singleton = store.openSingleton<string>('singleton');
25
- await singleton.set('foo');
26
-
27
- const forkedStore = await store.fork();
28
- const forkedSingleton = forkedStore.openSingleton<string>('singleton');
29
- expect(await get(store, singleton)).to.equal('foo');
30
- await forkedSingleton.set('bar');
31
- expect(await get(store, singleton)).to.equal('foo');
32
- expect(await get(forkedStore, forkedSingleton)).to.equal('bar');
33
- await forkedSingleton.delete();
34
- expect(await get(store, singleton)).to.equal('foo');
35
- await forkedStore.delete();
36
- };
37
-
38
- it('forks a persistent store', async () => {
39
- const store = await getPersistentStore();
40
- await itForks(store);
41
- await store.delete();
42
- });
43
-
44
- it('forks a persistent store with no path', async () => {
45
- const store = await getPersistentNoPathStore();
46
- await itForks(store);
47
- await store.delete();
48
- });
49
-
50
- it('forks an ephemeral store', async () => {
51
- const store = await getEphemeralStore();
52
- await itForks(store);
53
- await store.delete();
54
- });
55
- });
56
- }