@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
package/dest/lmdb-v2/map.js
CHANGED
|
@@ -2,28 +2,29 @@ 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
|
-
|
|
5
|
+
store;
|
|
6
|
+
prefix;
|
|
7
|
+
encoder;
|
|
8
|
+
constructor(store, name){
|
|
6
9
|
this.store = store;
|
|
7
10
|
this.encoder = new Encoder();
|
|
8
11
|
this.prefix = `map:${name}`;
|
|
9
12
|
}
|
|
10
13
|
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return execInWriteTx(this.store, tx => tx.set(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
14
|
+
* Sets the value at the given key.
|
|
15
|
+
* @param key - The key to set the value at
|
|
16
|
+
* @param val - The value to set
|
|
17
|
+
*/ set(key, val) {
|
|
18
|
+
return execInWriteTx(this.store, (tx)=>tx.set(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return execInWriteTx(this.store, async (tx) => {
|
|
21
|
+
* Sets the value at the given key if it does not already exist.
|
|
22
|
+
* @param key - The key to set the value at
|
|
23
|
+
* @param val - The value to set
|
|
24
|
+
*/ setIfNotExists(key, val) {
|
|
25
|
+
return execInWriteTx(this.store, async (tx)=>{
|
|
25
26
|
const strKey = serializeKey(this.prefix, key);
|
|
26
|
-
const exists = !!
|
|
27
|
+
const exists = !!await tx.get(strKey);
|
|
27
28
|
if (!exists) {
|
|
28
29
|
await tx.set(strKey, this.encoder.pack(val));
|
|
29
30
|
return true;
|
|
@@ -32,88 +33,87 @@ export class LMDBMap {
|
|
|
32
33
|
});
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return execInWriteTx(this.store, tx => tx.remove(serializeKey(this.prefix, key)));
|
|
36
|
+
* Deletes the value at the given key.
|
|
37
|
+
* @param key - The key to delete the value at
|
|
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
|
-
|
|
54
|
-
async *entriesAsync(range) {
|
|
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
|
+
*/ async *entriesAsync(range) {
|
|
55
54
|
const reverse = range?.reverse ?? false;
|
|
56
55
|
const startKey = range?.start ? serializeKey(this.prefix, range.start) : minKey(this.prefix);
|
|
57
56
|
const endKey = range?.end ? serializeKey(this.prefix, range.end) : reverse ? maxKey(this.prefix) : undefined;
|
|
58
57
|
let tx = this.store.getCurrentWriteTx();
|
|
59
58
|
const shouldClose = !tx;
|
|
60
|
-
tx
|
|
59
|
+
tx ??= this.store.getReadTx();
|
|
61
60
|
try {
|
|
62
|
-
for await (const [key, val] of tx.iterate(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit))
|
|
61
|
+
for await (const [key, val] of tx.iterate(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit)){
|
|
63
62
|
const deserializedKey = deserializeKey(this.prefix, key);
|
|
64
63
|
if (!deserializedKey) {
|
|
65
64
|
break;
|
|
66
65
|
}
|
|
67
|
-
yield [
|
|
66
|
+
yield [
|
|
67
|
+
deserializedKey,
|
|
68
|
+
this.encoder.unpack(val)
|
|
69
|
+
];
|
|
68
70
|
}
|
|
69
|
-
}
|
|
70
|
-
finally {
|
|
71
|
+
} finally{
|
|
71
72
|
if (shouldClose) {
|
|
72
73
|
tx.close();
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
for await (const [_, value] of this.entriesAsync(range)) {
|
|
78
|
+
* Iterates over the map's values in the key's natural order
|
|
79
|
+
* @param range - The range of keys to iterate over
|
|
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
|
-
|
|
90
|
-
for await (const [key, _] of this.entriesAsync(range)) {
|
|
86
|
+
* Iterates over the map's keys in the key's natural order
|
|
87
|
+
* @param range - The range of keys to iterate over
|
|
88
|
+
*/ async *keysAsync(range) {
|
|
89
|
+
for await (const [key, _] of this.entriesAsync(range)){
|
|
91
90
|
yield key;
|
|
92
91
|
}
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
94
|
export class LMDBMultiMap {
|
|
96
|
-
|
|
95
|
+
store;
|
|
96
|
+
prefix;
|
|
97
|
+
encoder;
|
|
98
|
+
constructor(store, name){
|
|
97
99
|
this.store = store;
|
|
98
100
|
this.encoder = new Encoder();
|
|
99
101
|
this.prefix = `multimap:${name}`;
|
|
100
102
|
}
|
|
101
103
|
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return execInWriteTx(this.store, tx => tx.setIndex(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
104
|
+
* Sets the value at the given key.
|
|
105
|
+
* @param key - The key to set the value at
|
|
106
|
+
* @param val - The value to set
|
|
107
|
+
*/ set(key, val) {
|
|
108
|
+
return execInWriteTx(this.store, (tx)=>tx.setIndex(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
108
109
|
}
|
|
109
110
|
/**
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
const exists = !!(await this.getAsync(key));
|
|
111
|
+
* Sets the value at the given key if it does not already exist.
|
|
112
|
+
* @param key - The key to set the value at
|
|
113
|
+
* @param val - The value to set
|
|
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,75 +122,72 @@ export class LMDBMultiMap {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
return execInWriteTx(this.store, tx => tx.removeIndex(serializeKey(this.prefix, key)));
|
|
125
|
+
* Deletes the value at the given key.
|
|
126
|
+
* @param key - The key to delete the value at
|
|
127
|
+
*/ delete(key) {
|
|
128
|
+
return execInWriteTx(this.store, (tx)=>tx.removeIndex(serializeKey(this.prefix, key)));
|
|
130
129
|
}
|
|
131
130
|
getAsync(key) {
|
|
132
|
-
return execInReadTx(this.store, async (tx)
|
|
131
|
+
return execInReadTx(this.store, async (tx)=>{
|
|
133
132
|
const val = await tx.getIndex(serializeKey(this.prefix, key));
|
|
134
133
|
return val.length > 0 ? this.encoder.unpack(val[0]) : undefined;
|
|
135
134
|
});
|
|
136
135
|
}
|
|
137
136
|
hasAsync(key) {
|
|
138
|
-
return execInReadTx(this.store, async (tx)
|
|
137
|
+
return execInReadTx(this.store, async (tx)=>(await tx.getIndex(serializeKey(this.prefix, key))).length > 0);
|
|
139
138
|
}
|
|
140
139
|
/**
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
async *entriesAsync(range) {
|
|
140
|
+
* Iterates over the map's key-value entries in the key's natural order
|
|
141
|
+
* @param range - The range of keys to iterate over
|
|
142
|
+
*/ async *entriesAsync(range) {
|
|
145
143
|
const reverse = range?.reverse ?? false;
|
|
146
144
|
const startKey = range?.start ? serializeKey(this.prefix, range.start) : minKey(this.prefix);
|
|
147
145
|
const endKey = range?.end ? serializeKey(this.prefix, range.end) : reverse ? maxKey(this.prefix) : undefined;
|
|
148
146
|
let tx = this.store.getCurrentWriteTx();
|
|
149
147
|
const shouldClose = !tx;
|
|
150
|
-
tx
|
|
148
|
+
tx ??= this.store.getReadTx();
|
|
151
149
|
try {
|
|
152
|
-
for await (const [key, vals] of tx.iterateIndex(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit))
|
|
150
|
+
for await (const [key, vals] of tx.iterateIndex(reverse ? endKey : startKey, reverse ? startKey : endKey, reverse, range?.limit)){
|
|
153
151
|
const deserializedKey = deserializeKey(this.prefix, key);
|
|
154
152
|
if (!deserializedKey) {
|
|
155
153
|
break;
|
|
156
154
|
}
|
|
157
|
-
for (const val of vals)
|
|
158
|
-
yield [
|
|
155
|
+
for (const val of vals){
|
|
156
|
+
yield [
|
|
157
|
+
deserializedKey,
|
|
158
|
+
this.encoder.unpack(val)
|
|
159
|
+
];
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
|
-
}
|
|
162
|
-
finally {
|
|
162
|
+
} finally{
|
|
163
163
|
if (shouldClose) {
|
|
164
164
|
tx.close();
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
/**
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
for await (const [_, value] of this.entriesAsync(range)) {
|
|
169
|
+
* Iterates over the map's values in the key's natural order
|
|
170
|
+
* @param range - The range of keys to iterate over
|
|
171
|
+
*/ async *valuesAsync(range) {
|
|
172
|
+
for await (const [_, value] of this.entriesAsync(range)){
|
|
174
173
|
yield value;
|
|
175
174
|
}
|
|
176
175
|
}
|
|
177
176
|
/**
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
for await (const [key, _] of this.entriesAsync(range)) {
|
|
177
|
+
* Iterates over the map's keys in the key's natural order
|
|
178
|
+
* @param range - The range of keys to iterate over
|
|
179
|
+
*/ async *keysAsync(range) {
|
|
180
|
+
for await (const [key, _] of this.entriesAsync(range)){
|
|
183
181
|
yield key;
|
|
184
182
|
}
|
|
185
183
|
}
|
|
186
184
|
deleteValue(key, val) {
|
|
187
|
-
return execInWriteTx(this.store, tx
|
|
185
|
+
return execInWriteTx(this.store, (tx)=>tx.removeIndex(serializeKey(this.prefix, key), this.encoder.pack(val)));
|
|
188
186
|
}
|
|
189
187
|
async *getValuesAsync(key) {
|
|
190
|
-
const values = await execInReadTx(this.store, tx
|
|
191
|
-
for (const value of values)
|
|
188
|
+
const values = await execInReadTx(this.store, (tx)=>tx.getIndex(serializeKey(this.prefix, key)));
|
|
189
|
+
for (const value of values){
|
|
192
190
|
yield this.encoder.unpack(value);
|
|
193
191
|
}
|
|
194
192
|
}
|
|
195
193
|
}
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLbkMsT0FBTyxFQUF5QixZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUUsTUFBTSxPQUFPLE9BQU87SUFJbEIsWUFBb0IsS0FBdUIsRUFBRSxJQUFZO1FBQXJDLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBRm5DLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxHQUFNLEVBQUUsR0FBTTtRQUNoQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsR0FBTSxFQUFFLEdBQU07UUFDM0IsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFDLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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
|
package/dest/lmdb-v2/message.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
export var Database
|
|
2
|
-
(function (Database) {
|
|
1
|
+
export var Database = /*#__PURE__*/ function(Database) {
|
|
3
2
|
Database["DATA"] = "data";
|
|
4
3
|
Database["INDEX"] = "index";
|
|
5
|
-
|
|
4
|
+
return Database;
|
|
5
|
+
}({});
|
|
6
6
|
export const CURSOR_PAGE_SIZE = 10;
|
|
7
|
-
export var LMDBMessageType
|
|
8
|
-
(function (LMDBMessageType) {
|
|
7
|
+
export var LMDBMessageType = /*#__PURE__*/ function(LMDBMessageType) {
|
|
9
8
|
LMDBMessageType[LMDBMessageType["OPEN_DATABASE"] = 100] = "OPEN_DATABASE";
|
|
10
9
|
LMDBMessageType[LMDBMessageType["GET"] = 101] = "GET";
|
|
11
10
|
LMDBMessageType[LMDBMessageType["HAS"] = 102] = "HAS";
|
|
@@ -15,5 +14,5 @@ export var LMDBMessageType;
|
|
|
15
14
|
LMDBMessageType[LMDBMessageType["BATCH"] = 106] = "BATCH";
|
|
16
15
|
LMDBMessageType[LMDBMessageType["STATS"] = 107] = "STATS";
|
|
17
16
|
LMDBMessageType[LMDBMessageType["CLOSE"] = 108] = "CLOSE";
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
return LMDBMessageType;
|
|
18
|
+
}({});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
var _ReadTransaction_instances, _ReadTransaction_iterate;
|
|
2
|
-
import { __classPrivateFieldGet } from "tslib";
|
|
3
1
|
import { CURSOR_PAGE_SIZE, Database, LMDBMessageType } from './message.js';
|
|
4
2
|
export class ReadTransaction {
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
channel;
|
|
4
|
+
open;
|
|
5
|
+
constructor(channel){
|
|
7
6
|
this.channel = channel;
|
|
8
7
|
this.open = true;
|
|
9
8
|
}
|
|
@@ -20,70 +19,83 @@ export class ReadTransaction {
|
|
|
20
19
|
}
|
|
21
20
|
async get(key) {
|
|
22
21
|
this.assertIsOpen();
|
|
23
|
-
const response = await this.channel.sendMessage(LMDBMessageType.GET, {
|
|
22
|
+
const response = await this.channel.sendMessage(LMDBMessageType.GET, {
|
|
23
|
+
keys: [
|
|
24
|
+
key
|
|
25
|
+
],
|
|
26
|
+
db: Database.DATA
|
|
27
|
+
});
|
|
24
28
|
return response.values[0]?.[0] ?? undefined;
|
|
25
29
|
}
|
|
26
30
|
async getIndex(key) {
|
|
27
31
|
this.assertIsOpen();
|
|
28
|
-
const response = await this.channel.sendMessage(LMDBMessageType.GET, {
|
|
32
|
+
const response = await this.channel.sendMessage(LMDBMessageType.GET, {
|
|
33
|
+
keys: [
|
|
34
|
+
key
|
|
35
|
+
],
|
|
36
|
+
db: Database.INDEX
|
|
37
|
+
});
|
|
29
38
|
return response.values[0] ?? [];
|
|
30
39
|
}
|
|
31
40
|
async *iterate(startKey, endKey, reverse = false, limit) {
|
|
32
|
-
yield*
|
|
41
|
+
yield* this.#iterate(Database.DATA, startKey, endKey, reverse, limit, (vals)=>vals[0]);
|
|
33
42
|
}
|
|
34
43
|
async *iterateIndex(startKey, endKey, reverse = false, limit) {
|
|
35
|
-
yield*
|
|
44
|
+
yield* this.#iterate(Database.INDEX, startKey, endKey, reverse, limit, (vals)=>vals);
|
|
36
45
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (typeof limit === 'number' && count >= limit) {
|
|
57
|
-
done = true;
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
if (endKey) {
|
|
61
|
-
const cmp = Buffer.compare(key, endKey);
|
|
62
|
-
if ((!reverse && cmp >= 0) || (reverse && cmp <= 0)) {
|
|
46
|
+
async *#iterate(db, startKey, endKey, reverse, limit, map) {
|
|
47
|
+
this.assertIsOpen();
|
|
48
|
+
const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
|
|
49
|
+
key: startKey,
|
|
50
|
+
reverse,
|
|
51
|
+
count: typeof limit === 'number' ? Math.min(limit, CURSOR_PAGE_SIZE) : CURSOR_PAGE_SIZE,
|
|
52
|
+
onePage: typeof limit === 'number' && limit < CURSOR_PAGE_SIZE,
|
|
53
|
+
db
|
|
54
|
+
});
|
|
55
|
+
const cursor = response.cursor;
|
|
56
|
+
let entries = response.entries;
|
|
57
|
+
let done = typeof cursor !== 'number';
|
|
58
|
+
let count = 0;
|
|
59
|
+
try {
|
|
60
|
+
// emit the first page and any subsequent pages in a while loop
|
|
61
|
+
// NB: end contition is in the middle of the while loop
|
|
62
|
+
while(entries.length > 0){
|
|
63
|
+
for (const [key, values] of entries){
|
|
64
|
+
if (typeof limit === 'number' && count >= limit) {
|
|
63
65
|
done = true;
|
|
64
66
|
break;
|
|
65
67
|
}
|
|
68
|
+
if (endKey) {
|
|
69
|
+
const cmp = Buffer.compare(key, endKey);
|
|
70
|
+
if (!reverse && cmp >= 0 || reverse && cmp <= 0) {
|
|
71
|
+
done = true;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
count++;
|
|
76
|
+
yield [
|
|
77
|
+
key,
|
|
78
|
+
map(values)
|
|
79
|
+
];
|
|
66
80
|
}
|
|
67
|
-
|
|
68
|
-
|
|
81
|
+
// cursor is null if DB returned everything in the first page
|
|
82
|
+
if (typeof cursor !== 'number' || done) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
const response = await this.channel.sendMessage(LMDBMessageType.ADVANCE_CURSOR, {
|
|
86
|
+
cursor,
|
|
87
|
+
count: CURSOR_PAGE_SIZE
|
|
88
|
+
});
|
|
89
|
+
done = response.done;
|
|
90
|
+
entries = response.entries;
|
|
69
91
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
92
|
+
} finally{
|
|
93
|
+
// we might not have anything to close
|
|
94
|
+
if (typeof cursor === 'number') {
|
|
95
|
+
await this.channel.sendMessage(LMDBMessageType.CLOSE_CURSOR, {
|
|
96
|
+
cursor
|
|
97
|
+
});
|
|
73
98
|
}
|
|
74
|
-
const response = await this.channel.sendMessage(LMDBMessageType.ADVANCE_CURSOR, {
|
|
75
|
-
cursor,
|
|
76
|
-
count: CURSOR_PAGE_SIZE,
|
|
77
|
-
});
|
|
78
|
-
done = response.done;
|
|
79
|
-
entries = response.entries;
|
|
80
99
|
}
|
|
81
100
|
}
|
|
82
|
-
|
|
83
|
-
// we might not have anything to close
|
|
84
|
-
if (typeof cursor === 'number') {
|
|
85
|
-
await this.channel.sendMessage(LMDBMessageType.CLOSE_CURSOR, { cursor });
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZF90cmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL3JlYWRfdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUEyQixlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFcEcsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFBc0IsT0FBMkI7O1FBQTNCLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBRnZDLFNBQUksR0FBRyxJQUFJLENBQUM7SUFFOEIsQ0FBQztJQUU5QyxLQUFLO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVTLFlBQVk7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUMzQyxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBZTtRQUM5QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pHLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFlO1FBQ25DLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixN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
|
|
101
|
+
}
|
|
@@ -2,28 +2,30 @@ import { Encoder } from 'msgpackr';
|
|
|
2
2
|
import { execInReadTx, execInWriteTx } from './store.js';
|
|
3
3
|
import { serializeKey } from './utils.js';
|
|
4
4
|
export class LMDBSingleValue {
|
|
5
|
-
|
|
5
|
+
store;
|
|
6
|
+
key;
|
|
7
|
+
encoder;
|
|
8
|
+
constructor(store, name){
|
|
6
9
|
this.store = store;
|
|
7
10
|
this.encoder = new Encoder();
|
|
8
11
|
this.key = serializeKey(`singleton:${name}`, 'value');
|
|
9
12
|
}
|
|
10
13
|
getAsync() {
|
|
11
|
-
return execInReadTx(this.store, async (tx)
|
|
14
|
+
return execInReadTx(this.store, async (tx)=>{
|
|
12
15
|
const val = await tx.get(this.key);
|
|
13
16
|
return val ? this.encoder.unpack(val) : undefined;
|
|
14
17
|
});
|
|
15
18
|
}
|
|
16
19
|
set(val) {
|
|
17
|
-
return execInWriteTx(this.store, async (tx)
|
|
20
|
+
return execInWriteTx(this.store, async (tx)=>{
|
|
18
21
|
await tx.set(this.key, this.encoder.pack(val));
|
|
19
22
|
return true;
|
|
20
23
|
});
|
|
21
24
|
}
|
|
22
25
|
delete() {
|
|
23
|
-
return execInWriteTx(this.store, async (tx)
|
|
26
|
+
return execInWriteTx(this.store, async (tx)=>{
|
|
24
27
|
await tx.remove(this.key);
|
|
25
28
|
return true;
|
|
26
29
|
});
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvc2luZ2xldG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHbkMsT0FBTyxFQUF5QixZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUMsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFBb0IsS0FBdUIsRUFBRSxJQUFZO1FBQXJDLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBRG5DLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFFLEVBQUMsRUFBRTtZQUN6QyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFNO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFDLEVBQUU7WUFDMUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFFLEVBQUMsRUFBRTtZQUMxQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
|