@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
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
var _ReadTransaction_instances, _ReadTransaction_iterate;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
1
3
|
import { CURSOR_PAGE_SIZE, Database, LMDBMessageType } from './message.js';
|
|
2
4
|
export class ReadTransaction {
|
|
3
|
-
channel
|
|
4
|
-
|
|
5
|
-
constructor(channel){
|
|
5
|
+
constructor(channel) {
|
|
6
|
+
_ReadTransaction_instances.add(this);
|
|
6
7
|
this.channel = channel;
|
|
7
8
|
this.open = true;
|
|
8
9
|
}
|
|
@@ -19,83 +20,70 @@ export class ReadTransaction {
|
|
|
19
20
|
}
|
|
20
21
|
async get(key) {
|
|
21
22
|
this.assertIsOpen();
|
|
22
|
-
const response = await this.channel.sendMessage(LMDBMessageType.GET, {
|
|
23
|
-
keys: [
|
|
24
|
-
key
|
|
25
|
-
],
|
|
26
|
-
db: Database.DATA
|
|
27
|
-
});
|
|
23
|
+
const response = await this.channel.sendMessage(LMDBMessageType.GET, { keys: [key], db: Database.DATA });
|
|
28
24
|
return response.values[0]?.[0] ?? undefined;
|
|
29
25
|
}
|
|
30
26
|
async getIndex(key) {
|
|
31
27
|
this.assertIsOpen();
|
|
32
|
-
const response = await this.channel.sendMessage(LMDBMessageType.GET, {
|
|
33
|
-
keys: [
|
|
34
|
-
key
|
|
35
|
-
],
|
|
36
|
-
db: Database.INDEX
|
|
37
|
-
});
|
|
28
|
+
const response = await this.channel.sendMessage(LMDBMessageType.GET, { keys: [key], db: Database.INDEX });
|
|
38
29
|
return response.values[0] ?? [];
|
|
39
30
|
}
|
|
40
31
|
async *iterate(startKey, endKey, reverse = false, limit) {
|
|
41
|
-
yield* this
|
|
32
|
+
yield* __classPrivateFieldGet(this, _ReadTransaction_instances, "m", _ReadTransaction_iterate).call(this, Database.DATA, startKey, endKey, reverse, limit, vals => vals[0]);
|
|
42
33
|
}
|
|
43
34
|
async *iterateIndex(startKey, endKey, reverse = false, limit) {
|
|
44
|
-
yield* this
|
|
35
|
+
yield* __classPrivateFieldGet(this, _ReadTransaction_instances, "m", _ReadTransaction_iterate).call(this, Database.INDEX, startKey, endKey, reverse, limit, vals => vals);
|
|
45
36
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
37
|
+
}
|
|
38
|
+
_ReadTransaction_instances = new WeakSet(), _ReadTransaction_iterate = async function* _ReadTransaction_iterate(db, startKey, endKey, reverse, limit, map) {
|
|
39
|
+
this.assertIsOpen();
|
|
40
|
+
const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
|
|
41
|
+
key: startKey,
|
|
42
|
+
reverse,
|
|
43
|
+
count: typeof limit === 'number' ? Math.min(limit, CURSOR_PAGE_SIZE) : CURSOR_PAGE_SIZE,
|
|
44
|
+
onePage: typeof limit === 'number' && limit < CURSOR_PAGE_SIZE,
|
|
45
|
+
db,
|
|
46
|
+
});
|
|
47
|
+
const cursor = response.cursor;
|
|
48
|
+
let entries = response.entries;
|
|
49
|
+
let done = typeof cursor !== 'number';
|
|
50
|
+
let count = 0;
|
|
51
|
+
try {
|
|
52
|
+
// emit the first page and any subsequent pages in a while loop
|
|
53
|
+
// NB: end contition is in the middle of the while loop
|
|
54
|
+
while (entries.length > 0) {
|
|
55
|
+
for (const [key, values] of entries) {
|
|
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)) {
|
|
65
63
|
done = true;
|
|
66
64
|
break;
|
|
67
65
|
}
|
|
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
|
-
];
|
|
80
66
|
}
|
|
81
|
-
|
|
82
|
-
|
|
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;
|
|
67
|
+
count++;
|
|
68
|
+
yield [key, map(values)];
|
|
91
69
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
await this.channel.sendMessage(LMDBMessageType.CLOSE_CURSOR, {
|
|
96
|
-
cursor
|
|
97
|
-
});
|
|
70
|
+
// cursor is null if DB returned everything in the first page
|
|
71
|
+
if (typeof cursor !== 'number' || done) {
|
|
72
|
+
break;
|
|
98
73
|
}
|
|
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;
|
|
99
80
|
}
|
|
100
81
|
}
|
|
101
|
-
|
|
82
|
+
finally {
|
|
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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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type AztecAsyncSingleton } from '../interfaces/singleton.js';
|
|
2
|
+
import { type AztecLMDBStoreV2 } from './store.js';
|
|
3
|
+
export declare class LMDBSingleValue<T> implements AztecAsyncSingleton<T> {
|
|
4
|
+
private store;
|
|
5
|
+
private key;
|
|
6
|
+
private encoder;
|
|
7
|
+
constructor(store: AztecLMDBStoreV2, name: string);
|
|
8
|
+
getAsync(): Promise<T | undefined>;
|
|
9
|
+
set(val: T): Promise<boolean>;
|
|
10
|
+
delete(): Promise<boolean>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=singleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/singleton.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,YAAY,CAAC;AAGhF,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;IAGnD,OAAO,CAAC,KAAK;IAFzB,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,OAAO,CAAiB;gBACZ,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM;IAIzD,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOlC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAO7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAM3B"}
|
|
@@ -2,30 +2,28 @@ 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
|
-
store
|
|
6
|
-
key;
|
|
7
|
-
encoder;
|
|
8
|
-
constructor(store, name){
|
|
5
|
+
constructor(store, name) {
|
|
9
6
|
this.store = store;
|
|
10
7
|
this.encoder = new Encoder();
|
|
11
8
|
this.key = serializeKey(`singleton:${name}`, 'value');
|
|
12
9
|
}
|
|
13
10
|
getAsync() {
|
|
14
|
-
return execInReadTx(this.store, async (tx)=>{
|
|
11
|
+
return execInReadTx(this.store, async (tx) => {
|
|
15
12
|
const val = await tx.get(this.key);
|
|
16
13
|
return val ? this.encoder.unpack(val) : undefined;
|
|
17
14
|
});
|
|
18
15
|
}
|
|
19
16
|
set(val) {
|
|
20
|
-
return execInWriteTx(this.store, async (tx)=>{
|
|
17
|
+
return execInWriteTx(this.store, async (tx) => {
|
|
21
18
|
await tx.set(this.key, this.encoder.pack(val));
|
|
22
19
|
return true;
|
|
23
20
|
});
|
|
24
21
|
}
|
|
25
22
|
delete() {
|
|
26
|
-
return execInWriteTx(this.store, async (tx)=>{
|
|
23
|
+
return execInWriteTx(this.store, async (tx) => {
|
|
27
24
|
await tx.remove(this.key);
|
|
28
25
|
return true;
|
|
29
26
|
});
|
|
30
27
|
}
|
|
31
28
|
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvc2luZ2xldG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHbkMsT0FBTyxFQUF5QixZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFMUMsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFBb0IsS0FBdUIsRUFBRSxJQUFZO1FBQXJDLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBRG5DLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFFLEVBQUMsRUFBRTtZQUN6QyxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFNO1FBQ1IsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFDLEVBQUU7WUFDMUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxFQUFFLEVBQUMsRUFBRTtZQUMxQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type Logger } from '@aztec/foundation/log';
|
|
2
|
+
import type { AztecAsyncArray } from '../interfaces/array.js';
|
|
3
|
+
import type { Key, StoreSize } from '../interfaces/common.js';
|
|
4
|
+
import type { AztecAsyncCounter } from '../interfaces/counter.js';
|
|
5
|
+
import type { AztecAsyncMap, AztecAsyncMultiMap } from '../interfaces/map.js';
|
|
6
|
+
import type { AztecAsyncSet } from '../interfaces/set.js';
|
|
7
|
+
import type { AztecAsyncSingleton } from '../interfaces/singleton.js';
|
|
8
|
+
import type { AztecAsyncKVStore } from '../interfaces/store.js';
|
|
9
|
+
import { type LMDBMessageChannel, LMDBMessageType, type LMDBRequestBody, type LMDBResponseBody } from './message.js';
|
|
10
|
+
import { ReadTransaction } from './read_transaction.js';
|
|
11
|
+
import { WriteTransaction } from './write_transaction.js';
|
|
12
|
+
export declare class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
|
|
13
|
+
private dataDir;
|
|
14
|
+
private log;
|
|
15
|
+
private cleanup?;
|
|
16
|
+
private open;
|
|
17
|
+
private channel;
|
|
18
|
+
private writerCtx;
|
|
19
|
+
private writerQueue;
|
|
20
|
+
private availableCursors;
|
|
21
|
+
private constructor();
|
|
22
|
+
get dataDirectory(): string;
|
|
23
|
+
private start;
|
|
24
|
+
static new(dataDir: string, dbMapSizeKb?: number, maxReaders?: number, cleanup?: () => Promise<void>, log?: Logger): Promise<AztecLMDBStoreV2>;
|
|
25
|
+
getReadTx(): ReadTransaction;
|
|
26
|
+
getCurrentWriteTx(): WriteTransaction | undefined;
|
|
27
|
+
openMap<K extends Key, V>(name: string): AztecAsyncMap<K, V>;
|
|
28
|
+
openMultiMap<K extends Key, V>(name: string): AztecAsyncMultiMap<K, V>;
|
|
29
|
+
openSingleton<T>(name: string): AztecAsyncSingleton<T>;
|
|
30
|
+
openArray<T>(_name: string): AztecAsyncArray<T>;
|
|
31
|
+
openSet<K extends Key>(_name: string): AztecAsyncSet<K>;
|
|
32
|
+
openCounter<K extends Key>(_name: string): AztecAsyncCounter<K>;
|
|
33
|
+
transactionAsync<T extends Exclude<any, Promise<any>>>(callback: (tx: WriteTransaction) => Promise<T>): Promise<T>;
|
|
34
|
+
clear(): Promise<void>;
|
|
35
|
+
fork(): Promise<AztecAsyncKVStore>;
|
|
36
|
+
delete(): Promise<void>;
|
|
37
|
+
close(): Promise<void>;
|
|
38
|
+
sendMessage<T extends LMDBMessageType>(msgType: T, body: LMDBRequestBody[T]): Promise<LMDBResponseBody[T]>;
|
|
39
|
+
estimateSize(): Promise<StoreSize>;
|
|
40
|
+
}
|
|
41
|
+
export declare function execInWriteTx<T>(store: AztecLMDBStoreV2, fn: (tx: WriteTransaction) => Promise<T>): Promise<T>;
|
|
42
|
+
export declare function execInReadTx<T>(store: AztecLMDBStoreV2, fn: (tx: ReadTransaction) => T | Promise<T>): Promise<T>;
|
|
43
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/store.ts"],"names":[],"mappings":"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"}
|
package/dest/lmdb-v2/store.js
CHANGED
|
@@ -4,20 +4,12 @@ import { MsgpackChannel, NativeLMDBStore } from '@aztec/native';
|
|
|
4
4
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
5
5
|
import { rm } from 'fs/promises';
|
|
6
6
|
import { LMDBMap, LMDBMultiMap } from './map.js';
|
|
7
|
-
import { Database, LMDBMessageType } from './message.js';
|
|
7
|
+
import { Database, LMDBMessageType, } from './message.js';
|
|
8
8
|
import { ReadTransaction } from './read_transaction.js';
|
|
9
9
|
import { LMDBSingleValue } from './singleton.js';
|
|
10
10
|
import { WriteTransaction } from './write_transaction.js';
|
|
11
11
|
export class AztecLMDBStoreV2 {
|
|
12
|
-
dataDir
|
|
13
|
-
log;
|
|
14
|
-
cleanup;
|
|
15
|
-
open;
|
|
16
|
-
channel;
|
|
17
|
-
writerCtx;
|
|
18
|
-
writerQueue;
|
|
19
|
-
availableCursors;
|
|
20
|
-
constructor(dataDir, mapSize, maxReaders, log, cleanup){
|
|
12
|
+
constructor(dataDir, mapSize, maxReaders, log, cleanup) {
|
|
21
13
|
this.dataDir = dataDir;
|
|
22
14
|
this.log = log;
|
|
23
15
|
this.cleanup = cleanup;
|
|
@@ -36,11 +28,11 @@ export class AztecLMDBStoreV2 {
|
|
|
36
28
|
this.writerQueue.start();
|
|
37
29
|
await this.channel.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
38
30
|
db: Database.DATA,
|
|
39
|
-
uniqueKeys: true
|
|
31
|
+
uniqueKeys: true,
|
|
40
32
|
});
|
|
41
33
|
await this.channel.sendMessage(LMDBMessageType.OPEN_DATABASE, {
|
|
42
34
|
db: Database.INDEX,
|
|
43
|
-
uniqueKeys: false
|
|
35
|
+
uniqueKeys: false,
|
|
44
36
|
});
|
|
45
37
|
this.open = true;
|
|
46
38
|
}
|
|
@@ -91,16 +83,18 @@ export class AztecLMDBStoreV2 {
|
|
|
91
83
|
if (currentTx) {
|
|
92
84
|
return await callback(currentTx);
|
|
93
85
|
}
|
|
94
|
-
return this.writerQueue.put(async ()=>{
|
|
86
|
+
return this.writerQueue.put(async () => {
|
|
95
87
|
const tx = new WriteTransaction(this);
|
|
96
88
|
try {
|
|
97
89
|
const res = await this.writerCtx.run(tx, callback, tx);
|
|
98
90
|
await tx.commit();
|
|
99
91
|
return res;
|
|
100
|
-
}
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
101
94
|
this.log.error(`Failed to commit transaction`, err);
|
|
102
95
|
throw err;
|
|
103
|
-
}
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
104
98
|
tx.close();
|
|
105
99
|
}
|
|
106
100
|
});
|
|
@@ -113,10 +107,7 @@ export class AztecLMDBStoreV2 {
|
|
|
113
107
|
}
|
|
114
108
|
async delete() {
|
|
115
109
|
await this.close();
|
|
116
|
-
await rm(this.dataDir, {
|
|
117
|
-
recursive: true,
|
|
118
|
-
force: true
|
|
119
|
-
});
|
|
110
|
+
await rm(this.dataDir, { recursive: true, force: true });
|
|
120
111
|
this.log.verbose(`Deleted database files at ${this.dataDir}`);
|
|
121
112
|
await this.cleanup?.();
|
|
122
113
|
}
|
|
@@ -140,9 +131,13 @@ export class AztecLMDBStoreV2 {
|
|
|
140
131
|
try {
|
|
141
132
|
({ response } = await this.channel.sendMessage(msgType, body));
|
|
142
133
|
return response;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
msgType === LMDBMessageType.START_CURSOR &&
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
if ((msgType === LMDBMessageType.START_CURSOR && response === undefined) ||
|
|
137
|
+
msgType === LMDBMessageType.CLOSE_CURSOR ||
|
|
138
|
+
// it's possible for a START_CURSOR command to not return a cursor (e.g. db is empty)
|
|
139
|
+
(msgType === LMDBMessageType.START_CURSOR &&
|
|
140
|
+
typeof response.cursor !== 'number')) {
|
|
146
141
|
this.availableCursors.release();
|
|
147
142
|
}
|
|
148
143
|
}
|
|
@@ -151,8 +146,8 @@ export class AztecLMDBStoreV2 {
|
|
|
151
146
|
const resp = await this.sendMessage(LMDBMessageType.STATS, undefined);
|
|
152
147
|
return {
|
|
153
148
|
mappingSize: Number(resp.dbMapSizeBytes),
|
|
154
|
-
actualSize: resp.stats.reduce((s, db)=>Number(db.totalUsedSize) + s, 0),
|
|
155
|
-
numItems: resp.stats.reduce((s, db)=>Number(db.numDataItems) + s, 0)
|
|
149
|
+
actualSize: resp.stats.reduce((s, db) => Number(db.totalUsedSize) + s, 0),
|
|
150
|
+
numItems: resp.stats.reduce((s, db) => Number(db.numDataItems) + s, 0),
|
|
156
151
|
};
|
|
157
152
|
}
|
|
158
153
|
}
|
|
@@ -160,7 +155,8 @@ export function execInWriteTx(store, fn) {
|
|
|
160
155
|
const currentWrite = store.getCurrentWriteTx();
|
|
161
156
|
if (currentWrite) {
|
|
162
157
|
return fn(currentWrite);
|
|
163
|
-
}
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
164
160
|
return store.transactionAsync(fn);
|
|
165
161
|
}
|
|
166
162
|
}
|
|
@@ -168,12 +164,15 @@ export async function execInReadTx(store, fn) {
|
|
|
168
164
|
const currentWrite = store.getCurrentWriteTx();
|
|
169
165
|
if (currentWrite) {
|
|
170
166
|
return await fn(currentWrite);
|
|
171
|
-
}
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
172
169
|
const tx = store.getReadTx();
|
|
173
170
|
try {
|
|
174
171
|
return await fn(tx);
|
|
175
|
-
}
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
176
174
|
tx.close();
|
|
177
175
|
}
|
|
178
176
|
}
|
|
179
177
|
}
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi12Mi9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVNqQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsUUFBUSxFQUVSLGVBQWUsR0FHaEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRCxNQUFNLE9BQU8sZ0JBQWdCO0lBTzNCLFlBQ1UsT0FBZSxFQUN2QixPQUFlLEVBQ2YsVUFBa0IsRUFDVixHQUFXLEVBQ1gsT0FBNkI7UUFKN0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUdmLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDWCxZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQVgvQixTQUFJLEdBQUcsS0FBSyxDQUFDO1FBRWIsY0FBUyxHQUFHLElBQUksaUJBQWlCLEVBQW9CLENBQUM7UUFDdEQsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBVXRDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FB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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { type Key } from '../interfaces/common.js';
|
|
4
|
+
type Cmp<T> = (a: T, b: T) => -1 | 0 | 1;
|
|
5
|
+
export declare function dedupeSortedArray<T>(arr: T[], cmp: Cmp<T>): void;
|
|
6
|
+
export declare function insertIntoSortedArray<T>(arr: T[], item: T, cmp: (a: T, b: T) => number): void;
|
|
7
|
+
export declare function findIndexInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): number;
|
|
8
|
+
export declare function findInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): T | undefined;
|
|
9
|
+
export declare function removeAnyOf<T, N>(arr: T[], vals: N[], cmp: (a: T, b: N) => -1 | 0 | 1): void;
|
|
10
|
+
export declare function removeFromSortedArray<T, N>(arr: T[], val: N, cmp: (a: T, b: N) => -1 | 0 | 1): void;
|
|
11
|
+
export declare function merge<T>(arr: T[], toInsert: T[], cmp: (a: T, b: T) => -1 | 0 | 1): void;
|
|
12
|
+
export declare function keyCmp(a: [Uint8Array, Uint8Array[] | null], b: [Uint8Array, Uint8Array[] | null]): -1 | 0 | 1;
|
|
13
|
+
export declare function singleKeyCmp(a: [Uint8Array, Uint8Array[] | null], b: Uint8Array): -1 | 0 | 1;
|
|
14
|
+
export declare function minKey(prefix: string): Buffer;
|
|
15
|
+
export declare function maxKey(prefix: string): Buffer;
|
|
16
|
+
export declare function serializeKey(prefix: string, key: Key): Buffer;
|
|
17
|
+
export declare function deserializeKey<K extends Key>(prefix: string, key: Uint8Array): K | false;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/utils.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEzC,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAkBhE;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,CAgB7F;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAiBxG;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,GAAG,CAAC,GAAG,SAAS,CAG1G;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAsB5F;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAK5F;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAqBvF;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAE7G;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAE5F;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,UAEpC;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,UAEpC;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAE7D;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,CAAC,GAAG,KAAK,CAOxF"}
|
package/dest/lmdb-v2/utils.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { MAXIMUM_KEY, fromBufferKey, toBufferKey } from 'ordered-binary';
|
|
2
2
|
export function dedupeSortedArray(arr, cmp) {
|
|
3
|
-
for(let i = 0; i < arr.length; i++){
|
|
3
|
+
for (let i = 0; i < arr.length; i++) {
|
|
4
4
|
let j = i + 1;
|
|
5
|
-
for(; j < arr.length; j++){
|
|
5
|
+
for (; j < arr.length; j++) {
|
|
6
6
|
const res = cmp(arr[i], arr[j]);
|
|
7
7
|
if (res === 0) {
|
|
8
8
|
continue;
|
|
9
|
-
}
|
|
9
|
+
}
|
|
10
|
+
else if (res < 0) {
|
|
10
11
|
break;
|
|
11
|
-
}
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
12
14
|
throw new Error('Array not sorted');
|
|
13
15
|
}
|
|
14
16
|
}
|
|
@@ -20,12 +22,13 @@ export function dedupeSortedArray(arr, cmp) {
|
|
|
20
22
|
export function insertIntoSortedArray(arr, item, cmp) {
|
|
21
23
|
let left = 0;
|
|
22
24
|
let right = arr.length;
|
|
23
|
-
while(left < right){
|
|
24
|
-
const mid = left + right >> 1;
|
|
25
|
+
while (left < right) {
|
|
26
|
+
const mid = (left + right) >> 1;
|
|
25
27
|
const comparison = cmp(arr[mid], item);
|
|
26
28
|
if (comparison < 0) {
|
|
27
29
|
left = mid + 1;
|
|
28
|
-
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
29
32
|
right = mid;
|
|
30
33
|
}
|
|
31
34
|
}
|
|
@@ -34,14 +37,16 @@ export function insertIntoSortedArray(arr, item, cmp) {
|
|
|
34
37
|
export function findIndexInSortedArray(values, needle, cmp) {
|
|
35
38
|
let start = 0;
|
|
36
39
|
let end = values.length - 1;
|
|
37
|
-
while(start <= end){
|
|
38
|
-
const mid = start + ((end - start) / 2 | 0);
|
|
40
|
+
while (start <= end) {
|
|
41
|
+
const mid = start + (((end - start) / 2) | 0);
|
|
39
42
|
const res = cmp(values[mid], needle);
|
|
40
43
|
if (res === 0) {
|
|
41
44
|
return mid;
|
|
42
|
-
}
|
|
45
|
+
}
|
|
46
|
+
else if (res > 0) {
|
|
43
47
|
end = mid - 1;
|
|
44
|
-
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
45
50
|
start = mid + 1;
|
|
46
51
|
}
|
|
47
52
|
}
|
|
@@ -55,17 +60,19 @@ export function removeAnyOf(arr, vals, cmp) {
|
|
|
55
60
|
let writeIdx = 0;
|
|
56
61
|
let readIdx = 0;
|
|
57
62
|
let valIdx = 0;
|
|
58
|
-
while(readIdx < arr.length && valIdx < vals.length){
|
|
63
|
+
while (readIdx < arr.length && valIdx < vals.length) {
|
|
59
64
|
const comparison = cmp(arr[readIdx], vals[valIdx]);
|
|
60
65
|
if (comparison < 0) {
|
|
61
66
|
arr[writeIdx++] = arr[readIdx++];
|
|
62
|
-
}
|
|
67
|
+
}
|
|
68
|
+
else if (comparison > 0) {
|
|
63
69
|
valIdx++;
|
|
64
|
-
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
65
72
|
readIdx++;
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
|
-
while(readIdx < arr.length){
|
|
75
|
+
while (readIdx < arr.length) {
|
|
69
76
|
arr[writeIdx++] = arr[readIdx++];
|
|
70
77
|
}
|
|
71
78
|
arr.length = writeIdx;
|
|
@@ -79,16 +86,16 @@ export function removeFromSortedArray(arr, val, cmp) {
|
|
|
79
86
|
export function merge(arr, toInsert, cmp) {
|
|
80
87
|
const result = new Array(arr.length + toInsert.length);
|
|
81
88
|
let i = 0, j = 0, k = 0;
|
|
82
|
-
while(i < arr.length && j < toInsert.length){
|
|
89
|
+
while (i < arr.length && j < toInsert.length) {
|
|
83
90
|
result[k++] = cmp(arr[i], toInsert[j]) <= 0 ? arr[i++] : toInsert[j++];
|
|
84
91
|
}
|
|
85
|
-
while(i < arr.length){
|
|
92
|
+
while (i < arr.length) {
|
|
86
93
|
result[k++] = arr[i++];
|
|
87
94
|
}
|
|
88
|
-
while(j < toInsert.length){
|
|
95
|
+
while (j < toInsert.length) {
|
|
89
96
|
result[k++] = toInsert[j++];
|
|
90
97
|
}
|
|
91
|
-
for(i = 0; i < result.length; i++){
|
|
98
|
+
for (i = 0; i < result.length; i++) {
|
|
92
99
|
arr[i] = result[i];
|
|
93
100
|
}
|
|
94
101
|
arr.length = result.length;
|
|
@@ -100,21 +107,13 @@ export function singleKeyCmp(a, b) {
|
|
|
100
107
|
return Buffer.compare(a[0], b);
|
|
101
108
|
}
|
|
102
109
|
export function minKey(prefix) {
|
|
103
|
-
return toBufferKey([
|
|
104
|
-
prefix
|
|
105
|
-
]);
|
|
110
|
+
return toBufferKey([prefix]);
|
|
106
111
|
}
|
|
107
112
|
export function maxKey(prefix) {
|
|
108
|
-
return toBufferKey([
|
|
109
|
-
prefix,
|
|
110
|
-
MAXIMUM_KEY
|
|
111
|
-
]);
|
|
113
|
+
return toBufferKey([prefix, MAXIMUM_KEY]);
|
|
112
114
|
}
|
|
113
115
|
export function serializeKey(prefix, key) {
|
|
114
|
-
return toBufferKey([
|
|
115
|
-
prefix,
|
|
116
|
-
key
|
|
117
|
-
]);
|
|
116
|
+
return toBufferKey([prefix, key]);
|
|
118
117
|
}
|
|
119
118
|
export function deserializeKey(prefix, key) {
|
|
120
119
|
const buf = Buffer.from(key);
|
|
@@ -124,3 +123,4 @@ export function deserializeKey(prefix, key) {
|
|
|
124
123
|
}
|
|
125
124
|
return parsed[1];
|
|
126
125
|
}
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi12Mi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU16RSxNQUFNLFVBQVUsaUJBQWlCLENBQUksR0FBUSxFQUFFLEdBQVc7SUFDeEQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsU0FBUztZQUNYLENBQUM7aUJBQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLE1BQU07WUFDUixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLHFCQUFxQixDQUFJLEdBQVEsRUFBRSxJQUFPLEVBQUUsR0FBMkI7SUFDckYsSUFBSSxJ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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { type Batch } from './message.js';
|
|
4
|
+
import { ReadTransaction } from './read_transaction.js';
|
|
5
|
+
export declare class WriteTransaction extends ReadTransaction {
|
|
6
|
+
#private;
|
|
7
|
+
readonly dataBatch: Batch;
|
|
8
|
+
readonly indexBatch: Batch;
|
|
9
|
+
set(key: Uint8Array, value: Uint8Array): Promise<void>;
|
|
10
|
+
remove(key: Uint8Array): Promise<void>;
|
|
11
|
+
get(key: Buffer): Promise<Uint8Array | undefined>;
|
|
12
|
+
setIndex(key: Buffer, ...values: Buffer[]): Promise<void>;
|
|
13
|
+
removeIndex(key: Buffer, ...values: Buffer[]): Promise<void>;
|
|
14
|
+
getIndex(key: Buffer): Promise<Uint8Array[]>;
|
|
15
|
+
iterate(startKey: Uint8Array, endKey?: Uint8Array | undefined, reverse?: boolean, limit?: number): AsyncIterable<[Uint8Array, Uint8Array]>;
|
|
16
|
+
iterateIndex(startKey: Uint8Array, endKey?: Uint8Array | undefined, reverse?: boolean, limit?: number): AsyncIterable<[Uint8Array, Uint8Array[]]>;
|
|
17
|
+
commit(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=write_transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write_transaction.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/write_transaction.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,KAAK,EAA6B,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAaxD,qBAAa,gBAAiB,SAAQ,eAAe;;IAEnD,SAAgB,SAAS,EAAE,KAAK,CAG9B;IACF,SAAgB,UAAU,EAAE,KAAK,CAG/B;IAEF,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBtD,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAchB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAevE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BzD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCtC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAuB3C,OAAO,CAC5B,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAanB,YAAY,CACjC,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IAqH/B,MAAM;CAUpB"}
|