@aztec/kv-store 0.74.0 → 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2
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.
- package/dest/config.js +5 -7
- package/dest/indexeddb/array.js +44 -36
- package/dest/indexeddb/index.js +1 -4
- package/dest/indexeddb/map.js +72 -43
- package/dest/indexeddb/set.js +3 -4
- package/dest/indexeddb/singleton.js +17 -22
- package/dest/indexeddb/store.js +97 -93
- package/dest/interfaces/array.js +3 -2
- package/dest/interfaces/array_test_suite.js +29 -25
- package/dest/interfaces/common.js +3 -2
- package/dest/interfaces/counter.js +1 -2
- package/dest/interfaces/index.js +0 -1
- package/dest/interfaces/map.js +3 -2
- package/dest/interfaces/map_test_suite.js +87 -42
- package/dest/interfaces/set.js +1 -2
- package/dest/interfaces/set_test_suite.js +59 -22
- package/dest/interfaces/singleton.js +4 -2
- package/dest/interfaces/singleton_test_suite.js +7 -10
- package/dest/interfaces/store.js +1 -2
- package/dest/interfaces/store_test_suite.js +6 -9
- package/dest/interfaces/utils.js +12 -15
- package/dest/lmdb/array.js +46 -41
- package/dest/lmdb/counter.js +18 -24
- package/dest/lmdb/index.js +2 -6
- package/dest/lmdb/map.js +90 -68
- package/dest/lmdb/set.js +4 -5
- package/dest/lmdb/singleton.js +13 -14
- package/dest/lmdb/store.js +124 -134
- package/dest/lmdb-v2/factory.js +22 -19
- package/dest/lmdb-v2/index.js +0 -1
- package/dest/lmdb-v2/map.js +82 -85
- package/dest/lmdb-v2/message.js +6 -7
- package/dest/lmdb-v2/read_transaction.js +65 -53
- package/dest/lmdb-v2/singleton.js +7 -5
- package/dest/lmdb-v2/store.js +27 -26
- package/dest/lmdb-v2/utils.js +30 -30
- package/dest/lmdb-v2/write_transaction.js +130 -110
- package/dest/stores/index.js +0 -1
- package/dest/stores/l2_tips_store.js +26 -12
- package/dest/utils.js +3 -7
- package/package.json +6 -6
- package/src/interfaces/index.ts +1 -1
- package/dest/config.d.ts +0 -17
- package/dest/config.d.ts.map +0 -1
- package/dest/indexeddb/array.d.ts +0 -21
- package/dest/indexeddb/array.d.ts.map +0 -1
- package/dest/indexeddb/index.d.ts +0 -7
- package/dest/indexeddb/index.d.ts.map +0 -1
- package/dest/indexeddb/map.d.ts +0 -26
- package/dest/indexeddb/map.d.ts.map +0 -1
- package/dest/indexeddb/set.d.ts +0 -17
- package/dest/indexeddb/set.d.ts.map +0 -1
- package/dest/indexeddb/singleton.d.ts +0 -16
- package/dest/indexeddb/singleton.d.ts.map +0 -1
- package/dest/indexeddb/store.d.ts +0 -97
- package/dest/indexeddb/store.d.ts.map +0 -1
- package/dest/interfaces/array.d.ts +0 -80
- package/dest/interfaces/array.d.ts.map +0 -1
- package/dest/interfaces/array_test_suite.d.ts +0 -3
- package/dest/interfaces/array_test_suite.d.ts.map +0 -1
- package/dest/interfaces/common.d.ts +0 -23
- package/dest/interfaces/common.d.ts.map +0 -1
- package/dest/interfaces/counter.d.ts +0 -59
- package/dest/interfaces/counter.d.ts.map +0 -1
- package/dest/interfaces/index.d.ts +0 -8
- package/dest/interfaces/index.d.ts.map +0 -1
- package/dest/interfaces/map.d.ts +0 -134
- package/dest/interfaces/map.d.ts.map +0 -1
- package/dest/interfaces/map_test_suite.d.ts +0 -3
- package/dest/interfaces/map_test_suite.d.ts.map +0 -1
- package/dest/interfaces/set.d.ts +0 -44
- package/dest/interfaces/set.d.ts.map +0 -1
- package/dest/interfaces/set_test_suite.d.ts +0 -3
- package/dest/interfaces/set_test_suite.d.ts.map +0 -1
- package/dest/interfaces/singleton.d.ts +0 -29
- package/dest/interfaces/singleton.d.ts.map +0 -1
- package/dest/interfaces/singleton_test_suite.d.ts +0 -3
- package/dest/interfaces/singleton_test_suite.d.ts.map +0 -1
- package/dest/interfaces/store.d.ts +0 -145
- package/dest/interfaces/store.d.ts.map +0 -1
- package/dest/interfaces/store_test_suite.d.ts +0 -3
- package/dest/interfaces/store_test_suite.d.ts.map +0 -1
- package/dest/interfaces/utils.d.ts +0 -16
- package/dest/interfaces/utils.d.ts.map +0 -1
- package/dest/lmdb/array.d.ts +0 -23
- package/dest/lmdb/array.d.ts.map +0 -1
- package/dest/lmdb/counter.d.ts +0 -19
- package/dest/lmdb/counter.d.ts.map +0 -1
- package/dest/lmdb/index.d.ts +0 -12
- package/dest/lmdb/index.d.ts.map +0 -1
- package/dest/lmdb/map.d.ts +0 -52
- package/dest/lmdb/map.d.ts.map +0 -1
- package/dest/lmdb/set.d.ts +0 -18
- package/dest/lmdb/set.d.ts.map +0 -1
- package/dest/lmdb/singleton.d.ts +0 -14
- package/dest/lmdb/singleton.d.ts.map +0 -1
- package/dest/lmdb/store.d.ts +0 -110
- package/dest/lmdb/store.d.ts.map +0 -1
- package/dest/lmdb-v2/factory.d.ts +0 -9
- package/dest/lmdb-v2/factory.d.ts.map +0 -1
- package/dest/lmdb-v2/index.d.ts +0 -3
- package/dest/lmdb-v2/index.d.ts.map +0 -1
- package/dest/lmdb-v2/map.d.ts +0 -86
- package/dest/lmdb-v2/map.d.ts.map +0 -1
- package/dest/lmdb-v2/message.d.ts +0 -112
- package/dest/lmdb-v2/message.d.ts.map +0 -1
- package/dest/lmdb-v2/read_transaction.d.ts +0 -14
- package/dest/lmdb-v2/read_transaction.d.ts.map +0 -1
- package/dest/lmdb-v2/singleton.d.ts +0 -12
- package/dest/lmdb-v2/singleton.d.ts.map +0 -1
- package/dest/lmdb-v2/store.d.ts +0 -43
- package/dest/lmdb-v2/store.d.ts.map +0 -1
- package/dest/lmdb-v2/utils.d.ts +0 -19
- package/dest/lmdb-v2/utils.d.ts.map +0 -1
- package/dest/lmdb-v2/write_transaction.d.ts +0 -19
- package/dest/lmdb-v2/write_transaction.d.ts.map +0 -1
- package/dest/stores/index.d.ts +0 -2
- package/dest/stores/index.d.ts.map +0 -1
- package/dest/stores/l2_tips_store.d.ts +0 -13
- package/dest/stores/l2_tips_store.d.ts.map +0 -1
- package/dest/utils.d.ts +0 -12
- package/dest/utils.d.ts.map +0 -1
|
@@ -2,58 +2,95 @@ import { toArray } from '@aztec/foundation/iterable';
|
|
|
2
2
|
import { expect } from 'chai';
|
|
3
3
|
import { isSyncStore } from './utils.js';
|
|
4
4
|
export function describeAztecSet(testName, getStore, forceAsync = false) {
|
|
5
|
-
describe(testName, ()
|
|
5
|
+
describe(testName, ()=>{
|
|
6
6
|
let store;
|
|
7
7
|
let set;
|
|
8
|
-
beforeEach(async ()
|
|
8
|
+
beforeEach(async ()=>{
|
|
9
9
|
store = await getStore();
|
|
10
10
|
set = store.openSet('test');
|
|
11
11
|
});
|
|
12
|
-
afterEach(async ()
|
|
12
|
+
afterEach(async ()=>{
|
|
13
13
|
await store.delete();
|
|
14
14
|
});
|
|
15
15
|
async function has(key) {
|
|
16
|
-
return isSyncStore(store) && !forceAsync
|
|
17
|
-
? set.has(key)
|
|
18
|
-
: await set.hasAsync(key);
|
|
16
|
+
return isSyncStore(store) && !forceAsync ? set.has(key) : await set.hasAsync(key);
|
|
19
17
|
}
|
|
20
18
|
async function entries(range) {
|
|
21
|
-
return isSyncStore(store) && !forceAsync
|
|
22
|
-
? await toArray(set.entries(range))
|
|
23
|
-
: await toArray(set.entriesAsync(range));
|
|
19
|
+
return isSyncStore(store) && !forceAsync ? await toArray(set.entries(range)) : await toArray(set.entriesAsync(range));
|
|
24
20
|
}
|
|
25
|
-
it('should be able to set and get values', async ()
|
|
21
|
+
it('should be able to set and get values', async ()=>{
|
|
26
22
|
await set.add('foo');
|
|
27
23
|
await set.add('baz');
|
|
28
24
|
expect(await has('foo')).to.equal(true);
|
|
29
25
|
expect(await has('baz')).to.equal(true);
|
|
30
26
|
expect(await has('bar')).to.equal(false);
|
|
31
27
|
});
|
|
32
|
-
it('should be able to delete values', async ()
|
|
28
|
+
it('should be able to delete values', async ()=>{
|
|
33
29
|
await set.add('foo');
|
|
34
30
|
await set.add('baz');
|
|
35
31
|
await set.delete('foo');
|
|
36
32
|
expect(await has('foo')).to.equal(false);
|
|
37
33
|
expect(await has('baz')).to.equal(true);
|
|
38
34
|
});
|
|
39
|
-
it('should be able to iterate over entries', async ()
|
|
35
|
+
it('should be able to iterate over entries', async ()=>{
|
|
40
36
|
await set.add('baz');
|
|
41
37
|
await set.add('foo');
|
|
42
|
-
expect(await entries()).to.deep.equal([
|
|
38
|
+
expect(await entries()).to.deep.equal([
|
|
39
|
+
'baz',
|
|
40
|
+
'foo'
|
|
41
|
+
]);
|
|
43
42
|
});
|
|
44
|
-
it('supports range queries', async ()
|
|
43
|
+
it('supports range queries', async ()=>{
|
|
45
44
|
await set.add('a');
|
|
46
45
|
await set.add('b');
|
|
47
46
|
await set.add('c');
|
|
48
47
|
await set.add('d');
|
|
49
|
-
expect(await entries({
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
expect(await entries({
|
|
48
|
+
expect(await entries({
|
|
49
|
+
start: 'b',
|
|
50
|
+
end: 'c'
|
|
51
|
+
})).to.deep.equal([
|
|
52
|
+
'b'
|
|
53
|
+
]);
|
|
54
|
+
expect(await entries({
|
|
55
|
+
start: 'b'
|
|
56
|
+
})).to.deep.equal([
|
|
57
|
+
'b',
|
|
58
|
+
'c',
|
|
59
|
+
'd'
|
|
60
|
+
]);
|
|
61
|
+
expect(await entries({
|
|
62
|
+
end: 'c'
|
|
63
|
+
})).to.deep.equal([
|
|
64
|
+
'a',
|
|
65
|
+
'b'
|
|
66
|
+
]);
|
|
67
|
+
expect(await entries({
|
|
68
|
+
start: 'b',
|
|
69
|
+
end: 'c',
|
|
70
|
+
reverse: true
|
|
71
|
+
})).to.deep.equal([
|
|
72
|
+
'c'
|
|
73
|
+
]);
|
|
74
|
+
expect(await entries({
|
|
75
|
+
start: 'b',
|
|
76
|
+
limit: 1
|
|
77
|
+
})).to.deep.equal([
|
|
78
|
+
'b'
|
|
79
|
+
]);
|
|
80
|
+
expect(await entries({
|
|
81
|
+
start: 'b',
|
|
82
|
+
reverse: true
|
|
83
|
+
})).to.deep.equal([
|
|
84
|
+
'd',
|
|
85
|
+
'c'
|
|
86
|
+
]);
|
|
87
|
+
expect(await entries({
|
|
88
|
+
end: 'b',
|
|
89
|
+
reverse: true
|
|
90
|
+
})).to.deep.equal([
|
|
91
|
+
'b',
|
|
92
|
+
'a'
|
|
93
|
+
]);
|
|
56
94
|
});
|
|
57
95
|
});
|
|
58
96
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X3Rlc3Rfc3VpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9zZXRfdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUs5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsUUFBZ0IsRUFDaEIsUUFBeUQsRUFDekQsYUFBc0IsS0FBSztJQUUzQixRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUN0QixJQUFJLEtBQXVDLENBQUM7UUFDNUMsSUFBSSxHQUE2QyxDQUFDO1FBRWxELFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixLQUFLLEdBQUcsTUFBTSxRQUFRLEVBQUUsQ0FBQztZQUN6QixHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBUyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNuQixNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssVUFBVSxHQUFHLENBQUMsR0FBVztZQUM1QixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVU7Z0JBQ3RDLENBQUMsQ0FBRSxHQUF3QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxNQUFPLEdBQTZCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWtCO1lBQ3ZDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFD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QUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRixNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Represents a singleton value in the database.
|
|
3
|
+
* Note: The singleton loses type info so it's recommended to serialize to buffer when storing it.
|
|
4
|
+
*/ export { };
|
|
@@ -1,33 +1,30 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import { isSyncStore } from './utils.js';
|
|
3
3
|
export function describeAztecSingleton(testName, getStore, forceAsync = false) {
|
|
4
|
-
describe(testName, ()
|
|
4
|
+
describe(testName, ()=>{
|
|
5
5
|
let store;
|
|
6
6
|
let singleton;
|
|
7
|
-
beforeEach(async ()
|
|
7
|
+
beforeEach(async ()=>{
|
|
8
8
|
store = await getStore();
|
|
9
9
|
singleton = store.openSingleton('test');
|
|
10
10
|
});
|
|
11
|
-
afterEach(async ()
|
|
11
|
+
afterEach(async ()=>{
|
|
12
12
|
await store.delete();
|
|
13
13
|
});
|
|
14
14
|
async function get() {
|
|
15
|
-
return isSyncStore(store) && !forceAsync
|
|
16
|
-
? singleton.get()
|
|
17
|
-
: await singleton.getAsync();
|
|
15
|
+
return isSyncStore(store) && !forceAsync ? singleton.get() : await singleton.getAsync();
|
|
18
16
|
}
|
|
19
|
-
it('returns undefined if the value is not set', async ()
|
|
17
|
+
it('returns undefined if the value is not set', async ()=>{
|
|
20
18
|
expect(await get()).to.equal(undefined);
|
|
21
19
|
});
|
|
22
|
-
it('should be able to set and get values', async ()
|
|
20
|
+
it('should be able to set and get values', async ()=>{
|
|
23
21
|
expect(await singleton.set('foo')).to.equal(true);
|
|
24
22
|
expect(await get()).to.equal('foo');
|
|
25
23
|
});
|
|
26
|
-
it('overwrites the value if it is set again', async ()
|
|
24
|
+
it('overwrites the value if it is set again', async ()=>{
|
|
27
25
|
expect(await singleton.set('foo')).to.equal(true);
|
|
28
26
|
expect(await singleton.set('bar')).to.equal(true);
|
|
29
27
|
expect(await get()).to.equal('bar');
|
|
30
28
|
});
|
|
31
29
|
});
|
|
32
30
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uX3Rlc3Rfc3VpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9zaW5nbGV0b25fdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxRQUFnQixFQUNoQixRQUF5RCxFQUN6RCxhQUFzQixLQUFLO0lBRTNCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3RCLElBQUksS0FBdUMsQ0FBQztRQUM1QyxJQUFJLFNBQStELENBQUM7UUFFcEUsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BCLEtBQUssR0FBRyxNQUFNLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ25CLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxVQUFVLEdBQUc7WUFDaEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVO2dCQUN0QyxDQUFDLENBQUUsU0FBb0MsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdDLENBQUMsQ0FBQyxNQUFPLFNBQXlDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEUsQ0FBQztRQUVELEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN6RCxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDcEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZELE1BQU0sQ0FBQyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
package/dest/interfaces/store.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
1
|
+
export { };
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
2
|
import { isSyncStore } from './utils.js';
|
|
3
3
|
export function describeAztecStore(testName, getPersistentStore, getPersistentNoPathStore, getEphemeralStore) {
|
|
4
|
-
describe(testName, ()
|
|
4
|
+
describe(testName, ()=>{
|
|
5
5
|
async function get(store, singleton) {
|
|
6
|
-
return isSyncStore(store)
|
|
7
|
-
? singleton.get()
|
|
8
|
-
: await singleton.getAsync();
|
|
6
|
+
return isSyncStore(store) ? singleton.get() : await singleton.getAsync();
|
|
9
7
|
}
|
|
10
|
-
const itForks = async (store)
|
|
8
|
+
const itForks = async (store)=>{
|
|
11
9
|
const singleton = store.openSingleton('singleton');
|
|
12
10
|
await singleton.set('foo');
|
|
13
11
|
const forkedStore = await store.fork();
|
|
@@ -20,21 +18,20 @@ export function describeAztecStore(testName, getPersistentStore, getPersistentNo
|
|
|
20
18
|
expect(await get(store, singleton)).to.equal('foo');
|
|
21
19
|
await forkedStore.delete();
|
|
22
20
|
};
|
|
23
|
-
it('forks a persistent store', async ()
|
|
21
|
+
it('forks a persistent store', async ()=>{
|
|
24
22
|
const store = await getPersistentStore();
|
|
25
23
|
await itForks(store);
|
|
26
24
|
await store.delete();
|
|
27
25
|
});
|
|
28
|
-
it('forks a persistent store with no path', async ()
|
|
26
|
+
it('forks a persistent store with no path', async ()=>{
|
|
29
27
|
const store = await getPersistentNoPathStore();
|
|
30
28
|
await itForks(store);
|
|
31
29
|
await store.delete();
|
|
32
30
|
});
|
|
33
|
-
it('forks an ephemeral store', async ()
|
|
31
|
+
it('forks an ephemeral store', async ()=>{
|
|
34
32
|
const store = await getEphemeralStore();
|
|
35
33
|
await itForks(store);
|
|
36
34
|
await store.delete();
|
|
37
35
|
});
|
|
38
36
|
});
|
|
39
37
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVfdGVzdF9zdWl0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3N0b3JlX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsUUFBZ0IsRUFDaEIsa0JBQW1FLEVBQ25FLHdCQUF5RSxFQUN6RSxpQkFBa0U7SUFFbEUsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDdEIsS0FBSyxVQUFVLEdBQUcsQ0FDaEIsS0FBdUMsRUFDdkMsU0FBK0Q7WUFFL0QsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUN2QixDQUFDLENBQUUsU0FBb0MsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdDLENBQUMsQ0FBQyxNQUFPLFNBQXlDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEUsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxLQUF1QyxFQUFFLEVBQUU7WUFDaEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBUyxXQUFXLENBQUMsQ0FBQztZQUMzRCxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0IsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBUyxXQUFXLENBQUMsQ0FBQztZQUN2RSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxNQUFNLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEUsTUFBTSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBRUYsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLHdCQUF3QixFQUFFLENBQUM7WUFDL0MsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsTUFBTSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=
|
package/dest/interfaces/utils.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
trace: (msg, data) => console.log(msg, data),
|
|
1
|
+
/* eslint-disable no-console */ export const mockLogger = {
|
|
2
|
+
debug: (msg, data)=>console.log(msg, data),
|
|
3
|
+
info: (msg, data)=>console.log(msg, data),
|
|
4
|
+
warn: (msg, data)=>console.log(msg, data),
|
|
5
|
+
error: (msg, data)=>console.error(msg, data),
|
|
6
|
+
fatal: (msg, data)=>console.error(msg, data),
|
|
7
|
+
silent: (_msg, _data)=>{},
|
|
8
|
+
verbose: (msg, data)=>console.log(msg, data),
|
|
9
|
+
trace: (msg, data)=>console.log(msg, data),
|
|
11
10
|
level: 'trace',
|
|
12
|
-
isLevelEnabled: (_level)
|
|
13
|
-
module: 'kv-store:mock-logger'
|
|
11
|
+
isLevelEnabled: (_level)=>true,
|
|
12
|
+
module: 'kv-store:mock-logger'
|
|
14
13
|
};
|
|
15
|
-
/* eslint-enable no-console */
|
|
16
|
-
export function isSyncStore(store) {
|
|
14
|
+
/* eslint-enable no-console */ export function isSyncStore(store) {
|
|
17
15
|
return store.syncGetters === true;
|
|
18
16
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSwrQkFBK0I7QUFDL0IsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLEtBQUssRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztJQUN6RCxJQUFJLEVBQUUsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDeEQsSUFBSSxFQUFFLENBQUMsR0FBVyxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0lBQ3hELEtBQUssRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztJQUMzRCxLQUFLLEVBQUUsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDM0QsTUFBTSxFQUFFLENBQUMsSUFBWSxFQUFFLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQztJQUN4QyxPQUFPLEVBQUUsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDM0QsS0FBSyxFQUFFLENBQUMsR0FBVyxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0lBQ3pELEtBQUssRUFBRSxPQUFnQjtJQUN2QixjQUFjLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLElBQUk7SUFDeEMsTUFBTSxFQUFFLHNCQUFzQjtDQUMvQixDQUFDO0FBQ0YsOEJBQThCO0FBRTlCLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBdUM7SUFDakUsT0FBUSxLQUFzQixDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUM7QUFDdEQsQ0FBQyJ9
|
package/dest/lmdb/array.js
CHANGED
|
@@ -1,46 +1,42 @@
|
|
|
1
|
-
var _LmdbAztecArray_instances, _LmdbAztecArray_db, _LmdbAztecArray_name, _LmdbAztecArray_length, _LmdbAztecArray_slot;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
1
|
import { LmdbAztecSingleton } from './singleton.js';
|
|
4
2
|
/**
|
|
5
3
|
* An persistent array backed by LMDB.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
__classPrivateFieldSet(this, _LmdbAztecArray_length, new LmdbAztecSingleton(db, `${arrName}:meta:length`), "f");
|
|
15
|
-
__classPrivateFieldSet(this, _LmdbAztecArray_db, db, "f");
|
|
4
|
+
*/ export class LmdbAztecArray {
|
|
5
|
+
#db;
|
|
6
|
+
#name;
|
|
7
|
+
#length;
|
|
8
|
+
constructor(db, arrName){
|
|
9
|
+
this.#name = arrName;
|
|
10
|
+
this.#length = new LmdbAztecSingleton(db, `${arrName}:meta:length`);
|
|
11
|
+
this.#db = db;
|
|
16
12
|
}
|
|
17
13
|
get length() {
|
|
18
|
-
return
|
|
14
|
+
return this.#length.get() ?? 0;
|
|
19
15
|
}
|
|
20
16
|
lengthAsync() {
|
|
21
17
|
return Promise.resolve(this.length);
|
|
22
18
|
}
|
|
23
19
|
push(...vals) {
|
|
24
|
-
return
|
|
20
|
+
return this.#db.childTransaction(()=>{
|
|
25
21
|
let length = this.length;
|
|
26
|
-
for (const val of vals)
|
|
27
|
-
void
|
|
22
|
+
for (const val of vals){
|
|
23
|
+
void this.#db.put(this.#slot(length), val);
|
|
28
24
|
length += 1;
|
|
29
25
|
}
|
|
30
|
-
void
|
|
26
|
+
void this.#length.set(length);
|
|
31
27
|
return length;
|
|
32
28
|
});
|
|
33
29
|
}
|
|
34
30
|
pop() {
|
|
35
|
-
return
|
|
31
|
+
return this.#db.childTransaction(()=>{
|
|
36
32
|
const length = this.length;
|
|
37
33
|
if (length === 0) {
|
|
38
34
|
return undefined;
|
|
39
35
|
}
|
|
40
|
-
const slot =
|
|
41
|
-
const val =
|
|
42
|
-
void
|
|
43
|
-
void
|
|
36
|
+
const slot = this.#slot(length - 1);
|
|
37
|
+
const val = this.#db.get(slot);
|
|
38
|
+
void this.#db.remove(slot);
|
|
39
|
+
void this.#length.set(length - 1);
|
|
44
40
|
return val;
|
|
45
41
|
});
|
|
46
42
|
}
|
|
@@ -53,7 +49,7 @@ export class LmdbAztecArray {
|
|
|
53
49
|
if (index < 0 || index >= this.length) {
|
|
54
50
|
return undefined;
|
|
55
51
|
}
|
|
56
|
-
return
|
|
52
|
+
return this.#db.get(this.#slot(index));
|
|
57
53
|
}
|
|
58
54
|
atAsync(index) {
|
|
59
55
|
return Promise.resolve(this.at(index));
|
|
@@ -65,48 +61,57 @@ export class LmdbAztecArray {
|
|
|
65
61
|
if (index < 0 || index >= this.length) {
|
|
66
62
|
return Promise.resolve(false);
|
|
67
63
|
}
|
|
68
|
-
return
|
|
64
|
+
return this.#db.put(this.#slot(index), val);
|
|
69
65
|
}
|
|
70
66
|
*entries() {
|
|
71
|
-
const transaction =
|
|
67
|
+
const transaction = this.#db.useReadTransaction();
|
|
72
68
|
try {
|
|
73
|
-
const values =
|
|
74
|
-
start:
|
|
69
|
+
const values = this.#db.getRange({
|
|
70
|
+
start: this.#slot(0),
|
|
75
71
|
limit: this.length,
|
|
76
|
-
transaction
|
|
72
|
+
transaction
|
|
77
73
|
});
|
|
78
|
-
for (const { key, value } of values)
|
|
74
|
+
for (const { key, value } of values){
|
|
79
75
|
const index = key[3];
|
|
80
|
-
yield [
|
|
76
|
+
yield [
|
|
77
|
+
index,
|
|
78
|
+
value
|
|
79
|
+
];
|
|
81
80
|
}
|
|
82
|
-
}
|
|
83
|
-
finally {
|
|
81
|
+
} finally{
|
|
84
82
|
transaction.done();
|
|
85
83
|
}
|
|
86
84
|
}
|
|
87
85
|
async *entriesAsync() {
|
|
88
|
-
for (const [key, value] of this.entries())
|
|
89
|
-
yield [
|
|
86
|
+
for (const [key, value] of this.entries()){
|
|
87
|
+
yield [
|
|
88
|
+
key,
|
|
89
|
+
value
|
|
90
|
+
];
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
93
|
*values() {
|
|
93
|
-
for (const [_, value] of this.entries())
|
|
94
|
+
for (const [_, value] of this.entries()){
|
|
94
95
|
yield value;
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
async *valuesAsync() {
|
|
98
|
-
for (const [_, value] of this.entries())
|
|
99
|
+
for (const [_, value] of this.entries()){
|
|
99
100
|
yield value;
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
|
-
[
|
|
103
|
+
[Symbol.iterator]() {
|
|
103
104
|
return this.values();
|
|
104
105
|
}
|
|
105
106
|
[Symbol.asyncIterator]() {
|
|
106
107
|
return this.valuesAsync();
|
|
107
108
|
}
|
|
109
|
+
#slot(index) {
|
|
110
|
+
return [
|
|
111
|
+
'array',
|
|
112
|
+
this.#name,
|
|
113
|
+
'slot',
|
|
114
|
+
index
|
|
115
|
+
];
|
|
116
|
+
}
|
|
108
117
|
}
|
|
109
|
-
_LmdbAztecArray_slot = function _LmdbAztecArray_slot(index) {
|
|
110
|
-
return ['array', __classPrivateFieldGet(this, _LmdbAztecArray_name, "f"), 'slot', index];
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3BEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBWSxFQUEwQixFQUFFLE9BQWU7O1FBSnZELHFDQUFpQztRQUNqQyx1Q0FBYztRQUNkLHlDQUFvQztRQUdsQyx1QkFBQSxJQUFJLHdCQUFTLE9BQU8sTUFBQSxDQUFDO1FBQ3JCLHVCQUFBLElBQUksMEJBQVcsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLGNBQWMsQ0FBQyxNQUFBLENBQUM7UUFDcEUsdUJBQUEsSUFBSSxzQkFBTyxFQUFpQyxNQUFBLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sdUJBQUEsSUFBSSw4QkFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLElBQVM7UUFDZixPQUFPLHVCQUFBLElBQUksMEJBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUN6QixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixLQUFLLHVCQUFBLElBQUksMEJBQUksQ0FBQyxHQUFHLENBQUMsdUJBQUEsSUFBSSx1REFBTSxNQUFWLElBQUksRUFBTyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNkLENBQUM7WUFFRCxLQUFLLHVCQUFBLElB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
|
package/dest/lmdb/counter.js
CHANGED
|
@@ -1,56 +1,50 @@
|
|
|
1
|
-
var _LmdbAztecCounter_db, _LmdbAztecCounter_name, _LmdbAztecCounter_map;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
1
|
import { LmdbAztecMap } from './map.js';
|
|
4
2
|
/**
|
|
5
3
|
* A counter implementation backed by LMDB
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
__classPrivateFieldSet(this, _LmdbAztecCounter_map, new LmdbAztecMap(db, name), "f");
|
|
4
|
+
*/ export class LmdbAztecCounter {
|
|
5
|
+
#db;
|
|
6
|
+
#name;
|
|
7
|
+
#map;
|
|
8
|
+
constructor(db, name){
|
|
9
|
+
this.#db = db;
|
|
10
|
+
this.#name = name;
|
|
11
|
+
this.#map = new LmdbAztecMap(db, name);
|
|
15
12
|
}
|
|
16
13
|
async set(key, value) {
|
|
17
|
-
await
|
|
14
|
+
await this.#map.set(key, value);
|
|
18
15
|
}
|
|
19
16
|
update(key, delta = 1) {
|
|
20
|
-
return
|
|
21
|
-
const current =
|
|
17
|
+
return this.#db.childTransaction(()=>{
|
|
18
|
+
const current = this.#map.get(key) ?? 0;
|
|
22
19
|
const next = current + delta;
|
|
23
20
|
if (next < 0) {
|
|
24
|
-
throw new Error(`Cannot update ${key} in counter ${
|
|
21
|
+
throw new Error(`Cannot update ${key} in counter ${this.#name} below zero`);
|
|
25
22
|
}
|
|
26
23
|
if (next === 0) {
|
|
27
|
-
void
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
24
|
+
void this.#map.delete(key);
|
|
25
|
+
} else {
|
|
30
26
|
// store the key inside the entry because LMDB might return an internal representation
|
|
31
27
|
// of the key when iterating over the database
|
|
32
|
-
void
|
|
28
|
+
void this.#map.set(key, next);
|
|
33
29
|
}
|
|
34
30
|
});
|
|
35
31
|
}
|
|
36
32
|
get(key) {
|
|
37
|
-
return
|
|
33
|
+
return this.#map.get(key) ?? 0;
|
|
38
34
|
}
|
|
39
35
|
getAsync(key) {
|
|
40
36
|
return Promise.resolve(this.get(key));
|
|
41
37
|
}
|
|
42
38
|
entries(range = {}) {
|
|
43
|
-
return
|
|
39
|
+
return this.#map.entries(range);
|
|
44
40
|
}
|
|
45
41
|
async *entriesAsync(range = {}) {
|
|
46
42
|
yield* this.entries(range);
|
|
47
43
|
}
|
|
48
44
|
keys(range = {}) {
|
|
49
|
-
return
|
|
45
|
+
return this.#map.keys(range);
|
|
50
46
|
}
|
|
51
47
|
async *keysAsync(range = {}) {
|
|
52
48
|
yield* this.keys(range);
|
|
53
49
|
}
|
|
54
50
|
}
|
|
55
|
-
_LmdbAztecCounter_db = new WeakMap(), _LmdbAztecCounter_name = new WeakMap(), _LmdbAztecCounter_map = new WeakMap();
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiL2NvdW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXhDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFnQjtJQUszQixZQUFZLEVBQThCLEVBQUUsSUFBWTtRQUp4RCx1Q0FBYztRQUNkLHlDQUFjO1FBQ2Qsd0NBQThCO1FBRzVCLHVCQUFBLElBQUksd0JBQU8sRUFBRSxNQUFBLENBQUM7UUFDZCx1QkFBQSxJQUFJLDBCQUFTLElBQUksTUFBQSxDQUFDO1FBQ2xCLHVCQUFBLElBQUkseUJBQVEsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFBLENBQUM7SUFDekMsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBTSxFQUFFLEtBQWE7UUFDN0IsTUFBTSx1QkFBQSxJQUFJLDZCQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUN0QixPQUFPLHVCQUFBLElBQUksNEJBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDcEMsTUFBTSxPQUFPLEdBQUcsdUJBQUEsSUFBSSw2QkFBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUU3QixJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDYixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLGVBQWUsdUJBQUEsSUFBSSw4QkFBTSxhQUFhLENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBRUQsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsS0FBSyx1QkFBQSxJQUFJLDZCQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixzRkFBc0Y7Z0JBQ3RGLDhDQUE4QztnQkFDOUMsS0FBSyx1QkFBQSxJQUFJLDZCQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQU07UUFDUixPQUFPLHVCQUFBLElBQUksNkJBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBTTtRQUNiLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFrQixFQUFFO1FBQzFCLE9BQU8sdUJBQUEsSUFBSSw2QkFBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQWtCLEVBQUU7UUFDdEMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWtCLEVBQUU7UUFDdkIsT0FBTyx1QkFBQSxJQUFJLDZCQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBa0IsRUFBRTtRQUNuQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRiJ9
|
package/dest/lmdb/index.js
CHANGED
|
@@ -8,9 +8,7 @@ export function createStore(name, config, log = createLogger('kv-store')) {
|
|
|
8
8
|
if (typeof dataDirectory !== 'undefined') {
|
|
9
9
|
dataDirectory = join(dataDirectory, name);
|
|
10
10
|
}
|
|
11
|
-
log.info(dataDirectory
|
|
12
|
-
? `Creating ${name} data store at directory ${dataDirectory} with map size ${config.dataStoreMapSizeKB} KB`
|
|
13
|
-
: `Creating ${name} ephemeral data store with map size ${config.dataStoreMapSizeKB} KB`);
|
|
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`);
|
|
14
12
|
const store = AztecLmdbStore.open(dataDirectory, config.dataStoreMapSizeKB, false);
|
|
15
13
|
if (config.l1Contracts?.rollupAddress) {
|
|
16
14
|
return initStoreForRollup(store, config.l1Contracts.rollupAddress, log);
|
|
@@ -21,9 +19,7 @@ export function createStore(name, config, log = createLogger('kv-store')) {
|
|
|
21
19
|
* Opens a temporary store for testing purposes.
|
|
22
20
|
* @param ephemeral - true if the store should only exist in memory and not automatically be flushed to disk. Optional
|
|
23
21
|
* @returns A new store
|
|
24
|
-
*/
|
|
25
|
-
export function openTmpStore(ephemeral = false) {
|
|
22
|
+
*/ export function openTmpStore(ephemeral = false) {
|
|
26
23
|
const mapSize = 1024 * 1024 * 10; // 10 GB map size
|
|
27
24
|
return AztecLmdbStore.open(undefined, mapSize, ephemeral);
|
|
28
25
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRTVDLE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLE1BQXVCLEVBQUUsTUFBYyxZQUFZLENBQUMsVUFBVSxDQUFDO0lBQ3ZHLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDL0IsSUFBSSxPQUFPLGFBQWEsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FDTixhQUFhO1FBQ1gsQ0FBQyxDQUFDLFlBQVksSUFBSSw0QkFBNEIsYUFBYSxrQkFBa0IsTUFBTSxDQUFDLGtCQUFrQixLQUFLO1FBQzNHLENBQUMsQ0FBQyxZQUFZLElBQUksdUNBQXVDLE1BQU0sQ0FBQyxrQkFBa0IsS0FBSyxDQUMxRixDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25GLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUN0QyxPQUFPLGtCQUFrQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBQ0Q7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsWUFBcUIsS0FBSztJQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQjtJQUNuRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM1RCxDQUFDIn0=
|