@enbox/dwn-sdk-js 0.4.15 → 0.4.17

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 (177) hide show
  1. package/dist/browser.mjs +1 -1
  2. package/dist/browser.mjs.map +4 -4
  3. package/dist/esm/generated/precompiled-validators.js +734 -747
  4. package/dist/esm/generated/precompiled-validators.js.map +1 -1
  5. package/dist/esm/json-schemas/definitions.json +5 -0
  6. package/dist/esm/src/core/dwn-constant.js +2 -2
  7. package/dist/esm/src/core/dwn-error.js +0 -1
  8. package/dist/esm/src/core/dwn-error.js.map +1 -1
  9. package/dist/esm/src/core/protocol-authorization-validation.js +1 -24
  10. package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
  11. package/dist/esm/src/core/protocol-authorization.js +1 -5
  12. package/dist/esm/src/core/protocol-authorization.js.map +1 -1
  13. package/dist/esm/src/core/validation-state-reader.js +2 -3
  14. package/dist/esm/src/core/validation-state-reader.js.map +1 -1
  15. package/dist/esm/src/handlers/messages-query.js +2 -29
  16. package/dist/esm/src/handlers/messages-query.js.map +1 -1
  17. package/dist/esm/src/handlers/messages-subscribe.js +52 -1
  18. package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
  19. package/dist/esm/src/handlers/records-count.js +18 -10
  20. package/dist/esm/src/handlers/records-count.js.map +1 -1
  21. package/dist/esm/src/handlers/records-query.js +10 -7
  22. package/dist/esm/src/handlers/records-query.js.map +1 -1
  23. package/dist/esm/src/handlers/records-subscribe.js +10 -7
  24. package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
  25. package/dist/esm/src/handlers/records-write.js +8 -26
  26. package/dist/esm/src/handlers/records-write.js.map +1 -1
  27. package/dist/esm/src/index.js +1 -1
  28. package/dist/esm/src/index.js.map +1 -1
  29. package/dist/esm/src/interfaces/protocols-configure.js +4 -9
  30. package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
  31. package/dist/esm/src/store/index-level.js +143 -6
  32. package/dist/esm/src/store/index-level.js.map +1 -1
  33. package/dist/esm/src/store/message-store-level.js +162 -23
  34. package/dist/esm/src/store/message-store-level.js.map +1 -1
  35. package/dist/esm/src/store/storage-controller.js +1 -3
  36. package/dist/esm/src/store/storage-controller.js.map +1 -1
  37. package/dist/esm/src/types/protocols-types.js +0 -10
  38. package/dist/esm/src/types/protocols-types.js.map +1 -1
  39. package/dist/esm/src/utils/filter.js +35 -1
  40. package/dist/esm/src/utils/filter.js.map +1 -1
  41. package/dist/esm/src/utils/grant-key-coverage.js +4 -6
  42. package/dist/esm/src/utils/grant-key-coverage.js.map +1 -1
  43. package/dist/esm/src/utils/messages.js +40 -14
  44. package/dist/esm/src/utils/messages.js.map +1 -1
  45. package/dist/esm/src/utils/permission-scope.js +3 -9
  46. package/dist/esm/src/utils/permission-scope.js.map +1 -1
  47. package/dist/esm/src/utils/record-limit-occupancy.js +70 -202
  48. package/dist/esm/src/utils/record-limit-occupancy.js.map +1 -1
  49. package/dist/esm/src/utils/records.js +9 -9
  50. package/dist/esm/src/utils/records.js.map +1 -1
  51. package/dist/esm/src/utils/replication.js +14 -0
  52. package/dist/esm/src/utils/replication.js.map +1 -1
  53. package/dist/esm/tests/core/records-grant-authorization.spec.js +13 -0
  54. package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -1
  55. package/dist/esm/tests/core/replication-replay-property.spec.js +2 -2
  56. package/dist/esm/tests/core/replication-replay-property.spec.js.map +1 -1
  57. package/dist/esm/tests/core/validation-read-closure.spec.js +1 -1
  58. package/dist/esm/tests/core/validation-read-closure.spec.js.map +1 -1
  59. package/dist/esm/tests/dwn.spec.js +2 -2
  60. package/dist/esm/tests/dwn.spec.js.map +1 -1
  61. package/dist/esm/tests/features/records-delivery.spec.js +2 -5
  62. package/dist/esm/tests/features/records-delivery.spec.js.map +1 -1
  63. package/dist/esm/tests/features/records-nested-query-scope.spec.js +138 -73
  64. package/dist/esm/tests/features/records-nested-query-scope.spec.js.map +1 -1
  65. package/dist/esm/tests/features/records-record-limit.spec.js +264 -95
  66. package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
  67. package/dist/esm/tests/fuzz/filter.fuzz.spec.js +19 -4
  68. package/dist/esm/tests/fuzz/filter.fuzz.spec.js.map +1 -1
  69. package/dist/esm/tests/handlers/messages-query.spec.js +7 -15
  70. package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -1
  71. package/dist/esm/tests/handlers/messages-subscribe.spec.js +129 -1
  72. package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
  73. package/dist/esm/tests/handlers/records-write.spec.js +57 -3
  74. package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
  75. package/dist/esm/tests/store/index-level.spec.js +114 -1
  76. package/dist/esm/tests/store/index-level.spec.js.map +1 -1
  77. package/dist/esm/tests/store/message-store-cross-context.spec.js +46 -0
  78. package/dist/esm/tests/store/message-store-cross-context.spec.js.map +1 -0
  79. package/dist/esm/tests/store/message-store-level.spec.js +27 -0
  80. package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
  81. package/dist/esm/tests/store/message-store.spec.js +81 -0
  82. package/dist/esm/tests/store/message-store.spec.js.map +1 -1
  83. package/dist/esm/tests/utils/filters.spec.js +25 -4
  84. package/dist/esm/tests/utils/filters.spec.js.map +1 -1
  85. package/dist/esm/tests/utils/permission-scope.spec.js +4 -0
  86. package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -1
  87. package/dist/esm/tests/utils/records.spec.js +12 -0
  88. package/dist/esm/tests/utils/records.spec.js.map +1 -1
  89. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +3 -1
  90. package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
  91. package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
  92. package/dist/types/src/core/dwn-constant.d.ts +2 -2
  93. package/dist/types/src/core/dwn-error.d.ts +0 -1
  94. package/dist/types/src/core/dwn-error.d.ts.map +1 -1
  95. package/dist/types/src/core/protocol-authorization-validation.d.ts +0 -10
  96. package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
  97. package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
  98. package/dist/types/src/core/validation-state-reader.d.ts.map +1 -1
  99. package/dist/types/src/handlers/messages-query.d.ts +0 -2
  100. package/dist/types/src/handlers/messages-query.d.ts.map +1 -1
  101. package/dist/types/src/handlers/messages-subscribe.d.ts +16 -0
  102. package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
  103. package/dist/types/src/handlers/records-count.d.ts +1 -0
  104. package/dist/types/src/handlers/records-count.d.ts.map +1 -1
  105. package/dist/types/src/handlers/records-query.d.ts.map +1 -1
  106. package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
  107. package/dist/types/src/handlers/records-write.d.ts +3 -0
  108. package/dist/types/src/handlers/records-write.d.ts.map +1 -1
  109. package/dist/types/src/index.d.ts +3 -3
  110. package/dist/types/src/index.d.ts.map +1 -1
  111. package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
  112. package/dist/types/src/store/index-level.d.ts +37 -0
  113. package/dist/types/src/store/index-level.d.ts.map +1 -1
  114. package/dist/types/src/store/message-store-level.d.ts +23 -6
  115. package/dist/types/src/store/message-store-level.d.ts.map +1 -1
  116. package/dist/types/src/store/storage-controller.d.ts.map +1 -1
  117. package/dist/types/src/types/message-store.d.ts +23 -2
  118. package/dist/types/src/types/message-store.d.ts.map +1 -1
  119. package/dist/types/src/types/messages-types.d.ts +14 -0
  120. package/dist/types/src/types/messages-types.d.ts.map +1 -1
  121. package/dist/types/src/types/protocols-types.d.ts +7 -24
  122. package/dist/types/src/types/protocols-types.d.ts.map +1 -1
  123. package/dist/types/src/types/query-types.d.ts +8 -1
  124. package/dist/types/src/types/query-types.d.ts.map +1 -1
  125. package/dist/types/src/types/records-types.d.ts +2 -1
  126. package/dist/types/src/types/records-types.d.ts.map +1 -1
  127. package/dist/types/src/utils/filter.d.ts +14 -1
  128. package/dist/types/src/utils/filter.d.ts.map +1 -1
  129. package/dist/types/src/utils/grant-key-coverage.d.ts.map +1 -1
  130. package/dist/types/src/utils/messages.d.ts +8 -0
  131. package/dist/types/src/utils/messages.d.ts.map +1 -1
  132. package/dist/types/src/utils/permission-scope.d.ts +0 -2
  133. package/dist/types/src/utils/permission-scope.d.ts.map +1 -1
  134. package/dist/types/src/utils/record-limit-occupancy.d.ts +25 -12
  135. package/dist/types/src/utils/record-limit-occupancy.d.ts.map +1 -1
  136. package/dist/types/src/utils/records.d.ts +3 -2
  137. package/dist/types/src/utils/records.d.ts.map +1 -1
  138. package/dist/types/src/utils/replication.d.ts +8 -1
  139. package/dist/types/src/utils/replication.d.ts.map +1 -1
  140. package/dist/types/tests/features/records-delivery.spec.d.ts.map +1 -1
  141. package/dist/types/tests/features/records-nested-query-scope.spec.d.ts.map +1 -1
  142. package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -1
  143. package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
  144. package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
  145. package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
  146. package/dist/types/tests/store/message-store-cross-context.spec.d.ts +2 -0
  147. package/dist/types/tests/store/message-store-cross-context.spec.d.ts.map +1 -0
  148. package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
  149. package/package.json +4 -4
  150. package/src/core/dwn-constant.ts +2 -2
  151. package/src/core/dwn-error.ts +0 -2
  152. package/src/core/protocol-authorization-validation.ts +1 -33
  153. package/src/core/protocol-authorization.ts +0 -7
  154. package/src/core/validation-state-reader.ts +2 -3
  155. package/src/handlers/messages-query.ts +3 -41
  156. package/src/handlers/messages-subscribe.ts +67 -3
  157. package/src/handlers/records-count.ts +34 -13
  158. package/src/handlers/records-query.ts +14 -11
  159. package/src/handlers/records-subscribe.ts +18 -11
  160. package/src/handlers/records-write.ts +17 -32
  161. package/src/index.ts +3 -3
  162. package/src/interfaces/protocols-configure.ts +4 -13
  163. package/src/store/index-level.ts +197 -10
  164. package/src/store/message-store-level.ts +220 -27
  165. package/src/store/storage-controller.ts +1 -3
  166. package/src/types/message-store.ts +25 -2
  167. package/src/types/messages-types.ts +14 -0
  168. package/src/types/protocols-types.ts +7 -26
  169. package/src/types/query-types.ts +10 -2
  170. package/src/types/records-types.ts +2 -1
  171. package/src/utils/filter.ts +40 -3
  172. package/src/utils/grant-key-coverage.ts +4 -7
  173. package/src/utils/messages.ts +49 -14
  174. package/src/utils/permission-scope.ts +4 -11
  175. package/src/utils/record-limit-occupancy.ts +105 -293
  176. package/src/utils/records.ts +9 -9
  177. package/src/utils/replication.ts +19 -1
