@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,670 @@
|
|
|
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 { DataStream } from '../../src/index.js';
|
|
11
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
12
|
+
import sinon from 'sinon';
|
|
13
|
+
import chai, { expect } from 'chai';
|
|
14
|
+
import { Dwn } from '../../src/dwn.js';
|
|
15
|
+
import { Jws } from '../../src/utils/jws.js';
|
|
16
|
+
import { ProtocolsConfigure } from '../../src/interfaces/protocols-configure.js';
|
|
17
|
+
import { RecordsQuery } from '../../src/interfaces/records-query.js';
|
|
18
|
+
import { RecordsWrite } from '../../src/interfaces/records-write.js';
|
|
19
|
+
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
20
|
+
import { TestEventStream } from '../test-event-stream.js';
|
|
21
|
+
import { TestStores } from '../test-stores.js';
|
|
22
|
+
import { DidKey, UniversalResolver } from '@enbox/dids';
|
|
23
|
+
chai.use(chaiAsPromised);
|
|
24
|
+
// This is a test suite that demonstrates how to use the DWN to create aggregators
|
|
25
|
+
// Aggregators allows multiple authors to write records to the aggregator's DID based on a role
|
|
26
|
+
//
|
|
27
|
+
// NOTE: This will be more evident when we introduce `signWithRole`.
|
|
28
|
+
// This would allow writing to your local DWN without any role field, but when writing to an aggregator, you could conform to their own roles.
|
|
29
|
+
describe('Aggregator Model', () => {
|
|
30
|
+
let didResolver;
|
|
31
|
+
let messageStore;
|
|
32
|
+
let dataStore;
|
|
33
|
+
let resumableTaskStore;
|
|
34
|
+
let eventLog;
|
|
35
|
+
let eventStream;
|
|
36
|
+
let dwn;
|
|
37
|
+
const protocol = 'https://example.org/notes';
|
|
38
|
+
// A simple protocol for the user that only allows them to write or read their own notes
|
|
39
|
+
const userProtocolDefinition = {
|
|
40
|
+
protocol,
|
|
41
|
+
published: true,
|
|
42
|
+
types: {
|
|
43
|
+
note: {
|
|
44
|
+
schema: 'https://example.org/note',
|
|
45
|
+
dataFormats: ['text/plain', 'application/json'],
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
structure: {
|
|
49
|
+
note: {}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
// A simple protocol that allows members of an aggregator to write notes to the aggregator
|
|
53
|
+
// Anyone can query or read public notes, the rest of the notes are enforced by `recipient/author` rules.
|
|
54
|
+
const aggregatorProtocolDefinition = {
|
|
55
|
+
protocol,
|
|
56
|
+
published: true,
|
|
57
|
+
types: {
|
|
58
|
+
note: {
|
|
59
|
+
schema: 'https://example.org/note',
|
|
60
|
+
dataFormats: ['text/plain', 'application/json'],
|
|
61
|
+
},
|
|
62
|
+
member: {
|
|
63
|
+
schema: 'https://example.org/member',
|
|
64
|
+
dataFormats: ['application/json'],
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
structure: {
|
|
68
|
+
member: {
|
|
69
|
+
$role: true,
|
|
70
|
+
},
|
|
71
|
+
note: {
|
|
72
|
+
$actions: [{
|
|
73
|
+
role: 'member',
|
|
74
|
+
can: ['create', 'update', 'delete']
|
|
75
|
+
}]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
// important to follow the `before` and `after` pattern to initialize and clean the stores in tests
|
|
80
|
+
// so that different test suites can reuse the same backend store for testing
|
|
81
|
+
before(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
+
didResolver = new UniversalResolver({ didResolvers: [DidKey] });
|
|
83
|
+
const stores = TestStores.get();
|
|
84
|
+
messageStore = stores.messageStore;
|
|
85
|
+
dataStore = stores.dataStore;
|
|
86
|
+
resumableTaskStore = stores.resumableTaskStore;
|
|
87
|
+
eventLog = stores.eventLog;
|
|
88
|
+
eventStream = TestEventStream.get();
|
|
89
|
+
dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog, eventStream, resumableTaskStore });
|
|
90
|
+
}));
|
|
91
|
+
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
+
sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
|
|
93
|
+
// clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
94
|
+
yield messageStore.clear();
|
|
95
|
+
yield dataStore.clear();
|
|
96
|
+
yield resumableTaskStore.clear();
|
|
97
|
+
yield eventLog.clear();
|
|
98
|
+
}));
|
|
99
|
+
after(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
+
yield dwn.close();
|
|
101
|
+
}));
|
|
102
|
+
it('should support querying from multiple authors', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
103
|
+
// scenario: Alice, Bob, Carol are members of an aggregator.
|
|
104
|
+
// Alice writes a note to Carol, Bob writes a note to Alice, Carol writes a note to Bob.
|
|
105
|
+
// Daniel is not a member of the aggregator and tries to unsuccessfully write a note to Alice.
|
|
106
|
+
// Daniel can query public notes from multiple authors in a single query.
|
|
107
|
+
// Alice and Bob create private notes with Carol as the recipient.
|
|
108
|
+
// Bob creates a private note to Alice.
|
|
109
|
+
// Daniel does not see the private notes in his query.
|
|
110
|
+
// Carol can see all notes from Alice and Bob in her query, including the private notes intended for her.
|
|
111
|
+
// Alice can see all notes from Bob and Carol in her query, including the private notes intended for her.
|
|
112
|
+
var _a, _b, _c, _d;
|
|
113
|
+
// create aggregator DID and install aggregator note protocol
|
|
114
|
+
const aggregator = yield TestDataGenerator.generateDidKeyPersona();
|
|
115
|
+
const aggregatorProtocolConfigure = yield ProtocolsConfigure.create({
|
|
116
|
+
signer: Jws.createSigner(aggregator),
|
|
117
|
+
definition: aggregatorProtocolDefinition,
|
|
118
|
+
});
|
|
119
|
+
const aggregatorProtocolReply = yield dwn.processMessage(aggregator.did, aggregatorProtocolConfigure.message);
|
|
120
|
+
expect(aggregatorProtocolReply.status.code).to.equal(202, 'aggregator configure');
|
|
121
|
+
// create 4 users and install user note protocol
|
|
122
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
123
|
+
const aliceProtocolConfigure = yield ProtocolsConfigure.create({
|
|
124
|
+
signer: Jws.createSigner(alice),
|
|
125
|
+
definition: userProtocolDefinition,
|
|
126
|
+
});
|
|
127
|
+
const aliceProtocolReply = yield dwn.processMessage(alice.did, aliceProtocolConfigure.message);
|
|
128
|
+
expect(aliceProtocolReply.status.code).to.equal(202, 'alice configure');
|
|
129
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
130
|
+
const bobProtocolConfigure = yield ProtocolsConfigure.create({
|
|
131
|
+
signer: Jws.createSigner(bob),
|
|
132
|
+
definition: userProtocolDefinition,
|
|
133
|
+
});
|
|
134
|
+
const bobProtocolReply = yield dwn.processMessage(bob.did, bobProtocolConfigure.message);
|
|
135
|
+
expect(bobProtocolReply.status.code).to.equal(202, 'bob configure');
|
|
136
|
+
const carol = yield TestDataGenerator.generateDidKeyPersona();
|
|
137
|
+
const carolProtocolConfigure = yield ProtocolsConfigure.create({
|
|
138
|
+
signer: Jws.createSigner(carol),
|
|
139
|
+
definition: userProtocolDefinition,
|
|
140
|
+
});
|
|
141
|
+
const carolProtocolReply = yield dwn.processMessage(carol.did, carolProtocolConfigure.message);
|
|
142
|
+
expect(carolProtocolReply.status.code).to.equal(202, 'carol configure');
|
|
143
|
+
const daniel = yield TestDataGenerator.generateDidKeyPersona();
|
|
144
|
+
const danielProtocolConfigure = yield ProtocolsConfigure.create({
|
|
145
|
+
signer: Jws.createSigner(daniel),
|
|
146
|
+
definition: userProtocolDefinition,
|
|
147
|
+
});
|
|
148
|
+
const danielProtocolReply = yield dwn.processMessage(daniel.did, danielProtocolConfigure.message);
|
|
149
|
+
expect(danielProtocolReply.status.code).to.equal(202, 'daniel configure');
|
|
150
|
+
// The aggregator creates member records for alice, bob and carol
|
|
151
|
+
const aliceMemberData = TestDataGenerator.randomBytes(256);
|
|
152
|
+
const aliceMember = yield RecordsWrite.create({
|
|
153
|
+
signer: Jws.createSigner(aggregator),
|
|
154
|
+
recipient: alice.did,
|
|
155
|
+
protocol: userProtocolDefinition.protocol,
|
|
156
|
+
protocolPath: 'member',
|
|
157
|
+
schema: 'https://example.org/member',
|
|
158
|
+
dataFormat: 'application/json',
|
|
159
|
+
data: aliceMemberData,
|
|
160
|
+
});
|
|
161
|
+
const aliceMemberReply = yield dwn.processMessage(aggregator.did, aliceMember.message, { dataStream: DataStream.fromBytes(aliceMemberData) });
|
|
162
|
+
expect(aliceMemberReply.status.code).to.equal(202, 'alice member ' + aliceMemberReply.status.detail);
|
|
163
|
+
const bobMemberData = TestDataGenerator.randomBytes(256);
|
|
164
|
+
const bobMember = yield RecordsWrite.create({
|
|
165
|
+
signer: Jws.createSigner(aggregator),
|
|
166
|
+
recipient: bob.did,
|
|
167
|
+
protocol: userProtocolDefinition.protocol,
|
|
168
|
+
protocolPath: 'member',
|
|
169
|
+
schema: 'https://example.org/member',
|
|
170
|
+
dataFormat: 'application/json',
|
|
171
|
+
data: bobMemberData,
|
|
172
|
+
});
|
|
173
|
+
const bobMemberReply = yield dwn.processMessage(aggregator.did, bobMember.message, { dataStream: DataStream.fromBytes(bobMemberData) });
|
|
174
|
+
expect(bobMemberReply.status.code).to.equal(202, 'bob member');
|
|
175
|
+
const carolMemberData = TestDataGenerator.randomBytes(256);
|
|
176
|
+
const carolMember = yield RecordsWrite.create({
|
|
177
|
+
signer: Jws.createSigner(aggregator),
|
|
178
|
+
recipient: carol.did,
|
|
179
|
+
protocol: userProtocolDefinition.protocol,
|
|
180
|
+
protocolPath: 'member',
|
|
181
|
+
schema: 'https://example.org/member',
|
|
182
|
+
dataFormat: 'application/json',
|
|
183
|
+
data: carolMemberData,
|
|
184
|
+
});
|
|
185
|
+
const carolMemberReply = yield dwn.processMessage(aggregator.did, carolMember.message, { dataStream: DataStream.fromBytes(carolMemberData) });
|
|
186
|
+
expect(carolMemberReply.status.code).to.equal(202, 'carol member');
|
|
187
|
+
// alice writes a public note to carol and posts it in the aggregator
|
|
188
|
+
const aliceNoteData = TestDataGenerator.randomBytes(256);
|
|
189
|
+
const aliceNoteToCarol = yield RecordsWrite.create({
|
|
190
|
+
signer: Jws.createSigner(alice),
|
|
191
|
+
recipient: carol.did,
|
|
192
|
+
published: true,
|
|
193
|
+
protocol: userProtocolDefinition.protocol,
|
|
194
|
+
protocolPath: 'note',
|
|
195
|
+
dataFormat: 'application/json',
|
|
196
|
+
schema: 'https://example.org/note',
|
|
197
|
+
data: aliceNoteData,
|
|
198
|
+
protocolRole: 'member'
|
|
199
|
+
});
|
|
200
|
+
// Alice writes it to her own DWN and the aggregator
|
|
201
|
+
const aliceLocalDWN = yield dwn.processMessage(alice.did, aliceNoteToCarol.message, { dataStream: DataStream.fromBytes(aliceNoteData) });
|
|
202
|
+
expect(aliceLocalDWN.status.code).to.equal(202, 'alice note');
|
|
203
|
+
const aliceAggregatorDWN = yield dwn.processMessage(aggregator.did, aliceNoteToCarol.message, {
|
|
204
|
+
dataStream: DataStream.fromBytes(aliceNoteData)
|
|
205
|
+
});
|
|
206
|
+
expect(aliceAggregatorDWN.status.code).to.equal(202, 'alice note aggregator');
|
|
207
|
+
// bob writes a public note to alice and posts it in the aggregator
|
|
208
|
+
const bobNoteToAliceData = TestDataGenerator.randomBytes(256);
|
|
209
|
+
const bobNoteToAlice = yield RecordsWrite.create({
|
|
210
|
+
signer: Jws.createSigner(bob),
|
|
211
|
+
recipient: alice.did,
|
|
212
|
+
published: true,
|
|
213
|
+
protocol: userProtocolDefinition.protocol,
|
|
214
|
+
protocolPath: 'note',
|
|
215
|
+
dataFormat: 'application/json',
|
|
216
|
+
schema: 'https://example.org/note',
|
|
217
|
+
data: bobNoteToAliceData,
|
|
218
|
+
protocolRole: 'member'
|
|
219
|
+
});
|
|
220
|
+
// Bob writes it to his own DWN and the aggregator
|
|
221
|
+
const bobLocalDWN = yield dwn.processMessage(bob.did, bobNoteToAlice.message, { dataStream: DataStream.fromBytes(bobNoteToAliceData) });
|
|
222
|
+
expect(bobLocalDWN.status.code).to.equal(202, 'bob note');
|
|
223
|
+
const bobAggregatorDWN = yield dwn.processMessage(aggregator.did, bobNoteToAlice.message, {
|
|
224
|
+
dataStream: DataStream.fromBytes(bobNoteToAliceData)
|
|
225
|
+
});
|
|
226
|
+
expect(bobAggregatorDWN.status.code).to.equal(202, 'bob note aggregator');
|
|
227
|
+
// carol writes a public note to bob and posts it in the aggregator
|
|
228
|
+
const carolNoteToBobData = TestDataGenerator.randomBytes(256);
|
|
229
|
+
const carolNoteToBob = yield RecordsWrite.create({
|
|
230
|
+
signer: Jws.createSigner(carol),
|
|
231
|
+
recipient: bob.did,
|
|
232
|
+
published: true,
|
|
233
|
+
protocol: userProtocolDefinition.protocol,
|
|
234
|
+
protocolPath: 'note',
|
|
235
|
+
dataFormat: 'application/json',
|
|
236
|
+
schema: 'https://example.org/note',
|
|
237
|
+
data: carolNoteToBobData,
|
|
238
|
+
protocolRole: 'member'
|
|
239
|
+
});
|
|
240
|
+
// Carol writes it to her own DWN and the aggregator
|
|
241
|
+
const carolLocalDWN = yield dwn.processMessage(carol.did, carolNoteToBob.message, {
|
|
242
|
+
dataStream: DataStream.fromBytes(carolNoteToBobData)
|
|
243
|
+
});
|
|
244
|
+
expect(carolLocalDWN.status.code).to.equal(202, 'carol note');
|
|
245
|
+
const carolAggregatorDWN = yield dwn.processMessage(aggregator.did, carolNoteToBob.message, {
|
|
246
|
+
dataStream: DataStream.fromBytes(carolNoteToBobData)
|
|
247
|
+
});
|
|
248
|
+
expect(carolAggregatorDWN.status.code).to.equal(202, 'carol note aggregator');
|
|
249
|
+
// daniel writes a public note to alice and posts it in the aggregator (which will reject it as he is not a member)
|
|
250
|
+
const danielNoteToAlice = TestDataGenerator.randomBytes(256);
|
|
251
|
+
const danielNote = yield RecordsWrite.create({
|
|
252
|
+
signer: Jws.createSigner(daniel),
|
|
253
|
+
recipient: alice.did,
|
|
254
|
+
published: true,
|
|
255
|
+
protocol: userProtocolDefinition.protocol,
|
|
256
|
+
protocolPath: 'note',
|
|
257
|
+
dataFormat: 'application/json',
|
|
258
|
+
schema: 'https://example.org/note',
|
|
259
|
+
data: danielNoteToAlice,
|
|
260
|
+
protocolRole: 'member'
|
|
261
|
+
});
|
|
262
|
+
// Daniel writes it to his own DWN and the aggregator
|
|
263
|
+
const danielLocalDWN = yield dwn.processMessage(daniel.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
|
|
264
|
+
expect(danielLocalDWN.status.code).to.equal(202, 'daniel note');
|
|
265
|
+
const danielAggregatorDWN = yield dwn.processMessage(aggregator.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
|
|
266
|
+
expect(danielAggregatorDWN.status.code).to.equal(401, 'daniel note aggregator');
|
|
267
|
+
// daniel can read public notes from multiple authors in a single query
|
|
268
|
+
const danielRead = yield RecordsQuery.create({
|
|
269
|
+
signer: Jws.createSigner(daniel),
|
|
270
|
+
filter: {
|
|
271
|
+
protocol: userProtocolDefinition.protocol,
|
|
272
|
+
protocolPath: 'note',
|
|
273
|
+
author: [alice.did, bob.did],
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
const danielReadReply = yield dwn.processMessage(aggregator.did, danielRead.message);
|
|
277
|
+
expect(danielReadReply.status.code).to.equal(200, 'daniel read');
|
|
278
|
+
expect((_a = danielReadReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(2, 'daniel read records');
|
|
279
|
+
expect(danielReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note');
|
|
280
|
+
expect(danielReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note');
|
|
281
|
+
// create private notes to carol from alice and bob
|
|
282
|
+
const alicePrivateNoteToCarol = TestDataGenerator.randomBytes(256);
|
|
283
|
+
const aliceNoteToCarolPrivate = yield RecordsWrite.create({
|
|
284
|
+
signer: Jws.createSigner(alice),
|
|
285
|
+
recipient: carol.did,
|
|
286
|
+
published: false,
|
|
287
|
+
protocol: userProtocolDefinition.protocol,
|
|
288
|
+
protocolPath: 'note',
|
|
289
|
+
dataFormat: 'application/json',
|
|
290
|
+
schema: 'https://example.org/note',
|
|
291
|
+
data: alicePrivateNoteToCarol,
|
|
292
|
+
protocolRole: 'member'
|
|
293
|
+
});
|
|
294
|
+
const aliceNoteToCarolLocal = yield dwn.processMessage(alice.did, aliceNoteToCarolPrivate.message, {
|
|
295
|
+
dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
|
|
296
|
+
});
|
|
297
|
+
expect(aliceNoteToCarolLocal.status.code).to.equal(202, 'alice private note');
|
|
298
|
+
const aliceNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, aliceNoteToCarolPrivate.message, {
|
|
299
|
+
dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
|
|
300
|
+
});
|
|
301
|
+
expect(aliceNoteToCarolAggregator.status.code).to.equal(202, 'alice private note aggregator');
|
|
302
|
+
const bobPrivateNoteToCarol = TestDataGenerator.randomBytes(256);
|
|
303
|
+
const bobNoteToCarolPrivate = yield RecordsWrite.create({
|
|
304
|
+
signer: Jws.createSigner(bob),
|
|
305
|
+
recipient: carol.did,
|
|
306
|
+
published: false,
|
|
307
|
+
protocol: userProtocolDefinition.protocol,
|
|
308
|
+
protocolPath: 'note',
|
|
309
|
+
dataFormat: 'application/json',
|
|
310
|
+
schema: 'https://example.org/note',
|
|
311
|
+
data: bobPrivateNoteToCarol,
|
|
312
|
+
protocolRole: 'member'
|
|
313
|
+
});
|
|
314
|
+
const bobNoteToCarolLocal = yield dwn.processMessage(bob.did, bobNoteToCarolPrivate.message, {
|
|
315
|
+
dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
|
|
316
|
+
});
|
|
317
|
+
expect(bobNoteToCarolLocal.status.code).to.equal(202, 'bob private note');
|
|
318
|
+
const bobNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, bobNoteToCarolPrivate.message, {
|
|
319
|
+
dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
|
|
320
|
+
});
|
|
321
|
+
expect(bobNoteToCarolAggregator.status.code).to.equal(202, 'bob private note aggregator');
|
|
322
|
+
// create a private note from bob to alice
|
|
323
|
+
const bobNoteToAlicePrivateData = TestDataGenerator.randomBytes(256);
|
|
324
|
+
const bobNoteToAlicePrivate = yield RecordsWrite.create({
|
|
325
|
+
signer: Jws.createSigner(bob),
|
|
326
|
+
recipient: alice.did,
|
|
327
|
+
published: false,
|
|
328
|
+
protocol: userProtocolDefinition.protocol,
|
|
329
|
+
protocolPath: 'note',
|
|
330
|
+
dataFormat: 'application/json',
|
|
331
|
+
schema: 'https://example.org/note',
|
|
332
|
+
data: bobNoteToAlicePrivateData,
|
|
333
|
+
protocolRole: 'member'
|
|
334
|
+
});
|
|
335
|
+
const bobNoteToAliceLocal = yield dwn.processMessage(bob.did, bobNoteToAlicePrivate.message, {
|
|
336
|
+
dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
|
|
337
|
+
});
|
|
338
|
+
expect(bobNoteToAliceLocal.status.code).to.equal(202, 'alice private note to bob');
|
|
339
|
+
const bobNoteToAliceAggregator = yield dwn.processMessage(aggregator.did, bobNoteToAlicePrivate.message, {
|
|
340
|
+
dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
|
|
341
|
+
});
|
|
342
|
+
expect(bobNoteToAliceAggregator.status.code).to.equal(202, 'alice private note to bob aggregator');
|
|
343
|
+
// confirm daniel can still only read the public notes
|
|
344
|
+
const danielRead2 = yield RecordsQuery.create({
|
|
345
|
+
signer: Jws.createSigner(daniel),
|
|
346
|
+
filter: {
|
|
347
|
+
protocol: userProtocolDefinition.protocol,
|
|
348
|
+
protocolPath: 'note',
|
|
349
|
+
author: [alice.did, bob.did],
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
const danielReadReply2 = yield dwn.processMessage(aggregator.did, danielRead2.message);
|
|
353
|
+
expect(danielReadReply2.status.code).to.equal(200, 'daniel read 2');
|
|
354
|
+
expect((_b = danielReadReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(2, 'daniel read records 2');
|
|
355
|
+
expect(danielReadReply2.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note 2');
|
|
356
|
+
expect(danielReadReply2.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note 2');
|
|
357
|
+
// carol queries for notes from alice and bob and gets the public notes and private notes destined for her
|
|
358
|
+
// carol does not see the private note from alice to bob
|
|
359
|
+
const carolRead = yield RecordsQuery.create({
|
|
360
|
+
signer: Jws.createSigner(carol),
|
|
361
|
+
filter: {
|
|
362
|
+
protocol: userProtocolDefinition.protocol,
|
|
363
|
+
protocolPath: 'note',
|
|
364
|
+
author: [alice.did, bob.did],
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
const carolReadReply = yield dwn.processMessage(aggregator.did, carolRead.message);
|
|
368
|
+
expect(carolReadReply.status.code).to.equal(200, 'carol read');
|
|
369
|
+
expect((_c = carolReadReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(4, 'carol read records');
|
|
370
|
+
expect(carolReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'carol read alice note');
|
|
371
|
+
expect(carolReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'carol read bob note');
|
|
372
|
+
expect(carolReadReply.entries[2].recordId).to.equal(aliceNoteToCarolPrivate.message.recordId, 'carol read alice private note');
|
|
373
|
+
expect(carolReadReply.entries[3].recordId).to.equal(bobNoteToCarolPrivate.message.recordId, 'carol read bob private note');
|
|
374
|
+
// alice queries for notes from bob and carol and gets the public notes and private notes destined for her
|
|
375
|
+
const aliceRead = yield RecordsQuery.create({
|
|
376
|
+
signer: Jws.createSigner(alice),
|
|
377
|
+
filter: {
|
|
378
|
+
protocol: userProtocolDefinition.protocol,
|
|
379
|
+
protocolPath: 'note',
|
|
380
|
+
author: [bob.did, carol.did],
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
const aliceReadReply = yield dwn.processMessage(aggregator.did, aliceRead.message);
|
|
384
|
+
expect(aliceReadReply.status.code).to.equal(200, 'alice read');
|
|
385
|
+
expect((_d = aliceReadReply.entries) === null || _d === void 0 ? void 0 : _d.length).to.equal(3, 'alice read records');
|
|
386
|
+
expect(aliceReadReply.entries[0].recordId).to.equal(bobNoteToAlice.message.recordId, 'alice note to carol public');
|
|
387
|
+
expect(aliceReadReply.entries[1].recordId).to.equal(carolNoteToBob.message.recordId, 'carol note to bob public');
|
|
388
|
+
expect(aliceReadReply.entries[2].recordId).to.equal(bobNoteToAlicePrivate.message.recordId, 'bob note to alice private');
|
|
389
|
+
}));
|
|
390
|
+
it('should support querying from multiple recipients', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
391
|
+
var _a, _b, _c, _d;
|
|
392
|
+
// create aggregator DID and install aggregator note protocol
|
|
393
|
+
const aggregator = yield TestDataGenerator.generateDidKeyPersona();
|
|
394
|
+
const aggregatorProtocolConfigure = yield ProtocolsConfigure.create({
|
|
395
|
+
signer: Jws.createSigner(aggregator),
|
|
396
|
+
definition: aggregatorProtocolDefinition,
|
|
397
|
+
});
|
|
398
|
+
const aggregatorProtocolReply = yield dwn.processMessage(aggregator.did, aggregatorProtocolConfigure.message);
|
|
399
|
+
expect(aggregatorProtocolReply.status.code).to.equal(202, 'aggregator configure');
|
|
400
|
+
// create 4 users and install user note protocol
|
|
401
|
+
const alice = yield TestDataGenerator.generateDidKeyPersona();
|
|
402
|
+
const aliceProtocolConfigure = yield ProtocolsConfigure.create({
|
|
403
|
+
signer: Jws.createSigner(alice),
|
|
404
|
+
definition: userProtocolDefinition,
|
|
405
|
+
});
|
|
406
|
+
const aliceProtocolReply = yield dwn.processMessage(alice.did, aliceProtocolConfigure.message);
|
|
407
|
+
expect(aliceProtocolReply.status.code).to.equal(202, 'alice configure');
|
|
408
|
+
const bob = yield TestDataGenerator.generateDidKeyPersona();
|
|
409
|
+
const bobProtocolConfigure = yield ProtocolsConfigure.create({
|
|
410
|
+
signer: Jws.createSigner(bob),
|
|
411
|
+
definition: userProtocolDefinition,
|
|
412
|
+
});
|
|
413
|
+
const bobProtocolReply = yield dwn.processMessage(bob.did, bobProtocolConfigure.message);
|
|
414
|
+
expect(bobProtocolReply.status.code).to.equal(202, 'bob configure');
|
|
415
|
+
const carol = yield TestDataGenerator.generateDidKeyPersona();
|
|
416
|
+
const carolProtocolConfigure = yield ProtocolsConfigure.create({
|
|
417
|
+
signer: Jws.createSigner(carol),
|
|
418
|
+
definition: userProtocolDefinition,
|
|
419
|
+
});
|
|
420
|
+
const carolProtocolReply = yield dwn.processMessage(carol.did, carolProtocolConfigure.message);
|
|
421
|
+
expect(carolProtocolReply.status.code).to.equal(202, 'carol configure');
|
|
422
|
+
const daniel = yield TestDataGenerator.generateDidKeyPersona();
|
|
423
|
+
const danielProtocolConfigure = yield ProtocolsConfigure.create({
|
|
424
|
+
signer: Jws.createSigner(daniel),
|
|
425
|
+
definition: userProtocolDefinition,
|
|
426
|
+
});
|
|
427
|
+
const danielProtocolReply = yield dwn.processMessage(daniel.did, danielProtocolConfigure.message);
|
|
428
|
+
expect(danielProtocolReply.status.code).to.equal(202, 'daniel configure');
|
|
429
|
+
// The aggregator creates member records for alice, bob and carol
|
|
430
|
+
const aliceMemberData = TestDataGenerator.randomBytes(256);
|
|
431
|
+
const aliceMember = yield RecordsWrite.create({
|
|
432
|
+
signer: Jws.createSigner(aggregator),
|
|
433
|
+
recipient: alice.did,
|
|
434
|
+
protocol: userProtocolDefinition.protocol,
|
|
435
|
+
protocolPath: 'member',
|
|
436
|
+
schema: 'https://example.org/member',
|
|
437
|
+
dataFormat: 'application/json',
|
|
438
|
+
data: aliceMemberData,
|
|
439
|
+
});
|
|
440
|
+
const aliceMemberReply = yield dwn.processMessage(aggregator.did, aliceMember.message, { dataStream: DataStream.fromBytes(aliceMemberData) });
|
|
441
|
+
expect(aliceMemberReply.status.code).to.equal(202, 'alice member ' + aliceMemberReply.status.detail);
|
|
442
|
+
const bobMemberData = TestDataGenerator.randomBytes(256);
|
|
443
|
+
const bobMember = yield RecordsWrite.create({
|
|
444
|
+
signer: Jws.createSigner(aggregator),
|
|
445
|
+
recipient: bob.did,
|
|
446
|
+
protocol: userProtocolDefinition.protocol,
|
|
447
|
+
protocolPath: 'member',
|
|
448
|
+
schema: 'https://example.org/member',
|
|
449
|
+
dataFormat: 'application/json',
|
|
450
|
+
data: bobMemberData,
|
|
451
|
+
});
|
|
452
|
+
const bobMemberReply = yield dwn.processMessage(aggregator.did, bobMember.message, { dataStream: DataStream.fromBytes(bobMemberData) });
|
|
453
|
+
expect(bobMemberReply.status.code).to.equal(202, 'bob member');
|
|
454
|
+
const carolMemberData = TestDataGenerator.randomBytes(256);
|
|
455
|
+
const carolMember = yield RecordsWrite.create({
|
|
456
|
+
signer: Jws.createSigner(aggregator),
|
|
457
|
+
recipient: carol.did,
|
|
458
|
+
protocol: userProtocolDefinition.protocol,
|
|
459
|
+
protocolPath: 'member',
|
|
460
|
+
schema: 'https://example.org/member',
|
|
461
|
+
dataFormat: 'application/json',
|
|
462
|
+
data: carolMemberData,
|
|
463
|
+
});
|
|
464
|
+
const carolMemberReply = yield dwn.processMessage(aggregator.did, carolMember.message, { dataStream: DataStream.fromBytes(carolMemberData) });
|
|
465
|
+
expect(carolMemberReply.status.code).to.equal(202, 'carol member');
|
|
466
|
+
// alice writes a public note to carol and posts it in the aggregator
|
|
467
|
+
const aliceNoteData = TestDataGenerator.randomBytes(256);
|
|
468
|
+
const aliceNoteToCarol = yield RecordsWrite.create({
|
|
469
|
+
signer: Jws.createSigner(alice),
|
|
470
|
+
recipient: carol.did,
|
|
471
|
+
published: true,
|
|
472
|
+
protocol: userProtocolDefinition.protocol,
|
|
473
|
+
protocolPath: 'note',
|
|
474
|
+
dataFormat: 'application/json',
|
|
475
|
+
schema: 'https://example.org/note',
|
|
476
|
+
data: aliceNoteData,
|
|
477
|
+
protocolRole: 'member'
|
|
478
|
+
});
|
|
479
|
+
// Alice writes it to her own DWN and the aggregator
|
|
480
|
+
const aliceLocalDWN = yield dwn.processMessage(alice.did, aliceNoteToCarol.message, { dataStream: DataStream.fromBytes(aliceNoteData) });
|
|
481
|
+
expect(aliceLocalDWN.status.code).to.equal(202, 'alice note');
|
|
482
|
+
const aliceAggregatorDWN = yield dwn.processMessage(aggregator.did, aliceNoteToCarol.message, {
|
|
483
|
+
dataStream: DataStream.fromBytes(aliceNoteData)
|
|
484
|
+
});
|
|
485
|
+
expect(aliceAggregatorDWN.status.code).to.equal(202, 'alice note aggregator');
|
|
486
|
+
// bob writes a public note to alice and posts it in the aggregator
|
|
487
|
+
const bobNoteToAliceData = TestDataGenerator.randomBytes(256);
|
|
488
|
+
const bobNoteToAlice = yield RecordsWrite.create({
|
|
489
|
+
signer: Jws.createSigner(bob),
|
|
490
|
+
recipient: alice.did,
|
|
491
|
+
published: true,
|
|
492
|
+
protocol: userProtocolDefinition.protocol,
|
|
493
|
+
protocolPath: 'note',
|
|
494
|
+
dataFormat: 'application/json',
|
|
495
|
+
schema: 'https://example.org/note',
|
|
496
|
+
data: bobNoteToAliceData,
|
|
497
|
+
protocolRole: 'member'
|
|
498
|
+
});
|
|
499
|
+
// Bob writes it to his own DWN and the aggregator
|
|
500
|
+
const bobLocalDWN = yield dwn.processMessage(bob.did, bobNoteToAlice.message, { dataStream: DataStream.fromBytes(bobNoteToAliceData) });
|
|
501
|
+
expect(bobLocalDWN.status.code).to.equal(202, 'bob note');
|
|
502
|
+
const bobAggregatorDWN = yield dwn.processMessage(aggregator.did, bobNoteToAlice.message, {
|
|
503
|
+
dataStream: DataStream.fromBytes(bobNoteToAliceData)
|
|
504
|
+
});
|
|
505
|
+
expect(bobAggregatorDWN.status.code).to.equal(202, 'bob note aggregator');
|
|
506
|
+
// carol writes a public note to bob and posts it in the aggregator
|
|
507
|
+
const carolNoteToBobData = TestDataGenerator.randomBytes(256);
|
|
508
|
+
const carolNoteToBob = yield RecordsWrite.create({
|
|
509
|
+
signer: Jws.createSigner(carol),
|
|
510
|
+
recipient: bob.did,
|
|
511
|
+
published: true,
|
|
512
|
+
protocol: userProtocolDefinition.protocol,
|
|
513
|
+
protocolPath: 'note',
|
|
514
|
+
dataFormat: 'application/json',
|
|
515
|
+
schema: 'https://example.org/note',
|
|
516
|
+
data: carolNoteToBobData,
|
|
517
|
+
protocolRole: 'member'
|
|
518
|
+
});
|
|
519
|
+
// Carol writes it to her own DWN and the aggregator
|
|
520
|
+
const carolLocalDWN = yield dwn.processMessage(carol.did, carolNoteToBob.message, {
|
|
521
|
+
dataStream: DataStream.fromBytes(carolNoteToBobData)
|
|
522
|
+
});
|
|
523
|
+
expect(carolLocalDWN.status.code).to.equal(202, 'carol note');
|
|
524
|
+
const carolAggregatorDWN = yield dwn.processMessage(aggregator.did, carolNoteToBob.message, {
|
|
525
|
+
dataStream: DataStream.fromBytes(carolNoteToBobData)
|
|
526
|
+
});
|
|
527
|
+
expect(carolAggregatorDWN.status.code).to.equal(202, 'carol note aggregator');
|
|
528
|
+
// daniel writes a public note to alice and posts it in the aggregator (which will reject it as he is not a member)
|
|
529
|
+
const danielNoteToAlice = TestDataGenerator.randomBytes(256);
|
|
530
|
+
const danielNote = yield RecordsWrite.create({
|
|
531
|
+
signer: Jws.createSigner(daniel),
|
|
532
|
+
recipient: alice.did,
|
|
533
|
+
published: true,
|
|
534
|
+
protocol: userProtocolDefinition.protocol,
|
|
535
|
+
protocolPath: 'note',
|
|
536
|
+
dataFormat: 'application/json',
|
|
537
|
+
schema: 'https://example.org/note',
|
|
538
|
+
data: danielNoteToAlice,
|
|
539
|
+
protocolRole: 'member'
|
|
540
|
+
});
|
|
541
|
+
// Daniel writes it to his own DWN and the aggregator
|
|
542
|
+
const danielLocalDWN = yield dwn.processMessage(daniel.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
|
|
543
|
+
expect(danielLocalDWN.status.code).to.equal(202, 'daniel note');
|
|
544
|
+
const danielAggregatorDWN = yield dwn.processMessage(aggregator.did, danielNote.message, { dataStream: DataStream.fromBytes(danielNoteToAlice) });
|
|
545
|
+
expect(danielAggregatorDWN.status.code).to.equal(401, 'daniel note aggregator');
|
|
546
|
+
// daniel can read public notes from multiple authors in a single query
|
|
547
|
+
const danielRead = yield RecordsQuery.create({
|
|
548
|
+
signer: Jws.createSigner(daniel),
|
|
549
|
+
filter: {
|
|
550
|
+
protocol: userProtocolDefinition.protocol,
|
|
551
|
+
protocolPath: 'note',
|
|
552
|
+
recipient: [alice.did, carol.did],
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
const danielReadReply = yield dwn.processMessage(aggregator.did, danielRead.message);
|
|
556
|
+
expect(danielReadReply.status.code).to.equal(200, 'daniel read');
|
|
557
|
+
expect((_a = danielReadReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(2, 'daniel read records');
|
|
558
|
+
expect(danielReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note');
|
|
559
|
+
expect(danielReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note');
|
|
560
|
+
// create private notes to carol from alice and bob
|
|
561
|
+
const alicePrivateNoteToCarol = TestDataGenerator.randomBytes(256);
|
|
562
|
+
const aliceNoteToCarolPrivate = yield RecordsWrite.create({
|
|
563
|
+
signer: Jws.createSigner(alice),
|
|
564
|
+
recipient: carol.did,
|
|
565
|
+
published: false,
|
|
566
|
+
protocol: userProtocolDefinition.protocol,
|
|
567
|
+
protocolPath: 'note',
|
|
568
|
+
dataFormat: 'application/json',
|
|
569
|
+
schema: 'https://example.org/note',
|
|
570
|
+
data: alicePrivateNoteToCarol,
|
|
571
|
+
protocolRole: 'member'
|
|
572
|
+
});
|
|
573
|
+
const aliceNoteToCarolLocal = yield dwn.processMessage(alice.did, aliceNoteToCarolPrivate.message, {
|
|
574
|
+
dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
|
|
575
|
+
});
|
|
576
|
+
expect(aliceNoteToCarolLocal.status.code).to.equal(202, 'alice private note');
|
|
577
|
+
const aliceNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, aliceNoteToCarolPrivate.message, {
|
|
578
|
+
dataStream: DataStream.fromBytes(alicePrivateNoteToCarol)
|
|
579
|
+
});
|
|
580
|
+
expect(aliceNoteToCarolAggregator.status.code).to.equal(202, 'alice private note aggregator');
|
|
581
|
+
const bobPrivateNoteToCarol = TestDataGenerator.randomBytes(256);
|
|
582
|
+
const bobNoteToCarolPrivate = yield RecordsWrite.create({
|
|
583
|
+
signer: Jws.createSigner(bob),
|
|
584
|
+
recipient: carol.did,
|
|
585
|
+
published: false,
|
|
586
|
+
protocol: userProtocolDefinition.protocol,
|
|
587
|
+
protocolPath: 'note',
|
|
588
|
+
dataFormat: 'application/json',
|
|
589
|
+
schema: 'https://example.org/note',
|
|
590
|
+
data: bobPrivateNoteToCarol,
|
|
591
|
+
protocolRole: 'member'
|
|
592
|
+
});
|
|
593
|
+
const bobNoteToCarolLocal = yield dwn.processMessage(bob.did, bobNoteToCarolPrivate.message, {
|
|
594
|
+
dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
|
|
595
|
+
});
|
|
596
|
+
expect(bobNoteToCarolLocal.status.code).to.equal(202, 'bob private note');
|
|
597
|
+
const bobNoteToCarolAggregator = yield dwn.processMessage(aggregator.did, bobNoteToCarolPrivate.message, {
|
|
598
|
+
dataStream: DataStream.fromBytes(bobPrivateNoteToCarol)
|
|
599
|
+
});
|
|
600
|
+
expect(bobNoteToCarolAggregator.status.code).to.equal(202, 'bob private note aggregator');
|
|
601
|
+
// create a private note from bob to alice
|
|
602
|
+
const bobNoteToAlicePrivateData = TestDataGenerator.randomBytes(256);
|
|
603
|
+
const bobNoteToAlicePrivate = yield RecordsWrite.create({
|
|
604
|
+
signer: Jws.createSigner(bob),
|
|
605
|
+
recipient: alice.did,
|
|
606
|
+
published: false,
|
|
607
|
+
protocol: userProtocolDefinition.protocol,
|
|
608
|
+
protocolPath: 'note',
|
|
609
|
+
dataFormat: 'application/json',
|
|
610
|
+
schema: 'https://example.org/note',
|
|
611
|
+
data: bobNoteToAlicePrivateData,
|
|
612
|
+
protocolRole: 'member'
|
|
613
|
+
});
|
|
614
|
+
const bobNoteToAliceLocal = yield dwn.processMessage(bob.did, bobNoteToAlicePrivate.message, {
|
|
615
|
+
dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
|
|
616
|
+
});
|
|
617
|
+
expect(bobNoteToAliceLocal.status.code).to.equal(202, 'alice private note to bob');
|
|
618
|
+
const bobNoteToAliceAggregator = yield dwn.processMessage(aggregator.did, bobNoteToAlicePrivate.message, {
|
|
619
|
+
dataStream: DataStream.fromBytes(bobNoteToAlicePrivateData)
|
|
620
|
+
});
|
|
621
|
+
expect(bobNoteToAliceAggregator.status.code).to.equal(202, 'alice private note to bob aggregator');
|
|
622
|
+
// confirm daniel can still only read the public notes
|
|
623
|
+
const danielRead2 = yield RecordsQuery.create({
|
|
624
|
+
signer: Jws.createSigner(daniel),
|
|
625
|
+
filter: {
|
|
626
|
+
protocol: userProtocolDefinition.protocol,
|
|
627
|
+
protocolPath: 'note',
|
|
628
|
+
recipient: [alice.did, carol.did],
|
|
629
|
+
}
|
|
630
|
+
});
|
|
631
|
+
const danielReadReply2 = yield dwn.processMessage(aggregator.did, danielRead2.message);
|
|
632
|
+
expect(danielReadReply2.status.code).to.equal(200, 'daniel read 2');
|
|
633
|
+
expect((_b = danielReadReply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(2, 'daniel read records 2');
|
|
634
|
+
expect(danielReadReply2.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'daniel read alice note 2');
|
|
635
|
+
expect(danielReadReply2.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'daniel read bob note 2');
|
|
636
|
+
// carol queries for notes from alice and bob and gets the public notes and private notes destined for her
|
|
637
|
+
// carol does not see the private note from alice to bob
|
|
638
|
+
const carolRead = yield RecordsQuery.create({
|
|
639
|
+
signer: Jws.createSigner(carol),
|
|
640
|
+
filter: {
|
|
641
|
+
protocol: userProtocolDefinition.protocol,
|
|
642
|
+
protocolPath: 'note',
|
|
643
|
+
recipient: [alice.did, carol.did],
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
const carolReadReply = yield dwn.processMessage(aggregator.did, carolRead.message);
|
|
647
|
+
expect(carolReadReply.status.code).to.equal(200, 'carol read');
|
|
648
|
+
expect((_c = carolReadReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(4, 'carol read records');
|
|
649
|
+
expect(carolReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'carol read alice note');
|
|
650
|
+
expect(carolReadReply.entries[1].recordId).to.equal(bobNoteToAlice.message.recordId, 'carol read bob note');
|
|
651
|
+
expect(carolReadReply.entries[2].recordId).to.equal(aliceNoteToCarolPrivate.message.recordId, 'carol read alice private note');
|
|
652
|
+
expect(carolReadReply.entries[3].recordId).to.equal(bobNoteToCarolPrivate.message.recordId, 'carol read bob private note');
|
|
653
|
+
// alice queries for notes from bob and carol and gets the public notes and private notes destined for her
|
|
654
|
+
const aliceRead = yield RecordsQuery.create({
|
|
655
|
+
signer: Jws.createSigner(alice),
|
|
656
|
+
filter: {
|
|
657
|
+
protocol: userProtocolDefinition.protocol,
|
|
658
|
+
protocolPath: 'note',
|
|
659
|
+
recipient: [carol.did, bob.did],
|
|
660
|
+
}
|
|
661
|
+
});
|
|
662
|
+
const aliceReadReply = yield dwn.processMessage(aggregator.did, aliceRead.message);
|
|
663
|
+
expect(aliceReadReply.status.code).to.equal(200, 'alice read');
|
|
664
|
+
expect((_d = aliceReadReply.entries) === null || _d === void 0 ? void 0 : _d.length).to.equal(3, 'alice read records');
|
|
665
|
+
expect(aliceReadReply.entries[0].recordId).to.equal(aliceNoteToCarol.message.recordId, 'alice note to carol public');
|
|
666
|
+
expect(aliceReadReply.entries[1].recordId).to.equal(carolNoteToBob.message.recordId, 'carol note to bob public');
|
|
667
|
+
expect(aliceReadReply.entries[2].recordId).to.equal(aliceNoteToCarolPrivate.message.recordId, 'alice to carol private');
|
|
668
|
+
}));
|
|
669
|
+
});
|
|
670
|
+
//# sourceMappingURL=aggregator.spec.js.map
|