@enbox/dwn-sdk-js 0.0.1
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/LICENSE +201 -0
- package/README.md +352 -0
- package/dist/bundles/dwn.js +153 -0
- package/dist/cjs/index.js +36749 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/generated/precompiled-validators.js +11973 -0
- package/dist/esm/generated/precompiled-validators.js.map +1 -0
- package/dist/esm/json-schemas/definitions.json +23 -0
- package/dist/esm/src/core/abstract-message.js +47 -0
- package/dist/esm/src/core/abstract-message.js.map +1 -0
- package/dist/esm/src/core/auth.js +39 -0
- package/dist/esm/src/core/auth.js.map +1 -0
- package/dist/esm/src/core/dwn-constant.js +10 -0
- package/dist/esm/src/core/dwn-constant.js.map +1 -0
- package/dist/esm/src/core/dwn-error.js +169 -0
- package/dist/esm/src/core/dwn-error.js.map +1 -0
- package/dist/esm/src/core/grant-authorization.js +97 -0
- package/dist/esm/src/core/grant-authorization.js.map +1 -0
- package/dist/esm/src/core/message-reply.js +5 -0
- package/dist/esm/src/core/message-reply.js.map +1 -0
- package/dist/esm/src/core/message.js +233 -0
- package/dist/esm/src/core/message.js.map +1 -0
- package/dist/esm/src/core/messages-grant-authorization.js +101 -0
- package/dist/esm/src/core/messages-grant-authorization.js.map +1 -0
- package/dist/esm/src/core/protocol-authorization.js +608 -0
- package/dist/esm/src/core/protocol-authorization.js.map +1 -0
- package/dist/esm/src/core/protocols-grant-authorization.js +66 -0
- package/dist/esm/src/core/protocols-grant-authorization.js.map +1 -0
- package/dist/esm/src/core/records-grant-authorization.js +132 -0
- package/dist/esm/src/core/records-grant-authorization.js.map +1 -0
- package/dist/esm/src/core/resumable-task-manager.js +109 -0
- package/dist/esm/src/core/resumable-task-manager.js.map +1 -0
- package/dist/esm/src/core/tenant-gate.js +20 -0
- package/dist/esm/src/core/tenant-gate.js.map +1 -0
- package/dist/esm/src/dwn.js +164 -0
- package/dist/esm/src/dwn.js.map +1 -0
- package/dist/esm/src/enums/dwn-interface-method.js +16 -0
- package/dist/esm/src/enums/dwn-interface-method.js.map +1 -0
- package/dist/esm/src/event-log/event-emitter-stream.js +60 -0
- package/dist/esm/src/event-log/event-emitter-stream.js.map +1 -0
- package/dist/esm/src/event-log/event-log-level.js +63 -0
- package/dist/esm/src/event-log/event-log-level.js.map +1 -0
- package/dist/esm/src/handlers/messages-query.js +71 -0
- package/dist/esm/src/handlers/messages-query.js.map +1 -0
- package/dist/esm/src/handlers/messages-read.js +102 -0
- package/dist/esm/src/handlers/messages-read.js.map +1 -0
- package/dist/esm/src/handlers/messages-subscribe.js +81 -0
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -0
- package/dist/esm/src/handlers/protocols-configure.js +133 -0
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -0
- package/dist/esm/src/handlers/protocols-query.js +73 -0
- package/dist/esm/src/handlers/protocols-query.js.map +1 -0
- package/dist/esm/src/handlers/records-delete.js +107 -0
- package/dist/esm/src/handlers/records-delete.js.map +1 -0
- package/dist/esm/src/handlers/records-query.js +210 -0
- package/dist/esm/src/handlers/records-query.js.map +1 -0
- package/dist/esm/src/handlers/records-read.js +169 -0
- package/dist/esm/src/handlers/records-read.js.map +1 -0
- package/dist/esm/src/handlers/records-subscribe.js +172 -0
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -0
- package/dist/esm/src/handlers/records-write.js +344 -0
- package/dist/esm/src/handlers/records-write.js.map +1 -0
- package/dist/esm/src/index.js +49 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interfaces/messages-query.js +53 -0
- package/dist/esm/src/interfaces/messages-query.js.map +1 -0
- package/dist/esm/src/interfaces/messages-read.js +61 -0
- package/dist/esm/src/interfaces/messages-read.js.map +1 -0
- package/dist/esm/src/interfaces/messages-subscribe.js +58 -0
- package/dist/esm/src/interfaces/messages-subscribe.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-configure.js +271 -0
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-query.js +84 -0
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-delete.js +89 -0
- package/dist/esm/src/interfaces/records-delete.js.map +1 -0
- package/dist/esm/src/interfaces/records-query.js +104 -0
- package/dist/esm/src/interfaces/records-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-read.js +84 -0
- package/dist/esm/src/interfaces/records-read.js.map +1 -0
- package/dist/esm/src/interfaces/records-subscribe.js +91 -0
- package/dist/esm/src/interfaces/records-subscribe.js.map +1 -0
- package/dist/esm/src/interfaces/records-write.js +795 -0
- package/dist/esm/src/interfaces/records-write.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js +51 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js +20 -0
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -0
- package/dist/esm/src/jose/jws/general/builder.js +47 -0
- package/dist/esm/src/jose/jws/general/builder.js.map +1 -0
- package/dist/esm/src/jose/jws/general/verifier.js +97 -0
- package/dist/esm/src/jose/jws/general/verifier.js.map +1 -0
- package/dist/esm/src/protocols/permission-grant.js +39 -0
- package/dist/esm/src/protocols/permission-grant.js.map +1 -0
- package/dist/esm/src/protocols/permission-request.js +35 -0
- package/dist/esm/src/protocols/permission-request.js.map +1 -0
- package/dist/esm/src/protocols/permissions.js +357 -0
- package/dist/esm/src/protocols/permissions.js.map +1 -0
- package/dist/esm/src/schema-validator.js +37 -0
- package/dist/esm/src/schema-validator.js.map +1 -0
- package/dist/esm/src/store/blockstore-level.js +187 -0
- package/dist/esm/src/store/blockstore-level.js.map +1 -0
- package/dist/esm/src/store/blockstore-mock.js +168 -0
- package/dist/esm/src/store/blockstore-mock.js.map +1 -0
- package/dist/esm/src/store/data-store-level.js +136 -0
- package/dist/esm/src/store/data-store-level.js.map +1 -0
- package/dist/esm/src/store/index-level.js +660 -0
- package/dist/esm/src/store/index-level.js.map +1 -0
- package/dist/esm/src/store/level-wrapper.js +305 -0
- package/dist/esm/src/store/level-wrapper.js.map +1 -0
- package/dist/esm/src/store/message-store-level.js +159 -0
- package/dist/esm/src/store/message-store-level.js.map +1 -0
- package/dist/esm/src/store/resumable-task-store-level.js +131 -0
- package/dist/esm/src/store/resumable-task-store-level.js.map +1 -0
- package/dist/esm/src/store/storage-controller.js +184 -0
- package/dist/esm/src/store/storage-controller.js.map +1 -0
- package/dist/esm/src/types/cache.js +2 -0
- package/dist/esm/src/types/cache.js.map +1 -0
- package/dist/esm/src/types/data-store.js +2 -0
- package/dist/esm/src/types/data-store.js.map +1 -0
- package/dist/esm/src/types/event-log.js +2 -0
- package/dist/esm/src/types/event-log.js.map +1 -0
- package/dist/esm/src/types/jose-types.js +2 -0
- package/dist/esm/src/types/jose-types.js.map +1 -0
- package/dist/esm/src/types/jws-types.js +2 -0
- package/dist/esm/src/types/jws-types.js.map +1 -0
- package/dist/esm/src/types/message-interface.js +2 -0
- package/dist/esm/src/types/message-interface.js.map +1 -0
- package/dist/esm/src/types/message-store.js +2 -0
- package/dist/esm/src/types/message-store.js.map +1 -0
- package/dist/esm/src/types/message-types.js +3 -0
- package/dist/esm/src/types/message-types.js.map +1 -0
- package/dist/esm/src/types/messages-types.js +2 -0
- package/dist/esm/src/types/messages-types.js.map +1 -0
- package/dist/esm/src/types/method-handler.js +2 -0
- package/dist/esm/src/types/method-handler.js.map +1 -0
- package/dist/esm/src/types/permission-types.js +6 -0
- package/dist/esm/src/types/permission-types.js.map +1 -0
- package/dist/esm/src/types/protocols-types.js +20 -0
- package/dist/esm/src/types/protocols-types.js.map +1 -0
- package/dist/esm/src/types/query-types.js +6 -0
- package/dist/esm/src/types/query-types.js.map +1 -0
- package/dist/esm/src/types/records-types.js +8 -0
- package/dist/esm/src/types/records-types.js.map +1 -0
- package/dist/esm/src/types/resumable-task-store.js +2 -0
- package/dist/esm/src/types/resumable-task-store.js.map +1 -0
- package/dist/esm/src/types/signer.js +2 -0
- package/dist/esm/src/types/signer.js.map +1 -0
- package/dist/esm/src/types/subscriptions.js +2 -0
- package/dist/esm/src/types/subscriptions.js.map +1 -0
- package/dist/esm/src/utils/abort.js +40 -0
- package/dist/esm/src/utils/abort.js.map +1 -0
- package/dist/esm/src/utils/array.js +72 -0
- package/dist/esm/src/utils/array.js.map +1 -0
- package/dist/esm/src/utils/cid.js +130 -0
- package/dist/esm/src/utils/cid.js.map +1 -0
- package/dist/esm/src/utils/data-stream.js +100 -0
- package/dist/esm/src/utils/data-stream.js.map +1 -0
- package/dist/esm/src/utils/encoder.js +45 -0
- package/dist/esm/src/utils/encoder.js.map +1 -0
- package/dist/esm/src/utils/encryption.js +128 -0
- package/dist/esm/src/utils/encryption.js.map +1 -0
- package/dist/esm/src/utils/filter.js +229 -0
- package/dist/esm/src/utils/filter.js.map +1 -0
- package/dist/esm/src/utils/hd-key.js +114 -0
- package/dist/esm/src/utils/hd-key.js.map +1 -0
- package/dist/esm/src/utils/jws.js +89 -0
- package/dist/esm/src/utils/jws.js.map +1 -0
- package/dist/esm/src/utils/memory-cache.js +41 -0
- package/dist/esm/src/utils/memory-cache.js.map +1 -0
- package/dist/esm/src/utils/messages.js +84 -0
- package/dist/esm/src/utils/messages.js.map +1 -0
- package/dist/esm/src/utils/object.js +40 -0
- package/dist/esm/src/utils/object.js.map +1 -0
- package/dist/esm/src/utils/private-key-signer.js +43 -0
- package/dist/esm/src/utils/private-key-signer.js.map +1 -0
- package/dist/esm/src/utils/protocols.js +51 -0
- package/dist/esm/src/utils/protocols.js.map +1 -0
- package/dist/esm/src/utils/records.js +454 -0
- package/dist/esm/src/utils/records.js.map +1 -0
- package/dist/esm/src/utils/secp256k1.js +166 -0
- package/dist/esm/src/utils/secp256k1.js.map +1 -0
- package/dist/esm/src/utils/secp256r1.js +120 -0
- package/dist/esm/src/utils/secp256r1.js.map +1 -0
- package/dist/esm/src/utils/string.js +16 -0
- package/dist/esm/src/utils/string.js.map +1 -0
- package/dist/esm/src/utils/time.js +85 -0
- package/dist/esm/src/utils/time.js.map +1 -0
- package/dist/esm/src/utils/url.js +62 -0
- package/dist/esm/src/utils/url.js.map +1 -0
- package/dist/esm/tests/core/auth.spec.js +22 -0
- package/dist/esm/tests/core/auth.spec.js.map +1 -0
- package/dist/esm/tests/core/message-reply.spec.js +16 -0
- package/dist/esm/tests/core/message-reply.spec.js.map +1 -0
- package/dist/esm/tests/core/message.spec.js +146 -0
- package/dist/esm/tests/core/message.spec.js.map +1 -0
- package/dist/esm/tests/core/protocol-authorization.spec.js +48 -0
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -0
- package/dist/esm/tests/dwn.spec.js +166 -0
- package/dist/esm/tests/dwn.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-emitter-stream.spec.js +78 -0
- package/dist/esm/tests/event-log/event-emitter-stream.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js +44 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-log.spec.js +236 -0
- package/dist/esm/tests/event-log/event-log.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-stream.spec.js +125 -0
- package/dist/esm/tests/event-log/event-stream.spec.js.map +1 -0
- package/dist/esm/tests/features/author-delegated-grant.spec.js +1273 -0
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -0
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +584 -0
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -0
- package/dist/esm/tests/features/owner-signature.spec.js +192 -0
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -0
- package/dist/esm/tests/features/permissions.spec.js +815 -0
- package/dist/esm/tests/features/permissions.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-create-action.spec.js +248 -0
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-delete-action.spec.js +492 -0
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -0
- package/dist/esm/tests/features/protocol-update-action.spec.js +572 -0
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -0
- package/dist/esm/tests/features/records-prune.spec.js +812 -0
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -0
- package/dist/esm/tests/features/records-tags.spec.js +2516 -0
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -0
- package/dist/esm/tests/features/resumable-tasks.spec.js +349 -0
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-query.spec.js +349 -0
- package/dist/esm/tests/handlers/messages-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-read.spec.js +647 -0
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +432 -0
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js +608 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js +454 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-delete.spec.js +662 -0
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-query.spec.js +2695 -0
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-read.spec.js +1724 -0
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-subscribe.spec.js +684 -0
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-write.spec.js +3637 -0
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js +78 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js +30 -0
- package/dist/esm/tests/interfaces/messages-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messagess-query.spec.js +127 -0
- package/dist/esm/tests/interfaces/messagess-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +489 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js +46 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js +39 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-query.spec.js +85 -0
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-read.spec.js +62 -0
- package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-subscribe.spec.js +72 -0
- package/dist/esm/tests/interfaces/records-subscribe.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-write.spec.js +423 -0
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -0
- package/dist/esm/tests/jose/jws/general.spec.js +243 -0
- package/dist/esm/tests/jose/jws/general.spec.js.map +1 -0
- package/dist/esm/tests/protocols/permission-request.spec.js +40 -0
- package/dist/esm/tests/protocols/permission-request.spec.js.map +1 -0
- package/dist/esm/tests/protocols/permissions.spec.js +123 -0
- package/dist/esm/tests/protocols/permissions.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/aggregator.spec.js +670 -0
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/deleted-record.spec.js +102 -0
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +220 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/messages-query.spec.js +395 -0
- package/dist/esm/tests/scenarios/messages-query.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/nested-roles.spec.js +300 -0
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/subscriptions.spec.js +886 -0
- package/dist/esm/tests/scenarios/subscriptions.spec.js.map +1 -0
- package/dist/esm/tests/store/blockstore-mock.spec.js +192 -0
- package/dist/esm/tests/store/blockstore-mock.spec.js.map +1 -0
- package/dist/esm/tests/store/data-store-level.spec.js +146 -0
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/index-level.spec.js +1208 -0
- package/dist/esm/tests/store/index-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store-level.spec.js +48 -0
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store.spec.js +404 -0
- package/dist/esm/tests/store/message-store.spec.js.map +1 -0
- package/dist/esm/tests/store-dependent-tests.spec.js +5 -0
- package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -0
- package/dist/esm/tests/test-event-stream.js +25 -0
- package/dist/esm/tests/test-event-stream.js.map +1 -0
- package/dist/esm/tests/test-stores.js +45 -0
- package/dist/esm/tests/test-stores.js.map +1 -0
- package/dist/esm/tests/test-suite.js +88 -0
- package/dist/esm/tests/test-suite.js.map +1 -0
- package/dist/esm/tests/utils/cid.spec.js +80 -0
- package/dist/esm/tests/utils/cid.spec.js.map +1 -0
- package/dist/esm/tests/utils/data-stream.spec.js +27 -0
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -0
- package/dist/esm/tests/utils/encryption.spec.js +148 -0
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -0
- package/dist/esm/tests/utils/filters.spec.js +295 -0
- package/dist/esm/tests/utils/filters.spec.js.map +1 -0
- package/dist/esm/tests/utils/hd-key.spec.js +35 -0
- package/dist/esm/tests/utils/hd-key.spec.js.map +1 -0
- package/dist/esm/tests/utils/jws.spec.js +8 -0
- package/dist/esm/tests/utils/jws.spec.js.map +1 -0
- package/dist/esm/tests/utils/memory-cache.spec.js +35 -0
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -0
- package/dist/esm/tests/utils/messages.spec.js +101 -0
- package/dist/esm/tests/utils/messages.spec.js.map +1 -0
- package/dist/esm/tests/utils/object.spec.js +36 -0
- package/dist/esm/tests/utils/object.spec.js.map +1 -0
- package/dist/esm/tests/utils/poller.js +49 -0
- package/dist/esm/tests/utils/poller.js.map +1 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js +44 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -0
- package/dist/esm/tests/utils/records.spec.js +53 -0
- package/dist/esm/tests/utils/records.spec.js.map +1 -0
- package/dist/esm/tests/utils/secp256k1.spec.js +50 -0
- package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -0
- package/dist/esm/tests/utils/secp256r1.spec.js +56 -0
- package/dist/esm/tests/utils/secp256r1.spec.js.map +1 -0
- package/dist/esm/tests/utils/test-data-generator.js +643 -0
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -0
- package/dist/esm/tests/utils/test-stub-generator.js +39 -0
- package/dist/esm/tests/utils/test-stub-generator.js.map +1 -0
- package/dist/esm/tests/utils/time.spec.js +64 -0
- package/dist/esm/tests/utils/time.spec.js.map +1 -0
- package/dist/esm/tests/utils/url.spec.js +43 -0
- package/dist/esm/tests/utils/url.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js +33 -0
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +50 -0
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +36 -0
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +82 -0
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +75 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +148 -0
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +421 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -0
- package/dist/esm/tests/vectors/protocol-definitions/anyone-collaborate.json +21 -0
- package/dist/esm/tests/vectors/protocol-definitions/author-can.json +33 -0
- package/dist/esm/tests/vectors/protocol-definitions/chat.json +70 -0
- package/dist/esm/tests/vectors/protocol-definitions/credential-issuance.json +41 -0
- package/dist/esm/tests/vectors/protocol-definitions/dex.json +58 -0
- package/dist/esm/tests/vectors/protocol-definitions/email.json +62 -0
- package/dist/esm/tests/vectors/protocol-definitions/free-for-all.json +45 -0
- package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +48 -0
- package/dist/esm/tests/vectors/protocol-definitions/message.json +37 -0
- package/dist/esm/tests/vectors/protocol-definitions/minimal.json +10 -0
- package/dist/esm/tests/vectors/protocol-definitions/nested.json +31 -0
- package/dist/esm/tests/vectors/protocol-definitions/private-protocol.json +15 -0
- package/dist/esm/tests/vectors/protocol-definitions/recipient-can.json +33 -0
- package/dist/esm/tests/vectors/protocol-definitions/slack.json +242 -0
- package/dist/esm/tests/vectors/protocol-definitions/social-media.json +106 -0
- package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +70 -0
- package/dist/types/generated/precompiled-validators.d.ts +597 -0
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -0
- package/dist/types/src/core/abstract-message.d.ts +25 -0
- package/dist/types/src/core/abstract-message.d.ts.map +1 -0
- package/dist/types/src/core/auth.d.ts +9 -0
- package/dist/types/src/core/auth.d.ts.map +1 -0
- package/dist/types/src/core/dwn-constant.d.ts +10 -0
- package/dist/types/src/core/dwn-constant.d.ts.map +1 -0
- package/dist/types/src/core/dwn-error.d.ts +164 -0
- package/dist/types/src/core/dwn-error.d.ts.map +1 -0
- package/dist/types/src/core/grant-authorization.d.ts +43 -0
- package/dist/types/src/core/grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/message-reply.d.ts +32 -0
- package/dist/types/src/core/message-reply.d.ts.map +1 -0
- package/dist/types/src/core/message.d.ts +94 -0
- package/dist/types/src/core/message.d.ts.map +1 -0
- package/dist/types/src/core/messages-grant-authorization.d.ts +34 -0
- package/dist/types/src/core/messages-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/protocol-authorization.d.ts +103 -0
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -0
- package/dist/types/src/core/protocols-grant-authorization.d.ts +31 -0
- package/dist/types/src/core/protocols-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/records-grant-authorization.d.ts +60 -0
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/resumable-task-manager.d.ts +43 -0
- package/dist/types/src/core/resumable-task-manager.d.ts.map +1 -0
- package/dist/types/src/core/tenant-gate.d.ts +29 -0
- package/dist/types/src/core/tenant-gate.d.ts.map +1 -0
- package/dist/types/src/dwn.d.ts +85 -0
- package/dist/types/src/dwn.d.ts.map +1 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts +14 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -0
- package/dist/types/src/event-log/event-emitter-stream.d.ts +23 -0
- package/dist/types/src/event-log/event-emitter-stream.d.ts.map +1 -0
- package/dist/types/src/event-log/event-log-level.d.ts +35 -0
- package/dist/types/src/event-log/event-log-level.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-query.d.ts +17 -0
- package/dist/types/src/handlers/messages-query.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-read.d.ts +22 -0
- package/dist/types/src/handlers/messages-read.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-subscribe.d.ts +18 -0
- package/dist/types/src/handlers/messages-subscribe.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts +24 -0
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-query.d.ts +20 -0
- package/dist/types/src/handlers/protocols-query.d.ts.map +1 -0
- package/dist/types/src/handlers/records-delete.d.ts +23 -0
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -0
- package/dist/types/src/handlers/records-query.d.ts +70 -0
- package/dist/types/src/handlers/records-query.d.ts.map +1 -0
- package/dist/types/src/handlers/records-read.d.ts +20 -0
- package/dist/types/src/handlers/records-read.d.ts.map +1 -0
- package/dist/types/src/handlers/records-subscribe.d.ts +62 -0
- package/dist/types/src/handlers/records-subscribe.d.ts.map +1 -0
- package/dist/types/src/handlers/records-write.d.ts +51 -0
- package/dist/types/src/handlers/records-write.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +63 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-query.d.ts +16 -0
- package/dist/types/src/interfaces/messages-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-read.d.ts +20 -0
- package/dist/types/src/interfaces/messages-read.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-subscribe.d.ts +20 -0
- package/dist/types/src/interfaces/messages-subscribe.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts +40 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-query.d.ts +17 -0
- package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-delete.d.ts +34 -0
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-query.d.ts +31 -0
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-read.d.ts +36 -0
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-subscribe.d.ts +27 -0
- package/dist/types/src/interfaces/records-subscribe.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-write.d.ts +309 -0
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -0
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts +3 -0
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -0
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +3 -0
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -0
- package/dist/types/src/jose/jws/general/builder.d.ts +10 -0
- package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -0
- package/dist/types/src/jose/jws/general/verifier.d.ts +32 -0
- package/dist/types/src/jose/jws/general/verifier.d.ts.map +1 -0
- package/dist/types/src/protocols/permission-grant.d.ts +50 -0
- package/dist/types/src/protocols/permission-grant.d.ts.map +1 -0
- package/dist/types/src/protocols/permission-request.d.ts +35 -0
- package/dist/types/src/protocols/permission-request.d.ts.map +1 -0
- package/dist/types/src/protocols/permissions.d.ts +150 -0
- package/dist/types/src/protocols/permissions.d.ts.map +1 -0
- package/dist/types/src/schema-validator.d.ts +8 -0
- package/dist/types/src/schema-validator.d.ts.map +1 -0
- package/dist/types/src/store/blockstore-level.d.ts +34 -0
- package/dist/types/src/store/blockstore-level.d.ts.map +1 -0
- package/dist/types/src/store/blockstore-mock.d.ts +27 -0
- package/dist/types/src/store/blockstore-mock.d.ts.map +1 -0
- package/dist/types/src/store/data-store-level.d.ts +34 -0
- package/dist/types/src/store/data-store-level.d.ts.map +1 -0
- package/dist/types/src/store/index-level.d.ts +171 -0
- package/dist/types/src/store/index-level.d.ts.map +1 -0
- package/dist/types/src/store/level-wrapper.d.ts +48 -0
- package/dist/types/src/store/level-wrapper.d.ts.map +1 -0
- package/dist/types/src/store/message-store-level.d.ts +46 -0
- package/dist/types/src/store/message-store-level.d.ts.map +1 -0
- package/dist/types/src/store/resumable-task-store-level.d.ts +28 -0
- package/dist/types/src/store/resumable-task-store-level.d.ts.map +1 -0
- package/dist/types/src/store/storage-controller.d.ts +46 -0
- package/dist/types/src/store/storage-controller.d.ts.map +1 -0
- package/dist/types/src/types/cache.d.ts +16 -0
- package/dist/types/src/types/cache.d.ts.map +1 -0
- package/dist/types/src/types/data-store.d.ts +57 -0
- package/dist/types/src/types/data-store.d.ts.map +1 -0
- package/dist/types/src/types/event-log.d.ts +52 -0
- package/dist/types/src/types/event-log.d.ts.map +1 -0
- package/dist/types/src/types/jose-types.d.ts +75 -0
- package/dist/types/src/types/jose-types.d.ts.map +1 -0
- package/dist/types/src/types/jws-types.d.ts +27 -0
- package/dist/types/src/types/jws-types.d.ts.map +1 -0
- package/dist/types/src/types/message-interface.d.ts +27 -0
- package/dist/types/src/types/message-interface.d.ts.map +1 -0
- package/dist/types/src/types/message-store.d.ts +42 -0
- package/dist/types/src/types/message-store.d.ts.map +1 -0
- package/dist/types/src/types/message-types.d.ts +116 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -0
- package/dist/types/src/types/messages-types.d.ts +65 -0
- package/dist/types/src/types/messages-types.d.ts.map +1 -0
- package/dist/types/src/types/method-handler.d.ts +19 -0
- package/dist/types/src/types/method-handler.d.ts.map +1 -0
- package/dist/types/src/types/permission-types.d.ts +93 -0
- package/dist/types/src/types/permission-types.d.ts.map +1 -0
- package/dist/types/src/types/protocols-types.d.ts +154 -0
- package/dist/types/src/types/protocols-types.d.ts.map +1 -0
- package/dist/types/src/types/query-types.d.ts +66 -0
- package/dist/types/src/types/query-types.d.ts.map +1 -0
- package/dist/types/src/types/records-types.d.ts +230 -0
- package/dist/types/src/types/records-types.d.ts.map +1 -0
- package/dist/types/src/types/resumable-task-store.d.ts +89 -0
- package/dist/types/src/types/resumable-task-store.d.ts.map +1 -0
- package/dist/types/src/types/signer.d.ts +26 -0
- package/dist/types/src/types/signer.d.ts.map +1 -0
- package/dist/types/src/types/subscriptions.d.ts +30 -0
- package/dist/types/src/types/subscriptions.d.ts.map +1 -0
- package/dist/types/src/utils/abort.d.ts +5 -0
- package/dist/types/src/utils/abort.d.ts.map +1 -0
- package/dist/types/src/utils/array.d.ts +18 -0
- package/dist/types/src/utils/array.d.ts.map +1 -0
- package/dist/types/src/utils/cid.d.ts +30 -0
- package/dist/types/src/utils/cid.d.ts.map +1 -0
- package/dist/types/src/utils/data-stream.d.ts +31 -0
- package/dist/types/src/utils/data-stream.d.ts.map +1 -0
- package/dist/types/src/utils/encoder.d.ts +14 -0
- package/dist/types/src/utils/encoder.d.ts.map +1 -0
- package/dist/types/src/utils/encryption.d.ts +44 -0
- package/dist/types/src/utils/encryption.d.ts.map +1 -0
- package/dist/types/src/utils/filter.d.ts +60 -0
- package/dist/types/src/utils/filter.d.ts.map +1 -0
- package/dist/types/src/utils/hd-key.d.ts +54 -0
- package/dist/types/src/utils/hd-key.d.ts.map +1 -0
- package/dist/types/src/utils/jws.d.ts +39 -0
- package/dist/types/src/utils/jws.d.ts.map +1 -0
- package/dist/types/src/utils/memory-cache.d.ts +15 -0
- package/dist/types/src/utils/memory-cache.d.ts.map +1 -0
- package/dist/types/src/utils/messages.d.ts +27 -0
- package/dist/types/src/utils/messages.d.ts.map +1 -0
- package/dist/types/src/utils/object.d.ts +13 -0
- package/dist/types/src/utils/object.d.ts.map +1 -0
- package/dist/types/src/utils/private-key-signer.d.ts +34 -0
- package/dist/types/src/utils/private-key-signer.d.ts.map +1 -0
- package/dist/types/src/utils/protocols.d.ts +14 -0
- package/dist/types/src/utils/protocols.d.ts.map +1 -0
- package/dist/types/src/utils/records.d.ts +122 -0
- package/dist/types/src/utils/records.d.ts.map +1 -0
- package/dist/types/src/utils/secp256k1.d.ts +59 -0
- package/dist/types/src/utils/secp256k1.d.ts.map +1 -0
- package/dist/types/src/utils/secp256r1.d.ts +39 -0
- package/dist/types/src/utils/secp256r1.d.ts.map +1 -0
- package/dist/types/src/utils/string.d.ts +6 -0
- package/dist/types/src/utils/string.d.ts.map +1 -0
- package/dist/types/src/utils/time.d.ts +50 -0
- package/dist/types/src/utils/time.d.ts.map +1 -0
- package/dist/types/src/utils/url.d.ts +5 -0
- package/dist/types/src/utils/url.d.ts.map +1 -0
- package/dist/types/tests/core/auth.spec.d.ts +2 -0
- package/dist/types/tests/core/auth.spec.d.ts.map +1 -0
- package/dist/types/tests/core/message-reply.spec.d.ts +2 -0
- package/dist/types/tests/core/message-reply.spec.d.ts.map +1 -0
- package/dist/types/tests/core/message.spec.d.ts +2 -0
- package/dist/types/tests/core/message.spec.d.ts.map +1 -0
- package/dist/types/tests/core/protocol-authorization.spec.d.ts +2 -0
- package/dist/types/tests/core/protocol-authorization.spec.d.ts.map +1 -0
- package/dist/types/tests/dwn.spec.d.ts +2 -0
- package/dist/types/tests/dwn.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-emitter-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-log-level.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-log.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-log.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-stream.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/features/author-delegated-grant.spec.d.ts +2 -0
- package/dist/types/tests/features/author-delegated-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/features/owner-delegated-grant.spec.d.ts +2 -0
- package/dist/types/tests/features/owner-delegated-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/features/owner-signature.spec.d.ts +2 -0
- package/dist/types/tests/features/owner-signature.spec.d.ts.map +1 -0
- package/dist/types/tests/features/permissions.spec.d.ts +2 -0
- package/dist/types/tests/features/permissions.spec.d.ts.map +1 -0
- package/dist/types/tests/features/protocol-create-action.spec.d.ts +2 -0
- package/dist/types/tests/features/protocol-create-action.spec.d.ts.map +1 -0
- package/dist/types/tests/features/protocol-delete-action.spec.d.ts +2 -0
- package/dist/types/tests/features/protocol-delete-action.spec.d.ts.map +1 -0
- package/dist/types/tests/features/protocol-update-action.spec.d.ts +2 -0
- package/dist/types/tests/features/protocol-update-action.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-prune.spec.d.ts +2 -0
- package/dist/types/tests/features/records-prune.spec.d.ts.map +1 -0
- package/dist/types/tests/features/records-tags.spec.d.ts +2 -0
- package/dist/types/tests/features/records-tags.spec.d.ts.map +1 -0
- package/dist/types/tests/features/resumable-tasks.spec.d.ts +2 -0
- package/dist/types/tests/features/resumable-tasks.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-read.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-read.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/protocols-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-delete.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-read.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-write.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/messages-get.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/messages-get.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/messages-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/messagess-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/protocols-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/protocols-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-delete.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-delete.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-read.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-read.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-subscribe.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-subscribe.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-write.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-write.spec.d.ts.map +1 -0
- package/dist/types/tests/jose/jws/general.spec.d.ts +2 -0
- package/dist/types/tests/jose/jws/general.spec.d.ts.map +1 -0
- package/dist/types/tests/protocols/permission-request.spec.d.ts +2 -0
- package/dist/types/tests/protocols/permission-request.spec.d.ts.map +1 -0
- package/dist/types/tests/protocols/permissions.spec.d.ts +2 -0
- package/dist/types/tests/protocols/permissions.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/aggregator.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/aggregator.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/deleted-record.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/deleted-record.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/messages-query.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/messages-query.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/nested-roles.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/nested-roles.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/subscriptions.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/subscriptions.spec.d.ts.map +1 -0
- package/dist/types/tests/store/blockstore-mock.spec.d.ts +2 -0
- package/dist/types/tests/store/blockstore-mock.spec.d.ts.map +1 -0
- package/dist/types/tests/store/data-store-level.spec.d.ts +2 -0
- package/dist/types/tests/store/data-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/index-level.spec.d.ts +2 -0
- package/dist/types/tests/store/index-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store-level.spec.d.ts +2 -0
- package/dist/types/tests/store/message-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store.spec.d.ts +2 -0
- package/dist/types/tests/store/message-store.spec.d.ts.map +1 -0
- package/dist/types/tests/store-dependent-tests.spec.d.ts +2 -0
- package/dist/types/tests/store-dependent-tests.spec.d.ts.map +1 -0
- package/dist/types/tests/test-event-stream.d.ts +22 -0
- package/dist/types/tests/test-event-stream.d.ts.map +1 -0
- package/dist/types/tests/test-stores.d.ts +33 -0
- package/dist/types/tests/test-stores.d.ts.map +1 -0
- package/dist/types/tests/test-suite.d.ts +18 -0
- package/dist/types/tests/test-suite.d.ts.map +1 -0
- package/dist/types/tests/utils/cid.spec.d.ts +2 -0
- package/dist/types/tests/utils/cid.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/data-stream.spec.d.ts +2 -0
- package/dist/types/tests/utils/data-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/encryption.spec.d.ts +2 -0
- package/dist/types/tests/utils/encryption.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/filters.spec.d.ts +2 -0
- package/dist/types/tests/utils/filters.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/hd-key.spec.d.ts +2 -0
- package/dist/types/tests/utils/hd-key.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/jws.spec.d.ts +2 -0
- package/dist/types/tests/utils/jws.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/memory-cache.spec.d.ts +2 -0
- package/dist/types/tests/utils/memory-cache.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/messages.spec.d.ts +2 -0
- package/dist/types/tests/utils/messages.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/object.spec.d.ts +2 -0
- package/dist/types/tests/utils/object.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/poller.d.ts +21 -0
- package/dist/types/tests/utils/poller.d.ts.map +1 -0
- package/dist/types/tests/utils/private-key-signer.spec.d.ts +2 -0
- package/dist/types/tests/utils/private-key-signer.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/records.spec.d.ts +2 -0
- package/dist/types/tests/utils/records.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/secp256k1.spec.d.ts +2 -0
- package/dist/types/tests/utils/secp256k1.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/secp256r1.spec.d.ts +2 -0
- package/dist/types/tests/utils/secp256r1.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts +342 -0
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -0
- package/dist/types/tests/utils/test-stub-generator.d.ts +16 -0
- package/dist/types/tests/utils/test-stub-generator.d.ts.map +1 -0
- package/dist/types/tests/utils/time.spec.d.ts +2 -0
- package/dist/types/tests/utils/time.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/url.spec.d.ts +2 -0
- package/dist/types/tests/utils/url.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts.map +1 -0
- package/package.json +167 -0
- package/src/core/abstract-message.ts +62 -0
- package/src/core/auth.ts +36 -0
- package/src/core/dwn-constant.ts +9 -0
- package/src/core/dwn-error.ts +167 -0
- package/src/core/grant-authorization.ts +148 -0
- package/src/core/message-reply.ts +41 -0
- package/src/core/message.ts +259 -0
- package/src/core/messages-grant-authorization.ts +134 -0
- package/src/core/protocol-authorization.ts +903 -0
- package/src/core/protocols-grant-authorization.ts +88 -0
- package/src/core/records-grant-authorization.ts +197 -0
- package/src/core/resumable-task-manager.ts +114 -0
- package/src/core/tenant-gate.ts +33 -0
- package/src/dwn.ts +264 -0
- package/src/enums/dwn-interface-method.ts +14 -0
- package/src/event-log/event-emitter-stream.ts +69 -0
- package/src/event-log/event-log-level.ts +72 -0
- package/src/handlers/messages-query.ts +67 -0
- package/src/handlers/messages-read.ts +103 -0
- package/src/handlers/messages-subscribe.ts +89 -0
- package/src/handlers/protocols-configure.ts +137 -0
- package/src/handlers/protocols-query.ts +82 -0
- package/src/handlers/records-delete.ts +124 -0
- package/src/handlers/records-query.ts +262 -0
- package/src/handlers/records-read.ts +187 -0
- package/src/handlers/records-subscribe.ts +218 -0
- package/src/handlers/records-write.ts +404 -0
- package/src/index.ts +67 -0
- package/src/interfaces/messages-query.ts +60 -0
- package/src/interfaces/messages-read.ts +63 -0
- package/src/interfaces/messages-subscribe.ts +64 -0
- package/src/interfaces/protocols-configure.ts +340 -0
- package/src/interfaces/protocols-query.ts +96 -0
- package/src/interfaces/records-delete.ts +117 -0
- package/src/interfaces/records-query.ts +131 -0
- package/src/interfaces/records-read.ts +100 -0
- package/src/interfaces/records-subscribe.ts +104 -0
- package/src/interfaces/records-write.ts +1072 -0
- package/src/jose/algorithms/signing/ed25519.ts +58 -0
- package/src/jose/algorithms/signing/signature-algorithms.ts +22 -0
- package/src/jose/jws/general/builder.ts +48 -0
- package/src/jose/jws/general/verifier.ts +112 -0
- package/src/protocols/permission-grant.ts +86 -0
- package/src/protocols/permission-request.ts +63 -0
- package/src/protocols/permissions.ts +508 -0
- package/src/schema-validator.ts +46 -0
- package/src/store/blockstore-level.ts +113 -0
- package/src/store/blockstore-mock.ts +80 -0
- package/src/store/data-store-level.ts +120 -0
- package/src/store/index-level.ts +691 -0
- package/src/store/level-wrapper.ts +272 -0
- package/src/store/message-store-level.ts +195 -0
- package/src/store/resumable-task-store-level.ts +120 -0
- package/src/store/storage-controller.ts +240 -0
- package/src/types/cache.ts +16 -0
- package/src/types/data-store.ts +64 -0
- package/src/types/event-log.ts +52 -0
- package/src/types/jose-types.ts +76 -0
- package/src/types/jws-types.ts +28 -0
- package/src/types/message-interface.ts +30 -0
- package/src/types/message-store.ts +57 -0
- package/src/types/message-types.ts +132 -0
- package/src/types/messages-types.ts +77 -0
- package/src/types/method-handler.ts +19 -0
- package/src/types/permission-types.ts +110 -0
- package/src/types/protocols-types.ts +177 -0
- package/src/types/query-types.ts +61 -0
- package/src/types/records-types.ts +263 -0
- package/src/types/resumable-task-store.ts +96 -0
- package/src/types/signer.ts +27 -0
- package/src/types/subscriptions.ts +34 -0
- package/src/utils/abort.ts +31 -0
- package/src/utils/array.ts +39 -0
- package/src/utils/cid.ts +101 -0
- package/src/utils/data-stream.ts +99 -0
- package/src/utils/encoder.ts +54 -0
- package/src/utils/encryption.ts +145 -0
- package/src/utils/filter.ts +245 -0
- package/src/utils/hd-key.ts +126 -0
- package/src/utils/jws.ts +95 -0
- package/src/utils/memory-cache.ts +31 -0
- package/src/utils/messages.ts +109 -0
- package/src/utils/object.ts +43 -0
- package/src/utils/private-key-signer.ts +72 -0
- package/src/utils/protocols.ts +50 -0
- package/src/utils/records.ts +559 -0
- package/src/utils/secp256k1.ts +157 -0
- package/src/utils/secp256r1.ts +142 -0
- package/src/utils/string.ts +13 -0
- package/src/utils/time.ts +78 -0
- package/src/utils/url.ts +65 -0
|
@@ -0,0 +1,608 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
11
|
+
import sinon from 'sinon';
|
|
12
|
+
import chai, { expect } from 'chai';
|
|
13
|
+
import dexProtocolDefinition from '../vectors/protocol-definitions/dex.json' assert { type: 'json' };
|
|
14
|
+
import minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' assert { type: 'json' };
|
|
15
|
+
import { GeneralJwsBuilder } from '../../src/jose/jws/general/builder.js';
|
|
16
|
+
import { lexicographicalCompare } from '../../src/utils/string.js';
|
|
17
|
+
import { Message } from '../../src/core/message.js';
|
|
18
|
+
import { ProtocolAction } from '../../src/types/protocols-types.js';
|
|
19
|
+
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
20
|
+
import { TestEventStream } from '../test-event-stream.js';
|
|
21
|
+
import { TestStores } from '../test-stores.js';
|
|
22
|
+
import { TestStubGenerator } from '../utils/test-stub-generator.js';
|
|
23
|
+
import { Time } from '../../src/utils/time.js';
|
|
24
|
+
import { DataStream, Dwn, DwnErrorCode, DwnInterfaceName, DwnMethodName, Encoder, Jws, PermissionGrant, PermissionsProtocol } from '../../src/index.js';
|
|
25
|
+
import { DidKey, UniversalResolver } from '@enbox/dids';
|
|
26
|
+
chai.use(chaiAsPromised);
|
|
27
|
+
export function testProtocolsConfigureHandler() {
|
|
28
|
+
describe('ProtocolsConfigureHandler.handle()', () => {
|
|
29
|
+
let didResolver;
|
|
30
|
+
let messageStore;
|
|
31
|
+
let dataStore;
|
|
32
|
+
let resumableTaskStore;
|
|
33
|
+
let eventLog;
|
|
34
|
+
let eventStream;
|
|
35
|
+
let dwn;
|
|
36
|
+
describe('functional tests', () => {
|
|
37
|
+
// important to follow the `before` and `after` pattern to initialize and clean the stores in tests
|
|
38
|
+
// so that different test suites can reuse the same backend store for testing
|
|
39
|
+
before(() => __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
didResolver = new UniversalResolver({ didResolvers: [DidKey] });
|
|
41
|
+
const stores = TestStores.get();
|
|
42
|
+
messageStore = stores.messageStore;
|
|
43
|
+
dataStore = stores.dataStore;
|
|
44
|
+
resumableTaskStore = stores.resumableTaskStore;
|
|
45
|
+
eventLog = stores.eventLog;
|
|
46
|
+
eventStream = TestEventStream.get();
|
|
47
|
+
dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
|
|
48
|
+
}));
|
|
49
|
+
beforeEach(() => __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
|
|
51
|
+
// clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
52
|
+
yield messageStore.clear();
|
|
53
|
+
yield dataStore.clear();
|
|
54
|
+
yield resumableTaskStore.clear();
|
|
55
|
+
yield eventLog.clear();
|
|
56
|
+
}));
|
|
57
|
+
after(() => __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
yield dwn.close();
|
|
59
|
+
}));
|
|
60
|
+
it('should allow a protocol definition with schema or dataFormat omitted', () => __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
62
|
+
const protocolDefinition = minimalProtocolDefinition;
|
|
63
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
64
|
+
author: alice,
|
|
65
|
+
protocolDefinition,
|
|
66
|
+
});
|
|
67
|
+
const reply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
68
|
+
expect(reply.status.code).to.equal(202);
|
|
69
|
+
}));
|
|
70
|
+
it('should return 400 if more than 1 signature is provided in `authorization`', () => __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const { author, message, protocolsConfigure } = yield TestDataGenerator.generateProtocolsConfigure();
|
|
72
|
+
const tenant = author.did;
|
|
73
|
+
// intentionally create more than one signature, which is not allowed
|
|
74
|
+
const extraRandomPersona = yield TestDataGenerator.generatePersona();
|
|
75
|
+
const signer1 = Jws.createSigner(author);
|
|
76
|
+
const signer2 = Jws.createSigner(extraRandomPersona);
|
|
77
|
+
const signaturePayloadBytes = Encoder.objectToBytes(protocolsConfigure.signaturePayload);
|
|
78
|
+
const jwsBuilder = yield GeneralJwsBuilder.create(signaturePayloadBytes, [signer1, signer2]);
|
|
79
|
+
message.authorization = { signature: jwsBuilder.getJws() };
|
|
80
|
+
TestStubGenerator.stubDidResolver(didResolver, [author]);
|
|
81
|
+
const reply = yield dwn.processMessage(tenant, message);
|
|
82
|
+
expect(reply.status.code).to.equal(400);
|
|
83
|
+
expect(reply.status.detail).to.contain('expected no more than 1 signature');
|
|
84
|
+
}));
|
|
85
|
+
it('should return 401 if auth fails', () => __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
87
|
+
const { message } = yield TestDataGenerator.generateProtocolsConfigure({ author: alice });
|
|
88
|
+
// use a bad signature to fail authentication
|
|
89
|
+
const badSignature = yield TestDataGenerator.randomSignatureString();
|
|
90
|
+
message.authorization.signature.signatures[0].signature = badSignature;
|
|
91
|
+
const reply = yield dwn.processMessage(alice.did, message);
|
|
92
|
+
expect(reply.status.code).to.equal(401);
|
|
93
|
+
expect(reply.status.detail).to.contain(DwnErrorCode.GeneralJwsVerifierInvalidSignature);
|
|
94
|
+
}));
|
|
95
|
+
it('should be able to overwrite existing protocol if timestamp is newer', () => __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
var _a;
|
|
97
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
98
|
+
const protocolDefinition = minimalProtocolDefinition;
|
|
99
|
+
const oldProtocolsConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
100
|
+
author: alice,
|
|
101
|
+
protocolDefinition,
|
|
102
|
+
});
|
|
103
|
+
yield Time.minimalSleep();
|
|
104
|
+
const middleProtocolsConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
105
|
+
author: alice,
|
|
106
|
+
protocolDefinition,
|
|
107
|
+
});
|
|
108
|
+
// first ProtocolsConfigure
|
|
109
|
+
const reply1 = yield dwn.processMessage(alice.did, middleProtocolsConfigure.message);
|
|
110
|
+
expect(reply1.status.code).to.equal(202);
|
|
111
|
+
// older messages will not overwrite the existing
|
|
112
|
+
const reply2 = yield dwn.processMessage(alice.did, oldProtocolsConfigure.message);
|
|
113
|
+
expect(reply2.status.code).to.equal(409);
|
|
114
|
+
// newer message can overwrite the existing message
|
|
115
|
+
const newProtocolsConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
116
|
+
author: alice,
|
|
117
|
+
protocolDefinition,
|
|
118
|
+
});
|
|
119
|
+
const reply3 = yield dwn.processMessage(alice.did, newProtocolsConfigure.message);
|
|
120
|
+
expect(reply3.status.code).to.equal(202);
|
|
121
|
+
// only the newest protocol should remain
|
|
122
|
+
const queryMessageData = yield TestDataGenerator.generateProtocolsQuery({
|
|
123
|
+
author: alice,
|
|
124
|
+
filter: { protocol: protocolDefinition.protocol }
|
|
125
|
+
});
|
|
126
|
+
const queryReply = yield dwn.processMessage(alice.did, queryMessageData.message);
|
|
127
|
+
expect(queryReply.status.code).to.equal(200);
|
|
128
|
+
expect((_a = queryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
|
|
129
|
+
}));
|
|
130
|
+
it('should only be able to overwrite existing protocol if new protocol is lexicographically larger and timestamps are identical', () => __awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
var _a;
|
|
132
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
133
|
+
// Alter each protocol slightly to create lexicographic difference between them
|
|
134
|
+
const protocolDefinition1 = Object.assign(Object.assign({}, minimalProtocolDefinition), { types: Object.assign(Object.assign({}, minimalProtocolDefinition.types), { foo1: { dataFormats: ['bar1'] } }) });
|
|
135
|
+
const protocolDefinition2 = Object.assign(Object.assign({}, minimalProtocolDefinition), { types: Object.assign(Object.assign({}, minimalProtocolDefinition.types), { foo2: { dataFormats: ['bar2'] } }) });
|
|
136
|
+
const protocolDefinition3 = Object.assign(Object.assign({}, minimalProtocolDefinition), { types: Object.assign(Object.assign({}, minimalProtocolDefinition.types), { foo3: { dataFormats: ['bar3'] } }) });
|
|
137
|
+
// Create three `ProtocolsConfigure` with identical timestamp
|
|
138
|
+
const messageData1 = yield TestDataGenerator.generateProtocolsConfigure({
|
|
139
|
+
author: alice,
|
|
140
|
+
protocolDefinition: protocolDefinition1
|
|
141
|
+
});
|
|
142
|
+
const messageData2 = yield TestDataGenerator.generateProtocolsConfigure({
|
|
143
|
+
author: alice,
|
|
144
|
+
protocolDefinition: protocolDefinition2,
|
|
145
|
+
messageTimestamp: messageData1.message.descriptor.messageTimestamp
|
|
146
|
+
});
|
|
147
|
+
const messageData3 = yield TestDataGenerator.generateProtocolsConfigure({
|
|
148
|
+
author: alice,
|
|
149
|
+
protocolDefinition: protocolDefinition3,
|
|
150
|
+
messageTimestamp: messageData1.message.descriptor.messageTimestamp
|
|
151
|
+
});
|
|
152
|
+
const messageDataWithCid = [];
|
|
153
|
+
for (const messageData of [messageData1, messageData2, messageData3]) {
|
|
154
|
+
const cid = yield Message.getCid(messageData.message);
|
|
155
|
+
messageDataWithCid.push(Object.assign({ cid }, messageData));
|
|
156
|
+
}
|
|
157
|
+
// sort the message in lexicographic order
|
|
158
|
+
const [lowestProtocolsConfigure, middleProtocolsConfigure, highestProtocolsConfigure] = messageDataWithCid.sort((messageDataA, messageDataB) => { return lexicographicalCompare(messageDataA.cid, messageDataB.cid); });
|
|
159
|
+
// write the protocol with the middle lexicographic value
|
|
160
|
+
const reply1 = yield dwn.processMessage(alice.did, middleProtocolsConfigure.message);
|
|
161
|
+
expect(reply1.status.code).to.equal(202);
|
|
162
|
+
// test that the protocol with the smallest lexicographic value cannot be written
|
|
163
|
+
const reply2 = yield dwn.processMessage(alice.did, lowestProtocolsConfigure.message);
|
|
164
|
+
expect(reply2.status.code).to.equal(409);
|
|
165
|
+
// test that the protocol with the largest lexicographic value can be written
|
|
166
|
+
const reply3 = yield dwn.processMessage(alice.did, highestProtocolsConfigure.message);
|
|
167
|
+
expect(reply3.status.code).to.equal(202);
|
|
168
|
+
// test that lower lexicographic protocol message is removed from DB and only the newer protocol message remains
|
|
169
|
+
const queryMessageData = yield TestDataGenerator.generateProtocolsQuery({
|
|
170
|
+
author: alice,
|
|
171
|
+
filter: { protocol: protocolDefinition1.protocol }
|
|
172
|
+
});
|
|
173
|
+
const queryReply = yield dwn.processMessage(alice.did, queryMessageData.message);
|
|
174
|
+
expect(queryReply.status.code).to.equal(200);
|
|
175
|
+
expect((_a = queryReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
|
|
176
|
+
}));
|
|
177
|
+
it('should return 400 if protocol is not normalized', () => __awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
179
|
+
// query for non-normalized protocol
|
|
180
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
181
|
+
author: alice,
|
|
182
|
+
protocolDefinition: minimalProtocolDefinition
|
|
183
|
+
});
|
|
184
|
+
// overwrite protocol because #create auto-normalizes protocol
|
|
185
|
+
protocolsConfig.message.descriptor.definition.protocol = 'example.com/';
|
|
186
|
+
// Re-create auth because we altered the descriptor after signing
|
|
187
|
+
protocolsConfig.message.authorization = yield Message.createAuthorization({
|
|
188
|
+
descriptor: protocolsConfig.message.descriptor,
|
|
189
|
+
signer: Jws.createSigner(alice)
|
|
190
|
+
});
|
|
191
|
+
// Send records write message
|
|
192
|
+
const reply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
193
|
+
expect(reply.status.code).to.equal(400);
|
|
194
|
+
expect(reply.status.detail).to.contain(DwnErrorCode.UrlProtocolNotNormalized);
|
|
195
|
+
}));
|
|
196
|
+
it('should return 400 if schema is not normalized', () => __awaiter(this, void 0, void 0, function* () {
|
|
197
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
198
|
+
const protocolDefinition = dexProtocolDefinition;
|
|
199
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
200
|
+
author: alice,
|
|
201
|
+
protocolDefinition,
|
|
202
|
+
});
|
|
203
|
+
// overwrite schema because #create auto-normalizes schema
|
|
204
|
+
protocolsConfig.message.descriptor.definition.types.ask.schema = 'ask';
|
|
205
|
+
// Re-create auth because we altered the descriptor after signing
|
|
206
|
+
protocolsConfig.message.authorization = yield Message.createAuthorization({
|
|
207
|
+
descriptor: protocolsConfig.message.descriptor,
|
|
208
|
+
signer: Jws.createSigner(alice)
|
|
209
|
+
});
|
|
210
|
+
// Send records write message
|
|
211
|
+
const reply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
212
|
+
expect(reply.status.code).to.equal(400);
|
|
213
|
+
expect(reply.status.detail).to.contain(DwnErrorCode.UrlSchemaNotNormalized);
|
|
214
|
+
}));
|
|
215
|
+
it('rejects non-tenant non-granted ProtocolsConfigures with 401', () => __awaiter(this, void 0, void 0, function* () {
|
|
216
|
+
// Bob tries to ProtocolsConfigure to Alice's DWN without a permission grant
|
|
217
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
218
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
219
|
+
const protocolDefinition = dexProtocolDefinition;
|
|
220
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
221
|
+
author: bob,
|
|
222
|
+
protocolDefinition,
|
|
223
|
+
});
|
|
224
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
225
|
+
expect(protocolsConfigureReply.status.code).to.equal(401);
|
|
226
|
+
expect(protocolsConfigureReply.status.detail).to.contain(DwnErrorCode.ProtocolsConfigureAuthorizationFailed);
|
|
227
|
+
}));
|
|
228
|
+
it('should reject ProtocolsConfigure with action rule containing duplicated actor (`who` or `who` + `of` combination) within a rule set', () => __awaiter(this, void 0, void 0, function* () {
|
|
229
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
230
|
+
const protocolDefinition = {
|
|
231
|
+
protocol: 'http://foo-bar',
|
|
232
|
+
published: true,
|
|
233
|
+
types: {
|
|
234
|
+
foo: {},
|
|
235
|
+
},
|
|
236
|
+
structure: {
|
|
237
|
+
foo: {
|
|
238
|
+
$actions: [
|
|
239
|
+
{
|
|
240
|
+
who: 'anyone',
|
|
241
|
+
can: [ProtocolAction.Create]
|
|
242
|
+
},
|
|
243
|
+
// duplicated `who` value
|
|
244
|
+
{
|
|
245
|
+
who: 'anyone',
|
|
246
|
+
can: [ProtocolAction.Update]
|
|
247
|
+
}
|
|
248
|
+
]
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
// manually craft the invalid ProtocolsConfigure message because our library will not let you create an invalid definition
|
|
253
|
+
const descriptor = {
|
|
254
|
+
interface: DwnInterfaceName.Protocols,
|
|
255
|
+
method: DwnMethodName.Configure,
|
|
256
|
+
messageTimestamp: Time.getCurrentTimestamp(),
|
|
257
|
+
definition: protocolDefinition
|
|
258
|
+
};
|
|
259
|
+
const authorization = yield Message.createAuthorization({
|
|
260
|
+
descriptor,
|
|
261
|
+
signer: Jws.createSigner(alice)
|
|
262
|
+
});
|
|
263
|
+
const protocolsConfigureMessage = { descriptor, authorization };
|
|
264
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
|
|
265
|
+
expect(protocolsConfigureReply.status.code).to.equal(400);
|
|
266
|
+
expect(protocolsConfigureReply.status.detail).to.contain(DwnErrorCode.ProtocolsConfigureDuplicateActorInRuleSet);
|
|
267
|
+
// similar test as above but with `of` property
|
|
268
|
+
const protocolDefinition2 = {
|
|
269
|
+
protocol: 'http://foo-bar',
|
|
270
|
+
published: true,
|
|
271
|
+
types: {
|
|
272
|
+
foo: {},
|
|
273
|
+
bar: {},
|
|
274
|
+
},
|
|
275
|
+
structure: {
|
|
276
|
+
foo: {
|
|
277
|
+
bar: {
|
|
278
|
+
$actions: [
|
|
279
|
+
{
|
|
280
|
+
who: 'recipient',
|
|
281
|
+
of: 'foo',
|
|
282
|
+
can: [ProtocolAction.Create]
|
|
283
|
+
},
|
|
284
|
+
// duplicated `who` value
|
|
285
|
+
{
|
|
286
|
+
who: 'recipient',
|
|
287
|
+
of: 'foo',
|
|
288
|
+
can: [ProtocolAction.Update]
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
const descriptor2 = {
|
|
296
|
+
interface: DwnInterfaceName.Protocols,
|
|
297
|
+
method: DwnMethodName.Configure,
|
|
298
|
+
messageTimestamp: Time.getCurrentTimestamp(),
|
|
299
|
+
definition: protocolDefinition2
|
|
300
|
+
};
|
|
301
|
+
const authorization2 = yield Message.createAuthorization({
|
|
302
|
+
descriptor: descriptor2,
|
|
303
|
+
signer: Jws.createSigner(alice)
|
|
304
|
+
});
|
|
305
|
+
const protocolsConfigureMessage2 = { descriptor: descriptor2, authorization: authorization2 };
|
|
306
|
+
const protocolsConfigure2Reply = yield dwn.processMessage(alice.did, protocolsConfigureMessage2);
|
|
307
|
+
expect(protocolsConfigure2Reply.status.code).to.equal(400);
|
|
308
|
+
expect(protocolsConfigure2Reply.status.detail).to.contain(DwnErrorCode.ProtocolsConfigureDuplicateActorInRuleSet);
|
|
309
|
+
}));
|
|
310
|
+
it('should reject ProtocolsConfigure with action rule containing duplicated role within a rule set', () => __awaiter(this, void 0, void 0, function* () {
|
|
311
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
312
|
+
const protocolDefinition = {
|
|
313
|
+
protocol: 'http://foo',
|
|
314
|
+
published: true,
|
|
315
|
+
types: {
|
|
316
|
+
user: {},
|
|
317
|
+
foo: {},
|
|
318
|
+
},
|
|
319
|
+
structure: {
|
|
320
|
+
user: {
|
|
321
|
+
$role: true
|
|
322
|
+
},
|
|
323
|
+
foo: {
|
|
324
|
+
$actions: [
|
|
325
|
+
{
|
|
326
|
+
role: 'user',
|
|
327
|
+
can: [ProtocolAction.Create]
|
|
328
|
+
},
|
|
329
|
+
// duplicated `role` value
|
|
330
|
+
{
|
|
331
|
+
role: 'user',
|
|
332
|
+
can: [ProtocolAction.Update]
|
|
333
|
+
}
|
|
334
|
+
]
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
// manually craft the invalid ProtocolsConfigure message because our library will not let you create an invalid definition
|
|
339
|
+
const descriptor = {
|
|
340
|
+
interface: DwnInterfaceName.Protocols,
|
|
341
|
+
method: DwnMethodName.Configure,
|
|
342
|
+
messageTimestamp: Time.getCurrentTimestamp(),
|
|
343
|
+
definition: protocolDefinition
|
|
344
|
+
};
|
|
345
|
+
const authorization = yield Message.createAuthorization({
|
|
346
|
+
descriptor,
|
|
347
|
+
signer: Jws.createSigner(alice)
|
|
348
|
+
});
|
|
349
|
+
const protocolsConfigureMessage = { descriptor, authorization };
|
|
350
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
|
|
351
|
+
expect(protocolsConfigureReply.status.code).to.equal(400);
|
|
352
|
+
expect(protocolsConfigureReply.status.detail).to.contain(DwnErrorCode.ProtocolsConfigureDuplicateRoleInRuleSet);
|
|
353
|
+
}));
|
|
354
|
+
it('should reject ProtocolsConfigure with role action rule that contain a read action(`read` || `query` || `subscribe`) but not all of the read actions', () => __awaiter(this, void 0, void 0, function* () {
|
|
355
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
356
|
+
// without 'subscribe' action
|
|
357
|
+
const protocolDefinitionWithoutSubscribe = {
|
|
358
|
+
protocol: 'http://foo',
|
|
359
|
+
published: true,
|
|
360
|
+
types: {
|
|
361
|
+
friend: {},
|
|
362
|
+
foo: {},
|
|
363
|
+
},
|
|
364
|
+
structure: {
|
|
365
|
+
friend: {
|
|
366
|
+
$role: true
|
|
367
|
+
},
|
|
368
|
+
foo: {
|
|
369
|
+
$actions: [
|
|
370
|
+
{
|
|
371
|
+
role: 'friend',
|
|
372
|
+
can: [ProtocolAction.Read, ProtocolAction.Query] // missing `subscribe`
|
|
373
|
+
}
|
|
374
|
+
]
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
// manually craft the invalid ProtocolsConfigure message because our library will not let you create an invalid definition
|
|
379
|
+
let descriptor = {
|
|
380
|
+
interface: DwnInterfaceName.Protocols,
|
|
381
|
+
method: DwnMethodName.Configure,
|
|
382
|
+
messageTimestamp: Time.getCurrentTimestamp(),
|
|
383
|
+
definition: protocolDefinitionWithoutSubscribe
|
|
384
|
+
};
|
|
385
|
+
let authorization = yield Message.createAuthorization({
|
|
386
|
+
descriptor,
|
|
387
|
+
signer: Jws.createSigner(alice)
|
|
388
|
+
});
|
|
389
|
+
let protocolsConfigureMessage = { descriptor, authorization };
|
|
390
|
+
const withoutSubscribeResponse = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
|
|
391
|
+
expect(withoutSubscribeResponse.status.code).to.equal(400);
|
|
392
|
+
// without 'query' action
|
|
393
|
+
const protocolDefinitionWithoutQuery = {
|
|
394
|
+
protocol: 'http://foo',
|
|
395
|
+
published: true,
|
|
396
|
+
types: {
|
|
397
|
+
friend: {},
|
|
398
|
+
foo: {},
|
|
399
|
+
},
|
|
400
|
+
structure: {
|
|
401
|
+
friend: {
|
|
402
|
+
$role: true
|
|
403
|
+
},
|
|
404
|
+
foo: {
|
|
405
|
+
$actions: [
|
|
406
|
+
{
|
|
407
|
+
role: 'friend',
|
|
408
|
+
can: [ProtocolAction.Read, ProtocolAction.Subscribe] // missing `query`
|
|
409
|
+
}
|
|
410
|
+
]
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
descriptor = {
|
|
415
|
+
interface: DwnInterfaceName.Protocols,
|
|
416
|
+
method: DwnMethodName.Configure,
|
|
417
|
+
messageTimestamp: Time.getCurrentTimestamp(),
|
|
418
|
+
definition: protocolDefinitionWithoutQuery
|
|
419
|
+
};
|
|
420
|
+
authorization = yield Message.createAuthorization({
|
|
421
|
+
descriptor,
|
|
422
|
+
signer: Jws.createSigner(alice)
|
|
423
|
+
});
|
|
424
|
+
protocolsConfigureMessage = { descriptor, authorization };
|
|
425
|
+
const withoutQueryResponse = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
|
|
426
|
+
expect(withoutQueryResponse.status.code).to.equal(400);
|
|
427
|
+
// without 'read' action
|
|
428
|
+
const protocolDefinitionWithoutRead = {
|
|
429
|
+
protocol: 'http://foo',
|
|
430
|
+
published: true,
|
|
431
|
+
types: {
|
|
432
|
+
friend: {},
|
|
433
|
+
foo: {},
|
|
434
|
+
},
|
|
435
|
+
structure: {
|
|
436
|
+
friend: {
|
|
437
|
+
$role: true
|
|
438
|
+
},
|
|
439
|
+
foo: {
|
|
440
|
+
$actions: [
|
|
441
|
+
{
|
|
442
|
+
role: 'friend',
|
|
443
|
+
can: [ProtocolAction.Query, ProtocolAction.Subscribe] // missing `read`
|
|
444
|
+
}
|
|
445
|
+
]
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
descriptor = {
|
|
450
|
+
interface: DwnInterfaceName.Protocols,
|
|
451
|
+
method: DwnMethodName.Configure,
|
|
452
|
+
messageTimestamp: Time.getCurrentTimestamp(),
|
|
453
|
+
definition: protocolDefinitionWithoutRead
|
|
454
|
+
};
|
|
455
|
+
authorization = yield Message.createAuthorization({
|
|
456
|
+
descriptor,
|
|
457
|
+
signer: Jws.createSigner(alice)
|
|
458
|
+
});
|
|
459
|
+
protocolsConfigureMessage = { descriptor, authorization };
|
|
460
|
+
const withoutReadResponse = yield dwn.processMessage(alice.did, protocolsConfigureMessage);
|
|
461
|
+
expect(withoutReadResponse.status.code).to.equal(400);
|
|
462
|
+
// sanity, all read actions exist
|
|
463
|
+
const protocolDefinitionWithAllReadActions = {
|
|
464
|
+
protocol: 'http://foo',
|
|
465
|
+
published: true,
|
|
466
|
+
types: {
|
|
467
|
+
friend: {},
|
|
468
|
+
foo: {},
|
|
469
|
+
},
|
|
470
|
+
structure: {
|
|
471
|
+
friend: {
|
|
472
|
+
$role: true
|
|
473
|
+
},
|
|
474
|
+
foo: {
|
|
475
|
+
$actions: [
|
|
476
|
+
{
|
|
477
|
+
role: 'friend',
|
|
478
|
+
can: [ProtocolAction.Read, ProtocolAction.Query, ProtocolAction.Subscribe]
|
|
479
|
+
}
|
|
480
|
+
]
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
};
|
|
484
|
+
const withAllReadActions = yield TestDataGenerator.generateProtocolsConfigure({
|
|
485
|
+
author: alice,
|
|
486
|
+
protocolDefinition: protocolDefinitionWithAllReadActions,
|
|
487
|
+
});
|
|
488
|
+
const withAllReadActionsResponse = yield dwn.processMessage(alice.did, withAllReadActions.message);
|
|
489
|
+
expect(withAllReadActionsResponse.status.code).to.equal(202);
|
|
490
|
+
}));
|
|
491
|
+
describe('Grant authorization', () => {
|
|
492
|
+
it('allows an external party to ProtocolsConfigure only if they have a valid grant', () => __awaiter(this, void 0, void 0, function* () {
|
|
493
|
+
// scenario:
|
|
494
|
+
// 1. Alice grants Bob the access to ProtocolsConfigure on her DWN
|
|
495
|
+
// 2. Verify Bob can perform a ProtocolsConfigure
|
|
496
|
+
// 3. Verify that Mallory cannot to use Bob's permission grant to gain access to Alice's DWN
|
|
497
|
+
// 4. Alice revokes Bob's grant
|
|
498
|
+
// 5. Verify Bob cannot perform ProtocolsConfigure with the revoked grant
|
|
499
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
500
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
501
|
+
const mallory = yield TestDataGenerator.generateDidKeyPersona();
|
|
502
|
+
// 1. Alice grants Bob the access to ProtocolsConfigure on her DWN
|
|
503
|
+
const permissionGrant = yield PermissionsProtocol.createGrant({
|
|
504
|
+
signer: Jws.createSigner(alice),
|
|
505
|
+
grantedTo: bob.did,
|
|
506
|
+
dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }),
|
|
507
|
+
scope: { interface: DwnInterfaceName.Protocols, method: DwnMethodName.Configure }
|
|
508
|
+
});
|
|
509
|
+
const dataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
|
|
510
|
+
const grantRecordsWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream });
|
|
511
|
+
expect(grantRecordsWriteReply.status.code).to.equal(202);
|
|
512
|
+
// 2. Verify Bob can perform a ProtocolsConfigure
|
|
513
|
+
const permissionGrantId = permissionGrant.recordsWrite.message.recordId;
|
|
514
|
+
const protocolsConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
515
|
+
permissionGrantId,
|
|
516
|
+
author: bob,
|
|
517
|
+
protocolDefinition: minimalProtocolDefinition
|
|
518
|
+
});
|
|
519
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfigure.message);
|
|
520
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
521
|
+
// 3. Verify that Mallory cannot to use Bob's permission grant to gain access to Alice's DWN
|
|
522
|
+
const malloryProtocolsQuery = yield TestDataGenerator.generateProtocolsConfigure({
|
|
523
|
+
permissionGrantId,
|
|
524
|
+
author: mallory,
|
|
525
|
+
protocolDefinition: minimalProtocolDefinition
|
|
526
|
+
});
|
|
527
|
+
const malloryProtocolsQueryReply = yield dwn.processMessage(alice.did, malloryProtocolsQuery.message);
|
|
528
|
+
expect(malloryProtocolsQueryReply.status.code).to.equal(401);
|
|
529
|
+
expect(malloryProtocolsQueryReply.status.detail).to.contain(DwnErrorCode.GrantAuthorizationNotGrantedToAuthor);
|
|
530
|
+
// 4. Alice revokes Bob's grant
|
|
531
|
+
const revokeWrite = yield PermissionsProtocol.createRevocation({
|
|
532
|
+
signer: Jws.createSigner(alice),
|
|
533
|
+
grant: yield PermissionGrant.parse(permissionGrant.dataEncodedMessage),
|
|
534
|
+
dateRevoked: Time.getCurrentTimestamp()
|
|
535
|
+
});
|
|
536
|
+
const revokeWriteReply = yield dwn.processMessage(alice.did, revokeWrite.recordsWrite.message, { dataStream: DataStream.fromBytes(revokeWrite.permissionRevocationBytes) });
|
|
537
|
+
expect(revokeWriteReply.status.code).to.equal(202);
|
|
538
|
+
// 5. Verify Bob cannot perform ProtocolsQuery with the revoked grant
|
|
539
|
+
const unauthorizedProtocolsConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
540
|
+
permissionGrantId,
|
|
541
|
+
author: bob,
|
|
542
|
+
protocolDefinition: Object.assign(Object.assign({}, minimalProtocolDefinition), { protocol: 'https://example.com/protocol/another-protocol' })
|
|
543
|
+
});
|
|
544
|
+
const unauthorizedProtocolsConfigureReply = yield dwn.processMessage(alice.did, unauthorizedProtocolsConfigure.message);
|
|
545
|
+
expect(unauthorizedProtocolsConfigureReply.status.code).to.equal(401);
|
|
546
|
+
expect(unauthorizedProtocolsConfigureReply.status.detail).to.contain(DwnErrorCode.GrantAuthorizationGrantRevoked);
|
|
547
|
+
}));
|
|
548
|
+
it('should allow to scope a ProtocolsConfigure to a specific protocol', () => __awaiter(this, void 0, void 0, function* () {
|
|
549
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
550
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
551
|
+
// Alice grants Bob the access to ProtocolsConfigure on her DWN for a specific protocol
|
|
552
|
+
const permissionGrant = yield PermissionsProtocol.createGrant({
|
|
553
|
+
signer: Jws.createSigner(alice),
|
|
554
|
+
grantedTo: bob.did,
|
|
555
|
+
dateExpires: Time.createOffsetTimestamp({ seconds: 60 * 60 * 24 }),
|
|
556
|
+
scope: { interface: DwnInterfaceName.Protocols, method: DwnMethodName.Configure, protocol: 'https://example.com/protocol/allowed' }
|
|
557
|
+
});
|
|
558
|
+
const dataStream = DataStream.fromBytes(permissionGrant.permissionGrantBytes);
|
|
559
|
+
const grantRecordsWriteReply = yield dwn.processMessage(alice.did, permissionGrant.recordsWrite.message, { dataStream });
|
|
560
|
+
expect(grantRecordsWriteReply.status.code).to.equal(202);
|
|
561
|
+
// Bob tries to ProtocolsConfigure to Alice's DWN for the allowed protocol
|
|
562
|
+
const protocolConfigureAllowed = yield TestDataGenerator.generateProtocolsConfigure({
|
|
563
|
+
author: bob,
|
|
564
|
+
protocolDefinition: Object.assign(Object.assign({}, minimalProtocolDefinition), { protocol: 'https://example.com/protocol/allowed' }),
|
|
565
|
+
permissionGrantId: permissionGrant.recordsWrite.message.recordId
|
|
566
|
+
});
|
|
567
|
+
const protocolConfigureAllowedReply = yield dwn.processMessage(alice.did, protocolConfigureAllowed.message);
|
|
568
|
+
expect(protocolConfigureAllowedReply.status.code).to.equal(202);
|
|
569
|
+
// Bob tries to ProtocolsConfigure to Alice's DWN for a different protocol
|
|
570
|
+
const protocolConfigureNotAllowed = yield TestDataGenerator.generateProtocolsConfigure({
|
|
571
|
+
author: bob,
|
|
572
|
+
protocolDefinition: Object.assign(Object.assign({}, minimalProtocolDefinition), { protocol: 'https://example.com/protocol/not-allowed' }),
|
|
573
|
+
permissionGrantId: permissionGrant.recordsWrite.message.recordId
|
|
574
|
+
});
|
|
575
|
+
const protocolConfigureNotAllowedReply = yield dwn.processMessage(alice.did, protocolConfigureNotAllowed.message);
|
|
576
|
+
expect(protocolConfigureNotAllowedReply.status.code).to.equal(401);
|
|
577
|
+
}));
|
|
578
|
+
});
|
|
579
|
+
describe('event log', () => {
|
|
580
|
+
it('should add event for ProtocolsConfigure', () => __awaiter(this, void 0, void 0, function* () {
|
|
581
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
582
|
+
const { message } = yield TestDataGenerator.generateProtocolsConfigure({ author: alice });
|
|
583
|
+
const reply = yield dwn.processMessage(alice.did, message);
|
|
584
|
+
expect(reply.status.code).to.equal(202);
|
|
585
|
+
const { events } = yield eventLog.getEvents(alice.did);
|
|
586
|
+
expect(events.length).to.equal(1);
|
|
587
|
+
const messageCid = yield Message.getCid(message);
|
|
588
|
+
expect(events[0]).to.equal(messageCid);
|
|
589
|
+
}));
|
|
590
|
+
it('should delete older ProtocolsConfigure events when one is overwritten', () => __awaiter(this, void 0, void 0, function* () {
|
|
591
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
592
|
+
const oldestWrite = yield TestDataGenerator.generateProtocolsConfigure({ author: alice, protocolDefinition: minimalProtocolDefinition });
|
|
593
|
+
yield Time.minimalSleep();
|
|
594
|
+
const newestWrite = yield TestDataGenerator.generateProtocolsConfigure({ author: alice, protocolDefinition: minimalProtocolDefinition });
|
|
595
|
+
let reply = yield dwn.processMessage(alice.did, oldestWrite.message);
|
|
596
|
+
expect(reply.status.code).to.equal(202);
|
|
597
|
+
reply = yield dwn.processMessage(alice.did, newestWrite.message);
|
|
598
|
+
expect(reply.status.code).to.equal(202);
|
|
599
|
+
const { events } = yield eventLog.getEvents(alice.did);
|
|
600
|
+
expect(events.length).to.equal(1);
|
|
601
|
+
const newestMessageCid = yield Message.getCid(newestWrite.message);
|
|
602
|
+
expect(events[0]).to.equal(newestMessageCid);
|
|
603
|
+
}));
|
|
604
|
+
});
|
|
605
|
+
});
|
|
606
|
+
});
|
|
607
|
+
}
|
|
608
|
+
//# sourceMappingURL=protocols-configure.spec.js.map
|