@aztec-labs/kv-store 6.0.0-nightly.20260829

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 (246) hide show
  1. package/README.md +19 -0
  2. package/dest/bench/shared_map_bench.d.ts +19 -0
  3. package/dest/bench/shared_map_bench.d.ts.map +1 -0
  4. package/dest/bench/shared_map_bench.js +91 -0
  5. package/dest/deprecated/indexeddb/array.d.ts +22 -0
  6. package/dest/deprecated/indexeddb/array.d.ts.map +1 -0
  7. package/dest/deprecated/indexeddb/array.js +121 -0
  8. package/dest/deprecated/indexeddb/index.d.ts +7 -0
  9. package/dest/deprecated/indexeddb/index.d.ts.map +1 -0
  10. package/dest/deprecated/indexeddb/index.js +8 -0
  11. package/dest/deprecated/indexeddb/map.d.ts +38 -0
  12. package/dest/deprecated/indexeddb/map.d.ts.map +1 -0
  13. package/dest/deprecated/indexeddb/map.js +121 -0
  14. package/dest/deprecated/indexeddb/multi_map.d.ts +14 -0
  15. package/dest/deprecated/indexeddb/multi_map.d.ts.map +1 -0
  16. package/dest/deprecated/indexeddb/multi_map.js +108 -0
  17. package/dest/deprecated/indexeddb/set.d.ts +17 -0
  18. package/dest/deprecated/indexeddb/set.d.ts.map +1 -0
  19. package/dest/deprecated/indexeddb/set.js +24 -0
  20. package/dest/deprecated/indexeddb/singleton.d.ts +17 -0
  21. package/dest/deprecated/indexeddb/singleton.d.ts.map +1 -0
  22. package/dest/deprecated/indexeddb/singleton.js +41 -0
  23. package/dest/deprecated/indexeddb/store.d.ts +98 -0
  24. package/dest/deprecated/indexeddb/store.d.ts.map +1 -0
  25. package/dest/deprecated/indexeddb/store.js +171 -0
  26. package/dest/interfaces/array.d.ts +81 -0
  27. package/dest/interfaces/array.d.ts.map +1 -0
  28. package/dest/interfaces/array.js +1 -0
  29. package/dest/interfaces/array_test_suite.d.ts +3 -0
  30. package/dest/interfaces/array_test_suite.d.ts.map +1 -0
  31. package/dest/interfaces/array_test_suite.js +103 -0
  32. package/dest/interfaces/common.d.ts +25 -0
  33. package/dest/interfaces/common.d.ts.map +1 -0
  34. package/dest/interfaces/common.js +8 -0
  35. package/dest/interfaces/counter.d.ts +59 -0
  36. package/dest/interfaces/counter.d.ts.map +1 -0
  37. package/dest/interfaces/counter.js +1 -0
  38. package/dest/interfaces/index.d.ts +10 -0
  39. package/dest/interfaces/index.d.ts.map +1 -0
  40. package/dest/interfaces/index.js +8 -0
  41. package/dest/interfaces/map.d.ts +106 -0
  42. package/dest/interfaces/map.d.ts.map +1 -0
  43. package/dest/interfaces/map.js +3 -0
  44. package/dest/interfaces/map_test_suite.d.ts +3 -0
  45. package/dest/interfaces/map_test_suite.d.ts.map +1 -0
  46. package/dest/interfaces/map_test_suite.js +261 -0
  47. package/dest/interfaces/multi_map.d.ts +41 -0
  48. package/dest/interfaces/multi_map.d.ts.map +1 -0
  49. package/dest/interfaces/multi_map.js +3 -0
  50. package/dest/interfaces/multi_map_test_suite.d.ts +3 -0
  51. package/dest/interfaces/multi_map_test_suite.d.ts.map +1 -0
  52. package/dest/interfaces/multi_map_test_suite.js +363 -0
  53. package/dest/interfaces/set.d.ts +44 -0
  54. package/dest/interfaces/set.d.ts.map +1 -0
  55. package/dest/interfaces/set.js +1 -0
  56. package/dest/interfaces/set_test_suite.d.ts +3 -0
  57. package/dest/interfaces/set_test_suite.d.ts.map +1 -0
  58. package/dest/interfaces/set_test_suite.js +95 -0
  59. package/dest/interfaces/singleton.d.ts +29 -0
  60. package/dest/interfaces/singleton.d.ts.map +1 -0
  61. package/dest/interfaces/singleton.js +4 -0
  62. package/dest/interfaces/singleton_test_suite.d.ts +3 -0
  63. package/dest/interfaces/singleton_test_suite.d.ts.map +1 -0
  64. package/dest/interfaces/singleton_test_suite.js +29 -0
  65. package/dest/interfaces/store.d.ts +120 -0
  66. package/dest/interfaces/store.d.ts.map +1 -0
  67. package/dest/interfaces/store.js +1 -0
  68. package/dest/interfaces/utils.d.ts +18 -0
  69. package/dest/interfaces/utils.d.ts.map +1 -0
  70. package/dest/interfaces/utils.js +18 -0
  71. package/dest/lmdb/array.d.ts +24 -0
  72. package/dest/lmdb/array.d.ts.map +1 -0
  73. package/dest/lmdb/array.js +119 -0
  74. package/dest/lmdb/counter.d.ts +19 -0
  75. package/dest/lmdb/counter.d.ts.map +1 -0
  76. package/dest/lmdb/counter.js +50 -0
  77. package/dest/lmdb/index.d.ts +12 -0
  78. package/dest/lmdb/index.d.ts.map +1 -0
  79. package/dest/lmdb/index.js +25 -0
  80. package/dest/lmdb/map.d.ts +40 -0
  81. package/dest/lmdb/map.d.ts.map +1 -0
  82. package/dest/lmdb/map.js +156 -0
  83. package/dest/lmdb/multi_map.d.ts +13 -0
  84. package/dest/lmdb/multi_map.d.ts.map +1 -0
  85. package/dest/lmdb/multi_map.js +44 -0
  86. package/dest/lmdb/set.d.ts +18 -0
  87. package/dest/lmdb/set.d.ts.map +1 -0
  88. package/dest/lmdb/set.js +32 -0
  89. package/dest/lmdb/singleton.d.ts +14 -0
  90. package/dest/lmdb/singleton.d.ts.map +1 -0
  91. package/dest/lmdb/singleton.js +26 -0
  92. package/dest/lmdb/store.d.ts +94 -0
  93. package/dest/lmdb/store.d.ts.map +1 -0
  94. package/dest/lmdb/store.js +200 -0
  95. package/dest/lmdb-v2/array.d.ts +19 -0
  96. package/dest/lmdb-v2/array.d.ts.map +1 -0
  97. package/dest/lmdb-v2/array.js +103 -0
  98. package/dest/lmdb-v2/factory.d.ts +35 -0
  99. package/dest/lmdb-v2/factory.d.ts.map +1 -0
  100. package/dest/lmdb-v2/factory.js +126 -0
  101. package/dest/lmdb-v2/index.d.ts +3 -0
  102. package/dest/lmdb-v2/index.d.ts.map +1 -0
  103. package/dest/lmdb-v2/index.js +2 -0
  104. package/dest/lmdb-v2/map.d.ts +53 -0
  105. package/dest/lmdb-v2/map.d.ts.map +1 -0
  106. package/dest/lmdb-v2/map.js +106 -0
  107. package/dest/lmdb-v2/message.d.ts +131 -0
  108. package/dest/lmdb-v2/message.d.ts.map +1 -0
  109. package/dest/lmdb-v2/message.js +20 -0
  110. package/dest/lmdb-v2/multi_map.d.ts +52 -0
  111. package/dest/lmdb-v2/multi_map.d.ts.map +1 -0
  112. package/dest/lmdb-v2/multi_map.js +123 -0
  113. package/dest/lmdb-v2/read_transaction.d.ts +16 -0
  114. package/dest/lmdb-v2/read_transaction.d.ts.map +1 -0
  115. package/dest/lmdb-v2/read_transaction.js +137 -0
  116. package/dest/lmdb-v2/set.d.ts +15 -0
  117. package/dest/lmdb-v2/set.d.ts.map +1 -0
  118. package/dest/lmdb-v2/set.js +23 -0
  119. package/dest/lmdb-v2/singleton.d.ts +12 -0
  120. package/dest/lmdb-v2/singleton.d.ts.map +1 -0
  121. package/dest/lmdb-v2/singleton.js +31 -0
  122. package/dest/lmdb-v2/store.d.ts +43 -0
  123. package/dest/lmdb-v2/store.d.ts.map +1 -0
  124. package/dest/lmdb-v2/store.js +171 -0
  125. package/dest/lmdb-v2/tx-helpers.d.ts +6 -0
  126. package/dest/lmdb-v2/tx-helpers.d.ts.map +1 -0
  127. package/dest/lmdb-v2/tx-helpers.js +21 -0
  128. package/dest/lmdb-v2/utils.d.ts +8 -0
  129. package/dest/lmdb-v2/utils.d.ts.map +1 -0
  130. package/dest/lmdb-v2/utils.js +32 -0
  131. package/dest/lmdb-v2/write_transaction.d.ts +17 -0
  132. package/dest/lmdb-v2/write_transaction.d.ts.map +1 -0
  133. package/dest/lmdb-v2/write_transaction.js +258 -0
  134. package/dest/sqlite-opfs/array.d.ts +21 -0
  135. package/dest/sqlite-opfs/array.d.ts.map +1 -0
  136. package/dest/sqlite-opfs/array.js +128 -0
  137. package/dest/sqlite-opfs/errors.d.ts +54 -0
  138. package/dest/sqlite-opfs/errors.d.ts.map +1 -0
  139. package/dest/sqlite-opfs/errors.js +77 -0
  140. package/dest/sqlite-opfs/index.d.ts +14 -0
  141. package/dest/sqlite-opfs/index.d.ts.map +1 -0
  142. package/dest/sqlite-opfs/index.js +16 -0
  143. package/dest/sqlite-opfs/internal/ordered-binary-browser.d.ts +32 -0
  144. package/dest/sqlite-opfs/internal/ordered-binary-browser.d.ts.map +1 -0
  145. package/dest/sqlite-opfs/internal/ordered-binary-browser.js +448 -0
  146. package/dest/sqlite-opfs/manage.d.ts +22 -0
  147. package/dest/sqlite-opfs/manage.d.ts.map +1 -0
  148. package/dest/sqlite-opfs/manage.js +38 -0
  149. package/dest/sqlite-opfs/map.d.ts +35 -0
  150. package/dest/sqlite-opfs/map.d.ts.map +1 -0
  151. package/dest/sqlite-opfs/map.js +163 -0
  152. package/dest/sqlite-opfs/messages.d.ts +66 -0
  153. package/dest/sqlite-opfs/messages.d.ts.map +1 -0
  154. package/dest/sqlite-opfs/messages.js +5 -0
  155. package/dest/sqlite-opfs/multi_map.d.ts +16 -0
  156. package/dest/sqlite-opfs/multi_map.d.ts.map +1 -0
  157. package/dest/sqlite-opfs/multi_map.js +67 -0
  158. package/dest/sqlite-opfs/pool_integrity.d.ts +20 -0
  159. package/dest/sqlite-opfs/pool_integrity.d.ts.map +1 -0
  160. package/dest/sqlite-opfs/pool_integrity.js +282 -0
  161. package/dest/sqlite-opfs/pool_lock.d.ts +8 -0
  162. package/dest/sqlite-opfs/pool_lock.d.ts.map +1 -0
  163. package/dest/sqlite-opfs/pool_lock.js +47 -0
  164. package/dest/sqlite-opfs/set.d.ts +13 -0
  165. package/dest/sqlite-opfs/set.d.ts.map +1 -0
  166. package/dest/sqlite-opfs/set.js +19 -0
  167. package/dest/sqlite-opfs/singleton.d.ts +13 -0
  168. package/dest/sqlite-opfs/singleton.d.ts.map +1 -0
  169. package/dest/sqlite-opfs/singleton.js +48 -0
  170. package/dest/sqlite-opfs/store.d.ts +84 -0
  171. package/dest/sqlite-opfs/store.d.ts.map +1 -0
  172. package/dest/sqlite-opfs/store.js +318 -0
  173. package/dest/sqlite-opfs/worker.d.ts +2 -0
  174. package/dest/sqlite-opfs/worker.d.ts.map +1 -0
  175. package/dest/sqlite-opfs/worker.js +275 -0
  176. package/dest/stores/index.d.ts +3 -0
  177. package/dest/stores/index.d.ts.map +1 -0
  178. package/dest/stores/index.js +2 -0
  179. package/dest/stores/l2_tips_store.d.ts +23 -0
  180. package/dest/stores/l2_tips_store.d.ts.map +1 -0
  181. package/dest/stores/l2_tips_store.js +64 -0
  182. package/dest/utils.d.ts +15 -0
  183. package/dest/utils.d.ts.map +1 -0
  184. package/dest/utils.js +59 -0
  185. package/package.json +108 -0
  186. package/src/bench/shared_map_bench.ts +111 -0
  187. package/src/deprecated/indexeddb/array.ts +122 -0
  188. package/src/deprecated/indexeddb/index.ts +12 -0
  189. package/src/deprecated/indexeddb/map.ts +137 -0
  190. package/src/deprecated/indexeddb/multi_map.ts +106 -0
  191. package/src/deprecated/indexeddb/set.ts +37 -0
  192. package/src/deprecated/indexeddb/singleton.ts +52 -0
  193. package/src/deprecated/indexeddb/store.ts +214 -0
  194. package/src/interfaces/array.ts +92 -0
  195. package/src/interfaces/array_test_suite.ts +128 -0
  196. package/src/interfaces/common.ts +31 -0
  197. package/src/interfaces/counter.ts +65 -0
  198. package/src/interfaces/index.ts +9 -0
  199. package/src/interfaces/map.ts +117 -0
  200. package/src/interfaces/map_test_suite.ts +198 -0
  201. package/src/interfaces/multi_map.ts +45 -0
  202. package/src/interfaces/multi_map_test_suite.ts +372 -0
  203. package/src/interfaces/set.ts +48 -0
  204. package/src/interfaces/set_test_suite.ts +79 -0
  205. package/src/interfaces/singleton.ts +29 -0
  206. package/src/interfaces/singleton_test_suite.ts +44 -0
  207. package/src/interfaces/store.ts +142 -0
  208. package/src/interfaces/utils.ts +23 -0
  209. package/src/lmdb/array.ts +140 -0
  210. package/src/lmdb/counter.ts +67 -0
  211. package/src/lmdb/index.ts +41 -0
  212. package/src/lmdb/map.ts +177 -0
  213. package/src/lmdb/multi_map.ts +51 -0
  214. package/src/lmdb/set.ts +45 -0
  215. package/src/lmdb/singleton.ts +35 -0
  216. package/src/lmdb/store.ts +242 -0
  217. package/src/lmdb-v2/array.ts +120 -0
  218. package/src/lmdb-v2/factory.ts +184 -0
  219. package/src/lmdb-v2/index.ts +2 -0
  220. package/src/lmdb-v2/map.ts +136 -0
  221. package/src/lmdb-v2/message.ts +169 -0
  222. package/src/lmdb-v2/multi_map.ts +150 -0
  223. package/src/lmdb-v2/read_transaction.ts +156 -0
  224. package/src/lmdb-v2/set.ts +33 -0
  225. package/src/lmdb-v2/singleton.ts +38 -0
  226. package/src/lmdb-v2/store.ts +220 -0
  227. package/src/lmdb-v2/tx-helpers.ts +29 -0
  228. package/src/lmdb-v2/utils.ts +32 -0
  229. package/src/lmdb-v2/write_transaction.ts +315 -0
  230. package/src/sqlite-opfs/array.ts +124 -0
  231. package/src/sqlite-opfs/errors.ts +94 -0
  232. package/src/sqlite-opfs/index.ts +27 -0
  233. package/src/sqlite-opfs/internal/ordered-binary-browser.js +465 -0
  234. package/src/sqlite-opfs/manage.ts +46 -0
  235. package/src/sqlite-opfs/map.ts +163 -0
  236. package/src/sqlite-opfs/messages.ts +39 -0
  237. package/src/sqlite-opfs/multi_map.ts +74 -0
  238. package/src/sqlite-opfs/pool_integrity.ts +327 -0
  239. package/src/sqlite-opfs/pool_lock.ts +62 -0
  240. package/src/sqlite-opfs/set.ts +29 -0
  241. package/src/sqlite-opfs/singleton.ts +48 -0
  242. package/src/sqlite-opfs/store.ts +331 -0
  243. package/src/sqlite-opfs/worker.ts +259 -0
  244. package/src/stores/index.ts +3 -0
  245. package/src/stores/l2_tips_store.ts +67 -0
  246. package/src/utils.ts +98 -0
