@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.
Files changed (122) hide show
  1. package/dest/config.d.ts +17 -0
  2. package/dest/config.d.ts.map +1 -0
  3. package/dest/config.js +7 -5
  4. package/dest/indexeddb/array.d.ts +21 -0
  5. package/dest/indexeddb/array.d.ts.map +1 -0
  6. package/dest/indexeddb/array.js +36 -44
  7. package/dest/indexeddb/index.d.ts +7 -0
  8. package/dest/indexeddb/index.d.ts.map +1 -0
  9. package/dest/indexeddb/index.js +4 -1
  10. package/dest/indexeddb/map.d.ts +26 -0
  11. package/dest/indexeddb/map.d.ts.map +1 -0
  12. package/dest/indexeddb/map.js +43 -72
  13. package/dest/indexeddb/set.d.ts +17 -0
  14. package/dest/indexeddb/set.d.ts.map +1 -0
  15. package/dest/indexeddb/set.js +4 -3
  16. package/dest/indexeddb/singleton.d.ts +16 -0
  17. package/dest/indexeddb/singleton.d.ts.map +1 -0
  18. package/dest/indexeddb/singleton.js +22 -17
  19. package/dest/indexeddb/store.d.ts +97 -0
  20. package/dest/indexeddb/store.d.ts.map +1 -0
  21. package/dest/indexeddb/store.js +93 -97
  22. package/dest/interfaces/array.d.ts +80 -0
  23. package/dest/interfaces/array.d.ts.map +1 -0
  24. package/dest/interfaces/array.js +2 -3
  25. package/dest/interfaces/array_test_suite.d.ts +3 -0
  26. package/dest/interfaces/array_test_suite.d.ts.map +1 -0
  27. package/dest/interfaces/array_test_suite.js +25 -29
  28. package/dest/interfaces/common.d.ts +23 -0
  29. package/dest/interfaces/common.d.ts.map +1 -0
  30. package/dest/interfaces/common.js +2 -3
  31. package/dest/interfaces/counter.d.ts +59 -0
  32. package/dest/interfaces/counter.d.ts.map +1 -0
  33. package/dest/interfaces/counter.js +2 -1
  34. package/dest/interfaces/index.d.ts +8 -0
  35. package/dest/interfaces/index.d.ts.map +1 -0
  36. package/dest/interfaces/index.js +1 -0
  37. package/dest/interfaces/map.d.ts +134 -0
  38. package/dest/interfaces/map.d.ts.map +1 -0
  39. package/dest/interfaces/map.js +2 -3
  40. package/dest/interfaces/map_test_suite.d.ts +3 -0
  41. package/dest/interfaces/map_test_suite.d.ts.map +1 -0
  42. package/dest/interfaces/map_test_suite.js +42 -87
  43. package/dest/interfaces/set.d.ts +44 -0
  44. package/dest/interfaces/set.d.ts.map +1 -0
  45. package/dest/interfaces/set.js +2 -1
  46. package/dest/interfaces/set_test_suite.d.ts +3 -0
  47. package/dest/interfaces/set_test_suite.d.ts.map +1 -0
  48. package/dest/interfaces/set_test_suite.js +22 -59
  49. package/dest/interfaces/singleton.d.ts +29 -0
  50. package/dest/interfaces/singleton.d.ts.map +1 -0
  51. package/dest/interfaces/singleton.js +2 -4
  52. package/dest/interfaces/singleton_test_suite.d.ts +3 -0
  53. package/dest/interfaces/singleton_test_suite.d.ts.map +1 -0
  54. package/dest/interfaces/singleton_test_suite.js +10 -7
  55. package/dest/interfaces/store.d.ts +145 -0
  56. package/dest/interfaces/store.d.ts.map +1 -0
  57. package/dest/interfaces/store.js +2 -1
  58. package/dest/interfaces/store_test_suite.d.ts +3 -0
  59. package/dest/interfaces/store_test_suite.d.ts.map +1 -0
  60. package/dest/interfaces/store_test_suite.js +9 -6
  61. package/dest/interfaces/utils.d.ts +16 -0
  62. package/dest/interfaces/utils.d.ts.map +1 -0
  63. package/dest/interfaces/utils.js +15 -12
  64. package/dest/lmdb/array.d.ts +23 -0
  65. package/dest/lmdb/array.d.ts.map +1 -0
  66. package/dest/lmdb/array.js +41 -46
  67. package/dest/lmdb/counter.d.ts +19 -0
  68. package/dest/lmdb/counter.d.ts.map +1 -0
  69. package/dest/lmdb/counter.js +24 -18
  70. package/dest/lmdb/index.d.ts +12 -0
  71. package/dest/lmdb/index.d.ts.map +1 -0
  72. package/dest/lmdb/index.js +6 -2
  73. package/dest/lmdb/map.d.ts +52 -0
  74. package/dest/lmdb/map.d.ts.map +1 -0
  75. package/dest/lmdb/map.js +68 -90
  76. package/dest/lmdb/set.d.ts +18 -0
  77. package/dest/lmdb/set.d.ts.map +1 -0
  78. package/dest/lmdb/set.js +5 -4
  79. package/dest/lmdb/singleton.d.ts +14 -0
  80. package/dest/lmdb/singleton.d.ts.map +1 -0
  81. package/dest/lmdb/singleton.js +14 -13
  82. package/dest/lmdb/store.d.ts +110 -0
  83. package/dest/lmdb/store.d.ts.map +1 -0
  84. package/dest/lmdb/store.js +134 -124
  85. package/dest/lmdb-v2/factory.d.ts +9 -0
  86. package/dest/lmdb-v2/factory.d.ts.map +1 -0
  87. package/dest/lmdb-v2/factory.js +19 -22
  88. package/dest/lmdb-v2/index.d.ts +3 -0
  89. package/dest/lmdb-v2/index.d.ts.map +1 -0
  90. package/dest/lmdb-v2/index.js +1 -0
  91. package/dest/lmdb-v2/map.d.ts +86 -0
  92. package/dest/lmdb-v2/map.d.ts.map +1 -0
  93. package/dest/lmdb-v2/map.js +85 -82
  94. package/dest/lmdb-v2/message.d.ts +112 -0
  95. package/dest/lmdb-v2/message.d.ts.map +1 -0
  96. package/dest/lmdb-v2/message.js +7 -6
  97. package/dest/lmdb-v2/read_transaction.d.ts +14 -0
  98. package/dest/lmdb-v2/read_transaction.d.ts.map +1 -0
  99. package/dest/lmdb-v2/read_transaction.js +53 -65
  100. package/dest/lmdb-v2/singleton.d.ts +12 -0
  101. package/dest/lmdb-v2/singleton.d.ts.map +1 -0
  102. package/dest/lmdb-v2/singleton.js +5 -7
  103. package/dest/lmdb-v2/store.d.ts +43 -0
  104. package/dest/lmdb-v2/store.d.ts.map +1 -0
  105. package/dest/lmdb-v2/store.js +26 -27
  106. package/dest/lmdb-v2/utils.d.ts +19 -0
  107. package/dest/lmdb-v2/utils.d.ts.map +1 -0
  108. package/dest/lmdb-v2/utils.js +30 -30
  109. package/dest/lmdb-v2/write_transaction.d.ts +19 -0
  110. package/dest/lmdb-v2/write_transaction.d.ts.map +1 -0
  111. package/dest/lmdb-v2/write_transaction.js +110 -130
  112. package/dest/stores/index.d.ts +2 -0
  113. package/dest/stores/index.d.ts.map +1 -0
  114. package/dest/stores/index.js +1 -0
  115. package/dest/stores/l2_tips_store.d.ts +13 -0
  116. package/dest/stores/l2_tips_store.d.ts.map +1 -0
  117. package/dest/stores/l2_tips_store.js +12 -26
  118. package/dest/utils.d.ts +12 -0
  119. package/dest/utils.d.ts.map +1 -0
  120. package/dest/utils.js +7 -3
  121. package/package.json +6 -6
  122. 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
