@aztec/kv-store 0.0.1-commit.b655e406 → 0.0.1-commit.b9865e97

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 (193) hide show
  1. package/README.md +8 -1
  2. package/dest/bench/shared_map_bench.d.ts +19 -0
  3. package/dest/bench/shared_map_bench.d.ts.map +1 -0
  4. package/dest/bench/shared_map_bench.js +91 -0
  5. package/dest/indexeddb/array.d.ts +1 -1
  6. package/dest/indexeddb/array.d.ts.map +1 -1
  7. package/dest/indexeddb/array.js +21 -7
  8. package/dest/indexeddb/index.d.ts +3 -3
  9. package/dest/indexeddb/index.d.ts.map +1 -1
  10. package/dest/indexeddb/index.js +3 -6
  11. package/dest/indexeddb/map.d.ts +8 -2
  12. package/dest/indexeddb/map.d.ts.map +1 -1
  13. package/dest/indexeddb/map.js +23 -13
  14. package/dest/indexeddb/multi_map.d.ts +3 -1
  15. package/dest/indexeddb/multi_map.d.ts.map +1 -1
  16. package/dest/indexeddb/multi_map.js +30 -1
  17. package/dest/indexeddb/set.d.ts +1 -1
  18. package/dest/indexeddb/set.d.ts.map +1 -1
  19. package/dest/indexeddb/singleton.d.ts +1 -1
  20. package/dest/indexeddb/singleton.d.ts.map +1 -1
  21. package/dest/indexeddb/singleton.js +3 -1
  22. package/dest/indexeddb/store.d.ts +3 -3
  23. package/dest/indexeddb/store.d.ts.map +1 -1
  24. package/dest/indexeddb/store.js +6 -4
  25. package/dest/interfaces/array.d.ts +1 -1
  26. package/dest/interfaces/array_test_suite.d.ts +1 -1
  27. package/dest/interfaces/array_test_suite.d.ts.map +1 -1
  28. package/dest/interfaces/array_test_suite.js +33 -34
  29. package/dest/interfaces/common.d.ts +1 -1
  30. package/dest/interfaces/counter.d.ts +1 -1
  31. package/dest/interfaces/index.d.ts +2 -2
  32. package/dest/interfaces/index.d.ts.map +1 -1
  33. package/dest/interfaces/map.d.ts +1 -1
  34. package/dest/interfaces/map_test_suite.d.ts +1 -1
  35. package/dest/interfaces/map_test_suite.d.ts.map +1 -1
  36. package/dest/interfaces/map_test_suite.js +74 -29
  37. package/dest/interfaces/multi_map.d.ts +7 -1
  38. package/dest/interfaces/multi_map.d.ts.map +1 -1
  39. package/dest/interfaces/multi_map_test_suite.d.ts +1 -1
  40. package/dest/interfaces/multi_map_test_suite.d.ts.map +1 -1
  41. package/dest/interfaces/multi_map_test_suite.js +154 -36
  42. package/dest/interfaces/set.d.ts +1 -1
  43. package/dest/interfaces/set_test_suite.d.ts +1 -1
  44. package/dest/interfaces/set_test_suite.d.ts.map +1 -1
  45. package/dest/interfaces/set_test_suite.js +13 -14
  46. package/dest/interfaces/singleton.d.ts +1 -1
  47. package/dest/interfaces/singleton_test_suite.d.ts +1 -1
  48. package/dest/interfaces/singleton_test_suite.d.ts.map +1 -1
  49. package/dest/interfaces/singleton_test_suite.js +6 -7
  50. package/dest/interfaces/store.d.ts +1 -1
  51. package/dest/interfaces/utils.d.ts +2 -1
  52. package/dest/interfaces/utils.d.ts.map +1 -1
  53. package/dest/interfaces/utils.js +2 -1
  54. package/dest/lmdb/array.d.ts +1 -1
  55. package/dest/lmdb/array.d.ts.map +1 -1
  56. package/dest/lmdb/array.js +4 -2
  57. package/dest/lmdb/counter.d.ts +1 -1
  58. package/dest/lmdb/counter.d.ts.map +1 -1
  59. package/dest/lmdb/index.d.ts +3 -3
  60. package/dest/lmdb/index.d.ts.map +1 -1
  61. package/dest/lmdb/index.js +4 -4
  62. package/dest/lmdb/map.d.ts +1 -1
  63. package/dest/lmdb/map.d.ts.map +1 -1
  64. package/dest/lmdb/multi_map.d.ts +2 -1
  65. package/dest/lmdb/multi_map.d.ts.map +1 -1
  66. package/dest/lmdb/multi_map.js +15 -0
  67. package/dest/lmdb/set.d.ts +1 -1
  68. package/dest/lmdb/set.d.ts.map +1 -1
  69. package/dest/lmdb/singleton.d.ts +1 -1
  70. package/dest/lmdb/singleton.d.ts.map +1 -1
  71. package/dest/lmdb/store.d.ts +4 -5
  72. package/dest/lmdb/store.d.ts.map +1 -1
  73. package/dest/lmdb/store.js +13 -9
  74. package/dest/lmdb-v2/array.d.ts +2 -2
  75. package/dest/lmdb-v2/array.d.ts.map +1 -1
  76. package/dest/lmdb-v2/array.js +4 -3
  77. package/dest/lmdb-v2/factory.d.ts +32 -10
  78. package/dest/lmdb-v2/factory.d.ts.map +1 -1
  79. package/dest/lmdb-v2/factory.js +71 -16
  80. package/dest/lmdb-v2/index.d.ts +1 -1
  81. package/dest/lmdb-v2/map.d.ts +2 -2
  82. package/dest/lmdb-v2/map.d.ts.map +1 -1
  83. package/dest/lmdb-v2/map.js +1 -2
  84. package/dest/lmdb-v2/message.d.ts +1 -1
  85. package/dest/lmdb-v2/multi_map.d.ts +3 -2
  86. package/dest/lmdb-v2/multi_map.d.ts.map +1 -1
  87. package/dest/lmdb-v2/multi_map.js +11 -1
  88. package/dest/lmdb-v2/read_transaction.d.ts +1 -1
  89. package/dest/lmdb-v2/read_transaction.d.ts.map +1 -1
  90. package/dest/lmdb-v2/read_transaction.js +21 -19
  91. package/dest/lmdb-v2/set.d.ts +1 -1
  92. package/dest/lmdb-v2/set.d.ts.map +1 -1
  93. package/dest/lmdb-v2/singleton.d.ts +2 -2
  94. package/dest/lmdb-v2/singleton.d.ts.map +1 -1
  95. package/dest/lmdb-v2/singleton.js +1 -2
  96. package/dest/lmdb-v2/store.d.ts +4 -5
  97. package/dest/lmdb-v2/store.d.ts.map +1 -1
  98. package/dest/lmdb-v2/store.js +6 -28
  99. package/dest/lmdb-v2/tx-helpers.d.ts +6 -0
  100. package/dest/lmdb-v2/tx-helpers.d.ts.map +1 -0
  101. package/dest/lmdb-v2/tx-helpers.js +21 -0
  102. package/dest/lmdb-v2/utils.d.ts +1 -10
  103. package/dest/lmdb-v2/utils.d.ts.map +1 -1
  104. package/dest/lmdb-v2/utils.js +0 -94
  105. package/dest/lmdb-v2/write_transaction.d.ts +1 -1
  106. package/dest/lmdb-v2/write_transaction.d.ts.map +1 -1
  107. package/dest/lmdb-v2/write_transaction.js +9 -5
  108. package/dest/sqlite-opfs/array.d.ts +21 -0
  109. package/dest/sqlite-opfs/array.d.ts.map +1 -0
  110. package/dest/sqlite-opfs/array.js +128 -0
  111. package/dest/sqlite-opfs/errors.d.ts +27 -0
  112. package/dest/sqlite-opfs/errors.d.ts.map +1 -0
  113. package/dest/sqlite-opfs/errors.js +34 -0
  114. package/dest/sqlite-opfs/index.d.ts +16 -0
  115. package/dest/sqlite-opfs/index.d.ts.map +1 -0
  116. package/dest/sqlite-opfs/index.js +22 -0
  117. package/dest/sqlite-opfs/internal/ordered-binary-browser.d.ts +32 -0
  118. package/dest/sqlite-opfs/internal/ordered-binary-browser.d.ts.map +1 -0
  119. package/dest/sqlite-opfs/internal/ordered-binary-browser.js +448 -0
  120. package/dest/sqlite-opfs/map.d.ts +35 -0
  121. package/dest/sqlite-opfs/map.d.ts.map +1 -0
  122. package/dest/sqlite-opfs/map.js +163 -0
  123. package/dest/sqlite-opfs/messages.d.ts +66 -0
  124. package/dest/sqlite-opfs/messages.d.ts.map +1 -0
  125. package/dest/sqlite-opfs/messages.js +5 -0
  126. package/dest/sqlite-opfs/multi_map.d.ts +16 -0
  127. package/dest/sqlite-opfs/multi_map.d.ts.map +1 -0
  128. package/dest/sqlite-opfs/multi_map.js +67 -0
  129. package/dest/sqlite-opfs/set.d.ts +13 -0
  130. package/dest/sqlite-opfs/set.d.ts.map +1 -0
  131. package/dest/sqlite-opfs/set.js +19 -0
  132. package/dest/sqlite-opfs/singleton.d.ts +13 -0
  133. package/dest/sqlite-opfs/singleton.d.ts.map +1 -0
  134. package/dest/sqlite-opfs/singleton.js +48 -0
  135. package/dest/sqlite-opfs/store.d.ts +79 -0
  136. package/dest/sqlite-opfs/store.d.ts.map +1 -0
  137. package/dest/sqlite-opfs/store.js +281 -0
  138. package/dest/sqlite-opfs/worker.d.ts +2 -0
  139. package/dest/sqlite-opfs/worker.d.ts.map +1 -0
  140. package/dest/sqlite-opfs/worker.js +249 -0
  141. package/dest/stores/index.d.ts +1 -1
  142. package/dest/stores/l2_tips_store.d.ts +25 -10
  143. package/dest/stores/l2_tips_store.d.ts.map +1 -1
  144. package/dest/stores/l2_tips_store.js +62 -53
  145. package/dest/utils.d.ts +9 -6
  146. package/dest/utils.d.ts.map +1 -1
  147. package/dest/utils.js +51 -16
  148. package/package.json +33 -26
  149. package/src/bench/shared_map_bench.ts +111 -0
  150. package/src/indexeddb/array.ts +4 -4
  151. package/src/indexeddb/index.ts +9 -7
  152. package/src/indexeddb/map.ts +24 -11
  153. package/src/indexeddb/multi_map.ts +27 -1
  154. package/src/indexeddb/singleton.ts +1 -1
  155. package/src/indexeddb/store.ts +13 -6
  156. package/src/interfaces/array_test_suite.ts +33 -35
  157. package/src/interfaces/index.ts +1 -1
  158. package/src/interfaces/map_test_suite.ts +56 -30
  159. package/src/interfaces/multi_map.ts +7 -0
  160. package/src/interfaces/multi_map_test_suite.ts +167 -37
  161. package/src/interfaces/set_test_suite.ts +13 -15
  162. package/src/interfaces/singleton_test_suite.ts +6 -8
  163. package/src/interfaces/utils.ts +1 -0
  164. package/src/lmdb/index.ts +10 -5
  165. package/src/lmdb/multi_map.ts +16 -0
  166. package/src/lmdb/store.ts +13 -9
  167. package/src/lmdb-v2/array.ts +2 -2
  168. package/src/lmdb-v2/factory.ts +93 -19
  169. package/src/lmdb-v2/map.ts +2 -2
  170. package/src/lmdb-v2/multi_map.ts +10 -1
  171. package/src/lmdb-v2/read_transaction.ts +23 -23
  172. package/src/lmdb-v2/singleton.ts +2 -2
  173. package/src/lmdb-v2/store.ts +9 -33
  174. package/src/lmdb-v2/tx-helpers.ts +29 -0
  175. package/src/lmdb-v2/utils.ts +0 -118
  176. package/src/lmdb-v2/write_transaction.ts +9 -8
  177. package/src/sqlite-opfs/array.ts +124 -0
  178. package/src/sqlite-opfs/errors.ts +44 -0
  179. package/src/sqlite-opfs/index.ts +39 -0
  180. package/src/sqlite-opfs/internal/ordered-binary-browser.js +465 -0
  181. package/src/sqlite-opfs/map.ts +163 -0
  182. package/src/sqlite-opfs/messages.ts +39 -0
  183. package/src/sqlite-opfs/multi_map.ts +74 -0
  184. package/src/sqlite-opfs/set.ts +29 -0
  185. package/src/sqlite-opfs/singleton.ts +48 -0
  186. package/src/sqlite-opfs/store.ts +296 -0
  187. package/src/sqlite-opfs/worker.ts +231 -0
  188. package/src/stores/l2_tips_store.ts +66 -56
  189. package/src/utils.ts +79 -21
  190. package/dest/config.d.ts +0 -17
  191. package/dest/config.d.ts.map +0 -1
  192. package/dest/config.js +0 -26
  193. package/src/config.ts +0 -36