@@ -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,41 @@
1
+ import { hash } from 'ohash';
2
+ /**
3
+ * Stores a single value in IndexedDB.
4
+ */ export class IndexedDBAztecSingleton {
5
+ #_db;
6
+ #rootDB;
7
+ #container;
8
+ #slot;
9
+ constructor(rootDB, name){
10
+ this.#rootDB = rootDB;
11
+ this.#container = `singleton:${name}`;
12
+ this.#slot = `singleton:${name}:value`;
13
+ }
14
+ set db(db) {
15
+ this.#_db = db;
16
+ }
17
+ get db() {
18
+ return this.#_db ? this.#_db : this.#rootDB.transaction('data', 'readwrite').store;
19
+ }
20
+ async getAsync() {
21
+ const data = await this.db.get(this.#slot);
22
+ return data?.value;
23
+ }
24
+ async set(val) {
25
+ const result = await this.db.put({
26
+ container: this.#container,
27
+ slot: this.#slot,
28
+ key: [
29
+ this.#slot
30
+ ],
31
+ keyCount: 1,
32
+ value: val,
33
+ hash: hash(val)
34
+ });
35
+ return result !== undefined;
36
+ }
37
+ async delete() {
38
+ await this.db.delete(this.#slot);
39
+ return true;
40
+ }
41
+ }
@@ -0,0 +1,98 @@
1
+ import type { Logger } from '@aztec-labs/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-labs/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZXByZWNhdGVkL2luZGV4ZWRkYi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUUsS0FBSyxZQUFZLEVBQW9CLE1BQU0sS0FBSyxDQUFDO0FBRXpFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU9uRSxNQUFNLE1BQU0sVUFBVSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUk7SUFDeEMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNULFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsR0FBRyxFQUFFLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLElBQUksRUFBRSxNQUFNLENBQUM7Q0FDZCxDQUFDO0FBRUYsTUFBTSxXQUFXLGNBQWUsU0FBUSxRQUFRO0lBQzlDLElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUNaLE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRSxNQUFNLENBQUM7WUFDbEIsR0FBRyxFQUFFLEdBQUcsQ0FBQztZQUNULFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQztTQUNkLENBQUM7S0FDSCxDQUFDO0NBQ0g7QUFFRDs7OztHQUlHO0FBQ0gscUJBQWEsbUJBQW9CLFlBQVcsaUJBQWlCOzthQWV6QyxXQUFXLEVBQUUsT0FBTztJQUZ0QyxZQUNFLE1BQU0sRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLEVBQ3BCLFdBQVcsRUFBRSxPQUFPLEVBQ3BDLElBQUksRUFBRSxNQUFNLEVBTWI7SUFDRDs7Ozs7Ozs7O09BU0c7SUFDSCxPQUFhLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEdBQUUsT0FBZSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQW1CdEc7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBSXpFO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUlyRDtJQUVEOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUluRjtJQUVELFdBQVcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBRTlEO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUkzRDtJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUluRTtJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FxQjFEO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQUVWO0lBRUQsa0RBQWtEO0lBQzVDLE1BQU0sa0JBS1g7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUVqQztJQUVLLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzNCO0lBRUQsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFNUQ7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/deprecated/indexeddb/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,171 @@
1
+ import { SerialQueue } from '@aztec-labs/foundation/queue';
2
+ import { deleteDB, openDB } from 'idb';
3
+ import { IndexedDBAztecArray } from './array.js';
4
+ import { IndexedDBAztecMap } from './map.js';
5
+ import { IndexedDBAztecMultiMap } from './multi_map.js';
6
+ import { IndexedDBAztecSet } from './set.js';
7
+ import { IndexedDBAztecSingleton } from './singleton.js';
8
+ /**
9
+ * A key-value store backed by IndexedDB.
10
+ *
11
+ * @deprecated The IndexedDB backend is being retired. Use `@aztec-labs/kv-store/sqlite-opfs` instead.
12
+ */ export class AztecIndexedDBStore {
13
+ isEphemeral;
14
+ #rootDB;
15
+ #name;
16
+ #txQueue;
17
+ #containers;
18
+ constructor(rootDB, isEphemeral, name){
19
+ this.isEphemeral = isEphemeral;
20
+ this.#containers = new Set();
21
+ this.#rootDB = rootDB;
22
+ this.#name = name;
23
+ this.#txQueue = new SerialQueue();
24
+ this.#txQueue.start();
25
+ }
26
+ /**
27
+ * Creates a new AztecKVStore backed by IndexedDB. The path to the database is optional. If not provided,
28
+ * the database will be stored in a temporary location and be deleted when the process exists.
29
+ *
30
+ *
31
+ * @param path - A path on the disk to store the database. Optional
32
+ * @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
33
+ * @param log - A logger to use. Optional
34
+ * @returns The store
35
+ */ static async open(log, name, ephemeral = false) {
36
+ name = name && !ephemeral ? name : globalThis.crypto.getRandomValues(new Uint8Array(16)).join('');
37
+ log.debug(`Opening IndexedDB ${ephemeral ? 'temp ' : ''}database with name ${name}`);
38
+ const rootDB = await openDB(name, 1, {
39
+ upgrade (db) {
40
+ const objectStore = db.createObjectStore('data', {
41
+ keyPath: 'slot'
42
+ });
43
+ objectStore.createIndex('key', [
44
+ 'container',
45
+ 'key'
46
+ ], {
47
+ unique: false
48
+ });
49
+ // Keep count of the maximum number of keys ever inserted in the container
50
+ // This allows unique slots for repeated keys, which is useful for multi-maps
51
+ objectStore.createIndex('keyCount', [
52
+ 'container',
53
+ 'key',
54
+ 'keyCount'
55
+ ], {
56
+ unique: true
57
+ });
58
+ // Keep an index on the pair key-hash for a given container, allowing us to efficiently
59
+ // delete unique values from multi-maps
60
+ objectStore.createIndex('hash', [
61
+ 'container',
62
+ 'key',
63
+ 'hash'
64
+ ], {
65
+ unique: true
66
+ });
67
+ }
68
+ });
69
+ const kvStore = new AztecIndexedDBStore(rootDB, ephemeral, name);
70
+ return kvStore;
71
+ }
72
+ /**
73
+ * Creates a new AztecMap in the store.
74
+ * @param name - Name of the map
75
+ * @returns A new AztecMap
76
+ */ openMap(name) {
77
+ const map = new IndexedDBAztecMap(this.#rootDB, name);
78
+ this.#containers.add(map);
79
+ return map;
80
+ }
81
+ /**
82
+ * Creates a new AztecSet in the store.
83
+ * @param name - Name of the set
84
+ * @returns A new AztecSet
85
+ */ openSet(name) {
86
+ const set = new IndexedDBAztecSet(this.#rootDB, name);
87
+ this.#containers.add(set);
88
+ return set;
89
+ }
90
+ /**
91
+ * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
92
+ * @param name - Name of the map
93
+ * @returns A new AztecMultiMap
94
+ */ openMultiMap(name) {
95
+ const multimap = new IndexedDBAztecMultiMap(this.#rootDB, name);
96
+ this.#containers.add(multimap);
97
+ return multimap;
98
+ }
99
+ openCounter(_name) {
100
+ throw new Error('Method not implemented.');
101
+ }
102
+ /**
103
+ * Creates a new AztecArray in the store.
104
+ * @param name - Name of the array
105
+ * @returns A new AztecArray
106
+ */ openArray(name) {
107
+ const array = new IndexedDBAztecArray(this.#rootDB, name);
108
+ this.#containers.add(array);
109
+ return array;
110
+ }
111
+ /**
112
+ * Creates a new AztecSingleton in the store.
113
+ * @param name - Name of the singleton
114
+ * @returns A new AztecSingleton
115
+ */ openSingleton(name) {
116
+ const singleton = new IndexedDBAztecSingleton(this.#rootDB, name);
117
+ this.#containers.add(singleton);
118
+ return singleton;
119
+ }
120
+ /**
121
+ * Runs a callback in a transaction.
122
+ * @param callback - Function to execute in a transaction
123
+ * @returns A promise that resolves to the return value of the callback
124
+ */ transactionAsync(callback) {
125
+ // We can only have one transaction at a time for the same store
126
+ // So we need to wait for the current one to finish
127
+ return this.#txQueue.put(async ()=>{
128
+ const tx = this.#rootDB.transaction('data', 'readwrite');
129
+ for (const container of this.#containers){
130
+ container.db = tx.store;
131
+ }
132
+ // Avoid awaiting this promise so it doesn't get scheduled in the next microtask
133
+ // By then, the tx would be closed
134
+ const runningPromise = callback();
135
+ // Wait for the transaction to finish
136
+ await tx.done;
137
+ for (const container of this.#containers){
138
+ container.db = undefined;
139
+ }
140
+ // Return the result of the callback.
141
+ // Tx is guaranteed to already be closed, so the await doesn't hurt anything here
142
+ return await runningPromise;
143
+ });
144
+ }
145
+ /**
146
+ * Clears all entries in the store & sub DBs.
147
+ */ async clear() {
148
+ await this.#rootDB.transaction('data', 'readwrite').store.clear();
149
+ }
150
+ /** Deletes this store and removes the database */ async delete() {
151
+ this.#containers.clear();
152
+ await this.#txQueue.end();
153
+ this.#rootDB.close();
154
+ await deleteDB(this.#name);
155
+ }
156
+ estimateSize() {
157
+ return Promise.resolve({
158
+ mappingSize: 0,
159
+ physicalFileSize: 0,
160
+ actualSize: 0,
161
+ numItems: 0
162
+ });
163
+ }
164
+ async close() {
165
+ await this.#txQueue.end();
166
+ this.#rootDB.close();
167
+ }
168
+ backupTo(_dstPath, _compact) {
169
+ throw new Error('Method not implemented.');
170
+ }
171
+ }
@@ -0,0 +1,81 @@
1
+ import type { Value } from './common.js';
2
+ /**
3
+ * An array backed by a persistent store. Can not have any holes in it.
4
+ */
5
+ interface BaseAztecArray<T extends Value> {
6
+ /**
7
+ * Pushes values to the end of the array
8
+ * @param vals - The values to push to the end of the array
9
+ * @returns The new length of the array
10
+ */
11
+ push(...vals: T[]): Promise<number>;
12
+ /**
13
+ * Pops a value from the end of the array.
14
+ * @returns The value that was popped, or undefined if the array was empty
15
+ */
16
+ pop(): Promise<T | undefined>;
17
+ /**
18
+ * Updates the value at the given index. Index can be in the range [-length, length - 1).
19
+ * @param index - The index to set the value at
20
+ * @param val - The value to set
21
+ * @returns Whether the value was set
22
+ */
23
+ setAt(index: number, val: T): Promise<boolean>;
24
+ }
25
+ /**
26
+ * An array backed by a persistent store. Can not have any holes in it.
27
+ */
28
+ export interface AztecAsyncArray<T extends Value> extends BaseAztecArray<T> {
29
+ /**
30
+ * The size of the array
31
+ */
32
+ lengthAsync(): Promise<number>;
33
+ /**
34
+ * Gets the value at the given index. Index can be in the range [-length, length - 1).
35
+ * If the index is negative, it will be treated as an offset from the end of the array.
36
+ *
37
+ * @param index - The index to get the value from
38
+ * @returns The value at the given index or undefined if the index is out of bounds
39
+ */
40
+ atAsync(index: number): Promise<T | undefined>;
41
+ /**
42
+ * Iterates over the array with indexes.
43
+ */
44
+ entriesAsync(): AsyncIterableIterator<[number, T]>;
45
+ /**
46
+ * Iterates over the array.
47
+ */
48
+ valuesAsync(): AsyncIterableIterator<T>;
49
+ /**
50
+ * Iterates over the array.
51
+ */
52
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
53
+ }
54
+ export interface AztecArray<T extends Value> extends BaseAztecArray<T> {
55
+ /**
56
+ * The size of the array
57
+ */
58
+ length: number;
59
+ /**
60
+ * Gets the value at the given index. Index can be in the range [-length, length - 1).
61
+ * If the index is negative, it will be treated as an offset from the end of the array.
62
+ *
63
+ * @param index - The index to get the value from
64
+ * @returns The value at the given index or undefined if the index is out of bounds
65
+ */
66
+ at(index: number): T | undefined;
67
+ /**
68
+ * Iterates over the array with indexes.
69
+ */
70
+ entries(): IterableIterator<[number, T]>;
71
+ /**
72
+ * Iterates over the array.
73
+ */
74
+ values(): IterableIterator<T>;
75
+ /**
76
+ * Iterates over the array.
77
+ */
78
+ [Symbol.iterator](): IterableIterator<T>;
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6Qzs7R0FFRztBQUNILFVBQVUsY0FBYyxDQUFDLENBQUMsU0FBUyxLQUFLO0lBQ3RDOzs7O09BSUc7SUFDSCxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBDOzs7T0FHRztJQUNILEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBRTlCOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Q0FDaEQ7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxlQUFlLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBRSxTQUFRLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDekU7O09BRUc7SUFDSCxXQUFXLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRS9COzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFFL0M7O09BRUc7SUFDSCxZQUFZLElBQUkscUJBQXFCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVuRDs7T0FFRztJQUNILFdBQVcsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV4Qzs7T0FFRztJQUNILENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3BEO0FBRUQsTUFBTSxXQUFXLFVBQVUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFFLFNBQVEsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUNwRTs7T0FFRztJQUNILE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFZjs7Ozs7O09BTUc7SUFDSCxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBRWpDOztPQUVHO0lBQ0gsT0FBTyxJQUFJLGdCQUFnQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFekM7O09BRUc7SUFDSCxNQUFNLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUI7O09BRUc7SUFDSCxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUMxQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/interfaces/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,UAAU,cAAc,CAAC,CAAC,SAAS,KAAK;IACtC;;;;OAIG;IACH,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEpC;;;OAGG;IACH,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE9B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACzE;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/B;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAE/C;;OAEG;IACH,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD;;OAEG;IACH,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAExC;;OAEG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IACpE;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAEjC;;OAEG;IACH,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzC;;OAEG;IACH,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE9B;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC1C"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,3 @@
1
+ import type { AztecAsyncKVStore, AztecKVStore } from './store.js';
2
+ export declare function describeAztecArray(testName: string, getStore: () => AztecKVStore | Promise<AztecAsyncKVStore>, forceAsync?: boolean): void;
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlfdGVzdF9zdWl0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvYXJyYXlfdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHbEUsd0JBQWdCLGtCQUFrQixDQUNoQyxRQUFRLEVBQUUsTUFBTSxFQUNoQixRQUFRLEVBQUUsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQ3pELFVBQVUsR0FBRSxPQUFlLFFBc0g1QiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/array_test_suite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAsH5B"}
@@ -0,0 +1,103 @@
1
+ import { toArray } from '@aztec-labs/foundation/iterable';
2
+ import { isSyncStore } from './utils.js';
3
+ export function describeAztecArray(testName, getStore, forceAsync = false) {
4
+ describe(testName, ()=>{
5
+ let store;
6
+ let arr;
7
+ beforeEach(async ()=>{
8
+ store = await getStore();
9
+ arr = store.openArray('test');
10
+ });
11
+ afterEach(async ()=>{
12
+ await store.delete();
13
+ });
14
+ async function length(sut = arr) {
15
+ return isSyncStore(store) && !forceAsync ? sut.length : await sut.lengthAsync();
16
+ }
17
+ async function at(index) {
18
+ return isSyncStore(store) && !forceAsync ? arr.at(index) : await arr.atAsync(index);
19
+ }
20
+ async function entries() {
21
+ return isSyncStore(store) && !forceAsync ? await toArray(arr.entries()) : await toArray(arr.entriesAsync());
22
+ }
23
+ async function values(sut = arr) {
24
+ return isSyncStore(store) && !forceAsync ? await toArray(sut.values()) : await toArray(sut.valuesAsync());
25
+ }
26
+ it('should be able to push and pop values', async ()=>{
27
+ await arr.push(1);
28
+ await arr.push(2);
29
+ await arr.push(3);
30
+ expect(await length()).toBe(3);
31
+ expect(await arr.pop()).toBe(3);
32
+ expect(await arr.pop()).toBe(2);
33
+ expect(await arr.pop()).toBe(1);
34
+ expect(await arr.pop()).toBe(undefined);
35
+ });
36
+ it('should be able to get values by index', async ()=>{
37
+ await arr.push(1);
38
+ await arr.push(2);
39
+ await arr.push(3);
40
+ expect(await at(0)).toBe(1);
41
+ expect(await at(1)).toBe(2);
42
+ expect(await at(2)).toBe(3);
43
+ expect(await at(3)).toBe(undefined);
44
+ expect(await at(-1)).toBe(3);
45
+ expect(await at(-2)).toBe(2);
46
+ expect(await at(-3)).toBe(1);
47
+ expect(await at(-4)).toBe(undefined);
48
+ });
49
+ it('should be able to set values by index', async ()=>{
50
+ await arr.push(1);
51
+ await arr.push(2);
52
+ await arr.push(3);
53
+ expect(await arr.setAt(0, 4)).toBe(true);
54
+ expect(await arr.setAt(1, 5)).toBe(true);
55
+ expect(await arr.setAt(2, 6)).toBe(true);
56
+ expect(await arr.setAt(3, 7)).toBe(false);
57
+ expect(await at(0)).toBe(4);
58
+ expect(await at(1)).toBe(5);
59
+ expect(await at(2)).toBe(6);
60
+ expect(await at(3)).toBe(undefined);
61
+ expect(await arr.setAt(-1, 8)).toBe(true);
62
+ expect(await arr.setAt(-2, 9)).toBe(true);
63
+ expect(await arr.setAt(-3, 10)).toBe(true);
64
+ expect(await arr.setAt(-4, 11)).toBe(false);
65
+ expect(await at(-1)).toBe(8);
66
+ expect(await at(-2)).toBe(9);
67
+ expect(await at(-3)).toBe(10);
68
+ expect(await at(-4)).toBe(undefined);
69
+ });
70
+ it('should be able to iterate over values', async ()=>{
71
+ await arr.push(1);
72
+ await arr.push(2);
73
+ await arr.push(3);
74
+ expect(await values()).toEqual([
75
+ 1,
76
+ 2,
77
+ 3
78
+ ]);
79
+ expect(await entries()).toEqual([
80
+ [
81
+ 0,
82
+ 1
83
+ ],
84
+ [
85
+ 1,
86
+ 2
87
+ ],
88
+ [
89
+ 2,
90
+ 3
91
+ ]
92
+ ]);
93
+ });
94
+ it('should be able to restore state', async ()=>{
95
+ await arr.push(1);
96
+ await arr.push(2);
97
+ await arr.push(3);
98
+ const arr2 = store.openArray('test');
99
+ expect(await length(arr2)).toBe(3);
100
+ expect(await values(arr2)).toEqual(await values());
101
+ });
102
+ });
103
+ }
@@ -0,0 +1,25 @@
1
+ /** The key type for use with the kv-store */
2
+ export type Key = string | number | Uint8Array | Array<string | number>;
3
+ export type Value = NonNullable<any>;
4
+ /** A range of keys of arbitrary type. */
5
+ export type CustomRange<K> = {
6
+ /** The key of the first item to include */
7
+ start?: K;
8
+ /** The key of the last item to include */
9
+ end?: K;
10
+ /** Whether to iterate in reverse */
11
+ reverse?: boolean;
12
+ /** The maximum number of items to iterate over */
13
+ limit?: number;
14
+ };
15
+ /** Maps a custom range into a range of valid key types to iterate over. */
16
+ export declare function mapRange<CK, K extends Key = Key>(range: CustomRange<CK>, mapFn: (key: CK) => K): Range<K>;
17
+ /** A range of keys to iterate over. */
18
+ export type Range<K extends Key = Key> = CustomRange<K>;
19
+ export type StoreSize = {
20
+ mappingSize: number;
21
+ physicalFileSize: number;
22
+ actualSize: number;
23
+ numItems: number;
24
+ };
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBQzdDLE1BQU0sTUFBTSxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sR0FBRyxVQUFVLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztBQUV4RSxNQUFNLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVyQyx5Q0FBeUM7QUFDekMsTUFBTSxNQUFNLFdBQVcsQ0FBQyxDQUFDLElBQUk7SUFDM0IsMkNBQTJDO0lBQzNDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNWLDBDQUEwQztJQUMxQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDUixvQ0FBb0M7SUFDcEMsT0FBTyxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ2xCLGtEQUFrRDtJQUNsRCxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQUVGLDJFQUEyRTtBQUMzRSx3QkFBZ0IsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FPekc7QUFFRCx1Q0FBdUM7QUFDdkMsTUFBTSxNQUFNLEtBQUssQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFeEQsTUFBTSxNQUFNLFNBQVMsR0FBRztJQUFFLFdBQVcsRUFBRSxNQUFNLENBQUM7SUFBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFBQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQTtDQUFFLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/interfaces/common.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAExE,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAErC,yCAAyC;AACzC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,0CAA0C;IAC1C,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,QAAQ,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAOzG;AAED,uCAAuC;AACvC,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;AAExD,MAAM,MAAM,SAAS,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /** The key type for use with the kv-store */ /** Maps a custom range into a range of valid key types to iterate over. */ export function mapRange(range, mapFn) {
2
+ return {
3
+ start: range.start ? mapFn(range.start) : undefined,
4
+ end: range.end ? mapFn(range.end) : undefined,
5
+ reverse: range.reverse,
6
+ limit: range.limit
7
+ };
8
+ }
@@ -0,0 +1,59 @@
1
+ import type { Key, Range } from './common.js';
2
+ /**
3
+ * A map that counts how many times it sees a key. Once 0 is reached, that key is removed from the map.
4
+ * Iterating over the map will only return keys that have a count over 0.
5
+ *
6
+ * Keys are stored in sorted order
7
+ */
8
+ interface AztecBaseCounter<K extends Key = Key> {
9
+ /**
10
+ * Resets the count of the given key to the given value.
11
+ * @param key - The key to reset
12
+ * @param value - The value to reset the key to
13
+ */
14
+ set(key: K, value: number): Promise<void>;
15
+ /**
16
+ * Updates the count of the given key by the given delta. This can be used to increment or decrement the count.
17
+ * Once a key's count reaches 0, it is removed from the map.
18
+ *
19
+ * @param key - The key to update
20
+ * @param delta - The amount to modify the key by
21
+ */
22
+ update(key: K, delta: number): Promise<void>;
23
+ }
24
+ export interface AztecCounter<K extends Key = Key> extends AztecBaseCounter<K> {
25
+ /**
26
+ * Gets the current count.
27
+ * @param key - The key to get the count of
28
+ */
29
+ get(key: K): number;
30
+ /**
31
+ * Returns keys in the map in sorted order. Only returns keys that have been seen at least once.
32
+ * @param range - The range of keys to iterate over
33
+ */
34
+ keys(range: Range<K>): IterableIterator<K>;
35
+ /**
36
+ * Returns keys and their counts in the map sorted by the key. Only returns keys that have been seen at least once.
37
+ * @param range - The range of keys to iterate over
38
+ */
39
+ entries(range: Range<K>): IterableIterator<[K, number]>;
40
+ }
41
+ export interface AztecAsyncCounter<K extends Key = Key> extends AztecBaseCounter<K> {
42
+ /**
43
+ * Gets the current count.
44
+ * @param key - The key to get the count of
45
+ */
46
+ getAsync(key: K): Promise<number>;
47
+ /**
48
+ * Returns keys in the map in sorted order. Only returns keys that have been seen at least once.
49
+ * @param range - The range of keys to iterate over
50
+ */
51
+ keysAsync(range: Range<K>): AsyncIterableIterator<K>;
52
+ /**
53
+ * Returns keys and their counts in the map sorted by the key. Only returns keys that have been seen at least once.
54
+ * @param range - The range of keys to iterate over
55
+ */
56
+ entriesAsync(range: Range<K>): AsyncIterableIterator<[K, number]>;
57
+ }
58
+ export {};
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ludGVyZmFjZXMvY291bnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlDOzs7OztHQUtHO0FBQ0gsVUFBVSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUc7SUFDNUM7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0NBQzlDO0FBRUQsTUFBTSxXQUFXLFlBQVksQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsQ0FBRSxTQUFRLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM1RTs7O09BR0c7SUFDSCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7SUFFcEI7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0M7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztDQUN6RDtBQUVELE1BQU0sV0FBVyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxHQUFHLEdBQUcsQ0FBRSxTQUFRLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUNqRjs7O09BR0c7SUFDSCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEM7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFckQ7OztPQUdHO0lBQ0gsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztDQUNuRSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../src/interfaces/counter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,UAAU,gBAAgB,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG;IAC5C;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC5E;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;IAEpB;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAE3C;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACjF;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAErD;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;CACnE"}