@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,249 +1,117 @@
|
|
|
1
|
-
import { FilterUtility } from './filter.js';
|
|
2
1
|
import { getRuleSetAtPath } from './protocols.js';
|
|
3
|
-
import { lexicographicalCompare } from './string.js';
|
|
4
|
-
import { ProtocolRecordLimitStrategy } from '../types/protocols-types.js';
|
|
5
2
|
import { Records } from './records.js';
|
|
6
|
-
import { SortDirection } from '../types/query-types.js';
|
|
7
3
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
8
4
|
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
9
5
|
/**
|
|
10
|
-
* Queries
|
|
11
|
-
*
|
|
12
|
-
* Broad filters keep the store's native query path. Projecting those without a store-level grouping primitive would require
|
|
13
|
-
* scanning the full matching set, which is worse than leaving them unprojected until a bounded broad-query strategy exists.
|
|
6
|
+
* Queries the caller-visible portion of the deterministic `$recordLimit`
|
|
7
|
+
* occupant population for one concrete protocol path.
|
|
14
8
|
*/
|
|
15
9
|
export async function queryRecordsWithRecordLimitOccupancy(input) {
|
|
16
|
-
const
|
|
17
|
-
if (filterResolution === undefined) {
|
|
18
|
-
const { messages, cursor } = await input.messageStore.query(input.tenant, input.filters, input.messageSort, input.pagination);
|
|
19
|
-
return { messages: messages.filter(Records.isRecordsWrite), cursor };
|
|
20
|
-
}
|
|
21
|
-
if (filterResolution.projectedFilters.length === 0) {
|
|
22
|
-
return { messages: [] };
|
|
23
|
-
}
|
|
24
|
-
const { messages, cursor } = await input.messageStore.query(input.tenant, filterResolution.projectedFilters, input.messageSort, input.pagination);
|
|
10
|
+
const { messages, cursor } = await input.messageStore.query(input.tenant, input.filters, input.messageSort, input.pagination, input.recordLimit === undefined ? undefined : { recordLimit: input.recordLimit });
|
|
25
11
|
return { messages: messages.filter(Records.isRecordsWrite), cursor };
|
|
26
12
|
}
|
|
27
13
|
/**
|
|
28
|
-
* Counts
|
|
14
|
+
* Counts the same deterministic `$recordLimit` occupant population returned
|
|
15
|
+
* by {@link queryRecordsWithRecordLimitOccupancy}.
|
|
29
16
|
*/
|
|
30
17
|
export async function countRecordsWithRecordLimitOccupancy(input) {
|
|
31
|
-
|
|
32
|
-
if (filterResolution === undefined) {
|
|
33
|
-
return input.messageStore.count(input.tenant, input.filters, input.messageSort);
|
|
34
|
-
}
|
|
35
|
-
if (filterResolution.projectedFilters.length === 0) {
|
|
36
|
-
return 0;
|
|
37
|
-
}
|
|
38
|
-
return input.messageStore.count(input.tenant, filterResolution.projectedFilters, input.messageSort);
|
|
18
|
+
return input.messageStore.count(input.tenant, input.filters, input.messageSort, input.recordLimit === undefined ? undefined : { recordLimit: input.recordLimit });
|
|
39
19
|
}
|
|
40
20
|
/**
|
|
41
|
-
* Returns true when the latest RecordsWrite is
|
|
21
|
+
* Returns true when the latest RecordsWrite is part of its path's current
|
|
22
|
+
* `$recordLimit` occupant population.
|
|
42
23
|
*/
|
|
43
24
|
export async function isRecordLimitOccupant(input) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
validationStateReader: input.validationStateReader,
|
|
47
|
-
tenant: input.tenant,
|
|
48
|
-
message: input.message,
|
|
49
|
-
messageTimestamp: input.messageTimestamp,
|
|
50
|
-
recordLimitDefinitions: new Map(),
|
|
51
|
-
});
|
|
52
|
-
if (recordLimit === undefined) {
|
|
25
|
+
const recordLimitDefinition = await getRecordLimitForMessage(input);
|
|
26
|
+
if (recordLimitDefinition === undefined) {
|
|
53
27
|
return true;
|
|
54
28
|
}
|
|
55
|
-
const occupantRecordIds = await findOccupantRecordIds({
|
|
56
|
-
messageStore: input.messageStore,
|
|
57
|
-
tenant: input.tenant,
|
|
58
|
-
scope: getRecordLimitScope(input.message),
|
|
59
|
-
recordLimit,
|
|
60
|
-
});
|
|
61
|
-
return occupantRecordIds.has(input.message.recordId);
|
|
62
|
-
}
|
|
63
|
-
async function resolveRecordLimitFilters(input) {
|
|
64
|
-
const recordLimitDefinitions = new Map();
|
|
65
|
-
const projectedFilters = [];
|
|
66
|
-
let projectionApplied = false;
|
|
67
|
-
for (const filter of input.filters) {
|
|
68
|
-
const recordLimit = await getRecordLimitForFilter({
|
|
69
|
-
messageStore: input.messageStore,
|
|
70
|
-
validationStateReader: input.validationStateReader,
|
|
71
|
-
tenant: input.tenant,
|
|
72
|
-
filter,
|
|
73
|
-
messageTimestamp: input.messageTimestamp,
|
|
74
|
-
recordLimitDefinitions,
|
|
75
|
-
});
|
|
76
|
-
if (recordLimit === undefined) {
|
|
77
|
-
projectedFilters.push(filter);
|
|
78
|
-
continue;
|
|
79
|
-
}
|
|
80
|
-
const scope = getRecordLimitScopeFromFilter(filter);
|
|
81
|
-
if (scope === undefined) {
|
|
82
|
-
return undefined;
|
|
83
|
-
}
|
|
84
|
-
const occupantRecordIds = await findOccupantRecordIds({
|
|
85
|
-
messageStore: input.messageStore,
|
|
86
|
-
tenant: input.tenant,
|
|
87
|
-
scope,
|
|
88
|
-
recordLimit,
|
|
89
|
-
});
|
|
90
|
-
const projectedFilter = buildProjectedFilter(filter, occupantRecordIds);
|
|
91
|
-
if (projectedFilter !== undefined) {
|
|
92
|
-
projectedFilters.push(projectedFilter);
|
|
93
|
-
}
|
|
94
|
-
projectionApplied = true;
|
|
95
|
-
}
|
|
96
|
-
return projectionApplied ? { projectedFilters } : undefined;
|
|
97
|
-
}
|
|
98
|
-
async function getRecordLimitForMessage(input) {
|
|
99
29
|
const { protocol, protocolPath } = input.message.descriptor;
|
|
30
|
+
const recordLimit = {
|
|
31
|
+
protocol,
|
|
32
|
+
protocolPath,
|
|
33
|
+
max: recordLimitDefinition.max,
|
|
34
|
+
};
|
|
35
|
+
const parentContextId = Records.getParentContextFromOfContextId(input.message.contextId);
|
|
36
|
+
if (parentContextId !== undefined && parentContextId !== '') {
|
|
37
|
+
recordLimit.contextId = parentContextId;
|
|
38
|
+
}
|
|
39
|
+
const count = await input.messageStore.count(input.tenant, [{
|
|
40
|
+
interface: DwnInterfaceName.Records,
|
|
41
|
+
method: DwnMethodName.Write,
|
|
42
|
+
isLatestBaseState: true,
|
|
43
|
+
protocol,
|
|
44
|
+
protocolPath,
|
|
45
|
+
recordId: input.message.recordId,
|
|
46
|
+
}], undefined, { recordLimit });
|
|
47
|
+
return count > 0;
|
|
48
|
+
}
|
|
49
|
+
/** Resolves one incoming Records filter to its store-level occupancy policy. */
|
|
50
|
+
export async function resolveRecordLimitOccupancy(input) {
|
|
51
|
+
const { contextId, protocol, protocolPath } = input.recordsFilter;
|
|
100
52
|
if (protocol === undefined || protocolPath === undefined) {
|
|
101
53
|
return undefined;
|
|
102
54
|
}
|
|
103
|
-
|
|
55
|
+
const recordLimitDefinition = await getRecordLimit({
|
|
104
56
|
validationStateReader: input.validationStateReader,
|
|
105
57
|
tenant: input.tenant,
|
|
106
58
|
protocol,
|
|
107
59
|
protocolPath,
|
|
108
60
|
messageTimestamp: input.messageTimestamp,
|
|
109
|
-
recordLimitDefinitions: input.recordLimitDefinitions,
|
|
110
61
|
});
|
|
111
|
-
|
|
112
|
-
async function getRecordLimitForFilter(input) {
|
|
113
|
-
if (input.filter.interface !== DwnInterfaceName.Records ||
|
|
114
|
-
input.filter.method !== DwnMethodName.Write ||
|
|
115
|
-
input.filter.isLatestBaseState !== true) {
|
|
116
|
-
return undefined;
|
|
117
|
-
}
|
|
118
|
-
const { protocol, protocolPath } = input.filter;
|
|
119
|
-
if (typeof protocol !== 'string' || typeof protocolPath !== 'string') {
|
|
62
|
+
if (recordLimitDefinition === undefined) {
|
|
120
63
|
return undefined;
|
|
121
64
|
}
|
|
122
|
-
|
|
123
|
-
validationStateReader: input.validationStateReader,
|
|
124
|
-
tenant: input.tenant,
|
|
65
|
+
const recordLimit = {
|
|
125
66
|
protocol,
|
|
126
67
|
protocolPath,
|
|
127
|
-
|
|
128
|
-
recordLimitDefinitions: input.recordLimitDefinitions,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
async function getRecordLimit(input) {
|
|
132
|
-
const key = `${input.protocol}\u0000${input.protocolPath}`;
|
|
133
|
-
if (!input.recordLimitDefinitions.has(key)) {
|
|
134
|
-
let protocolDefinition;
|
|
135
|
-
try {
|
|
136
|
-
protocolDefinition = await input.validationStateReader.fetchProtocolDefinition(input.tenant, input.protocol, input.messageTimestamp);
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
if (error instanceof DwnError && error.code === DwnErrorCode.ProtocolAuthorizationProtocolNotFound) {
|
|
140
|
-
input.recordLimitDefinitions.set(key, undefined);
|
|
141
|
-
return undefined;
|
|
142
|
-
}
|
|
143
|
-
throw error;
|
|
144
|
-
}
|
|
145
|
-
const ruleSet = getRuleSetAtPath(input.protocolPath, protocolDefinition.structure);
|
|
146
|
-
const recordLimit = ruleSet?.$recordLimit;
|
|
147
|
-
input.recordLimitDefinitions.set(key, recordLimit?.strategy === ProtocolRecordLimitStrategy.Reject ? recordLimit : undefined);
|
|
148
|
-
}
|
|
149
|
-
return input.recordLimitDefinitions.get(key);
|
|
150
|
-
}
|
|
151
|
-
async function findOccupantRecordIds(input) {
|
|
152
|
-
const scopeFilter = buildRecordLimitScopeFilter(input.scope);
|
|
153
|
-
const messageSort = { dateCreated: SortDirection.Ascending };
|
|
154
|
-
const { messages: firstPage } = await input.messageStore.query(input.tenant, [scopeFilter], messageSort, { limit: input.recordLimit.max });
|
|
155
|
-
const firstPageCandidates = firstPage.filter(Records.isRecordsWrite);
|
|
156
|
-
if (firstPageCandidates.length === 0) {
|
|
157
|
-
return new Set();
|
|
158
|
-
}
|
|
159
|
-
const boundaryDateCreated = firstPageCandidates.at(-1).descriptor.dateCreated;
|
|
160
|
-
const beforeBoundary = firstPageCandidates.filter((message) => message.descriptor.dateCreated < boundaryDateCreated);
|
|
161
|
-
let boundaryCandidates = firstPageCandidates.filter((message) => message.descriptor.dateCreated === boundaryDateCreated);
|
|
162
|
-
if (firstPageCandidates.length === input.recordLimit.max) {
|
|
163
|
-
const { messages } = await input.messageStore.query(input.tenant, [{ ...scopeFilter, dateCreated: boundaryDateCreated }], messageSort);
|
|
164
|
-
boundaryCandidates = messages.filter(Records.isRecordsWrite);
|
|
165
|
-
}
|
|
166
|
-
boundaryCandidates.sort(compareRecordLimitCandidates);
|
|
167
|
-
const rankedCandidates = [
|
|
168
|
-
...beforeBoundary,
|
|
169
|
-
...boundaryCandidates,
|
|
170
|
-
];
|
|
171
|
-
return selectOccupantRecordIds({
|
|
172
|
-
records: rankedCandidates,
|
|
173
|
-
max: input.recordLimit.max,
|
|
174
|
-
getScopeKey: () => '',
|
|
175
|
-
compareRecords: compareRecordLimitCandidates,
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
function buildRecordLimitScopeFilter(scope) {
|
|
179
|
-
const filter = {
|
|
180
|
-
interface: DwnInterfaceName.Records,
|
|
181
|
-
method: DwnMethodName.Write,
|
|
182
|
-
isLatestBaseState: true,
|
|
183
|
-
protocol: scope.protocol,
|
|
184
|
-
protocolPath: scope.protocolPath,
|
|
68
|
+
max: recordLimitDefinition.max,
|
|
185
69
|
};
|
|
186
|
-
if (scope.parentContextId !== '') {
|
|
187
|
-
filter.contextId = FilterUtility.constructPrefixFilterAsRangeFilter(scope.parentContextId);
|
|
188
|
-
}
|
|
189
|
-
return filter;
|
|
190
|
-
}
|
|
191
|
-
function getRecordLimitScopeFromFilter(filter) {
|
|
192
|
-
const { protocol, protocolPath } = filter;
|
|
193
|
-
if (typeof protocol !== 'string' || typeof protocolPath !== 'string') {
|
|
194
|
-
return undefined;
|
|
195
|
-
}
|
|
196
70
|
if (!protocolPath.includes('/')) {
|
|
197
|
-
return
|
|
71
|
+
return recordLimit;
|
|
198
72
|
}
|
|
199
|
-
|
|
200
|
-
if (parentContextId === undefined) {
|
|
73
|
+
if (contextId === undefined) {
|
|
201
74
|
return undefined;
|
|
202
75
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
parentContextId: Records.getParentContextFromOfContextId(message.contextId) ?? '',
|
|
210
|
-
};
|
|
76
|
+
const contextDepth = contextId.split('/').length;
|
|
77
|
+
const protocolPathDepth = protocolPath.split('/').length;
|
|
78
|
+
recordLimit.contextId = contextDepth === protocolPathDepth
|
|
79
|
+
? Records.getParentContextFromOfContextId(contextId)
|
|
80
|
+
: contextId;
|
|
81
|
+
return recordLimit;
|
|
211
82
|
}
|
|
212
|
-
function
|
|
213
|
-
const {
|
|
214
|
-
if (
|
|
215
|
-
return undefined;
|
|
216
|
-
}
|
|
217
|
-
if (typeof contextId.gte !== 'string' || contextId.lt !== `${contextId.gte}\uffff`) {
|
|
83
|
+
async function getRecordLimitForMessage(input) {
|
|
84
|
+
const { protocol, protocolPath } = input.message.descriptor;
|
|
85
|
+
if (protocol === undefined || protocolPath === undefined) {
|
|
218
86
|
return undefined;
|
|
219
87
|
}
|
|
220
|
-
return
|
|
88
|
+
return getRecordLimit({
|
|
89
|
+
validationStateReader: input.validationStateReader,
|
|
90
|
+
tenant: input.tenant,
|
|
91
|
+
protocol,
|
|
92
|
+
protocolPath,
|
|
93
|
+
messageTimestamp: input.messageTimestamp,
|
|
94
|
+
});
|
|
221
95
|
}
|
|
222
|
-
function
|
|
223
|
-
let
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
projectedRecordIds = occupantRecordIds.has(existingRecordIdFilter) ? [existingRecordIdFilter] : [];
|
|
227
|
-
}
|
|
228
|
-
else if (Array.isArray(existingRecordIdFilter)) {
|
|
229
|
-
projectedRecordIds = existingRecordIdFilter
|
|
230
|
-
.filter((recordId) => typeof recordId === 'string' && occupantRecordIds.has(recordId));
|
|
231
|
-
}
|
|
232
|
-
if (projectedRecordIds.length === 0) {
|
|
233
|
-
return undefined;
|
|
96
|
+
async function getRecordLimit(input) {
|
|
97
|
+
let protocolDefinition;
|
|
98
|
+
try {
|
|
99
|
+
protocolDefinition = await input.validationStateReader.fetchProtocolDefinition(input.tenant, input.protocol, input.messageTimestamp);
|
|
234
100
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
function compareRecordLimitCandidates(left, right) {
|
|
241
|
-
const dateComparison = lexicographicalCompare(left.descriptor.dateCreated, right.descriptor.dateCreated);
|
|
242
|
-
if (dateComparison !== 0) {
|
|
243
|
-
return dateComparison;
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (error instanceof DwnError && error.code === DwnErrorCode.ProtocolAuthorizationProtocolNotFound) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
throw error;
|
|
244
106
|
}
|
|
245
|
-
|
|
107
|
+
const ruleSet = getRuleSetAtPath(input.protocolPath, protocolDefinition.structure);
|
|
108
|
+
const recordLimit = ruleSet?.$recordLimit;
|
|
109
|
+
return recordLimit;
|
|
246
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Selects a bounded occupant set for an in-memory projection whose grouping
|
|
113
|
+
* and ranking policy is supplied by the caller.
|
|
114
|
+
*/
|
|
247
115
|
export function selectOccupantRecordIds(input) {
|
|
248
116
|
const occupants = new Set();
|
|
249
117
|
const groups = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-limit-occupancy.js","sourceRoot":"","sources":["../../../../src/utils/record-limit-occupancy.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"record-limit-occupancy.js","sourceRoot":"","sources":["../../../../src/utils/record-limit-occupancy.ts"],"names":[],"mappings":"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"}
|
|
@@ -195,8 +195,9 @@ export class Records {
|
|
|
195
195
|
return filterCopy;
|
|
196
196
|
}
|
|
197
197
|
/**
|
|
198
|
-
* Nested protocol-path queries must
|
|
199
|
-
*
|
|
198
|
+
* Nested protocol-path queries must select the target path itself or one of
|
|
199
|
+
* its ancestor contexts. An omitted, malformed, or deeper context cannot
|
|
200
|
+
* identify a bounded subtree of the selected protocol path.
|
|
200
201
|
*/
|
|
201
202
|
static validateNestedProtocolPathQueryScope(filter, errorCode, operationName) {
|
|
202
203
|
const { contextId, protocolPath } = filter;
|
|
@@ -206,13 +207,14 @@ export class Records {
|
|
|
206
207
|
if (isEncryptionControlPath(protocolPath)) {
|
|
207
208
|
return;
|
|
208
209
|
}
|
|
209
|
-
const
|
|
210
|
+
const protocolPathDepth = protocolPath.split('/').length;
|
|
210
211
|
const contextIdSegments = contextId?.split('/');
|
|
211
|
-
if (contextIdSegments
|
|
212
|
+
if (contextIdSegments !== undefined &&
|
|
213
|
+
contextIdSegments.length <= protocolPathDepth &&
|
|
212
214
|
contextIdSegments.every(segment => segment.length > 0)) {
|
|
213
215
|
return;
|
|
214
216
|
}
|
|
215
|
-
throw new DwnError(errorCode, `${operationName} for nested protocol path '${protocolPath}' must include
|
|
217
|
+
throw new DwnError(errorCode, `${operationName} for nested protocol path '${protocolPath}' must include a contextId selecting that path or one of its ancestors`);
|
|
216
218
|
}
|
|
217
219
|
static isStartsWithFilter(filter) {
|
|
218
220
|
return typeof filter === 'object' && ('startsWith' in filter && typeof filter.startsWith === 'string');
|
|
@@ -277,10 +279,8 @@ export class Records {
|
|
|
277
279
|
filterCopy.messageTimestamp = messageTimestampFilter;
|
|
278
280
|
delete filterCopy.dateUpdated;
|
|
279
281
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
if (contextIdPrefixFilter) {
|
|
283
|
-
filterCopy.contextId = contextIdPrefixFilter;
|
|
282
|
+
if (contextId !== undefined) {
|
|
283
|
+
filterCopy.contextId = { subtree: contextId };
|
|
284
284
|
}
|
|
285
285
|
// if the author filter is an array and it's empty, we should remove it from the filter as it will always return no results.
|
|
286
286
|
if (Array.isArray(filterCopy.author) && filterCopy.author.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../../../src/utils/records.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"records.js","sourceRoot":"","sources":["../../../../src/utils/records.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,19 @@ export class Replication {
|
|
|
29
29
|
}
|
|
30
30
|
return domains;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Narrows a message store to its replication feed surface when it implements
|
|
34
|
+
* one. Returns `undefined` for stores without replication feed support.
|
|
35
|
+
*/
|
|
36
|
+
static asFeedReader(candidate) {
|
|
37
|
+
const partial = candidate;
|
|
38
|
+
if (typeof partial.logRead === 'function' &&
|
|
39
|
+
typeof partial.logBounds === 'function' &&
|
|
40
|
+
typeof partial.fingerprint === 'function' &&
|
|
41
|
+
typeof partial.epoch === 'function') {
|
|
42
|
+
return partial;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
32
45
|
static async deriveStreamId(tenant) {
|
|
33
46
|
const bytes = new TextEncoder().encode(tenant);
|
|
34
47
|
const hashBuffer = await crypto.subtle.digest('SHA-256', bytes);
|
|
@@ -69,6 +82,7 @@ export class Replication {
|
|
|
69
82
|
static throwFingerprintScopeMutation(messageCid) {
|
|
70
83
|
throw new DwnError(DwnErrorCode.MessageStoreFingerprintScopeMutation, `index replacement for message ${messageCid} would change its persisted fingerprint scopes`);
|
|
71
84
|
}
|
|
85
|
+
/** Whether a protocol URI is one of the core protocols (permissions, encryption). */
|
|
72
86
|
static isCoreProtocolUri(protocolUri) {
|
|
73
87
|
return protocolUri === PermissionsProtocol.uri || protocolUri === EncryptionProtocol.uri;
|
|
74
88
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../../../src/utils/replication.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"replication.js","sourceRoot":"","sources":["../../../../src/utils/replication.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,6 +101,19 @@ describe('RecordsGrantAuthorization', () => {
|
|
|
101
101
|
await expectQueryOrSubscribeScopeMismatch(DwnMethodName.Query, { protocol, protocolPath: 'thread/message' }, { protocol, protocolPath: 'thread/reaction' });
|
|
102
102
|
await expectQueryOrSubscribeScopeMismatch(DwnMethodName.Subscribe, { protocol, contextId: 'root' }, { protocol, contextId: 'rootEVIL' });
|
|
103
103
|
});
|
|
104
|
+
it('allows equal and narrower context queries but rejects a broader requested ancestor', async () => {
|
|
105
|
+
const grantScope = { protocol, contextId: 'root/branch' };
|
|
106
|
+
for (const contextId of ['root/branch', 'root/branch/child']) {
|
|
107
|
+
await expect(RecordsGrantAuthorization.authorizeQueryOrSubscribe({
|
|
108
|
+
incomingMessage: makeIncomingMessage(DwnMethodName.Query, { protocol, contextId }),
|
|
109
|
+
expectedGrantor: grantor,
|
|
110
|
+
expectedGrantee: grantee,
|
|
111
|
+
permissionGrant: makePermissionGrant(DwnMethodName.Read, grantScope),
|
|
112
|
+
validationStateReader,
|
|
113
|
+
})).resolves.toBeUndefined();
|
|
114
|
+
}
|
|
115
|
+
await expectQueryOrSubscribeScopeMismatch(DwnMethodName.Query, grantScope, { protocol, contextId: 'root' });
|
|
116
|
+
});
|
|
104
117
|
it('allows protocol-scoped query, subscribe, and count filters with a Records.Read grant', async () => {
|
|
105
118
|
for (const method of [DwnMethodName.Query, DwnMethodName.Subscribe, DwnMethodName.Count]) {
|
|
106
119
|
await expect(RecordsGrantAuthorization.authorizeQueryOrSubscribe({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-grant-authorization.spec.js","sourceRoot":"","sources":["../../../../tests/core/records-grant-authorization.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"records-grant-authorization.spec.js","sourceRoot":"","sources":["../../../../tests/core/records-grant-authorization.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -146,8 +146,8 @@ function protocolDefinition(protocol, revision) {
|
|
|
146
146
|
[extraType]: {},
|
|
147
147
|
note: {},
|
|
148
148
|
patch: { $squash: true },
|
|
149
|
-
pin: { $recordLimit: { max: 2
|
|
150
|
-
profile: { $recordLimit: { max: 1
|
|
149
|
+
pin: { $recordLimit: { max: 2 } },
|
|
150
|
+
profile: { $recordLimit: { max: 1 } },
|
|
151
151
|
thread: { reply: {} },
|
|
152
152
|
},
|
|
153
153
|
};
|