- open;
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.#iterate(Database.DATA, startKey, endKey, reverse, limit, (vals)=>vals[0]);
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.#iterate(Database.INDEX, startKey, endKey, reverse, limit, (vals)=>vals);
35
+ yield* __classPrivateFieldGet(this, _ReadTransaction_instances, "m", _ReadTransaction_iterate).call(this, Database.INDEX, startKey, endKey, reverse, limit, vals => vals);
45
36
  }
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) {
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
- // 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;
67
+ count++;
68
+ yield [key, map(values)];
91
69
  }
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
- });
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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"}
@@ -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
- } catch (err) {
92
+ }
93
+ catch (err) {
101
94
  this.log.error(`Failed to commit transaction`, err);
102
95
  throw err;
103
- } finally{
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
- } finally{
144
- if (msgType === LMDBMessageType.START_CURSOR && response === undefined || msgType === LMDBMessageType.CLOSE_CURSOR || // it's possible for a START_CURSOR command to not return a cursor (e.g. db is empty)
145
- msgType === LMDBMessageType.START_CURSOR && typeof response.cursor !== 'number') {
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
- } else {
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
- } else {
167
+ }
168
+ else {
172
169
  const tx = store.getReadTx();
173
170
  try {
174
171
  return await fn(tx);
175
- } finally{
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"}
@@ -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
- } else if (res < 0) {
9
+ }
10
+ else if (res < 0) {
10
11
  break;
11
- } else {
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
- } else {
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
- } else if (res > 0) {
45
+ }
46
+ else if (res > 0) {
43
47
  end = mid - 1;
44
- } else {
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
- } else if (comparison > 0) {
67
+ }
68
+ else if (comparison > 0) {
63
69
  valIdx++;
64
- } else {
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"}