@enbox/dwn-sdk-js 0.0.7 → 0.1.0
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 +8 -8
- package/dist/browser.mjs.map +4 -4
- package/dist/esm/generated/precompiled-validators.js +817 -911
- package/dist/esm/generated/precompiled-validators.js.map +1 -1
- package/dist/esm/src/core/constants.js +11 -0
- package/dist/esm/src/core/constants.js.map +1 -0
- package/dist/esm/src/core/core-protocol.js +44 -0
- package/dist/esm/src/core/core-protocol.js.map +1 -0
- package/dist/esm/src/core/dwn-error.js +12 -12
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/grant-authorization.js +16 -3
- package/dist/esm/src/core/grant-authorization.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-action.js +5 -0
- package/dist/esm/src/core/protocol-authorization-action.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization-validation.js +91 -0
- package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -1
- package/dist/esm/src/core/protocol-authorization.js +53 -30
- package/dist/esm/src/core/protocol-authorization.js.map +1 -1
- package/dist/esm/src/core/records-grant-authorization.js +6 -8
- package/dist/esm/src/core/records-grant-authorization.js.map +1 -1
- package/dist/esm/src/core/resumable-task-manager.js +2 -0
- package/dist/esm/src/core/resumable-task-manager.js.map +1 -1
- package/dist/esm/src/dwn.js +42 -18
- package/dist/esm/src/dwn.js.map +1 -1
- package/dist/esm/src/event-stream/event-emitter-event-log.js +204 -0
- package/dist/esm/src/event-stream/event-emitter-event-log.js.map +1 -0
- package/dist/esm/src/handlers/messages-read.js +7 -11
- package/dist/esm/src/handlers/messages-read.js.map +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js +22 -24
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/messages-sync.js +11 -15
- package/dist/esm/src/handlers/messages-sync.js.map +1 -1
- package/dist/esm/src/handlers/protocols-configure.js +37 -27
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/protocols-query.js +7 -11
- package/dist/esm/src/handlers/protocols-query.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +10 -12
- package/dist/esm/src/handlers/records-count.js.map +1 -1
- package/dist/esm/src/handlers/records-delete.js +10 -18
- package/dist/esm/src/handlers/records-delete.js.map +1 -1
- package/dist/esm/src/handlers/records-query.js +11 -15
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +31 -26
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +39 -26
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +128 -105
- package/dist/esm/src/handlers/records-write.js.map +1 -1
- package/dist/esm/src/index.js +5 -2
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/interfaces/messages-subscribe.js +1 -0
- package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/protocols-configure.js +33 -3
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -1
- package/dist/esm/src/interfaces/records-count.js +1 -1
- package/dist/esm/src/interfaces/records-count.js.map +1 -1
- package/dist/esm/src/interfaces/records-delete.js +1 -1
- package/dist/esm/src/interfaces/records-delete.js.map +1 -1
- package/dist/esm/src/interfaces/records-query.js +1 -1
- package/dist/esm/src/interfaces/records-query.js.map +1 -1
- package/dist/esm/src/interfaces/records-read.js +1 -1
- package/dist/esm/src/interfaces/records-read.js.map +1 -1
- package/dist/esm/src/interfaces/records-subscribe.js +2 -1
- package/dist/esm/src/interfaces/records-subscribe.js.map +1 -1
- package/dist/esm/src/interfaces/records-write-signing.js +1 -12
- package/dist/esm/src/interfaces/records-write-signing.js.map +1 -1
- package/dist/esm/src/interfaces/records-write.js +25 -41
- package/dist/esm/src/interfaces/records-write.js.map +1 -1
- package/dist/esm/src/protocols/permission-grant.js +1 -1
- package/dist/esm/src/protocols/permission-grant.js.map +1 -1
- package/dist/esm/src/protocols/permission-request.js +1 -1
- package/dist/esm/src/protocols/permission-request.js.map +1 -1
- package/dist/esm/src/protocols/permissions.js +113 -5
- package/dist/esm/src/protocols/permissions.js.map +1 -1
- package/dist/esm/src/state-index/state-index-level.js +5 -7
- package/dist/esm/src/state-index/state-index-level.js.map +1 -1
- package/dist/esm/src/store/data-store-level.js +110 -33
- package/dist/esm/src/store/data-store-level.js.map +1 -1
- package/dist/esm/src/store/index-level.js +42 -32
- package/dist/esm/src/store/index-level.js.map +1 -1
- package/dist/esm/src/store/storage-controller.js +70 -6
- package/dist/esm/src/store/storage-controller.js.map +1 -1
- package/dist/esm/src/types/permission-types.js.map +1 -1
- package/dist/esm/src/types/protocols-types.js +11 -0
- package/dist/esm/src/types/protocols-types.js.map +1 -1
- package/dist/esm/src/types/records-types.js.map +1 -1
- package/dist/esm/src/utils/hd-key.js +0 -8
- package/dist/esm/src/utils/hd-key.js.map +1 -1
- package/dist/esm/src/utils/messages.js +16 -34
- package/dist/esm/src/utils/messages.js.map +1 -1
- package/dist/esm/src/utils/records.js +5 -43
- package/dist/esm/src/utils/records.js.map +1 -1
- package/dist/esm/tests/core/protocol-authorization.spec.js +2 -1
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
- package/dist/esm/tests/dwn.spec.js +32 -43
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/event-emitter-event-log.spec.js +305 -0
- package/dist/esm/tests/event-emitter-event-log.spec.js.map +1 -0
- package/dist/esm/tests/features/author-delegated-grant.spec.js +14 -7
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +9 -5
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-signature.spec.js +14 -7
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
- package/dist/esm/tests/features/permissions.spec.js +12 -12
- package/dist/esm/tests/features/permissions.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-composition.spec.js +636 -5
- package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-create-action.spec.js +4 -4
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-delete-action.spec.js +7 -7
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-update-action.spec.js +4 -4
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
- package/dist/esm/tests/features/records-delivery.spec.js +236 -0
- package/dist/esm/tests/features/records-delivery.spec.js.map +1 -0
- package/dist/esm/tests/features/records-immutable.spec.js +315 -0
- package/dist/esm/tests/features/records-immutable.spec.js.map +1 -0
- package/dist/esm/tests/features/records-prune.spec.js +4 -4
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
- package/dist/esm/tests/features/records-record-limit.spec.js +542 -0
- package/dist/esm/tests/features/records-record-limit.spec.js.map +1 -0
- package/dist/esm/tests/features/records-squash.spec.js +1055 -0
- package/dist/esm/tests/features/records-squash.spec.js.map +1 -0
- package/dist/esm/tests/features/records-tags.spec.js +16 -4
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
- package/dist/esm/tests/features/resumable-tasks.spec.js +7 -8
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-read.spec.js +11 -5
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +169 -22
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-sync.spec.js +103 -21
- package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js +5 -5
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-query.spec.js +5 -5
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +9 -4
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-delete.spec.js +24 -25
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +68 -9
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-read.spec.js +24 -138
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +175 -35
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +176 -72
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -1
- package/dist/esm/tests/interfaces/records-write.spec.js +52 -68
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permission-grant.spec.js +6 -6
- package/dist/esm/tests/protocols/permission-grant.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permission-request.spec.js +4 -4
- package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -1
- package/dist/esm/tests/protocols/permissions.spec.js +4 -4
- package/dist/esm/tests/protocols/permissions.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/aggregator.spec.js +4 -4
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/deleted-record.spec.js +350 -5
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +4 -4
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/nested-roles.spec.js +4 -4
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/subscriptions.spec.js +93 -40
- package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -1
- package/dist/esm/tests/store/data-store-level.spec.js +102 -41
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -1
- package/dist/esm/tests/test-event-stream.js +12 -13
- package/dist/esm/tests/test-event-stream.js.map +1 -1
- package/dist/esm/tests/test-suite.js +10 -4
- package/dist/esm/tests/test-suite.js.map +1 -1
- package/dist/esm/tests/utils/messages.spec.js +12 -5
- package/dist/esm/tests/utils/messages.spec.js.map +1 -1
- package/dist/esm/tests/utils/records.spec.js +8 -12
- package/dist/esm/tests/utils/records.spec.js.map +1 -1
- package/dist/esm/tests/utils/test-data-generator.js +36 -2
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -1
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +37 -8
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -1
- package/dist/types/generated/precompiled-validators.d.ts +49 -40
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -1
- package/dist/types/src/core/constants.d.ts +11 -0
- package/dist/types/src/core/constants.d.ts.map +1 -0
- package/dist/types/src/core/core-protocol.d.ts +89 -0
- package/dist/types/src/core/core-protocol.d.ts.map +1 -0
- package/dist/types/src/core/dwn-error.d.ts +12 -12
- package/dist/types/src/core/dwn-error.d.ts.map +1 -1
- package/dist/types/src/core/grant-authorization.d.ts +6 -2
- package/dist/types/src/core/grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-action.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization-validation.d.ts +30 -0
- package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -1
- package/dist/types/src/core/protocol-authorization.d.ts +19 -11
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -1
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -1
- package/dist/types/src/core/resumable-task-manager.d.ts +2 -1
- package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -1
- package/dist/types/src/dwn.d.ts +19 -7
- package/dist/types/src/dwn.d.ts.map +1 -1
- package/dist/types/src/event-stream/event-emitter-event-log.d.ts +50 -0
- package/dist/types/src/event-stream/event-emitter-event-log.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-read.d.ts +3 -8
- package/dist/types/src/handlers/messages-read.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-subscribe.d.ts +6 -10
- package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/messages-sync.d.ts +3 -8
- package/dist/types/src/handlers/messages-sync.d.ts.map +1 -1
- package/dist/types/src/handlers/protocols-configure.d.ts +3 -10
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/handlers/protocols-query.d.ts +3 -8
- package/dist/types/src/handlers/protocols-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-count.d.ts +3 -6
- package/dist/types/src/handlers/records-count.d.ts.map +1 -1
- package/dist/types/src/handlers/records-delete.d.ts +3 -8
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -1
- package/dist/types/src/handlers/records-query.d.ts +3 -8
- package/dist/types/src/handlers/records-query.d.ts.map +1 -1
- package/dist/types/src/handlers/records-read.d.ts +3 -8
- package/dist/types/src/handlers/records-read.d.ts.map +1 -1
- package/dist/types/src/handlers/records-subscribe.d.ts +8 -10
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/handlers/records-write.d.ts +12 -25
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +8 -4
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/interfaces/messages-subscribe.d.ts +5 -0
- package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-subscribe.d.ts +5 -0
- package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write-signing.d.ts +3 -4
- package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -1
- package/dist/types/src/interfaces/records-write.d.ts +11 -11
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -1
- package/dist/types/src/protocols/permission-grant.d.ts +1 -1
- package/dist/types/src/protocols/permission-grant.d.ts.map +1 -1
- package/dist/types/src/protocols/permission-request.d.ts +1 -1
- package/dist/types/src/protocols/permission-request.d.ts.map +1 -1
- package/dist/types/src/protocols/permissions.d.ts +40 -3
- package/dist/types/src/protocols/permissions.d.ts.map +1 -1
- package/dist/types/src/state-index/state-index-level.d.ts.map +1 -1
- package/dist/types/src/store/data-store-level.d.ts +20 -4
- package/dist/types/src/store/data-store-level.d.ts.map +1 -1
- package/dist/types/src/store/index-level.d.ts +4 -0
- package/dist/types/src/store/index-level.d.ts.map +1 -1
- package/dist/types/src/store/storage-controller.d.ts +20 -6
- package/dist/types/src/store/storage-controller.d.ts.map +1 -1
- package/dist/types/src/types/message-types.d.ts +3 -3
- package/dist/types/src/types/message-types.d.ts.map +1 -1
- package/dist/types/src/types/messages-types.d.ts +12 -3
- package/dist/types/src/types/messages-types.d.ts.map +1 -1
- package/dist/types/src/types/method-handler.d.ts +24 -3
- package/dist/types/src/types/method-handler.d.ts.map +1 -1
- package/dist/types/src/types/permission-types.d.ts +7 -0
- package/dist/types/src/types/permission-types.d.ts.map +1 -1
- package/dist/types/src/types/protocols-types.d.ts +69 -2
- package/dist/types/src/types/protocols-types.d.ts.map +1 -1
- package/dist/types/src/types/records-types.d.ts +23 -6
- package/dist/types/src/types/records-types.d.ts.map +1 -1
- package/dist/types/src/types/subscriptions.d.ts +151 -13
- package/dist/types/src/types/subscriptions.d.ts.map +1 -1
- package/dist/types/src/utils/hd-key.d.ts +1 -9
- package/dist/types/src/utils/hd-key.d.ts.map +1 -1
- package/dist/types/src/utils/messages.d.ts +7 -5
- package/dist/types/src/utils/messages.d.ts.map +1 -1
- package/dist/types/src/utils/records.d.ts +1 -11
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/tests/dwn.spec.d.ts.map +1 -1
- package/dist/types/tests/event-emitter-event-log.spec.d.ts +2 -0
- package/dist/types/tests/event-emitter-event-log.spec.d.ts.map +1 -0
- package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -1
- package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -1
- package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -1
- package/dist/types/tests/features/protocol-composition.spec.d.ts.map +1 -1
- package/dist/types/tests/features/records-delivery.spec.d.ts +2 -0
- package/dist/types/tests/features/records-delivery.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-immutable.spec.d.ts +2 -0
- package/dist/types/tests/features/records-immutable.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-record-limit.spec.d.ts +2 -0
- package/dist/types/tests/features/records-record-limit.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-squash.spec.d.ts +2 -0
- package/dist/types/tests/features/records-squash.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -1
- package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/messages-sync.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-count.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -1
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -1
- package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -1
- package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -1
- package/dist/types/tests/test-event-stream.d.ts +11 -12
- package/dist/types/tests/test-event-stream.d.ts.map +1 -1
- package/dist/types/tests/test-suite.d.ts +2 -2
- package/dist/types/tests/test-suite.d.ts.map +1 -1
- package/dist/types/tests/utils/test-data-generator.d.ts +19 -0
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/core/constants.ts +11 -0
- package/src/core/core-protocol.ts +129 -0
- package/src/core/dwn-error.ts +18 -12
- package/src/core/grant-authorization.ts +20 -3
- package/src/core/protocol-authorization-action.ts +5 -0
- package/src/core/protocol-authorization-validation.ts +133 -0
- package/src/core/protocol-authorization.ts +71 -23
- package/src/core/records-grant-authorization.ts +6 -8
- package/src/core/resumable-task-manager.ts +3 -1
- package/src/dwn.ts +58 -73
- package/src/event-stream/event-emitter-event-log.ts +283 -0
- package/src/handlers/messages-read.ts +8 -9
- package/src/handlers/messages-subscribe.ts +24 -28
- package/src/handlers/messages-sync.ts +10 -16
- package/src/handlers/protocols-configure.ts +47 -32
- package/src/handlers/protocols-query.ts +6 -9
- package/src/handlers/records-count.ts +11 -10
- package/src/handlers/records-delete.ts +12 -21
- package/src/handlers/records-query.ts +12 -12
- package/src/handlers/records-read.ts +34 -22
- package/src/handlers/records-subscribe.ts +47 -26
- package/src/handlers/records-write.ts +152 -119
- package/src/index.ts +9 -5
- package/src/interfaces/messages-subscribe.ts +7 -1
- package/src/interfaces/protocols-configure.ts +51 -3
- package/src/interfaces/records-count.ts +1 -1
- package/src/interfaces/records-delete.ts +1 -1
- package/src/interfaces/records-query.ts +1 -1
- package/src/interfaces/records-read.ts +1 -1
- package/src/interfaces/records-subscribe.ts +8 -1
- package/src/interfaces/records-write-signing.ts +2 -22
- package/src/interfaces/records-write.ts +35 -48
- package/src/protocols/permission-grant.ts +1 -1
- package/src/protocols/permission-request.ts +1 -1
- package/src/protocols/permissions.ts +148 -6
- package/src/state-index/state-index-level.ts +5 -7
- package/src/store/data-store-level.ts +124 -34
- package/src/store/index-level.ts +44 -35
- package/src/store/storage-controller.ts +89 -12
- package/src/types/message-types.ts +3 -3
- package/src/types/messages-types.ts +12 -3
- package/src/types/method-handler.ts +26 -4
- package/src/types/mitt.d.ts +28 -0
- package/src/types/permission-types.ts +7 -0
- package/src/types/protocols-types.ts +78 -1
- package/src/types/records-types.ts +24 -6
- package/src/types/subscriptions.ts +178 -14
- package/src/utils/hd-key.ts +0 -9
- package/src/utils/messages.ts +17 -37
- package/src/utils/records.ts +7 -58
- package/dist/esm/src/event-stream/event-emitter-stream.js +0 -46
- package/dist/esm/src/event-stream/event-emitter-stream.js.map +0 -1
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +0 -68
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +0 -1
- package/dist/esm/tests/event-stream/event-stream.spec.js +0 -114
- package/dist/esm/tests/event-stream/event-stream.spec.js.map +0 -1
- package/dist/types/src/event-stream/event-emitter-stream.d.ts +0 -23
- package/dist/types/src/event-stream/event-emitter-stream.d.ts.map +0 -1
- package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts +0 -2
- package/dist/types/tests/event-stream/event-emitter-stream.spec.d.ts.map +0 -1
- package/dist/types/tests/event-stream/event-stream.spec.d.ts +0 -2
- package/dist/types/tests/event-stream/event-stream.spec.d.ts.map +0 -1
- package/src/event-stream/event-emitter-stream.ts +0 -69
|
@@ -325,9 +325,18 @@ export class IndexLevel {
|
|
|
325
325
|
filters = [{}];
|
|
326
326
|
}
|
|
327
327
|
try {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
328
|
+
// Execute filters sequentially rather than with Promise.all.
|
|
329
|
+
// Firefox's IndexedDB implementation has two related async issues that cause flaky failures:
|
|
330
|
+
// 1. Concurrent cursors/transactions can silently miss recently-committed data
|
|
331
|
+
// 2. A read transaction opened immediately after a write transaction's oncomplete event
|
|
332
|
+
// can fail to see the written data (write-read race)
|
|
333
|
+
// Serializing eliminates both races. Performance impact is negligible: only 3 call sites
|
|
334
|
+
// (non-owner RecordsQuery/Subscribe/Count) ever pass multiple filters, and each filter
|
|
335
|
+
// reduces to a single bounded LevelDB range scan completing in single-digit ms.
|
|
336
|
+
// See: https://github.com/enboxorg/enbox/issues/264
|
|
337
|
+
for (const filter of filters) {
|
|
338
|
+
await this.executeSingleFilterQuery(tenant, filter, sortProperty, matches, options);
|
|
339
|
+
}
|
|
331
340
|
}
|
|
332
341
|
catch (error) {
|
|
333
342
|
if (error.code === DwnErrorCode.IndexInvalidSortPropertyInMemory) {
|
|
@@ -346,14 +355,33 @@ export class IndexLevel {
|
|
|
346
355
|
}
|
|
347
356
|
/**
|
|
348
357
|
* Execute a filtered query against a single filter and return all results.
|
|
358
|
+
*
|
|
359
|
+
* Sub-queries (exact match, range, OneOf) are executed sequentially to avoid opening
|
|
360
|
+
* multiple concurrent IndexedDB cursors. Firefox's IDB implementation intermittently
|
|
361
|
+
* drops results when cursors overlap — see https://github.com/enboxorg/enbox/issues/264
|
|
349
362
|
*/
|
|
350
363
|
async executeSingleFilterQuery(tenant, filter, sortProperty, matches, levelOptions) {
|
|
351
|
-
//
|
|
352
|
-
const
|
|
364
|
+
// Collects results from each sub-query sequentially to avoid concurrent IndexedDB cursor races in Firefox.
|
|
365
|
+
const processResults = (indexItems) => {
|
|
366
|
+
for (const indexedItem of indexItems) {
|
|
367
|
+
// short circuit: if a data is already included to the final matched key set (by a different `Filter`),
|
|
368
|
+
// no need to evaluate if the data satisfies this current filter being evaluated
|
|
369
|
+
// otherwise check that the item is a match.
|
|
370
|
+
if (matches.has(indexedItem.messageCid) || !FilterUtility.matchFilter(indexedItem.indexes, filter)) {
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
// ensure that each matched item has the sortProperty, otherwise fail the entire query.
|
|
374
|
+
if (indexedItem.indexes[sortProperty] === undefined) {
|
|
375
|
+
throw new DwnError(DwnErrorCode.IndexInvalidSortPropertyInMemory, `invalid sort property ${sortProperty}`);
|
|
376
|
+
}
|
|
377
|
+
matches.set(indexedItem.messageCid, indexedItem);
|
|
378
|
+
}
|
|
379
|
+
};
|
|
353
380
|
// If the filter is empty, then we just iterate over one of the indexes that contains all the records and return all items.
|
|
354
381
|
if (isEmptyObject(filter)) {
|
|
355
|
-
const
|
|
356
|
-
|
|
382
|
+
const allItems = await this.getAllItems(tenant, sortProperty);
|
|
383
|
+
processResults(allItems);
|
|
384
|
+
return;
|
|
357
385
|
}
|
|
358
386
|
// else the filter is not empty
|
|
359
387
|
const searchFilter = FilterSelector.reduceFilter(filter);
|
|
@@ -362,39 +390,21 @@ export class IndexLevel {
|
|
|
362
390
|
// We will find the union of these many individual queries later.
|
|
363
391
|
if (FilterUtility.isEqualFilter(propertyFilter)) {
|
|
364
392
|
// propertyFilter is an EqualFilter, meaning it is a non-object primitive type
|
|
365
|
-
const
|
|
366
|
-
|
|
393
|
+
const exactMatches = await this.filterExactMatches(tenant, propertyName, propertyFilter, levelOptions);
|
|
394
|
+
processResults(exactMatches);
|
|
367
395
|
}
|
|
368
396
|
else if (FilterUtility.isOneOfFilter(propertyFilter)) {
|
|
369
397
|
// `propertyFilter` is a OneOfFilter
|
|
370
|
-
// Support OR matches by querying for each
|
|
398
|
+
// Support OR matches by querying for each value separately and sequentially.
|
|
371
399
|
for (const propertyValue of new Set(propertyFilter)) {
|
|
372
|
-
const
|
|
373
|
-
|
|
400
|
+
const exactMatches = await this.filterExactMatches(tenant, propertyName, propertyValue, levelOptions);
|
|
401
|
+
processResults(exactMatches);
|
|
374
402
|
}
|
|
375
403
|
}
|
|
376
404
|
else if (FilterUtility.isRangeFilter(propertyFilter)) {
|
|
377
405
|
// `propertyFilter` is a `RangeFilter`
|
|
378
|
-
const
|
|
379
|
-
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
// acting as an OR match for the property, any of the promises returning a match will be treated as a property match
|
|
383
|
-
for (const promise of filterPromises) {
|
|
384
|
-
const indexItems = await promise;
|
|
385
|
-
// reminder: the promise returns a list of IndexedItem satisfying a particular property match
|
|
386
|
-
for (const indexedItem of indexItems) {
|
|
387
|
-
// short circuit: if a data is already included to the final matched key set (by a different `Filter`),
|
|
388
|
-
// no need to evaluate if the data satisfies this current filter being evaluated
|
|
389
|
-
// otherwise check that the item is a match.
|
|
390
|
-
if (matches.has(indexedItem.messageCid) || !FilterUtility.matchFilter(indexedItem.indexes, filter)) {
|
|
391
|
-
continue;
|
|
392
|
-
}
|
|
393
|
-
// ensure that each matched item has the sortProperty, otherwise fail the entire query.
|
|
394
|
-
if (indexedItem.indexes[sortProperty] === undefined) {
|
|
395
|
-
throw new DwnError(DwnErrorCode.IndexInvalidSortPropertyInMemory, `invalid sort property ${sortProperty}`);
|
|
396
|
-
}
|
|
397
|
-
matches.set(indexedItem.messageCid, indexedItem);
|
|
406
|
+
const rangeMatches = await this.filterRangeMatches(tenant, propertyName, propertyFilter, levelOptions);
|
|
407
|
+
processResults(rangeMatches);
|
|
398
408
|
}
|
|
399
409
|
}
|
|
400
410
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-level.js","sourceRoot":"","sources":["../../../../src/store/index-level.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA4BnE,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAMpC;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB,EAAE,CAAuB;IACzB,MAAM,CAAmB;IACjB,gBAAgB,CAA4B;IAEpD,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG;YACZ,mBAAmB;YACnB,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAErD,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAS;YACjC,QAAQ,EAAc,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC1C,mBAAmB,EAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB;YACrD,WAAW,EAAW,MAAM;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CACP,MAAc,EACd,UAAkB,EAClB,OAAkB,EAClB,OAA2B;QAG3B,0CAA0C;QAC1C,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,6BAA6B,EAAE,0DAA0D,CAAC,CAAC;QAC7H,CAAC;QAED,MAAM,IAAI,GAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAClD,MAAM,kBAAkB,GAAkD,EAAE,CAAC;QAE7E,gDAAgD;QAChD,oDAAoD;QACpD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,KAAK,MAAM,cAAc,IAAI,UAAU,EAAE,CAAC;oBACxC,MAAM,yBAAyB,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;oBAC9G,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,yBAAyB,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;gBAC1G,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,qHAAqH;QACrH,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,+BAA+B,CAChD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CACnF,CAAC;YACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,qHAAqH;QACrH,MAAM,yBAAyB,GAAG,IAAI,CAAC,wCAAwC,CAC7E,MAAM,EACN,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CACjE,CAAC;QACF,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,UAAkB,EAAE,OAA2B;QAC1E,MAAM,kBAAkB,GAAkD,EAAE,CAAC;QAE7E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,qBAAqB;YACrB,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,MAAM,yBAAyB,GAAG,IAAI,CAAC,wCAAwC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1H,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEnD,iCAAiC;QACjC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,KAAK,MAAM,cAAc,IAAI,UAAU,EAAE,CAAC;oBACxC,MAAM,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;oBACvH,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;gBACnH,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,kCAAkC,CACnD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAClG,CAAC;YACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,6BAA6B,CACzC,MAAc,EACd,IAAiB,EACjB,SAAiB,EACjB,UAAqC;QAErC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,yEAAyE;QACzE,2EAA2E;QAC3E,mGAAmG;QACnG,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,gCAAgC,CAC1C,MAAM,EACN,SAAS,EACT,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gCAAgC,CAC5C,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,UAAqC;QAGrC,yEAAyE;QACzE,2EAA2E;QAC3E,mGAAmG;QACnG,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,gCAAgC,CAC1C,MAAM,EACN,SAAS,EACT,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gCAAgC,CAAC,MAAc,EAAE,SAAiB,EAAE,SAA6C;QAE7H,yEAAyE;QACzE,yIAAyI;QACzI,qHAAqH;QACrH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACvE,MAAM,kBAAkB,GAAG,eAAe,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACnG,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wCAAwC,CAAC,MAAc,EAAE,SAA6C;QAElH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,eAAe,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACpG,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,SAAiB;QACpD,8IAA8I;QAC9I,OAAO,KAAK,SAAS,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,SAAiB;QAC/D,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CAAC,MAAc;QACpD,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAAiB,EAAE,YAA0B,EAAE,OAA2B;QAEpG,2DAA2D;QAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5F,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,sBAAsB,CAC3B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,EACzD,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,EAC5C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,UAAU,CAAC,6BAA6B,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC9E,CAAC;QAED,wCAAwC;QACxC,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAAiB,EAAE,YAAoD,EACjG,OAA2B;QAE3B,+CAA+C;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnG,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,sBAAsB,CAC3B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAC3C,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QAChF,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAc,EACd,OAAiB,EACjB,YAA0B,EAC1B,OAA2B;QAE3B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAG,KAAK,EAAE,GAAG,YAAY,CAAC;QAErD,8HAA8H;QAC9H,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAElF,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,KAAK,EAAG,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;YACzF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpD,MAAM;YACR,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;YACzB,IAAI,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,CAAE,gBAAgB,CAC9B,MAAc,EAAE,QAAe,EAAE,YAA0B,EAAE,OAA2B;QAExF,MAAM,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;QAEvF,MAAM,eAAe,GAAwC;YAC3D,EAAE,EAAE,QAAQ;SACb,CAAC;QAEF,mEAAmE;QACnE,IAAI,aAAa,KAAK,aAAa,CAAC,UAAU,EAAE,CAAC;YAC/C,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YAE/B,0GAA0G;YAC1G,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC;gBAC9B,OAAO,eAAe,CAAC,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACzE,IAAI,KAAK,EAAE,MAAM,CAAE,CAAC,EAAE,GAAG,CAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC;YAChF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,2BAA2B,CAAC,MAAwB;QAC1D,MAAM,EAAE,UAAU,EAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QACtC,OAAO,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,6BAA6B,CAAC,KAAoB,EAAE,YAAoB;QAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,YAAY,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAiB,EAAE,YAAoB;QACjE,MAAM,EAAE,UAAU,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,8BAA8B,EAAE,sBAAsB,YAAY,yCAAyC,CAAC,CAAC;QAC/I,CAAC;QAED,qDAAqD;QACrD,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,2BAA2B,EACxC,gEAAgE,OAAO,KAAK,aAAa,CAC1F,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,UAAU,EAAG,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAc,EACd,OAAiB,EACjB,YAA0B,EAC1B,OAA2B;QAE3B,MAAM,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;QAE3G,sGAAsG;QACtG,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElG,0GAA0G;QAC1G,MAAM,OAAO,GAA4B,IAAI,GAAG,EAAE,CAAC;QAEnD,yIAAyI;QACzI,gIAAgI;QAChI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAE,CAAC;YACxF,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAAkB,CAAC,IAAI,KAAK,YAAY,CAAC,gCAAgC,EAAE,CAAC;gBAC/E,wDAAwD;gBACxD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;QAE3G,MAAM,KAAK,GAAG,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/I,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,uFAAuF;YACvF,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,CAAC,SAAS,CAAC;QAC3D,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB,CACpC,MAAc,EACd,MAAc,EACd,YAAoB,EACpB,OAAiC,EACjC,YAAgC;QAGhC,gIAAgI;QAChI,MAAM,cAAc,GAA6B,EAAE,CAAC;QAEpD,2HAA2H;QAC3H,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAClE,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YAClD,iEAAiE;YACjE,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBAChD,8EAA8E;gBAC9E,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;gBACxG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvD,oCAAoC;gBACpC,qGAAqG;gBACrG,KAAK,MAAM,aAAa,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;oBACpD,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;oBACvG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;iBAAM,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvD,sCAAsC;gBACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;gBACxG,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,oHAAoH;QACpH,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC;YACjC,6FAA6F;YAC7F,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE,CAAC;gBACrC,uGAAuG;gBACvG,gFAAgF;gBAChF,4CAA4C;gBAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;oBACnG,SAAS;gBACX,CAAC;gBAED,uFAAuF;gBACvF,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpD,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,gCAAgC,EAAE,yBAAyB,YAAY,EAAE,CAAC,CAAC;gBAC7G,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,YAAoB;QAC5D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,MAAa,EACb,YAAoB,EACpB,aAA0B,EAC1B,OAA2B;QAG3B,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;QACrF,MAAM,eAAe,GAAwC;YAC3D,EAAE,EAAE,WAAW;SAChB,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,KAAK,EAAE,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,eAAe,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC;YACtF,qFAAqF;YACrF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB,CAC9B,MAAc,EACd,YAAoB,EACpB,WAAwB,EACxB,OAA2B;QAE3B,MAAM,eAAe,GAAwC,EAAE,CAAC;QAChE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,UAA+B,CAAC;YACvD,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAE,CAAC,CAAC;YAC1E,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC7B,6FAA6F;gBAC7F,uFAAuF;gBACvF,2DAA2D;gBAC3D,eAAe,CAAC,cAAc,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;YACjD,CAAC;QACH,CAAC;QAED,iGAAiG;QACjG,0EAA0E;QAC1E,IAAI,eAAe,CAAC,EAAE,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1E,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAE3E,IAAI,KAAK,EAAE,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,eAAe,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC;YACtF,mHAAmH;YACnH,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,EAAG,CAAC,EAAE,CAAC;gBAC1G,SAAS;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,KAAkB,EAAE,KAAkB,EAAE,SAAiB,EAAE,SAAwB;QACnG,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAoB,CAAC;QAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAoB,CAAC;QAE/D,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QAC5E,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QAE5E,OAAO,SAAS,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;YAC5C,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;YACtD,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACK,uBAAuB,CAAC,KAAoB,EAAE,aAA4B,EAAE,YAAoB,EAAE,iBAAyB;QAEjI,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAW,EAAE;YACnD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAoB,CAAC;YAC3D,MAAM,gBAAgB,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;YAElG,OAAO,aAAa,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;gBAChD,gBAAgB,GAAG,iBAAiB,CAAC,CAAC;gBACtC,gBAAgB,GAAG,iBAAiB,CAAC;QACzC,CAAC,CAAC;QAEF,oDAAoD;QACpD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;QAExB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9B,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,UAAkB;QACzD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,qBAAqB;YACrB,OAAO;QACT,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAc,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACK,wBAAwB,CAAC,GAAW;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,cAAc,CAAC,GAAG,MAAgB;QAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAa;QACpC,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,MAAM,eAAe,GAAG,GAAG,CAAC,CAAC,+DAA+D;QAC5F,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;QAE9D,MAAM,MAAM,GAAW,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAW,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,KAAgC;QACjD,QAAQ,OAAO,KAAK,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvC;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,2BAA2B;IAC3B,4EAA4E;IAEpE,MAAM,CAAC,6BAA6B,CAAC,OAAiB,EAAE,YAA0B;QACxF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;gBACtD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,MAAc,EAAE,YAA0B;QACtE,0EAA0E;QAC1E,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mFAAmF;QACnF,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,kDAAkD;QAClD,IACE,MAAM,CAAC,YAAY,KAAK,SAAS;YACjC,MAAM,CAAC,SAAS,KAAK,SAAS;YAC9B,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC7B,MAAM,CAAC,MAAM,KAAK,SAAS,EAC3B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,WAAW;QACX,OAAO,KAAK,CAAC;IACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"index-level.js","sourceRoot":"","sources":["../../../../src/store/index-level.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,sBAAsB,EACtB,kCAAkC,EAClC,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA4BnE,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAMpC;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB,EAAE,CAAuB;IACzB,MAAM,CAAmB;IACjB,gBAAgB,CAA4B;IAEpD,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,GAAG;YACZ,mBAAmB;YACnB,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;QAErD,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAS;YACjC,QAAQ,EAAc,IAAI,CAAC,MAAM,CAAC,QAAQ;YAC1C,mBAAmB,EAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB;YACrD,WAAW,EAAW,MAAM;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CACP,MAAc,EACd,UAAkB,EAClB,OAAkB,EAClB,OAA2B;QAG3B,0CAA0C;QAC1C,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,6BAA6B,EAAE,0DAA0D,CAAC,CAAC;QAC7H,CAAC;QAED,MAAM,IAAI,GAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAClD,MAAM,kBAAkB,GAAkD,EAAE,CAAC;QAE7E,gDAAgD;QAChD,oDAAoD;QACpD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,KAAK,MAAM,cAAc,IAAI,UAAU,EAAE,CAAC;oBACxC,MAAM,yBAAyB,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;oBAC9G,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,yBAAyB,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;gBAC1G,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,qHAAqH;QACrH,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,+BAA+B,CAChD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CACnF,CAAC;YACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,qHAAqH;QACrH,MAAM,yBAAyB,GAAG,IAAI,CAAC,wCAAwC,CAC7E,MAAM,EACN,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CACjE,CAAC;QACF,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEnD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,UAAkB,EAAE,OAA2B;QAC1E,MAAM,kBAAkB,GAAkD,EAAE,CAAC;QAE7E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,qBAAqB;YACrB,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,MAAM,yBAAyB,GAAG,IAAI,CAAC,wCAAwC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1H,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAEnD,iCAAiC;QACjC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,KAAK,MAAM,cAAc,IAAI,UAAU,EAAE,CAAC;oBACxC,MAAM,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;oBACvH,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,yBAAyB,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;gBACnH,kBAAkB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClD,MAAM,UAAU,GAAG,kCAAkC,CACnD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,CAClG,CAAC;YACF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACvD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,6BAA6B,CACzC,MAAc,EACd,IAAiB,EACjB,SAAiB,EACjB,UAAqC;QAErC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE5B,yEAAyE;QACzE,2EAA2E;QAC3E,mGAAmG;QACnG,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,gCAAgC,CAC1C,MAAM,EACN,SAAS,EACT,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAClD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gCAAgC,CAC5C,MAAc,EACd,UAAkB,EAClB,SAAiB,EACjB,UAAqC;QAGrC,yEAAyE;QACzE,2EAA2E;QAC3E,mGAAmG;QACnG,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAEtF,OAAO,IAAI,CAAC,gCAAgC,CAC1C,MAAM,EACN,SAAS,EACT,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gCAAgC,CAAC,MAAc,EAAE,SAAiB,EAAE,SAA6C;QAE7H,yEAAyE;QACzE,yIAAyI;QACzI,qHAAqH;QACrH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACvE,MAAM,kBAAkB,GAAG,eAAe,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACnG,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wCAAwC,CAAC,MAAc,EAAE,SAA6C;QAElH,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,kBAAkB,GAAG,eAAe,CAAC,wBAAwB,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;QACpG,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,SAAiB;QACpD,8IAA8I;QAC9I,OAAO,KAAK,SAAS,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,SAAiB;QAC/D,MAAM,kBAAkB,GAAG,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,yBAAyB,CAAC,MAAc;QACpD,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAAiB,EAAE,YAA0B,EAAE,OAA2B;QAEpG,2DAA2D;QAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC5F,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,sBAAsB,CAC3B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,EACzD,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,SAAS,EAC5C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,IAAI,UAAU,CAAC,6BAA6B,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC9E,CAAC;QAED,wCAAwC;QACxC,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,OAAiB,EAAE,YAAoD,EACjG,OAA2B;QAE3B,+CAA+C;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACnG,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,sBAAsB,CAC3B,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,cAAc,EAC3C,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CACvD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,GAAG,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QAChF,OAAO,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAc,EACd,OAAiB,EACjB,YAA0B,EAC1B,OAA2B;QAE3B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAG,KAAK,EAAE,GAAG,YAAY,CAAC;QAErD,8HAA8H;QAC9H,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAElF,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,KAAK,EAAG,MAAM,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC;YACzF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpD,MAAM;YACR,CAAC;YAED,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;YACzB,IAAI,aAAa,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,CAAE,gBAAgB,CAC9B,MAAc,EAAE,QAAe,EAAE,YAA0B,EAAE,OAA2B;QAExF,MAAM,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;QAEvF,MAAM,eAAe,GAAwC;YAC3D,EAAE,EAAE,QAAQ;SACb,CAAC;QAEF,mEAAmE;QACnE,IAAI,aAAa,KAAK,aAAa,CAAC,UAAU,EAAE,CAAC;YAC/C,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;YAE/B,0GAA0G;YAC1G,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,eAAe,CAAC,EAAE,GAAG,QAAQ,CAAC;gBAC9B,OAAO,eAAe,CAAC,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACzE,IAAI,KAAK,EAAE,MAAM,CAAE,CAAC,EAAE,GAAG,CAAE,IAAI,aAAa,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC;YAChF,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,2BAA2B,CAAC,MAAwB;QAC1D,MAAM,EAAE,UAAU,EAAG,KAAK,EAAE,GAAG,MAAM,CAAC;QACtC,OAAO,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,6BAA6B,CAAC,KAAoB,EAAE,YAAoB;QAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,EAAE,YAAY,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,oBAAoB,CAAC,IAAiB,EAAE,YAAoB;QACjE,MAAM,EAAE,UAAU,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAEpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,8BAA8B,EAAE,sBAAsB,YAAY,yCAAyC,CAAC,CAAC;QAC/I,CAAC;QAED,qDAAqD;QACrD,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,QAAQ,CAChB,YAAY,CAAC,2BAA2B,EACxC,gEAAgE,OAAO,KAAK,aAAa,CAC1F,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,UAAU,EAAG,KAAK,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAc,EACd,OAAiB,EACjB,YAA0B,EAC1B,OAA2B;QAE3B,MAAM,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC;QAE3G,sGAAsG;QACtG,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElG,0GAA0G;QAC1G,MAAM,OAAO,GAA4B,IAAI,GAAG,EAAE,CAAC;QAEnD,yIAAyI;QACzI,gIAAgI;QAChI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACH,6DAA6D;YAC7D,6FAA6F;YAC7F,iFAAiF;YACjF,0FAA0F;YAC1F,0DAA0D;YAC1D,yFAAyF;YACzF,uFAAuF;YACvF,gFAAgF;YAChF,oDAAoD;YACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAAkB,CAAC,IAAI,KAAK,YAAY,CAAC,gCAAgC,EAAE,CAAC;gBAC/E,wDAAwD;gBACxD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;QAE3G,MAAM,KAAK,GAAG,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/I,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,uFAAuF;YACvF,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,CAAC,SAAS,CAAC;QAC3D,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,wBAAwB,CACpC,MAAc,EACd,MAAc,EACd,YAAoB,EACpB,OAAiC,EACjC,YAAgC;QAGhC,2GAA2G;QAC3G,MAAM,cAAc,GAAG,CAAC,UAAyB,EAAQ,EAAE;YACzD,KAAK,MAAM,WAAW,IAAI,UAAU,EAAE,CAAC;gBACrC,uGAAuG;gBACvG,gFAAgF;gBAChF,4CAA4C;gBAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;oBACnG,SAAS;gBACX,CAAC;gBAED,uFAAuF;gBACvF,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;oBACpD,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,gCAAgC,EAAE,yBAAyB,YAAY,EAAE,CAAC,CAAC;gBAC7G,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;QAEF,2HAA2H;QAC3H,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC9D,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,MAAM,YAAY,IAAI,YAAY,EAAE,CAAC;YACxC,MAAM,cAAc,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YAClD,iEAAiE;YACjE,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBAChD,8EAA8E;gBAC9E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;gBACvG,cAAc,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvD,oCAAoC;gBACpC,6EAA6E;gBAC7E,KAAK,MAAM,aAAa,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;oBACpD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;oBACtG,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;iBAAM,IAAI,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvD,sCAAsC;gBACtC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;gBACvG,cAAc,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,YAAoB;QAC5D,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAkB,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,IAAI,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC9B,MAAa,EACb,YAAoB,EACpB,aAA0B,EAC1B,OAA2B;QAG3B,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;QACrF,MAAM,eAAe,GAAwC;YAC3D,EAAE,EAAE,WAAW;SAChB,CAAC;QAEF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,IAAI,KAAK,EAAE,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,eAAe,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC;YACtF,qFAAqF;YACrF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,MAAM;YACR,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,kBAAkB,CAC9B,MAAc,EACd,YAAoB,EACpB,WAAwB,EACxB,OAA2B;QAE3B,MAAM,eAAe,GAAwC,EAAE,CAAC;QAChE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,UAA+B,CAAC;YACvD,MAAM,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAE,CAAC,CAAC;YAC1E,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;gBAC7B,6FAA6F;gBAC7F,uFAAuF;gBACvF,2DAA2D;gBAC3D,eAAe,CAAC,cAAc,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC;YAC1D,CAAC;iBAAM,CAAC;gBACN,eAAe,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC;YACjD,CAAC;QACH,CAAC;QAED,iGAAiG;QACjG,0EAA0E;QAC1E,IAAI,eAAe,CAAC,EAAE,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC1E,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAE3E,IAAI,KAAK,EAAE,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,eAAe,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAAC;YACtF,mHAAmH;YACnH,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,EAAG,CAAC,EAAE,CAAC;gBAC1G,SAAS;YACX,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAgB,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,KAAkB,EAAE,KAAkB,EAAE,SAAiB,EAAE,SAAwB;QACnG,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAoB,CAAC;QAC/D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAoB,CAAC;QAE/D,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QAC5E,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC;QAE5E,OAAO,SAAS,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;YAC5C,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;YACtD,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACK,uBAAuB,CAAC,KAAoB,EAAE,aAA4B,EAAE,YAAoB,EAAE,iBAAyB;QAEjI,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAW,EAAE;YACnD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAoB,CAAC;YAC3D,MAAM,gBAAgB,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CAAC;YAElG,OAAO,aAAa,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;gBAChD,gBAAgB,GAAG,iBAAiB,CAAC,CAAC;gBACtC,gBAAgB,GAAG,iBAAiB,CAAC;QACzC,CAAC,CAAC;QAEF,oDAAoD;QACpD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;QAExB,OAAO,GAAG,GAAG,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9B,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,OAAO,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,UAAkB;QACzD,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC5E,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvE,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;YACpC,qBAAqB;YACrB,OAAO;QACT,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAc,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACK,wBAAwB,CAAC,GAAW;QAC1C,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,cAAc,CAAC,GAAG,MAAgB;QAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAa;QACpC,MAAM,eAAe,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAChD,MAAM,eAAe,GAAG,GAAG,CAAC,CAAC,+DAA+D;QAC5F,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;QAE9D,MAAM,MAAM,GAAW,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,MAAM,GAAW,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,KAAgC;QACjD,QAAQ,OAAO,KAAK,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvC;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,2BAA2B;IAC3B,4EAA4E;IAEpE,MAAM,CAAC,6BAA6B,CAAC,OAAiB,EAAE,YAA0B;QACxF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;gBACtD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,MAAc,EAAE,YAA0B;QACtE,0EAA0E;QAC1E,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mFAAmF;QACnF,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,kDAAkD;QAClD,IACE,MAAM,CAAC,YAAY,KAAK,SAAS;YACjC,MAAM,CAAC,SAAS,KAAK,SAAS;YAC9B,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC7B,MAAM,CAAC,MAAM,KAAK,SAAS,EAC3B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,WAAW;QACX,OAAO,KAAK,CAAC;IACf,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DwnConstant } from '../core/dwn-constant.js';
|
|
2
|
+
import { FilterUtility } from '../utils/filter.js';
|
|
2
3
|
import { Message } from '../core/message.js';
|
|
3
4
|
import { Records } from '../utils/records.js';
|
|
4
5
|
import { RecordsDelete } from '../interfaces/records-delete.js';
|
|
@@ -11,12 +12,12 @@ export class StorageController {
|
|
|
11
12
|
messageStore;
|
|
12
13
|
dataStore;
|
|
13
14
|
stateIndex;
|
|
14
|
-
|
|
15
|
-
constructor({ messageStore, dataStore, stateIndex,
|
|
15
|
+
eventLog;
|
|
16
|
+
constructor({ messageStore, dataStore, stateIndex, eventLog }) {
|
|
16
17
|
this.messageStore = messageStore;
|
|
17
18
|
this.dataStore = dataStore;
|
|
18
19
|
this.stateIndex = stateIndex;
|
|
19
|
-
this.
|
|
20
|
+
this.eventLog = eventLog;
|
|
20
21
|
}
|
|
21
22
|
async performRecordsDelete({ tenant, message }) {
|
|
22
23
|
// get existing records matching the `recordId`
|
|
@@ -39,9 +40,9 @@ export class StorageController {
|
|
|
39
40
|
const messageCid = await Message.getCid(message);
|
|
40
41
|
await this.messageStore.put(tenant, message, indexes);
|
|
41
42
|
await this.stateIndex.insert(tenant, messageCid, indexes);
|
|
42
|
-
// only emit if the event
|
|
43
|
-
if (this.
|
|
44
|
-
this.
|
|
43
|
+
// only emit if the event log is set
|
|
44
|
+
if (this.eventLog !== undefined) {
|
|
45
|
+
await this.eventLog.emit(tenant, { message, initialWrite }, indexes);
|
|
45
46
|
}
|
|
46
47
|
if (message.descriptor.prune) {
|
|
47
48
|
// purge/hard-delete all descendent records
|
|
@@ -50,6 +51,69 @@ export class StorageController {
|
|
|
50
51
|
// delete all existing messages that are not newest, except for the initial write
|
|
51
52
|
await StorageController.deleteAllOlderMessagesButKeepInitialWrite(tenant, existingMessages, message, this.messageStore, this.dataStore, this.stateIndex);
|
|
52
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Performs the squash processing for a `RecordsWrite` with `squash: true`.
|
|
56
|
+
* Deletes all sibling records at the same protocol path and parent context whose
|
|
57
|
+
* `messageTimestamp` is strictly older than the squash record's `messageTimestamp`.
|
|
58
|
+
* Unlike normal `RecordsDelete` tombstones, squash targets are fully purged — no initial writes
|
|
59
|
+
* are retained.
|
|
60
|
+
*
|
|
61
|
+
* This method is idempotent — it can be safely re-run on resume after a crash.
|
|
62
|
+
*/
|
|
63
|
+
async performRecordsSquash({ tenant, message }) {
|
|
64
|
+
const { protocol, protocolPath, messageTimestamp } = message.descriptor;
|
|
65
|
+
// Build a filter to find all sibling records at the same protocol path and parent context.
|
|
66
|
+
// We query by interface only (not method) so that both RecordsWrite and RecordsDelete messages are found.
|
|
67
|
+
const filter = {
|
|
68
|
+
interface: DwnInterfaceName.Records,
|
|
69
|
+
protocol,
|
|
70
|
+
protocolPath: protocolPath,
|
|
71
|
+
};
|
|
72
|
+
// Scope by parent context for nested records
|
|
73
|
+
const parentContextId = Records.getParentContextFromOfContextId(message.contextId);
|
|
74
|
+
if (parentContextId !== undefined && parentContextId !== '') {
|
|
75
|
+
const prefixFilter = FilterUtility.constructPrefixFilterAsRangeFilter(parentContextId);
|
|
76
|
+
filter.contextId = prefixFilter;
|
|
77
|
+
}
|
|
78
|
+
// Query for all records at this path and context
|
|
79
|
+
const { messages: siblingMessages } = await this.messageStore.query(tenant, [filter]);
|
|
80
|
+
// Group messages by recordId — RecordsWrite messages use `message.recordId`,
|
|
81
|
+
// RecordsDelete messages use `message.descriptor.recordId`.
|
|
82
|
+
const recordIdToMessages = new Map();
|
|
83
|
+
for (const msg of siblingMessages) {
|
|
84
|
+
let recordId;
|
|
85
|
+
if (Records.isRecordsWrite(msg)) {
|
|
86
|
+
recordId = msg.recordId;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
recordId = msg.descriptor.recordId;
|
|
90
|
+
}
|
|
91
|
+
const existing = recordIdToMessages.get(recordId);
|
|
92
|
+
if (existing !== undefined) {
|
|
93
|
+
existing.push(msg);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
recordIdToMessages.set(recordId, [msg]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Delete all records whose newest message timestamp is strictly older than the squash timestamp.
|
|
100
|
+
// Skip the squash record itself.
|
|
101
|
+
for (const [recordId, messages] of recordIdToMessages) {
|
|
102
|
+
if (recordId === message.recordId) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// Use the newest message's timestamp to determine if the record predates the squash.
|
|
106
|
+
const newestMessage = await Message.getNewestMessage(messages);
|
|
107
|
+
if (newestMessage === undefined) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const newestTimestamp = newestMessage.descriptor.messageTimestamp;
|
|
111
|
+
if (newestTimestamp < messageTimestamp) {
|
|
112
|
+
// Fully purge this record — all messages (including initial write) and their data
|
|
113
|
+
await StorageController.purgeRecordMessages(tenant, messages, this.messageStore, this.dataStore, this.stateIndex);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
53
117
|
/**
|
|
54
118
|
* Deletes the data referenced by the given message if needed.
|
|
55
119
|
* @param message The message to check if the data it references should be deleted.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-controller.js","sourceRoot":"","sources":["../../../../src/store/storage-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"storage-controller.js","sourceRoot":"","sources":["../../../../src/store/storage-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-types.js","sourceRoot":"","sources":["../../../../src/types/permission-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permission-types.js","sourceRoot":"","sources":["../../../../src/types/permission-types.ts"],"names":[],"mappings":"AAwGA,MAAM,CAAN,IAAY,8BAGX;AAHD,WAAY,8BAA8B;IACxC,uDAAqB,CAAA;IACrB,2DAAyB,CAAA;AAC3B,CAAC,EAHW,8BAA8B,KAA9B,8BAA8B,QAGzC"}
|
|
@@ -13,6 +13,17 @@ export var ProtocolAction;
|
|
|
13
13
|
ProtocolAction["Delete"] = "delete";
|
|
14
14
|
ProtocolAction["Prune"] = "prune";
|
|
15
15
|
ProtocolAction["Read"] = "read";
|
|
16
|
+
ProtocolAction["Squash"] = "squash";
|
|
16
17
|
ProtocolAction["Update"] = "update";
|
|
17
18
|
})(ProtocolAction || (ProtocolAction = {}));
|
|
19
|
+
/**
|
|
20
|
+
* Supported strategies for handling writes that would exceed a `$recordLimit`.
|
|
21
|
+
*/
|
|
22
|
+
export var ProtocolRecordLimitStrategy;
|
|
23
|
+
(function (ProtocolRecordLimitStrategy) {
|
|
24
|
+
/** Reject the incoming write with an error. The author must delete old records first. */
|
|
25
|
+
ProtocolRecordLimitStrategy["Reject"] = "reject";
|
|
26
|
+
/** Automatically delete the oldest record(s) (by `dateCreated`) to make room for the new one. */
|
|
27
|
+
ProtocolRecordLimitStrategy["PurgeOldest"] = "purgeOldest";
|
|
28
|
+
})(ProtocolRecordLimitStrategy || (ProtocolRecordLimitStrategy = {}));
|
|
18
29
|
//# sourceMappingURL=protocols-types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocols-types.js","sourceRoot":"","sources":["../../../../src/types/protocols-types.ts"],"names":[],"mappings":"AA+DA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;AACzB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"protocols-types.js","sourceRoot":"","sources":["../../../../src/types/protocols-types.ts"],"names":[],"mappings":"AA+DA,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;AACzB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,MAAM,CAAN,IAAY,cAUX;AAVD,WAAY,cAAc;IACxB,wCAAsB,CAAA;IACtB,sCAAoB,CAAA;IACpB,wCAAsB,CAAA;IACtB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,iCAAe,CAAA;IACf,+BAAa,CAAA;IACb,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;AACnB,CAAC,EAVW,cAAc,KAAd,cAAc,QAUzB;AA8ED;;GAEG;AACH,MAAM,CAAN,IAAY,2BAKX;AALD,WAAY,2BAA2B;IACrC,yFAAyF;IACzF,gDAAiB,CAAA;IACjB,iGAAiG;IACjG,0DAA2B,CAAA;AAC7B,CAAC,EALW,2BAA2B,KAA3B,2BAA2B,QAKtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-types.js","sourceRoot":"","sources":["../../../../src/types/records-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"records-types.js","sourceRoot":"","sources":["../../../../src/types/records-types.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,QAOX;AAPD,WAAY,QAAQ;IAClB,iDAAqC,CAAA;IACrC,mDAAuC,CAAA;IACvC,qDAAyC,CAAA;IACzC,uDAA2C,CAAA;IAC3C,iDAAqC,CAAA;IACrC,mDAAuC,CAAA;AACzC,CAAC,EAPW,QAAQ,KAAR,QAAQ,QAOnB"}
|
|
@@ -4,16 +4,8 @@ import { X25519 } from '@enbox/crypto';
|
|
|
4
4
|
import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
5
5
|
export var KeyDerivationScheme;
|
|
6
6
|
(function (KeyDerivationScheme) {
|
|
7
|
-
/**
|
|
8
|
-
* Key derivation using the `dataFormat` value for Flat-space records.
|
|
9
|
-
*/
|
|
10
|
-
KeyDerivationScheme["DataFormats"] = "dataFormats";
|
|
11
7
|
KeyDerivationScheme["ProtocolContext"] = "protocolContext";
|
|
12
8
|
KeyDerivationScheme["ProtocolPath"] = "protocolPath";
|
|
13
|
-
/**
|
|
14
|
-
* Key derivation using the `schema` value for Flat-space records.
|
|
15
|
-
*/
|
|
16
|
-
KeyDerivationScheme["Schemas"] = "schemas";
|
|
17
9
|
})(KeyDerivationScheme || (KeyDerivationScheme = {}));
|
|
18
10
|
/**
|
|
19
11
|
* Class containing hierarchical deterministic key related utility methods used by the DWN.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hd-key.js","sourceRoot":"","sources":["../../../../src/utils/hd-key.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"hd-key.js","sourceRoot":"","sources":["../../../../src/utils/hd-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { FilterUtility } from './filter.js';
|
|
2
2
|
import { normalizeProtocolUrl } from './url.js';
|
|
3
|
-
import { PermissionsProtocol } from '../protocols/permissions.js';
|
|
4
|
-
import { Records } from './records.js';
|
|
5
3
|
import { isEmptyObject, removeUndefinedProperties } from './object.js';
|
|
6
4
|
/**
|
|
7
5
|
* Class containing Messages related utility methods.
|
|
@@ -31,48 +29,32 @@ export class Messages {
|
|
|
31
29
|
/**
|
|
32
30
|
* Converts an incoming array of MessagesFilter into an array of Filter usable by MessageLog.
|
|
33
31
|
*
|
|
32
|
+
* When a `CoreProtocolRegistry` is provided, each registered core protocol's
|
|
33
|
+
* `constructAdditionalMessageFilter` hook is invoked per filter. This replaces the previous
|
|
34
|
+
* hardcoded permission-records shadow filter with a generic loop over all core protocols.
|
|
35
|
+
*
|
|
34
36
|
* @param filters An array of MessagesFilter
|
|
37
|
+
* @param coreProtocols Optional registry of core protocols whose additional filters are injected.
|
|
35
38
|
* @returns {Filter[]} an array of generic Filter able to be used when querying.
|
|
36
39
|
*/
|
|
37
|
-
static convertFilters(filters) {
|
|
40
|
+
static convertFilters(filters, coreProtocols) {
|
|
38
41
|
const messagesQueryFilters = [];
|
|
39
|
-
// convert each filter individually by the specific type of filter it is
|
|
40
|
-
// we must check for the type of filter in a specific order to make a reductive decision as to which filters need converting
|
|
41
|
-
// first we check for `MessagesRecordsFilter` fields for conversion
|
|
42
|
-
// otherwise it is `MessagesMessageFilter` fields for conversion
|
|
43
42
|
for (const filter of filters) {
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
43
|
+
// Ask each core protocol whether it needs an additional shadow filter for this query.
|
|
44
|
+
// For example, the Permissions protocol injects a filter for grants/requests/revocations
|
|
45
|
+
// tagged with the target protocol so they appear alongside that protocol's own records.
|
|
46
|
+
if (coreProtocols !== undefined) {
|
|
47
|
+
for (const coreProtocol of coreProtocols.all()) {
|
|
48
|
+
const additionalFilter = coreProtocol.constructAdditionalMessageFilter?.(filter);
|
|
49
|
+
if (additionalFilter !== undefined) {
|
|
50
|
+
messagesQueryFilters.push(additionalFilter);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
51
53
|
}
|
|
52
54
|
messagesQueryFilters.push(this.convertFilter(filter));
|
|
53
55
|
}
|
|
54
56
|
return messagesQueryFilters;
|
|
55
57
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Constructs a filter that gets associated permission records if protocol is in the given filter.
|
|
58
|
-
*/
|
|
59
|
-
static constructPermissionRecordsFilter(filter) {
|
|
60
|
-
const { protocol, messageTimestamp } = filter;
|
|
61
|
-
if (protocol !== undefined) {
|
|
62
|
-
const taggedFilter = {
|
|
63
|
-
protocol: PermissionsProtocol.uri,
|
|
64
|
-
...Records.convertTagsFilter({ protocol })
|
|
65
|
-
};
|
|
66
|
-
if (messageTimestamp != undefined) {
|
|
67
|
-
// if we filter by message timestamp, we also want to filter the permission messages by the same timestamp range
|
|
68
|
-
const messageTimestampFilter = FilterUtility.convertRangeCriterion(messageTimestamp);
|
|
69
|
-
if (messageTimestampFilter) {
|
|
70
|
-
taggedFilter.messageTimestamp = messageTimestampFilter;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return taggedFilter;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
58
|
/**
|
|
77
59
|
* Converts an external-facing filter model into an internal-facing filer model used by data store.
|
|
78
60
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/utils/messages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/utils/messages.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAGvE;;GAEG;AACH,MAAM,OAAO,QAAQ;IACnB;;OAEG;IACI,MAAM,CAAC,gBAAgB,CAAC,OAAyB;QAEtD,MAAM,oBAAoB,GAAqB,EAAE,CAAC;QAElD,8EAA8E;QAC9E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEnG,MAAM,cAAc,GAAG;gBACrB,GAAG,MAAM;gBACT,QAAQ;aACT,CAAC;YAEF,6DAA6D;YAC7D,yBAAyB,CAAC,cAAc,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;gBACnC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,cAAc,CAAC,OAAyB,EAAE,aAAoC;QAE1F,MAAM,oBAAoB,GAAa,EAAE,CAAC;QAE1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,sFAAsF;YACtF,yFAAyF;YACzF,wFAAwF;YACxF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC;oBAC/C,MAAM,gBAAgB,GAAG,YAAY,CAAC,gCAAgC,EAAE,CAAC,MAAM,CAAC,CAAC;oBACjF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;wBACnC,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,aAAa,CAAC,MAAsB;QACjD,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,EAAY,CAAC;QAE3C,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;QACpC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpH,IAAI,sBAAsB,EAAE,CAAC;YAC3B,UAAU,CAAC,gBAAgB,GAAG,sBAAsB,CAAC;YACrD,OAAO,UAAU,CAAC,WAAW,CAAC;QAChC,CAAC;QACD,OAAO,UAAoB,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -72,32 +72,15 @@ export class Records {
|
|
|
72
72
|
const descriptor = recordsWriteMessage.descriptor;
|
|
73
73
|
const contextId = recordsWriteMessage.contextId;
|
|
74
74
|
let fullDerivationPath;
|
|
75
|
-
if (keyDerivationScheme === KeyDerivationScheme.
|
|
76
|
-
fullDerivationPath = Records.constructKeyDerivationPathUsingDataFormatsScheme(descriptor.dataFormat);
|
|
77
|
-
}
|
|
78
|
-
else if (keyDerivationScheme === KeyDerivationScheme.ProtocolPath) {
|
|
75
|
+
if (keyDerivationScheme === KeyDerivationScheme.ProtocolPath) {
|
|
79
76
|
fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolPathScheme(descriptor);
|
|
80
77
|
}
|
|
81
|
-
else if (keyDerivationScheme === KeyDerivationScheme.ProtocolContext) {
|
|
82
|
-
fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(contextId);
|
|
83
|
-
}
|
|
84
78
|
else {
|
|
85
|
-
// `
|
|
86
|
-
fullDerivationPath = Records.
|
|
79
|
+
// `protocolContext` scheme
|
|
80
|
+
fullDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(contextId);
|
|
87
81
|
}
|
|
88
82
|
return fullDerivationPath;
|
|
89
83
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Constructs the full key derivation path using `dataFormats` scheme.
|
|
92
|
-
* The derivation path is always `["dataFormats", "<mime-type>"]` regardless of whether
|
|
93
|
-
* a schema is present. This matches the spec: keys are derived purely from the MIME type.
|
|
94
|
-
*/
|
|
95
|
-
static constructKeyDerivationPathUsingDataFormatsScheme(dataFormat) {
|
|
96
|
-
return [
|
|
97
|
-
KeyDerivationScheme.DataFormats,
|
|
98
|
-
dataFormat
|
|
99
|
-
];
|
|
100
|
-
}
|
|
101
84
|
/**
|
|
102
85
|
* Constructs the full key derivation path using `protocolPath` scheme.
|
|
103
86
|
*
|
|
@@ -107,11 +90,6 @@ export class Records {
|
|
|
107
90
|
* its children (composing protocol) use different protocol URIs and thus different key trees.
|
|
108
91
|
*/
|
|
109
92
|
static constructKeyDerivationPathUsingProtocolPathScheme(descriptor) {
|
|
110
|
-
// ensure `protocol` is defined
|
|
111
|
-
// NOTE: no need to check `protocolPath` and `contextId` because earlier code ensures that if `protocol` is defined, those are defined also
|
|
112
|
-
if (descriptor.protocol === undefined) {
|
|
113
|
-
throw new DwnError(DwnErrorCode.RecordsProtocolPathDerivationSchemeMissingProtocol, 'Unable to construct key derivation path using `protocols` scheme because `protocol` is missing.');
|
|
114
|
-
}
|
|
115
93
|
const protocolPathSegments = descriptor.protocolPath.split('/');
|
|
116
94
|
const fullDerivationPath = [
|
|
117
95
|
KeyDerivationScheme.ProtocolPath,
|
|
@@ -131,9 +109,6 @@ export class Records {
|
|
|
131
109
|
* and composing protocols that attach to those threads).
|
|
132
110
|
*/
|
|
133
111
|
static constructKeyDerivationPathUsingProtocolContextScheme(contextId) {
|
|
134
|
-
if (contextId === undefined) {
|
|
135
|
-
throw new DwnError(DwnErrorCode.RecordsProtocolContextDerivationSchemeMissingContextId, 'Unable to construct key derivation path using `protocolContext` scheme because `contextId` is missing.');
|
|
136
|
-
}
|
|
137
112
|
// TODO: Extend key derivation support to include the full contextId (https://github.com/enboxorg/enbox/issues/99)
|
|
138
113
|
const firstContextSegment = contextId.split('/')[0];
|
|
139
114
|
const fullDerivationPath = [
|
|
@@ -142,19 +117,6 @@ export class Records {
|
|
|
142
117
|
];
|
|
143
118
|
return fullDerivationPath;
|
|
144
119
|
}
|
|
145
|
-
/**
|
|
146
|
-
* Constructs the full key derivation path using `schemas` scheme.
|
|
147
|
-
*/
|
|
148
|
-
static constructKeyDerivationPathUsingSchemasScheme(schema) {
|
|
149
|
-
if (schema === undefined) {
|
|
150
|
-
throw new DwnError(DwnErrorCode.RecordsSchemasDerivationSchemeMissingSchema, 'Unable to construct key derivation path using `schemas` scheme because `schema` is missing.');
|
|
151
|
-
}
|
|
152
|
-
const fullDerivationPath = [
|
|
153
|
-
KeyDerivationScheme.Schemas,
|
|
154
|
-
schema
|
|
155
|
-
];
|
|
156
|
-
return fullDerivationPath;
|
|
157
|
-
}
|
|
158
120
|
/**
|
|
159
121
|
* Derives a descendant private key given an ancestor private key and the full absolute derivation path.
|
|
160
122
|
* Uses X25519 keys for encryption key derivation.
|
|
@@ -327,7 +289,7 @@ export class Records {
|
|
|
327
289
|
}
|
|
328
290
|
if (authorDelegatedGrantDefined) {
|
|
329
291
|
const delegatedGrant = message.authorization.authorDelegatedGrant;
|
|
330
|
-
const permissionGrant =
|
|
292
|
+
const permissionGrant = PermissionGrant.parse(delegatedGrant);
|
|
331
293
|
if (permissionGrant.delegated !== true) {
|
|
332
294
|
throw new DwnError(DwnErrorCode.RecordsAuthorDelegatedGrantNotADelegatedGrant, `The owner delegated grant given is not a delegated grant.`);
|
|
333
295
|
}
|
|
@@ -353,7 +315,7 @@ export class Records {
|
|
|
353
315
|
}
|
|
354
316
|
if (ownerDelegatedGrantDefined) {
|
|
355
317
|
const delegatedGrant = message.authorization.ownerDelegatedGrant;
|
|
356
|
-
const permissionGrant =
|
|
318
|
+
const permissionGrant = PermissionGrant.parse(delegatedGrant);
|
|
357
319
|
if (permissionGrant.delegated !== true) {
|
|
358
320
|
throw new DwnError(DwnErrorCode.RecordsOwnerDelegatedGrantNotADelegatedGrant, `The owner delegated grant given is not a delegated grant.`);
|
|
359
321
|
}
|