@@ -1,10 +1,10 @@
1
1
  import { isEmptyObject } from '@enbox/common';
2
2
  import { lexicographicalCompare } from '../utils/string.js';
3
3
  import { SortDirection } from '../types/query-types.js';
4
+ import { assertValidSubtreeFilters, FilterSelector, FilterUtility, isSubtreeFilter } from '../utils/filter.js';
4
5
  import { countWithCompoundIndex, createCompoundIndexDeleteOperation, createCompoundIndexPutOperation, queryWithCompoundIndex, selectCompoundIndex, } from './index-level-compound.js';
5
6
  import { createLevelDatabase, LevelWrapper } from './level-wrapper.js';
6
7
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
7
- import { FilterSelector, FilterUtility } from '../utils/filter.js';
8
8
  const INDEX_SUBLEVEL_NAME = 'index';
9
9
  /**
10
10
  * A LevelDB implementation for indexing the messages and events stored in the DWN.
@@ -207,12 +207,11 @@ export class IndexLevel {
207
207
  * @returns {IndexedItem[]} an array of `IndexedItem` that match the given filters.
208
208
  */
209
209
  async query(tenant, filters, queryOptions, options) {
210
+ assertValidSubtreeFilters(filters);
210
211
  // Strategy 1: try compound index for single-filter queries
211
- if (filters.length === 1 && !isEmptyObject(filters[0])) {
212
- const compoundResult = selectCompoundIndex(filters[0], queryOptions, this._compoundIndexes);
213
- if (compoundResult !== undefined) {
214
- return queryWithCompoundIndex(this.db, tenant, filters[0], queryOptions, compoundResult, IndexLevel.encodeValue, IndexLevel.delimiter, this.queryWithIteratorPaging.bind(this), options);
215
- }
212
+ const compoundQuery = this.queryUsingCompoundIndex(tenant, filters, queryOptions, options);
213
+ if (compoundQuery !== undefined) {
214
+ return compoundQuery;
216
215
  }
217
216
  // Strategy 2: in-memory paging for concise filters
218
217
  if (IndexLevel.shouldQueryWithInMemoryPaging(filters, queryOptions)) {
@@ -221,6 +220,28 @@ export class IndexLevel {
221
220
  // Strategy 3: iterator paging (default)
222
221
  return this.queryWithIteratorPaging(tenant, filters, queryOptions, options);
223
222
  }
223
+ /**
224
+ * Queries one bounded page without selecting the in-memory strategy.
225
+ *
226
+ * Projection callers use this when they must close the outer iterator before
227
+ * opening related index ranges. A matching compound index is preferred;
228
+ * otherwise the requested-sort index is streamed directly.
229
+ */
230
+ async queryWithBoundedPaging(tenant, filters, queryOptions, options) {
231
+ assertValidSubtreeFilters(filters);
232
+ const compoundQuery = this.queryUsingCompoundIndex(tenant, filters, queryOptions, options);
233
+ return compoundQuery ?? this.queryWithIteratorPaging(tenant, filters, queryOptions, options);
234
+ }
235
+ queryUsingCompoundIndex(tenant, filters, queryOptions, options) {
236
+ if (filters.length !== 1 || isEmptyObject(filters[0])) {
237
+ return undefined;
238
+ }
239
+ const compoundIndex = selectCompoundIndex(filters[0], queryOptions, this._compoundIndexes);
240
+ if (compoundIndex === undefined) {
241
+ return undefined;
242
+ }
243
+ return queryWithCompoundIndex(this.db, tenant, filters[0], queryOptions, compoundIndex, IndexLevel.encodeValue, IndexLevel.delimiter, this.queryWithIteratorPaging.bind(this), options);
244
+ }
224
245
  /**
225
246
  * Counts the number of items that match the given filters without loading full records.
226
247
  *
@@ -228,6 +249,7 @@ export class IndexLevel {
228
249
  * Otherwise, falls back to counting via the existing query strategies.
229
250
  */
230
251
  async count(tenant, filters, queryOptions, options) {
252
+ assertValidSubtreeFilters(filters);
231
253
  // try compound index for single-filter queries
232
254
  if (filters.length === 1 && !isEmptyObject(filters[0])) {
233
255
  const compoundResult = selectCompoundIndex(filters[0], { ...queryOptions }, this._compoundIndexes);
@@ -239,6 +261,94 @@ export class IndexLevel {
239
261
  const results = await this.query(tenant, filters, { ...queryOptions }, options);
240
262
  return results.length;
241
263
  }
264
+ /**
265
+ * Finds the inclusive rank boundary for one `$recordLimit` parent group.
266
+ *
267
+ * The existing `parentId` index keeps the scan isolated to one nested-record
268
+ * group. Root records have no `parentId`, so they are read from the exact
269
+ * `protocolPath` range and explicitly fenced to rows without a parent. The
270
+ * bounded max-heap retains only the earliest `max` rank keys while the range
271
+ * is streamed; no group-sized array is materialized.
272
+ */
273
+ async findRecordLimitRankCutoff(tenant, candidateFilter, parentId, max, options) {
274
+ if (!Number.isInteger(max) || max < 1) {
275
+ throw new TypeError(`IndexLevel: record-limit max must be a positive integer.`);
276
+ }
277
+ const protocolPath = candidateFilter.protocolPath;
278
+ if (typeof protocolPath !== 'string') {
279
+ throw new TypeError(`IndexLevel: record-limit candidate filter must contain one protocolPath.`);
280
+ }
281
+ const indexName = parentId === undefined ? 'protocolPath' : 'parentId';
282
+ const indexValue = parentId ?? protocolPath;
283
+ const matchPrefix = IndexLevel.keySegmentJoin(IndexLevel.encodeValue(indexValue), '');
284
+ const partition = await this.getIndexPartition(tenant, indexName);
285
+ const rankHeap = [];
286
+ for await (const [key, value] of partition.iterator({ gt: matchPrefix }, options)) {
287
+ if (!key.startsWith(matchPrefix)) {
288
+ break;
289
+ }
290
+ const item = JSON.parse(value);
291
+ if ((parentId === undefined && item.indexes.parentId !== undefined) ||
292
+ !FilterUtility.matchFilter(item.indexes, candidateFilter)) {
293
+ continue;
294
+ }
295
+ IndexLevel.addToBoundedMaxHeap(rankHeap, IndexLevel.createRecordLimitRankKey(item.indexes), max);
296
+ }
297
+ return rankHeap[0];
298
+ }
299
+ /**
300
+ * Builds the deterministic `$recordLimit` rank key: oldest creation time,
301
+ * then record ID. Message CID deliberately does not participate because
302
+ * occupancy belongs to the logical record, not a particular update.
303
+ */
304
+ static createRecordLimitRankKey(indexes) {
305
+ const { dateCreated, recordId } = indexes;
306
+ if (typeof dateCreated !== 'string' || typeof recordId !== 'string') {
307
+ throw new TypeError(`IndexLevel: record-limit candidates require string dateCreated and recordId indexes.`);
308
+ }
309
+ return IndexLevel.keySegmentJoin(IndexLevel.encodeValue(dateCreated), IndexLevel.encodeValue(recordId));
310
+ }
311
+ static addToBoundedMaxHeap(heap, value, max) {
312
+ if (heap.length < max) {
313
+ heap.push(value);
314
+ IndexLevel.siftRecordLimitRankUp(heap, heap.length - 1);
315
+ return;
316
+ }
317
+ if (lexicographicalCompare(value, heap[0]) >= 0) {
318
+ return;
319
+ }
320
+ heap[0] = value;
321
+ IndexLevel.siftRecordLimitRankDown(heap, 0);
322
+ }
323
+ static siftRecordLimitRankUp(heap, startIndex) {
324
+ let index = startIndex;
325
+ while (index > 0) {
326
+ const parentIndex = (index - 1) >>> 1;
327
+ if (lexicographicalCompare(heap[parentIndex], heap[index]) >= 0) {
328
+ return;
329
+ }
330
+ [heap[parentIndex], heap[index]] = [heap[index], heap[parentIndex]];
331
+ index = parentIndex;
332
+ }
333
+ }
334
+ static siftRecordLimitRankDown(heap, startIndex) {
335
+ let index = startIndex;
336
+ while (true) {
337
+ const leftIndex = index * 2 + 1;
338
+ if (leftIndex >= heap.length) {
339
+ return;
340
+ }
341
+ const rightIndex = leftIndex + 1;
342
+ const largerChildIndex = rightIndex < heap.length && lexicographicalCompare(heap[rightIndex], heap[leftIndex]) > 0
343
+ ? rightIndex
344
+ : leftIndex;
345
+ if (lexicographicalCompare(heap[index], heap[largerChildIndex]) >= 0) {
346
+ return;
347
+ }
348
+ [heap[index], heap[largerChildIndex]] = [heap[largerChildIndex], heap[index]];
349
+ index = largerChildIndex;
350
+ }
351
+ }
242
352
  /**
243
353
  * Queries the sort property index for items that match the filters. If no filters are provided, all items are returned.
244
354
  * This query is a linear iterator over the sorted index, checking each item for a match.
@@ -416,6 +526,12 @@ export class IndexLevel {
416
526
  processResults(exactMatches);
417
527
  }
418
528
  }
529
+ else if (isSubtreeFilter(propertyFilter)) {
530
+ const exactMatches = await this.filterExactMatches(tenant, propertyName, propertyFilter.subtree, levelOptions);
531
+ processResults(exactMatches);
532
+ const descendantMatches = await this.filterSubtreeDescendantMatches(tenant, propertyName, propertyFilter.subtree, levelOptions);
533
+ processResults(descendantMatches);
534
+ }
419
535
  else if (FilterUtility.isRangeFilter(propertyFilter)) {
420
536
  // `propertyFilter` is a `RangeFilter`
421
537
  const rangeMatches = await this.filterRangeMatches(tenant, propertyName, propertyFilter, levelOptions);
@@ -450,6 +566,27 @@ export class IndexLevel {
450
566
  }
451
567
  return matches;
452
568
  }
569
+ /**
570
+ * Returns every slash-delimited descendant of one hierarchical path.
571
+ *
572
+ * The lower bound removes JSON's closing quote so it is the encoded key
573
+ * prefix itself. ASCII `/` and `0` are adjacent in the store's lexicographic
574
+ * ordering, making `path0` the first value outside that prefix without
575
+ * relying on a finite Unicode sentinel.
576
+ */
577
+ async filterSubtreeDescendantMatches(tenant, propertyName, subtree, options) {
578
+ const encodedPrefix = IndexLevel.encodeValue(`${subtree}/`).slice(0, -1);
579
+ const iteratorOptions = {
580
+ gte: encodedPrefix,
581
+ lt: IndexLevel.encodeValue(`${subtree}0`),
582
+ };
583
+ const filterPartition = await this.getIndexPartition(tenant, propertyName);
584
+ const matches = [];
585
+ for await (const [_key, value] of filterPartition.iterator(iteratorOptions, options)) {
586
+ matches.push(JSON.parse(value));
587
+ }
588
+ return matches;
589
+ }
453
590
  /**
454
591
  * Returns items that match the range filter.
455
592
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index-level.js","sourceRoot":"","sources":["../../../../src/store/index-level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-level.js","sourceRoot":"","sources":["../../../../src/store/index-level.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,18 @@
1
1
  import * as block from 'multiformats/block';
2
2
  import * as cbor from '@ipld/dag-cbor';
3
+ import { runWithCrossContextLock } from '@enbox/common';
3
4
  import { Cid } from '../utils/cid.js';
4
5
  import { CID } from 'multiformats/cid';
5
6
  import { executeUnlessAborted } from '../utils/abort.js';
6
- import { FilterUtility } from '../utils/filter.js';
7
7
  import { IndexLevel } from './index-level.js';
8
8
  import { Message } from '../core/message.js';
9
9
  import { Replication } from '../utils/replication.js';
10
10
  import { sha256 } from 'multiformats/hashes/sha2';
11
11
  import { SortDirection } from '../types/query-types.js';
12
+ import { assertValidSubtreeFilters, FilterUtility } from '../utils/filter.js';
12
13
  import { createLevelDatabase, LevelWrapper } from './level-wrapper.js';
13
14
  import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
15
+ import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
14
16
  /**
15
17
  * Default compound indexes that cover the most common DWN query patterns.
16
18
  * These are automatically registered unless overridden via config.
@@ -67,6 +69,8 @@ const FINGERPRINT_PARTITION = 'fp';
67
69
  const HEADS_PARTITION = 'heads';
68
70
  const META_PARTITION = 'meta';
69
71
  const EPOCH_KEY = 'epoch';
72
+ const RECORD_LIMIT_RAW_PAGE_SIZE = 128;
73
+ const RECORD_LIMIT_GROUP_CACHE_SIZE = 128;
70
74
  const CURRENT_PARTITIONS = new Set([
71
75
  BLOCKS_PARTITION,
72
76
  INDEX_PARTITION,
@@ -83,8 +87,9 @@ const CURRENT_PARTITIONS = new Set([
83
87
  * the store epoch are all sublevels of one Level instance, so every mutation commits as one fully
84
88
  * atomic batch.
85
89
  *
86
- * A per-tenant async write mutex spans seq assignment through batch write, so commit order equals
87
- * seq order by construction. Seq assignment is gap-free (a failed batch never persists the head),
90
+ * A per-tenant cross-context write lock spans seq assignment through batch write, so commit order
91
+ * equals seq order by construction even when browser tabs, workers, or service workers share the
92
+ * same IndexedDB database. Seq assignment is gap-free (a failed batch never persists the head),
88
93
  * while the readable log stays sparse after compaction and under filters — readers never assume
89
94
  * contiguity.
90
95
  */
@@ -93,7 +98,6 @@ export class MessageStoreLevel {
93
98
  wakePublisher;
94
99
  partitionsPromise;
95
100
  epochPromise;
96
- writeLocks = new Map();
97
101
  /**
98
102
  * @param {MessageStoreLevelConfig} config
99
103
  * @param {string} config.location - must be a directory path (relative or absolute) where
@@ -213,7 +217,15 @@ export class MessageStoreLevel {
213
217
  // this adds 1 to the limit if provided, that way we can check to see if there are additional results and provide a return cursor.
214
218
  const queryOptions = MessageStoreLevel.buildQueryOptions(messageSort, pagination);
215
219
  const index = await this.index();
216
- const results = await index.query(tenant, filters, queryOptions, options);
220
+ const results = options?.recordLimit === undefined
221
+ ? await index.query(tenant, filters, queryOptions, options)
222
+ : await this.collectRecordLimitPopulation({
223
+ tenant,
224
+ filters,
225
+ queryOptions,
226
+ recordLimit: options.recordLimit,
227
+ options,
228
+ });
217
229
  let cursor;
218
230
  // checks to see if the returned results are greater than the limit, which would indicate additional results.
219
231
  if (pagination?.limit !== undefined && pagination.limit < results.length) {
@@ -236,7 +248,141 @@ export class MessageStoreLevel {
236
248
  options?.signal?.throwIfAborted();
237
249
  const queryOptions = MessageStoreLevel.buildQueryOptions(messageSort);
238
250
  const index = await this.index();
239
- return index.count(tenant, filters, queryOptions, options);
251
+ if (options?.recordLimit === undefined) {
252
+ return index.count(tenant, filters, queryOptions, options);
253
+ }
254
+ let count = 0;
255
+ for await (const _item of this.iterateRecordLimitPopulation({
256
+ tenant,
257
+ filters,
258
+ queryOptions,
259
+ recordLimit: options.recordLimit,
260
+ options,
261
+ })) {
262
+ count++;
263
+ }
264
+ return count;
265
+ }
266
+ /**
267
+ * Materializes one bounded page from the shared record-limit population iterator.
268
+ */
269
+ async collectRecordLimitPopulation(input) {
270
+ const results = [];
271
+ for await (const item of this.iterateRecordLimitPopulation(input)) {
272
+ results.push(item);
273
+ }
274
+ return results;
275
+ }
276
+ /**
277
+ * Streams caller-filtered records in requested order and admits only records
278
+ * inside their direct-parent group's deterministic rank boundary.
279
+ *
280
+ * Raw candidates are fetched into a small page before any parent lookup is
281
+ * opened. This is deliberate: browser-level/IndexedDB cursors must not be
282
+ * held open while another index transaction is awaited.
283
+ */
284
+ async *iterateRecordLimitPopulation(input) {
285
+ const { filters, options, queryOptions, recordLimit, tenant } = input;
286
+ const index = await this.index();
287
+ const candidateFilter = MessageStoreLevel.buildRecordLimitCandidateFilter(recordLimit);
288
+ const groupCutoffs = new Map();
289
+ const outputLimit = queryOptions.limit;
290
+ let outputCount = 0;
291
+ let rawCursor = queryOptions.cursor;
292
+ if (outputLimit !== undefined && outputLimit <= 0) {
293
+ return;
294
+ }
295
+ while (true) {
296
+ const rawItems = await index.queryWithBoundedPaging(tenant, filters, {
297
+ ...queryOptions,
298
+ cursor: rawCursor,
299
+ limit: RECORD_LIMIT_RAW_PAGE_SIZE,
300
+ }, options);
301
+ if (rawItems.length === 0) {
302
+ return;
303
+ }
304
+ const occupants = await this.filterRecordLimitOccupants({
305
+ tenant,
306
+ index,
307
+ items: rawItems,
308
+ candidateFilter,
309
+ recordLimit,
310
+ groupCutoffs,
311
+ options,
312
+ limit: outputLimit === undefined ? undefined : outputLimit - outputCount,
313
+ });
314
+ for (const occupant of occupants) {
315
+ yield occupant;
316
+ outputCount++;
317
+ if (outputLimit !== undefined && outputCount >= outputLimit) {
318
+ return;
319
+ }
320
+ }
321
+ if (rawItems.length < RECORD_LIMIT_RAW_PAGE_SIZE) {
322
+ return;
323
+ }
324
+ rawCursor = IndexLevel.createCursorFromItem(rawItems.at(-1), queryOptions.sortProperty);
325
+ }
326
+ }
327
+ async filterRecordLimitOccupants(input) {
328
+ const { items, limit, ...occupantInput } = input;
329
+ const occupants = [];
330
+ for (const item of items) {
331
+ if (await this.isWithinRecordLimit({ ...occupantInput, item })) {
332
+ occupants.push(item);
333
+ if (limit !== undefined && occupants.length >= limit) {
334
+ break;
335
+ }
336
+ }
337
+ }
338
+ return occupants;
339
+ }
340
+ async isWithinRecordLimit(input) {
341
+ if (!FilterUtility.matchFilter(input.item.indexes, input.candidateFilter)) {
342
+ return false;
343
+ }
344
+ const indexedParentId = input.item.indexes.parentId;
345
+ if (indexedParentId !== undefined && typeof indexedParentId !== 'string') {
346
+ throw new TypeError(`MessageStoreLevel: record-limit candidate parentId must be a string.`);
347
+ }
348
+ const parentId = indexedParentId;
349
+ const groupKey = parentId === undefined ? 'root' : `parent:${parentId}`;
350
+ let cutoff = input.groupCutoffs.get(groupKey);
351
+ if (cutoff !== undefined) {
352
+ // Refresh insertion order so the fixed-size map acts as a small LRU.
353
+ input.groupCutoffs.delete(groupKey);
354
+ input.groupCutoffs.set(groupKey, cutoff);
355
+ }
356
+ else {
357
+ cutoff = await input.index.findRecordLimitRankCutoff(input.tenant, input.candidateFilter, parentId, input.recordLimit.max, input.options);
358
+ if (cutoff === undefined) {
359
+ return false;
360
+ }
361
+ MessageStoreLevel.cacheRecordLimitCutoff(input.groupCutoffs, groupKey, cutoff);
362
+ }
363
+ return IndexLevel.createRecordLimitRankKey(input.item.indexes) <= cutoff;
364
+ }
365
+ static cacheRecordLimitCutoff(cache, groupKey, cutoff) {
366
+ if (cache.size >= RECORD_LIMIT_GROUP_CACHE_SIZE) {
367
+ const oldestKey = cache.keys().next().value;
368
+ if (oldestKey !== undefined) {
369
+ cache.delete(oldestKey);
370
+ }
371
+ }
372
+ cache.set(groupKey, cutoff);
373
+ }
374
+ static buildRecordLimitCandidateFilter(recordLimit) {
375
+ const filter = {
376
+ interface: DwnInterfaceName.Records,
377
+ method: DwnMethodName.Write,
378
+ isLatestBaseState: true,
379
+ protocol: recordLimit.protocol,
380
+ protocolPath: recordLimit.protocolPath,
381
+ };
382
+ if (recordLimit.contextId !== undefined) {
383
+ filter.contextId = { subtree: recordLimit.contextId };
384
+ }
385
+ return filter;
240
386
  }
241
387
  /**
242
388
  * Builds the IndexLevel QueryOptions object given MessageStore sort and pagination parameters.
@@ -488,7 +634,10 @@ export class MessageStoreLevel {
488
634
  async logRead(tenant, options = {}) {
489
635
  const partitions = await this.partitions();
490
636
  const { cursor, limit, filters } = options;
491
- // Head-captured-first: the per-tenant write mutex serializes commits in position order, so an
637
+ if (filters !== undefined) {
638
+ assertValidSubtreeFilters(filters);
639
+ }
640
+ // Head-captured-first: the per-tenant write lock serializes commits in position order, so an
492
641
  // observed head H is a visibility barrier — every position <= H is already committed when the
493
642
  // range scans below run, and anything committed afterward has a position > H and waits for
494
643
  // the next page.
@@ -498,8 +647,10 @@ export class MessageStoreLevel {
498
647
  }
499
648
  const startPosition = cursor === undefined ? 0n : BigInt(cursor.position);
500
649
  if (head === 0n) {
501
- // Nothing to scan — caught up at the input position.
502
- return { events: [], cursor, drained: true };
650
+ // Nothing to scan — caught up at the input position. A caller without a
651
+ // cursor still gets the position-zero anchor so an empty log yields a
652
+ // checkpointable token instead of forcing a rescan on every pass.
653
+ return { events: [], cursor: cursor ?? await this.buildToken(tenant, 0n), drained: true };
503
654
  }
504
655
  const maxResults = limit ?? Number.MAX_SAFE_INTEGER;
505
656
  if (maxResults <= 0) {
@@ -601,20 +752,8 @@ export class MessageStoreLevel {
601
752
  * a later batch could land first).
602
753
  */
603
754
  async withTenantWriteLock(tenant, task) {
604
- const previous = this.writeLocks.get(tenant) ?? Promise.resolve();
605
- let release;
606
- const current = new Promise((resolve) => { release = resolve; });
607
- this.writeLocks.set(tenant, current);
608
- await previous;
609
- try {
610
- return await task();
611
- }
612
- finally {
613
- release();
614
- if (this.writeLocks.get(tenant) === current) {
615
- this.writeLocks.delete(tenant);
616
- }
617
- }
755
+ const lockName = `enbox:dwn-message-store:${JSON.stringify([this.config.location, tenant])}`;
756
+ return runWithCrossContextLock(lockName, task);
618
757
  }
619
758
  /**
620
759
  * Reads the tenant's counter high-water (the highest position ever issued), `0n` when unused.