@enbox/dwn-sdk-js 0.0.5 → 0.0.7
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 +1 -2
- 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/dwn-constant.js +7 -7
- package/dist/esm/src/core/dwn-constant.js.map +1 -1
- package/dist/esm/src/core/dwn-error.js +1 -0
- package/dist/esm/src/core/dwn-error.js.map +1 -1
- package/dist/esm/src/core/grant-authorization.js +37 -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 +254 -0
- package/dist/esm/src/core/protocol-authorization-validation.js.map +1 -0
- package/dist/esm/src/core/protocol-authorization.js +122 -740
- 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 +55 -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 +69 -86
- package/dist/esm/src/dwn.js.map +1 -1
- package/dist/esm/src/event-stream/event-emitter-stream.js +17 -31
- package/dist/esm/src/event-stream/event-emitter-stream.js.map +1 -1
- package/dist/esm/src/handlers/messages-read.js +67 -77
- package/dist/esm/src/handlers/messages-read.js.map +1 -1
- package/dist/esm/src/handlers/messages-subscribe.js +51 -61
- package/dist/esm/src/handlers/messages-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/messages-sync.js +75 -85
- package/dist/esm/src/handlers/messages-sync.js.map +1 -1
- package/dist/esm/src/handlers/protocols-configure.js +135 -155
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -1
- package/dist/esm/src/handlers/protocols-query.js +52 -51
- package/dist/esm/src/handlers/protocols-query.js.map +1 -1
- package/dist/esm/src/handlers/records-count.js +96 -82
- package/dist/esm/src/handlers/records-count.js.map +1 -1
- package/dist/esm/src/handlers/records-delete.js +78 -88
- package/dist/esm/src/handlers/records-delete.js.map +1 -1
- package/dist/esm/src/handlers/records-query.js +116 -101
- package/dist/esm/src/handlers/records-query.js.map +1 -1
- package/dist/esm/src/handlers/records-read.js +124 -131
- package/dist/esm/src/handlers/records-read.js.map +1 -1
- package/dist/esm/src/handlers/records-subscribe.js +150 -103
- package/dist/esm/src/handlers/records-subscribe.js.map +1 -1
- package/dist/esm/src/handlers/records-write.js +250 -259
- package/dist/esm/src/handlers/records-write.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 +27 -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 +63 -63
- 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 +52 -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 +92 -0
- package/dist/esm/src/interfaces/records-write-signing.js.map +1 -0
- package/dist/esm/src/interfaces/records-write.js +407 -602
- 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 +44 -15
- package/dist/esm/src/protocols/permission-grant.js.map +1 -1
- package/dist/esm/src/protocols/permission-request.js +29 -15
- package/dist/esm/src/protocols/permission-request.js.map +1 -1
- package/dist/esm/src/protocols/permissions.js +216 -226
- 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 +115 -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 +59 -99
- 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 +295 -713
- 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 +129 -144
- package/dist/esm/src/store/storage-controller.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 -63
- 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 +9 -3
- 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 +108 -140
- 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 +9 -18
- package/dist/esm/tests/core/protocol-authorization.spec.js.map +1 -1
- package/dist/esm/tests/dwn.spec.js +45 -58
- package/dist/esm/tests/dwn.spec.js.map +1 -1
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js +24 -33
- package/dist/esm/tests/event-stream/event-emitter-stream.spec.js.map +1 -1
- package/dist/esm/tests/event-stream/event-stream.spec.js +46 -55
- package/dist/esm/tests/event-stream/event-stream.spec.js.map +1 -1
- package/dist/esm/tests/features/author-delegated-grant.spec.js +326 -343
- package/dist/esm/tests/features/author-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-delegated-grant.spec.js +153 -169
- package/dist/esm/tests/features/owner-delegated-grant.spec.js.map +1 -1
- package/dist/esm/tests/features/owner-signature.spec.js +67 -78
- package/dist/esm/tests/features/owner-signature.spec.js.map +1 -1
- package/dist/esm/tests/features/permissions.spec.js +446 -181
- package/dist/esm/tests/features/permissions.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-composition.spec.js +346 -356
- package/dist/esm/tests/features/protocol-composition.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-create-action.spec.js +42 -51
- package/dist/esm/tests/features/protocol-create-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-delete-action.spec.js +94 -103
- package/dist/esm/tests/features/protocol-delete-action.spec.js.map +1 -1
- package/dist/esm/tests/features/protocol-update-action.spec.js +105 -114
- package/dist/esm/tests/features/protocol-update-action.spec.js.map +1 -1
- package/dist/esm/tests/features/records-prune.spec.js +175 -191
- package/dist/esm/tests/features/records-prune.spec.js.map +1 -1
- package/dist/esm/tests/features/records-tags.spec.js +441 -460
- package/dist/esm/tests/features/records-tags.spec.js.map +1 -1
- package/dist/esm/tests/features/resumable-tasks.spec.js +82 -91
- package/dist/esm/tests/features/resumable-tasks.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-read.spec.js +206 -207
- package/dist/esm/tests/handlers/messages-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-subscribe.spec.js +145 -154
- package/dist/esm/tests/handlers/messages-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/messages-sync.spec.js +174 -183
- package/dist/esm/tests/handlers/messages-sync.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-configure.spec.js +244 -238
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -1
- package/dist/esm/tests/handlers/protocols-query.spec.js +156 -169
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-count.spec.js +93 -102
- package/dist/esm/tests/handlers/records-count.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-delete.spec.js +252 -264
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-query.spec.js +917 -988
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-read.spec.js +553 -568
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-subscribe.spec.js +269 -278
- package/dist/esm/tests/handlers/records-subscribe.spec.js.map +1 -1
- package/dist/esm/tests/handlers/records-write.spec.js +1057 -1082
- 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 +152 -165
- 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 +124 -135
- package/dist/esm/tests/scenarios/aggregator.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/deleted-record.spec.js +23 -32
- package/dist/esm/tests/scenarios/deleted-record.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +52 -61
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/nested-roles.spec.js +63 -73
- package/dist/esm/tests/scenarios/nested-roles.spec.js.map +1 -1
- package/dist/esm/tests/scenarios/subscriptions.spec.js +377 -333
- 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 +86 -95
- 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 +3 -3
- 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 +2 -11
- 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 +291 -44
- 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 +6 -15
- 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 +10 -19
- 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 +414 -468
- 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 +7 -16
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.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 +60 -0
- package/dist/types/src/core/protocol-authorization-validation.d.ts.map +1 -0
- package/dist/types/src/core/protocol-authorization.d.ts +10 -100
- 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/handlers/records-write.d.ts +2 -1
- package/dist/types/src/handlers/records-write.d.ts.map +1 -1
- package/dist/types/src/interfaces/protocols-configure.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 +35 -0
- package/dist/types/src/interfaces/records-write-signing.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-write.d.ts +10 -44
- package/dist/types/src/interfaces/records-write.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 +0 -58
- package/dist/types/src/store/index-level.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 +3 -1
- package/dist/types/src/utils/records.d.ts.map +1 -1
- package/dist/types/tests/features/permissions.spec.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/core/protocol-authorization-action.ts +377 -0
- package/src/core/protocol-authorization-validation.ts +391 -0
- package/src/core/protocol-authorization.ts +60 -849
- package/src/core/record-chain.ts +99 -0
- package/src/handlers/records-read.ts +1 -1
- package/src/handlers/records-write.ts +37 -21
- package/src/interfaces/protocols-configure.ts +33 -5
- package/src/interfaces/records-write-query.ts +139 -0
- package/src/interfaces/records-write-signing.ts +143 -0
- package/src/interfaces/records-write.ts +49 -221
- package/src/store/index-level-compound.ts +324 -0
- package/src/store/index-level.ts +24 -306
- package/src/utils/protocols.ts +8 -0
- package/src/utils/records.ts +9 -15
|
@@ -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 sinon from 'sinon';
|
|
11
2
|
import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
|
|
12
3
|
import { DataStoreLevel, EventEmitterStream, MessageStoreLevel, ResumableTaskStoreLevel, StateIndexLevel } from '../src/index.js';
|
|
@@ -27,7 +18,7 @@ export function testDwnClass() {
|
|
|
27
18
|
let dwn;
|
|
28
19
|
// important to follow the `beforeAll` and `afterAll` pattern to initialize and clean the stores in tests
|
|
29
20
|
// so that different test suites can reuse the same backend store for testing
|
|
30
|
-
beforeAll(() =>
|
|
21
|
+
beforeAll(async () => {
|
|
31
22
|
didResolver = new UniversalResolver({ didResolvers: [DidKey] });
|
|
32
23
|
const stores = TestStores.get();
|
|
33
24
|
messageStore = stores.messageStore;
|
|
@@ -35,35 +26,35 @@ export function testDwnClass() {
|
|
|
35
26
|
resumableTaskStore = stores.resumableTaskStore;
|
|
36
27
|
stateIndex = stores.stateIndex;
|
|
37
28
|
eventStream = TestEventStream.get();
|
|
38
|
-
dwn =
|
|
39
|
-
})
|
|
40
|
-
beforeEach(() =>
|
|
29
|
+
dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventStream, resumableTaskStore });
|
|
30
|
+
});
|
|
31
|
+
beforeEach(async () => {
|
|
41
32
|
sinon.restore(); // wipe all stubs/spies/mocks/fakes from previous test
|
|
42
|
-
|
|
43
|
-
})
|
|
44
|
-
afterAll(() =>
|
|
33
|
+
await messageStore.clear(); // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
34
|
+
});
|
|
35
|
+
afterAll(async () => {
|
|
45
36
|
sinon.restore();
|
|
46
|
-
|
|
47
|
-
})
|
|
37
|
+
await dwn.close();
|
|
38
|
+
});
|
|
48
39
|
describe('processMessage()', () => {
|
|
49
|
-
it('should process RecordsWrite message signed by a `did:key` DID', () =>
|
|
40
|
+
it('should process RecordsWrite message signed by a `did:key` DID', async () => {
|
|
50
41
|
// generate a `did:key` DID
|
|
51
|
-
const alice =
|
|
52
|
-
const { message, dataStream } =
|
|
42
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
43
|
+
const { message, dataStream } = await TestDataGenerator.generateRecordsWrite({
|
|
53
44
|
author: alice,
|
|
54
45
|
});
|
|
55
|
-
const reply =
|
|
46
|
+
const reply = await dwn.processMessage(alice.did, message, { dataStream });
|
|
56
47
|
expect(reply.status.code).toBe(202);
|
|
57
|
-
})
|
|
58
|
-
it('should process RecordsQuery message', () =>
|
|
59
|
-
const alice =
|
|
60
|
-
const { author, message } =
|
|
48
|
+
});
|
|
49
|
+
it('should process RecordsQuery message', async () => {
|
|
50
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
51
|
+
const { author, message } = await TestDataGenerator.generateRecordsQuery({ author: alice });
|
|
61
52
|
const tenant = author.did;
|
|
62
|
-
const reply =
|
|
53
|
+
const reply = await dwn.processMessage(tenant, message);
|
|
63
54
|
expect(reply.status.code).toBe(200);
|
|
64
55
|
expect(reply.entries).toEqual([]);
|
|
65
|
-
})
|
|
66
|
-
it('#191 - regression - should run JSON schema validation', () =>
|
|
56
|
+
});
|
|
57
|
+
it('#191 - regression - should run JSON schema validation', async () => {
|
|
67
58
|
const invalidMessage = {
|
|
68
59
|
descriptor: {
|
|
69
60
|
interface: 'Records',
|
|
@@ -73,31 +64,29 @@ export function testDwnClass() {
|
|
|
73
64
|
authorization: {}
|
|
74
65
|
};
|
|
75
66
|
const validateJsonSchemaSpy = sinon.spy(Message, 'validateJsonSchema');
|
|
76
|
-
const alice =
|
|
77
|
-
const reply =
|
|
67
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
68
|
+
const reply = await dwn.processMessage(alice.did, invalidMessage);
|
|
78
69
|
sinon.assert.calledOnce(validateJsonSchemaSpy);
|
|
79
70
|
expect(reply.status.code).toBe(400);
|
|
80
71
|
expect(reply.status.detail).toContain(`must have required property 'filter'`);
|
|
81
|
-
})
|
|
82
|
-
it('should throw 400 if given no interface or method found in message', () =>
|
|
83
|
-
const alice =
|
|
84
|
-
const reply1 =
|
|
72
|
+
});
|
|
73
|
+
it('should throw 400 if given no interface or method found in message', async () => {
|
|
74
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
75
|
+
const reply1 = await dwn.processMessage(alice.did, undefined); // missing message entirely, thus missing both `interface` and `method`
|
|
85
76
|
expect(reply1.status.code).toBe(400);
|
|
86
77
|
expect(reply1.status.detail).toContain('Both interface and method must be present');
|
|
87
|
-
const reply2 =
|
|
78
|
+
const reply2 = await dwn.processMessage(alice.did, { descriptor: { method: 'anyValue' } }); // missing `interface`
|
|
88
79
|
expect(reply2.status.code).toBe(400);
|
|
89
80
|
expect(reply2.status.detail).toContain('Both interface and method must be present');
|
|
90
|
-
const reply3 =
|
|
81
|
+
const reply3 = await dwn.processMessage(alice.did, { descriptor: { interface: 'anyValue' } }); // missing `method`
|
|
91
82
|
expect(reply3.status.code).toBe(400);
|
|
92
83
|
expect(reply3.status.detail).toContain('Both interface and method must be present');
|
|
93
|
-
})
|
|
94
|
-
it('should throw 401 if message is targeted at a non active tenant', () =>
|
|
84
|
+
});
|
|
85
|
+
it('should throw 401 if message is targeted at a non active tenant', async () => {
|
|
95
86
|
// tenant gate that blocks everyone
|
|
96
87
|
const blockAllTenantGate = {
|
|
97
|
-
isActiveTenant() {
|
|
98
|
-
return
|
|
99
|
-
return { isActiveTenant: false };
|
|
100
|
-
});
|
|
88
|
+
async isActiveTenant() {
|
|
89
|
+
return { isActiveTenant: false };
|
|
101
90
|
}
|
|
102
91
|
};
|
|
103
92
|
const messageStoreStub = sinon.createStubInstance(MessageStoreLevel);
|
|
@@ -105,7 +94,7 @@ export function testDwnClass() {
|
|
|
105
94
|
const resumableTaskStoreStub = sinon.createStubInstance(ResumableTaskStoreLevel);
|
|
106
95
|
const stateIndexStub = sinon.createStubInstance(StateIndexLevel);
|
|
107
96
|
const eventStreamStub = sinon.createStubInstance(EventEmitterStream);
|
|
108
|
-
const dwnWithConfig =
|
|
97
|
+
const dwnWithConfig = await Dwn.create({
|
|
109
98
|
tenantGate: blockAllTenantGate,
|
|
110
99
|
messageStore: messageStoreStub,
|
|
111
100
|
dataStore: dataStoreStub,
|
|
@@ -113,21 +102,19 @@ export function testDwnClass() {
|
|
|
113
102
|
stateIndex: stateIndexStub,
|
|
114
103
|
eventStream: eventStreamStub
|
|
115
104
|
});
|
|
116
|
-
const alice =
|
|
117
|
-
const { author, message } =
|
|
105
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
106
|
+
const { author, message } = await TestDataGenerator.generateRecordsQuery({ author: alice });
|
|
118
107
|
const tenant = author.did;
|
|
119
|
-
const reply =
|
|
108
|
+
const reply = await dwnWithConfig.processMessage(tenant, message);
|
|
120
109
|
expect(reply.status.code).toBe(401);
|
|
121
110
|
expect(reply.status.detail).toContain('not an active tenant');
|
|
122
|
-
})
|
|
123
|
-
it('should throw 401 with custom message from tenant gate if provided', () =>
|
|
111
|
+
});
|
|
112
|
+
it('should throw 401 with custom message from tenant gate if provided', async () => {
|
|
124
113
|
// tenant gate that blocks everyone with a custom message
|
|
125
114
|
const customMessage = 'a custom not-an-active-tenant message';
|
|
126
115
|
const blockAllTenantGate = {
|
|
127
|
-
isActiveTenant() {
|
|
128
|
-
return
|
|
129
|
-
return { isActiveTenant: false, detail: customMessage };
|
|
130
|
-
});
|
|
116
|
+
async isActiveTenant() {
|
|
117
|
+
return { isActiveTenant: false, detail: customMessage };
|
|
131
118
|
}
|
|
132
119
|
};
|
|
133
120
|
const messageStoreStub = sinon.createStubInstance(MessageStoreLevel);
|
|
@@ -135,7 +122,7 @@ export function testDwnClass() {
|
|
|
135
122
|
const resumableTaskStoreStub = sinon.createStubInstance(ResumableTaskStoreLevel);
|
|
136
123
|
const stateIndexStub = sinon.createStubInstance(StateIndexLevel);
|
|
137
124
|
const eventStreamStub = sinon.createStubInstance(EventEmitterStream);
|
|
138
|
-
const dwnWithConfig =
|
|
125
|
+
const dwnWithConfig = await Dwn.create({
|
|
139
126
|
tenantGate: blockAllTenantGate,
|
|
140
127
|
messageStore: messageStoreStub,
|
|
141
128
|
dataStore: dataStoreStub,
|
|
@@ -143,13 +130,13 @@ export function testDwnClass() {
|
|
|
143
130
|
stateIndex: stateIndexStub,
|
|
144
131
|
eventStream: eventStreamStub
|
|
145
132
|
});
|
|
146
|
-
const alice =
|
|
147
|
-
const { author, message } =
|
|
133
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
134
|
+
const { author, message } = await TestDataGenerator.generateRecordsQuery({ author: alice });
|
|
148
135
|
const tenant = author.did;
|
|
149
|
-
const reply =
|
|
136
|
+
const reply = await dwnWithConfig.processMessage(tenant, message);
|
|
150
137
|
expect(reply.status.code).toBe(401);
|
|
151
138
|
expect(reply.status.detail).toBe(customMessage);
|
|
152
|
-
})
|
|
139
|
+
});
|
|
153
140
|
});
|
|
154
141
|
});
|
|
155
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dwn.spec.js","sourceRoot":"","sources":["../../../tests/dwn.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dwn.spec.js","sourceRoot":"","sources":["../../../tests/dwn.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 { EventEmitterStream } from '../../src/event-stream/event-emitter-stream.js';
|
|
11
2
|
import { TestDataGenerator } from '../../src/index.js';
|
|
12
3
|
import { TestStores } from '../test-stores.js';
|
|
@@ -14,30 +5,30 @@ import sinon from 'sinon';
|
|
|
14
5
|
import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
|
|
15
6
|
describe('EventEmitterStream', () => {
|
|
16
7
|
let messageStore;
|
|
17
|
-
beforeAll(() =>
|
|
8
|
+
beforeAll(async () => {
|
|
18
9
|
({ messageStore } = TestStores.get());
|
|
19
|
-
|
|
20
|
-
})
|
|
21
|
-
beforeEach(() =>
|
|
22
|
-
|
|
23
|
-
})
|
|
24
|
-
afterAll(() =>
|
|
10
|
+
await messageStore.open();
|
|
11
|
+
});
|
|
12
|
+
beforeEach(async () => {
|
|
13
|
+
await messageStore.clear();
|
|
14
|
+
});
|
|
15
|
+
afterAll(async () => {
|
|
25
16
|
// Clean up after each test by closing and clearing the event stream
|
|
26
|
-
|
|
17
|
+
await messageStore.close();
|
|
27
18
|
sinon.restore();
|
|
28
|
-
})
|
|
29
|
-
it('should remove listeners when `close` method is used', () =>
|
|
19
|
+
});
|
|
20
|
+
it('should remove listeners when `close` method is used', async () => {
|
|
30
21
|
const eventStream = new EventEmitterStream();
|
|
31
22
|
const emitter = eventStream['eventEmitter'];
|
|
32
23
|
// count the `events` listeners, which represents all listeners
|
|
33
24
|
expect(emitter.listenerCount('did:alice_events')).toBe(0);
|
|
34
|
-
const sub =
|
|
25
|
+
const sub = await eventStream.subscribe('did:alice', 'id', () => { });
|
|
35
26
|
expect(emitter.listenerCount('did:alice_events')).toBe(1);
|
|
36
27
|
// close the subscription, which should remove the listener
|
|
37
|
-
|
|
28
|
+
await sub.close();
|
|
38
29
|
expect(emitter.listenerCount('did:alice_events')).toBe(0);
|
|
39
|
-
})
|
|
40
|
-
it('logs message when the emitter experiences an error', () =>
|
|
30
|
+
});
|
|
31
|
+
it('logs message when the emitter experiences an error', async () => {
|
|
41
32
|
const testHandler = {
|
|
42
33
|
errorHandler: (_) => { },
|
|
43
34
|
};
|
|
@@ -46,20 +37,20 @@ describe('EventEmitterStream', () => {
|
|
|
46
37
|
const emitter = eventStream['eventEmitter'];
|
|
47
38
|
emitter.emit('error', new Error('random error'));
|
|
48
39
|
expect(eventErrorSpy.callCount).toBe(1);
|
|
49
|
-
})
|
|
50
|
-
it('does not emit messages if event stream is closed', () =>
|
|
40
|
+
});
|
|
41
|
+
it('does not emit messages if event stream is closed', async () => {
|
|
51
42
|
const testHandler = {
|
|
52
43
|
errorHandler: (_) => { },
|
|
53
44
|
};
|
|
54
45
|
const eventErrorSpy = sinon.spy(testHandler, 'errorHandler');
|
|
55
46
|
const eventStream = new EventEmitterStream({ errorHandler: testHandler.errorHandler });
|
|
56
|
-
const handler = (_tenant, _event, _indexes) =>
|
|
57
|
-
|
|
47
|
+
const handler = async (_tenant, _event, _indexes) => { };
|
|
48
|
+
await eventStream.subscribe('did:alice', 'sub-1', handler);
|
|
58
49
|
// close eventStream
|
|
59
|
-
|
|
60
|
-
const message1 =
|
|
50
|
+
await eventStream.close();
|
|
51
|
+
const message1 = await TestDataGenerator.generateRecordsWrite({});
|
|
61
52
|
eventStream.emit('did:alice', { message: message1.message }, {});
|
|
62
|
-
const message2 =
|
|
53
|
+
const message2 = await TestDataGenerator.generateRecordsWrite({});
|
|
63
54
|
eventStream.emit('did:alice', { message: message2.message }, {});
|
|
64
55
|
expect(eventErrorSpy.callCount).toBe(2);
|
|
65
56
|
// check that all listeners have been removed
|
|
@@ -67,11 +58,11 @@ describe('EventEmitterStream', () => {
|
|
|
67
58
|
for (const event of eventEmitter.eventNames()) {
|
|
68
59
|
expect(eventEmitter.listenerCount(event)).toBe(0);
|
|
69
60
|
}
|
|
70
|
-
})
|
|
71
|
-
it('sets max listeners to 0 which represents infinity', () =>
|
|
61
|
+
});
|
|
62
|
+
it('sets max listeners to 0 which represents infinity', async () => {
|
|
72
63
|
const eventStreamOne = new EventEmitterStream();
|
|
73
64
|
const emitterOne = eventStreamOne['eventEmitter'];
|
|
74
65
|
expect(emitterOne.getMaxListeners()).toBe(0);
|
|
75
|
-
})
|
|
66
|
+
});
|
|
76
67
|
});
|
|
77
68
|
//# sourceMappingURL=event-emitter-stream.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-emitter-stream.spec.js","sourceRoot":"","sources":["../../../../tests/event-stream/event-emitter-stream.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-emitter-stream.spec.js","sourceRoot":"","sources":["../../../../tests/event-stream/event-emitter-stream.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 { Poller } from '../utils/poller.js';
|
|
11
2
|
import { TestEventStream } from '../test-event-stream.js';
|
|
12
3
|
import { Message, TestDataGenerator } from '../../src/index.js';
|
|
@@ -24,100 +15,100 @@ export function testEventStream() {
|
|
|
24
15
|
// saving the original `console.error` function to re-assign after tests complete
|
|
25
16
|
const originalConsoleErrorFunction = console.error;
|
|
26
17
|
let eventStream;
|
|
27
|
-
beforeAll(() =>
|
|
18
|
+
beforeAll(async () => {
|
|
28
19
|
eventStream = TestEventStream.get();
|
|
29
|
-
|
|
20
|
+
await eventStream.open();
|
|
30
21
|
// do not print the console error statements from the emitter error
|
|
31
22
|
console.error = (_) => { };
|
|
32
|
-
})
|
|
23
|
+
});
|
|
33
24
|
beforeEach(() => {
|
|
34
25
|
sinon.restore();
|
|
35
26
|
});
|
|
36
|
-
afterAll(() =>
|
|
27
|
+
afterAll(async () => {
|
|
37
28
|
sinon.restore();
|
|
38
29
|
console.error = originalConsoleErrorFunction;
|
|
39
30
|
// Clean up after each test by closing and clearing the event stream
|
|
40
|
-
|
|
41
|
-
})
|
|
42
|
-
it('emits all messages to each subscriptions', () =>
|
|
31
|
+
await eventStream.close();
|
|
32
|
+
});
|
|
33
|
+
it('emits all messages to each subscriptions', async () => {
|
|
43
34
|
// Scenario: We create 2 separate subscriptions that listen to all messages
|
|
44
35
|
// and we emit 3 messages. We expect both subscriptions to receive all 3 messages.
|
|
45
36
|
const messageCids1 = [];
|
|
46
|
-
const handler1 = (_tenant, event, _indexes) =>
|
|
37
|
+
const handler1 = async (_tenant, event, _indexes) => {
|
|
47
38
|
const { message } = event;
|
|
48
|
-
const messageCid =
|
|
39
|
+
const messageCid = await Message.getCid(message);
|
|
49
40
|
messageCids1.push(messageCid);
|
|
50
|
-
}
|
|
41
|
+
};
|
|
51
42
|
const messageCids2 = [];
|
|
52
|
-
const handler2 = (_tenant, event, _indexes) =>
|
|
43
|
+
const handler2 = async (_tenant, event, _indexes) => {
|
|
53
44
|
const { message } = event;
|
|
54
|
-
const messageCid =
|
|
45
|
+
const messageCid = await Message.getCid(message);
|
|
55
46
|
messageCids2.push(messageCid);
|
|
56
|
-
}
|
|
57
|
-
const subscription1 =
|
|
58
|
-
const subscription2 =
|
|
59
|
-
const message1 =
|
|
60
|
-
const message1Cid =
|
|
47
|
+
};
|
|
48
|
+
const subscription1 = await eventStream.subscribe('did:alice', 'sub-1', handler1);
|
|
49
|
+
const subscription2 = await eventStream.subscribe('did:alice', 'sub-2', handler2);
|
|
50
|
+
const message1 = await TestDataGenerator.generateRecordsWrite({});
|
|
51
|
+
const message1Cid = await Message.getCid(message1.message);
|
|
61
52
|
eventStream.emit('did:alice', { message: message1.message }, {});
|
|
62
|
-
const message2 =
|
|
63
|
-
const message2Cid =
|
|
53
|
+
const message2 = await TestDataGenerator.generateRecordsWrite({});
|
|
54
|
+
const message2Cid = await Message.getCid(message2.message);
|
|
64
55
|
eventStream.emit('did:alice', { message: message2.message }, {});
|
|
65
|
-
const message3 =
|
|
66
|
-
const message3Cid =
|
|
56
|
+
const message3 = await TestDataGenerator.generateRecordsWrite({});
|
|
57
|
+
const message3Cid = await Message.getCid(message3.message);
|
|
67
58
|
eventStream.emit('did:alice', { message: message3.message }, {});
|
|
68
59
|
// Use the Poller to poll until the expected results are met
|
|
69
|
-
|
|
60
|
+
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
70
61
|
expect(messageCids1).toEqual(expect.arrayContaining([message1Cid, message2Cid, message3Cid]));
|
|
71
62
|
expect(messageCids2).toEqual(expect.arrayContaining([message1Cid, message2Cid, message3Cid]));
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
})
|
|
76
|
-
it('does not receive messages if subscription is closed', () =>
|
|
63
|
+
});
|
|
64
|
+
await subscription1.close();
|
|
65
|
+
await subscription2.close();
|
|
66
|
+
});
|
|
67
|
+
it('does not receive messages if subscription is closed', async () => {
|
|
77
68
|
// Scenario: We create two subscriptions that listen to all messages.
|
|
78
69
|
// The reason we create two is in order to allow for a negative test case.
|
|
79
70
|
// We send a message, validate that both handlers processed the message
|
|
80
71
|
// We then close one of the subscriptions, and send another message.
|
|
81
72
|
// Now we validate that only the handler of the subscription that is still open received the message.
|
|
82
73
|
const sub1MessageCids = [];
|
|
83
|
-
const handler1 = (_tenant, event, _indexes) =>
|
|
74
|
+
const handler1 = async (_tenant, event, _indexes) => {
|
|
84
75
|
const { message } = event;
|
|
85
|
-
const messageCid =
|
|
76
|
+
const messageCid = await Message.getCid(message);
|
|
86
77
|
sub1MessageCids.push(messageCid);
|
|
87
|
-
}
|
|
78
|
+
};
|
|
88
79
|
const sub2MessageCids = [];
|
|
89
|
-
const handler2 = (_tenant, event, _indexes) =>
|
|
80
|
+
const handler2 = async (_tenant, event, _indexes) => {
|
|
90
81
|
const { message } = event;
|
|
91
|
-
const messageCid =
|
|
82
|
+
const messageCid = await Message.getCid(message);
|
|
92
83
|
sub2MessageCids.push(messageCid);
|
|
93
|
-
}
|
|
94
|
-
const subscription1 =
|
|
95
|
-
const subscription2 =
|
|
96
|
-
const message1 =
|
|
97
|
-
const message1Cid =
|
|
84
|
+
};
|
|
85
|
+
const subscription1 = await eventStream.subscribe('did:alice', 'sub-1', handler1);
|
|
86
|
+
const subscription2 = await eventStream.subscribe('did:alice', 'sub-2', handler2);
|
|
87
|
+
const message1 = await TestDataGenerator.generateRecordsWrite({});
|
|
88
|
+
const message1Cid = await Message.getCid(message1.message);
|
|
98
89
|
eventStream.emit('did:alice', { message: message1.message }, {});
|
|
99
90
|
// Use the Poller to poll until the expected results are met
|
|
100
|
-
|
|
91
|
+
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
101
92
|
expect(sub1MessageCids).toHaveLength(1);
|
|
102
93
|
expect(sub1MessageCids).toEqual(expect.arrayContaining([message1Cid]));
|
|
103
94
|
expect(sub2MessageCids).toHaveLength(1);
|
|
104
95
|
expect(sub2MessageCids).toEqual(expect.arrayContaining([message1Cid]));
|
|
105
|
-
})
|
|
106
|
-
|
|
107
|
-
const message2 =
|
|
108
|
-
const message2Cid =
|
|
96
|
+
});
|
|
97
|
+
await subscription1.close(); // close subscription 1
|
|
98
|
+
const message2 = await TestDataGenerator.generateRecordsWrite({});
|
|
99
|
+
const message2Cid = await Message.getCid(message2.message);
|
|
109
100
|
eventStream.emit('did:alice', { message: message2.message }, {});
|
|
110
101
|
// Use the Poller to poll until the expected results are met
|
|
111
|
-
|
|
102
|
+
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
112
103
|
// subscription 2 should have received the message
|
|
113
104
|
expect(sub2MessageCids.length).toBe(2);
|
|
114
105
|
expect(sub2MessageCids).toEqual(expect.arrayContaining([message1Cid, message2Cid]));
|
|
115
106
|
// subscription 1 should not have received the message
|
|
116
107
|
expect(sub1MessageCids).toHaveLength(1);
|
|
117
108
|
expect(sub1MessageCids).toEqual(expect.arrayContaining([message1Cid]));
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
})
|
|
109
|
+
});
|
|
110
|
+
await subscription2.close();
|
|
111
|
+
});
|
|
121
112
|
});
|
|
122
113
|
}
|
|
123
114
|
//# sourceMappingURL=event-stream.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-stream.spec.js","sourceRoot":"","sources":["../../../../tests/event-stream/event-stream.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-stream.spec.js","sourceRoot":"","sources":["../../../../tests/event-stream/event-stream.spec.ts"],"names":[],"mappings":"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"}
|