@aztec/kv-store 0.0.1-commit.a072138 → 0.0.1-commit.a5db02d

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 (151) hide show
  1. package/README.md +10 -1
  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/{indexeddb → deprecated/indexeddb}/array.js +18 -6
  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/{indexeddb → deprecated/indexeddb}/map.js +23 -13
  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/{indexeddb → deprecated/indexeddb}/multi_map.js +16 -1
  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/singleton.d.ts +17 -0
  20. package/dest/deprecated/indexeddb/singleton.d.ts.map +1 -0
  21. package/dest/{indexeddb → deprecated/indexeddb}/singleton.js +3 -1
  22. package/dest/deprecated/indexeddb/store.d.ts +98 -0
  23. package/dest/deprecated/indexeddb/store.d.ts.map +1 -0
  24. package/dest/{indexeddb → deprecated/indexeddb}/store.js +8 -4
  25. package/dest/interfaces/array_test_suite.d.ts +1 -1
  26. package/dest/interfaces/array_test_suite.d.ts.map +1 -1
  27. package/dest/interfaces/array_test_suite.js +33 -34
  28. package/dest/interfaces/index.d.ts +2 -2
  29. package/dest/interfaces/index.d.ts.map +1 -1
  30. package/dest/interfaces/map_test_suite.d.ts +1 -1
  31. package/dest/interfaces/map_test_suite.d.ts.map +1 -1
  32. package/dest/interfaces/map_test_suite.js +74 -29
  33. package/dest/interfaces/multi_map_test_suite.d.ts +1 -1
  34. package/dest/interfaces/multi_map_test_suite.d.ts.map +1 -1
  35. package/dest/interfaces/multi_map_test_suite.js +84 -60
  36. package/dest/interfaces/set_test_suite.d.ts +1 -1
  37. package/dest/interfaces/set_test_suite.d.ts.map +1 -1
  38. package/dest/interfaces/set_test_suite.js +13 -14
  39. package/dest/interfaces/singleton_test_suite.d.ts +1 -1
  40. package/dest/interfaces/singleton_test_suite.d.ts.map +1 -1
  41. package/dest/interfaces/singleton_test_suite.js +6 -7
  42. package/dest/lmdb/index.d.ts +2 -2
  43. package/dest/lmdb/index.d.ts.map +1 -1
  44. package/dest/lmdb/index.js +2 -2
  45. package/dest/lmdb/store.d.ts +3 -3
  46. package/dest/lmdb/store.d.ts.map +1 -1
  47. package/dest/lmdb/store.js +12 -8
  48. package/dest/lmdb-v2/factory.d.ts +30 -4
  49. package/dest/lmdb-v2/factory.d.ts.map +1 -1
  50. package/dest/lmdb-v2/factory.js +62 -10
  51. package/dest/lmdb-v2/read_transaction.js +21 -19
  52. package/dest/lmdb-v2/store.d.ts +2 -2
  53. package/dest/lmdb-v2/store.d.ts.map +1 -1
  54. package/dest/lmdb-v2/store.js +4 -4
  55. package/dest/sqlite-opfs/array.d.ts +21 -0
  56. package/dest/sqlite-opfs/array.d.ts.map +1 -0
  57. package/dest/sqlite-opfs/array.js +128 -0
  58. package/dest/sqlite-opfs/errors.d.ts +27 -0
  59. package/dest/sqlite-opfs/errors.d.ts.map +1 -0
  60. package/dest/sqlite-opfs/errors.js +34 -0
  61. package/dest/sqlite-opfs/index.d.ts +14 -0
  62. package/dest/sqlite-opfs/index.d.ts.map +1 -0
  63. package/dest/sqlite-opfs/index.js +16 -0
  64. package/dest/sqlite-opfs/internal/ordered-binary-browser.d.ts +32 -0
  65. package/dest/sqlite-opfs/internal/ordered-binary-browser.d.ts.map +1 -0
  66. package/dest/sqlite-opfs/internal/ordered-binary-browser.js +448 -0
  67. package/dest/sqlite-opfs/manage.d.ts +20 -0
  68. package/dest/sqlite-opfs/manage.d.ts.map +1 -0
  69. package/dest/sqlite-opfs/manage.js +31 -0
  70. package/dest/sqlite-opfs/map.d.ts +35 -0
  71. package/dest/sqlite-opfs/map.d.ts.map +1 -0
  72. package/dest/sqlite-opfs/map.js +163 -0
  73. package/dest/sqlite-opfs/messages.d.ts +66 -0
  74. package/dest/sqlite-opfs/messages.d.ts.map +1 -0
  75. package/dest/sqlite-opfs/messages.js +5 -0
  76. package/dest/sqlite-opfs/multi_map.d.ts +16 -0
  77. package/dest/sqlite-opfs/multi_map.d.ts.map +1 -0
  78. package/dest/sqlite-opfs/multi_map.js +67 -0
  79. package/dest/sqlite-opfs/set.d.ts +13 -0
  80. package/dest/sqlite-opfs/set.d.ts.map +1 -0
  81. package/dest/sqlite-opfs/set.js +19 -0
  82. package/dest/sqlite-opfs/singleton.d.ts +13 -0
  83. package/dest/sqlite-opfs/singleton.d.ts.map +1 -0
  84. package/dest/sqlite-opfs/singleton.js +48 -0
  85. package/dest/sqlite-opfs/store.d.ts +79 -0
  86. package/dest/sqlite-opfs/store.d.ts.map +1 -0
  87. package/dest/sqlite-opfs/store.js +281 -0
  88. package/dest/sqlite-opfs/worker.d.ts +2 -0
  89. package/dest/sqlite-opfs/worker.d.ts.map +1 -0
  90. package/dest/sqlite-opfs/worker.js +264 -0
  91. package/dest/stores/l2_tips_store.d.ts +7 -13
  92. package/dest/stores/l2_tips_store.d.ts.map +1 -1
  93. package/dest/stores/l2_tips_store.js +24 -43
  94. package/dest/utils.d.ts +1 -1
  95. package/dest/utils.d.ts.map +1 -1
  96. package/dest/utils.js +7 -1
  97. package/package.json +30 -26
  98. package/src/bench/shared_map_bench.ts +111 -0
  99. package/src/{indexeddb → deprecated/indexeddb}/array.ts +6 -6
  100. package/src/deprecated/indexeddb/index.ts +12 -0
  101. package/src/{indexeddb → deprecated/indexeddb}/map.ts +26 -13
  102. package/src/{indexeddb → deprecated/indexeddb}/multi_map.ts +17 -3
  103. package/src/{indexeddb → deprecated/indexeddb}/set.ts +2 -2
  104. package/src/{indexeddb → deprecated/indexeddb}/singleton.ts +3 -3
  105. package/src/{indexeddb → deprecated/indexeddb}/store.ts +23 -15
  106. package/src/interfaces/array_test_suite.ts +33 -35
  107. package/src/interfaces/index.ts +1 -1
  108. package/src/interfaces/map_test_suite.ts +56 -30
  109. package/src/interfaces/multi_map_test_suite.ts +88 -58
  110. package/src/interfaces/set_test_suite.ts +13 -15
  111. package/src/interfaces/singleton_test_suite.ts +6 -8
  112. package/src/lmdb/index.ts +3 -3
  113. package/src/lmdb/store.ts +12 -8
  114. package/src/lmdb-v2/factory.ts +86 -10
  115. package/src/lmdb-v2/read_transaction.ts +23 -23
  116. package/src/lmdb-v2/store.ts +4 -2
  117. package/src/sqlite-opfs/array.ts +124 -0
  118. package/src/sqlite-opfs/errors.ts +44 -0
  119. package/src/sqlite-opfs/index.ts +22 -0
  120. package/src/sqlite-opfs/internal/ordered-binary-browser.js +465 -0
  121. package/src/sqlite-opfs/manage.ts +36 -0
  122. package/src/sqlite-opfs/map.ts +163 -0
  123. package/src/sqlite-opfs/messages.ts +39 -0
  124. package/src/sqlite-opfs/multi_map.ts +74 -0
  125. package/src/sqlite-opfs/set.ts +29 -0
  126. package/src/sqlite-opfs/singleton.ts +48 -0
  127. package/src/sqlite-opfs/store.ts +296 -0
  128. package/src/sqlite-opfs/worker.ts +248 -0
  129. package/src/stores/l2_tips_store.ts +20 -41
  130. package/src/utils.ts +10 -0
  131. package/dest/config.d.ts +0 -17
  132. package/dest/config.d.ts.map +0 -1
  133. package/dest/config.js +0 -26
  134. package/dest/indexeddb/array.d.ts +0 -22
  135. package/dest/indexeddb/array.d.ts.map +0 -1
  136. package/dest/indexeddb/index.d.ts +0 -7
  137. package/dest/indexeddb/index.d.ts.map +0 -1
  138. package/dest/indexeddb/index.js +0 -16
  139. package/dest/indexeddb/map.d.ts +0 -32
  140. package/dest/indexeddb/map.d.ts.map +0 -1
  141. package/dest/indexeddb/multi_map.d.ts +0 -13
  142. package/dest/indexeddb/multi_map.d.ts.map +0 -1
  143. package/dest/indexeddb/set.d.ts +0 -17
  144. package/dest/indexeddb/set.d.ts.map +0 -1
  145. package/dest/indexeddb/singleton.d.ts +0 -17
  146. package/dest/indexeddb/singleton.d.ts.map +0 -1
  147. package/dest/indexeddb/store.d.ts +0 -96
  148. package/dest/indexeddb/store.d.ts.map +0 -1
  149. package/src/config.ts +0 -36
  150. package/src/indexeddb/index.ts +0 -31
  151. /package/dest/{indexeddb → deprecated/indexeddb}/set.js +0 -0
