@aztec/kv-store 0.65.2 → 0.67.0
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.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/indexeddb/array.d.ts +21 -0
- package/dest/indexeddb/array.d.ts.map +1 -0
- package/dest/indexeddb/array.js +96 -0
- package/dest/indexeddb/index.d.ts +7 -0
- package/dest/indexeddb/index.d.ts.map +1 -0
- package/dest/indexeddb/index.js +22 -0
- package/dest/indexeddb/map.d.ts +26 -0
- package/dest/indexeddb/map.d.ts.map +1 -0
- package/dest/indexeddb/map.js +104 -0
- package/dest/indexeddb/set.d.ts +17 -0
- package/dest/indexeddb/set.d.ts.map +1 -0
- package/dest/indexeddb/set.js +25 -0
- package/dest/indexeddb/singleton.d.ts +16 -0
- package/dest/indexeddb/singleton.d.ts.map +1 -0
- package/dest/indexeddb/singleton.js +42 -0
- package/dest/indexeddb/store.d.ts +100 -0
- package/dest/indexeddb/store.d.ts.map +1 -0
- package/dest/indexeddb/store.js +156 -0
- package/dest/interfaces/array.d.ts +43 -11
- package/dest/interfaces/array.d.ts.map +1 -1
- package/dest/interfaces/array_test_suite.d.ts +3 -0
- package/dest/interfaces/array_test_suite.d.ts.map +1 -0
- package/dest/interfaces/array_test_suite.js +97 -0
- package/dest/interfaces/counter.d.ts +21 -1
- package/dest/interfaces/counter.d.ts.map +1 -1
- package/dest/interfaces/map.d.ts +62 -12
- package/dest/interfaces/map.d.ts.map +1 -1
- package/dest/interfaces/map_test_suite.d.ts +3 -0
- package/dest/interfaces/map_test_suite.d.ts.map +1 -0
- package/dest/interfaces/map_test_suite.js +114 -0
- package/dest/interfaces/set.d.ts +23 -7
- package/dest/interfaces/set.d.ts.map +1 -1
- package/dest/interfaces/set_test_suite.d.ts +3 -0
- package/dest/interfaces/set_test_suite.d.ts.map +1 -0
- package/dest/interfaces/set_test_suite.js +56 -0
- package/dest/interfaces/singleton.d.ts +14 -5
- package/dest/interfaces/singleton.d.ts.map +1 -1
- package/dest/interfaces/singleton_test_suite.d.ts +3 -0
- package/dest/interfaces/singleton_test_suite.d.ts.map +1 -0
- package/dest/interfaces/singleton_test_suite.js +30 -0
- package/dest/interfaces/store.d.ts +71 -8
- package/dest/interfaces/store.d.ts.map +1 -1
- package/dest/interfaces/store_test_suite.d.ts +3 -0
- package/dest/interfaces/store_test_suite.d.ts.map +1 -0
- package/dest/interfaces/store_test_suite.js +36 -0
- package/dest/interfaces/utils.d.ts +16 -0
- package/dest/interfaces/utils.d.ts.map +1 -0
- package/dest/interfaces/utils.js +19 -0
- package/dest/lmdb/array.d.ts +7 -2
- package/dest/lmdb/array.d.ts.map +1 -1
- package/dest/lmdb/array.js +20 -1
- package/dest/lmdb/counter.d.ts +5 -2
- package/dest/lmdb/counter.d.ts.map +1 -1
- package/dest/lmdb/counter.js +10 -1
- package/dest/lmdb/index.d.ts +10 -0
- package/dest/lmdb/index.d.ts.map +1 -1
- package/dest/lmdb/index.js +28 -1
- package/dest/lmdb/map.d.ts +8 -2
- package/dest/lmdb/map.d.ts.map +1 -1
- package/dest/lmdb/map.js +27 -1
- package/dest/lmdb/set.d.ts +4 -2
- package/dest/lmdb/set.d.ts.map +1 -1
- package/dest/lmdb/set.js +9 -1
- package/dest/lmdb/singleton.d.ts +3 -2
- package/dest/lmdb/singleton.d.ts.map +1 -1
- package/dest/lmdb/singleton.js +4 -1
- package/dest/lmdb/store.d.ts +21 -13
- package/dest/lmdb/store.d.ts.map +1 -1
- package/dest/lmdb/store.js +23 -19
- package/dest/stores/l2_tips_store.d.ts +2 -2
- package/dest/stores/l2_tips_store.d.ts.map +1 -1
- package/dest/stores/l2_tips_store.js +12 -12
- package/dest/utils.d.ts +8 -7
- package/dest/utils.d.ts.map +1 -1
- package/dest/utils.js +6 -25
- package/package.json +54 -38
- package/src/config.ts +1 -1
- package/src/indexeddb/array.ts +118 -0
- package/src/indexeddb/index.ts +29 -0
- package/src/indexeddb/map.ts +142 -0
- package/src/indexeddb/set.ts +37 -0
- package/src/indexeddb/singleton.ts +49 -0
- package/src/indexeddb/store.ts +192 -0
- package/src/interfaces/array.ts +48 -12
- package/src/interfaces/array_test_suite.ts +126 -0
- package/src/interfaces/counter.ts +23 -1
- package/src/interfaces/map.ts +69 -14
- package/src/interfaces/map_test_suite.ts +154 -0
- package/src/interfaces/set.ts +25 -8
- package/src/interfaces/set_test_suite.ts +77 -0
- package/src/interfaces/singleton.ts +14 -6
- package/src/interfaces/singleton_test_suite.ts +42 -0
- package/src/interfaces/store.ts +78 -8
- package/src/interfaces/store_test_suite.ts +52 -0
- package/src/interfaces/utils.ts +21 -0
- package/src/lmdb/array.ts +26 -2
- package/src/lmdb/counter.ts +14 -2
- package/src/lmdb/index.ts +36 -0
- package/src/lmdb/map.ts +34 -2
- package/src/lmdb/set.ts +12 -2
- package/src/lmdb/singleton.ts +6 -2
- package/src/lmdb/store.ts +39 -32
- package/src/stores/l2_tips_store.ts +16 -16
- package/src/utils.ts +8 -36
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { toArray } from '@aztec/foundation/iterable';
|
|
2
|
+
import { expect } from 'chai';
|
|
3
|
+
import { isSyncStore } from './utils.js';
|
|
4
|
+
export function describeAztecMap(testName, getStore, forceAsync = false) {
|
|
5
|
+
describe(testName, () => {
|
|
6
|
+
let store;
|
|
7
|
+
let map;
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
store = await getStore();
|
|
10
|
+
map = store.openMultiMap('test');
|
|
11
|
+
});
|
|
12
|
+
async function get(key, sut = map) {
|
|
13
|
+
return isSyncStore(store) && !forceAsync
|
|
14
|
+
? sut.get(key)
|
|
15
|
+
: await sut.getAsync(key);
|
|
16
|
+
}
|
|
17
|
+
async function entries() {
|
|
18
|
+
return isSyncStore(store) && !forceAsync
|
|
19
|
+
? await toArray(map.entries())
|
|
20
|
+
: await toArray(map.entriesAsync());
|
|
21
|
+
}
|
|
22
|
+
async function values() {
|
|
23
|
+
return isSyncStore(store) && !forceAsync
|
|
24
|
+
? await toArray(map.values())
|
|
25
|
+
: await toArray(map.valuesAsync());
|
|
26
|
+
}
|
|
27
|
+
async function keys(range, sut = map) {
|
|
28
|
+
return isSyncStore(store) && !forceAsync
|
|
29
|
+
? await toArray(sut.keys(range))
|
|
30
|
+
: await toArray(sut.keysAsync(range));
|
|
31
|
+
}
|
|
32
|
+
async function getValues(key) {
|
|
33
|
+
return isSyncStore(store) && !forceAsync
|
|
34
|
+
? await toArray(map.getValues(key))
|
|
35
|
+
: await toArray(map.getValuesAsync(key));
|
|
36
|
+
}
|
|
37
|
+
it('should be able to set and get values', async () => {
|
|
38
|
+
await map.set('foo', 'bar');
|
|
39
|
+
await map.set('baz', 'qux');
|
|
40
|
+
expect(await get('foo')).to.equal('bar');
|
|
41
|
+
expect(await get('baz')).to.equal('qux');
|
|
42
|
+
expect(await get('quux')).to.equal(undefined);
|
|
43
|
+
});
|
|
44
|
+
it('should be able to set values if they do not exist', async () => {
|
|
45
|
+
expect(await map.setIfNotExists('foo', 'bar')).to.equal(true);
|
|
46
|
+
expect(await map.setIfNotExists('foo', 'baz')).to.equal(false);
|
|
47
|
+
expect(await get('foo')).to.equal('bar');
|
|
48
|
+
});
|
|
49
|
+
it('should be able to delete values', async () => {
|
|
50
|
+
await map.set('foo', 'bar');
|
|
51
|
+
await map.set('baz', 'qux');
|
|
52
|
+
await map.delete('foo');
|
|
53
|
+
expect(await get('foo')).to.equal(undefined);
|
|
54
|
+
expect(await get('baz')).to.equal('qux');
|
|
55
|
+
});
|
|
56
|
+
it('should be able to iterate over entries when there are no keys', async () => {
|
|
57
|
+
expect(await entries()).to.deep.equal([]);
|
|
58
|
+
});
|
|
59
|
+
it('should be able to iterate over entries', async () => {
|
|
60
|
+
await map.set('foo', 'bar');
|
|
61
|
+
await map.set('baz', 'qux');
|
|
62
|
+
expect(await entries()).to.deep.equal([
|
|
63
|
+
['baz', 'qux'],
|
|
64
|
+
['foo', 'bar'],
|
|
65
|
+
]);
|
|
66
|
+
});
|
|
67
|
+
it('should be able to iterate over values', async () => {
|
|
68
|
+
await map.set('foo', 'bar');
|
|
69
|
+
await map.set('baz', 'quux');
|
|
70
|
+
expect(await values()).to.deep.equal(['quux', 'bar']);
|
|
71
|
+
});
|
|
72
|
+
it('should be able to iterate over keys', async () => {
|
|
73
|
+
await map.set('foo', 'bar');
|
|
74
|
+
await map.set('baz', 'qux');
|
|
75
|
+
expect(await keys()).to.deep.equal(['baz', 'foo']);
|
|
76
|
+
});
|
|
77
|
+
it('should be able to get multiple values for a single key', async () => {
|
|
78
|
+
await map.set('foo', 'bar');
|
|
79
|
+
await map.set('foo', 'baz');
|
|
80
|
+
expect(await getValues('foo')).to.deep.equal(['bar', 'baz']);
|
|
81
|
+
});
|
|
82
|
+
it('should be able to delete individual values for a single key', async () => {
|
|
83
|
+
await map.set('foo', 'bar');
|
|
84
|
+
await map.set('foo', 'baz');
|
|
85
|
+
await map.deleteValue('foo', 'bar');
|
|
86
|
+
expect(await getValues('foo')).to.deep.equal(['baz']);
|
|
87
|
+
});
|
|
88
|
+
it('supports tuple keys', async () => {
|
|
89
|
+
// Use a new map because key structure has changed
|
|
90
|
+
const tupleMap = store.openMap('test-tuple');
|
|
91
|
+
await tupleMap.set([5, 'bar'], 'val');
|
|
92
|
+
await tupleMap.set([0, 'foo'], 'val');
|
|
93
|
+
expect(await keys(undefined, tupleMap)).to.deep.equal([
|
|
94
|
+
[0, 'foo'],
|
|
95
|
+
[5, 'bar'],
|
|
96
|
+
]);
|
|
97
|
+
expect(await get([5, 'bar'], tupleMap)).to.equal('val');
|
|
98
|
+
});
|
|
99
|
+
it('supports range queries', async () => {
|
|
100
|
+
await map.set('a', 'a');
|
|
101
|
+
await map.set('b', 'b');
|
|
102
|
+
await map.set('c', 'c');
|
|
103
|
+
await map.set('d', 'd');
|
|
104
|
+
expect(await keys({ start: 'b', end: 'c' })).to.deep.equal(['b']);
|
|
105
|
+
expect(await keys({ start: 'b' })).to.deep.equal(['b', 'c', 'd']);
|
|
106
|
+
expect(await keys({ end: 'c' })).to.deep.equal(['a', 'b']);
|
|
107
|
+
expect(await keys({ start: 'b', end: 'c', reverse: true })).to.deep.equal(['c']);
|
|
108
|
+
expect(await keys({ start: 'b', limit: 1 })).to.deep.equal(['b']);
|
|
109
|
+
expect(await keys({ start: 'b', reverse: true })).to.deep.equal(['d', 'c']);
|
|
110
|
+
expect(await keys({ end: 'b', reverse: true })).to.deep.equal(['b', 'a']);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwX3Rlc3Rfc3VpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9tYXBfdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUs5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsUUFBZ0IsRUFDaEIsUUFBeUQsRUFDekQsYUFBc0IsS0FBSztJQUUzQixRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUN0QixJQUFJLEtBQXVDLENBQUM7UUFDNUMsSUFBSSxHQUFpRSxDQUFDO1FBRXRFLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixLQUFLLEdBQUcsTUFBTSxRQUFRLEVBQUUsQ0FBQztZQUN6QixHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBb0MsTUFBTSxDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQVEsRUFBRSxNQUFvRCxHQUFHO1lBQ2xGLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFDdEMsQ0FBQyxDQUFFLEdBQStCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFDM0MsQ0FBQyxDQUFDLE1BQU8sR0FBb0MsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsQ0FBQztRQUVELEtBQUssVUFBVSxPQUFPO1lBQ3BCLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFDdEMsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFFLEdBQStCLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNELENBQUMsQ0FBQyxNQUFNLE9BQU8s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
|
package/dest/interfaces/set.d.ts
CHANGED
|
@@ -2,13 +2,7 @@ import { type Key, type Range } from './common.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* A set backed by a persistent store.
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Checks if a key exists in the set.
|
|
8
|
-
* @param key - The key to check
|
|
9
|
-
* @returns True if the key exists, false otherwise
|
|
10
|
-
*/
|
|
11
|
-
has(key: K): boolean;
|
|
5
|
+
interface AztecBaseSet<K extends Key> {
|
|
12
6
|
/**
|
|
13
7
|
* Adds the given value.
|
|
14
8
|
* @param key - The key to add.
|
|
@@ -19,10 +13,32 @@ export interface AztecSet<K extends Key> {
|
|
|
19
13
|
* @param key - The key to delete.
|
|
20
14
|
*/
|
|
21
15
|
delete(key: K): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export interface AztecSet<K extends Key> extends AztecBaseSet<K> {
|
|
18
|
+
/**
|
|
19
|
+
* Checks if a key exists in the set.
|
|
20
|
+
* @param key - The key to check
|
|
21
|
+
* @returns True if the key exists, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
has(key: K): boolean;
|
|
22
24
|
/**
|
|
23
25
|
* Iterates over the sets's keys entries in the key's natural order
|
|
24
26
|
* @param range - The range of keys to iterate over
|
|
25
27
|
*/
|
|
26
28
|
entries(range?: Range<K>): IterableIterator<K>;
|
|
27
29
|
}
|
|
30
|
+
export interface AztecAsyncSet<K extends Key> extends AztecBaseSet<K> {
|
|
31
|
+
/**
|
|
32
|
+
* Checks if a key exists in the set.
|
|
33
|
+
* @param key - The key to check
|
|
34
|
+
* @returns True if the key exists, false otherwise
|
|
35
|
+
*/
|
|
36
|
+
hasAsync(key: K): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Iterates over the sets's keys entries in the key's natural order
|
|
39
|
+
* @param range - The range of keys to iterate over
|
|
40
|
+
*/
|
|
41
|
+
entriesAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
28
44
|
//# sourceMappingURL=set.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/interfaces/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,GAAG;
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/interfaces/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEnD;;GAEG;AACH,UAAU,YAAY,CAAC,CAAC,SAAS,GAAG;IAClC;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IAC9D;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,GAAG,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IACnE;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/set_test_suite.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAGvE,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAgE5B"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { toArray } from '@aztec/foundation/iterable';
|
|
2
|
+
import { expect } from 'chai';
|
|
3
|
+
import { isSyncStore } from './utils.js';
|
|
4
|
+
export function describeAztecSet(testName, getStore, forceAsync = false) {
|
|
5
|
+
describe(testName, () => {
|
|
6
|
+
let store;
|
|
7
|
+
let set;
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
store = await getStore();
|
|
10
|
+
set = store.openSet('test');
|
|
11
|
+
});
|
|
12
|
+
async function has(key) {
|
|
13
|
+
return isSyncStore(store) && !forceAsync
|
|
14
|
+
? set.has(key)
|
|
15
|
+
: await set.hasAsync(key);
|
|
16
|
+
}
|
|
17
|
+
async function entries(range) {
|
|
18
|
+
return isSyncStore(store) && !forceAsync
|
|
19
|
+
? await toArray(set.entries(range))
|
|
20
|
+
: await toArray(set.entriesAsync(range));
|
|
21
|
+
}
|
|
22
|
+
it('should be able to set and get values', async () => {
|
|
23
|
+
await set.add('foo');
|
|
24
|
+
await set.add('baz');
|
|
25
|
+
expect(await has('foo')).to.equal(true);
|
|
26
|
+
expect(await has('baz')).to.equal(true);
|
|
27
|
+
expect(await has('bar')).to.equal(false);
|
|
28
|
+
});
|
|
29
|
+
it('should be able to delete values', async () => {
|
|
30
|
+
await set.add('foo');
|
|
31
|
+
await set.add('baz');
|
|
32
|
+
await set.delete('foo');
|
|
33
|
+
expect(await has('foo')).to.equal(false);
|
|
34
|
+
expect(await has('baz')).to.equal(true);
|
|
35
|
+
});
|
|
36
|
+
it('should be able to iterate over entries', async () => {
|
|
37
|
+
await set.add('baz');
|
|
38
|
+
await set.add('foo');
|
|
39
|
+
expect(await entries()).to.deep.equal(['baz', 'foo']);
|
|
40
|
+
});
|
|
41
|
+
it('supports range queries', async () => {
|
|
42
|
+
await set.add('a');
|
|
43
|
+
await set.add('b');
|
|
44
|
+
await set.add('c');
|
|
45
|
+
await set.add('d');
|
|
46
|
+
expect(await entries({ start: 'b', end: 'c' })).to.deep.equal(['b']);
|
|
47
|
+
expect(await entries({ start: 'b' })).to.deep.equal(['b', 'c', 'd']);
|
|
48
|
+
expect(await entries({ end: 'c' })).to.deep.equal(['a', 'b']);
|
|
49
|
+
expect(await entries({ start: 'b', end: 'c', reverse: true })).to.deep.equal(['c']);
|
|
50
|
+
expect(await entries({ start: 'b', limit: 1 })).to.deep.equal(['b']);
|
|
51
|
+
expect(await entries({ start: 'b', reverse: true })).to.deep.equal(['d', 'c']);
|
|
52
|
+
expect(await entries({ end: 'b', reverse: true })).to.deep.equal(['b', 'a']);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0X3Rlc3Rfc3VpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9zZXRfdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFckQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUs5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDLE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsUUFBZ0IsRUFDaEIsUUFBeUQsRUFDekQsYUFBc0IsS0FBSztJQUUzQixRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtRQUN0QixJQUFJLEtBQXVDLENBQUM7UUFDNUMsSUFBSSxHQUE2QyxDQUFDO1FBRWxELFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNwQixLQUFLLEdBQUcsTUFBTSxRQUFRLEVBQUUsQ0FBQztZQUN6QixHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBUyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssVUFBVSxHQUFHLENBQUMsR0FBVztZQUM1QixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVU7Z0JBQ3RDLENBQUMsQ0FBRSxHQUF3QixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxNQUFPLEdBQTZCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWtCO1lBQ3ZDLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVTtnQkFDdEMsQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFFLEdBQXdCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6RCxDQUFDLENBQUMsTUFBTSxP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QUssRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRixNQUFNLENBQUMsTUFBTSxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=
|
|
@@ -2,11 +2,7 @@
|
|
|
2
2
|
* Represents a singleton value in the database.
|
|
3
3
|
* Note: The singleton loses type info so it's recommended to serialize to buffer when storing it.
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Gets the value.
|
|
8
|
-
*/
|
|
9
|
-
get(): T | undefined;
|
|
5
|
+
interface AztecBaseSingleton<T> {
|
|
10
6
|
/**
|
|
11
7
|
* Sets the value.
|
|
12
8
|
* @param val - The new value
|
|
@@ -17,4 +13,17 @@ export interface AztecSingleton<T> {
|
|
|
17
13
|
*/
|
|
18
14
|
delete(): Promise<boolean>;
|
|
19
15
|
}
|
|
16
|
+
export interface AztecSingleton<T> extends AztecBaseSingleton<T> {
|
|
17
|
+
/**
|
|
18
|
+
* Gets the value.
|
|
19
|
+
*/
|
|
20
|
+
get(): T | undefined;
|
|
21
|
+
}
|
|
22
|
+
export interface AztecAsyncSingleton<T> extends AztecBaseSingleton<T> {
|
|
23
|
+
/**
|
|
24
|
+
* Gets the value.
|
|
25
|
+
*/
|
|
26
|
+
getAsync(): Promise<T | undefined>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
20
29
|
//# sourceMappingURL=singleton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/interfaces/singleton.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/interfaces/singleton.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,UAAU,kBAAkB,CAAC,CAAC;IAC5B;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9B;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5B;AACD,MAAM,WAAW,cAAc,CAAC,CAAC,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC9D;;OAEG;IACH,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IACnE;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CACpC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type AztecAsyncKVStore, type AztecKVStore } from './store.js';
|
|
2
|
+
export declare function describeAztecSingleton(testName: string, getStore: () => AztecKVStore | Promise<AztecAsyncKVStore>, forceAsync?: boolean): void;
|
|
3
|
+
//# sourceMappingURL=singleton_test_suite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleton_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/singleton_test_suite.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAGvE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,EACzD,UAAU,GAAE,OAAe,QAgC5B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { isSyncStore } from './utils.js';
|
|
3
|
+
export function describeAztecSingleton(testName, getStore, forceAsync = false) {
|
|
4
|
+
describe(testName, () => {
|
|
5
|
+
let store;
|
|
6
|
+
let singleton;
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
store = await getStore();
|
|
9
|
+
singleton = store.openSingleton('test');
|
|
10
|
+
});
|
|
11
|
+
async function get() {
|
|
12
|
+
return isSyncStore(store) && !forceAsync
|
|
13
|
+
? singleton.get()
|
|
14
|
+
: await singleton.getAsync();
|
|
15
|
+
}
|
|
16
|
+
it('returns undefined if the value is not set', async () => {
|
|
17
|
+
expect(await get()).to.equal(undefined);
|
|
18
|
+
});
|
|
19
|
+
it('should be able to set and get values', async () => {
|
|
20
|
+
expect(await singleton.set('foo')).to.equal(true);
|
|
21
|
+
expect(await get()).to.equal('foo');
|
|
22
|
+
});
|
|
23
|
+
it('overwrites the value if it is set again', async () => {
|
|
24
|
+
expect(await singleton.set('foo')).to.equal(true);
|
|
25
|
+
expect(await singleton.set('bar')).to.equal(true);
|
|
26
|
+
expect(await get()).to.equal('bar');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uX3Rlc3Rfc3VpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy9zaW5nbGV0b25fdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxRQUFnQixFQUNoQixRQUF5RCxFQUN6RCxhQUFzQixLQUFLO0lBRTNCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3RCLElBQUksS0FBdUMsQ0FBQztRQUM1QyxJQUFJLFNBQStELENBQUM7UUFFcEUsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3BCLEtBQUssR0FBRyxNQUFNLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLFNBQVMsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFTLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO1FBRUgsS0FBSyxVQUFVLEdBQUc7WUFDaEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVO2dCQUN0QyxDQUFDLENBQUUsU0FBb0MsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdDLENBQUMsQ0FBQyxNQUFPLFNBQXlDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEUsQ0FBQztRQUVELEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN6RCxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDcEQsTUFBTSxDQUFDLE1BQU0sU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZELE1BQU0sQ0FBQyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { type AztecArray } from './array.js';
|
|
1
|
+
import { type AztecArray, type AztecAsyncArray } from './array.js';
|
|
2
2
|
import { type Key } from './common.js';
|
|
3
|
-
import { type AztecCounter } from './counter.js';
|
|
4
|
-
import { type AztecMap, type AztecMultiMap } from './map.js';
|
|
5
|
-
import { type AztecSet } from './set.js';
|
|
6
|
-
import { type AztecSingleton } from './singleton.js';
|
|
3
|
+
import { type AztecAsyncCounter, type AztecCounter } from './counter.js';
|
|
4
|
+
import { type AztecAsyncMap, type AztecAsyncMultiMap, type AztecMap, type AztecMultiMap } from './map.js';
|
|
5
|
+
import { type AztecAsyncSet, type AztecSet } from './set.js';
|
|
6
|
+
import { type AztecAsyncSingleton, type AztecSingleton } from './singleton.js';
|
|
7
7
|
/** A key-value store */
|
|
8
8
|
export interface AztecKVStore {
|
|
9
|
+
syncGetters: true;
|
|
9
10
|
/**
|
|
10
11
|
* Creates a new map.
|
|
11
12
|
* @param name - The name of the map
|
|
12
13
|
* @returns The map
|
|
13
14
|
*/
|
|
14
|
-
openMap<K extends
|
|
15
|
+
openMap<K extends Key, V>(name: string): AztecMap<K, V>;
|
|
15
16
|
/**
|
|
16
17
|
* Creates a new set.
|
|
17
18
|
* @param name - The name of the set
|
|
18
19
|
* @returns The set
|
|
19
20
|
*/
|
|
20
|
-
openSet<K extends
|
|
21
|
+
openSet<K extends Key>(name: string): AztecSet<K>;
|
|
21
22
|
/**
|
|
22
23
|
* Creates a new multi-map.
|
|
23
24
|
* @param name - The name of the multi-map
|
|
24
25
|
* @returns The multi-map
|
|
25
26
|
*/
|
|
26
|
-
openMultiMap<K extends
|
|
27
|
+
openMultiMap<K extends Key, V>(name: string): AztecMultiMap<K, V>;
|
|
27
28
|
/**
|
|
28
29
|
* Creates a new array.
|
|
29
30
|
* @param name - The name of the array
|
|
@@ -67,4 +68,66 @@ export interface AztecKVStore {
|
|
|
67
68
|
numItems: number;
|
|
68
69
|
};
|
|
69
70
|
}
|
|
71
|
+
export interface AztecAsyncKVStore {
|
|
72
|
+
/**
|
|
73
|
+
* Creates a new map.
|
|
74
|
+
* @param name - The name of the map
|
|
75
|
+
* @returns The map
|
|
76
|
+
*/
|
|
77
|
+
openMap<K extends Key, V>(name: string): AztecAsyncMap<K, V>;
|
|
78
|
+
/**
|
|
79
|
+
* Creates a new set.
|
|
80
|
+
* @param name - The name of the set
|
|
81
|
+
* @returns The set
|
|
82
|
+
*/
|
|
83
|
+
openSet<K extends Key>(name: string): AztecAsyncSet<K>;
|
|
84
|
+
/**
|
|
85
|
+
* Creates a new multi-map.
|
|
86
|
+
* @param name - The name of the multi-map
|
|
87
|
+
* @returns The multi-map
|
|
88
|
+
*/
|
|
89
|
+
openMultiMap<K extends Key, V>(name: string): AztecAsyncMultiMap<K, V>;
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new array.
|
|
92
|
+
* @param name - The name of the array
|
|
93
|
+
* @returns The array
|
|
94
|
+
*/
|
|
95
|
+
openArray<T>(name: string): AztecAsyncArray<T>;
|
|
96
|
+
/**
|
|
97
|
+
* Creates a new singleton.
|
|
98
|
+
* @param name - The name of the singleton
|
|
99
|
+
* @returns The singleton
|
|
100
|
+
*/
|
|
101
|
+
openSingleton<T>(name: string): AztecAsyncSingleton<T>;
|
|
102
|
+
/**
|
|
103
|
+
* Creates a new count map.
|
|
104
|
+
* @param name - name of the counter
|
|
105
|
+
*/
|
|
106
|
+
openCounter<K extends Key>(name: string): AztecAsyncCounter<K>;
|
|
107
|
+
/**
|
|
108
|
+
* Starts a transaction. All calls to read/write data while in a transaction are queued and executed atomically.
|
|
109
|
+
* @param callback - The callback to execute in a transaction
|
|
110
|
+
*/
|
|
111
|
+
transactionAsync<T extends Exclude<any, Promise<any>>>(callback: () => Promise<T>): Promise<T>;
|
|
112
|
+
/**
|
|
113
|
+
* Clears all entries in the store
|
|
114
|
+
*/
|
|
115
|
+
clear(): Promise<void>;
|
|
116
|
+
/**
|
|
117
|
+
* Forks the store.
|
|
118
|
+
*/
|
|
119
|
+
fork(): Promise<AztecAsyncKVStore>;
|
|
120
|
+
/**
|
|
121
|
+
* Deletes the store
|
|
122
|
+
*/
|
|
123
|
+
delete(): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Estimates the size of the store in bytes.
|
|
126
|
+
*/
|
|
127
|
+
estimateSize(): {
|
|
128
|
+
mappingSize: number;
|
|
129
|
+
actualSize: number;
|
|
130
|
+
numItems: number;
|
|
131
|
+
};
|
|
132
|
+
}
|
|
70
133
|
//# sourceMappingURL=store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/interfaces/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/interfaces/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type AztecAsyncKVStore, type AztecKVStore } from './store.js';
|
|
2
|
+
export declare function describeAztecStore(testName: string, getPersistentStore: () => Promise<AztecKVStore | AztecAsyncKVStore>, getPersistentNoPathStore: () => Promise<AztecKVStore | AztecAsyncKVStore>, getEphemeralStore: () => Promise<AztecKVStore | AztecAsyncKVStore>): void;
|
|
3
|
+
//# sourceMappingURL=store_test_suite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store_test_suite.d.ts","sourceRoot":"","sources":["../../src/interfaces/store_test_suite.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAGvE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,kBAAkB,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,EACnE,wBAAwB,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,EACzE,iBAAiB,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,QAyCnE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { isSyncStore } from './utils.js';
|
|
3
|
+
export function describeAztecStore(testName, getPersistentStore, getPersistentNoPathStore, getEphemeralStore) {
|
|
4
|
+
describe(testName, () => {
|
|
5
|
+
async function get(store, singleton) {
|
|
6
|
+
return isSyncStore(store)
|
|
7
|
+
? singleton.get()
|
|
8
|
+
: await singleton.getAsync();
|
|
9
|
+
}
|
|
10
|
+
const itForks = async (store) => {
|
|
11
|
+
const singleton = store.openSingleton('singleton');
|
|
12
|
+
await singleton.set('foo');
|
|
13
|
+
const forkedStore = await store.fork();
|
|
14
|
+
const forkedSingleton = forkedStore.openSingleton('singleton');
|
|
15
|
+
expect(await get(store, singleton)).to.equal('foo');
|
|
16
|
+
await forkedSingleton.set('bar');
|
|
17
|
+
expect(await get(store, singleton)).to.equal('foo');
|
|
18
|
+
expect(await get(forkedStore, forkedSingleton)).to.equal('bar');
|
|
19
|
+
await forkedSingleton.delete();
|
|
20
|
+
expect(await get(store, singleton)).to.equal('foo');
|
|
21
|
+
};
|
|
22
|
+
it('forks a persistent store', async () => {
|
|
23
|
+
const store = await getPersistentStore();
|
|
24
|
+
await itForks(store);
|
|
25
|
+
});
|
|
26
|
+
it('forks a persistent store with no path', async () => {
|
|
27
|
+
const store = await getPersistentNoPathStore();
|
|
28
|
+
await itForks(store);
|
|
29
|
+
});
|
|
30
|
+
it('forks an ephemeral store', async () => {
|
|
31
|
+
const store = await getEphemeralStore();
|
|
32
|
+
await itForks(store);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVfdGVzdF9zdWl0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbnRlcmZhY2VzL3N0b3JlX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUk5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXpDLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsUUFBZ0IsRUFDaEIsa0JBQW1FLEVBQ25FLHdCQUF5RSxFQUN6RSxpQkFBa0U7SUFFbEUsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDdEIsS0FBSyxVQUFVLEdBQUcsQ0FDaEIsS0FBdUMsRUFDdkMsU0FBK0Q7WUFFL0QsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO2dCQUN2QixDQUFDLENBQUUsU0FBb0MsQ0FBQyxHQUFHLEVBQUU7Z0JBQzdDLENBQUMsQ0FBQyxNQUFPLFNBQXlDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEUsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxLQUF1QyxFQUFFLEVBQUU7WUFDaEUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBUyxXQUFXLENBQUMsQ0FBQztZQUMzRCxNQUFNLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0IsTUFBTSxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkMsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBUyxXQUFXLENBQUMsQ0FBQztZQUN2RSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxNQUFNLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEUsTUFBTSxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO1FBRUYsRUFBRSxDQUFDLDBCQUEwQixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztZQUN6QyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRCxNQUFNLEtBQUssR0FBRyxNQUFNLHdCQUF3QixFQUFFLENBQUM7WUFDL0MsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type AztecAsyncKVStore, type AztecKVStore } from './store.js';
|
|
2
|
+
export declare const mockLogger: {
|
|
3
|
+
debug: (msg: string, data: any) => void;
|
|
4
|
+
info: (msg: string, data: any) => void;
|
|
5
|
+
warn: (msg: string, data: any) => void;
|
|
6
|
+
error: (msg: string, data: any) => void;
|
|
7
|
+
fatal: (msg: string, data: any) => void;
|
|
8
|
+
silent: (_msg: string, _data: any) => void;
|
|
9
|
+
verbose: (msg: string, data: any) => void;
|
|
10
|
+
trace: (msg: string, data: any) => void;
|
|
11
|
+
level: "trace";
|
|
12
|
+
isLevelEnabled: (_level: string) => boolean;
|
|
13
|
+
module: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function isSyncStore(store: AztecKVStore | AztecAsyncKVStore): store is AztecAsyncKVStore;
|
|
16
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/interfaces/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAGvE,eAAO,MAAM,UAAU;iBACR,MAAM,QAAQ,GAAG;gBAClB,MAAM,QAAQ,GAAG;gBACjB,MAAM,QAAQ,GAAG;iBAChB,MAAM,QAAQ,GAAG;iBACjB,MAAM,QAAQ,GAAG;mBACf,MAAM,SAAS,GAAG;mBAClB,MAAM,QAAQ,GAAG;iBACnB,MAAM,QAAQ,GAAG;;6BAEL,MAAM;;CAEhC,CAAC;AAGF,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,iBAAiB,GAAG,KAAK,IAAI,iBAAiB,CAE/F"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
export const mockLogger = {
|
|
3
|
+
debug: (msg, data) => console.log(msg, data),
|
|
4
|
+
info: (msg, data) => console.log(msg, data),
|
|
5
|
+
warn: (msg, data) => console.log(msg, data),
|
|
6
|
+
error: (msg, data) => console.error(msg, data),
|
|
7
|
+
fatal: (msg, data) => console.error(msg, data),
|
|
8
|
+
silent: (_msg, _data) => { },
|
|
9
|
+
verbose: (msg, data) => console.log(msg, data),
|
|
10
|
+
trace: (msg, data) => console.log(msg, data),
|
|
11
|
+
level: 'trace',
|
|
12
|
+
isLevelEnabled: (_level) => true,
|
|
13
|
+
module: 'kv-store:mock-logger',
|
|
14
|
+
};
|
|
15
|
+
/* eslint-enable no-console */
|
|
16
|
+
export function isSyncStore(store) {
|
|
17
|
+
return store.syncGetters === true;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW50ZXJmYWNlcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSwrQkFBK0I7QUFDL0IsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLEtBQUssRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztJQUN6RCxJQUFJLEVBQUUsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDeEQsSUFBSSxFQUFFLENBQUMsR0FBVyxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0lBQ3hELEtBQUssRUFBRSxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztJQUMzRCxLQUFLLEVBQUUsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDM0QsTUFBTSxFQUFFLENBQUMsSUFBWSxFQUFFLEtBQVUsRUFBRSxFQUFFLEdBQUUsQ0FBQztJQUN4QyxPQUFPLEVBQUUsQ0FBQyxHQUFXLEVBQUUsSUFBUyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDM0QsS0FBSyxFQUFFLENBQUMsR0FBVyxFQUFFLElBQVMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0lBQ3pELEtBQUssRUFBRSxPQUFnQjtJQUN2QixjQUFjLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLElBQUk7SUFDeEMsTUFBTSxFQUFFLHNCQUFzQjtDQUMvQixDQUFDO0FBQ0YsOEJBQThCO0FBRTlCLE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBdUM7SUFDakUsT0FBUSxLQUFzQixDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUM7QUFDdEQsQ0FBQyJ9
|
package/dest/lmdb/array.d.ts
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { type Database, type Key } from 'lmdb';
|
|
2
|
-
import { type AztecArray } from '../interfaces/array.js';
|
|
2
|
+
import { type AztecArray, type AztecAsyncArray } from '../interfaces/array.js';
|
|
3
3
|
/**
|
|
4
4
|
* An persistent array backed by LMDB.
|
|
5
5
|
*/
|
|
6
|
-
export declare class LmdbAztecArray<T> implements AztecArray<T> {
|
|
6
|
+
export declare class LmdbAztecArray<T> implements AztecArray<T>, AztecAsyncArray<T> {
|
|
7
7
|
#private;
|
|
8
8
|
constructor(db: Database<unknown, Key>, arrName: string);
|
|
9
9
|
get length(): number;
|
|
10
|
+
lengthAsync(): Promise<number>;
|
|
10
11
|
push(...vals: T[]): Promise<number>;
|
|
11
12
|
pop(): Promise<T | undefined>;
|
|
12
13
|
at(index: number): T | undefined;
|
|
14
|
+
atAsync(index: number): Promise<T | undefined>;
|
|
13
15
|
setAt(index: number, val: T): Promise<boolean>;
|
|
14
16
|
entries(): IterableIterator<[number, T]>;
|
|
17
|
+
entriesAsync(): AsyncIterableIterator<[number, T]>;
|
|
15
18
|
values(): IterableIterator<T>;
|
|
19
|
+
valuesAsync(): AsyncIterableIterator<T>;
|
|
16
20
|
[Symbol.iterator](): IterableIterator<T>;
|
|
21
|
+
[Symbol.asyncIterator](): AsyncIterableIterator<T>;
|
|
17
22
|
}
|
|
18
23
|
//# sourceMappingURL=array.d.ts.map
|
package/dest/lmdb/array.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/lmdb/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/lmdb/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE/C,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM/E;;GAEG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;;gBAK7D,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM;IAMvD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9B,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAcnC,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAiB7B,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAchC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI9C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAY7C,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAYlC,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAMxD,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAMvB,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC;IAM9C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC;IAIxC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC;CAOnD"}
|