@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-count.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-count.spec.ts"],"names":[],"mappings":"AAkBA,wBAAgB,uBAAuB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"records-count.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-count.spec.ts"],"names":[],"mappings":"AAkBA,wBAAgB,uBAAuB,IAAI,IAAI,CAiW9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-delete.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-delete.spec.ts"],"names":[],"mappings":"AAmCA,wBAAgB,wBAAwB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"records-delete.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-delete.spec.ts"],"names":[],"mappings":"AAmCA,wBAAgB,wBAAwB,IAAI,IAAI,CAi4B/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-query.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-query.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"records-query.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-query.spec.ts"],"names":[],"mappings":"AA8BA,wBAAgB,uBAAuB,IAAI,IAAI,CAm6G9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-read.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-read.spec.ts"],"names":[],"mappings":"AAgCA,wBAAgB,sBAAsB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"records-read.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-read.spec.ts"],"names":[],"mappings":"AAgCA,wBAAgB,sBAAsB,IAAI,IAAI,CAknE7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-subscribe.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-subscribe.spec.ts"],"names":[],"mappings":"AAwBA,wBAAgB,2BAA2B,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"records-subscribe.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-subscribe.spec.ts"],"names":[],"mappings":"AAwBA,wBAAgB,2BAA2B,IAAI,IAAI,CAwuClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records-write.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-write.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"records-write.spec.d.ts","sourceRoot":"","sources":["../../../../tests/handlers/records-write.spec.ts"],"names":[],"mappings":"AAmDA,wBAAgB,uBAAuB,IAAI,IAAI,CA2/I9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleted-record.spec.d.ts","sourceRoot":"","sources":["../../../../tests/scenarios/deleted-record.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deleted-record.spec.d.ts","sourceRoot":"","sources":["../../../../tests/scenarios/deleted-record.spec.ts"],"names":[],"mappings":"AAkBA,wBAAgB,0BAA0B,IAAI,IAAI,CAkejD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.spec.d.ts","sourceRoot":"","sources":["../../../../tests/scenarios/subscriptions.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"subscriptions.spec.d.ts","sourceRoot":"","sources":["../../../../tests/scenarios/subscriptions.spec.ts"],"names":[],"mappings":"AA+BA,wBAAgB,yBAAyB,IAAI,IAAI,CAkmChD"}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { EventLog } from '../src/index.js';
|
|
2
2
|
/**
|
|
3
|
-
* Class that manages the
|
|
4
|
-
* This is
|
|
5
|
-
*
|
|
6
|
-
* to test compatibility with default/built-in implementation.
|
|
3
|
+
* Class that manages the EventLog implementation for testing.
|
|
4
|
+
* This is the single point of configuration that allows different EventLog
|
|
5
|
+
* implementations to be swapped in to test compatibility.
|
|
7
6
|
*/
|
|
8
|
-
export declare class
|
|
9
|
-
private static
|
|
7
|
+
export declare class TestEventLog {
|
|
8
|
+
private static eventLog?;
|
|
10
9
|
/**
|
|
11
|
-
* Overrides the event
|
|
12
|
-
* If not given, default implementation will be used.
|
|
10
|
+
* Overrides the event log with a given implementation.
|
|
11
|
+
* If not given, default in-memory implementation will be used.
|
|
13
12
|
*/
|
|
14
13
|
static override(overrides?: {
|
|
15
|
-
|
|
14
|
+
eventLog?: EventLog;
|
|
16
15
|
}): void;
|
|
17
16
|
/**
|
|
18
|
-
* Initializes and returns the event
|
|
17
|
+
* Initializes and returns the event log used for running the test suite.
|
|
19
18
|
*/
|
|
20
|
-
static get():
|
|
19
|
+
static get(): EventLog;
|
|
21
20
|
}
|
|
22
21
|
//# sourceMappingURL=test-event-stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-event-stream.d.ts","sourceRoot":"","sources":["../../../tests/test-event-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"test-event-stream.d.ts","sourceRoot":"","sources":["../../../tests/test-event-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAW;IAEnC;;;OAGG;WACW,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI;IAIjE;;OAEG;WACW,GAAG,IAAI,QAAQ;CAI9B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DataStore,
|
|
1
|
+
import type { DataStore, EventLog, MessageStore, ResumableTaskStore, StateIndex } from '../src/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Class for running DWN tests from an external repository that depends on this SDK.
|
|
4
4
|
*/
|
|
@@ -11,7 +11,7 @@ export declare class TestSuite {
|
|
|
11
11
|
messageStore?: MessageStore;
|
|
12
12
|
dataStore?: DataStore;
|
|
13
13
|
stateIndex?: StateIndex;
|
|
14
|
-
|
|
14
|
+
eventLog?: EventLog;
|
|
15
15
|
resumableTaskStore?: ResumableTaskStore;
|
|
16
16
|
}): void;
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-suite.d.ts","sourceRoot":"","sources":["../../../tests/test-suite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"test-suite.d.ts","sourceRoot":"","sources":["../../../tests/test-suite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAuCzG;;GAEG;AACH,qBAAa,SAAS;IAEpB;;;OAGG;WACW,2BAA2B,CAAC,SAAS,CAAC,EAAE;QACpD,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;KACzC,GAAG,IAAI;CA8CT"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DidResolutionResult } from '@enbox/dids';
|
|
2
|
+
import type { Dwn } from '../../src/dwn.js';
|
|
2
3
|
import type { GeneralJws } from '../../src/types/jws-types.js';
|
|
3
4
|
import type { MessageSigner } from '../../src/types/signer.js';
|
|
4
5
|
import type { AuthorizationModel, Pagination } from '../../src/types/message-types.js';
|
|
@@ -104,6 +105,7 @@ export type GenerateRecordsWriteInput = {
|
|
|
104
105
|
datePublished?: string;
|
|
105
106
|
encryptionInput?: EncryptionInput;
|
|
106
107
|
permissionGrantId?: string;
|
|
108
|
+
squash?: true;
|
|
107
109
|
};
|
|
108
110
|
export type GenerateFromRecordsWriteInput = {
|
|
109
111
|
author: Persona;
|
|
@@ -157,6 +159,8 @@ export type GenerateRecordsSubscribeInput = {
|
|
|
157
159
|
dateSort?: DateSort;
|
|
158
160
|
pagination?: Pagination;
|
|
159
161
|
protocolRole?: string;
|
|
162
|
+
/** Opaque EventLog cursor for catch-up + EOSE subscribe. */
|
|
163
|
+
cursor?: string;
|
|
160
164
|
};
|
|
161
165
|
export type GenerateRecordsSubscribeOutput = {
|
|
162
166
|
author: Persona | undefined;
|
|
@@ -191,6 +195,8 @@ export type GenerateMessagesSubscribeInput = {
|
|
|
191
195
|
filters?: MessagesFilter[];
|
|
192
196
|
messageTimestamp?: string;
|
|
193
197
|
permissionGrantId?: string;
|
|
198
|
+
/** Opaque EventLog cursor for catch-up + EOSE subscribe. */
|
|
199
|
+
cursor?: string;
|
|
194
200
|
};
|
|
195
201
|
export type GenerateMessagesSubscribeOutput = {
|
|
196
202
|
author: Persona;
|
|
@@ -207,6 +213,13 @@ export type GenerateMessagesReadOutput = {
|
|
|
207
213
|
message: MessagesReadMessage;
|
|
208
214
|
messagesRead: MessagesRead;
|
|
209
215
|
};
|
|
216
|
+
/**
|
|
217
|
+
* Protocol definition that matches the defaults used by `TestDataGenerator.generateRecordsWrite()`:
|
|
218
|
+
* `protocol: 'http://test-protocol.xyz'`, `protocolPath: 'testRecord'`.
|
|
219
|
+
*
|
|
220
|
+
* Install via `TestDataGenerator.installDefaultTestProtocol(dwn, persona)`.
|
|
221
|
+
*/
|
|
222
|
+
export declare const defaultTestProtocolDefinition: ProtocolDefinition;
|
|
210
223
|
/**
|
|
211
224
|
* Utility class for generating data for testing.
|
|
212
225
|
*/
|
|
@@ -215,6 +228,12 @@ export declare class TestDataGenerator {
|
|
|
215
228
|
* Generates a persona.
|
|
216
229
|
*/
|
|
217
230
|
static generatePersona(input?: Partial<Persona>): Promise<Persona>;
|
|
231
|
+
/**
|
|
232
|
+
* Installs the default test protocol (`http://test-protocol.xyz` with `testRecord` type)
|
|
233
|
+
* on the given DWN for the given persona. Call this before processing any RecordsWrite
|
|
234
|
+
* created with `generateRecordsWrite()` that uses the default protocol.
|
|
235
|
+
*/
|
|
236
|
+
static installDefaultTestProtocol(dwn: Dwn, persona: Persona): Promise<void>;
|
|
218
237
|
/**
|
|
219
238
|
* Generates a ProtocolsConfigure message for testing.
|
|
220
239
|
* Optional parameters are generated if not given.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-data-generator.d.ts","sourceRoot":"","sources":["../../../../tests/utils/test-data-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test-data-generator.d.ts","sourceRoot":"","sources":["../../../../tests/utils/test-data-generator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enbox/dwn-sdk-js",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "A reference implementation of https://identity.foundation/decentralized-web-node/spec/",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -64,14 +64,14 @@
|
|
|
64
64
|
},
|
|
65
65
|
"react-native": "./dist/esm/src/index.js",
|
|
66
66
|
"dependencies": {
|
|
67
|
+
"@enbox/crypto": "0.0.6",
|
|
68
|
+
"@enbox/dids": "0.0.7",
|
|
67
69
|
"@ipld/dag-cbor": "9.0.3",
|
|
68
70
|
"@js-temporal/polyfill": "0.4.4",
|
|
69
71
|
"@noble/ciphers": "0.5.3",
|
|
70
72
|
"@noble/curves": "1.4.2",
|
|
71
73
|
"@noble/ed25519": "2.0.0",
|
|
72
74
|
"@noble/secp256k1": "2.0.0",
|
|
73
|
-
"@enbox/crypto": "0.0.4",
|
|
74
|
-
"@enbox/dids": "0.0.5",
|
|
75
75
|
"abstract-level": "1.0.3",
|
|
76
76
|
"ajv": "8.18.0",
|
|
77
77
|
"interface-blockstore": "5.2.3",
|
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
"level": "8.0.0",
|
|
82
82
|
"lodash": "4.17.21",
|
|
83
83
|
"lru-cache": "9.1.2",
|
|
84
|
+
"mitt": "^3.0.1",
|
|
84
85
|
"multiformats": "11.0.2",
|
|
85
86
|
"uint8arrays": "5.1.0",
|
|
86
87
|
"ulidx": "2.1.0"
|
|
@@ -130,7 +131,7 @@
|
|
|
130
131
|
"test:node:coverage": "bun run compile-validators && bun test --coverage --coverage-reporter=text --coverage-reporter=lcov --coverage-dir=coverage .spec.ts",
|
|
131
132
|
"test:node-grep": "bun run compile-validators && bun test .spec.ts -t $GREP",
|
|
132
133
|
"test:browser": "bun run compile-validators && bunx --bun vitest --config vitest.browser.config.ts --run",
|
|
133
|
-
"test:browser:coverage": "bun run compile-validators && bunx --bun vitest --config vitest.browser.config.ts --run --coverage --coverage.provider=istanbul
|
|
134
|
+
"test:browser:coverage": "bun run compile-validators && bunx --bun vitest --config vitest.browser.config.ts --run --coverage --coverage.provider=istanbul",
|
|
134
135
|
"license-check": "license-report --only=prod > license-report.json && bun ./build/license-check.cjs",
|
|
135
136
|
"publish:unstable": "./build/publish-unstable.sh"
|
|
136
137
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-cutting constants that are shared between modules which cannot directly
|
|
3
|
+
* import each other without creating circular dependencies.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Well-known protocol path for permission grant revocation records.
|
|
8
|
+
* Defined here (rather than on `PermissionsProtocol`) to avoid circular
|
|
9
|
+
* dependencies between `grant-authorization.ts` and `protocols/permissions.ts`.
|
|
10
|
+
*/
|
|
11
|
+
export const PERMISSIONS_REVOCATION_PATH = 'grant/revocation';
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { DataStore } from '../types/data-store.js';
|
|
2
|
+
import type { Filter } from '../types/query-types.js';
|
|
3
|
+
import type { MessagesFilter } from '../types/messages-types.js';
|
|
4
|
+
import type { MessageStore } from '../types/message-store.js';
|
|
5
|
+
import type { ProtocolDefinition } from '../types/protocols-types.js';
|
|
6
|
+
import type { RecordsWrite } from '../interfaces/records-write.js';
|
|
7
|
+
import type { RecordsWriteMessage } from '../types/records-types.js';
|
|
8
|
+
import type { StateIndex } from '../types/state-index.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Bundled store references passed to core protocol post-processing hooks.
|
|
12
|
+
*/
|
|
13
|
+
export type CoreProtocolStores = {
|
|
14
|
+
messageStore : MessageStore;
|
|
15
|
+
dataStore : DataStore;
|
|
16
|
+
stateIndex : StateIndex;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* A core protocol is a hardcoded, immutable, always-installed DWN protocol
|
|
21
|
+
* with lifecycle hooks that participate in the Records message processing pipeline.
|
|
22
|
+
*
|
|
23
|
+
* Core protocols are returned from `fetchProtocolDefinition()` without a database
|
|
24
|
+
* lookup and cannot be overridden by `ProtocolsConfigure`. They provide system-level
|
|
25
|
+
* behavior (e.g., permissions) while riding on the Records interface for CRUD and sync.
|
|
26
|
+
*/
|
|
27
|
+
export interface CoreProtocol {
|
|
28
|
+
/** The immutable protocol definition. */
|
|
29
|
+
readonly definition: ProtocolDefinition;
|
|
30
|
+
|
|
31
|
+
/** The protocol URI (shorthand for `definition.protocol`). */
|
|
32
|
+
readonly uri: string;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Validate the data payload of a record being written under this protocol.
|
|
36
|
+
* Called after protocol authorization but before storage.
|
|
37
|
+
* @throws DwnError to reject the write with the appropriate status code.
|
|
38
|
+
*/
|
|
39
|
+
validateRecord?(message: RecordsWriteMessage, dataBytes: Uint8Array): void;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Pre-processing hook: runs before storing a record under this protocol.
|
|
43
|
+
* Can perform cross-record validation (e.g., revocation tag consistency checks).
|
|
44
|
+
* @throws DwnError to reject the write.
|
|
45
|
+
*/
|
|
46
|
+
preProcessWrite?(
|
|
47
|
+
tenant: string,
|
|
48
|
+
message: RecordsWriteMessage,
|
|
49
|
+
messageStore: MessageStore,
|
|
50
|
+
): Promise<void>;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Post-processing hook: runs after successfully storing a record under this protocol.
|
|
54
|
+
* Can perform cascading side effects (e.g., cleanup of grant-authorized messages on revocation).
|
|
55
|
+
*/
|
|
56
|
+
postProcessWrite?(
|
|
57
|
+
tenant: string,
|
|
58
|
+
recordsWrite: RecordsWrite,
|
|
59
|
+
stores: CoreProtocolStores,
|
|
60
|
+
): Promise<void>;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Map an error code from this protocol's validation to an HTTP status code.
|
|
64
|
+
* Return `undefined` if the error code is not owned by this protocol.
|
|
65
|
+
*/
|
|
66
|
+
mapErrorToStatusCode?(errorCode: string): number | undefined;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Construct an additional filter to include this protocol's records in
|
|
70
|
+
* protocol-scoped `MessagesFilter` conversions (e.g., sync, subscribe, read).
|
|
71
|
+
*
|
|
72
|
+
* This is used when permission records (or similar system records) are tagged
|
|
73
|
+
* with a target protocol and must appear alongside that protocol's records in
|
|
74
|
+
* message-level queries.
|
|
75
|
+
*
|
|
76
|
+
* Return `undefined` if no additional filter is needed for the given input.
|
|
77
|
+
*/
|
|
78
|
+
constructAdditionalMessageFilter?(filter: MessagesFilter): Filter | undefined;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Registry of core protocols. Owned by a `Dwn` instance (not a static singleton)
|
|
83
|
+
* so that each DWN — including those in tests — gets an isolated registry.
|
|
84
|
+
*/
|
|
85
|
+
export class CoreProtocolRegistry {
|
|
86
|
+
private readonly _protocols: Map<string, CoreProtocol> = new Map();
|
|
87
|
+
|
|
88
|
+
/** Register a core protocol. */
|
|
89
|
+
public register(protocol: CoreProtocol): void {
|
|
90
|
+
this._protocols.set(protocol.uri, protocol);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Get a core protocol by URI, or `undefined` if not registered. */
|
|
94
|
+
public get(uri: string): CoreProtocol | undefined {
|
|
95
|
+
return this._protocols.get(uri);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Get the protocol definition for a core protocol, or `undefined`.
|
|
100
|
+
* Used by `fetchProtocolDefinition()` to bypass the message store for core protocols.
|
|
101
|
+
*/
|
|
102
|
+
public getDefinition(uri: string): ProtocolDefinition | undefined {
|
|
103
|
+
return this._protocols.get(uri)?.definition;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Check whether a URI is a registered core protocol. */
|
|
107
|
+
public has(uri: string): boolean {
|
|
108
|
+
return this._protocols.has(uri);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** Get all registered core protocols. */
|
|
112
|
+
public all(): CoreProtocol[] {
|
|
113
|
+
return [...this._protocols.values()];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Delegate error code mapping to all registered core protocols.
|
|
118
|
+
* Returns the first non-`undefined` status code, or `undefined` if no protocol claims the error.
|
|
119
|
+
*/
|
|
120
|
+
public mapErrorToStatusCode(errorCode: string): number | undefined {
|
|
121
|
+
for (const protocol of this._protocols.values()) {
|
|
122
|
+
const status = protocol.mapErrorToStatusCode?.(errorCode);
|
|
123
|
+
if (status !== undefined) {
|
|
124
|
+
return status;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
}
|
package/src/core/dwn-error.ts
CHANGED
|
@@ -20,10 +20,10 @@ export enum DwnErrorCode {
|
|
|
20
20
|
ComputeCidCodecNotSupported = 'ComputeCidCodecNotSupported',
|
|
21
21
|
ComputeCidMultihashNotSupported = 'ComputeCidMultihashNotSupported',
|
|
22
22
|
Ed25519InvalidJwk = 'Ed25519InvalidJwk',
|
|
23
|
-
|
|
23
|
+
EventLogNotOpenError = 'EventLogNotOpenError',
|
|
24
24
|
MessagesGrantAuthorizationMismatchedProtocol = 'EventsGrantAuthorizationMismatchedProtocol',
|
|
25
25
|
MessagesSubscribeAuthorizationFailed = 'MessagesSubscribeAuthorizationFailed',
|
|
26
|
-
|
|
26
|
+
MessagesSubscribeEventLogUnimplemented = 'MessagesSubscribeEventLogUnimplemented',
|
|
27
27
|
GeneralJwsVerifierGetPublicKeyNotFound = 'GeneralJwsVerifierGetPublicKeyNotFound',
|
|
28
28
|
GeneralJwsVerifierInvalidSignature = 'GeneralJwsVerifierInvalidSignature',
|
|
29
29
|
GeneralJwsVerifierMissingAlg = 'GeneralJwsVerifierMissingAlg',
|
|
@@ -78,11 +78,17 @@ export enum DwnErrorCode {
|
|
|
78
78
|
ProtocolAuthorizationIncorrectProtocolPath = 'ProtocolAuthorizationIncorrectProtocolPath',
|
|
79
79
|
ProtocolAuthorizationDuplicateRoleRecipient = 'ProtocolAuthorizationDuplicateRoleRecipient',
|
|
80
80
|
ProtocolAuthorizationEncryptionRequired = 'ProtocolAuthorizationEncryptionRequired',
|
|
81
|
+
ProtocolAuthorizationImmutableRecord = 'ProtocolAuthorizationImmutableRecord',
|
|
81
82
|
ProtocolAuthorizationInvalidSchema = 'ProtocolAuthorizationInvalidSchema',
|
|
82
83
|
ProtocolAuthorizationInvalidType = 'ProtocolAuthorizationInvalidType',
|
|
83
84
|
ProtocolAuthorizationMatchingRoleRecordNotFound = 'ProtocolAuthorizationMatchingRoleRecordNotFound',
|
|
84
85
|
ProtocolAuthorizationMaxSizeInvalid = 'ProtocolAuthorizationMaxSizeInvalid',
|
|
85
86
|
ProtocolAuthorizationMinSizeInvalid = 'ProtocolAuthorizationMinSizeInvalid',
|
|
87
|
+
ProtocolAuthorizationRecordLimitExceeded = 'ProtocolAuthorizationRecordLimitExceeded',
|
|
88
|
+
ProtocolAuthorizationRecordLimitStrategyNotImplemented = 'ProtocolAuthorizationRecordLimitStrategyNotImplemented',
|
|
89
|
+
ProtocolAuthorizationSquashNotEnabled = 'ProtocolAuthorizationSquashNotEnabled',
|
|
90
|
+
ProtocolAuthorizationSquashNotInitialWrite = 'ProtocolAuthorizationSquashNotInitialWrite',
|
|
91
|
+
ProtocolAuthorizationSquashBackstop = 'ProtocolAuthorizationSquashBackstop',
|
|
86
92
|
ProtocolAuthorizationMissingContextId = 'ProtocolAuthorizationMissingContextId',
|
|
87
93
|
ProtocolAuthorizationMissingRuleSet = 'ProtocolAuthorizationMissingRuleSet',
|
|
88
94
|
ProtocolAuthorizationParentlessIncorrectProtocolPath = 'ProtocolAuthorizationParentlessIncorrectProtocolPath',
|
|
@@ -99,6 +105,8 @@ export enum DwnErrorCode {
|
|
|
99
105
|
ProtocolsConfigureInvalidRefNodeHasDirectives = 'ProtocolsConfigureInvalidRefNodeHasDirectives',
|
|
100
106
|
ProtocolsConfigureInvalidRefNotAtRoot = 'ProtocolsConfigureInvalidRefNotAtRoot',
|
|
101
107
|
ProtocolsConfigureInvalidRefProtocolPath = 'ProtocolsConfigureInvalidRefProtocolPath',
|
|
108
|
+
ProtocolsConfigureInvalidRefTargetThroughRef = 'ProtocolsConfigureInvalidRefTargetThroughRef',
|
|
109
|
+
ProtocolsConfigureInvalidRecordLimit = 'ProtocolsConfigureInvalidRecordLimit',
|
|
102
110
|
ProtocolsConfigureInvalidSize = 'ProtocolsConfigureInvalidSize',
|
|
103
111
|
ProtocolsConfigureInvalidActionMissingOf = 'ProtocolsConfigureInvalidActionMissingOf',
|
|
104
112
|
ProtocolsConfigureInvalidActionOfNotAnAncestor = 'ProtocolsConfigureInvalidActionOfNotAnAncestor',
|
|
@@ -125,7 +133,7 @@ export enum DwnErrorCode {
|
|
|
125
133
|
RecordsAuthorDelegatedGrantNotADelegatedGrant = 'RecordsAuthorDelegatedGrantNotADelegatedGrant',
|
|
126
134
|
RecordsDecryptNoMatchingKeyEncryptedFound = 'RecordsDecryptNoMatchingKeyEncryptedFound',
|
|
127
135
|
RecordsCountFilterMissingRequiredProperties = 'RecordsCountFilterMissingRequiredProperties',
|
|
128
|
-
|
|
136
|
+
|
|
129
137
|
RecordsQueryCreateFilterPublishedSortInvalid = 'RecordsQueryCreateFilterPublishedSortInvalid',
|
|
130
138
|
RecordsQueryParseFilterPublishedSortInvalid = 'RecordsQueryParseFilterPublishedSortInvalid',
|
|
131
139
|
RecordsGrantAuthorizationConditionPublicationProhibited = 'RecordsGrantAuthorizationConditionPublicationProhibited',
|
|
@@ -141,23 +149,22 @@ export enum DwnErrorCode {
|
|
|
141
149
|
RecordsOwnerDelegatedGrantCidMismatch = 'RecordsOwnerDelegatedGrantCidMismatch',
|
|
142
150
|
RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch = 'RecordsOwnerDelegatedGrantGrantedToAndOwnerSignatureMismatch',
|
|
143
151
|
RecordsOwnerDelegatedGrantNotADelegatedGrant = 'RecordsOwnerDelegatedGrantNotADelegatedGrant',
|
|
144
|
-
|
|
145
|
-
RecordsProtocolPathDerivationSchemeMissingProtocol = 'RecordsProtocolPathDerivationSchemeMissingProtocol',
|
|
152
|
+
|
|
146
153
|
RecordsQueryFilterMissingRequiredProperties = 'RecordsQueryFilterMissingRequiredProperties',
|
|
147
|
-
|
|
154
|
+
|
|
148
155
|
RecordsReadCreateFilterPublishedSortInvalid = 'RecordsReadCreateFilterPublishedSortInvalid',
|
|
149
156
|
RecordsReadParseFilterPublishedSortInvalid = 'RecordsReadParseFilterPublishedSortInvalid',
|
|
150
|
-
|
|
157
|
+
RecordsSubscribeEventLogUnimplemented = 'RecordsSubscribeEventLogUnimplemented',
|
|
151
158
|
RecordsSubscribeFilterMissingRequiredProperties = 'RecordsSubscribeFilterMissingRequiredProperties',
|
|
152
|
-
|
|
159
|
+
|
|
153
160
|
RecordsWriteAttestationIntegrityMoreThanOneSignature = 'RecordsWriteAttestationIntegrityMoreThanOneSignature',
|
|
154
161
|
RecordsWriteAttestationIntegrityDescriptorCidMismatch = 'RecordsWriteAttestationIntegrityDescriptorCidMismatch',
|
|
155
162
|
RecordsWriteAttestationIntegrityInvalidPayloadProperty = 'RecordsWriteAttestationIntegrityInvalidPayloadProperty',
|
|
156
|
-
|
|
163
|
+
|
|
157
164
|
RecordsWriteCreateMissingSigner = 'RecordsWriteCreateMissingSigner',
|
|
158
165
|
RecordsWriteCreateDataAndDataCidMutuallyExclusive = 'RecordsWriteCreateDataAndDataCidMutuallyExclusive',
|
|
159
166
|
RecordsWriteCreateDataCidAndDataSizeMutuallyInclusive = 'RecordsWriteCreateDataCidAndDataSizeMutuallyInclusive',
|
|
160
|
-
|
|
167
|
+
RecordsWriteCreateMissingProtocol = 'RecordsWriteCreateMissingProtocol',
|
|
161
168
|
RecordsWriteDataCidMismatch = 'RecordsWriteDataCidMismatch',
|
|
162
169
|
RecordsWriteDataSizeMismatch = 'RecordsWriteDataSizeMismatch',
|
|
163
170
|
RecordsWriteGetEntryIdUndefinedAuthor = 'RecordsWriteGetEntryIdUndefinedAuthor',
|
|
@@ -168,8 +175,7 @@ export enum DwnErrorCode {
|
|
|
168
175
|
RecordsWriteMissingDataInPrevious = 'RecordsWriteMissingDataInPrevious',
|
|
169
176
|
RecordsWriteMissingEncodedDataInPrevious = 'RecordsWriteMissingEncodedDataInPrevious',
|
|
170
177
|
RecordsWriteMissingEncryption = 'RecordsWriteMissingEncryption',
|
|
171
|
-
|
|
172
|
-
RecordsWriteMissingSchema = 'RecordsWriteMissingSchema',
|
|
178
|
+
|
|
173
179
|
RecordsWriteNotAllowedAfterDelete = 'RecordsWriteNotAllowedAfterDelete',
|
|
174
180
|
RecordsWriteOwnerAndTenantMismatch = 'RecordsWriteOwnerAndTenantMismatch',
|
|
175
181
|
RecordsWriteSignAsOwnerDelegateUnknownAuthor = 'RecordsWriteSignAsOwnerDelegateUnknownAuthor',
|
|
@@ -3,7 +3,9 @@ import type { MessageStore } from '../types/message-store.js';
|
|
|
3
3
|
import type { PermissionGrant } from '../protocols/permission-grant.js';
|
|
4
4
|
|
|
5
5
|
import { Message } from './message.js';
|
|
6
|
+
import { PERMISSIONS_REVOCATION_PATH } from './constants.js';
|
|
6
7
|
import { DwnError, DwnErrorCode } from './dwn-error.js';
|
|
8
|
+
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
7
9
|
|
|
8
10
|
export class GrantAuthorization {
|
|
9
11
|
|
|
@@ -108,7 +110,7 @@ export class GrantAuthorization {
|
|
|
108
110
|
// Check if grant has been revoked
|
|
109
111
|
const query = {
|
|
110
112
|
parentId : permissionGrant.id,
|
|
111
|
-
protocolPath :
|
|
113
|
+
protocolPath : PERMISSIONS_REVOCATION_PATH,
|
|
112
114
|
isLatestBaseState : true
|
|
113
115
|
};
|
|
114
116
|
const { messages: revokes } = await messageStore.query(grantedFor, [query]);
|
|
@@ -123,8 +125,12 @@ export class GrantAuthorization {
|
|
|
123
125
|
}
|
|
124
126
|
|
|
125
127
|
/**
|
|
126
|
-
* Verify that the `interface` and `method` grant scopes match the incoming message
|
|
127
|
-
*
|
|
128
|
+
* Verify that the `interface` and `method` grant scopes match the incoming message.
|
|
129
|
+
*
|
|
130
|
+
* For the Messages interface, a `Read` scope is treated as a unified scope that also authorizes
|
|
131
|
+
* `Subscribe` and `Sync` operations. This mirrors how protocol `$actions` treats `read` as a
|
|
132
|
+
* unified action covering read, query, subscribe, and count.
|
|
133
|
+
*
|
|
128
134
|
* @throws {DwnError} if the `interface` and `method` of the incoming message do not match the scope of the permission grant.
|
|
129
135
|
*/
|
|
130
136
|
private static async verifyGrantScopeInterfaceAndMethod(
|
|
@@ -138,6 +144,17 @@ export class GrantAuthorization {
|
|
|
138
144
|
DwnErrorCode.GrantAuthorizationInterfaceMismatch,
|
|
139
145
|
`DWN Interface of incoming message is outside the scope of permission grant with ID ${permissionGrant.id}`
|
|
140
146
|
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// For the Messages interface, a `Read` scope is a unified scope that also covers `Subscribe` and `Sync`.
|
|
150
|
+
if (dwnInterface === DwnInterfaceName.Messages && permissionGrant.scope.method === DwnMethodName.Read) {
|
|
151
|
+
const allowedMethods = [DwnMethodName.Read, DwnMethodName.Subscribe, DwnMethodName.Sync];
|
|
152
|
+
if (!allowedMethods.includes(dwnMethod as DwnMethodName)) {
|
|
153
|
+
throw new DwnError(
|
|
154
|
+
DwnErrorCode.GrantAuthorizationMethodMismatch,
|
|
155
|
+
`DWN Method of incoming message is outside the scope of permission grant with ID ${permissionGrant.id}`
|
|
156
|
+
);
|
|
157
|
+
}
|
|
141
158
|
} else if (dwnMethod !== permissionGrant.scope.method) {
|
|
142
159
|
throw new DwnError(
|
|
143
160
|
DwnErrorCode.GrantAuthorizationMethodMismatch,
|
|
@@ -191,6 +191,11 @@ export async function getActionsSeekingARuleMatch(
|
|
|
191
191
|
const incomingRecordsWrite = incomingMessage as RecordsWrite;
|
|
192
192
|
|
|
193
193
|
if (await incomingRecordsWrite.isInitialWrite()) {
|
|
194
|
+
// A squash write seeks the `squash` action first, with fallback to `create`.
|
|
195
|
+
// This means any DID authorized to `create` can also squash when no explicit `squash` rule exists.
|
|
196
|
+
if (incomingRecordsWrite.message.descriptor.squash === true) {
|
|
197
|
+
return [ProtocolAction.Squash, ProtocolAction.Create];
|
|
198
|
+
}
|
|
194
199
|
return [ProtocolAction.Create];
|
|
195
200
|
} else {
|
|
196
201
|
// else incoming RecordsWrite not an initial write
|