@@ -1,5 +1,4 @@
1
1
  import { toArray } from '@aztec/foundation/iterable';
2
- import { expect } from 'chai';
3
2
  import { isSyncStore } from './utils.js';
4
3
  export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
5
4
  describe(testName, ()=>{
@@ -36,37 +35,62 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
36
35
  it('should be able to set and get values', async ()=>{
37
36
  await multiMap.set('foo', 'bar');
38
37
  await multiMap.set('baz', 'qux');
39
- expect(await get('foo')).to.equal('bar');
40
- expect(await get('baz')).to.equal('qux');
41
- expect(await get('quux')).to.equal(undefined);
38
+ expect(await get('foo')).toBe('bar');
39
+ expect(await get('baz')).toBe('qux');
40
+ expect(await get('quux')).toBe(undefined);
42
41
  });
43
42
  it('should be able to set values if they do not exist', async ()=>{
44
- expect(await multiMap.setIfNotExists('foo', 'bar')).to.equal(true);
45
- expect(await multiMap.setIfNotExists('foo', 'baz')).to.equal(false);
46
- expect(await get('foo')).to.equal('bar');
43
+ expect(await multiMap.setIfNotExists('foo', 'bar')).toBe(true);
44
+ expect(await multiMap.setIfNotExists('foo', 'baz')).toBe(false);
45
+ expect(await get('foo')).toBe('bar');
47
46
  });
48
47
  it('should be able to delete values', async ()=>{
49
48
  await multiMap.set('foo', 'bar');
50
49
  await multiMap.set('baz', 'qux');
51
50
  await multiMap.delete('foo');
52
- expect(await get('foo')).to.equal(undefined);
53
- expect(await get('baz')).to.equal('qux');
51
+ expect(await get('foo')).toBe(undefined);
52
+ expect(await get('baz')).toBe('qux');
54
53
  });
55
54
  it('should be able to get size of the map', async ()=>{
56
55
  await multiMap.set('foo', 'bar');
57
- expect(await size()).to.equal(1);
56
+ expect(await size()).toBe(1);
58
57
  await multiMap.set('baz', 'qux');
59
- expect(await size()).to.equal(2);
58
+ expect(await size()).toBe(2);
60
59
  await multiMap.delete('foo');
61
- expect(await size()).to.equal(1);
60
+ expect(await size()).toBe(1);
61
+ });
62
+ it('returns 0 for empty multimap size', async ()=>{
63
+ expect(await size()).toBe(0);
64
+ });
65
+ it('calculates size correctly with multiple values per key', async ()=>{
66
+ expect(await size()).toBe(0);
67
+ // Add multiple values for same key
68
+ await multiMap.set('key1', 'value1');
69
+ expect(await size()).toBe(1);
70
+ await multiMap.set('key1', 'value2');
71
+ expect(await size()).toBe(2);
72
+ await multiMap.set('key1', 'value3');
73
+ expect(await size()).toBe(3);
74
+ // Add values for different key
75
+ await multiMap.set('key2', 'value4');
76
+ expect(await size()).toBe(4);
77
+ // Delete one value from key1
78
+ await multiMap.deleteValue('key1', 'value2');
79
+ expect(await size()).toBe(3);
80
+ // Delete entire key
81
+ await multiMap.delete('key1');
82
+ expect(await size()).toBe(1);
83
+ // Delete last key
84
+ await multiMap.delete('key2');
85
+ expect(await size()).toBe(0);
62
86
  });
63
87
  it('should be able to iterate over entries when there are no keys', async ()=>{
64
- expect(await entries()).to.deep.equal([]);
88
+ expect(await entries()).toEqual([]);
65
89
  });
66
90
  it('should be able to iterate over entries', async ()=>{
67
91
  await multiMap.set('foo', 'bar');
68
92
  await multiMap.set('baz', 'qux');
69
- expect(await entries()).to.deep.equal([
93
+ expect(await entries()).toEqual([
70
94
  [
71
95
  'baz',
72
96
  'qux'
@@ -80,7 +104,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
80
104
  it('should be able to iterate over values', async ()=>{
81
105
  await multiMap.set('foo', 'bar');
82
106
  await multiMap.set('baz', 'quux');
83
- expect(await values()).to.deep.equal([
107
+ expect(await values()).toEqual([
84
108
  'quux',
85
109
  'bar'
86
110
  ]);
@@ -88,7 +112,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
88
112
  it('should be able to iterate over keys', async ()=>{
89
113
  await multiMap.set('foo', 'bar');
90
114
  await multiMap.set('baz', 'qux');
91
- expect(await keys()).to.deep.equal([
115
+ expect(await keys()).toEqual([
92
116
  'baz',
93
117
  'foo'
94
118
  ]);
@@ -96,7 +120,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
96
120
  it('should be able to get multiple values for a single key', async ()=>{
97
121
  await multiMap.set('foo', 'bar');
98
122
  await multiMap.set('foo', 'baz');
99
- expect(await getValues('foo')).to.deep.equal([
123
+ expect(await getValues('foo')).toEqual([
100
124
  'bar',
101
125
  'baz'
102
126
  ]);
@@ -104,7 +128,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
104
128
  it('should ignore multiple identical values', async ()=>{
105
129
  await multiMap.set('foo', 'bar');
106
130
  await multiMap.set('foo', 'bar');
107
- expect(await getValues('foo')).to.deep.equal([
131
+ expect(await getValues('foo')).toEqual([
108
132
  'bar'
109
133
  ]);
110
134
  });
@@ -113,7 +137,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
113
137
  await multiMap.set('foo', '2');
114
138
  await multiMap.set('foo', '3');
115
139
  await multiMap.deleteValue('foo', '2');
116
- expect(await getValues('foo')).to.deep.equal([
140
+ expect(await getValues('foo')).toEqual([
117
141
  '1',
118
142
  '3'
119
143
  ]);
@@ -122,25 +146,25 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
122
146
  await multiMap.set('foo', '1');
123
147
  await multiMap.set('foo', '2');
124
148
  await multiMap.set('foo', '3');
125
- expect(await size()).to.equal(3);
149
+ expect(await size()).toBe(3);
126
150
  await multiMap.set('bar', '1');
127
151
  await multiMap.set('bar', '2');
128
152
  await multiMap.set('bar', '3');
129
- expect(await size()).to.equal(6);
153
+ expect(await size()).toBe(6);
130
154
  await multiMap.deleteValue('foo', '2');
131
- expect(await size()).to.equal(5);
155
+ expect(await size()).toBe(5);
132
156
  });
133
157
  it('should be able to delete the last and first values for a key', async ()=>{
134
158
  await multiMap.set('foo', '1');
135
159
  await multiMap.set('foo', '2');
136
160
  await multiMap.set('foo', '3');
137
161
  await multiMap.deleteValue('foo', '1');
138
- expect(await getValues('foo')).to.deep.equal([
162
+ expect(await getValues('foo')).toEqual([
139
163
  '2',
140
164
  '3'
141
165
  ]);
142
166
  await multiMap.deleteValue('foo', '3');
143
- expect(await getValues('foo')).to.deep.equal([
167
+ expect(await getValues('foo')).toEqual([
144
168
  '2'
145
169
  ]);
146
170
  });
@@ -151,7 +175,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
151
175
  await multiMap.deleteValue('foo', '1');
152
176
  await multiMap.deleteValue('foo', '3');
153
177
  await multiMap.deleteValue('foo', '2');
154
- expect(await getValues('foo')).to.deep.equal([]);
178
+ expect(await getValues('foo')).toEqual([]);
155
179
  });
156
180
  it('should be able to insert after deletion', async ()=>{
157
181
  await multiMap.set('foo', '1');
@@ -159,14 +183,14 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
159
183
  await multiMap.set('foo', '3');
160
184
  await multiMap.deleteValue('foo', '2');
161
185
  await multiMap.set('foo', 'bar');
162
- expect(await getValues('foo')).to.deep.equal([
186
+ expect(await getValues('foo')).toEqual([
163
187
  '1',
164
188
  '3',
165
189
  'bar'
166
190
  ]);
167
191
  // Delete the just-added entry
168
192
  await multiMap.deleteValue('foo', 'bar');
169
- expect(await getValues('foo')).to.deep.equal([
193
+ expect(await getValues('foo')).toEqual([
170
194
  '1',
171
195
  '3'
172
196
  ]);
@@ -175,7 +199,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
175
199
  // LMDB and IndexedDB behave differently here, the former ordering by value and the latter by insertion. This is
176
200
  // fine because there is no expectation for values in a multimap to be ordered.
177
201
  const values = (await getValues('foo')).sort((a, b)=>a.localeCompare(b));
178
- expect(values).to.deep.equal([
202
+ expect(values).toEqual([
179
203
  '1',
180
204
  '2',
181
205
  '3'
@@ -187,7 +211,7 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
187
211
  // Insert some more
188
212
  await multiMap.set('foo', 'baz');
189
213
  await multiMap.set('foo', 'qux');
190
- expect(await getValues('foo')).to.deep.equal([
214
+ expect(await getValues('foo')).toEqual([
191
215
  'baz',
192
216
  'qux'
193
217
  ]);
@@ -200,19 +224,19 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
200
224
  expect(await keys({
201
225
  start: 'b',
202
226
  end: 'c'
203
- })).to.deep.equal([
227
+ })).toEqual([
204
228
  'b'
205
229
  ]);
206
230
  expect(await keys({
207
231
  start: 'b'
208
- })).to.deep.equal([
232
+ })).toEqual([
209
233
  'b',
210
234
  'c',
211
235
  'd'
212
236
  ]);
213
237
  expect(await keys({
214
238
  end: 'c'
215
- })).to.deep.equal([
239
+ })).toEqual([
216
240
  'a',
217
241
  'b'
218
242
  ]);
@@ -220,86 +244,86 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
220
244
  start: 'b',
221
245
  end: 'c',
222
246
  reverse: true
223
- })).to.deep.equal([
247
+ })).toEqual([
224
248
  'c'
225
249
  ]);
226
250
  expect(await keys({
227
251
  start: 'b',
228
252
  limit: 1
229
- })).to.deep.equal([
253
+ })).toEqual([
230
254
  'b'
231
255
  ]);
232
256
  expect(await keys({
233
257
  start: 'b',
234
258
  reverse: true
235
- })).to.deep.equal([
259
+ })).toEqual([
236
260
  'd',
237
261
  'c'
238
262
  ]);
239
263
  expect(await keys({
240
264
  end: 'b',
241
265
  reverse: true
242
- })).to.deep.equal([
266
+ })).toEqual([
243
267
  'b',
244
268
  'a'
245
269
  ]);
246
270
  });
247
271
  it('returns 0 for missing key', async ()=>{
248
- expect(await getValueCount('missing')).to.equal(0);
272
+ expect(await getValueCount('missing')).toBe(0);
249
273
  });
250
274
  it('counts a single value', async ()=>{
251
275
  await multiMap.set('foo', 'bar');
252
- expect(await getValueCount('foo')).to.equal(1);
276
+ expect(await getValueCount('foo')).toBe(1);
253
277
  });
254
278
  it('counts multiple distinct values for same key', async ()=>{
255
279
  await multiMap.set('foo', 'bar');
256
280
  await multiMap.set('foo', 'baz');
257
281
  await multiMap.set('foo', 'qux');
258
- expect(await getValueCount('foo')).to.equal(3);
282
+ expect(await getValueCount('foo')).toBe(3);
259
283
  });
260
284
  it('does not increase count for duplicate inserts', async ()=>{
261
285
  await multiMap.set('foo', 'bar');
262
286
  await multiMap.set('foo', 'bar');
263
287
  await multiMap.set('foo', 'baz');
264
288
  await multiMap.set('foo', 'baz');
265
- expect(await getValueCount('foo')).to.equal(2);
266
- expect(await getValues('foo')).to.have.members([
289
+ expect(await getValueCount('foo')).toBe(2);
290
+ expect((await getValues('foo')).sort()).toEqual([
267
291
  'bar',
268
292
  'baz'
269
- ]);
293
+ ].sort());
270
294
  });
271
295
  it('decrements when deleting a single value', async ()=>{
272
296
  await multiMap.set('foo', '1');
273
297
  await multiMap.set('foo', '2');
274
298
  await multiMap.set('foo', '3');
275
- expect(await getValueCount('foo')).to.equal(3);
299
+ expect(await getValueCount('foo')).toBe(3);
276
300
  await multiMap.deleteValue('foo', '2');
277
- expect(await getValueCount('foo')).to.equal(2);
278
- expect(await getValues('foo')).to.have.members([
301
+ expect(await getValueCount('foo')).toBe(2);
302
+ expect((await getValues('foo')).sort()).toEqual([
279
303
  '1',
280
304
  '3'
281
- ]);
305
+ ].sort());
282
306
  });
283
307
  it('does not change count when deleting a non-existent value', async ()=>{
284
308
  await multiMap.set('foo', '1');
285
309
  await multiMap.set('foo', '3');
286
- expect(await getValueCount('foo')).to.equal(2);
310
+ expect(await getValueCount('foo')).toBe(2);
287
311
  await multiMap.deleteValue('foo', '2');
288
- expect(await getValueCount('foo')).to.equal(2);
312
+ expect(await getValueCount('foo')).toBe(2);
289
313
  });
290
314
  it('clears all values when deleting a key', async ()=>{
291
315
  await multiMap.set('foo', 'bar');
292
316
  await multiMap.set('foo', 'baz');
293
- expect(await getValueCount('foo')).to.equal(2);
317
+ expect(await getValueCount('foo')).toBe(2);
294
318
  await multiMap.delete('foo');
295
- expect(await getValueCount('foo')).to.equal(0);
296
- expect(await getValues('foo')).to.deep.equal([]);
319
+ expect(await getValueCount('foo')).toBe(0);
320
+ expect(await getValues('foo')).toEqual([]);
297
321
  });
298
322
  it('count equals enumerated values length', async ()=>{
299
323
  await multiMap.set('foo', '1');
300
324
  await multiMap.set('foo', '2');
301
325
  const vals = await getValues('foo');
302
- expect(await getValueCount('foo')).to.equal(vals.length);
326
+ expect(await getValueCount('foo')).toBe(vals.length);
303
327
  });
304
328
  it('sum of per-key counts equals total size', async ()=>{
305
329
  await multiMap.set('foo', '1');
@@ -311,29 +335,29 @@ export function describeAztecMultiMap(testName, getStore, forceAsync = false) {
311
335
  const uniqueKeys = Array.from(new Set(allKeys));
312
336
  const counts = await Promise.all(uniqueKeys.map((k)=>getValueCount(k)));
313
337
  const sum = counts.reduce((s, n)=>s + n, 0);
314
- expect(sum).to.equal(await size());
338
+ expect(sum).toBe(await size());
315
339
  });
316
340
  it('supports sparse slots: delete middle, reinsert new, count remains correct', async ()=>{
317
341
  await multiMap.set('foo', '1');
318
342
  await multiMap.set('foo', '2');
319
343
  await multiMap.set('foo', '3');
320
- expect(await getValueCount('foo')).to.equal(3);
344
+ expect(await getValueCount('foo')).toBe(3);
321
345
  await multiMap.deleteValue('foo', '2');
322
- expect(await getValueCount('foo')).to.equal(2);
346
+ expect(await getValueCount('foo')).toBe(2);
323
347
  await multiMap.set('foo', '4');
324
- expect(await getValueCount('foo')).to.equal(3);
325
- expect(await getValues('foo')).to.have.members([
348
+ expect(await getValueCount('foo')).toBe(3);
349
+ expect((await getValues('foo')).sort()).toEqual([
326
350
  '1',
327
351
  '3',
328
352
  '4'
329
- ]);
353
+ ].sort());
330
354
  });
331
355
  it('multiple keys are independent', async ()=>{
332
356
  await multiMap.set('foo', '1');
333
357
  await multiMap.set('foo', '2');
334
358
  await multiMap.set('bar', '3');
335
- expect(await getValueCount('foo')).to.equal(2);
336
- expect(await getValueCount('bar')).to.equal(1);
359
+ expect(await getValueCount('foo')).toBe(2);
360
+ expect(await getValueCount('bar')).toBe(1);
337
361
  });
338
362
  });
339
363
  }
@@ -1,3 +1,3 @@
1
1
  import type { AztecAsyncKVStore, AztecKVStore } from './store.js';
2
2
  export declare function describeAztecSet(testName: string, getStore: () => AztecKVStore | Promise<AztecAsyncKVStore>, forceAsync?: boolean): void;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X3Rlc3Rfc3VpdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3NldF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdsRSx3QkFBZ0IsZ0JBQWdCLENBQzlCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLFFBQVEsRUFBRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFDekQsVUFBVSxHQUFFLE9BQWUsUUFvRTVCIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X3Rlc3Rfc3VpdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3NldF90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdsRSx3QkFBZ0IsZ0JBQWdCLENBQzlCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLFFBQVEsRUFBRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFDekQsVUFBVSxHQUFFLE9BQWUsUUFvRTVCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"set_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/set_test_suite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAoE5B"}
1
+ {"version":3,"file":"set_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/set_test_suite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAoE5B"}
@@ -1,5 +1,4 @@
1
1
  import { toArray } from '@aztec/foundation/iterable';
2
- import { expect } from 'chai';
3
2
  import { isSyncStore } from './utils.js';
4
3
  export function describeAztecSet(testName, getStore, forceAsync = false) {
5
4
  describe(testName, ()=>{
@@ -21,21 +20,21 @@ export function describeAztecSet(testName, getStore, forceAsync = false) {
21
20
  it('should be able to set and get values', async ()=>{
22
21
  await set.add('foo');
23
22
  await set.add('baz');
24
- expect(await has('foo')).to.equal(true);
25
- expect(await has('baz')).to.equal(true);
26
- expect(await has('bar')).to.equal(false);
23
+ expect(await has('foo')).toBe(true);
24
+ expect(await has('baz')).toBe(true);
25
+ expect(await has('bar')).toBe(false);
27
26
  });
28
27
  it('should be able to delete values', async ()=>{
29
28
  await set.add('foo');
30
29
  await set.add('baz');
31
30
  await set.delete('foo');
32
- expect(await has('foo')).to.equal(false);
33
- expect(await has('baz')).to.equal(true);
31
+ expect(await has('foo')).toBe(false);
32
+ expect(await has('baz')).toBe(true);
34
33
  });
35
34
  it('should be able to iterate over entries', async ()=>{
36
35
  await set.add('baz');
37
36
  await set.add('foo');
38
- expect(await entries()).to.deep.equal([
37
+ expect(await entries()).toEqual([
39
38
  'baz',
40
39
  'foo'
41
40
  ]);
@@ -48,19 +47,19 @@ export function describeAztecSet(testName, getStore, forceAsync = false) {
48
47
  expect(await entries({
49
48
  start: 'b',
50
49
  end: 'c'
51
- })).to.deep.equal([
50
+ })).toEqual([
52
51
  'b'
53
52
  ]);
54
53
  expect(await entries({
55
54
  start: 'b'
56
- })).to.deep.equal([
55
+ })).toEqual([
57
56
  'b',
58
57
  'c',
59
58
  'd'
60
59
  ]);
61
60
  expect(await entries({
62
61
  end: 'c'
63
- })).to.deep.equal([
62
+ })).toEqual([
64
63
  'a',
65
64
  'b'
66
65
  ]);
@@ -68,26 +67,26 @@ export function describeAztecSet(testName, getStore, forceAsync = false) {
68
67
  start: 'b',
69
68
  end: 'c',
70
69
  reverse: true
71
- })).to.deep.equal([
70
+ })).toEqual([
72
71
  'c'
73
72
  ]);
74
73
  expect(await entries({
75
74
  start: 'b',
76
75
  limit: 1
77
- })).to.deep.equal([
76
+ })).toEqual([
78
77
  'b'
79
78
  ]);
80
79
  expect(await entries({
81
80
  start: 'b',
82
81
  reverse: true
83
- })).to.deep.equal([
82
+ })).toEqual([
84
83
  'd',
85
84
  'c'
86
85
  ]);
87
86
  expect(await entries({
88
87
  end: 'b',
89
88
  reverse: true
90
- })).to.deep.equal([
89
+ })).toEqual([
91
90
  'b',
92
91
  'a'
93
92
  ]);
@@ -1,3 +1,3 @@
1
1
  import type { AztecAsyncKVStore, AztecKVStore } from './store.js';
2
2
  export declare function describeAztecSingleton(testName: string, getStore: () => AztecKVStore | Promise<AztecAsyncKVStore>, forceAsync?: boolean): void;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uX3Rlc3Rfc3VpdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3NpbmdsZXRvbl90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdsRSx3QkFBZ0Isc0JBQXNCLENBQ3BDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLFFBQVEsRUFBRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFDekQsVUFBVSxHQUFFLE9BQWUsUUFvQzVCIn0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uX3Rlc3Rfc3VpdGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3NpbmdsZXRvbl90ZXN0X3N1aXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUdsRSx3QkFBZ0Isc0JBQXNCLENBQ3BDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLFFBQVEsRUFBRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFDekQsVUFBVSxHQUFFLE9BQWUsUUFvQzVCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"singleton_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/singleton_test_suite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAoC5B"}
1
+ {"version":3,"file":"singleton_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/singleton_test_suite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGlE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAoC5B"}
@@ -1,4 +1,3 @@
1
- import { expect } from 'chai';
2
1
  import { isSyncStore } from './utils.js';
3
2
  export function describeAztecSingleton(testName, getStore, forceAsync = false) {
4
3
  describe(testName, ()=>{
@@ -15,16 +14,16 @@ export function describeAztecSingleton(testName, getStore, forceAsync = false) {
15
14
  return isSyncStore(store) && !forceAsync ? singleton.get() : await singleton.getAsync();
16
15
  }
17
16
  it('returns undefined if the value is not set', async ()=>{
18
- expect(await get()).to.equal(undefined);
17
+ expect(await get()).toBe(undefined);
19
18
  });
20
19
  it('should be able to set and get values', async ()=>{
21
- expect(await singleton.set('foo')).to.equal(true);
22
- expect(await get()).to.equal('foo');
20
+ expect(await singleton.set('foo')).toBe(true);
21
+ expect(await get()).toBe('foo');
23
22
  });
24
23
  it('overwrites the value if it is set again', async ()=>{
25
- expect(await singleton.set('foo')).to.equal(true);
26
- expect(await singleton.set('bar')).to.equal(true);
27
- expect(await get()).to.equal('bar');
24
+ expect(await singleton.set('foo')).toBe(true);
25
+ expect(await singleton.set('bar')).toBe(true);
26
+ expect(await get()).toBe('bar');
28
27
  });
29
28
  });
30
29
  }
@@ -1,5 +1,5 @@
1
1
  import { type Logger } from '@aztec/foundation/log';
2
- import type { DataStoreConfig } from '../config.js';
2
+ import type { DataStoreConfig } from '@aztec/stdlib/kv-store';
3
3
  import { AztecLmdbStore } from './store.js';
4
4
  export { AztecLmdbStore } from './store.js';
5
5
  export declare function createStore(name: string, config: DataStoreConfig, schemaVersion?: number | undefined, log?: Logger): AztecLmdbStore | Promise<AztecLmdbStore>;
@@ -9,4 +9,4 @@ export declare function createStore(name: string, config: DataStoreConfig, schem
9
9
  * @returns A new store
10
10
  */
11
11
  export declare function openTmpStore(ephemeral?: boolean): AztecLmdbStore;
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUlsRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVDLHdCQUFnQixXQUFXLENBQ3pCLElBQUksRUFBRSxNQUFNLEVBQ1osTUFBTSxFQUFFLGVBQWUsRUFDdkIsYUFBYSxHQUFFLE1BQU0sR0FBRyxTQUFxQixFQUM3QyxHQUFHLEdBQUUsTUFBaUMsNENBa0J2QztBQUNEOzs7O0dBSUc7QUFDSCx3QkFBZ0IsWUFBWSxDQUFDLFNBQVMsR0FBRSxPQUFlLEdBQUcsY0FBYyxDQUd2RSJ9
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUs5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFNUMsd0JBQWdCLFdBQVcsQ0FDekIsSUFBSSxFQUFFLE1BQU0sRUFDWixNQUFNLEVBQUUsZUFBZSxFQUN2QixhQUFhLEdBQUUsTUFBTSxHQUFHLFNBQXFCLEVBQzdDLEdBQUcsR0FBRSxNQUFpQyw0Q0FrQnZDO0FBQ0Q7Ozs7R0FJRztBQUNILHdCQUFnQixZQUFZLENBQUMsU0FBUyxHQUFFLE9BQWUsR0FBRyxjQUFjLENBR3ZFIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lmdb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAIlE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,aAAa,GAAE,MAAM,GAAG,SAAqB,EAC7C,GAAG,GAAE,MAAiC,4CAkBvC;AACD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,cAAc,CAGvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lmdb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,aAAa,GAAE,MAAM,GAAG,SAAqB,EAC7C,GAAG,GAAE,MAAiC,4CAkBvC;AACD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAe,GAAG,cAAc,CAGvE"}
@@ -10,8 +10,8 @@ export function createStore(name, config, schemaVersion = undefined, log = creat
10
10
  }
11
11
  log.info(dataDirectory ? `Creating ${name} data store at directory ${dataDirectory} with map size ${config.dataStoreMapSizeKb} KB` : `Creating ${name} ephemeral data store with map size ${config.dataStoreMapSizeKb} KB`);
12
12
  const store = AztecLmdbStore.open(dataDirectory, config.dataStoreMapSizeKb, false);
13
- if (config.l1Contracts?.rollupAddress) {
14
- return initStoreForRollupAndSchemaVersion(store, schemaVersion, config.l1Contracts.rollupAddress, log);
13
+ if (config.rollupAddress) {
14
+ return initStoreForRollupAndSchemaVersion(store, schemaVersion, config.rollupAddress, log);
15
15
  }
16
16
  return store;
17
17
  }
@@ -74,11 +74,11 @@ export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
74
74
  */
75
75
  transactionAsync<T>(callback: () => Promise<T>): Promise<T>;
76
76
  /**
77
- * Clears all entries in the store & sub DBs.
77
+ * Clears all entries in the store & sub DBs atomically within a single transaction.
78
78
  */
79
79
  clear(): Promise<void>;
80
80
  /**
81
- * Drops the database & sub DBs.
81
+ * Drops the database & sub DBs atomically within a single transaction.
82
82
  */
83
83
  drop(): Promise<void>;
84
84
  /**
@@ -91,4 +91,4 @@ export declare class AztecLmdbStore implements AztecKVStore, AztecAsyncKVStore {
91
91
  private estimateSubDBSize;
92
92
  backupTo(_dstPath: string, _compact?: boolean): Promise<void>;
93
93
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBaUIsS0FBSyxZQUFZLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFJOUQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVE5RTs7R0FFRztBQUNILHFCQUFhLGNBQWUsWUFBVyxZQUFZLEVBQUUsaUJBQWlCOzthQVVsRCxXQUFXLEVBQUUsT0FBTztJQUNwQyxPQUFPLENBQUMsSUFBSTtJQVZkLFdBQVcsT0FBaUI7SUFPNUIsWUFDRSxNQUFNLEVBQUUsWUFBWSxFQUNKLFdBQVcsRUFBRSxPQUFPLEVBQzVCLElBQUksRUFBRSxNQUFNLEVBZXJCO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQ2IsU0FBUyxTQUFrQixFQUMzQixTQUFTLEdBQUUsT0FBZSxFQUMxQixHQUFHLHlDQUFnQyxHQUNsQyxjQUFjLENBT2hCO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBRTFGO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FFbkU7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUV6RztJQUVELFdBQVcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUUvRTtJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBRTNFO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBRXpFO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FFNUM7SUFFRDs7OztPQUlHO0lBQ0csZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBRWhFO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQUlWO0lBRUQ7O09BRUc7SUFDRyxJQUFJLGtCQUlUO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQUlWO0lBRUQsa0VBQWtFO0lBQzVELE1BQU0sa0JBT1g7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQW9CakM7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBNEJ6QixRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU1RDtDQUNGIn0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBaUIsS0FBSyxZQUFZLEVBQVEsTUFBTSxNQUFNLENBQUM7QUFJOUQsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BGLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVE5RTs7R0FFRztBQUNILHFCQUFhLGNBQWUsWUFBVyxZQUFZLEVBQUUsaUJBQWlCOzthQVVsRCxXQUFXLEVBQUUsT0FBTztJQUNwQyxPQUFPLENBQUMsSUFBSTtJQVZkLFdBQVcsT0FBaUI7SUFPNUIsWUFDRSxNQUFNLEVBQUUsWUFBWSxFQUNKLFdBQVcsRUFBRSxPQUFPLEVBQzVCLElBQUksRUFBRSxNQUFNLEVBZXJCO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsTUFBTSxDQUFDLElBQUksQ0FDVCxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQ2IsU0FBUyxTQUFrQixFQUMzQixTQUFTLEdBQUUsT0FBZSxFQUMxQixHQUFHLHlDQUFnQyxHQUNsQyxjQUFjLENBT2hCO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBRTFGO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FFbkU7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUV6RztJQUVELFdBQVcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUUvRTtJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsQ0FBQyxTQUFTLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBRTNFO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBRXpFO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FFNUM7SUFFRDs7OztPQUlHO0lBQ0csZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBRWhFO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQU1WO0lBRUQ7O09BRUc7SUFDRyxJQUFJLGtCQU1UO0lBRUQ7O09BRUc7SUFDRyxLQUFLLGtCQUlWO0lBRUQsa0VBQWtFO0lBQzVELE1BQU0sa0JBT1g7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQW9CakM7SUFFRCxPQUFPLENBQUMsaUJBQWlCO0lBNEJ6QixRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUU1RDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb/store.ts"],"names":[],"mappings":"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"}
@@ -116,18 +116,22 @@ import { LmdbAztecSingleton } from './singleton.js';
116
116
  return await this.#rootDb.transaction(callback);
117
117
  }
118
118
  /**
119
- * Clears all entries in the store & sub DBs.
119
+ * Clears all entries in the store & sub DBs atomically within a single transaction.
120
120
  */ async clear() {
121
- await this.#data.clearAsync();
122
- await this.#multiMapData.clearAsync();
123
- await this.#rootDb.clearAsync();
121
+ await this.#rootDb.transaction(async ()=>{
122
+ await this.#data.clearAsync();
123
+ await this.#multiMapData.clearAsync();
124
+ await this.#rootDb.clearAsync();
125
+ });
124
126
  }
125
127
  /**
126
- * Drops the database & sub DBs.
128
+ * Drops the database & sub DBs atomically within a single transaction.
127
129
  */ async drop() {
128
- await this.#data.drop();
129
- await this.#multiMapData.drop();
130
- await this.#rootDb.drop();
130
+ await this.#rootDb.transaction(async ()=>{
131
+ await this.#data.drop();
132
+ await this.#multiMapData.drop();
133
+ await this.#rootDb.drop();
134
+ });
131
135
  }
132
136
  /**
133
137
  * Close the database. Note, once this is closed we can no longer interact with the DB.