@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,886 @@
|
|
|
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 freeForAll from '../vectors/protocol-definitions/free-for-all.json' assert { type: 'json' };
|
|
11
|
+
import threadProtocol from '../vectors/protocol-definitions/thread-role.json' assert { type: 'json' };
|
|
12
|
+
import { Poller } from '../utils/poller.js';
|
|
13
|
+
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
14
|
+
import { TestEventStream } from '../test-event-stream.js';
|
|
15
|
+
import { TestStores } from '../test-stores.js';
|
|
16
|
+
import { DataStream, Dwn, DwnInterfaceName, DwnMethodName, Jws, Message, PermissionGrant, PermissionsProtocol, Time } from '../../src/index.js';
|
|
17
|
+
import { DidKey, UniversalResolver } from '@enbox/dids';
|
|
18
|
+
import { expect } from 'chai';
|
|
19
|
+
// NOTE: We use `Poller.pollUntilSuccessOrTimeout` to poll for the expected results.
|
|
20
|
+
// In some cases, the EventStream is a coordinated pub/sub system and the message events are emitted over the network
|
|
21
|
+
// this means that the messages are not processed immediately and we need to wait for the messages to be processed
|
|
22
|
+
// before we can assert the results. The `pollUntilSuccessOrTimeout` function is a utility function that will poll until the expected results are met.
|
|
23
|
+
// It is also important to note that in some cases where we are testing a negative case (the message not arriving at the subscriber)
|
|
24
|
+
// we add an alternate subscription to await results within to give the EventStream ample time to process the message.
|
|
25
|
+
// Additionally in some of these cases the order in which messages are sent to be processed or checked may matter, and they are noted as such.
|
|
26
|
+
export function testSubscriptionScenarios() {
|
|
27
|
+
describe('subscriptions', () => {
|
|
28
|
+
let didResolver;
|
|
29
|
+
let messageStore;
|
|
30
|
+
let dataStore;
|
|
31
|
+
let resumableTaskStore;
|
|
32
|
+
let eventLog;
|
|
33
|
+
let eventStream;
|
|
34
|
+
let dwn;
|
|
35
|
+
// important to follow the `before` and `after` pattern to initialize and clean the stores in tests
|
|
36
|
+
// so that different test suites can reuse the same backend store for testing
|
|
37
|
+
before(() => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
didResolver = new UniversalResolver({ didResolvers: [DidKey] });
|
|
39
|
+
const stores = TestStores.get();
|
|
40
|
+
messageStore = stores.messageStore;
|
|
41
|
+
dataStore = stores.dataStore;
|
|
42
|
+
resumableTaskStore = stores.resumableTaskStore;
|
|
43
|
+
eventLog = stores.eventLog;
|
|
44
|
+
eventStream = TestEventStream.get();
|
|
45
|
+
dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
|
|
46
|
+
}));
|
|
47
|
+
beforeEach(() => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
// clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
49
|
+
yield messageStore.clear();
|
|
50
|
+
yield dataStore.clear();
|
|
51
|
+
yield resumableTaskStore.clear();
|
|
52
|
+
yield eventLog.clear();
|
|
53
|
+
}));
|
|
54
|
+
after(() => __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
yield dwn.close();
|
|
56
|
+
}));
|
|
57
|
+
describe('messages subscribe', () => {
|
|
58
|
+
it('all messages', () => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
// Scenario: Alice subscribes to all messages and creates 3 messages. Alice then expects to receive all 3 messages.
|
|
60
|
+
var _a, _b;
|
|
61
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
62
|
+
// create a handler that adds the messageCid of each message to an array.
|
|
63
|
+
const messageCids = [];
|
|
64
|
+
const handler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
const { message } = event;
|
|
66
|
+
const messageCid = yield Message.getCid(message);
|
|
67
|
+
messageCids.push(messageCid);
|
|
68
|
+
});
|
|
69
|
+
// subscribe to all messages
|
|
70
|
+
const messagesSubscription = yield TestDataGenerator.generateMessagesSubscribe({ author: alice });
|
|
71
|
+
const messagesSubscriptionReply = yield dwn.processMessage(alice.did, messagesSubscription.message, { subscriptionHandler: handler });
|
|
72
|
+
expect(messagesSubscriptionReply.status.code).to.equal(200);
|
|
73
|
+
expect((_a = messagesSubscriptionReply.subscription) === null || _a === void 0 ? void 0 : _a.id).to.equal(yield Message.getCid(messagesSubscription.message));
|
|
74
|
+
// generate various messages
|
|
75
|
+
const write1 = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
76
|
+
const write1MessageCid = yield Message.getCid(write1.message);
|
|
77
|
+
const write1Reply = yield dwn.processMessage(alice.did, write1.message, { dataStream: write1.dataStream });
|
|
78
|
+
expect(write1Reply.status.code).to.equal(202);
|
|
79
|
+
const protocol1 = yield TestDataGenerator.generateProtocolsConfigure({ author: alice });
|
|
80
|
+
const protocol1MessageCid = yield Message.getCid(protocol1.message);
|
|
81
|
+
const protocol1Reply = yield dwn.processMessage(alice.did, protocol1.message);
|
|
82
|
+
expect(protocol1Reply.status.code).to.equal(202);
|
|
83
|
+
const deleteWrite1 = yield TestDataGenerator.generateRecordsDelete({ author: alice, recordId: write1.message.recordId });
|
|
84
|
+
const delete1MessageCid = yield Message.getCid(deleteWrite1.message);
|
|
85
|
+
const deleteWrite1Reply = yield dwn.processMessage(alice.did, deleteWrite1.message);
|
|
86
|
+
expect(deleteWrite1Reply.status.code).to.equal(202);
|
|
87
|
+
// poll until the messages are received by the handler
|
|
88
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
expect(messageCids.length).to.equal(3);
|
|
90
|
+
expect(messageCids).to.eql([write1MessageCid, protocol1MessageCid, delete1MessageCid]);
|
|
91
|
+
}));
|
|
92
|
+
// clean up the subscription handler
|
|
93
|
+
yield ((_b = messagesSubscriptionReply.subscription) === null || _b === void 0 ? void 0 : _b.close());
|
|
94
|
+
}));
|
|
95
|
+
it('filters by interface type', () => __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
// scenario:
|
|
97
|
+
// alice subscribes to 2 different message interfaces Records and Protocols
|
|
98
|
+
// alice creates (2) messages, RecordsWrite and ProtocolsConfigure
|
|
99
|
+
// alice checks that each handler received the appropriate message
|
|
100
|
+
// alice deletes the record
|
|
101
|
+
// alice checks that the Records handler received the delete message
|
|
102
|
+
var _a, _b;
|
|
103
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
104
|
+
// subscribe to the Records interface
|
|
105
|
+
const recordsInterfaceSubscription = yield TestDataGenerator.generateMessagesSubscribe({
|
|
106
|
+
author: alice,
|
|
107
|
+
filters: [{ interface: DwnInterfaceName.Records }]
|
|
108
|
+
});
|
|
109
|
+
const recordsMessageCids = [];
|
|
110
|
+
const recordsSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
111
|
+
const { message } = event;
|
|
112
|
+
const messageCid = yield Message.getCid(message);
|
|
113
|
+
recordsMessageCids.push(messageCid);
|
|
114
|
+
});
|
|
115
|
+
const recordsInterfaceSubscriptionReply = yield dwn.processMessage(alice.did, recordsInterfaceSubscription.message, { subscriptionHandler: recordsSubscribeHandler });
|
|
116
|
+
expect(recordsInterfaceSubscriptionReply.status.code).to.equal(200);
|
|
117
|
+
expect(recordsInterfaceSubscriptionReply.subscription).to.exist;
|
|
118
|
+
// subscribe to the Protocols interface
|
|
119
|
+
const protocolsInterfaceSubscription = yield TestDataGenerator.generateMessagesSubscribe({
|
|
120
|
+
author: alice,
|
|
121
|
+
filters: [{ interface: DwnInterfaceName.Protocols }]
|
|
122
|
+
});
|
|
123
|
+
const protocolsMessageCids = [];
|
|
124
|
+
const protocolsSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
125
|
+
const { message } = event;
|
|
126
|
+
const messageCid = yield Message.getCid(message);
|
|
127
|
+
protocolsMessageCids.push(messageCid);
|
|
128
|
+
});
|
|
129
|
+
const protocolsInterfaceSubscriptionReply = yield dwn.processMessage(alice.did, protocolsInterfaceSubscription.message, { subscriptionHandler: protocolsSubscribeHandler });
|
|
130
|
+
expect(protocolsInterfaceSubscriptionReply.status.code).to.equal(200);
|
|
131
|
+
expect(protocolsInterfaceSubscriptionReply.subscription).to.exist;
|
|
132
|
+
// create one of each message types a RecordsWrite and a ProtocolsConfigure
|
|
133
|
+
const record = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
134
|
+
const recordReply = yield dwn.processMessage(alice.did, record.message, { dataStream: record.dataStream });
|
|
135
|
+
expect(recordReply.status.code).to.equal(202, 'RecordsWrite');
|
|
136
|
+
const protocol = yield TestDataGenerator.generateProtocolsConfigure({ author: alice });
|
|
137
|
+
const protocolReply = yield dwn.processMessage(alice.did, protocol.message);
|
|
138
|
+
expect(protocolReply.status.code).to.equal(202, 'ProtocolConfigure');
|
|
139
|
+
// Poll until the messages are received by the handler
|
|
140
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
// check record message
|
|
142
|
+
expect(recordsMessageCids.length).to.equal(1);
|
|
143
|
+
expect(recordsMessageCids).to.have.members([yield Message.getCid(record.message)]);
|
|
144
|
+
// check protocols message
|
|
145
|
+
expect(protocolsMessageCids.length).to.equal(1);
|
|
146
|
+
expect(protocolsMessageCids).to.have.members([yield Message.getCid(protocol.message)]);
|
|
147
|
+
}));
|
|
148
|
+
// delete the record
|
|
149
|
+
const recordDelete = yield TestDataGenerator.generateRecordsDelete({ author: alice, recordId: record.message.recordId });
|
|
150
|
+
const recordDeleteReply = yield dwn.processMessage(alice.did, recordDelete.message);
|
|
151
|
+
expect(recordDeleteReply.status.code).to.equal(202, 'RecordsDelete');
|
|
152
|
+
// poll until the delete message is received by the handler
|
|
153
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
154
|
+
// check record messages to include the delete message
|
|
155
|
+
expect(recordsMessageCids.length).to.equal(2);
|
|
156
|
+
expect(recordsMessageCids).to.include.members([yield Message.getCid(recordDelete.message)]);
|
|
157
|
+
// check that the protocols message array does not include the delete message
|
|
158
|
+
expect(protocolsMessageCids.length).to.equal(1); // unchanged
|
|
159
|
+
}));
|
|
160
|
+
// clean up the subscriptions
|
|
161
|
+
yield ((_a = recordsInterfaceSubscriptionReply.subscription) === null || _a === void 0 ? void 0 : _a.close());
|
|
162
|
+
yield ((_b = protocolsInterfaceSubscriptionReply.subscription) === null || _b === void 0 ? void 0 : _b.close());
|
|
163
|
+
}));
|
|
164
|
+
it('filters by method type', () => __awaiter(this, void 0, void 0, function* () {
|
|
165
|
+
// scenario:
|
|
166
|
+
// Alice creates a subscription filtered to RecordsWrite messages
|
|
167
|
+
// Alice creates a second subscription filtered to RecordsDelete messages
|
|
168
|
+
// Alice creates a RecordsWrite message, then updates the records with a subsequent RecordsWrite
|
|
169
|
+
// Alice checks that the subscription handler for RecordsWrite received both messages
|
|
170
|
+
// Alice checks that the subscription handler for RecordsDelete did not receive any messages
|
|
171
|
+
// Alice now deletes the record with a RecordsDelete
|
|
172
|
+
// Alice also writes a new record with a RecordsWrite
|
|
173
|
+
// Alice checks that the RecordsWrite handler received the new record, but not the delete message
|
|
174
|
+
// Alice checks the RecordsDelete handler received the delete message
|
|
175
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
176
|
+
// subscribe to records write
|
|
177
|
+
const recordsWriteSubscription = yield TestDataGenerator.generateMessagesSubscribe({
|
|
178
|
+
author: alice,
|
|
179
|
+
filters: [{ interface: DwnInterfaceName.Records, method: DwnMethodName.Write }]
|
|
180
|
+
});
|
|
181
|
+
const recordsWriteMessageCids = [];
|
|
182
|
+
const recordsSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
183
|
+
const { message } = event;
|
|
184
|
+
const messageCid = yield Message.getCid(message);
|
|
185
|
+
recordsWriteMessageCids.push(messageCid);
|
|
186
|
+
});
|
|
187
|
+
const recordsWriteSubscriptionReply = yield dwn.processMessage(alice.did, recordsWriteSubscription.message, { subscriptionHandler: recordsSubscribeHandler });
|
|
188
|
+
expect(recordsWriteSubscriptionReply.status.code).to.equal(200);
|
|
189
|
+
expect(recordsWriteSubscriptionReply.subscription).to.exist;
|
|
190
|
+
// subscribe to records delete
|
|
191
|
+
const recordsDeleteSubscription = yield TestDataGenerator.generateMessagesSubscribe({
|
|
192
|
+
author: alice,
|
|
193
|
+
filters: [{ interface: DwnInterfaceName.Records, method: DwnMethodName.Delete }]
|
|
194
|
+
});
|
|
195
|
+
const recordsDeleteMessageCids = [];
|
|
196
|
+
const recordsDeleteSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
197
|
+
const { message } = event;
|
|
198
|
+
const messageCid = yield Message.getCid(message);
|
|
199
|
+
recordsDeleteMessageCids.push(messageCid);
|
|
200
|
+
});
|
|
201
|
+
const recordsDeleteSubscriptionReply = yield dwn.processMessage(alice.did, recordsDeleteSubscription.message, { subscriptionHandler: recordsDeleteSubscribeHandler });
|
|
202
|
+
expect(recordsDeleteSubscriptionReply.status.code).to.equal(200);
|
|
203
|
+
expect(recordsDeleteSubscriptionReply.subscription).to.exist;
|
|
204
|
+
// create and updates the record, this creates two RecordsWrite messages
|
|
205
|
+
const record = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
206
|
+
const recordReply = yield dwn.processMessage(alice.did, record.message, { dataStream: record.dataStream });
|
|
207
|
+
expect(recordReply.status.code).to.equal(202, 'RecordsWrite');
|
|
208
|
+
const record1MessageCid = yield Message.getCid(record.message);
|
|
209
|
+
const recordUpdate = yield TestDataGenerator.generateFromRecordsWrite({ author: alice, existingWrite: record.recordsWrite });
|
|
210
|
+
const recordUpdateReply = yield dwn.processMessage(alice.did, recordUpdate.message, { dataStream: recordUpdate.dataStream });
|
|
211
|
+
expect(recordUpdateReply.status.code).to.equal(202, 'RecordsUpdate');
|
|
212
|
+
const recordUpdateMessageCid = yield Message.getCid(recordUpdate.message);
|
|
213
|
+
// Poll until the messages are received by the handler
|
|
214
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
215
|
+
// check the array for both the RecordsWrite messages
|
|
216
|
+
expect(recordsWriteMessageCids.length).to.equal(2);
|
|
217
|
+
expect(recordsWriteMessageCids).to.have.members([
|
|
218
|
+
record1MessageCid,
|
|
219
|
+
recordUpdateMessageCid,
|
|
220
|
+
]);
|
|
221
|
+
}));
|
|
222
|
+
// confirm that the delete array is empty
|
|
223
|
+
expect(recordsDeleteMessageCids.length).to.equal(0);
|
|
224
|
+
// delete the record
|
|
225
|
+
const recordDelete = yield TestDataGenerator.generateRecordsDelete({ author: alice, recordId: record.message.recordId });
|
|
226
|
+
const recordDeleteReply = yield dwn.processMessage(alice.did, recordDelete.message);
|
|
227
|
+
expect(recordDeleteReply.status.code).to.equal(202, 'RecordsDelete');
|
|
228
|
+
const recordDeleteMessageCid = yield Message.getCid(recordDelete.message);
|
|
229
|
+
// write a second record
|
|
230
|
+
const record2 = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
231
|
+
const record2Reply = yield dwn.processMessage(alice.did, record2.message, { dataStream: record2.dataStream });
|
|
232
|
+
expect(record2Reply.status.code).to.equal(202, 'RecordsWrite');
|
|
233
|
+
const record2MessageCid = yield Message.getCid(record2.message);
|
|
234
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
235
|
+
// ensure the new record is in the recordsWrite array, but not the delete
|
|
236
|
+
expect(recordsWriteMessageCids.length).to.equal(3);
|
|
237
|
+
expect(recordsWriteMessageCids).to.include.members([
|
|
238
|
+
record1MessageCid,
|
|
239
|
+
recordUpdateMessageCid,
|
|
240
|
+
record2MessageCid,
|
|
241
|
+
]);
|
|
242
|
+
// ensure the delete message is in the recordsDelete array
|
|
243
|
+
expect(recordsDeleteMessageCids.length).to.equal(1);
|
|
244
|
+
expect(recordsDeleteMessageCids).to.include.members([
|
|
245
|
+
recordDeleteMessageCid,
|
|
246
|
+
]);
|
|
247
|
+
}));
|
|
248
|
+
}));
|
|
249
|
+
it('filters by a protocol across different message types', () => __awaiter(this, void 0, void 0, function* () {
|
|
250
|
+
// NOTE: This test validates the ability to filter by a specific protocol across different message types.
|
|
251
|
+
// This will return any of the `RecordsWrite`, `RecordsDelete` and `ProtocolConfigure` messages that are associated with the protocol
|
|
252
|
+
// Additionally this will return permission-protocol `RecordsWrite` messages that are associated with the protocol.
|
|
253
|
+
// scenario:
|
|
254
|
+
// alice creates two different subscriptions, one for each protocol (proto1, proto2)
|
|
255
|
+
// alice configures the two different protocols (proto1, proto2)
|
|
256
|
+
// alice creates records for each protocol
|
|
257
|
+
// bob requests permissions for both protocols
|
|
258
|
+
// alice grants bob permissions for both protocols
|
|
259
|
+
// when checking the handler arrays for the specific protocol, only Events related to it should be present.
|
|
260
|
+
// alice then deletes the records for each protocol
|
|
261
|
+
// alice revokes bob's permissions for both protocols
|
|
262
|
+
// now when checking the handler arrays, the delete and revocation messages should be present
|
|
263
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
264
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
265
|
+
const proto1Messages = [];
|
|
266
|
+
const proto1Handler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
267
|
+
const { message } = event;
|
|
268
|
+
proto1Messages.push(yield Message.getCid(message));
|
|
269
|
+
});
|
|
270
|
+
const proto1Subscription = yield TestDataGenerator.generateMessagesSubscribe({
|
|
271
|
+
author: alice,
|
|
272
|
+
filters: [{ protocol: 'http://proto1' }]
|
|
273
|
+
});
|
|
274
|
+
const proto1SubscriptionReply = yield dwn.processMessage(alice.did, proto1Subscription.message, {
|
|
275
|
+
subscriptionHandler: proto1Handler
|
|
276
|
+
});
|
|
277
|
+
expect(proto1SubscriptionReply.status.code).to.equal(200);
|
|
278
|
+
expect(proto1SubscriptionReply.subscription).to.exist;
|
|
279
|
+
const proto2Messages = [];
|
|
280
|
+
const proto2Handler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
281
|
+
const { message } = event;
|
|
282
|
+
proto2Messages.push(yield Message.getCid(message));
|
|
283
|
+
});
|
|
284
|
+
const proto2Subscription = yield TestDataGenerator.generateMessagesSubscribe({
|
|
285
|
+
author: alice,
|
|
286
|
+
filters: [{ protocol: 'http://proto2' }]
|
|
287
|
+
});
|
|
288
|
+
const proto2SubscriptionReply = yield dwn.processMessage(alice.did, proto2Subscription.message, {
|
|
289
|
+
subscriptionHandler: proto2Handler
|
|
290
|
+
});
|
|
291
|
+
expect(proto2SubscriptionReply.status.code).to.equal(200);
|
|
292
|
+
expect(proto2SubscriptionReply.subscription).to.exist;
|
|
293
|
+
// configure proto1
|
|
294
|
+
const protoConf1 = yield TestDataGenerator.generateProtocolsConfigure({
|
|
295
|
+
author: alice,
|
|
296
|
+
protocolDefinition: Object.assign(Object.assign({}, freeForAll), { protocol: 'http://proto1' })
|
|
297
|
+
});
|
|
298
|
+
const proto1 = protoConf1.message.descriptor.definition.protocol;
|
|
299
|
+
const protoConf1Response = yield dwn.processMessage(alice.did, protoConf1.message);
|
|
300
|
+
expect(protoConf1Response.status.code).equals(202);
|
|
301
|
+
// configure proto2
|
|
302
|
+
const protoConf2 = yield TestDataGenerator.generateProtocolsConfigure({
|
|
303
|
+
author: alice,
|
|
304
|
+
protocolDefinition: Object.assign(Object.assign({}, freeForAll), { protocol: 'http://proto2' })
|
|
305
|
+
});
|
|
306
|
+
const proto2 = protoConf2.message.descriptor.definition.protocol;
|
|
307
|
+
const protoConf2Response = yield dwn.processMessage(alice.did, protoConf2.message);
|
|
308
|
+
expect(protoConf2Response.status.code).equals(202);
|
|
309
|
+
const postProperties = {
|
|
310
|
+
protocolPath: 'post',
|
|
311
|
+
schema: freeForAll.types.post.schema,
|
|
312
|
+
dataFormat: freeForAll.types.post.dataFormats[0],
|
|
313
|
+
};
|
|
314
|
+
// create a record for proto1
|
|
315
|
+
const write1proto1 = yield TestDataGenerator.generateRecordsWrite(Object.assign({ author: alice, protocol: proto1 }, postProperties));
|
|
316
|
+
const write1Response = yield dwn.processMessage(alice.did, write1proto1.message, { dataStream: write1proto1.dataStream });
|
|
317
|
+
expect(write1Response.status.code).equals(202);
|
|
318
|
+
// create a record for proto2
|
|
319
|
+
const write1proto2 = yield TestDataGenerator.generateRecordsWrite(Object.assign({ author: alice, protocol: proto2 }, postProperties));
|
|
320
|
+
const write1Proto2Response = yield dwn.processMessage(alice.did, write1proto2.message, { dataStream: write1proto2.dataStream });
|
|
321
|
+
expect(write1Proto2Response.status.code).equals(202);
|
|
322
|
+
// bob requests permissions for proto1
|
|
323
|
+
const requestProto1 = yield PermissionsProtocol.createRequest({
|
|
324
|
+
signer: Jws.createSigner(bob),
|
|
325
|
+
scope: { interface: DwnInterfaceName.Records, method: DwnMethodName.Write, protocol: proto1 },
|
|
326
|
+
delegated: false,
|
|
327
|
+
});
|
|
328
|
+
const requestProto1Response = yield dwn.processMessage(alice.did, requestProto1.recordsWrite.message, { dataStream: DataStream.fromBytes(requestProto1.permissionRequestBytes) });
|
|
329
|
+
expect(requestProto1Response.status.code).equals(202);
|
|
330
|
+
// bob requests permissions for proto2
|
|
331
|
+
const requestProto2 = yield PermissionsProtocol.createRequest({
|
|
332
|
+
signer: Jws.createSigner(bob),
|
|
333
|
+
scope: { interface: DwnInterfaceName.Records, method: DwnMethodName.Write, protocol: proto2 },
|
|
334
|
+
delegated: false,
|
|
335
|
+
});
|
|
336
|
+
const requestProto2Response = yield dwn.processMessage(alice.did, requestProto2.recordsWrite.message, { dataStream: DataStream.fromBytes(requestProto2.permissionRequestBytes) });
|
|
337
|
+
expect(requestProto2Response.status.code).equals(202);
|
|
338
|
+
// alice grants permissions for proto1
|
|
339
|
+
const grantProto1 = yield PermissionsProtocol.createGrant({
|
|
340
|
+
signer: Jws.createSigner(alice),
|
|
341
|
+
scope: requestProto1.permissionRequestData.scope,
|
|
342
|
+
dateExpires: Time.createOffsetTimestamp({ seconds: 5 }),
|
|
343
|
+
grantedTo: bob.did,
|
|
344
|
+
});
|
|
345
|
+
const grantProto1Response = yield dwn.processMessage(alice.did, grantProto1.recordsWrite.message, { dataStream: DataStream.fromBytes(grantProto1.permissionGrantBytes) });
|
|
346
|
+
expect(grantProto1Response.status.code).equals(202);
|
|
347
|
+
// alice grants permissions for proto2
|
|
348
|
+
const grantProto2 = yield PermissionsProtocol.createGrant({
|
|
349
|
+
signer: Jws.createSigner(alice),
|
|
350
|
+
scope: requestProto2.permissionRequestData.scope,
|
|
351
|
+
dateExpires: Time.createOffsetTimestamp({ seconds: 5 }),
|
|
352
|
+
grantedTo: bob.did,
|
|
353
|
+
});
|
|
354
|
+
const grantProto2Response = yield dwn.processMessage(alice.did, grantProto2.recordsWrite.message, { dataStream: DataStream.fromBytes(grantProto2.permissionGrantBytes) });
|
|
355
|
+
expect(grantProto2Response.status.code).equals(202);
|
|
356
|
+
// poll until the messages are received by the handlers
|
|
357
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
358
|
+
// check for proto1 messages
|
|
359
|
+
expect(proto1Messages.length).to.equal(4);
|
|
360
|
+
expect(proto1Messages).to.have.members([
|
|
361
|
+
yield Message.getCid(protoConf1.message),
|
|
362
|
+
yield Message.getCid(write1proto1.message),
|
|
363
|
+
yield Message.getCid(requestProto1.recordsWrite.message),
|
|
364
|
+
yield Message.getCid(grantProto1.recordsWrite.message),
|
|
365
|
+
]);
|
|
366
|
+
// check for proto2 messages
|
|
367
|
+
expect(proto2Messages.length).to.equal(4);
|
|
368
|
+
expect(proto2Messages).to.have.members([
|
|
369
|
+
yield Message.getCid(protoConf2.message),
|
|
370
|
+
yield Message.getCid(write1proto2.message),
|
|
371
|
+
yield Message.getCid(requestProto2.recordsWrite.message),
|
|
372
|
+
yield Message.getCid(grantProto2.recordsWrite.message),
|
|
373
|
+
]);
|
|
374
|
+
}));
|
|
375
|
+
// delete proto1 message
|
|
376
|
+
const deleteProto1Message = yield TestDataGenerator.generateRecordsDelete({ author: alice, recordId: write1proto1.message.recordId });
|
|
377
|
+
const deleteProto1MessageReply = yield dwn.processMessage(alice.did, deleteProto1Message.message);
|
|
378
|
+
expect(deleteProto1MessageReply.status.code).to.equal(202);
|
|
379
|
+
// delete proto2 message
|
|
380
|
+
const deleteProto2Message = yield TestDataGenerator.generateRecordsDelete({ author: alice, recordId: write1proto2.message.recordId });
|
|
381
|
+
const deleteProto2MessageReply = yield dwn.processMessage(alice.did, deleteProto2Message.message);
|
|
382
|
+
expect(deleteProto2MessageReply.status.code).to.equal(202);
|
|
383
|
+
// revoke permissions for proto1
|
|
384
|
+
const revokeProto1 = yield PermissionsProtocol.createRevocation({
|
|
385
|
+
signer: Jws.createSigner(alice),
|
|
386
|
+
grant: yield PermissionGrant.parse(grantProto1.dataEncodedMessage),
|
|
387
|
+
});
|
|
388
|
+
const revokeProto1Response = yield dwn.processMessage(alice.did, revokeProto1.recordsWrite.message, { dataStream: DataStream.fromBytes(revokeProto1.permissionRevocationBytes) });
|
|
389
|
+
expect(revokeProto1Response.status.code).equals(202);
|
|
390
|
+
// revoke permissions for proto2
|
|
391
|
+
const revokeProto2 = yield PermissionsProtocol.createRevocation({
|
|
392
|
+
signer: Jws.createSigner(alice),
|
|
393
|
+
grant: yield PermissionGrant.parse(grantProto2.dataEncodedMessage),
|
|
394
|
+
});
|
|
395
|
+
const revokeProto2Response = yield dwn.processMessage(alice.did, revokeProto2.recordsWrite.message, { dataStream: DataStream.fromBytes(revokeProto2.permissionRevocationBytes) });
|
|
396
|
+
expect(revokeProto2Response.status.code).equals(202);
|
|
397
|
+
// poll until the messages are received by the handlers
|
|
398
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
399
|
+
// check for the delete and revocation in proto1 messages
|
|
400
|
+
expect(proto1Messages.length).to.equal(6); // 2 additional messages
|
|
401
|
+
expect(proto1Messages).to.include.members([
|
|
402
|
+
yield Message.getCid(deleteProto1Message.message),
|
|
403
|
+
yield Message.getCid(revokeProto1.recordsWrite.message),
|
|
404
|
+
]);
|
|
405
|
+
// check for the delete and revocation in proto2 messages
|
|
406
|
+
expect(proto2Messages.length).to.equal(6); // 2 additional messages
|
|
407
|
+
expect(proto2Messages).to.include.members([
|
|
408
|
+
yield Message.getCid(deleteProto2Message.message),
|
|
409
|
+
yield Message.getCid(revokeProto2.recordsWrite.message),
|
|
410
|
+
]);
|
|
411
|
+
}));
|
|
412
|
+
}));
|
|
413
|
+
it('does not emit events after subscription is closed', () => __awaiter(this, void 0, void 0, function* () {
|
|
414
|
+
// scenario: create two subscriptions.
|
|
415
|
+
// write a message, check that both subscriptions receive the message.
|
|
416
|
+
// close one subscription, write two more messages, check that only the open subscription receives the messages.
|
|
417
|
+
// we purposely leave one subscription open to ensure that the messages are being processed by an external pub/sub system
|
|
418
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
419
|
+
// messageCids of subscription 1 messages
|
|
420
|
+
const sub1MessageCids = [];
|
|
421
|
+
const handler1 = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
422
|
+
const { message } = event;
|
|
423
|
+
const messageCid = yield Message.getCid(message);
|
|
424
|
+
sub1MessageCids.push(messageCid);
|
|
425
|
+
});
|
|
426
|
+
// messageCids of subscription 2 messages
|
|
427
|
+
const sub2MessageCids = [];
|
|
428
|
+
const handler2 = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
429
|
+
const { message } = event;
|
|
430
|
+
const messageCid = yield Message.getCid(message);
|
|
431
|
+
sub2MessageCids.push(messageCid);
|
|
432
|
+
});
|
|
433
|
+
// subscribe to all messages
|
|
434
|
+
const messagesSubscription1 = yield TestDataGenerator.generateMessagesSubscribe({ author: alice });
|
|
435
|
+
const messagesSubscription1Reply = yield dwn.processMessage(alice.did, messagesSubscription1.message, { subscriptionHandler: handler1 });
|
|
436
|
+
expect(messagesSubscription1Reply.status.code).to.equal(200);
|
|
437
|
+
const messagesSubscription2 = yield TestDataGenerator.generateMessagesSubscribe({ author: alice });
|
|
438
|
+
const messagesSubscription2Reply = yield dwn.processMessage(alice.did, messagesSubscription2.message, { subscriptionHandler: handler2 });
|
|
439
|
+
expect(messagesSubscription2Reply.status.code).to.equal(200);
|
|
440
|
+
// no event message exist yet
|
|
441
|
+
expect(sub1MessageCids.length).to.equal(0);
|
|
442
|
+
expect(sub2MessageCids.length).to.equal(0);
|
|
443
|
+
// write a record
|
|
444
|
+
const record1 = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
445
|
+
const record1Reply = yield dwn.processMessage(alice.did, record1.message, { dataStream: record1.dataStream });
|
|
446
|
+
expect(record1Reply.status.code).to.equal(202);
|
|
447
|
+
const record1MessageCid = yield Message.getCid(record1.message);
|
|
448
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
449
|
+
// both subscriptions should have received the message
|
|
450
|
+
expect(sub1MessageCids.length).to.equal(1); // message exists
|
|
451
|
+
expect(sub1MessageCids).to.eql([record1MessageCid]);
|
|
452
|
+
expect(sub2MessageCids.length).to.equal(1); // message exists
|
|
453
|
+
expect(sub2MessageCids).to.eql([record1MessageCid]);
|
|
454
|
+
}));
|
|
455
|
+
// unsubscribe from subscription 2
|
|
456
|
+
yield messagesSubscription2Reply.subscription.close();
|
|
457
|
+
// write two more message.
|
|
458
|
+
const record2 = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
459
|
+
const record2Reply = yield dwn.processMessage(alice.did, record2.message, { dataStream: record2.dataStream });
|
|
460
|
+
expect(record2Reply.status.code).to.equal(202);
|
|
461
|
+
const record2MessageCid = yield Message.getCid(record2.message);
|
|
462
|
+
const record3 = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
463
|
+
const record3Reply = yield dwn.processMessage(alice.did, record3.message, { dataStream: record3.dataStream });
|
|
464
|
+
expect(record3Reply.status.code).to.equal(202);
|
|
465
|
+
const record3MessageCid = yield Message.getCid(record3.message);
|
|
466
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
467
|
+
expect(sub1MessageCids.length).to.equal(3); // all three messages exist
|
|
468
|
+
expect(sub1MessageCids).to.eql([
|
|
469
|
+
record1MessageCid,
|
|
470
|
+
record2MessageCid,
|
|
471
|
+
record3MessageCid
|
|
472
|
+
]);
|
|
473
|
+
expect(sub2MessageCids.length).to.equal(1); // only the first message exists
|
|
474
|
+
expect(sub2MessageCids).to.eql([record1MessageCid]);
|
|
475
|
+
}));
|
|
476
|
+
}));
|
|
477
|
+
});
|
|
478
|
+
describe('records subscribe', () => {
|
|
479
|
+
it('allows for anonymous subscriptions to published records', () => __awaiter(this, void 0, void 0, function* () {
|
|
480
|
+
// scenario:
|
|
481
|
+
// a user creates an anonymous subscription filtered to a schema to alice's DWN
|
|
482
|
+
// alice writes two records, one not published and one published
|
|
483
|
+
// alice checks that the anonymous subscription handler only received the published record
|
|
484
|
+
// NOTE we create a control subscription to capture all messages
|
|
485
|
+
// this is to ensure that the messages are not received by the anonymous subscription handler, but have had ample time to be processed
|
|
486
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
487
|
+
// create a control handler to capture ALL messages in the protocol with alice as the author
|
|
488
|
+
const allMessages = [];
|
|
489
|
+
const allHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
490
|
+
const { message } = event;
|
|
491
|
+
allMessages.push(yield Message.getCid(message));
|
|
492
|
+
});
|
|
493
|
+
const allSubscription = yield TestDataGenerator.generateMessagesSubscribe({
|
|
494
|
+
author: alice,
|
|
495
|
+
});
|
|
496
|
+
const allSubscriptionReply = yield dwn.processMessage(alice.did, allSubscription.message, { subscriptionHandler: allHandler });
|
|
497
|
+
expect(allSubscriptionReply.status.code).to.equal(200);
|
|
498
|
+
// we create an anonymous subscription to capture only published messages
|
|
499
|
+
const publishedMessages = [];
|
|
500
|
+
const anonymousSubscriptionHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
501
|
+
const { message } = event;
|
|
502
|
+
publishedMessages.push(yield Message.getCid(message));
|
|
503
|
+
});
|
|
504
|
+
const anonymousSubscription = yield TestDataGenerator.generateRecordsSubscribe({
|
|
505
|
+
anonymous: true,
|
|
506
|
+
filter: { schema: 'http://schema1' }
|
|
507
|
+
});
|
|
508
|
+
const anonymousSubscriptionReply = yield dwn.processMessage(alice.did, anonymousSubscription.message, {
|
|
509
|
+
subscriptionHandler: anonymousSubscriptionHandler
|
|
510
|
+
});
|
|
511
|
+
expect(anonymousSubscriptionReply.status.code).to.equal(200);
|
|
512
|
+
expect(anonymousSubscriptionReply.subscription).to.exist;
|
|
513
|
+
// we create a non published record, this will only show up in the control subscription
|
|
514
|
+
const writeNotPublished = yield TestDataGenerator.generateRecordsWrite({ author: alice, schema: 'http://schema1' });
|
|
515
|
+
const writeNotPublishedReply = yield dwn.processMessage(alice.did, writeNotPublished.message, { dataStream: writeNotPublished.dataStream });
|
|
516
|
+
expect(writeNotPublishedReply.status.code).to.equal(202);
|
|
517
|
+
// we create a published record, this will show up in both the control and anonymous subscription
|
|
518
|
+
const write1 = yield TestDataGenerator.generateRecordsWrite({ author: alice, schema: 'http://schema1', published: true });
|
|
519
|
+
const write1Reply = yield dwn.processMessage(alice.did, write1.message, { dataStream: write1.dataStream });
|
|
520
|
+
expect(write1Reply.status.code).to.equal(202);
|
|
521
|
+
// we create another published record, this will show up in both the control and anonymous subscription
|
|
522
|
+
const write2 = yield TestDataGenerator.generateRecordsWrite({ author: alice, schema: 'http://schema1', published: true });
|
|
523
|
+
const write2Reply = yield dwn.processMessage(alice.did, write2.message, { dataStream: write2.dataStream });
|
|
524
|
+
expect(write2Reply.status.code).to.equal(202);
|
|
525
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
526
|
+
// publishedMessages array should only contain the two published messages
|
|
527
|
+
expect(publishedMessages.length).to.equal(2);
|
|
528
|
+
expect(publishedMessages).to.have.members([
|
|
529
|
+
yield Message.getCid(write1.message),
|
|
530
|
+
yield Message.getCid(write2.message),
|
|
531
|
+
]);
|
|
532
|
+
// allMessages array should contain all three messages
|
|
533
|
+
expect(allMessages.length).to.equal(3);
|
|
534
|
+
expect(allMessages).to.have.members([
|
|
535
|
+
yield Message.getCid(writeNotPublished.message),
|
|
536
|
+
yield Message.getCid(write1.message),
|
|
537
|
+
yield Message.getCid(write2.message),
|
|
538
|
+
]);
|
|
539
|
+
}));
|
|
540
|
+
}));
|
|
541
|
+
it('allows authorized subscriptions to records intended for a recipient', () => __awaiter(this, void 0, void 0, function* () {
|
|
542
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
543
|
+
// alice installs a freeForAll protocol
|
|
544
|
+
const protocolConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
545
|
+
author: alice,
|
|
546
|
+
protocolDefinition: Object.assign({}, freeForAll)
|
|
547
|
+
});
|
|
548
|
+
const protocolConfigureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
|
|
549
|
+
expect(protocolConfigureReply.status.code).to.equal(202);
|
|
550
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
551
|
+
const carol = yield TestDataGenerator.generateDidKeyPersona();
|
|
552
|
+
// bob subscribes to all records he's authorized to see, with alice as the recipient
|
|
553
|
+
const bobSubscribeAlice = [];
|
|
554
|
+
const bobSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
555
|
+
const { message } = event;
|
|
556
|
+
bobSubscribeAlice.push(yield Message.getCid(message));
|
|
557
|
+
});
|
|
558
|
+
const bobSubscribeToAlice = yield TestDataGenerator.generateRecordsSubscribe({
|
|
559
|
+
author: bob,
|
|
560
|
+
filter: { protocol: freeForAll.protocol, recipient: alice.did }
|
|
561
|
+
});
|
|
562
|
+
const bobSubscribeReply = yield dwn.processMessage(alice.did, bobSubscribeToAlice.message, {
|
|
563
|
+
subscriptionHandler: bobSubscribeHandler
|
|
564
|
+
});
|
|
565
|
+
expect(bobSubscribeReply.status.code).to.equal(200);
|
|
566
|
+
expect(bobSubscribeReply.subscription).to.exist;
|
|
567
|
+
// carol subscribes to any messages that she or alice are the recipients of
|
|
568
|
+
const carolSubscribeCarolAndAlice = [];
|
|
569
|
+
const carolSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
570
|
+
const { message } = event;
|
|
571
|
+
carolSubscribeCarolAndAlice.push(yield Message.getCid(message));
|
|
572
|
+
});
|
|
573
|
+
const carolSubscribeToCarolAndAlice = yield TestDataGenerator.generateRecordsSubscribe({
|
|
574
|
+
author: carol,
|
|
575
|
+
filter: { protocol: freeForAll.protocol, recipient: [alice.did, carol.did] }
|
|
576
|
+
});
|
|
577
|
+
const carolSubscribeReply = yield dwn.processMessage(alice.did, carolSubscribeToCarolAndAlice.message, {
|
|
578
|
+
subscriptionHandler: carolSubscribeHandler
|
|
579
|
+
});
|
|
580
|
+
expect(carolSubscribeReply.status.code).to.equal(200);
|
|
581
|
+
expect(carolSubscribeReply.subscription).to.exist;
|
|
582
|
+
const recordParams = {
|
|
583
|
+
protocol: freeForAll.protocol,
|
|
584
|
+
protocolPath: 'post',
|
|
585
|
+
schema: freeForAll.types.post.schema,
|
|
586
|
+
dataFormat: freeForAll.types.post.dataFormats[0],
|
|
587
|
+
};
|
|
588
|
+
// write a private and public message for alice from bob
|
|
589
|
+
const publicBobToAlice = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: bob, recipient: alice.did, published: true }));
|
|
590
|
+
const publicBobToAliceReply = yield dwn.processMessage(alice.did, publicBobToAlice.message, { dataStream: publicBobToAlice.dataStream });
|
|
591
|
+
expect(publicBobToAliceReply.status.code).to.equal(202);
|
|
592
|
+
const privateBobToAlice = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: bob, recipient: alice.did, published: false }));
|
|
593
|
+
const privateBobToAliceReply = yield dwn.processMessage(alice.did, privateBobToAlice.message, { dataStream: privateBobToAlice.dataStream });
|
|
594
|
+
expect(privateBobToAliceReply.status.code).to.equal(202);
|
|
595
|
+
// write a private message for alice from carol
|
|
596
|
+
const privateCarolToAlice = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: carol, recipient: alice.did, published: false }));
|
|
597
|
+
const privateCarolToAliceReply = yield dwn.processMessage(alice.did, privateCarolToAlice.message, {
|
|
598
|
+
dataStream: privateCarolToAlice.dataStream
|
|
599
|
+
});
|
|
600
|
+
expect(privateCarolToAliceReply.status.code).to.equal(202);
|
|
601
|
+
// write a public and private message from bob to carol
|
|
602
|
+
const publicBobToCarol = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: bob, recipient: carol.did, published: true }));
|
|
603
|
+
const publicBobToCarolReply = yield dwn.processMessage(alice.did, publicBobToCarol.message, {
|
|
604
|
+
dataStream: publicBobToCarol.dataStream
|
|
605
|
+
});
|
|
606
|
+
expect(publicBobToCarolReply.status.code).to.equal(202);
|
|
607
|
+
const privateBobToCarol = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: bob, recipient: carol.did, published: false }));
|
|
608
|
+
const privateBobToCarolReply = yield dwn.processMessage(alice.did, privateBobToCarol.message, {
|
|
609
|
+
dataStream: privateBobToCarol.dataStream
|
|
610
|
+
});
|
|
611
|
+
expect(privateBobToCarolReply.status.code).to.equal(202);
|
|
612
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
613
|
+
// carol should have received the message intended for her
|
|
614
|
+
expect(carolSubscribeCarolAndAlice.length).to.equal(4);
|
|
615
|
+
expect(carolSubscribeCarolAndAlice).to.have.members([
|
|
616
|
+
yield Message.getCid(publicBobToAlice.message),
|
|
617
|
+
yield Message.getCid(privateCarolToAlice.message),
|
|
618
|
+
yield Message.getCid(publicBobToCarol.message),
|
|
619
|
+
yield Message.getCid(privateBobToCarol.message),
|
|
620
|
+
]);
|
|
621
|
+
// bob should have received the two messages intended for him
|
|
622
|
+
expect(bobSubscribeAlice.length).to.equal(2);
|
|
623
|
+
expect(bobSubscribeAlice).to.have.members([
|
|
624
|
+
yield Message.getCid(privateBobToAlice.message),
|
|
625
|
+
yield Message.getCid(publicBobToAlice.message),
|
|
626
|
+
]);
|
|
627
|
+
}));
|
|
628
|
+
}));
|
|
629
|
+
it('allows for authorized subscriptions to records authored by an author(s)', () => __awaiter(this, void 0, void 0, function* () {
|
|
630
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
631
|
+
// alice installs a freeForAll protocol
|
|
632
|
+
const protocolConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
633
|
+
author: alice,
|
|
634
|
+
protocolDefinition: Object.assign({}, freeForAll)
|
|
635
|
+
});
|
|
636
|
+
const protocolConfigureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
|
|
637
|
+
expect(protocolConfigureReply.status.code).to.equal(202);
|
|
638
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
639
|
+
const carol = yield TestDataGenerator.generateDidKeyPersona();
|
|
640
|
+
// bob subscribes to all records he's authorized to see, with alice as the author
|
|
641
|
+
const bobSubscribeAlice = [];
|
|
642
|
+
const bobSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
643
|
+
const { message } = event;
|
|
644
|
+
bobSubscribeAlice.push(yield Message.getCid(message));
|
|
645
|
+
});
|
|
646
|
+
const bobSubscribeToAlice = yield TestDataGenerator.generateRecordsSubscribe({
|
|
647
|
+
author: bob,
|
|
648
|
+
filter: { protocol: freeForAll.protocol, author: alice.did }
|
|
649
|
+
});
|
|
650
|
+
const bobSubscribeReply = yield dwn.processMessage(alice.did, bobSubscribeToAlice.message, {
|
|
651
|
+
subscriptionHandler: bobSubscribeHandler
|
|
652
|
+
});
|
|
653
|
+
expect(bobSubscribeReply.status.code).to.equal(200);
|
|
654
|
+
expect(bobSubscribeReply.subscription).to.exist;
|
|
655
|
+
// carol subscribes to any messages that she or alice are the authors of
|
|
656
|
+
const carolSubscribeCarolAndAlice = [];
|
|
657
|
+
const carolSubscribeHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
658
|
+
const { message } = event;
|
|
659
|
+
carolSubscribeCarolAndAlice.push(yield Message.getCid(message));
|
|
660
|
+
});
|
|
661
|
+
const carolSubscribeToCarolAndAlice = yield TestDataGenerator.generateRecordsSubscribe({
|
|
662
|
+
author: carol,
|
|
663
|
+
filter: { protocol: freeForAll.protocol, author: [alice.did, carol.did] }
|
|
664
|
+
});
|
|
665
|
+
const carolSubscribeReply = yield dwn.processMessage(alice.did, carolSubscribeToCarolAndAlice.message, {
|
|
666
|
+
subscriptionHandler: carolSubscribeHandler
|
|
667
|
+
});
|
|
668
|
+
expect(carolSubscribeReply.status.code).to.equal(200);
|
|
669
|
+
expect(carolSubscribeReply.subscription).to.exist;
|
|
670
|
+
const recordParams = {
|
|
671
|
+
protocol: freeForAll.protocol,
|
|
672
|
+
protocolPath: 'post',
|
|
673
|
+
schema: freeForAll.types.post.schema,
|
|
674
|
+
dataFormat: freeForAll.types.post.dataFormats[0],
|
|
675
|
+
};
|
|
676
|
+
//control: write a public message to bob (will not show up)
|
|
677
|
+
const publicAliceToBob = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: alice, recipient: bob.did, published: true }));
|
|
678
|
+
const publicAliceToBobReply = yield dwn.processMessage(alice.did, publicAliceToBob.message, {
|
|
679
|
+
dataStream: publicAliceToBob.dataStream
|
|
680
|
+
});
|
|
681
|
+
expect(publicAliceToBobReply.status.code).to.equal(202);
|
|
682
|
+
// write a private and public message from alice to carol
|
|
683
|
+
const publicAliceToCarol = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: alice, recipient: carol.did, published: true }));
|
|
684
|
+
const publicAliceToCarolReply = yield dwn.processMessage(alice.did, publicAliceToCarol.message, {
|
|
685
|
+
dataStream: publicAliceToCarol.dataStream
|
|
686
|
+
});
|
|
687
|
+
expect(publicAliceToCarolReply.status.code).to.equal(202);
|
|
688
|
+
const privateAliceToCarol = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: alice, recipient: carol.did, published: false }));
|
|
689
|
+
const privateAliceToCarolReply = yield dwn.processMessage(alice.did, privateAliceToCarol.message, {
|
|
690
|
+
dataStream: privateAliceToCarol.dataStream
|
|
691
|
+
});
|
|
692
|
+
expect(privateAliceToCarolReply.status.code).to.equal(202);
|
|
693
|
+
// write a private message for alice from carol
|
|
694
|
+
const privateCarolToAlice = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: carol, recipient: alice.did, published: false }));
|
|
695
|
+
const privateCarolToAliceReply = yield dwn.processMessage(alice.did, privateCarolToAlice.message, {
|
|
696
|
+
dataStream: privateCarolToAlice.dataStream
|
|
697
|
+
});
|
|
698
|
+
expect(privateCarolToAliceReply.status.code).to.equal(202);
|
|
699
|
+
// write a public and private message from bob to carol
|
|
700
|
+
const publicBobToCarol = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: bob, recipient: carol.did, published: true }));
|
|
701
|
+
const publicBobToCarolReply = yield dwn.processMessage(alice.did, publicBobToCarol.message, {
|
|
702
|
+
dataStream: publicBobToCarol.dataStream
|
|
703
|
+
});
|
|
704
|
+
expect(publicBobToCarolReply.status.code).to.equal(202);
|
|
705
|
+
const privateBobToCarol = yield TestDataGenerator.generateRecordsWrite(Object.assign(Object.assign({}, recordParams), { author: bob, recipient: carol.did, published: false }));
|
|
706
|
+
const privateBobToCarolReply = yield dwn.processMessage(alice.did, privateBobToCarol.message, {
|
|
707
|
+
dataStream: privateBobToCarol.dataStream
|
|
708
|
+
});
|
|
709
|
+
expect(privateBobToCarolReply.status.code).to.equal(202);
|
|
710
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
711
|
+
// carol should have received the message intended for her
|
|
712
|
+
expect(carolSubscribeCarolAndAlice.length).to.equal(4);
|
|
713
|
+
expect(carolSubscribeCarolAndAlice).to.have.members([
|
|
714
|
+
yield Message.getCid(publicAliceToCarol.message),
|
|
715
|
+
yield Message.getCid(privateAliceToCarol.message),
|
|
716
|
+
yield Message.getCid(publicAliceToBob.message),
|
|
717
|
+
yield Message.getCid(privateCarolToAlice.message),
|
|
718
|
+
]);
|
|
719
|
+
// bob should have received the two messages intended for him
|
|
720
|
+
expect(bobSubscribeAlice.length).to.equal(2);
|
|
721
|
+
expect(bobSubscribeAlice).to.have.members([
|
|
722
|
+
yield Message.getCid(publicAliceToBob.message),
|
|
723
|
+
yield Message.getCid(publicAliceToCarol.message)
|
|
724
|
+
]);
|
|
725
|
+
}));
|
|
726
|
+
}));
|
|
727
|
+
it('filters by protocol & contextId across multiple protocolPaths', () => __awaiter(this, void 0, void 0, function* () {
|
|
728
|
+
// scenario: subscribe to multiple protocolPaths for a given protocol and contextId
|
|
729
|
+
// alice installs a protocol and creates a thread
|
|
730
|
+
// alice subscribes to update to that thread, it's participant as well as thread chats
|
|
731
|
+
// alice adds bob and carol as participants to the thread
|
|
732
|
+
// alice, bob, and carol all create messages
|
|
733
|
+
// alice deletes carol participant message
|
|
734
|
+
// alice checks that the correct messages were omitted
|
|
735
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
736
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
737
|
+
const carol = yield TestDataGenerator.generateDidKeyPersona();
|
|
738
|
+
// create protocol
|
|
739
|
+
const protocolConfigure = yield TestDataGenerator.generateProtocolsConfigure({
|
|
740
|
+
author: alice,
|
|
741
|
+
protocolDefinition: Object.assign({}, threadProtocol)
|
|
742
|
+
});
|
|
743
|
+
const protocolConfigureReply = yield dwn.processMessage(alice.did, protocolConfigure.message);
|
|
744
|
+
expect(protocolConfigureReply.status.code).to.equal(202);
|
|
745
|
+
const protocol = protocolConfigure.message.descriptor.definition.protocol;
|
|
746
|
+
// alice creates thread
|
|
747
|
+
const thread = yield TestDataGenerator.generateRecordsWrite({
|
|
748
|
+
author: alice,
|
|
749
|
+
protocol: protocol,
|
|
750
|
+
protocolPath: 'thread'
|
|
751
|
+
});
|
|
752
|
+
const threadReply = yield dwn.processMessage(alice.did, thread.message, { dataStream: thread.dataStream });
|
|
753
|
+
expect(threadReply.status.code).to.equal(202);
|
|
754
|
+
// subscribe to this thread's messages
|
|
755
|
+
const messages = [];
|
|
756
|
+
const initialWrites = [];
|
|
757
|
+
const subscriptionHandler = (event) => __awaiter(this, void 0, void 0, function* () {
|
|
758
|
+
const { message, initialWrite } = event;
|
|
759
|
+
if (initialWrite !== undefined) {
|
|
760
|
+
initialWrites.push(yield Message.getCid(initialWrite));
|
|
761
|
+
}
|
|
762
|
+
messages.push(yield Message.getCid(message));
|
|
763
|
+
});
|
|
764
|
+
const threadSubscription = yield TestDataGenerator.generateRecordsSubscribe({
|
|
765
|
+
author: alice,
|
|
766
|
+
filter: { protocol: protocol, protocolPath: 'thread', contextId: thread.message.contextId }, // thread updates
|
|
767
|
+
});
|
|
768
|
+
const threadSubscriptionReply = yield dwn.processMessage(alice.did, threadSubscription.message, {
|
|
769
|
+
subscriptionHandler
|
|
770
|
+
});
|
|
771
|
+
expect(threadSubscriptionReply.status.code).to.equal(200);
|
|
772
|
+
expect(threadSubscriptionReply.subscription).to.exist;
|
|
773
|
+
const participantSubscription = yield TestDataGenerator.generateRecordsSubscribe({
|
|
774
|
+
author: alice,
|
|
775
|
+
filter: { protocol: protocol, protocolPath: 'thread/participant', contextId: thread.message.contextId }, // participant updates
|
|
776
|
+
});
|
|
777
|
+
const participantSubscriptionReply = yield dwn.processMessage(alice.did, participantSubscription.message, {
|
|
778
|
+
subscriptionHandler
|
|
779
|
+
});
|
|
780
|
+
expect(participantSubscriptionReply.status.code).to.equal(200);
|
|
781
|
+
expect(participantSubscriptionReply.subscription).to.exist;
|
|
782
|
+
const chatSubscription = yield TestDataGenerator.generateRecordsSubscribe({
|
|
783
|
+
author: alice,
|
|
784
|
+
filter: { protocol: protocol, protocolPath: 'thread/chat', contextId: thread.message.contextId } // chat updates
|
|
785
|
+
});
|
|
786
|
+
const chatSubscriptionReply = yield dwn.processMessage(alice.did, chatSubscription.message, {
|
|
787
|
+
subscriptionHandler
|
|
788
|
+
});
|
|
789
|
+
expect(chatSubscriptionReply.status.code).to.equal(200);
|
|
790
|
+
expect(chatSubscriptionReply.subscription).to.exist;
|
|
791
|
+
// add bob as participant
|
|
792
|
+
const bobParticipant = yield TestDataGenerator.generateRecordsWrite({
|
|
793
|
+
author: alice,
|
|
794
|
+
recipient: bob.did,
|
|
795
|
+
parentContextId: thread.message.contextId,
|
|
796
|
+
protocol: protocol,
|
|
797
|
+
protocolPath: 'thread/participant'
|
|
798
|
+
});
|
|
799
|
+
const bobParticipantReply = yield dwn.processMessage(alice.did, bobParticipant.message, { dataStream: bobParticipant.dataStream });
|
|
800
|
+
expect(bobParticipantReply.status.code).to.equal(202);
|
|
801
|
+
// add carol as participant
|
|
802
|
+
const carolParticipant = yield TestDataGenerator.generateRecordsWrite({
|
|
803
|
+
author: alice,
|
|
804
|
+
recipient: carol.did,
|
|
805
|
+
parentContextId: thread.message.contextId,
|
|
806
|
+
protocol: protocol,
|
|
807
|
+
protocolPath: 'thread/participant'
|
|
808
|
+
});
|
|
809
|
+
const carolParticipantReply = yield dwn.processMessage(alice.did, carolParticipant.message, { dataStream: carolParticipant.dataStream });
|
|
810
|
+
expect(carolParticipantReply.status.code).to.equal(202);
|
|
811
|
+
// add another thread as a control, will not show up in handled message events
|
|
812
|
+
const additionalThread = yield TestDataGenerator.generateRecordsWrite({
|
|
813
|
+
author: alice,
|
|
814
|
+
protocol: protocol,
|
|
815
|
+
protocolPath: 'thread'
|
|
816
|
+
});
|
|
817
|
+
const additionalThreadReply = yield dwn.processMessage(alice.did, additionalThread.message, { dataStream: additionalThread.dataStream });
|
|
818
|
+
expect(additionalThreadReply.status.code).to.equal(202);
|
|
819
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
820
|
+
expect(messages.length).to.equal(2);
|
|
821
|
+
expect(messages).to.have.members([
|
|
822
|
+
yield Message.getCid(bobParticipant.message),
|
|
823
|
+
yield Message.getCid(carolParticipant.message),
|
|
824
|
+
]);
|
|
825
|
+
}));
|
|
826
|
+
// add a message to protocol1
|
|
827
|
+
const message1 = yield TestDataGenerator.generateRecordsWrite({
|
|
828
|
+
author: bob,
|
|
829
|
+
recipient: alice.did,
|
|
830
|
+
parentContextId: thread.message.contextId,
|
|
831
|
+
protocol: protocol,
|
|
832
|
+
protocolPath: 'thread/chat',
|
|
833
|
+
protocolRole: 'thread/participant',
|
|
834
|
+
});
|
|
835
|
+
const message1Reply = yield dwn.processMessage(alice.did, message1.message, { dataStream: message1.dataStream });
|
|
836
|
+
expect(message1Reply.status.code).to.equal(202);
|
|
837
|
+
const message2 = yield TestDataGenerator.generateRecordsWrite({
|
|
838
|
+
author: bob,
|
|
839
|
+
recipient: alice.did,
|
|
840
|
+
parentContextId: thread.message.contextId,
|
|
841
|
+
protocol: protocol,
|
|
842
|
+
protocolPath: 'thread/chat',
|
|
843
|
+
protocolRole: 'thread/participant',
|
|
844
|
+
});
|
|
845
|
+
const message2Reply = yield dwn.processMessage(alice.did, message2.message, { dataStream: message2.dataStream });
|
|
846
|
+
expect(message2Reply.status.code).to.equal(202);
|
|
847
|
+
const message3 = yield TestDataGenerator.generateRecordsWrite({
|
|
848
|
+
author: carol,
|
|
849
|
+
recipient: alice.did,
|
|
850
|
+
parentContextId: thread.message.contextId,
|
|
851
|
+
protocol: protocol,
|
|
852
|
+
protocolPath: 'thread/chat',
|
|
853
|
+
protocolRole: 'thread/participant',
|
|
854
|
+
});
|
|
855
|
+
const message3Reply = yield dwn.processMessage(alice.did, message3.message, { dataStream: message3.dataStream });
|
|
856
|
+
expect(message3Reply.status.code).to.equal(202);
|
|
857
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
858
|
+
expect(messages.length).to.equal(5);
|
|
859
|
+
expect(messages).to.include.members([
|
|
860
|
+
yield Message.getCid(message1.message),
|
|
861
|
+
yield Message.getCid(message2.message),
|
|
862
|
+
yield Message.getCid(message3.message),
|
|
863
|
+
]);
|
|
864
|
+
}));
|
|
865
|
+
// delete carol participant
|
|
866
|
+
const deleteCarol = yield TestDataGenerator.generateRecordsDelete({
|
|
867
|
+
author: alice,
|
|
868
|
+
recordId: carolParticipant.message.recordId
|
|
869
|
+
});
|
|
870
|
+
const deleteCarolReply = yield dwn.processMessage(alice.did, deleteCarol.message);
|
|
871
|
+
expect(deleteCarolReply.status.code).to.equal(202);
|
|
872
|
+
yield Poller.pollUntilSuccessOrTimeout(() => __awaiter(this, void 0, void 0, function* () {
|
|
873
|
+
expect(messages.length).to.equal(6);
|
|
874
|
+
expect(messages).to.include.members([
|
|
875
|
+
yield Message.getCid(deleteCarol.message)
|
|
876
|
+
]);
|
|
877
|
+
// check the initial write was included with the delete
|
|
878
|
+
expect(initialWrites).to.include.members([
|
|
879
|
+
yield Message.getCid(carolParticipant.message)
|
|
880
|
+
]);
|
|
881
|
+
}));
|
|
882
|
+
}));
|
|
883
|
+
});
|
|
884
|
+
});
|
|
885
|
+
}
|
|
886
|
+
//# sourceMappingURL=subscriptions.spec.js.map
|