@aztec/kv-store 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.75.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 +17 -0
- package/dest/config.d.ts.map +1 -0
- package/dest/config.js +7 -5
- package/dest/indexeddb/array.d.ts +21 -0
- package/dest/indexeddb/array.d.ts.map +1 -0
- package/dest/indexeddb/array.js +36 -44
- package/dest/indexeddb/index.d.ts +7 -0
- package/dest/indexeddb/index.d.ts.map +1 -0
- package/dest/indexeddb/index.js +4 -1
- package/dest/indexeddb/map.d.ts +26 -0
- package/dest/indexeddb/map.d.ts.map +1 -0
- package/dest/indexeddb/map.js +43 -72
- package/dest/indexeddb/set.d.ts +17 -0
- package/dest/indexeddb/set.d.ts.map +1 -0
- package/dest/indexeddb/set.js +4 -3
- package/dest/indexeddb/singleton.d.ts +16 -0
- package/dest/indexeddb/singleton.d.ts.map +1 -0
- package/dest/indexeddb/singleton.js +22 -17
- package/dest/indexeddb/store.d.ts +97 -0
- package/dest/indexeddb/store.d.ts.map +1 -0
- package/dest/indexeddb/store.js +93 -97
- package/dest/interfaces/array.d.ts +80 -0
- package/dest/interfaces/array.d.ts.map +1 -0
- package/dest/interfaces/array.js +2 -3
- 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 +25 -29
- package/dest/interfaces/common.d.ts +23 -0
- package/dest/interfaces/common.d.ts.map +1 -0
- package/dest/interfaces/common.js +2 -3
- package/dest/interfaces/counter.d.ts +59 -0
- package/dest/interfaces/counter.d.ts.map +1 -0
- package/dest/interfaces/counter.js +2 -1
- package/dest/interfaces/index.d.ts +8 -0
- package/dest/interfaces/index.d.ts.map +1 -0
- package/dest/interfaces/index.js +1 -0
- package/dest/interfaces/map.d.ts +134 -0
- package/dest/interfaces/map.d.ts.map +1 -0
- package/dest/interfaces/map.js +2 -3
- 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 +42 -87
- package/dest/interfaces/set.d.ts +44 -0
- package/dest/interfaces/set.d.ts.map +1 -0
- package/dest/interfaces/set.js +2 -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 +22 -59
- package/dest/interfaces/singleton.d.ts +29 -0
- package/dest/interfaces/singleton.d.ts.map +1 -0
- package/dest/interfaces/singleton.js +2 -4
- 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 +10 -7
- package/dest/interfaces/store.d.ts +145 -0
- package/dest/interfaces/store.d.ts.map +1 -0
- package/dest/interfaces/store.js +2 -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 +9 -6
- package/dest/interfaces/utils.d.ts +16 -0
- package/dest/interfaces/utils.d.ts.map +1 -0
- package/dest/interfaces/utils.js +15 -12
- package/dest/lmdb/array.d.ts +23 -0
- package/dest/lmdb/array.d.ts.map +1 -0
- package/dest/lmdb/array.js +41 -46
- package/dest/lmdb/counter.d.ts +19 -0
- package/dest/lmdb/counter.d.ts.map +1 -0
- package/dest/lmdb/counter.js +24 -18
- package/dest/lmdb/index.d.ts +12 -0
- package/dest/lmdb/index.d.ts.map +1 -0
- package/dest/lmdb/index.js +6 -2
- package/dest/lmdb/map.d.ts +52 -0
- package/dest/lmdb/map.d.ts.map +1 -0
- package/dest/lmdb/map.js +68 -90
- package/dest/lmdb/set.d.ts +18 -0
- package/dest/lmdb/set.d.ts.map +1 -0
- package/dest/lmdb/set.js +5 -4
- package/dest/lmdb/singleton.d.ts +14 -0
- package/dest/lmdb/singleton.d.ts.map +1 -0
- package/dest/lmdb/singleton.js +14 -13
- package/dest/lmdb/store.d.ts +110 -0
- package/dest/lmdb/store.d.ts.map +1 -0
- package/dest/lmdb/store.js +134 -124
- package/dest/lmdb-v2/factory.d.ts +9 -0
- package/dest/lmdb-v2/factory.d.ts.map +1 -0
- package/dest/lmdb-v2/factory.js +19 -22
- package/dest/lmdb-v2/index.d.ts +3 -0
- package/dest/lmdb-v2/index.d.ts.map +1 -0
- package/dest/lmdb-v2/index.js +1 -0
- package/dest/lmdb-v2/map.d.ts +86 -0
- package/dest/lmdb-v2/map.d.ts.map +1 -0
- package/dest/lmdb-v2/map.js +85 -82
- package/dest/lmdb-v2/message.d.ts +112 -0
- package/dest/lmdb-v2/message.d.ts.map +1 -0
- package/dest/lmdb-v2/message.js +7 -6
- package/dest/lmdb-v2/read_transaction.d.ts +14 -0
- package/dest/lmdb-v2/read_transaction.d.ts.map +1 -0
- package/dest/lmdb-v2/read_transaction.js +53 -65
- package/dest/lmdb-v2/singleton.d.ts +12 -0
- package/dest/lmdb-v2/singleton.d.ts.map +1 -0
- package/dest/lmdb-v2/singleton.js +5 -7
- package/dest/lmdb-v2/store.d.ts +43 -0
- package/dest/lmdb-v2/store.d.ts.map +1 -0
- package/dest/lmdb-v2/store.js +26 -27
- package/dest/lmdb-v2/utils.d.ts +19 -0
- package/dest/lmdb-v2/utils.d.ts.map +1 -0
- package/dest/lmdb-v2/utils.js +30 -30
- package/dest/lmdb-v2/write_transaction.d.ts +19 -0
- package/dest/lmdb-v2/write_transaction.d.ts.map +1 -0
- package/dest/lmdb-v2/write_transaction.js +110 -130
- package/dest/stores/index.d.ts +2 -0
- package/dest/stores/index.d.ts.map +1 -0
- package/dest/stores/index.js +1 -0
- package/dest/stores/l2_tips_store.d.ts +13 -0
- package/dest/stores/l2_tips_store.d.ts.map +1 -0
- package/dest/stores/l2_tips_store.js +12 -26
- package/dest/utils.d.ts +12 -0
- package/dest/utils.d.ts.map +1 -0
- package/dest/utils.js +7 -3
- package/package.json +6 -6
- package/src/interfaces/index.ts +1 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { Key, Range } from '../interfaces/common.js';
|
|
2
|
+
import type { AztecAsyncMap, AztecAsyncMultiMap } from '../interfaces/map.js';
|
|
3
|
+
import { type AztecLMDBStoreV2 } from './store.js';
|
|
4
|
+
export declare class LMDBMap<K extends Key, V> implements AztecAsyncMap<K, V> {
|
|
5
|
+
private store;
|
|
6
|
+
private prefix;
|
|
7
|
+
private encoder;
|
|
8
|
+
constructor(store: AztecLMDBStoreV2, name: string);
|
|
9
|
+
/**
|
|
10
|
+
* Sets the value at the given key.
|
|
11
|
+
* @param key - The key to set the value at
|
|
12
|
+
* @param val - The value to set
|
|
13
|
+
*/
|
|
14
|
+
set(key: K, val: V): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Sets the value at the given key if it does not already exist.
|
|
17
|
+
* @param key - The key to set the value at
|
|
18
|
+
* @param val - The value to set
|
|
19
|
+
*/
|
|
20
|
+
setIfNotExists(key: K, val: V): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Deletes the value at the given key.
|
|
23
|
+
* @param key - The key to delete the value at
|
|
24
|
+
*/
|
|
25
|
+
delete(key: K): Promise<void>;
|
|
26
|
+
getAsync(key: K): Promise<V | undefined>;
|
|
27
|
+
hasAsync(key: K): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Iterates over the map's key-value entries in the key's natural order
|
|
30
|
+
* @param range - The range of keys to iterate over
|
|
31
|
+
*/
|
|
32
|
+
entriesAsync(range?: Range<K>): AsyncIterableIterator<[K, V]>;
|
|
33
|
+
/**
|
|
34
|
+
* Iterates over the map's values in the key's natural order
|
|
35
|
+
* @param range - The range of keys to iterate over
|
|
36
|
+
*/
|
|
37
|
+
valuesAsync(range?: Range<K>): AsyncIterableIterator<V>;
|
|
38
|
+
/**
|
|
39
|
+
* Iterates over the map's keys in the key's natural order
|
|
40
|
+
* @param range - The range of keys to iterate over
|
|
41
|
+
*/
|
|
42
|
+
keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
43
|
+
}
|
|
44
|
+
export declare class LMDBMultiMap<K extends Key, V> implements AztecAsyncMultiMap<K, V> {
|
|
45
|
+
private store;
|
|
46
|
+
private prefix;
|
|
47
|
+
private encoder;
|
|
48
|
+
constructor(store: AztecLMDBStoreV2, name: string);
|
|
49
|
+
/**
|
|
50
|
+
* Sets the value at the given key.
|
|
51
|
+
* @param key - The key to set the value at
|
|
52
|
+
* @param val - The value to set
|
|
53
|
+
*/
|
|
54
|
+
set(key: K, val: V): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Sets the value at the given key if it does not already exist.
|
|
57
|
+
* @param key - The key to set the value at
|
|
58
|
+
* @param val - The value to set
|
|
59
|
+
*/
|
|
60
|
+
setIfNotExists(key: K, val: V): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Deletes the value at the given key.
|
|
63
|
+
* @param key - The key to delete the value at
|
|
64
|
+
*/
|
|
65
|
+
delete(key: K): Promise<void>;
|
|
66
|
+
getAsync(key: K): Promise<V | undefined>;
|
|
67
|
+
hasAsync(key: K): Promise<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Iterates over the map's key-value entries in the key's natural order
|
|
70
|
+
* @param range - The range of keys to iterate over
|
|
71
|
+
*/
|
|
72
|
+
entriesAsync(range?: Range<K>): AsyncIterableIterator<[K, V]>;
|
|
73
|
+
/**
|
|
74
|
+
* Iterates over the map's values in the key's natural order
|
|
75
|
+
* @param range - The range of keys to iterate over
|
|
76
|
+
*/
|
|
77
|
+
valuesAsync(range?: Range<K>): AsyncIterableIterator<V>;
|
|
78
|
+
/**
|
|
79
|
+
* Iterates over the map's keys in the key's natural order
|
|
80
|
+
* @param range - The range of keys to iterate over
|
|
81
|
+
*/
|
|
82
|
+
keysAsync(range?: Range<K>): AsyncIterableIterator<K>;
|
|
83
|
+
deleteValue(key: K, val: V | undefined): Promise<void>;
|
|
84
|
+
getValuesAsync(key: K): AsyncIterableIterator<V>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/map.ts"],"names":[],"mappings":"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"}
|
package/dest/lmdb-v2/map.js
CHANGED
|
@@ -2,29 +2,28 @@ import { Encoder } from 'msgpackr';
|
|
|
2
2
|
import { execInReadTx, execInWriteTx } from './store.js';
|
|
3
3
|
import { deserializeKey, maxKey, minKey, serializeKey } from './utils.js';
|
|
4
4
|
export class LMDBMap {
|
|
5
|
-
store
|
|
6
|
-
prefix;
|
|
7
|
-
encoder;
|
|
8
|
-
constructor(store, name){
|
|
5
|
+
constructor(store, name) {
|
|
9
6
|
this.store = store;
|
|
10
7
|
this.encoder = new Encoder();
|
|
11
8
|
this.prefix = `map:${name}`;
|
|
12
9
|
}
|
|
13
10
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
* Sets the value at the given key.
|
|
12
|
+
* @param key - The key to set the value at
|
|
13
|
+
* @param val - The value to set
|
|
14
|
+
*/
|
|
15
|
+
set(key, val) {
|
|
16
|
+
return execInWriteTx(this.store, tx => tx.set(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
19
17
|
}
|
|
20
18
|
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
* Sets the value at the given key if it does not already exist.
|
|
20
|
+
* @param key - The key to set the value at
|
|
21
|
+
* @param val - The value to set
|
|
22
|
+
*/
|
|
23
|
+
setIfNotExists(key, val) {
|
|
24
|
+
return execInWriteTx(this.store, async (tx) => {
|
|
26
25
|
const strKey = serializeKey(this.prefix, key);
|
|
27
|
-
const exists = !!await tx.get(strKey);
|
|
26
|
+
const exists = !!(await tx.get(strKey));
|
|
28
27
|
if (!exists) {
|
|
29
28
|
await tx.set(strKey, this.encoder.pack(val));
|
|
30
29
|
return true;
|
|
@@ -33,87 +32,88 @@ export class LMDBMap {
|
|
|
33
32
|
});
|
|
34
33
|
}
|
|
35
34
|
/**
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
* Deletes the value at the given key.
|
|
36
|
+
* @param key - The key to delete the value at
|
|
37
|
+
*/
|
|
38
|
+
delete(key) {
|
|
39
|
+
return execInWriteTx(this.store, tx => tx.remove(serializeKey(this.prefix, key)));
|
|
40
40
|
}
|
|
41
41
|
getAsync(key) {
|
|
42
|
-
return execInReadTx(this.store, async (tx)=>{
|
|
42
|
+
return execInReadTx(this.store, async (tx) => {
|
|
43
43
|
const val = await tx.get(serializeKey(this.prefix, key));
|
|
44
44
|
return val ? this.encoder.unpack(val) : undefined;
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
hasAsync(key) {
|
|
48
|
-
return execInReadTx(this.store, async (tx)
|
|
48
|
+
return execInReadTx(this.store, async (tx) => !!(await tx.get(serializeKey(this.prefix, key))));
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
* Iterates over the map's key-value entries in the key's natural order
|
|
52
|
+
* @param range - The range of keys to iterate over
|
|
53
|
+
*/
|
|
54
|
+
async *entriesAsync(range) {
|
|
54
55
|
const reverse = range?.reverse ?? false;
|
|
55
56
|
const startKey = range?.start ? serializeKey(this.prefix, range.start) : minKey(this.prefix);
|
|
56
57
|
const endKey = range?.end ? serializeKey(this.prefix, range.end) : reverse ? maxKey(this.prefix) : undefined;
|
|
57
58
|
let tx = this.store.getCurrentWriteTx();
|
|
58
59
|
const shouldClose = !tx;
|
|
59
|
-
tx
|
|
60
|
+
tx ?? (tx = this.store.getReadTx());
|
|
60
61
|
try {
|
|
61
|
-
for await (const [key, val] of tx.iterate(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit)){
|
|
62
|
+
for await (const [key, val] of tx.iterate(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit)) {
|
|
62
63
|
const deserializedKey = deserializeKey(this.prefix, key);
|
|
63
64
|
if (!deserializedKey) {
|
|
64
65
|
break;
|
|
65
66
|
}
|
|
66
|
-
yield [
|
|
67
|
-
deserializedKey,
|
|
68
|
-
this.encoder.unpack(val)
|
|
69
|
-
];
|
|
67
|
+
yield [deserializedKey, this.encoder.unpack(val)];
|
|
70
68
|
}
|
|
71
|
-
}
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
72
71
|
if (shouldClose) {
|
|
73
72
|
tx.close();
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
/**
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
* Iterates over the map's values in the key's natural order
|
|
78
|
+
* @param range - The range of keys to iterate over
|
|
79
|
+
*/
|
|
80
|
+
async *valuesAsync(range) {
|
|
81
|
+
for await (const [_, value] of this.entriesAsync(range)) {
|
|
82
82
|
yield value;
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
/**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
* Iterates over the map's keys in the key's natural order
|
|
87
|
+
* @param range - The range of keys to iterate over
|
|
88
|
+
*/
|
|
89
|
+
async *keysAsync(range) {
|
|
90
|
+
for await (const [key, _] of this.entriesAsync(range)) {
|
|
90
91
|
yield key;
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
export class LMDBMultiMap {
|
|
95
|
-
store
|
|
96
|
-
prefix;
|
|
97
|
-
encoder;
|
|
98
|
-
constructor(store, name){
|
|
96
|
+
constructor(store, name) {
|
|
99
97
|
this.store = store;
|
|
100
98
|
this.encoder = new Encoder();
|
|
101
99
|
this.prefix = `multimap:${name}`;
|
|
102
100
|
}
|
|
103
101
|
/**
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
102
|
+
* Sets the value at the given key.
|
|
103
|
+
* @param key - The key to set the value at
|
|
104
|
+
* @param val - The value to set
|
|
105
|
+
*/
|
|
106
|
+
set(key, val) {
|
|
107
|
+
return execInWriteTx(this.store, tx => tx.setIndex(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
109
108
|
}
|
|
110
109
|
/**
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
* Sets the value at the given key if it does not already exist.
|
|
111
|
+
* @param key - The key to set the value at
|
|
112
|
+
* @param val - The value to set
|
|
113
|
+
*/
|
|
114
|
+
setIfNotExists(key, val) {
|
|
115
|
+
return execInWriteTx(this.store, async (tx) => {
|
|
116
|
+
const exists = !!(await this.getAsync(key));
|
|
117
117
|
if (!exists) {
|
|
118
118
|
await tx.setIndex(serializeKey(this.prefix, key), this.encoder.pack(val));
|
|
119
119
|
return true;
|
|
@@ -122,72 +122,75 @@ export class LMDBMultiMap {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
* Deletes the value at the given key.
|
|
126
|
+
* @param key - The key to delete the value at
|
|
127
|
+
*/
|
|
128
|
+
delete(key) {
|
|
129
|
+
return execInWriteTx(this.store, tx => tx.removeIndex(serializeKey(this.prefix, key)));
|
|
129
130
|
}
|
|
130
131
|
getAsync(key) {
|
|
131
|
-
return execInReadTx(this.store, async (tx)=>{
|
|
132
|
+
return execInReadTx(this.store, async (tx) => {
|
|
132
133
|
const val = await tx.getIndex(serializeKey(this.prefix, key));
|
|
133
134
|
return val.length > 0 ? this.encoder.unpack(val[0]) : undefined;
|
|
134
135
|
});
|
|
135
136
|
}
|
|
136
137
|
hasAsync(key) {
|
|
137
|
-
return execInReadTx(this.store, async (tx)=>(await tx.getIndex(serializeKey(this.prefix, key))).length > 0);
|
|
138
|
+
return execInReadTx(this.store, async (tx) => (await tx.getIndex(serializeKey(this.prefix, key))).length > 0);
|
|
138
139
|
}
|
|
139
140
|
/**
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
* Iterates over the map's key-value entries in the key's natural order
|
|
142
|
+
* @param range - The range of keys to iterate over
|
|
143
|
+
*/
|
|
144
|
+
async *entriesAsync(range) {
|
|
143
145
|
const reverse = range?.reverse ?? false;
|
|
144
146
|
const startKey = range?.start ? serializeKey(this.prefix, range.start) : minKey(this.prefix);
|
|
145
147
|
const endKey = range?.end ? serializeKey(this.prefix, range.end) : reverse ? maxKey(this.prefix) : undefined;
|
|
146
148
|
let tx = this.store.getCurrentWriteTx();
|
|
147
149
|
const shouldClose = !tx;
|
|
148
|
-
tx
|
|
150
|
+
tx ?? (tx = this.store.getReadTx());
|
|
149
151
|
try {
|
|
150
|
-
for await (const [key, vals] of tx.iterateIndex(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit)){
|
|
152
|
+
for await (const [key, vals] of tx.iterateIndex(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit)) {
|
|
151
153
|
const deserializedKey = deserializeKey(this.prefix, key);
|
|
152
154
|
if (!deserializedKey) {
|
|
153
155
|
break;
|
|
154
156
|
}
|
|
155
|
-
for (const val of vals){
|
|
156
|
-
yield [
|
|
157
|
-
deserializedKey,
|
|
158
|
-
this.encoder.unpack(val)
|
|
159
|
-
];
|
|
157
|
+
for (const val of vals) {
|
|
158
|
+
yield [deserializedKey, this.encoder.unpack(val)];
|
|
160
159
|
}
|
|
161
160
|
}
|
|
162
|
-
}
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
163
|
if (shouldClose) {
|
|
164
164
|
tx.close();
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
/**
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
169
|
+
* Iterates over the map's values in the key's natural order
|
|
170
|
+
* @param range - The range of keys to iterate over
|
|
171
|
+
*/
|
|
172
|
+
async *valuesAsync(range) {
|
|
173
|
+
for await (const [_, value] of this.entriesAsync(range)) {
|
|
173
174
|
yield value;
|
|
174
175
|
}
|
|
175
176
|
}
|
|
176
177
|
/**
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
* Iterates over the map's keys in the key's natural order
|
|
179
|
+
* @param range - The range of keys to iterate over
|
|
180
|
+
*/
|
|
181
|
+
async *keysAsync(range) {
|
|
182
|
+
for await (const [key, _] of this.entriesAsync(range)) {
|
|
181
183
|
yield key;
|
|
182
184
|
}
|
|
183
185
|
}
|
|
184
186
|
deleteValue(key, val) {
|
|
185
|
-
return execInWriteTx(this.store,
|
|
187
|
+
return execInWriteTx(this.store, tx => tx.removeIndex(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
186
188
|
}
|
|
187
189
|
async *getValuesAsync(key) {
|
|
188
|
-
const values = await execInReadTx(this.store,
|
|
189
|
-
for (const value of values){
|
|
190
|
+
const values = await execInReadTx(this.store, tx => tx.getIndex(serializeKey(this.prefix, key)));
|
|
191
|
+
for (const value of values) {
|
|
190
192
|
yield this.encoder.unpack(value);
|
|
191
193
|
}
|
|
192
194
|
}
|
|
193
195
|
}
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLbkMsT0FBTyxFQUF5QixZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUUsTUFBTSxPQUFPLE9BQU87SUFJbEIsWUFBb0IsS0FBdUIsRUFBRSxJQUFZO1FBQXJDLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBRm5DLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFNLEVBQUUsR0FBTTtRQUNoQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsR0FBTSxFQUFFLEdBQU07UUFDM0IsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFDLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsR0FBTTtRQUNYLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQU07UUFDYixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFFLEVBQUMsRUFBRTtZQUN6QyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6RCxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBTTtRQUNiLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBZ0I7UUFDbEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDeEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdGLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFN0csSUFBSSxFQUFFLEdBQWdDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNyRSxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixFQUFFLEtBQUYsRUFBRSxHQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUM7UUFFOUIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUN2QyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUM1QixPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUMzQixPQUFPLEVBQ1AsS0FBSyxFQUFFLEtBQUssQ0FDYixFQUFFLENBQUM7Z0JBQ0YsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDckIsTUFBTTtnQkFDUixDQUFDO2dCQUNELE1BQU0sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQWdCO1FBQ2pDLElBQUksS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBZ0I7UUFDL0IsSUFBSSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFlBQVk7SUFHdkIsWUFBb0IsS0FBdUIsRUFBRSxJQUFZO1FBQXJDLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBRG5DLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFNLEVBQUUsR0FBTTtRQUNoQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsR0FBTSxFQUFFLEdBQU07UUFDM0IsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFDLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNaLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxHQUFNO1FBQ1gsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBTTtRQUNiLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFDLEVBQUUsRUFBQyxFQUFFO1lBQ3pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzlELE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQU07UUFDYixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFnQjtRQUNsQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQztRQUN4QyxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0YsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUU3RyxJQUFJLEVBQUUsR0FBZ0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLEVBQUUsS0FBRixFQUFFLEdBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBQztRQUU5QixJQUFJLENBQUM7WUFDSCxJQUFJLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQzdDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQzVCLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQzNCLE9BQU8sRUFDUCxLQUFLLEVBQUUsS0FBSyxDQUNiLEVBQUUsQ0FBQztnQkFDRixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNyQixNQUFNO2dCQUNSLENBQUM7Z0JBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDdkIsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNwRCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFnQjtRQUNqQyxJQUFJLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQWdCO1FBQy9CLElBQUksS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsR0FBTSxFQUFFLEdBQWtCO1FBQ3BDLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqSCxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQU07UUFDMUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pHLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
export declare enum Database {
|
|
2
|
+
DATA = "data",
|
|
3
|
+
INDEX = "index"
|
|
4
|
+
}
|
|
5
|
+
export declare const CURSOR_PAGE_SIZE = 10;
|
|
6
|
+
export declare enum LMDBMessageType {
|
|
7
|
+
OPEN_DATABASE = 100,
|
|
8
|
+
GET = 101,
|
|
9
|
+
HAS = 102,
|
|
10
|
+
START_CURSOR = 103,
|
|
11
|
+
ADVANCE_CURSOR = 104,
|
|
12
|
+
CLOSE_CURSOR = 105,
|
|
13
|
+
BATCH = 106,
|
|
14
|
+
STATS = 107,
|
|
15
|
+
CLOSE = 108
|
|
16
|
+
}
|
|
17
|
+
type Key = Uint8Array;
|
|
18
|
+
type Value = Uint8Array;
|
|
19
|
+
type OptionalValues = Array<Value[] | null>;
|
|
20
|
+
type KeyOptionalValues = [Key, null | Array<Value>];
|
|
21
|
+
type KeyValues = [Key, Value[]];
|
|
22
|
+
interface OpenDatabaseRequest {
|
|
23
|
+
db: string;
|
|
24
|
+
uniqueKeys?: boolean;
|
|
25
|
+
}
|
|
26
|
+
interface GetRequest {
|
|
27
|
+
keys: Key[];
|
|
28
|
+
db: string;
|
|
29
|
+
}
|
|
30
|
+
interface GetResponse {
|
|
31
|
+
values: OptionalValues;
|
|
32
|
+
}
|
|
33
|
+
interface HasRequest {
|
|
34
|
+
entries: KeyOptionalValues[];
|
|
35
|
+
db: string;
|
|
36
|
+
}
|
|
37
|
+
interface StartCursorRequest {
|
|
38
|
+
key: Key;
|
|
39
|
+
reverse: boolean;
|
|
40
|
+
count: number | null;
|
|
41
|
+
onePage: boolean | null;
|
|
42
|
+
db: string;
|
|
43
|
+
}
|
|
44
|
+
interface AdvanceCursorRequest {
|
|
45
|
+
cursor: number;
|
|
46
|
+
count: number | null;
|
|
47
|
+
}
|
|
48
|
+
interface CloseCursorRequest {
|
|
49
|
+
cursor: number;
|
|
50
|
+
}
|
|
51
|
+
export interface Batch {
|
|
52
|
+
addEntries: Array<KeyValues>;
|
|
53
|
+
removeEntries: Array<KeyOptionalValues>;
|
|
54
|
+
}
|
|
55
|
+
interface BatchRequest {
|
|
56
|
+
batches: Map<string, Batch>;
|
|
57
|
+
}
|
|
58
|
+
export type LMDBRequestBody = {
|
|
59
|
+
[LMDBMessageType.OPEN_DATABASE]: OpenDatabaseRequest;
|
|
60
|
+
[LMDBMessageType.GET]: GetRequest;
|
|
61
|
+
[LMDBMessageType.HAS]: HasRequest;
|
|
62
|
+
[LMDBMessageType.START_CURSOR]: StartCursorRequest;
|
|
63
|
+
[LMDBMessageType.ADVANCE_CURSOR]: AdvanceCursorRequest;
|
|
64
|
+
[LMDBMessageType.CLOSE_CURSOR]: CloseCursorRequest;
|
|
65
|
+
[LMDBMessageType.BATCH]: BatchRequest;
|
|
66
|
+
[LMDBMessageType.STATS]: void;
|
|
67
|
+
[LMDBMessageType.CLOSE]: void;
|
|
68
|
+
};
|
|
69
|
+
interface GetResponse {
|
|
70
|
+
values: OptionalValues;
|
|
71
|
+
}
|
|
72
|
+
interface HasResponse {
|
|
73
|
+
exists: boolean[];
|
|
74
|
+
}
|
|
75
|
+
interface StartCursorResponse {
|
|
76
|
+
cursor: number | null;
|
|
77
|
+
entries: Array<KeyValues>;
|
|
78
|
+
}
|
|
79
|
+
interface AdvanceCursorResponse {
|
|
80
|
+
entries: Array<KeyValues>;
|
|
81
|
+
done: boolean;
|
|
82
|
+
}
|
|
83
|
+
interface BatchResponse {
|
|
84
|
+
durationNs: number;
|
|
85
|
+
}
|
|
86
|
+
interface BoolResponse {
|
|
87
|
+
ok: true;
|
|
88
|
+
}
|
|
89
|
+
interface StatsResponse {
|
|
90
|
+
stats: Array<{
|
|
91
|
+
name: string;
|
|
92
|
+
numDataItems: bigint | number;
|
|
93
|
+
totalUsedSize: bigint | number;
|
|
94
|
+
}>;
|
|
95
|
+
dbMapSizeBytes: bigint | number;
|
|
96
|
+
}
|
|
97
|
+
export type LMDBResponseBody = {
|
|
98
|
+
[LMDBMessageType.OPEN_DATABASE]: BoolResponse;
|
|
99
|
+
[LMDBMessageType.GET]: GetResponse;
|
|
100
|
+
[LMDBMessageType.HAS]: HasResponse;
|
|
101
|
+
[LMDBMessageType.START_CURSOR]: StartCursorResponse;
|
|
102
|
+
[LMDBMessageType.ADVANCE_CURSOR]: AdvanceCursorResponse;
|
|
103
|
+
[LMDBMessageType.CLOSE_CURSOR]: BoolResponse;
|
|
104
|
+
[LMDBMessageType.BATCH]: BatchResponse;
|
|
105
|
+
[LMDBMessageType.STATS]: StatsResponse;
|
|
106
|
+
[LMDBMessageType.CLOSE]: BoolResponse;
|
|
107
|
+
};
|
|
108
|
+
export interface LMDBMessageChannel {
|
|
109
|
+
sendMessage<T extends LMDBMessageType>(msgType: T, body: LMDBRequestBody[T]): Promise<LMDBResponseBody[T]>;
|
|
110
|
+
}
|
|
111
|
+
export {};
|
|
112
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/message.ts"],"names":[],"mappings":"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"}
|
package/dest/lmdb-v2/message.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export var Database
|
|
1
|
+
export var Database;
|
|
2
|
+
(function (Database) {
|
|
2
3
|
Database["DATA"] = "data";
|
|
3
4
|
Database["INDEX"] = "index";
|
|
4
|
-
|
|
5
|
-
}({});
|
|
5
|
+
})(Database || (Database = {}));
|
|
6
6
|
export const CURSOR_PAGE_SIZE = 10;
|
|
7
|
-
export var LMDBMessageType
|
|
7
|
+
export var LMDBMessageType;
|
|
8
|
+
(function (LMDBMessageType) {
|
|
8
9
|
LMDBMessageType[LMDBMessageType["OPEN_DATABASE"] = 100] = "OPEN_DATABASE";
|
|
9
10
|
LMDBMessageType[LMDBMessageType["GET"] = 101] = "GET";
|
|
10
11
|
LMDBMessageType[LMDBMessageType["HAS"] = 102] = "HAS";
|
|
@@ -14,5 +15,5 @@ export var LMDBMessageType = /*#__PURE__*/ function(LMDBMessageType) {
|
|
|
14
15
|
LMDBMessageType[LMDBMessageType["BATCH"] = 106] = "BATCH";
|
|
15
16
|
LMDBMessageType[LMDBMessageType["STATS"] = 107] = "STATS";
|
|
16
17
|
LMDBMessageType[LMDBMessageType["CLOSE"] = 108] = "CLOSE";
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
})(LMDBMessageType || (LMDBMessageType = {}));
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL21lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksUUFHWDtBQUhELFdBQVksUUFBUTtJQUNsQix5QkFBYSxDQUFBO0lBQ2IsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkI7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxDQUFOLElBQVksZUFjWDtBQWRELFdBQVksZUFBZTtJQUN6Qix5RUFBbUIsQ0FBQTtJQUNuQixxREFBRyxDQUFBO0lBQ0gscURBQUcsQ0FBQTtJQUVILHVFQUFZLENBQUE7SUFDWiwyRUFBYyxDQUFBO0lBQ2QsdUVBQVksQ0FBQTtJQUVaLHlEQUFLLENBQUE7SUFFTCx5REFBSyxDQUFBO0lBRUwseURBQUssQ0FBQTtBQUNQLENBQUMsRUFkVyxlQUFlLEtBQWYsZUFBZSxRQWMxQiJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type LMDBMessageChannel } from './message.js';
|
|
2
|
+
export declare class ReadTransaction {
|
|
3
|
+
#private;
|
|
4
|
+
protected channel: LMDBMessageChannel;
|
|
5
|
+
protected open: boolean;
|
|
6
|
+
constructor(channel: LMDBMessageChannel);
|
|
7
|
+
close(): void;
|
|
8
|
+
protected assertIsOpen(): void;
|
|
9
|
+
get(key: Uint8Array): Promise<Uint8Array | undefined>;
|
|
10
|
+
getIndex(key: Uint8Array): Promise<Uint8Array[]>;
|
|
11
|
+
iterate(startKey: Uint8Array, endKey?: Uint8Array, reverse?: boolean, limit?: number): AsyncIterable<[Uint8Array, Uint8Array]>;
|
|
12
|
+
iterateIndex(startKey: Uint8Array, endKey?: Uint8Array, reverse?: boolean, limit?: number): AsyncIterable<[Uint8Array, Uint8Array[]]>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=read_transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read_transaction.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/read_transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,kBAAkB,EAAmB,MAAM,cAAc,CAAC;AAEpG,qBAAa,eAAe;;IAGd,SAAS,CAAC,OAAO,EAAE,kBAAkB;IAFjD,SAAS,CAAC,IAAI,UAAQ;gBAEA,OAAO,EAAE,kBAAkB;IAE1C,KAAK,IAAI,IAAI;IAOpB,SAAS,CAAC,YAAY;IAMT,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAMrD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAM/C,OAAO,CACnB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,UAAQ,EACf,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAI5B,YAAY,CACxB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,UAAQ,EACf,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;CAqE7C"}
|