@@ -51,18 +51,19 @@ export class ReadTransaction {
51
51
  }
52
52
  async *#iterate(db, startKey, endKey, reverse, limit, map) {
53
53
  this.assertIsOpen();
54
- const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
55
- key: startKey,
56
- reverse,
57
- count: typeof limit === 'number' ? Math.min(limit, CURSOR_PAGE_SIZE) : CURSOR_PAGE_SIZE,
58
- onePage: typeof limit === 'number' && limit < CURSOR_PAGE_SIZE,
59
- db
60
- });
61
- const cursor = response.cursor;
62
- let entries = response.entries;
63
- let done = typeof cursor !== 'number';
64
- let count = 0;
54
+ let cursor;
65
55
  try {
56
+ const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
57
+ key: startKey,
58
+ reverse,
59
+ count: typeof limit === 'number' ? Math.min(limit, CURSOR_PAGE_SIZE) : CURSOR_PAGE_SIZE,
60
+ onePage: typeof limit === 'number' && limit < CURSOR_PAGE_SIZE,
61
+ db
62
+ });
63
+ cursor = response.cursor ?? undefined;
64
+ let entries = response.entries;
65
+ let done = typeof cursor !== 'number';
66
+ let count = 0;
66
67
  // emit the first page and any subsequent pages in a while loop
