@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,23 +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
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
-
var t = {};
|
|
12
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
-
t[p] = s[p];
|
|
14
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
-
t[p[i]] = s[p[i]];
|
|
18
|
-
}
|
|
19
|
-
return t;
|
|
20
|
-
};
|
|
21
1
|
import { authenticate } from '../core/auth.js';
|
|
22
2
|
import { Message } from '../core/message.js';
|
|
23
3
|
import { messageReplyFromError } from '../core/message-reply.js';
|
|
@@ -28,121 +8,126 @@ import { DwnError, DwnErrorCode } from '../core/dwn-error.js';
|
|
|
28
8
|
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
29
9
|
import { getRuleSetAtPath, parseCrossProtocolRef } from '../utils/protocols.js';
|
|
30
10
|
export class ProtocolsConfigureHandler {
|
|
11
|
+
didResolver;
|
|
12
|
+
messageStore;
|
|
13
|
+
stateIndex;
|
|
14
|
+
eventStream;
|
|
31
15
|
constructor(didResolver, messageStore, stateIndex, eventStream) {
|
|
32
16
|
this.didResolver = didResolver;
|
|
33
17
|
this.messageStore = messageStore;
|
|
34
18
|
this.stateIndex = stateIndex;
|
|
35
19
|
this.eventStream = eventStream;
|
|
36
20
|
}
|
|
37
|
-
handle(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
21
|
+
async handle({ tenant, message, }) {
|
|
22
|
+
let protocolsConfigure;
|
|
23
|
+
try {
|
|
24
|
+
protocolsConfigure = await ProtocolsConfigure.parse(message);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
return messageReplyFromError(e, 400);
|
|
28
|
+
}
|
|
29
|
+
// authentication & authorization
|
|
30
|
+
try {
|
|
31
|
+
await authenticate(message.authorization, this.didResolver);
|
|
32
|
+
await ProtocolsConfigureHandler.authorizeProtocolsConfigure(tenant, protocolsConfigure, this.messageStore);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
return messageReplyFromError(e, 401);
|
|
36
|
+
}
|
|
37
|
+
// validate composition dependencies: all `uses` protocols must already be installed,
|
|
38
|
+
// `$ref` paths must exist in the referenced protocols, and cross-protocol roles must exist.
|
|
39
|
+
try {
|
|
40
|
+
await ProtocolsConfigureHandler.validateCompositionDependencies(tenant, message.descriptor.definition, this.messageStore);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
return messageReplyFromError(e, 400);
|
|
44
|
+
}
|
|
45
|
+
// attempt to get existing protocol
|
|
46
|
+
const query = {
|
|
47
|
+
interface: DwnInterfaceName.Protocols,
|
|
48
|
+
method: DwnMethodName.Configure,
|
|
49
|
+
protocol: message.descriptor.definition.protocol
|
|
50
|
+
};
|
|
51
|
+
const { messages: existingMessages } = await this.messageStore.query(tenant, [query]);
|
|
52
|
+
// find newest message, and if the incoming message is the newest
|
|
53
|
+
let newestMessage = await Message.getNewestMessage(existingMessages);
|
|
54
|
+
let incomingMessageIsNewest = false;
|
|
55
|
+
if (newestMessage === undefined || await Message.isNewer(message, newestMessage)) {
|
|
56
|
+
incomingMessageIsNewest = true;
|
|
57
|
+
newestMessage = message;
|
|
58
|
+
}
|
|
59
|
+
// write the incoming message to DB if incoming message is newest
|
|
60
|
+
let messageReply;
|
|
61
|
+
if (incomingMessageIsNewest) {
|
|
62
|
+
const indexes = ProtocolsConfigureHandler.constructIndexes(protocolsConfigure, true);
|
|
63
|
+
await this.messageStore.put(tenant, message, indexes);
|
|
64
|
+
const messageCid = await Message.getCid(message);
|
|
65
|
+
await this.stateIndex.insert(tenant, messageCid, indexes);
|
|
66
|
+
// only emit if the event stream is set
|
|
67
|
+
if (this.eventStream !== undefined) {
|
|
68
|
+
this.eventStream.emit(tenant, { message }, indexes);
|
|
69
|
+
}
|
|
70
|
+
messageReply = {
|
|
71
|
+
status: { code: 202, detail: 'Accepted' }
|
|
67
72
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
status: { code: 202, detail: 'Accepted' }
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
// incoming message is older — still store it as a historical version (not the latest)
|
|
93
|
-
const indexes = ProtocolsConfigureHandler.constructIndexes(protocolsConfigure, false);
|
|
94
|
-
yield this.messageStore.put(tenant, message, indexes);
|
|
95
|
-
const messageCid = yield Message.getCid(message);
|
|
96
|
-
yield this.stateIndex.insert(tenant, messageCid, indexes);
|
|
97
|
-
messageReply = {
|
|
98
|
-
status: { code: 202, detail: 'Accepted' }
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
// re-index previously-latest messages as no longer the latest base state.
|
|
102
|
-
// We must delete and re-put (not just put) to properly replace old index entries.
|
|
103
|
-
for (const existingMessage of existingMessages) {
|
|
104
|
-
if (existingMessage !== newestMessage) {
|
|
105
|
-
const existingProtocolsConfigure = yield ProtocolsConfigure.parse(existingMessage);
|
|
106
|
-
const updatedIndexes = ProtocolsConfigureHandler.constructIndexes(existingProtocolsConfigure, false);
|
|
107
|
-
const existingCid = yield Message.getCid(existingMessage);
|
|
108
|
-
yield this.messageStore.delete(tenant, existingCid);
|
|
109
|
-
yield this.messageStore.put(tenant, existingMessage, updatedIndexes);
|
|
110
|
-
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// incoming message is older — still store it as a historical version (not the latest)
|
|
76
|
+
const indexes = ProtocolsConfigureHandler.constructIndexes(protocolsConfigure, false);
|
|
77
|
+
await this.messageStore.put(tenant, message, indexes);
|
|
78
|
+
const messageCid = await Message.getCid(message);
|
|
79
|
+
await this.stateIndex.insert(tenant, messageCid, indexes);
|
|
80
|
+
messageReply = {
|
|
81
|
+
status: { code: 202, detail: 'Accepted' }
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// re-index previously-latest messages as no longer the latest base state.
|
|
85
|
+
// We must delete and re-put (not just put) to properly replace old index entries.
|
|
86
|
+
for (const existingMessage of existingMessages) {
|
|
87
|
+
if (existingMessage !== newestMessage) {
|
|
88
|
+
const existingProtocolsConfigure = await ProtocolsConfigure.parse(existingMessage);
|
|
89
|
+
const updatedIndexes = ProtocolsConfigureHandler.constructIndexes(existingProtocolsConfigure, false);
|
|
90
|
+
const existingCid = await Message.getCid(existingMessage);
|
|
91
|
+
await this.messageStore.delete(tenant, existingCid);
|
|
92
|
+
await this.messageStore.put(tenant, existingMessage, updatedIndexes);
|
|
111
93
|
}
|
|
112
|
-
|
|
113
|
-
|
|
94
|
+
}
|
|
95
|
+
return messageReply;
|
|
114
96
|
}
|
|
115
97
|
;
|
|
116
98
|
static constructIndexes(protocolsConfigure, isLatestBaseState) {
|
|
117
99
|
// strip out `definition` as it is not indexable
|
|
118
|
-
const
|
|
100
|
+
const { definition, ...propertiesToIndex } = protocolsConfigure.message.descriptor;
|
|
119
101
|
const { author } = protocolsConfigure;
|
|
120
|
-
const indexes =
|
|
121
|
-
|
|
102
|
+
const indexes = {
|
|
103
|
+
...propertiesToIndex,
|
|
104
|
+
author: author,
|
|
105
|
+
protocol: definition.protocol, // retain protocol url from `definition`,
|
|
106
|
+
published: definition.published, // retain published state from definition
|
|
107
|
+
isLatestBaseState,
|
|
108
|
+
};
|
|
122
109
|
return indexes;
|
|
123
110
|
}
|
|
124
|
-
static authorizeProtocolsConfigure(tenant, protocolConfigure, messageStore) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
});
|
|
111
|
+
static async authorizeProtocolsConfigure(tenant, protocolConfigure, messageStore) {
|
|
112
|
+
if (protocolConfigure.isSignedByAuthorDelegate) {
|
|
113
|
+
await protocolConfigure.authorizeAuthorDelegate(messageStore);
|
|
114
|
+
}
|
|
115
|
+
if (protocolConfigure.author === tenant) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
else if (protocolConfigure.author !== undefined && protocolConfigure.signaturePayload.permissionGrantId !== undefined) {
|
|
119
|
+
const permissionGrant = await PermissionsProtocol.fetchGrant(tenant, messageStore, protocolConfigure.signaturePayload.permissionGrantId);
|
|
120
|
+
await ProtocolsGrantAuthorization.authorizeConfigure({
|
|
121
|
+
protocolsConfigureMessage: protocolConfigure.message,
|
|
122
|
+
expectedGrantor: tenant,
|
|
123
|
+
expectedGrantee: protocolConfigure.author,
|
|
124
|
+
permissionGrant,
|
|
125
|
+
messageStore
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
throw new DwnError(DwnErrorCode.ProtocolsConfigureAuthorizationFailed, 'message failed authorization');
|
|
130
|
+
}
|
|
146
131
|
}
|
|
147
132
|
/**
|
|
148
133
|
* Validates composition dependencies at install time:
|
|
@@ -152,44 +137,40 @@ export class ProtocolsConfigureHandler {
|
|
|
152
137
|
*
|
|
153
138
|
* This is a no-op if the protocol definition has no `uses` map.
|
|
154
139
|
*/
|
|
155
|
-
static validateCompositionDependencies(tenant, definition, messageStore) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
ProtocolsConfigureHandler.validateRefsAndRolesRecursively(definition.structure, '', referencedDefinitions);
|
|
173
|
-
});
|
|
140
|
+
static async validateCompositionDependencies(tenant, definition, messageStore) {
|
|
141
|
+
const { uses } = definition;
|
|
142
|
+
if (uses === undefined) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Fetch all referenced protocol definitions
|
|
146
|
+
const referencedDefinitions = new Map();
|
|
147
|
+
for (const alias in uses) {
|
|
148
|
+
const protocolUri = uses[alias];
|
|
149
|
+
const refDefinition = await ProtocolsConfigureHandler.fetchInstalledProtocolDefinition(tenant, protocolUri, messageStore);
|
|
150
|
+
if (refDefinition === undefined) {
|
|
151
|
+
throw new DwnError(DwnErrorCode.ProtocolsConfigureComposedProtocolNotInstalled, `composed protocol '${protocolUri}' (alias '${alias}') is not installed for tenant '${tenant}'.`);
|
|
152
|
+
}
|
|
153
|
+
referencedDefinitions.set(alias, refDefinition);
|
|
154
|
+
}
|
|
155
|
+
// Walk the structure and validate all $ref paths and cross-protocol role references
|
|
156
|
+
ProtocolsConfigureHandler.validateRefsAndRolesRecursively(definition.structure, '', referencedDefinitions);
|
|
174
157
|
}
|
|
175
158
|
/**
|
|
176
159
|
* Fetches the latest installed protocol definition for the given protocol URI.
|
|
177
160
|
* @returns The protocol definition, or `undefined` if not installed.
|
|
178
161
|
*/
|
|
179
|
-
static fetchInstalledProtocolDefinition(tenant, protocolUri, messageStore) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
return messages[0].descriptor.definition;
|
|
192
|
-
});
|
|
162
|
+
static async fetchInstalledProtocolDefinition(tenant, protocolUri, messageStore) {
|
|
163
|
+
const query = {
|
|
164
|
+
interface: DwnInterfaceName.Protocols,
|
|
165
|
+
method: DwnMethodName.Configure,
|
|
166
|
+
protocol: protocolUri,
|
|
167
|
+
isLatestBaseState: true
|
|
168
|
+
};
|
|
169
|
+
const { messages } = await messageStore.query(tenant, [query]);
|
|
170
|
+
if (messages.length === 0) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
return messages[0].descriptor.definition;
|
|
193
174
|
}
|
|
194
175
|
/**
|
|
195
176
|
* Recursively walks the structure tree to validate:
|
|
@@ -197,7 +178,6 @@ export class ProtocolsConfigureHandler {
|
|
|
197
178
|
* - Cross-protocol `role` references point to valid `$role: true` paths in the referenced protocol
|
|
198
179
|
*/
|
|
199
180
|
static validateRefsAndRolesRecursively(ruleSet, protocolPath, referencedDefinitions) {
|
|
200
|
-
var _a;
|
|
201
181
|
for (const key in ruleSet) {
|
|
202
182
|
if (key.startsWith('$')) {
|
|
203
183
|
continue;
|
|
@@ -222,7 +202,7 @@ export class ProtocolsConfigureHandler {
|
|
|
222
202
|
}
|
|
223
203
|
}
|
|
224
204
|
// Validate cross-protocol references in $actions (roles and `of` paths)
|
|
225
|
-
const actionRules =
|
|
205
|
+
const actionRules = childRuleSet.$actions ?? [];
|
|
226
206
|
for (const actionRule of actionRules) {
|
|
227
207
|
// Validate cross-protocol role references
|
|
228
208
|
if (actionRule.role !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocols-configure.js","sourceRoot":"","sources":["../../../../src/handlers/protocols-configure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocols-configure.js","sourceRoot":"","sources":["../../../../src/handlers/protocols-configure.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 { authenticate } from '../core/auth.js';
|
|
11
2
|
import { DwnErrorCode } from '../core/dwn-error.js';
|
|
12
3
|
import { messageReplyFromError } from '../core/message-reply.js';
|
|
@@ -14,60 +5,70 @@ import { ProtocolsQuery } from '../interfaces/protocols-query.js';
|
|
|
14
5
|
import { removeUndefinedProperties } from '../utils/object.js';
|
|
15
6
|
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
|
|
16
7
|
export class ProtocolsQueryHandler {
|
|
8
|
+
didResolver;
|
|
9
|
+
messageStore;
|
|
10
|
+
dataStore;
|
|
17
11
|
constructor(didResolver, messageStore, dataStore) {
|
|
18
12
|
this.didResolver = didResolver;
|
|
19
13
|
this.messageStore = messageStore;
|
|
20
14
|
this.dataStore = dataStore;
|
|
21
15
|
}
|
|
22
|
-
handle(
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
async handle({ tenant, message }) {
|
|
17
|
+
let protocolsQuery;
|
|
18
|
+
try {
|
|
19
|
+
protocolsQuery = await ProtocolsQuery.parse(message);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
return messageReplyFromError(e, 400);
|
|
23
|
+
}
|
|
24
|
+
// authentication & authorization
|
|
25
|
+
try {
|
|
26
|
+
await authenticate(message.authorization, this.didResolver);
|
|
27
|
+
await protocolsQuery.authorize(tenant, this.messageStore);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
// return public ProtocolsConfigures if query fails with a certain authentication or authorization code
|
|
31
|
+
if (error.code === DwnErrorCode.AuthenticateJwsMissing || // unauthenticated
|
|
32
|
+
error.code === DwnErrorCode.ProtocolsQueryUnauthorized ||
|
|
33
|
+
error.code === DwnErrorCode.ProtocolsGrantAuthorizationQueryProtocolScopeMismatch) {
|
|
34
|
+
const entries = await this.fetchPublishedProtocolsConfigure(tenant, protocolsQuery);
|
|
35
|
+
return {
|
|
36
|
+
status: { code: 200, detail: 'OK' },
|
|
37
|
+
entries
|
|
38
|
+
};
|
|
27
39
|
}
|
|
28
|
-
|
|
29
|
-
return messageReplyFromError(
|
|
40
|
+
else {
|
|
41
|
+
return messageReplyFromError(error, 401);
|
|
30
42
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
entries
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
return messageReplyFromError(error, 401);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const query = Object.assign(Object.assign({}, message.descriptor.filter), { interface: DwnInterfaceName.Protocols, method: DwnMethodName.Configure, isLatestBaseState: true });
|
|
52
|
-
removeUndefinedProperties(query);
|
|
53
|
-
const { messages } = yield this.messageStore.query(tenant, [query]);
|
|
54
|
-
return {
|
|
55
|
-
status: { code: 200, detail: 'OK' },
|
|
56
|
-
entries: messages
|
|
57
|
-
};
|
|
58
|
-
});
|
|
43
|
+
}
|
|
44
|
+
const query = {
|
|
45
|
+
...message.descriptor.filter,
|
|
46
|
+
interface: DwnInterfaceName.Protocols,
|
|
47
|
+
method: DwnMethodName.Configure,
|
|
48
|
+
isLatestBaseState: true,
|
|
49
|
+
};
|
|
50
|
+
removeUndefinedProperties(query);
|
|
51
|
+
const { messages } = await this.messageStore.query(tenant, [query]);
|
|
52
|
+
return {
|
|
53
|
+
status: { code: 200, detail: 'OK' },
|
|
54
|
+
entries: messages
|
|
55
|
+
};
|
|
59
56
|
}
|
|
60
57
|
;
|
|
61
58
|
/**
|
|
62
59
|
* Fetches only published `ProtocolsConfigure`.
|
|
63
60
|
*/
|
|
64
|
-
fetchPublishedProtocolsConfigure(tenant, protocolsQuery) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
async fetchPublishedProtocolsConfigure(tenant, protocolsQuery) {
|
|
62
|
+
// fetch all published `ProtocolConfigure` matching the query
|
|
63
|
+
const filter = {
|
|
64
|
+
...protocolsQuery.message.descriptor.filter,
|
|
65
|
+
interface: DwnInterfaceName.Protocols,
|
|
66
|
+
method: DwnMethodName.Configure,
|
|
67
|
+
published: true,
|
|
68
|
+
isLatestBaseState: true,
|
|
69
|
+
};
|
|
70
|
+
const { messages: publishedProtocolsConfigure } = await this.messageStore.query(tenant, [filter]);
|
|
71
|
+
return publishedProtocolsConfigure;
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
//# sourceMappingURL=protocols-query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocols-query.js","sourceRoot":"","sources":["../../../../src/handlers/protocols-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocols-query.js","sourceRoot":"","sources":["../../../../src/handlers/protocols-query.ts"],"names":[],"mappings":"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"}
|