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