@enbox/dwn-sdk-js 0.4.16 → 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/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 +158 -21
- 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 +4 -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/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/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 +6 -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/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/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.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/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/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/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 +216 -25
- package/src/store/storage-controller.ts +1 -3
- package/src/types/message-store.ts +25 -2
- 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 +4 -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
|
@@ -133,31 +133,15 @@ export type ProtocolSizeDefinition = {
|
|
|
133
133
|
max?: number;
|
|
134
134
|
};
|
|
135
135
|
/**
|
|
136
|
-
*
|
|
137
|
-
*/
|
|
138
|
-
export declare enum ProtocolRecordLimitStrategy {
|
|
139
|
-
/** Reject the incoming write with an error. The author must delete old records first. */
|
|
140
|
-
Reject = "reject",
|
|
141
|
-
/** Automatically delete the oldest record(s) (by `dateCreated`) to make room for the new one. */
|
|
142
|
-
PurgeOldest = "purgeOldest"
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Limits the number of records at a given protocol path within the same parent context.
|
|
136
|
+
* Limits the visible records at a given protocol path within the same parent context.
|
|
146
137
|
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
* Only initial writes (new records) count toward the limit; updates to existing records do not.
|
|
138
|
+
* Root-level records form one group for the protocol path. Nested records are grouped by
|
|
139
|
+
* direct parent context. Occupants are selected deterministically at read time; valid writes
|
|
140
|
+
* outside the visible population remain stored and may become visible later.
|
|
151
141
|
*/
|
|
152
142
|
export type ProtocolRecordLimitDefinition = {
|
|
153
|
-
/** Maximum number of records
|
|
143
|
+
/** Maximum number of visible records at this path within the same parent context. Must be >= 1. */
|
|
154
144
|
max: number;
|
|
155
|
-
/**
|
|
156
|
-
* Strategy when the limit is reached.
|
|
157
|
-
* Currently only `'reject'` is implemented. Future strategies (e.g. `'purgeOldest'`)
|
|
158
|
-
* are defined in the wire format but not yet enforced.
|
|
159
|
-
*/
|
|
160
|
-
strategy: ProtocolRecordLimitStrategy | `${ProtocolRecordLimitStrategy}` | (string & {});
|
|
161
145
|
};
|
|
162
146
|
/**
|
|
163
147
|
* Delivery strategy for records at a given protocol path.
|
|
@@ -252,9 +236,8 @@ export type ProtocolRuleSet = {
|
|
|
252
236
|
*/
|
|
253
237
|
$tags?: ProtocolTagsDefinition;
|
|
254
238
|
/**
|
|
255
|
-
* If
|
|
256
|
-
* parent context
|
|
257
|
-
* whether the write is rejected or the oldest record is purged.
|
|
239
|
+
* If `$recordLimit` is set, reads expose at most `max` records at this protocol path
|
|
240
|
+
* within each direct parent context.
|
|
258
241
|
*/
|
|
259
242
|
$recordLimit?: ProtocolRecordLimitDefinition;
|
|
260
243
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocols-types.d.ts","sourceRoot":"","sources":["../../../../src/types/protocols-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAExF,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAG,gBAAgB,CAAC,SAAS,CAAC;IACvC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;KAChC,CAAA;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B,CAAC;AAEF,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,oBAAY,cAAc;IACxB,QAAQ,cAAc;IACtB,OAAO,aAAa;IACpB,QAAQ,cAAc;IACtB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,aAAa,GAAG,GAAG,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAEzD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,GAAG,EAAE,CAAC,cAAc,GAAG,GAAG,cAAc,EAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CAC/D,CAAC;AACF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"protocols-types.d.ts","sourceRoot":"","sources":["../../../../src/types/protocols-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAExF,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAG,gBAAgB,CAAC,SAAS,CAAC;IACvC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;KAChC,CAAA;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B,CAAC;AAEF,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,oBAAY,cAAc;IACxB,QAAQ,cAAc;IACtB,OAAO,aAAa;IACpB,QAAQ,cAAc;IACtB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,aAAa,GAAG,GAAG,aAAa,EAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAEzD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;;;OAIG;IACH,GAAG,EAAE,CAAC,cAAc,GAAG,GAAG,cAAc,EAAE,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;CAC/D,CAAC;AACF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,mGAAmG;IACnG,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mDAAmD;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC;CACnE,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC5D,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,CAAC;IACrD,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;;GAKG;AACH,KAAK,oBAAoB,GACrB,eAAe,GACf,kBAAkB,EAAE,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,GACtB,6BAA6B,GAG7B,OAAO,GACP,MAAM,GACN,SAAS,CAAC;AAEd,MAAM,MAAM,eAAe,GAAG;IAC5B;;OAEG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEhC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAE/B;;OAEG;IACH,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAE/B;;;OAGG;IACH,YAAY,CAAC,EAAE,6BAA6B,CAAC;IAE7C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAErC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,cAAc,GAAG;IACvD,aAAa,EAAE,kBAAkB,CAAC;IAClC,UAAU,EAAE,4BAA4B,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAG,gBAAgB,CAAC,SAAS,CAAC;IACvC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG;IACnD,UAAU,EAAE,wBAAwB,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,GAAG;IACtD,OAAO,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACvC,CAAC"}
|
|
@@ -45,7 +45,14 @@ export type RangeFilter = (GT | LT) & Partial<GT> & Partial<LT>;
|
|
|
45
45
|
export type StartsWithFilter = {
|
|
46
46
|
startsWith: string;
|
|
47
47
|
};
|
|
48
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Selects one hierarchical path and every proper `/`-delimited descendant.
|
|
50
|
+
* Supported only for the `contextId` and `protocolPath` indexes.
|
|
51
|
+
*/
|
|
52
|
+
export type SubtreeFilter = {
|
|
53
|
+
subtree: string;
|
|
54
|
+
};
|
|
55
|
+
export type FilterValue = EqualFilter | OneOfFilter | RangeFilter | SubtreeFilter;
|
|
49
56
|
export type Filter = {
|
|
50
57
|
[property: string]: FilterValue;
|
|
51
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-types.d.ts","sourceRoot":"","sources":["../../../../src/types/query-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,oBAAY,aAAa;IACvB,UAAU,KAAK;IACf,SAAS,IAAI;CACd;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,GAAG,EAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,EAAE,GAAG,CAAC;IAAE,EAAE,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAAG,CAAC;IAAE,EAAE,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,EAAE,GAAG,CAAC;IAAE,EAAE,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAAG,CAAC;IAAE,EAAE,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"query-types.d.ts","sourceRoot":"","sources":["../../../../src/types/query-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,oBAAY,aAAa;IACvB,UAAU,KAAK;IACf,SAAS,IAAI;CACd;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,GAAG,EAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;CAAE,CAAC;AAE1F,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,EAAE,GAAG,CAAC;IAAE,EAAE,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAAG,CAAC;IAAE,EAAE,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,EAAE,GAAG,CAAC;IAAE,EAAE,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAAG,CAAC;IAAE,EAAE,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,CAAC;AAEjG;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;AAEhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AAElF,MAAM,MAAM,MAAM,GAAG;IACnB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC"}
|
|
@@ -136,7 +136,8 @@ export type RecordsFilter = {
|
|
|
136
136
|
protocolPath?: string;
|
|
137
137
|
published?: boolean;
|
|
138
138
|
/**
|
|
139
|
-
*
|
|
139
|
+
* Selects the exact context and its proper `/`-delimited descendants.
|
|
140
|
+
* Prefix-sharing sibling contexts are excluded.
|
|
140
141
|
*/
|
|
141
142
|
contextId?: string;
|
|
142
143
|
schema?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-types.d.ts","sourceRoot":"","sources":["../../../../src/types/records-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5J,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxG,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/F,oBAAY,QAAQ;IAClB,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,kBAAkB,uBAAuB;IACzC,mBAAmB,wBAAwB;IAC3C,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACnF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhG,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,cAAc,GAAG;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,sBAAsB,CAAC;IACnC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,kBAAkB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,sBAAsB,CAAC;IACnC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG;IACzD;;OAEG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAEnC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,8BAA8B,GAAG,mBAAmB,GAAG;IACjE;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IACjD,UAAU,EAAE,sBAAsB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC;IACpC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB
|
|
1
|
+
{"version":3,"file":"records-types.d.ts","sourceRoot":"","sources":["../../../../src/types/records-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import type { EqualFilter, Filter, FilterValue, KeyValues, OneOfFilter, RangeCriterion, RangeFilter } from '../types/query-types.js';
|
|
1
|
+
import type { EqualFilter, Filter, FilterValue, KeyValues, OneOfFilter, RangeCriterion, RangeFilter, SubtreeFilter } from '../types/query-types.js';
|
|
2
|
+
/** Returns whether the value is a well-formed hierarchical subtree filter. */
|
|
3
|
+
export declare function isSubtreeFilter(filter: FilterValue): filter is SubtreeFilter;
|
|
4
|
+
/**
|
|
5
|
+
* Rejects subtree filters for indexes without hierarchical path semantics.
|
|
6
|
+
*
|
|
7
|
+
* @throws {TypeError} If a subtree filter targets an index other than `contextId` or `protocolPath`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function assertValidSubtreeFilters(filters: Filter[]): void;
|
|
2
10
|
/**
|
|
3
11
|
* A Utility class to help match indexes against filters.
|
|
4
12
|
*/
|
|
@@ -50,6 +58,11 @@ export declare class FilterUtility {
|
|
|
50
58
|
static isOneOfFilter(filter: FilterValue): filter is OneOfFilter;
|
|
51
59
|
static convertRangeCriterion(inputFilter: RangeCriterion): RangeFilter | undefined;
|
|
52
60
|
static constructPrefixFilterAsRangeFilter(prefix: string): RangeFilter;
|
|
61
|
+
/**
|
|
62
|
+
* Returns whether a candidate is the selected hierarchical path or one of
|
|
63
|
+
* its proper `/`-delimited descendants.
|
|
64
|
+
*/
|
|
65
|
+
static matchesSubtree(subtree: string, candidate: unknown): candidate is string;
|
|
53
66
|
}
|
|
54
67
|
export declare class FilterSelector {
|
|
55
68
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/utils/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAc,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../../src/utils/filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAc,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAIhK,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,aAAa,CAM5E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAQjE;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO;IAezE;;;;;;OAMG;WACW,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAuB5E;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAUjC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAuB9B;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IASzB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAgBzB,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,WAAW;IAOhE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,WAAW;IAOhE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,WAAW;IAOhE,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,cAAc,GAAG,WAAW,GAAG,SAAS;IAmBlF,MAAM,CAAC,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW;IAOtE;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,SAAS,IAAI,MAAM;CAKhF;AAED,qBAAa,cAAc;IAEzB;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAkD5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grant-key-coverage.d.ts","sourceRoot":"","sources":["../../../../src/utils/grant-key-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,KAAK,EAAE,kBAAkB,EAAmB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"grant-key-coverage.d.ts","sourceRoot":"","sources":["../../../../src/utils/grant-key-coverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,KAAK,EAAE,kBAAkB,EAAmB,MAAM,6BAA6B,CAAC;AAGvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGnF,KAAK,wBAAwB,GAAG,sBAAsB,GAAG;IACvD,SAAS,EAAE,OAAO,gBAAgB,CAAC,OAAO,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG;IAC5D,MAAM,EAAE,OAAO,aAAa,CAAC,IAAI,GAAG,OAAO,aAAa,CAAC,KAAK,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,GAAG;IAChE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,OAAO,aAAa,CAAC,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,wBAAwB,GAAG;IACjE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,wBAAwB,GAAG,yBAAyB,CAAC;AAEhG,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,OAAO,mBAAmB,CAAC,YAAY,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AA8BF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,IAAI,oBAAoB,CAO5F;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,IAAI,4BAA4B,CAG5G;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,wBAAwB,EACpC,kBAAkB,CAAC,EAAE,kBAAkB,GACtC,yBAAyB,EAAE,CAAC;AAE/B,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,yBAAyB,EACrC,kBAAkB,EAAE,kBAAkB,GACrC,yBAAyB,EAAE,CAAC;AAS/B,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,UAAU,EAAE,4BAA4B,CAAC;IACzC,cAAc,EAAE,IAAI,CAAC,yBAAyB,EAAE,UAAU,GAAG,cAAc,CAAC,CAAC;IAC7E,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,GAAG,OAAO,CAOV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/utils/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAWjE;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;WACW,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IAwB3E;;;;;;;;;;OAUG;WACW,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,EAAE,oBAAoB,GAAG,MAAM,EAAE;IAoBvG;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAgB3C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,sCAAsC;IAqBrD;;;;;;OAMG;WACW,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS;IAqCvF;;;OAGG;WACW,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAY3G;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../src/utils/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAWjE;;GAEG;AACH,qBAAa,QAAQ;IACnB;;OAEG;WACW,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE;IAwB3E;;;;;;;;;;OAUG;WACW,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,EAAE,oBAAoB,GAAG,MAAM,EAAE;IAoBvG;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAgB3C;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,sCAAsC;IAqBrD;;;;;;OAMG;WACW,wBAAwB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS;IAqCvF;;;OAGG;WACW,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAY3G;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAyB5B,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
|
|
@@ -24,7 +24,5 @@ export declare class PermissionScopeMatcher {
|
|
|
24
24
|
* Determines whether a candidate target is within a grant scope.
|
|
25
25
|
*/
|
|
26
26
|
static matches(scope: ProtocolScope, target: ProtocolScope): boolean;
|
|
27
|
-
private static matchesContextId;
|
|
28
|
-
private static matchesSubtree;
|
|
29
27
|
}
|
|
30
28
|
//# sourceMappingURL=permission-scope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-scope.d.ts","sourceRoot":"","sources":["../../../../src/utils/permission-scope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permission-scope.d.ts","sourceRoot":"","sources":["../../../../src/utils/permission-scope.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;WACW,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO;CAuB5E"}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import type { MessageStore } from '../types/message-store.js';
|
|
2
|
-
import type { RecordsWriteMessage } from '../types/records-types.js';
|
|
3
1
|
import type { ValidationStateReader } from '../types/validation-state-reader.js';
|
|
4
2
|
import type { Filter, PaginationCursor } from '../types/query-types.js';
|
|
5
3
|
import type { MessageSort, Pagination } from '../types/message-types.js';
|
|
6
|
-
type
|
|
7
|
-
|
|
4
|
+
import type { MessageStore, RecordLimitOccupancy } from '../types/message-store.js';
|
|
5
|
+
import type { RecordsFilter, RecordsWriteMessage } from '../types/records-types.js';
|
|
6
|
+
type RecordLimitPolicyDependencies = {
|
|
8
7
|
validationStateReader: ValidationStateReader;
|
|
9
8
|
};
|
|
10
|
-
type
|
|
9
|
+
type RecordLimitOccupancyDependencies = RecordLimitPolicyDependencies & {
|
|
10
|
+
messageStore: MessageStore;
|
|
11
|
+
};
|
|
12
|
+
type RecordLimitOccupancyQueryInput = {
|
|
13
|
+
messageStore: MessageStore;
|
|
11
14
|
tenant: string;
|
|
12
15
|
filters: Filter[];
|
|
13
|
-
|
|
16
|
+
recordLimit?: RecordLimitOccupancy;
|
|
14
17
|
messageSort?: MessageSort;
|
|
15
18
|
pagination?: Pagination;
|
|
16
19
|
};
|
|
@@ -21,27 +24,37 @@ type OccupancyProjectionInput<T extends RecordsWriteMessage> = {
|
|
|
21
24
|
compareRecords(left: T, right: T): number;
|
|
22
25
|
};
|
|
23
26
|
/**
|
|
24
|
-
* Queries
|
|
25
|
-
*
|
|
26
|
-
* Broad filters keep the store's native query path. Projecting those without a store-level grouping primitive would require
|
|
27
|
-
* scanning the full matching set, which is worse than leaving them unprojected until a bounded broad-query strategy exists.
|
|
27
|
+
* Queries the caller-visible portion of the deterministic `$recordLimit`
|
|
28
|
+
* occupant population for one concrete protocol path.
|
|
28
29
|
*/
|
|
29
30
|
export declare function queryRecordsWithRecordLimitOccupancy(input: RecordLimitOccupancyQueryInput): Promise<{
|
|
30
31
|
messages: RecordsWriteMessage[];
|
|
31
32
|
cursor?: PaginationCursor;
|
|
32
33
|
}>;
|
|
33
34
|
/**
|
|
34
|
-
* Counts
|
|
35
|
+
* Counts the same deterministic `$recordLimit` occupant population returned
|
|
36
|
+
* by {@link queryRecordsWithRecordLimitOccupancy}.
|
|
35
37
|
*/
|
|
36
38
|
export declare function countRecordsWithRecordLimitOccupancy(input: Omit<RecordLimitOccupancyQueryInput, 'pagination'>): Promise<number>;
|
|
37
39
|
/**
|
|
38
|
-
* Returns true when the latest RecordsWrite is
|
|
40
|
+
* Returns true when the latest RecordsWrite is part of its path's current
|
|
41
|
+
* `$recordLimit` occupant population.
|
|
39
42
|
*/
|
|
40
43
|
export declare function isRecordLimitOccupant(input: RecordLimitOccupancyDependencies & {
|
|
41
44
|
tenant: string;
|
|
42
45
|
message: RecordsWriteMessage;
|
|
43
46
|
messageTimestamp: string;
|
|
44
47
|
}): Promise<boolean>;
|
|
48
|
+
/** Resolves one incoming Records filter to its store-level occupancy policy. */
|
|
49
|
+
export declare function resolveRecordLimitOccupancy(input: RecordLimitPolicyDependencies & {
|
|
50
|
+
tenant: string;
|
|
51
|
+
recordsFilter: RecordsFilter;
|
|
52
|
+
messageTimestamp: string;
|
|
53
|
+
}): Promise<RecordLimitOccupancy | undefined>;
|
|
54
|
+
/**
|
|
55
|
+
* Selects a bounded occupant set for an in-memory projection whose grouping
|
|
56
|
+
* and ranking policy is supplied by the caller.
|
|
57
|
+
*/
|
|
45
58
|
export declare function selectOccupantRecordIds<T extends RecordsWriteMessage>(input: OccupancyProjectionInput<T>): Set<string>;
|
|
46
59
|
export {};
|
|
47
60
|
//# sourceMappingURL=record-limit-occupancy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-limit-occupancy.d.ts","sourceRoot":"","sources":["../../../../src/utils/record-limit-occupancy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"record-limit-occupancy.d.ts","sourceRoot":"","sources":["../../../../src/utils/record-limit-occupancy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOpF,KAAK,6BAA6B,GAAG;IACnC,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AAEF,KAAK,gCAAgC,GAAG,6BAA6B,GAAG;IACtE,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,KAAK,wBAAwB,CAAC,CAAC,SAAS,mBAAmB,IAAI;IAC7D,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;IAC/B,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;CAC3C,CAAC;AAEF;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC;IAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAUzE;AAED;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,KAAK,EAAE,IAAI,CAAC,8BAA8B,EAAE,YAAY,CAAC,GACxD,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,gCAAgC,GAAG;IACpF,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BnB;AAED,gFAAgF;AAChF,wBAAsB,2BAA2B,CAAC,KAAK,EAAE,6BAA6B,GAAG;IACvF,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAoC5C;AA+CD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,mBAAmB,EAAE,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAmBtH"}
|
|
@@ -65,8 +65,9 @@ export declare class Records {
|
|
|
65
65
|
*/
|
|
66
66
|
static normalizeFilter(filter: RecordsFilter): RecordsFilter;
|
|
67
67
|
/**
|
|
68
|
-
* Nested protocol-path queries must
|
|
69
|
-
*
|
|
68
|
+
* Nested protocol-path queries must select the target path itself or one of
|
|
69
|
+
* its ancestor contexts. An omitted, malformed, or deeper context cannot
|
|
70
|
+
* identify a bounded subtree of the selected protocol path.
|
|
70
71
|
*/
|
|
71
72
|
static validateNestedProtocolPathQueryScope(filter: RecordsFilter, errorCode: DwnErrorCode, operationName: string): void;
|
|
72
73
|
static isStartsWithFilter(filter: RecordsWriteTagsFilter): filter is StartsWithFilter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../../src/utils/records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAInQ,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AASrD,OAAO,EAAY,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAc,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAS,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGzD;;GAEG;AACH,qBAAa,OAAO;IAElB;;OAEG;WACW,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,IAAI,mBAAmB;IAQrF;;OAEG;WACiB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAM/G;;OAEG;WACiB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAQjH;;;OAGG;WACiB,OAAO,CACzB,YAAY,EAAE,mBAAmB,EACjC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GACvC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;mBAoCjB,yBAAyB;IAkB9C,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAqB7C;;OAEG;WACW,0BAA0B,CACtC,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,+BAA+B,EACjF,mBAAmB,EAAE,mBAAmB,GACvC,MAAM,EAAE;IAiBX;;;;;;;OAOG;WACW,iDAAiD,CAAC,UAAU,EAAE,sBAAsB,GAAG,MAAM,EAAE;IAW7G;;;OAGG;WACiB,gBAAgB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBxI;;;OAGG;WACW,oDAAoD,CAChE,yBAAyB,EAAE,MAAM,EAAE,EACnC,2BAA2B,EAAE,MAAM,EAAE,GACpC,IAAI;IAYP;;OAEG;WACW,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAkBhG;;;;;OAKG;WACW,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa;IAyBnE
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../../../src/utils/records.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAInQ,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AASrD,OAAO,EAAY,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAc,+BAA+B,EAAE,MAAM,iBAAiB,CAAC;AAE9E,OAAO,EAAS,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGzD;;GAEG;AACH,qBAAa,OAAO;IAElB;;OAEG;WACW,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,IAAI,mBAAmB;IAQrF;;OAEG;WACiB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAM/G;;OAEG;WACiB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAQjH;;;OAGG;WACiB,OAAO,CACzB,YAAY,EAAE,mBAAmB,EACjC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,GACvC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;mBAoCjB,yBAAyB;IAkB9C,OAAO,CAAC,MAAM,CAAC,8BAA8B;IAqB7C;;OAEG;WACW,0BAA0B,CACtC,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,+BAA+B,EACjF,mBAAmB,EAAE,mBAAmB,GACvC,MAAM,EAAE;IAiBX;;;;;;;OAOG;WACW,iDAAiD,CAAC,UAAU,EAAE,sBAAsB,GAAG,MAAM,EAAE;IAW7G;;;OAGG;WACiB,gBAAgB,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAoBxI;;;OAGG;WACW,oDAAoD,CAChE,yBAAyB,EAAE,MAAM,EAAE,EACnC,2BAA2B,EAAE,MAAM,EAAE,GACpC,IAAI;IAYP;;OAEG;WACW,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS;IAkBhG;;;;;OAKG;WACW,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa;IAyBnE;;;;OAIG;WACW,oCAAoC,CAChD,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,YAAY,EACvB,aAAa,EAAE,MAAM,GACpB,IAAI;WA2BO,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,IAAI,gBAAgB;IAI5F;;OAEG;WACW,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS;IAShE;;OAEG;WACW,iBAAiB,CAAE,IAAI,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAC,GAAG,MAAM;IAS7F;;;;;OAKG;WACW,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM;WAwDjE,oCAAoC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM;WAUxF,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAmBrE;;;;;;OAMG;WACiB,0CAA0C,CAC5D,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,uBAAuB,EAC9I,sBAAsB,EAAE,uBAAuB,GAAG,SAAS,EAC3D,qBAAqB,CAAC,EAAE,uBAAuB,GAAG,SAAS,GAC1D,OAAO,CAAC,IAAI,CAAC;IAOhB;;;OAGG;mBACkB,gDAAgD;IAiDrE;;;OAGG;mBACkB,+CAA+C;IAiDpE;;;;;;OAMG;WACW,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW;IAmB/D;;OAEG;WACW,uBAAuB,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,OAAO;IAIzF;;OAEG;WACW,8BAA8B,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAK5E;;OAEG;WACW,gCAAgC,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAQ9E;;;;;;;;;;OAUG;WACiB,iCAAiC,CACnD,mBAAmB,EAAE,oBAAoB,EACzC,qBAAqB,EAAE,cAAc,GACpC,OAAO,CAAC,OAAO,CAAC;IAenB;;;;;;OAMG;IACH,MAAM,CAAC,qCAAqC,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAQ/F;;;;;;OAMG;IACH,MAAM,CAAC,kCAAkC,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CAO1F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-delivery.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-delivery.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,mBAAmB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"records-delivery.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-delivery.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,mBAAmB,IAAI,IAAI,CA6P1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-nested-query-scope.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-nested-query-scope.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"records-nested-query-scope.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-nested-query-scope.spec.ts"],"names":[],"mappings":"AAmBA,wBAAgB,2BAA2B,IAAI,IAAI,CAsZlD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-record-limit.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-record-limit.spec.ts"],"names":[],"mappings":"AA4BA,wBAAgB,sBAAsB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"records-record-limit.spec.d.ts","sourceRoot":"","sources":["../../../../tests/features/records-record-limit.spec.ts"],"names":[],"mappings":"AA4BA,wBAAgB,sBAAsB,IAAI,IAAI,CAoiC7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-write.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-write.spec.ts"],"names":[],"mappings":"AA+DA,wBAAgB,uBAAuB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"records-write.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-write.spec.ts"],"names":[],"mappings":"AA+DA,wBAAgB,uBAAuB,IAAI,IAAI,CAi5M9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-store-cross-context.spec.d.ts","sourceRoot":"","sources":["../../../../tests/store/message-store-cross-context.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-store.spec.d.ts","sourceRoot":"","sources":["../../../../tests/store/message-store.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,gBAAgB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"message-store.spec.d.ts","sourceRoot":"","sources":["../../../../tests/store/message-store.spec.ts"],"names":[],"mappings":"AAiBA,wBAAgB,gBAAgB,IAAI,IAAI,CAs5BvC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enbox/dwn-sdk-js",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.17",
|
|
4
4
|
"description": "A reference implementation of https://identity.foundation/decentralized-web-node/spec/",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -72,9 +72,9 @@
|
|
|
72
72
|
},
|
|
73
73
|
"react-native": "./dist/esm/src/index.js",
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@enbox/common": "0.1.
|
|
76
|
-
"@enbox/crypto": "0.1.
|
|
77
|
-
"@enbox/dids": "0.1.
|
|
75
|
+
"@enbox/common": "0.1.5",
|
|
76
|
+
"@enbox/crypto": "0.1.8",
|
|
77
|
+
"@enbox/dids": "0.1.8",
|
|
78
78
|
"@ipld/dag-cbor": "10.0.1",
|
|
79
79
|
"@noble/curves": "2.2.0",
|
|
80
80
|
"ajv": "8.18.0",
|
package/src/core/dwn-constant.ts
CHANGED
|
@@ -8,8 +8,8 @@ export class DwnConstant {
|
|
|
8
8
|
public static readonly maxDataSizeAllowedToBeEncoded = 30_000;
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
|
-
* Maximum supported `$recordLimit.max`.
|
|
12
|
-
*
|
|
11
|
+
* Maximum supported `$recordLimit.max`. Level-backed occupancy projection retains
|
|
12
|
+
* at most this many rank keys while finding a parent group's cutoff.
|
|
13
13
|
*/
|
|
14
14
|
public static readonly maxRecordLimit = 1000;
|
|
15
15
|
}
|
package/src/core/dwn-error.ts
CHANGED
|
@@ -157,7 +157,6 @@ export enum DwnErrorCode {
|
|
|
157
157
|
ProtocolAuthorizationMatchingRoleRecordNotFound = 'ProtocolAuthorizationMatchingRoleRecordNotFound',
|
|
158
158
|
ProtocolAuthorizationMaxSizeInvalid = 'ProtocolAuthorizationMaxSizeInvalid',
|
|
159
159
|
ProtocolAuthorizationMinSizeInvalid = 'ProtocolAuthorizationMinSizeInvalid',
|
|
160
|
-
ProtocolAuthorizationRecordLimitStrategyNotImplemented = 'ProtocolAuthorizationRecordLimitStrategyNotImplemented',
|
|
161
160
|
ProtocolAuthorizationSquashNotEnabled = 'ProtocolAuthorizationSquashNotEnabled',
|
|
162
161
|
ProtocolAuthorizationSquashNotInitialWrite = 'ProtocolAuthorizationSquashNotInitialWrite',
|
|
163
162
|
ProtocolAuthorizationSquashBackstop = 'ProtocolAuthorizationSquashBackstop',
|
|
@@ -236,7 +235,6 @@ export enum DwnErrorCode {
|
|
|
236
235
|
RecordsOwnerDelegatedGrantCidMismatch = 'RecordsOwnerDelegatedGrantCidMismatch',
|
|
237
236
|
RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch = 'RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch',
|
|
238
237
|
RecordsOwnerDelegatedGrantNotADelegatedGrant = 'RecordsOwnerDelegatedGrantNotADelegatedGrant',
|
|
239
|
-
|
|
240
238
|
RecordsQueryFilterMissingRequiredProperties = 'RecordsQueryFilterMissingRequiredProperties',
|
|
241
239
|
RecordsQueryNestedProtocolPathContextIdInvalid = 'RecordsQueryNestedProtocolPathContextIdInvalid',
|
|
242
240
|
|
|
@@ -5,13 +5,13 @@ import type { ValidationStateReader } from '../types/validation-state-reader.js'
|
|
|
5
5
|
import type { ProtocolActionRule, ProtocolDefinition, ProtocolRuleSet, ProtocolType, ProtocolTypes } from '../types/protocols-types.js';
|
|
6
6
|
|
|
7
7
|
import { KeyDerivationScheme } from '../utils/hd-key.js';
|
|
8
|
+
import { ProtocolAction } from '../types/protocols-types.js';
|
|
8
9
|
import { Records } from '../utils/records.js';
|
|
9
10
|
import { validateProtocolTags } from '../utils/protocol-tags.js';
|
|
10
11
|
import { DwnError, DwnErrorCode } from './dwn-error.js';
|
|
11
12
|
import { Encryption, ROLE_AUDIENCE_DERIVATION_SCHEME } from '../utils/encryption.js';
|
|
12
13
|
import { ENCRYPTION_PROTOCOL_GRANT_KEY_PATH, ENCRYPTION_PROTOCOL_URI } from './constants.js';
|
|
13
14
|
import { getRoleAudienceContextId, getRuleSetAtPath, getTypeName, parseCrossProtocolRef } from '../utils/protocols.js';
|
|
14
|
-
import { ProtocolAction, ProtocolRecordLimitStrategy } from '../types/protocols-types.js';
|
|
15
15
|
|
|
16
16
|
type ResolvedRoleAudience = {
|
|
17
17
|
contextId: string;
|
|
@@ -526,38 +526,6 @@ export async function verifyAsRoleRecordIfNeeded(
|
|
|
526
526
|
}
|
|
527
527
|
}
|
|
528
528
|
|
|
529
|
-
/**
|
|
530
|
-
* Verifies that the `$recordLimit` strategy is supported for a new record creation.
|
|
531
|
-
*
|
|
532
|
-
* This check only applies to initial writes (new records). Updates to existing records do not
|
|
533
|
-
* affect record-limit occupancy. The supported `reject` strategy admits every candidate and
|
|
534
|
-
* projects the visible occupant set at read time, so validation stays independent of arrival order.
|
|
535
|
-
*
|
|
536
|
-
* @throws {DwnError} with `ProtocolAuthorizationRecordLimitStrategyNotImplemented` if strategy is not implemented.
|
|
537
|
-
*/
|
|
538
|
-
export async function verifyRecordLimit(
|
|
539
|
-
incomingMessage: RecordsWrite,
|
|
540
|
-
ruleSet: ProtocolRuleSet,
|
|
541
|
-
): Promise<void> {
|
|
542
|
-
if (ruleSet.$recordLimit === undefined) {
|
|
543
|
-
return;
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
// Only initial writes can introduce a new record-limit candidate.
|
|
547
|
-
const isInitialWrite = await incomingMessage.isInitialWrite();
|
|
548
|
-
if (!isInitialWrite) {
|
|
549
|
-
return;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
const { strategy } = ruleSet.$recordLimit;
|
|
553
|
-
if (strategy !== ProtocolRecordLimitStrategy.Reject) {
|
|
554
|
-
throw new DwnError(
|
|
555
|
-
DwnErrorCode.ProtocolAuthorizationRecordLimitStrategyNotImplemented,
|
|
556
|
-
`record limit strategy '${strategy}' is not yet implemented.`
|
|
557
|
-
);
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
|
|
561
529
|
/**
|
|
562
530
|
* Verifies that a `RecordsWrite` with `squash: true` is eligible:
|
|
563
531
|
* 1. The protocol rule set at the record's `protocolPath` must have `$squash: true`.
|
|
@@ -19,7 +19,6 @@ import {
|
|
|
19
19
|
verifyAsRoleRecordIfNeeded,
|
|
20
20
|
verifyImmutability,
|
|
21
21
|
verifyProtocolPathAndContextId,
|
|
22
|
-
verifyRecordLimit,
|
|
23
22
|
verifySizeLimit,
|
|
24
23
|
verifySquashEligibility,
|
|
25
24
|
verifyTagsIfNeeded,
|
|
@@ -88,9 +87,6 @@ export class ProtocolAuthorization {
|
|
|
88
87
|
// Verify squash eligibility — ensure squash writes are at $squash: true paths and are initial writes
|
|
89
88
|
await verifySquashEligibility(incomingMessage, ruleSet);
|
|
90
89
|
|
|
91
|
-
// Verify record count limit
|
|
92
|
-
await verifyRecordLimit(incomingMessage, ruleSet);
|
|
93
|
-
|
|
94
90
|
return ruleSet;
|
|
95
91
|
}
|
|
96
92
|
|
|
@@ -142,9 +138,6 @@ export class ProtocolAuthorization {
|
|
|
142
138
|
verifyTagsIfNeeded(incomingMessage, ruleSet);
|
|
143
139
|
await verifySquashEligibility(incomingMessage, ruleSet);
|
|
144
140
|
ProtocolAuthorization.verifyStoredInitialWriteCreateAction(tenant, incomingMessage, ruleSet);
|
|
145
|
-
|
|
146
|
-
// `verifyRecordLimit()` is intentionally not replayed here. It only checks strategy
|
|
147
|
-
// support for new record candidates; read-time occupancy projection decides visibility.
|
|
148
141
|
}
|
|
149
142
|
|
|
150
143
|
/**
|
|
@@ -8,7 +8,6 @@ import type { DataEncodedRecordsWriteMessage, RecordsWriteMessage } from '../typ
|
|
|
8
8
|
import type { ProtocolDefinition, ProtocolsConfigureMessage } from '../types/protocols-types.js';
|
|
9
9
|
|
|
10
10
|
import { ENCRYPTION_CONTROL_AUDIENCE_PATH } from './constants.js';
|
|
11
|
-
import { FilterUtility } from '../utils/filter.js';
|
|
12
11
|
import { PermissionGrant } from '../protocols/permission-grant.js';
|
|
13
12
|
import { PermissionsProtocol } from '../protocols/permissions.js';
|
|
14
13
|
import { RecordsWrite } from '../interfaces/records-write.js';
|
|
@@ -313,7 +312,7 @@ export class StoreValidationStateReader implements ValidationStateReader {
|
|
|
313
312
|
};
|
|
314
313
|
|
|
315
314
|
if (input.contextIdPrefix !== undefined) {
|
|
316
|
-
filter.contextId =
|
|
315
|
+
filter.contextId = { subtree: input.contextIdPrefix };
|
|
317
316
|
}
|
|
318
317
|
|
|
319
318
|
const { messages } = await this.messageStore.query(
|
|
@@ -370,7 +369,7 @@ export class StoreValidationStateReader implements ValidationStateReader {
|
|
|
370
369
|
}
|
|
371
370
|
|
|
372
371
|
if (input.contextIdPrefix !== undefined) {
|
|
373
|
-
filter.contextId =
|
|
372
|
+
filter.contextId = { subtree: input.contextIdPrefix };
|
|
374
373
|
}
|
|
375
374
|
|
|
376
375
|
return filter;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Filter } from '../types/query-types.js';
|
|
2
|
+
import type { RecordLimitOccupancy } from '../types/message-store.js';
|
|
2
3
|
import type { HandlerDependencies, MethodHandler } from '../types/method-handler.js';
|
|
3
4
|
import type { RecordsCountMessage, RecordsCountReply } from '../types/records-types.js';
|
|
4
5
|
|
|
@@ -10,7 +11,11 @@ import { ProtocolAuthorization } from '../core/protocol-authorization.js';
|
|
|
10
11
|
import { Records } from '../utils/records.js';
|
|
11
12
|
import { RecordsCount } from '../interfaces/records-count.js';
|
|
12
13
|
import { RecordsGrantAuthorization } from '../core/records-grant-authorization.js';
|
|
13
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
countRecordsWithRecordLimitOccupancy,
|
|
16
|
+
queryRecordsWithRecordLimitOccupancy,
|
|
17
|
+
resolveRecordLimitOccupancy,
|
|
18
|
+
} from '../utils/record-limit-occupancy.js';
|
|
14
19
|
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
15
20
|
|
|
16
21
|
export class RecordsCountHandler implements MethodHandler {
|
|
@@ -71,7 +76,8 @@ export class RecordsCountHandler implements MethodHandler {
|
|
|
71
76
|
isLatestBaseState : true
|
|
72
77
|
};
|
|
73
78
|
|
|
74
|
-
|
|
79
|
+
const recordLimit = await this.resolveRecordLimit(tenant, recordsCount);
|
|
80
|
+
return this.countProjectedRecords(tenant, [countFilter], recordLimit);
|
|
75
81
|
}
|
|
76
82
|
|
|
77
83
|
private async countRecordsAsOwnerDelegate(
|
|
@@ -142,13 +148,16 @@ export class RecordsCountHandler implements MethodHandler {
|
|
|
142
148
|
return this.countProjectedRecordsForRequester(tenant, recordsCount, requester, [filter]);
|
|
143
149
|
}
|
|
144
150
|
|
|
145
|
-
private async countProjectedRecords(
|
|
151
|
+
private async countProjectedRecords(
|
|
152
|
+
tenant: string,
|
|
153
|
+
filters: Filter[],
|
|
154
|
+
recordLimit: RecordLimitOccupancy | undefined,
|
|
155
|
+
): Promise<number> {
|
|
146
156
|
const totalCount = await countRecordsWithRecordLimitOccupancy({
|
|
147
|
-
messageStore
|
|
148
|
-
validationStateReader : this.deps.validationStateReader,
|
|
157
|
+
messageStore: this.deps.messageStore,
|
|
149
158
|
tenant,
|
|
150
159
|
filters,
|
|
151
|
-
|
|
160
|
+
recordLimit,
|
|
152
161
|
});
|
|
153
162
|
|
|
154
163
|
const audienceFilters = EncryptionControl.buildAudienceRecordFilters(filters);
|
|
@@ -178,23 +187,23 @@ export class RecordsCountHandler implements MethodHandler {
|
|
|
178
187
|
requester: string | undefined,
|
|
179
188
|
filters: Filter[],
|
|
180
189
|
): Promise<number> {
|
|
190
|
+
const recordLimit = await this.resolveRecordLimit(tenant, recordsCount);
|
|
181
191
|
const controlFilters = Records.buildControlRecordsFilters(filters);
|
|
182
192
|
if (controlFilters.length === 0) {
|
|
183
|
-
return this.countProjectedRecords(tenant,
|
|
193
|
+
return this.countProjectedRecords(tenant, filters, recordLimit);
|
|
184
194
|
}
|
|
185
195
|
|
|
186
|
-
const totalCount = await this.countProjectedRecords(tenant,
|
|
187
|
-
const controlCount = await this.countProjectedRecords(tenant,
|
|
196
|
+
const totalCount = await this.countProjectedRecords(tenant, filters, recordLimit);
|
|
197
|
+
const controlCount = await this.countProjectedRecords(tenant, controlFilters, recordLimit);
|
|
188
198
|
if (controlCount === 0) {
|
|
189
199
|
return totalCount;
|
|
190
200
|
}
|
|
191
201
|
|
|
192
202
|
const { messages } = await queryRecordsWithRecordLimitOccupancy({
|
|
193
|
-
messageStore
|
|
194
|
-
validationStateReader : this.deps.validationStateReader,
|
|
203
|
+
messageStore : this.deps.messageStore,
|
|
195
204
|
tenant,
|
|
196
|
-
filters
|
|
197
|
-
|
|
205
|
+
filters : controlFilters,
|
|
206
|
+
recordLimit,
|
|
198
207
|
});
|
|
199
208
|
const projectedMessages = await EncryptionControl.projectCurrentAudienceRecords({
|
|
200
209
|
messageStore : this.deps.messageStore,
|
|
@@ -212,6 +221,18 @@ export class RecordsCountHandler implements MethodHandler {
|
|
|
212
221
|
return totalCount - controlCount + visibleMessages.length;
|
|
213
222
|
}
|
|
214
223
|
|
|
224
|
+
private async resolveRecordLimit(
|
|
225
|
+
tenant: string,
|
|
226
|
+
recordsCount: RecordsCount,
|
|
227
|
+
): Promise<RecordLimitOccupancy | undefined> {
|
|
228
|
+
return resolveRecordLimitOccupancy({
|
|
229
|
+
validationStateReader : this.deps.validationStateReader,
|
|
230
|
+
tenant,
|
|
231
|
+
recordsFilter : recordsCount.message.descriptor.filter,
|
|
232
|
+
messageTimestamp : recordsCount.message.descriptor.messageTimestamp,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
|
|
215
236
|
private static buildPublishedRecordsFilter(recordsCount: RecordsCount): Filter {
|
|
216
237
|
const { filter } = recordsCount.message.descriptor;
|
|
217
238
|
return {
|