@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.
- package/dist/browser.mjs +1 -1
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/generated/precompiled-validators.js +734 -747
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/json-schemas/definitions.json +5 -0
- package/dist/esm/src/core/dwn-constant.js +2 -2
- package/dist/esm/src/core/dwn-error.js +0 -1
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-validation.js +1 -24
- package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +1 -5
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/validation-state-reader.js +2 -3
- package/dist/esm/src/core/validation-state-reader.js.map +1 -1
- package/dist/esm/src/handlers/messages-query.js +2 -29
- package/dist/esm/src/handlers/messages-query.js.map +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js +52 -1
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +18 -10
- package/dist/esm/src/handlers/records-count.js.map +1 -1
- package/dist/esm/src/handlers/records-query.js +10 -7
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +10 -7
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +8 -26
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +1 -1
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-configure.js +4 -9
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/store/index-level.js +143 -6
- package/dist/esm/src/store/index-level.js.map +1 -1
- package/dist/esm/src/store/message-store-level.js +162 -23
- package/dist/esm/src/store/message-store-level.js.map +1 -1
- package/dist/esm/src/store/storage-controller.js +1 -3
- package/dist/esm/src/store/storage-controller.js.map +1 -1
- package/dist/esm/src/types/protocols-types.js +0 -10
- package/dist/esm/src/types/protocols-types.js.map +1 -1
- package/dist/esm/src/utils/filter.js +35 -1
- package/dist/esm/src/utils/filter.js.map +1 -1
- package/dist/esm/src/utils/grant-key-coverage.js +4 -6
- package/dist/esm/src/utils/grant-key-coverage.js.map +1 -1
- package/dist/esm/src/utils/messages.js +40 -14
- package/dist/esm/src/utils/messages.js.map +1 -1
- package/dist/esm/src/utils/permission-scope.js +3 -9
- package/dist/esm/src/utils/permission-scope.js.map +1 -1
- package/dist/esm/src/utils/record-limit-occupancy.js +70 -202
- package/dist/esm/src/utils/record-limit-occupancy.js.map +1 -1
- package/dist/esm/src/utils/records.js +9 -9
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/src/utils/replication.js +14 -0
- package/dist/esm/src/utils/replication.js.map +1 -1
- package/dist/esm/tests/core/records-grant-authorization.spec.js +13 -0
- package/dist/esm/tests/core/records-grant-authorization.spec.js.map +1 -1
- package/dist/esm/tests/core/replication-replay-property.spec.js +2 -2
- package/dist/esm/tests/core/replication-replay-property.spec.js.map +1 -1
- package/dist/esm/tests/core/validation-read-closure.spec.js +1 -1
- package/dist/esm/tests/core/validation-read-closure.spec.js.map +1 -1
- package/dist/esm/tests/dwn.spec.js +2 -2
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/features/records-delivery.spec.js +2 -5
- package/dist/esm/tests/features/records-delivery.spec.js.map +1 -1
- package/dist/esm/tests/features/records-nested-query-scope.spec.js +138 -73
- package/dist/esm/tests/features/records-nested-query-scope.spec.js.map +1 -1
- package/dist/esm/tests/features/records-record-limit.spec.js +264 -95
- package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -1
- package/dist/esm/tests/fuzz/filter.fuzz.spec.js +19 -4
- package/dist/esm/tests/fuzz/filter.fuzz.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-query.spec.js +7 -15
- package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +129 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +57 -3
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/store/index-level.spec.js +114 -1
- package/dist/esm/tests/store/index-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store-cross-context.spec.js +46 -0
- package/dist/esm/tests/store/message-store-cross-context.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store-level.spec.js +27 -0
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -1
- package/dist/esm/tests/store/message-store.spec.js +81 -0
- package/dist/esm/tests/store/message-store.spec.js.map +1 -1
- package/dist/esm/tests/utils/filters.spec.js +25 -4
- package/dist/esm/tests/utils/filters.spec.js.map +1 -1
- package/dist/esm/tests/utils/permission-scope.spec.js +4 -0
- package/dist/esm/tests/utils/permission-scope.spec.js.map +1 -1
- package/dist/esm/tests/utils/records.spec.js +12 -0
- package/dist/esm/tests/utils/records.spec.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +3 -1
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
- package/dist/types/src/core/dwn-constant.d.ts +2 -2
- package/dist/types/src/core/dwn-error.d.ts +0 -1
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-validation.d.ts +0 -10
- package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/validation-state-reader.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-query.d.ts +0 -2
- package/dist/types/src/handlers/messages-query.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-subscribe.d.ts +16 -0
- package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/records-count.d.ts +1 -0
- package/dist/types/src/handlers/records-count.d.ts.map +1 -1
- package/dist/types/src/handlers/records-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/records-write.d.ts +3 -0
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +3 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/store/index-level.d.ts +37 -0
- package/dist/types/src/store/index-level.d.ts.map +1 -1
- package/dist/types/src/store/message-store-level.d.ts +23 -6
- package/dist/types/src/store/message-store-level.d.ts.map +1 -1
- package/dist/types/src/store/storage-controller.d.ts.map +1 -1
- package/dist/types/src/types/message-store.d.ts +23 -2
- package/dist/types/src/types/message-store.d.ts.map +1 -1
- package/dist/types/src/types/messages-types.d.ts +14 -0
- package/dist/types/src/types/messages-types.d.ts.map +1 -1
- package/dist/types/src/types/protocols-types.d.ts +7 -24
- package/dist/types/src/types/protocols-types.d.ts.map +1 -1
- package/dist/types/src/types/query-types.d.ts +8 -1
- package/dist/types/src/types/query-types.d.ts.map +1 -1
- package/dist/types/src/types/records-types.d.ts +2 -1
- package/dist/types/src/types/records-types.d.ts.map +1 -1
- package/dist/types/src/utils/filter.d.ts +14 -1
- package/dist/types/src/utils/filter.d.ts.map +1 -1
- package/dist/types/src/utils/grant-key-coverage.d.ts.map +1 -1
- package/dist/types/src/utils/messages.d.ts +8 -0
- package/dist/types/src/utils/messages.d.ts.map +1 -1
- package/dist/types/src/utils/permission-scope.d.ts +0 -2
- package/dist/types/src/utils/permission-scope.d.ts.map +1 -1
- package/dist/types/src/utils/record-limit-occupancy.d.ts +25 -12
- package/dist/types/src/utils/record-limit-occupancy.d.ts.map +1 -1
- package/dist/types/src/utils/records.d.ts +3 -2
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/src/utils/replication.d.ts +8 -1
- package/dist/types/src/utils/replication.d.ts.map +1 -1
- package/dist/types/tests/features/records-delivery.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-nested-query-scope.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
- package/dist/types/tests/store/message-store-cross-context.spec.d.ts +2 -0
- package/dist/types/tests/store/message-store-cross-context.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store.spec.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/core/dwn-constant.ts +2 -2
- package/src/core/dwn-error.ts +0 -2
- package/src/core/protocol-authorization-validation.ts +1 -33
- package/src/core/protocol-authorization.ts +0 -7
- package/src/core/validation-state-reader.ts +2 -3
- package/src/handlers/messages-query.ts +3 -41
- package/src/handlers/messages-subscribe.ts +67 -3
- package/src/handlers/records-count.ts +34 -13
- package/src/handlers/records-query.ts +14 -11
- package/src/handlers/records-subscribe.ts +18 -11
- package/src/handlers/records-write.ts +17 -32
- package/src/index.ts +3 -3
- package/src/interfaces/protocols-configure.ts +4 -13
- package/src/store/index-level.ts +197 -10
- package/src/store/message-store-level.ts +220 -27
- package/src/store/storage-controller.ts +1 -3
- package/src/types/message-store.ts +25 -2
- package/src/types/messages-types.ts +14 -0
- package/src/types/protocols-types.ts +7 -26
- package/src/types/query-types.ts +10 -2
- package/src/types/records-types.ts +2 -1
- package/src/utils/filter.ts +40 -3
- package/src/utils/grant-key-coverage.ts +4 -7
- package/src/utils/messages.ts +49 -14
- package/src/utils/permission-scope.ts +4 -11
- package/src/utils/record-limit-occupancy.ts +105 -293
- package/src/utils/records.ts +9 -9
- 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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
|
87
|
-
* seq order by construction
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
605
|
-
|
|
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.
|