@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,13 @@
1
+ import type { Key, Value } from '../interfaces/common.js';
2
+ import type { AztecAsyncMultiMap, AztecMultiMap } from '../interfaces/multi_map.js';
3
+ import { LmdbAztecMap } from './map.js';
4
+ /**
5
+ * A map backed by LMDB.
6
+ */
7
+ export declare class LmdbAztecMultiMap<K extends Key, V extends Value> extends LmdbAztecMap<K, V> implements AztecMultiMap<K, V>, AztecAsyncMultiMap<K, V> {
8
+ getValues(key: K): IterableIterator<V>;
9
+ getValuesAsync(key: K): AsyncIterableIterator<V>;
10
+ getValueCountAsync(key: K): Promise<number>;
11
+ deleteValue(key: K, val: V): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlfbWFwLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9tdWx0aV9tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxxQkFBYSxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxLQUFLLENBQzNELFNBQVEsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ3pCLFlBQVcsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXZELFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQVl0QztJQUVNLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUl0RDtJQUVELGtCQUFrQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQWMxQztJQUVLLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUUvQztDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi_map.d.ts","sourceRoot":"","sources":["../../src/lmdb/multi_map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,CAC3D,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,CACzB,YAAW,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAYtC;IAEM,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAItD;IAED,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAc1C;IAEK,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;CACF"}
@@ -0,0 +1,44 @@
1
+ import { LmdbAztecMap } from './map.js';
2
+ /**
3
+ * A map backed by LMDB.
4
+ */ export class LmdbAztecMultiMap extends LmdbAztecMap {
5
+ *getValues(key) {
6
+ const transaction = this.db.useReadTransaction();
7
+ try {
8
+ const values = this.db.getValues(this.slot(key), {
9
+ transaction
10
+ });
11
+ for (const value of values){
12
+ yield value?.[1];
13
+ }
14
+ } finally{
15
+ transaction.done();
16
+ }
17
+ }
18
+ async *getValuesAsync(key) {
19
+ for (const value of this.getValues(key)){
20
+ yield value;
21
+ }
22
+ }
23
+ getValueCountAsync(key) {
24
+ const transaction = this.db.useReadTransaction();
25
+ try {
26
+ const values = this.db.getValues(this.slot(key), {
27
+ transaction
28
+ });
29
+ let count = 0;
30
+ for (const _ of values){
31
+ count++;
32
+ }
33
+ return Promise.resolve(count);
34
+ } finally{
35
+ transaction.done();
36
+ }
37
+ }
38
+ async deleteValue(key, val) {
39
+ await this.db.remove(this.slot(key), [
40
+ key,
41
+ val
42
+ ]);
43
+ }
44
+ }
@@ -0,0 +1,18 @@
1
+ import type { Database } from 'lmdb';
2
+ import type { Key, Range } from '../interfaces/common.js';
3
+ import type { AztecAsyncSet, AztecSet } from '../interfaces/set.js';
4
+ /**
5
+ * A set backed by LMDB.
6
+ */
7
+ export declare class LmdbAztecSet<K extends Key> implements AztecSet<K>, AztecAsyncSet<K> {
8
+ private map;
9
+ constructor(rootDb: Database, mapName: string);
10
+ close(): Promise<void>;
11
+ has(key: K): boolean;
12
+ hasAsync(key: K): Promise<boolean>;
13
+ add(key: K): Promise<void>;
14
+ delete(key: K): Promise<void>;
15
+ entries(range?: Range<K>): IterableIterator<K>;
16
+ entriesAsync(range?: Range<K>): AsyncIterableIterator<K>;
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHcEU7O0dBRUc7QUFDSCxxQkFBYSxZQUFZLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBRSxZQUFXLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQy9FLE9BQU8sQ0FBQyxHQUFHLENBQTJCO0lBQ3RDLFlBQVksTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUU1QztJQUVELEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXJCO0lBRUQsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUVuQjtJQUVELFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFakM7SUFFRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXpCO0lBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU1QjtJQUVELE9BQU8sQ0FBQyxLQUFLLEdBQUUsS0FBSyxDQUFDLENBQUMsQ0FBTSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUVqRDtJQUVNLFlBQVksQ0FBQyxLQUFLLEdBQUUsS0FBSyxDQUFDLENBQUMsQ0FBTSxHQUFHLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUlsRTtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/lmdb/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGpE;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAA2B;IACtC,YAAY,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAE5C;IAED,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAErB;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAEnB;IAED,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjC;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzB;IAED,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5B;IAED,OAAO,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAEjD;IAEM,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAIlE;CACF"}
@@ -0,0 +1,32 @@
1
+ import { LmdbAztecMap } from './map.js';
2
+ /**
3
+ * A set backed by LMDB.
4
+ */ export class LmdbAztecSet {
5
+ map;
6
+ constructor(rootDb, mapName){
7
+ this.map = new LmdbAztecMap(rootDb, mapName);
8
+ }
9
+ close() {
10
+ return this.map.close();
11
+ }
12
+ has(key) {
13
+ return this.map.has(key);
14
+ }
15
+ hasAsync(key) {
16
+ return Promise.resolve(this.has(key));
17
+ }
18
+ add(key) {
19
+ return this.map.set(key, true);
20
+ }
21
+ delete(key) {
22
+ return this.map.delete(key);
23
+ }
24
+ entries(range = {}) {
25
+ return this.map.keys(range);
26
+ }
27
+ async *entriesAsync(range = {}) {
28
+ for await (const key of this.map.keysAsync(range)){
29
+ yield key;
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,14 @@
1
+ import type { Database, Key } from 'lmdb';
2
+ import type { AztecAsyncSingleton, AztecSingleton } from '../interfaces/singleton.js';
3
+ /**
4
+ * Stores a single value in LMDB.
5
+ */
6
+ export declare class LmdbAztecSingleton<T> implements AztecSingleton<T>, AztecAsyncSingleton<T> {
7
+ #private;
8
+ constructor(db: Database<unknown, Key>, name: string);
9
+ get(): T | undefined;
10
+ getAsync(): Promise<T | undefined>;
11
+ set(val: T): Promise<boolean>;
12
+ delete(): Promise<boolean>;
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9zaW5nbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUt0Rjs7R0FFRztBQUNILHFCQUFhLGtCQUFrQixDQUFDLENBQUMsQ0FBRSxZQUFXLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7O0lBSXJGLFlBQVksRUFBRSxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFHbkQ7SUFFRCxHQUFHLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FFbkI7SUFFRCxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FFakM7SUFFRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBRTVCO0lBRUQsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FFekI7Q0FDRiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lmdb/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKtF;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,cAAc,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;;IAIrF,YAAY,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAGnD;IAED,GAAG,IAAI,CAAC,GAAG,SAAS,CAEnB;IAED,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAEjC;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5B;IAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAEzB;CACF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Stores a single value in LMDB.
3
+ */ export class LmdbAztecSingleton {
4
+ #db;
5
+ #slot;
6
+ constructor(db, name){
7
+ this.#db = db;
8
+ this.#slot = [
9
+ 'singleton',
10
+ name,
11
+ 'value'
12
+ ];
13
+ }
14
+ get() {
15
+ return this.#db.get(this.#slot);
16
+ }
17
+ getAsync() {
18
+ return Promise.resolve(this.get());
19
+ }
20
+ set(val) {
21
+ return this.#db.put(this.#slot, val);
22
+ }
23
+ delete() {
24
+ return this.#db.remove(this.#slot);
25
+ }
26
+ }
@@ -0,0 +1,94 @@
1
+ import { type RootDatabase } from 'lmdb';
2
+ import type { AztecArray, AztecAsyncArray } from '../interfaces/array.js';
3
+ import type { Key, StoreSize, Value } from '../interfaces/common.js';
4
+ import type { AztecAsyncCounter, AztecCounter } from '../interfaces/counter.js';
5
+ import type { AztecAsyncMap, AztecMap } from '../interfaces/map.js';
6
+ import type { AztecAsyncMultiMap, AztecMultiMap } from '../interfaces/multi_map.js';
7
+ import type { AztecAsyncSet, AztecSet } from '../interfaces/set.js';
8
+ import type { AztecAsyncSingleton, AztecSingleton } from '../interfaces/singleton.js';
9
+ import type { AztecAsyncKVStore, AztecKVStore } from '../interfaces/store.js';
10
+ /**
11
+ * A key-value store backed by LMDB.
12
+ */
13
+ export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
14
+ #private;
15
+ readonly isEphemeral: boolean;
16
+ private path;
17
+ syncGetters: true;
18
+ constructor(rootDb: RootDatabase, isEphemeral: boolean, path: string);
19
+ /**
20
+ * Creates a new AztecKVStore backed by LMDB. The path to the database is optional. If not provided,
21
+ * the database will be stored in a temporary location and be deleted when the process exists.
22
+ *
23
+ * The `rollupAddress` passed is checked against what is stored in the database. If they do not match,
24
+ * the database is cleared before returning the store. This way data is not accidentally shared between
25
+ * different rollup instances.
26
+ *
27
+ * @param path - A path on the disk to store the database. Optional
28
+ * @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
29
+ * @param log - A logger to use. Optional
30
+ * @returns The store
31
+ */
32
+ static open(path?: string, mapSizeKb?: number, ephemeral?: boolean, log?: import("@aztec-labs/foundation/log").Logger): AztecLmdbStore;
33
+ /**
34
+ * Creates a new AztecMap in the store.
35
+ * @param name - Name of the map
36
+ * @returns A new AztecMap
37
+ */
38
+ openMap<K extends Key, V extends Value>(name: string): AztecMap<K, V> & AztecAsyncMap<K, V>;
39
+ /**
40
+ * Creates a new AztecSet in the store.
41
+ * @param name - Name of the set
42
+ * @returns A new AztecSet
43
+ */
44
+ openSet<K extends Key>(name: string): AztecSet<K> & AztecAsyncSet<K>;
45
+ /**
46
+ * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
47
+ * @param name - Name of the map
48
+ * @returns A new AztecMultiMap
49
+ */
50
+ openMultiMap<K extends Key, V extends Value>(name: string): AztecMultiMap<K, V> & AztecAsyncMultiMap<K, V>;
51
+ openCounter<K extends Key>(name: string): AztecCounter<K> & AztecAsyncCounter<K>;
52
+ /**
53
+ * Creates a new AztecArray in the store.
54
+ * @param name - Name of the array
55
+ * @returns A new AztecArray
56
+ */
57
+ openArray<T extends Value>(name: string): AztecArray<T> & AztecAsyncArray<T>;
58
+ /**
59
+ * Creates a new AztecSingleton in the store.
60
+ * @param name - Name of the singleton
61
+ * @returns A new AztecSingleton
62
+ */
63
+ openSingleton<T>(name: string): AztecSingleton<T> & AztecAsyncSingleton<T>;
64
+ /**
65
+ * Runs a callback in a transaction.
66
+ * @param callback - Function to execute in a transaction
67
+ * @returns A promise that resolves to the return value of the callback
68
+ */
69
+ transaction<T>(callback: () => T): Promise<T>;
70
+ /**
71
+ * Runs a callback in a transaction.
72
+ * @param callback - Function to execute in a transaction
73
+ * @returns A promise that resolves to the return value of the callback
74
+ */
75
+ transactionAsync<T>(callback: () => Promise<T>): Promise<T>;
76
+ /**
77
+ * Clears all entries in the store & sub DBs atomically within a single transaction.
78
+ */
79
+ clear(): Promise<void>;
80
+ /**
81
+ * Drops the database & sub DBs atomically within a single transaction.
82
+ */
83
+ drop(): Promise<void>;
84
+ /**
85
+ * Close the database. Note, once this is closed we can no longer interact with the DB.
86
+ */
87
+ close(): Promise<void>;
88
+ /** Deletes this store and removes the database files from disk */
89
+ delete(): Promise<void>;
90
+ estimateSize(): Promise<StoreSize>;
91
+ private estimateSubDBSize;
92
+ backupTo(_dstPath: string, _compact?: boolean): Promise<void>;
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBaUIsS0FBSyxZQUFZLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFJOUQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVE5RTs7R0FFRztBQUNILHFCQUFhLGNBQWUsWUFBVyxZQUFZLEVBQUUsaUJBQWlCOzthQVVsRCxXQUFXLEVBQUUsT0FBTztJQUNwQyxPQUFPLENBQUMsSUFBSTtJQVZkLFdBQVcsT0FBaUI7SUFPNUIsWUFDRSxNQUFNLEVBQUUsWUFBWSxFQUNKLFdBQVcsRUFBRSxPQUFPLEVBQzVCLElBQUksRUFBRSxNQUFNLEVBZXJCO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQ2IsU0FBUyxTQUFrQixFQUMzQixTQUFTLEdBQUUsT0FBZSxFQUMxQixHQUFHLDhDQUFnQyxHQUNsQyxjQUFjLENBT2hCO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBRTFGO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FFbkU7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUV6RztJQUVELFdBQVcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUUvRTtJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBRTNFO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBRXpFO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FFNUM7SUFFRDs7OztPQUlHO0lBQ0csZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBRWhFO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQU1WO0lBRUQ7O09BRUc7SUFDRyxJQUFJLGtCQU1UO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQUlWO0lBRUQsa0VBQWtFO0lBQzVELE1BQU0sa0JBT1g7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQW9CakM7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBNEJ6QixRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU1RDtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"AAGA,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,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrE,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;;aAUlD,WAAW,EAAE,OAAO;IACpC,OAAO,CAAC,IAAI;IAVd,WAAW,OAAiB;IAO5B,YACE,MAAM,EAAE,YAAY,EACJ,WAAW,EAAE,OAAO,EAC5B,IAAI,EAAE,MAAM,EAerB;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,EAAE,MAAM,EACb,SAAS,SAAkB,EAC3B,SAAS,GAAE,OAAe,EAC1B,GAAG,8CAAgC,GAClC,cAAc,CAOhB;IAED;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAE1F;IAED;;;;OAIG;IACH,OAAO,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAEnE;IAED;;;;OAIG;IACH,YAAY,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAEzG;IAED,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAE/E;IAED;;;;OAIG;IACH,SAAS,CAAC,CAAC,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAE3E;IAED;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAEzE;IAED;;;;OAIG;IACH,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE5C;IAED;;;;OAIG;IACG,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhE;IAED;;OAEG;IACG,KAAK,kBAMV;IAED;;OAEG;IACG,IAAI,kBAMT;IAED;;OAEG;IACG,KAAK,kBAIV;IAED,kEAAkE;IAC5D,MAAM,kBAOX;IAED,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,CAoBjC;IAED,OAAO,CAAC,iBAAiB;IA4BzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;CACF"}
@@ -0,0 +1,200 @@
1
+ import { randomBytes } from '@aztec-labs/foundation/crypto/random';
2
+ import { createLogger } from '@aztec-labs/foundation/log';
3
+ import { promises as fs, mkdirSync } from 'fs';
4
+ import { open } from 'lmdb';
5
+ import { tmpdir } from 'os';
6
+ import { join } from 'path';
7
+ import { LmdbAztecArray } from './array.js';
8
+ import { LmdbAztecCounter } from './counter.js';
9
+ import { LmdbAztecMap } from './map.js';
10
+ import { LmdbAztecMultiMap } from './multi_map.js';
11
+ import { LmdbAztecSet } from './set.js';
12
+ import { LmdbAztecSingleton } from './singleton.js';
13
+ /**
14
+ * A key-value store backed by LMDB.
15
+ */ export class AztecLmdbStore {
16
+ isEphemeral;
17
+ path;
18
+ syncGetters;
19
+ #rootDb;
20
+ #data;
21
+ #multiMapData;
22
+ #log;
23
+ constructor(rootDb, isEphemeral, path){
24
+ this.isEphemeral = isEphemeral;
25
+ this.path = path;
26
+ this.syncGetters = true;
27
+ this.#log = createLogger('kv-store:lmdb');
28
+ this.#rootDb = rootDb;
29
+ // big bucket to store all the data
30
+ this.#data = rootDb.openDB('data', {
31
+ encoding: 'msgpack',
32
+ keyEncoding: 'ordered-binary'
33
+ });
34
+ this.#multiMapData = rootDb.openDB('data_dup_sort', {
35
+ encoding: 'ordered-binary',
36
+ keyEncoding: 'ordered-binary',
37
+ dupSort: true
38
+ });
39
+ }
40
+ /**
41
+ * Creates a new AztecKVStore backed by LMDB. 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
+ * The `rollupAddress` passed is checked against what is stored in the database. If they do not match,
45
+ * the database is cleared before returning the store. This way data is not accidentally shared between
46
+ * different rollup instances.
47
+ *
48
+ * @param path - A path on the disk to store the database. Optional
49
+ * @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
50
+ * @param log - A logger to use. Optional
51
+ * @returns The store
52
+ */ static open(path, mapSizeKb = 1 * 1024 * 1024, ephemeral = false, log = createLogger('kv-store:lmdb')) {
53
+ const dbPath = path ?? join(tmpdir(), randomBytes(8).toString('hex'));
54
+ mkdirSync(dbPath, {
55
+ recursive: true
56
+ });
57
+ const mapSize = 1024 * mapSizeKb;
58
+ log.debug(`Opening LMDB database at ${path || 'temporary location'} with map size ${mapSize}`);
59
+ const rootDb = open({
60
+ path: dbPath,
61
+ noSync: ephemeral,
62
+ mapSize
63
+ });
64
+ return new AztecLmdbStore(rootDb, ephemeral, dbPath);
65
+ }
66
+ /**
67
+ * Creates a new AztecMap in the store.
68
+ * @param name - Name of the map
69
+ * @returns A new AztecMap
70
+ */ openMap(name) {
71
+ return new LmdbAztecMap(this.#data, name);
72
+ }
73
+ /**
74
+ * Creates a new AztecSet in the store.
75
+ * @param name - Name of the set
76
+ * @returns A new AztecSet
77
+ */ openSet(name) {
78
+ return new LmdbAztecSet(this.#data, name);
79
+ }
80
+ /**
81
+ * Creates a new AztecMultiMap in the store. A multi-map stores multiple values for a single key automatically.
82
+ * @param name - Name of the map
83
+ * @returns A new AztecMultiMap
84
+ */ openMultiMap(name) {
85
+ return new LmdbAztecMultiMap(this.#multiMapData, name);
86
+ }
87
+ openCounter(name) {
88
+ return new LmdbAztecCounter(this.#data, name);
89
+ }
90
+ /**
91
+ * Creates a new AztecArray in the store.
92
+ * @param name - Name of the array
93
+ * @returns A new AztecArray
94
+ */ openArray(name) {
95
+ return new LmdbAztecArray(this.#data, name);
96
+ }
97
+ /**
98
+ * Creates a new AztecSingleton in the store.
99
+ * @param name - Name of the singleton
100
+ * @returns A new AztecSingleton
101
+ */ openSingleton(name) {
102
+ return new LmdbAztecSingleton(this.#data, name);
103
+ }
104
+ /**
105
+ * Runs a callback in a transaction.
106
+ * @param callback - Function to execute in a transaction
107
+ * @returns A promise that resolves to the return value of the callback
108
+ */ transaction(callback) {
109
+ return this.#rootDb.transaction(callback);
110
+ }
111
+ /**
112
+ * Runs a callback in a transaction.
113
+ * @param callback - Function to execute in a transaction
114
+ * @returns A promise that resolves to the return value of the callback
115
+ */ async transactionAsync(callback) {
116
+ return await this.#rootDb.transaction(callback);
117
+ }
118
+ /**
119
+ * Clears all entries in the store & sub DBs atomically within a single transaction.
120
+ */ async clear() {
121
+ await this.#rootDb.transaction(async ()=>{
122
+ await this.#data.clearAsync();
123
+ await this.#multiMapData.clearAsync();
124
+ await this.#rootDb.clearAsync();
125
+ });
126
+ }
127
+ /**
128
+ * Drops the database & sub DBs atomically within a single transaction.
129
+ */ async drop() {
130
+ await this.#rootDb.transaction(async ()=>{
131
+ await this.#data.drop();
132
+ await this.#multiMapData.drop();
133
+ await this.#rootDb.drop();
134
+ });
135
+ }
136
+ /**
137
+ * Close the database. Note, once this is closed we can no longer interact with the DB.
138
+ */ async close() {
139
+ await this.#data.close();
140
+ await this.#multiMapData.close();
141
+ await this.#rootDb.close();
142
+ }
143
+ /** Deletes this store and removes the database files from disk */ async delete() {
144
+ await this.drop();
145
+ await this.close();
146
+ if (this.path) {
147
+ await fs.rm(this.path, {
148
+ recursive: true,
149
+ force: true,
150
+ maxRetries: 3
151
+ });
152
+ this.#log.verbose(`Deleted database files at ${this.path}`);
153
+ }
154
+ }
155
+ estimateSize() {
156
+ const stats = this.#rootDb.getStats();
157
+ // The 'mapSize' is the total amount of virtual address space allocated to the DB (effectively the maximum possible size)
158
+ // http://www.lmdb.tech/doc/group__mdb.html#a4bde3c8b676457342cba2fe27aed5fbd
159
+ let mapSize = 0;
160
+ if ('mapSize' in stats && typeof stats.mapSize === 'number') {
161
+ mapSize = stats.mapSize;
162
+ }
163
+ let physicalFileSize = 0;
164
+ if ('physicalFileSize' in stats && typeof stats.physicalFileSize === 'number') {
165
+ physicalFileSize = stats.physicalFileSize;
166
+ }
167
+ const dataResult = this.estimateSubDBSize(this.#data);
168
+ const multiResult = this.estimateSubDBSize(this.#multiMapData);
169
+ return Promise.resolve({
170
+ mappingSize: mapSize,
171
+ physicalFileSize: physicalFileSize,
172
+ actualSize: dataResult.actualSize + multiResult.actualSize,
173
+ numItems: dataResult.numItems + multiResult.numItems
174
+ });
175
+ }
176
+ estimateSubDBSize(db) {
177
+ const stats = db.getStats();
178
+ let actualSize = 0;
179
+ let numItems = 0;
180
+ // This is the total number of key/value pairs present in the DB
181
+ if ('entryCount' in stats && typeof stats.entryCount === 'number') {
182
+ numItems = stats.entryCount;
183
+ }
184
+ // The closest value we can get to the actual size of the database is the number of consumed pages * the page size
185
+ if ('treeBranchPageCount' in stats && typeof stats.treeBranchPageCount === 'number' && 'treeLeafPageCount' in stats && typeof stats.treeLeafPageCount === 'number' && 'overflowPages' in stats && typeof stats.overflowPages === 'number' && 'pageSize' in stats && typeof stats.pageSize === 'number') {
186
+ const branchPages = stats.treeBranchPageCount;
187
+ const leafPages = stats.treeLeafPageCount;
188
+ const overflowPages = stats.overflowPages;
189
+ const pageSize = stats.pageSize;
190
+ actualSize = (branchPages + leafPages + overflowPages) * pageSize;
191
+ }
192
+ return {
193
+ actualSize,
194
+ numItems
195
+ };
196
+ }
197
+ backupTo(_dstPath, _compact) {
198
+ throw new Error('Method not implemented.');
199
+ }
200
+ }
@@ -0,0 +1,19 @@
1
+ import type { AztecAsyncArray } from '../interfaces/array.js';
2
+ import type { Value } from '../interfaces/common.js';
3
+ import type { AztecLMDBStoreV2 } from './store.js';
4
+ export declare class LMDBArray<T extends Value> implements AztecAsyncArray<T> {
5
+ private store;
6
+ private length;
7
+ private encoder;
8
+ private prefix;
9
+ constructor(store: AztecLMDBStoreV2, name: string);
10
+ pop(): Promise<T | undefined>;
11
+ push(...vals: T[]): Promise<number>;
12
+ setAt(index: number, val: T): Promise<boolean>;
13
+ atAsync(index: number): Promise<T | undefined>;
14
+ lengthAsync(): Promise<number>;
15
+ entriesAsync(): AsyncIterableIterator<[number, T]>;
16
+ valuesAsync(): AsyncIterableIterator<T>;
17
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3JELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSW5ELHFCQUFhLFNBQVMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFFLFlBQVcsZUFBZSxDQUFDLENBQUMsQ0FBQztJQU1qRSxPQUFPLENBQUMsS0FBSztJQUxmLE9BQU8sQ0FBQyxNQUFNLENBQThCO0lBQzVDLE9BQU8sQ0FBQyxPQUFPLENBQWlCO0lBQ2hDLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFFdkIsWUFDVSxLQUFLLEVBQUUsZ0JBQWdCLEVBQy9CLElBQUksRUFBRSxNQUFNLEVBSWI7SUFFRCxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FjNUI7SUFFRCxJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQVNsQztJQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVk3QztJQUVELE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBYTdDO0lBRUssV0FBVyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFbkM7SUFFTSxZQUFZLElBQUkscUJBQXFCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0F5QnhEO0lBRU0sV0FBVyxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUk3QztJQUVELENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUVqRDtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/array.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,qBAAa,SAAS,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAMjE,OAAO,CAAC,KAAK;IALf,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,MAAM,CAAS;IAEvB,YACU,KAAK,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM,EAIb;IAED,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAc5B;IAED,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CASlC;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAY7C;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAa7C;IAEK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAEnC;IAEM,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAyBxD;IAEM,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAI7C;IAED,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAEjD;CACF"}
@@ -0,0 +1,103 @@
1
+ var _computedKey;
2
+ import { Encoder } from 'msgpackr/pack';
3
+ import { execInReadTx, execInWriteTx } from './tx-helpers.js';
4
+ import { deserializeKey, serializeKey } from './utils.js';
5
+ _computedKey = Symbol.asyncIterator;
6
+ export class LMDBArray {
7
+ store;
8
+ length;
9
+ encoder;
10
+ prefix;
11
+ constructor(store, name){
12
+ this.store = store;
13
+ this.encoder = new Encoder();
14
+ this.length = store.openSingleton(name + ':length');
15
+ this.prefix = `array:${name}`;
16
+ }
17
+ pop() {
18
+ return execInWriteTx(this.store, async (tx)=>{
19
+ const length = await this.lengthAsync();
20
+ if (length === 0) {
21
+ return;
22
+ }
23
+ const val = await tx.get(serializeKey(this.prefix, length - 1));
24
+ await tx.remove(serializeKey(this.prefix, length - 1));
25
+ await this.length.set(length - 1);
26
+ return val ? this.encoder.unpack(val) : undefined;
27
+ });
28
+ }
29
+ push(...vals) {
30
+ return execInWriteTx(this.store, async (tx)=>{
31
+ let length = await this.lengthAsync();
32
+ for (const val of vals){
33
+ await tx.set(serializeKey(this.prefix, length++), this.encoder.pack(val));
34
+ }
35
+ await this.length.set(length);
36
+ return length;
37
+ });
38
+ }
39
+ setAt(index, val) {
40
+ return execInWriteTx(this.store, async (tx)=>{
41
+ const length = await this.lengthAsync();
42
+ if (index < 0) {
43
+ index += length;
44
+ }
45
+ if (index < 0 || index >= length) {
46
+ return false;
47
+ }
48
+ await tx.set(serializeKey(this.prefix, index), this.encoder.pack(val));
49
+ return true;
50
+ });
51
+ }
52
+ atAsync(index) {
53
+ return execInReadTx(this.store, async (tx)=>{
54
+ const length = await this.lengthAsync();
55
+ if (index < 0) {
56
+ index += length;
57
+ }
58
+ if (index < 0 || index >= length) {
59
+ return undefined;
60
+ }
61
+ const val = await tx.get(serializeKey(this.prefix, index));
62
+ return val ? this.encoder.unpack(val) : undefined;
63
+ });
64
+ }
65
+ async lengthAsync() {
66
+ return await this.length.getAsync() ?? 0;
67
+ }
68
+ async *entriesAsync() {
69
+ // pin array length so that pushes don't affect iteration
70
+ const length = await this.lengthAsync();
71
+ if (length === 0) {
72
+ return;
73
+ }
74
+ let tx = this.store.getCurrentWriteTx();
75
+ const shouldClose = !tx;
76
+ tx ??= this.store.getReadTx();
77
+ try {
78
+ for await (const [key, val] of tx.iterate(serializeKey(this.prefix, 0), undefined, false, length)){
79
+ const deserializedKey = deserializeKey(this.prefix, key);
80
+ // if pops happened while iterating we may have read too much. Terminate early
81
+ if (deserializedKey === false) {
82
+ break;
83
+ }
84
+ yield [
85
+ deserializedKey,
86
+ this.encoder.unpack(val)
87
+ ];
88
+ }
89
+ } finally{
90
+ if (shouldClose) {
91
+ tx.close();
92
+ }
93
+ }
94
+ }
95
+ async *valuesAsync() {
96
+ for await (const [_, value] of this.entriesAsync()){
97
+ yield value;
98
+ }
99
+ }
100
+ [_computedKey]() {
101
+ return this.valuesAsync();
102
+ }
103
+ }
@@ -0,0 +1,35 @@
1
+ import { EthAddress } from '@aztec-labs/foundation/eth-address';
2
+ import { type LoggerBindings } from '@aztec-labs/foundation/log';
3
+ import { type SchemaVersionMismatchPolicy, type VersionFileReadFailurePolicy } from '@aztec-labs/stdlib/database-version/manager';
4
+ import type { DataStoreConfig } from '@aztec-labs/stdlib/kv-store';
5
+ import { AztecLMDBStoreV2 } from './store.js';
6
+ /** Optional versioning hooks for persistent LMDB stores. */
7
+ export type CreateStoreOptions = {
8
+ onUpgrade?: (dataDir: string, currentVersion: number, latestVersion: number) => Promise<void>;
9
+ schemaVersionMismatchPolicy?: SchemaVersionMismatchPolicy;
10
+ versionFileReadFailurePolicy?: VersionFileReadFailurePolicy;
11
+ };
12
+ export declare function createStore(name: string, schemaVersion: number, config: DataStoreConfig, bindings?: LoggerBindings, options?: CreateStoreOptions): Promise<AztecLMDBStoreV2>;
13
+ /**
14
+ * Open a persistent on-disk store rooted in OS tmpdir. Caller chooses whether to
15
+ * auto-remove the directory on close. Uses standard durable LMDB flags (fsync on
16
+ * every commit) — for full in-memory / NOSYNC semantics use `openEphemeralStore`.
17
+ */
18
+ export declare function openTmpStore(name: string, cleanupTmpDir?: boolean, dbMapSizeKb?: number, maxReaders?: number, bindings?: LoggerBindings): Promise<AztecLMDBStoreV2>;
19
+ /**
20
+ * Open a fully-ephemeral store: a fresh tmpdir backing file, LMDB opened with
21
+ * MDB_NOSYNC | MDB_NOMETASYNC (no fsync, kernel-only writeback), and the directory
22
+ * unconditionally removed on close. Intended for tests and worker-local scratch
23
+ * stores where durability is explicitly not desired.
24
+ */
25
+ export declare function openEphemeralStore(name: string, dbMapSizeKb?: number, maxReaders?: number, bindings?: LoggerBindings): Promise<AztecLMDBStoreV2>;
26
+ export declare function openStoreAt(dataDir: string, dbMapSizeKb?: number, maxReaders?: number, bindings?: LoggerBindings): Promise<AztecLMDBStoreV2>;
27
+ /**
28
+ * Open a fully-ephemeral store seeded from an existing `data.mdb` file. Creates a fresh tmpdir,
29
+ * copies `srcDataMdbPath` into it as `data.mdb`, opens with MDB_NOSYNC | MDB_NOMETASYNC, and
30
+ * removes the tmpdir on close. Intended for worker clones of a main-thread-built store — the
31
+ * source file is never written to.
32
+ */
33
+ export declare function cloneEphemeralStoreFrom(srcDataMdbPath: string, name: string, dbMapSizeKb?: number, maxReaders?: number, bindings?: LoggerBindings): Promise<AztecLMDBStoreV2>;
34
+ export declare function openVersionedStoreAt(dataDirectory: string, schemaVersion: number, rollupAddress: EthAddress, dbMapSizeKb?: number, maxReaders?: number, bindings?: LoggerBindings): Promise<AztecLMDBStoreV2>;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEUsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLDRCQUE0QixDQUFDO0FBQy9FLE9BQU8sRUFFTCxLQUFLLDJCQUEyQixFQUNoQyxLQUFLLDRCQUE0QixFQUNsQyxNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUk5Qyw0REFBNEQ7QUFDNUQsTUFBTSxNQUFNLGtCQUFrQixHQUFHO0lBQy9CLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlGLDJCQUEyQixDQUFDLEVBQUUsMkJBQTJCLENBQUM7SUFDMUQsNEJBQTRCLENBQUMsRUFBRSw0QkFBNEIsQ0FBQztDQUM3RCxDQUFDO0FBRUYsd0JBQXNCLFdBQVcsQ0FDL0IsSUFBSSxFQUFFLE1BQU0sRUFDWixhQUFhLEVBQUUsTUFBTSxFQUNyQixNQUFNLEVBQUUsZUFBZSxFQUN2QixRQUFRLENBQUMsRUFBRSxjQUFjLEVBQ3pCLE9BQU8sR0FBRSxrQkFBdUIsR0FDL0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBaUMzQjtBQUVEOzs7O0dBSUc7QUFDSCx3QkFBc0IsWUFBWSxDQUNoQyxJQUFJLEVBQUUsTUFBTSxFQUNaLGFBQWEsR0FBRSxPQUFjLEVBQzdCLFdBQVcsU0FBcUIsRUFDaEMsVUFBVSxTQUFjLEVBQ3hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBb0IzQjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLGtCQUFrQixDQUN0QyxJQUFJLEVBQUUsTUFBTSxFQUNaLFdBQVcsU0FBcUIsRUFDaEMsVUFBVSxTQUFjLEVBQ3hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBZTNCO0FBRUQsd0JBQXNCLFdBQVcsQ0FDL0IsT0FBTyxFQUFFLE1BQU0sRUFDZixXQUFXLFNBQXFCLEVBQ2hDLFVBQVUsU0FBYyxFQUN4QixRQUFRLENBQUMsRUFBRSxjQUFjLEdBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUkzQjtBQUVEOzs7OztHQUtHO0FBQ0gsd0JBQXNCLHVCQUF1QixDQUMzQyxjQUFjLEVBQUUsTUFBTSxFQUN0QixJQUFJLEVBQUUsTUFBTSxFQUNaLFdBQVcsU0FBcUIsRUFDaEMsVUFBVSxTQUFjLEVBQ3hCLFFBQVEsQ0FBQyxFQUFFLGNBQWMsR0FDeEIsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBZ0IzQjtBQUVELHdCQUFzQixvQkFBb0IsQ0FDeEMsYUFBYSxFQUFFLE1BQU0sRUFDckIsYUFBYSxFQUFFLE1BQU0sRUFDckIsYUFBYSxFQUFFLFVBQVUsRUFDekIsV0FBVyxTQUFxQixFQUNoQyxVQUFVLFNBQWMsRUFDeEIsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FVM0IifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C,4DAA4D;AAC5D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,2BAA2B,CAAC,EAAE,2BAA2B,CAAC;IAC1D,4BAA4B,CAAC,EAAE,4BAA4B,CAAC;CAC7D,CAAC;AAEF,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,EACvB,QAAQ,CAAC,EAAE,cAAc,EACzB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAiC3B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,OAAc,EAC7B,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAoB3B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAI3B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,UAAU,EACzB,WAAW,SAAqB,EAChC,UAAU,SAAc,EACxB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAU3B"}