67
68
  // NB: end contition is in the middle of the while loop
68
69
  while(entries.length > 0){
@@ -106,15 +107,16 @@ export class ReadTransaction {
106
107
  }
107
108
  async #countEntries(db, startKey, endKey, reverse) {
108
109
  this.assertIsOpen();
109
- const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
110
- key: startKey,
111
- reverse,
112
- count: 0,
113
- onePage: false,
114
- db
115
- });
116
- const cursor = response.cursor;
110
+ let cursor;
117
111
  try {
112
+ const response = await this.channel.sendMessage(LMDBMessageType.START_CURSOR, {
113
+ key: startKey,
114
+ reverse,
115
+ count: 0,
116
+ onePage: false,
117
+ db
118
+ });
119
+ cursor = response.cursor ?? undefined;
118
120
  if (!cursor) {
119
121
  return 0;
120
122
  }
@@ -12,4 +12,4 @@ export declare class LMDBSet<K extends Key> implements AztecAsyncSet<K> {
12
12
  delete(key: K): Promise<void>;
13
13
  entriesAsync(range?: Range<K>): AsyncIterableIterator<K>;
14
14
  }
15
- //# sourceMappingURL=set.d.ts.map
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi12Mi9zZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTFELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRW5EOztHQUVHO0FBQ0gscUJBQWEsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUUsWUFBVyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sQ0FBQyxHQUFHLENBQXNCO0lBRWpDLFlBQVksS0FBSyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBRW5EO0lBRUQsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUVqQztJQUVELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFekI7SUFFRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTVCO0lBRU0sWUFBWSxDQUFDLEtBQUssR0FBRSxLQUFLLENBQUMsQ0FBQyxDQUFNLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBSWxFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAsB;gBAErB,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM;IAIpD,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItB,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC;CAKpE"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,qBAAa,OAAO,CAAC,CAAC,SAAS,GAAG,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAsB;IAEjC,YAAY,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAEnD;IAED,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAEjC;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzB;IAED,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5B;IAEM,YAAY,CAAC,KAAK,GAAE,KAAK,CAAC,CAAC,CAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAIlE;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { AztecAsyncSingleton } from '../interfaces/singleton.js';
2
- import { type AztecLMDBStoreV2 } from './store.js';
2
+ import type { AztecLMDBStoreV2 } from './store.js';
3
3
  export declare class LMDBSingleValue<T> implements AztecAsyncSingleton<T> {
4
4
  private store;
5
5
  private key;
@@ -9,4 +9,4 @@ export declare class LMDBSingleValue<T> implements AztecAsyncSingleton<T> {
9
9
  set(val: T): Promise<boolean>;
10
10
  delete(): Promise<boolean>;
11
11
  }
12
- //# sourceMappingURL=singleton.d.ts.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbG1kYi12Mi9zaW5nbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUluRCxxQkFBYSxlQUFlLENBQUMsQ0FBQyxDQUFFLFlBQVcsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBSTdELE9BQU8sQ0FBQyxLQUFLO0lBSGYsT0FBTyxDQUFDLEdBQUcsQ0FBYTtJQUN4QixPQUFPLENBQUMsT0FBTyxDQUFpQjtJQUNoQyxZQUNVLEtBQUssRUFBRSxnQkFBZ0IsRUFDL0IsSUFBSSxFQUFFLE1BQU0sRUFHYjtJQUVELFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUtqQztJQUVELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FLNUI7SUFFRCxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUt6QjtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/singleton.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,KAAK,gBAAgB,EAA+B,MAAM,YAAY,CAAC;AAGhF,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;IAI7D,OAAO,CAAC,KAAK;IAHf,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,OAAO,CAAiB;gBAEtB,KAAK,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM;IAKd,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"}
1
+ {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/singleton.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,qBAAa,eAAe,CAAC,CAAC,CAAE,YAAW,mBAAmB,CAAC,CAAC,CAAC;IAI7D,OAAO,CAAC,KAAK;IAHf,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,OAAO,CAAiB;IAChC,YACU,KAAK,EAAE,gBAAgB,EAC/B,IAAI,EAAE,MAAM,EAGb;IAED,QAAQ,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAKjC;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAK5B;IAED,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAKzB;CACF"}
@@ -1,6 +1,5 @@
1
1
  import { Encoder } from 'msgpackr';
2
- // eslint-disable-next-line import/no-cycle
3
- import { execInReadTx, execInWriteTx } from './store.js';
2
+ import { execInReadTx, execInWriteTx } from './tx-helpers.js';
4
3
  import { serializeKey } from './utils.js';
5
4
  export class LMDBSingleValue {
6
5
  store;
@@ -1,4 +1,4 @@
1
- import { type Logger } from '@aztec/foundation/log';
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
2
2
  import type { AztecAsyncArray } from '../interfaces/array.js';
3
3
  import type { Key, StoreSize, Value } from '../interfaces/common.js';
4
4
  import type { AztecAsyncCounter } from '../interfaces/counter.js';
@@ -10,6 +10,7 @@ import type { AztecAsyncKVStore } from '../interfaces/store.js';
10
10
  import { type LMDBMessageChannel, LMDBMessageType, type LMDBRequestBody, type LMDBResponseBody } from './message.js';
11
11
  import { ReadTransaction } from './read_transaction.js';
12
12
  import { WriteTransaction } from './write_transaction.js';
13
+ export { execInReadTx, execInWriteTx } from './tx-helpers.js';
13
14
  export declare class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageChannel {
14
15
  private dataDir;
15
16
  private log;
@@ -22,7 +23,7 @@ export declare class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageC
22
23
  private constructor();
23
24
  get dataDirectory(): string;
24
25
  private start;
25
- static new(dataDir: string, dbMapSizeKb?: number, maxReaders?: number, cleanup?: () => Promise<void>, log?: Logger): Promise<AztecLMDBStoreV2>;
26
+ static new(dataDir: string, dbMapSizeKb?: number, maxReaders?: number, cleanup?: () => Promise<void>, bindings?: LoggerBindings, ephemeral?: boolean): Promise<AztecLMDBStoreV2>;
26
27
  backupTo(dstPath: string, compact?: boolean): Promise<void>;
27
28
  getReadTx(): ReadTransaction;
28
29
  getCurrentWriteTx(): WriteTransaction | undefined;
@@ -39,6 +40,4 @@ export declare class AztecLMDBStoreV2 implements AztecAsyncKVStore, LMDBMessageC
39
40
  sendMessage<T extends LMDBMessageType>(msgType: T, body: LMDBRequestBody[T]): Promise<LMDBResponseBody[T]>;
40
41
  estimateSize(): Promise<StoreSize>;
41
42
  }
42
- export declare function execInWriteTx<T>(store: AztecLMDBStoreV2, fn: (tx: WriteTransaction) => Promise<T>): Promise<T>;
43
- export declare function execInReadTx<T>(store: AztecLMDBStoreV2, fn: (tx: ReadTransaction) => T | Promise<T>): Promise<T>;
44
- //# sourceMappingURL=store.d.ts.map
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQU92RixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHaEUsT0FBTyxFQUVMLEtBQUssa0JBQWtCLEVBQ3ZCLGVBQWUsRUFDZixLQUFLLGVBQWUsRUFDcEIsS0FBSyxnQkFBZ0IsRUFDdEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUQscUJBQWEsZ0JBQWlCLFlBQVcsaUJBQWlCLEVBQUUsa0JBQWtCO0lBUTFFLE9BQU8sQ0FBQyxPQUFPO0lBR2YsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFP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
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/store.ts"],"names":[],"mappings":"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"}
@@ -3,17 +3,15 @@ import { Semaphore, SerialQueue } from '@aztec/foundation/queue';
3
3
  import { MsgpackChannel, NativeLMDBStore } from '@aztec/native';
4
4
  import { AsyncLocalStorage } from 'async_hooks';
5
5
  import { mkdir, rm } from 'fs/promises';
6
- // eslint-disable-next-line import/no-cycle
7
6
  import { LMDBArray } from './array.js';
8
- // eslint-disable-next-line import/no-cycle
9
7
  import { LMDBMap } from './map.js';
10
8
  import { Database, LMDBMessageType } from './message.js';
11
9
  import { LMDBMultiMap } from './multi_map.js';
12
10
  import { ReadTransaction } from './read_transaction.js';
13
11
  import { LMDBSet } from './set.js';
14
- // eslint-disable-next-line import/no-cycle
15
12
  import { LMDBSingleValue } from './singleton.js';
16
13
  import { WriteTransaction } from './write_transaction.js';
14
+ export { execInReadTx, execInWriteTx } from './tx-helpers.js';
17
15
  export class AztecLMDBStoreV2 {
18
16
  dataDir;
19
17
  log;
@@ -23,7 +21,7 @@ export class AztecLMDBStoreV2 {
23
21
  writerCtx;
24
22
  writerQueue;
25
23
  availableCursors;
26
- constructor(dataDir, mapSize, maxReaders, log, cleanup){
24
+ constructor(dataDir, mapSize, maxReaders, log, cleanup, ephemeral = false){
27
25
  this.dataDir = dataDir;
28
26
  this.log = log;
29
27
  this.cleanup = cleanup;
@@ -31,7 +29,7 @@ export class AztecLMDBStoreV2 {
31
29
  this.writerCtx = new AsyncLocalStorage();
32
30
  this.writerQueue = new SerialQueue();
33
31
  this.log.info(`Starting data store with maxReaders ${maxReaders}`);
34
- this.channel = new MsgpackChannel(new NativeLMDBStore(dataDir, mapSize, maxReaders));
32
+ this.channel = new MsgpackChannel(new NativeLMDBStore(dataDir, mapSize, maxReaders, ephemeral));
35
33
  // leave one reader to always be available for regular, atomic, reads
36
34
  this.availableCursors = new Semaphore(maxReaders - 1);
37
35
  }
@@ -50,8 +48,9 @@ export class AztecLMDBStoreV2 {
50
48
  });
51
49
  this.open = true;
52
50
  }
53
- static async new(dataDir, dbMapSizeKb = 10 * 1024 * 1024, maxReaders = 16, cleanup, log = createLogger('kv-store:lmdb-v2')) {
54
- const db = new AztecLMDBStoreV2(dataDir, dbMapSizeKb, maxReaders, log, cleanup);
51
+ static async new(dataDir, dbMapSizeKb = 10 * 1024 * 1024, maxReaders = 16, cleanup, bindings, ephemeral = false) {
52
+ const log = createLogger('kv-store:lmdb-v2', bindings);
53
+ const db = new AztecLMDBStoreV2(dataDir, dbMapSizeKb, maxReaders, log, cleanup, ephemeral);
55
54
  await db.start();
56
55
  return db;
57
56
  }
@@ -170,24 +169,3 @@ export class AztecLMDBStoreV2 {
170
169
  };
171
170
  }
172
171
  }
173
- export function execInWriteTx(store, fn) {
174
- const currentWrite = store.getCurrentWriteTx();
175
- if (currentWrite) {
176
- return fn(currentWrite);
177
- } else {
178
- return store.transactionAsync(fn);
179
- }
180
- }
181
- export async function execInReadTx(store, fn) {
182
- const currentWrite = store.getCurrentWriteTx();
183
- if (currentWrite) {
184
- return await fn(currentWrite);
185
- } else {
186
- const tx = store.getReadTx();
187
- try {
188
- return await fn(tx);
189
- } finally{
190
- tx.close();
191
- }
192
- }
193
- }
@@ -0,0 +1,6 @@
1
+ import type { ReadTransaction } from './read_transaction.js';
2
+ import type { AztecLMDBStoreV2 } from './store.js';
3
+ import type { WriteTransaction } from './write_transaction.js';
4
+ export declare function execInWriteTx<T>(store: AztecLMDBStoreV2, fn: (tx: WriteTransaction) => Promise<T>): Promise<T>;
5
+ export declare function execInReadTx<T>(store: AztecLMDBStoreV2, fn: (tx: ReadTransaction) => T | Promise<T>): Promise<T>;
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtaGVscGVycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xtZGItdjIvdHgtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9ELHdCQUFnQixhQUFhLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FPOUc7QUFFRCx3QkFBc0IsWUFBWSxDQUFDLENBQUMsRUFDbEMsS0FBSyxFQUFFLGdCQUFnQixFQUN2QixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQzFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FZWiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-helpers.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/tx-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAO9G;AAED,wBAAsB,YAAY,CAAC,CAAC,EAClC,KAAK,EAAE,gBAAgB,EACvB,EAAE,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,CAAC,CAAC,CAYZ"}
@@ -0,0 +1,21 @@
1
+ export function execInWriteTx(store, fn) {
2
+ const currentWrite = store.getCurrentWriteTx();
3
+ if (currentWrite) {
4
+ return fn(currentWrite);
5
+ } else {
6
+ return store.transactionAsync(fn);
7
+ }
8
+ }
9
+ export async function execInReadTx(store, fn) {
10
+ const currentWrite = store.getCurrentWriteTx();
11
+ if (currentWrite) {
12
+ return await fn(currentWrite);
13
+ } else {
14
+ const tx = store.getReadTx();
15
+ try {
16
+ return await fn(tx);
17
+ } finally{
18
+ tx.close();
19
+ }
20
+ }
21
+ }
@@ -1,17 +1,8 @@
1
1
  import type { Key } from '../interfaces/common.js';
2
- type Cmp<T> = (a: T, b: T) => -1 | 0 | 1;
3
- export declare function dedupeSortedArray<T>(arr: T[], cmp: Cmp<T>): void;
4
- export declare function insertIntoSortedArray<T>(arr: T[], item: T, cmp: (a: T, b: T) => number): void;
5
- export declare function findIndexInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): number;
6
- export declare function findInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): T | undefined;
7
- export declare function removeAnyOf<T, N>(arr: T[], vals: N[], cmp: (a: T, b: N) => -1 | 0 | 1): void;
8
- export declare function removeFromSortedArray<T, N>(arr: T[], val: N, cmp: (a: T, b: N) => -1 | 0 | 1): void;
9
- export declare function merge<T>(arr: T[], toInsert: T[], cmp: (a: T, b: T) => -1 | 0 | 1): void;
10
2
  export declare function keyCmp(a: [Uint8Array, Uint8Array[] | null], b: [Uint8Array, Uint8Array[] | null]): -1 | 0 | 1;
11
3
  export declare function singleKeyCmp(a: [Uint8Array, Uint8Array[] | null], b: Uint8Array): -1 | 0 | 1;
12
4
  export declare function minKey(prefix: string): Buffer<ArrayBufferLike>;
13
5
  export declare function maxKey(prefix: string): Buffer<ArrayBufferLike>;
14
6
  export declare function serializeKey(prefix: string, key: Key): Buffer;
15
7
  export declare function deserializeKey<K extends Key>(prefix: string, key: Uint8Array): K | false;
16
- export {};
17
- //# sourceMappingURL=utils.d.ts.map
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELHdCQUFnQixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUU3RztBQUVELHdCQUFnQixZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FFNUY7QUFFRCx3QkFBZ0IsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLDJCQUVwQztBQUVELHdCQUFnQixNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sMkJBRXBDO0FBRUQsd0JBQWdCLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsTUFBTSxDQUU3RDtBQUVELHdCQUFnQixjQUFjLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FPeEYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,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,2BAEpC;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,2BAEpC;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
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,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,2BAEpC;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,2BAEpC;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,98 +1,4 @@
1
1
  import { MAXIMUM_KEY, fromBufferKey, toBufferKey } from 'ordered-binary';
2
- export function dedupeSortedArray(arr, cmp) {
3
- for(let i = 0; i < arr.length; i++){
4
- let j = i + 1;
5
- for(; j < arr.length; j++){
6
- const res = cmp(arr[i], arr[j]);
7
- if (res === 0) {
8
- continue;
9
- } else if (res < 0) {
10
- break;
11
- } else {
12
- throw new Error('Array not sorted');
13
- }
14
- }
15
- if (j - i > 1) {
16
- arr.splice(i + 1, j - i - 1);
17
- }
18
- }
19
- }
20
- export function insertIntoSortedArray(arr, item, cmp) {
21
- let left = 0;
22
- let right = arr.length;
23
- while(left < right){
24
- const mid = left + right >> 1;
25
- const comparison = cmp(arr[mid], item);
26
- if (comparison < 0) {
27
- left = mid + 1;
28
- } else {
29
- right = mid;
30
- }
31
- }
32
- arr.splice(left, 0, item);
33
- }
34
- export function findIndexInSortedArray(values, needle, cmp) {
35
- let start = 0;
36
- let end = values.length - 1;
37
- while(start <= end){
38
- const mid = start + ((end - start) / 2 | 0);
39
- const res = cmp(values[mid], needle);
40
- if (res === 0) {
41
- return mid;
42
- } else if (res > 0) {
43
- end = mid - 1;
44
- } else {
45
- start = mid + 1;
46
- }
47
- }
48
- return -1;
49
- }
50
- export function findInSortedArray(values, needle, cmp) {
51
- const idx = findIndexInSortedArray(values, needle, cmp);
52
- return idx > -1 ? values[idx] : undefined;
53
- }
54
- export function removeAnyOf(arr, vals, cmp) {
55
- let writeIdx = 0;
56
- let readIdx = 0;
57
- let valIdx = 0;
58
- while(readIdx < arr.length && valIdx < vals.length){
59
- const comparison = cmp(arr[readIdx], vals[valIdx]);
60
- if (comparison < 0) {
61
- arr[writeIdx++] = arr[readIdx++];
62
- } else if (comparison > 0) {
63
- valIdx++;
64
- } else {
65
- readIdx++;
66
- }
67
- }
68
- while(readIdx < arr.length){
69
- arr[writeIdx++] = arr[readIdx++];
70
- }
71
- arr.length = writeIdx;
72
- }
73
- export function removeFromSortedArray(arr, val, cmp) {
74
- const idx = findIndexInSortedArray(arr, val, cmp);
75
- if (idx > -1) {
76
- arr.splice(idx, 1);
77
- }
78
- }
79
- export function merge(arr, toInsert, cmp) {
80
- const result = new Array(arr.length + toInsert.length);
81
- let i = 0, j = 0, k = 0;
82
- while(i < arr.length && j < toInsert.length){
83
- result[k++] = cmp(arr[i], toInsert[j]) <= 0 ? arr[i++] : toInsert[j++];
84
- }
85
- while(i < arr.length){
86
- result[k++] = arr[i++];
87
- }
88
- while(j < toInsert.length){
89
- result[k++] = toInsert[j++];
90
- }
91
- for(i = 0; i < result.length; i++){
92
- arr[i] = result[i];
93
- }
94
- arr.length = result.length;
95
- }
96
2
  export function keyCmp(a, b) {
97
3
  return Buffer.compare(a[0], b[0]);
98
4
  }
@@ -14,4 +14,4 @@ export declare class WriteTransaction extends ReadTransaction {
14
14
  iterateIndex(startKey: Uint8Array, endKey?: Uint8Array, reverse?: boolean, limit?: number): AsyncIterable<[Uint8Array, Uint8Array[]]>;
15
15
  commit(): Promise<void>;
16
16
  }
17
- //# sourceMappingURL=write_transaction.d.ts.map
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVfdHJhbnNhY3Rpb24uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sbWRiLXYyL3dyaXRlX3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBNkIsTUFBTSxjQUFjLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3hELHFCQUFhLGdCQUFpQixTQUFRLGVBQWU7O0lBRW5ELFNBQWdCLFNBQVMsRUFBRSxLQUFLLENBRzlCO0lBQ0YsU0FBZ0IsVUFBVSxFQUFFLEtBQUssQ0FHL0I7SUFFRixHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FnQnJEO0lBRUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVlyQztJQUVxQixHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQWF0RTtJQUVELFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0EyQnhEO0lBRUQsV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXFDM0Q7SUFFcUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBcUJqRTtJQUVzQixPQUFPLENBQzVCLFFBQVEsRUFBRSxVQUFVLEVBQ3BCLE1BQU0sQ0FBQyxFQUFFLFVBQVUsRUFDbkIsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUNqQixLQUFLLENBQUMsRUFBRSxNQUFNLEdBQ2IsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBV3pDO0lBRXNCLFlBQVksQ0FDakMsUUFBUSxFQUFFLFVBQVUsRUFDcEIsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUNuQixPQUFPLENBQUMsRUFBRSxPQUFPLEVBQ2pCLEtBQUssQ0FBQyxFQUFFLE1BQU0sR0FDYixhQUFhLENBQUMsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQW9CM0M7SUFrR1ksTUFBTSxrQkFTbEI7Q0FDRiJ9
@@ -1 +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,EACnB,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,EACnB,OAAO,CAAC,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IAqH/B,MAAM;CAUpB"}
1
+ {"version":3,"file":"write_transaction.d.ts","sourceRoot":"","sources":["../../src/lmdb-v2/write_transaction.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,KAAK,KAAK,EAA6B,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,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,CAgBrD;IAED,MAAM,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrC;IAEqB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAatE;IAED,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BxD;IAED,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC3D;IAEqB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAqBjE;IAEsB,OAAO,CAC5B,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAWzC;IAEsB,YAAY,CACjC,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC,CAoB3C;IAkGY,MAAM,kBASlB;CACF"}
@@ -1,6 +1,7 @@
1
+ import { dedupeSortedArray, findInSortedArray, findIndexInSortedArray, insertIntoSortedArray, merge, removeAnyOf, removeFromSortedArray } from '@aztec/foundation/array';
1
2
  import { Database, LMDBMessageType } from './message.js';
2
3
  import { ReadTransaction } from './read_transaction.js';
3
- import { dedupeSortedArray, findInSortedArray, findIndexInSortedArray, insertIntoSortedArray, keyCmp, merge, removeAnyOf, removeFromSortedArray, singleKeyCmp } from './utils.js';
4
+ import { keyCmp, singleKeyCmp } from './utils.js';
4
5
  export class WriteTransaction extends ReadTransaction {
5
6
  // exposed for tests
6
7
  dataBatch = {
@@ -35,10 +36,10 @@ export class WriteTransaction extends ReadTransaction {
35
36
  remove(key) {
36
37
  const removeEntryIndex = findIndexInSortedArray(this.dataBatch.removeEntries, key, singleKeyCmp);
37
38
  if (removeEntryIndex === -1) {
38
- this.dataBatch.removeEntries.push([
39
+ insertIntoSortedArray(this.dataBatch.removeEntries, [
39
40
  key,
40
41
  null
41
- ]);
42
+ ], keyCmp);
42
43
  }
43
44
  const addEntryIndex = findIndexInSortedArray(this.dataBatch.addEntries, key, singleKeyCmp);
44
45
  if (addEntryIndex > -1) {
@@ -155,10 +156,13 @@ export class WriteTransaction extends ReadTransaction {
155
156
  }
156
157
  async *#iterate(iterator, batch, startKey, endKey, reverse = false, limit, merge, map) {
157
158
  this.assertIsOpen();
158
- // make a copy of this in case we're running in reverse
159
+ // Snapshot both add and remove entries at the start of iteration to ensure consistency
159
160
  const uncommittedEntries = [
160
161
  ...batch.addEntries
161
162
  ];
163
+ const removeEntries = [
164
+ ...batch.removeEntries
165
+ ];
162
166
  // used to check we're in the right order when comparing between a key and uncommittedEntries
163
167
  let cmpDirection = -1;
164
168
  if (reverse) {
@@ -198,7 +202,7 @@ export class WriteTransaction extends ReadTransaction {
198
202
  if (!checkLimit()) {
199
203
  break;
200
204
  }
201
- const toRemove = findInSortedArray(batch.removeEntries, key, singleKeyCmp);
205
+ const toRemove = findInSortedArray(removeEntries, key, singleKeyCmp);
202
206
  // at this point we've either exhausted all uncommitted entries,
203
207
  // we reached a key strictly greater/smaller than `key`
204
208
  // or we found the key itself
@@ -0,0 +1,21 @@
1
+ import type { AztecAsyncArray } from '../interfaces/array.js';
2
+ import type { Value } from '../interfaces/common.js';
3
+ import type { AztecSQLiteOPFSStore } from './store.js';
4
+ /**
5
+ * Persistent array backed by SQLite. Entries share a common `key` (the array name)
6
+ * and are ordered by `key_count`, which doubles as the 1-indexed slot number.
7
+ */
8
+ export declare class SQLiteOPFSAztecArray<T extends Value> implements AztecAsyncArray<T> {
9
+ #private;
10
+ private readonly store;
11
+ constructor(store: AztecSQLiteOPFSStore, name: string);
12
+ lengthAsync(): Promise<number>;
13
+ push(...vals: T[]): Promise<number>;
14
+ pop(): Promise<T | undefined>;
15
+ atAsync(index: number): Promise<T | undefined>;
16
+ setAt(index: number, val: T): Promise<boolean>;
17
+ entriesAsync(): AsyncIterableIterator<[number, T]>;
18
+ valuesAsync(): AsyncIterableIterator<T>;
19
+ [Symbol.asyncIterator](): AsyncIterableIterator<T>;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcWxpdGUtb3Bmcy9hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxxQkFBYSxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsS0FBSyxDQUFFLFlBQVcsZUFBZSxDQUFDLENBQUMsQ0FBQzs7SUFNNUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBRHhCLFlBQ21CLEtBQUssRUFBRSxvQkFBb0IsRUFDNUMsSUFBSSxFQUFFLE1BQU0sRUFJYjtJQUVLLFdBQVcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBTW5DO0lBRUssSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FnQnhDO0lBRUssR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBWWxDO0lBRUssT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FTbkQ7SUFFSyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FjbkQ7SUFFTSxZQUFZLElBQUkscUJBQXFCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FZeEQ7SUFFTSxXQUFXLElBQUkscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBSTdDO0lBRUQsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUkscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBRWpEO0NBU0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/sqlite-opfs/array.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;GAGG;AACH,qBAAa,oBAAoB,CAAC,CAAC,SAAS,KAAK,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;;IAM5E,OAAO,CAAC,QAAQ,CAAC,KAAK;IADxB,YACmB,KAAK,EAAE,oBAAoB,EAC5C,IAAI,EAAE,MAAM,EAIb;IAEK,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAMnC;IAEK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBxC;IAEK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAYlC;IAEK,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CASnD;IAEK,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAcnD;IAEM,YAAY,IAAI,qBAAqB,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAYxD;IAEM,WAAW,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAI7C;IAED,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAEjD;CASF"}
@@ -0,0 +1,128 @@
1
+ var _computedKey;
2
+ import { Encoder } from '#msgpackr';
3
+ import { toBufferKey } from '#ordered-binary';
4
+ import { hash } from 'ohash';
5
+ _computedKey = Symbol.asyncIterator;
6
+ /**
7
+ * Persistent array backed by SQLite. Entries share a common `key` (the array name)
8
+ * and are ordered by `key_count`, which doubles as the 1-indexed slot number.
9
+ */ export class SQLiteOPFSAztecArray {
10
+ store;
11
+ #name;
12
+ #container;
13
+ #encoder;
14
+ constructor(store, name){
15
+ this.store = store;
16
+ this.#encoder = new Encoder();
17
+ this.#name = name;
18
+ this.#container = `array:${name}`;
19
+ }
20
+ async lengthAsync() {
21
+ const rows = await this.store.allAsync('SELECT COUNT(*) FROM data WHERE container = ? AND key = ?', [
22
+ this.#container,
23
+ this.#encodedKey()
24
+ ]);
25
+ return Number(rows[0]?.[0] ?? 0);
26
+ }
27
+ async push(...vals) {
28
+ if (vals.length === 0) {
29
+ return this.lengthAsync();
30
+ }
31
+ return await this.store.transactionAsync(async ()=>{
32
+ let length = await this.lengthAsync();
33
+ for (const val of vals){
34
+ await this.store.runAsync(`INSERT INTO data (slot, container, key, key_count, hash, value)
35
+ VALUES (?, ?, ?, ?, ?, ?)`, [
36
+ this.#slot(length),
37
+ this.#container,
38
+ this.#encodedKey(),
39
+ length + 1,
40
+ hash(val),
41
+ this.#encoder.pack(val)
42
+ ]);
43
+ length += 1;
44
+ }
45
+ return length;
46
+ });
47
+ }
48
+ async pop() {
49
+ return await this.store.transactionAsync(async ()=>{
50
+ const length = await this.lengthAsync();
51
+ if (length === 0) {
52
+ return undefined;
53
+ }
54
+ const slot = this.#slot(length - 1);
55
+ const rows = await this.store.allAsync('SELECT value FROM data WHERE slot = ? LIMIT 1', [
56
+ slot
57
+ ]);
58
+ await this.store.runAsync('DELETE FROM data WHERE slot = ?', [
59
+ slot
60
+ ]);
61
+ const raw = rows[0]?.[0];
62
+ return raw instanceof Uint8Array ? this.#encoder.unpack(raw) : undefined;
63
+ });
64
+ }
65
+ async atAsync(index) {
66
+ const length = await this.lengthAsync();
67
+ const resolved = index < 0 ? length + index : index;
68
+ if (resolved < 0 || resolved >= length) {
69
+ return undefined;
70
+ }
71
+ const rows = await this.store.allAsync('SELECT value FROM data WHERE slot = ? LIMIT 1', [
72
+ this.#slot(resolved)
73
+ ]);
74
+ const raw = rows[0]?.[0];
75
+ return raw instanceof Uint8Array ? this.#encoder.unpack(raw) : undefined;
76
+ }
77
+ async setAt(index, val) {
78
+ return await this.store.transactionAsync(async ()=>{
79
+ const length = await this.lengthAsync();
80
+ const resolved = index < 0 ? length + index : index;
81
+ if (resolved < 0 || resolved >= length) {
82
+ return false;
83
+ }
84
+ await this.store.runAsync(`INSERT OR REPLACE INTO data (slot, container, key, key_count, hash, value)
85
+ VALUES (?, ?, ?, ?, ?, ?)`, [
86
+ this.#slot(resolved),
87
+ this.#container,
88
+ this.#encodedKey(),
89
+ resolved + 1,
90
+ hash(val),
91
+ this.#encoder.pack(val)
92
+ ]);
93
+ return true;
94
+ });
95
+ }
96
+ async *entriesAsync() {
97
+ const rows = await this.store.allAsync('SELECT key_count, value FROM data WHERE container = ? AND key = ? ORDER BY key_count ASC', [
98
+ this.#container,
99
+ this.#encodedKey()
100
+ ]);
101
+ for (const row of rows){
102
+ const keyCount = Number(row[0]);
103
+ const raw = row[1];
104
+ if (raw instanceof Uint8Array) {
105
+ yield [
106
+ keyCount - 1,
107
+ this.#encoder.unpack(raw)
108
+ ];
109
+ }
110
+ }
111
+ }
112
+ async *valuesAsync() {
113
+ for await (const [, val] of this.entriesAsync()){
114
+ yield val;
115
+ }
116
+ }
117
+ [_computedKey]() {
118
+ return this.valuesAsync();
119
+ }
120
+ #encodedKey() {
121
+ return toBufferKey([
122
+ this.#name
123
+ ]);
124
+ }
125
+ #slot(index) {
126
+ return `array:${this.#name}:slot:${index}`;
127
+ }
128
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Typed error surface for sqlite3mc-backed page-level encryption failures.
3
+ *
4
+ * Three concrete failure modes are surfaced:
5
+ *
6
+ * - `invalid_key_length`: caller-side pre-flight (key not 32 bytes).
7
+ * - `encryption_not_supported_for_ephemeral`: caller-side pre-flight (encryption was requested on an ephemeral
8
+ * `:memory:` store, which sqlite3mc does not support).
9
+ * - `decrypt_failed`: runtime failure raised when sqlite3mc cannot decode page 1 of an existing database. Covers
10
+ * both "wrong key supplied" and "no key supplied to an encrypted DB".
11
+ */
12
+ export type SqliteEncryptionErrorCode = 'invalid_key_length' | 'encryption_not_supported_for_ephemeral' | 'decrypt_failed';
13
+ /**
14
+ * Error thrown by sqlite-opfs when an encryption operation fails.
15
+ **/
16
+ export declare class SqliteEncryptionError extends Error {
17
+ readonly code: SqliteEncryptionErrorCode;
18
+ constructor(code: SqliteEncryptionErrorCode, message: string, opts?: {
19
+ cause?: unknown;
20
+ });
21
+ }
22
+ /**
23
+ * Returns `true` if `message` matches one of the known sqlite3mc decrypt-failure
24
+ * strings.
25
+ **/
26
+ export declare function isDecryptFailureMessage(message: string): boolean;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3FsaXRlLW9wZnMvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLE1BQU0seUJBQXlCLEdBQ2pDLG9CQUFvQixHQUNwQix3Q0FBd0MsR0FDeEMsZ0JBQWdCLENBQUM7QUFFckI7O0lBRUk7QUFDSixxQkFBYSxxQkFBc0IsU0FBUSxLQUFLO0lBQzlDLFFBQVEsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLENBQUM7SUFFekMsWUFBWSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtRQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEVBSXZGO0NBQ0Y7QUFVRDs7O0lBR0k7QUFDSix3QkFBZ0IsdUJBQXVCLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBRWhFIn0=