@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,13 +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
|
-
import EventEmitter from 'events';
|
|
11
1
|
import minimalProtocolDefinition from '../vectors/protocol-definitions/minimal.json' with { type: 'json' };
|
|
12
2
|
import sinon from 'sinon';
|
|
13
3
|
import { DataStream } from '../../src/utils/data-stream.js';
|
|
@@ -17,7 +7,7 @@ import { Poller } from '../utils/poller.js';
|
|
|
17
7
|
import { RecordsRead } from '../../src/interfaces/records-read.js';
|
|
18
8
|
import { RecordsWrite } from '../../src/interfaces/records-write.js';
|
|
19
9
|
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
20
|
-
import {
|
|
10
|
+
import { TestEventLog } from '../test-event-stream.js';
|
|
21
11
|
import { TestStores } from '../test-stores.js';
|
|
22
12
|
import { useFakeTimers } from 'sinon';
|
|
23
13
|
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it } from 'bun:test';
|
|
@@ -32,13 +22,13 @@ export function testResumableTasks() {
|
|
|
32
22
|
let dataStore;
|
|
33
23
|
let resumableTaskStore;
|
|
34
24
|
let stateIndex;
|
|
35
|
-
let
|
|
25
|
+
let eventLog;
|
|
36
26
|
let dwn;
|
|
37
27
|
let consoleError;
|
|
38
28
|
;
|
|
39
29
|
// important to follow the `before` and `after` pattern to initialize and clean the stores in tests
|
|
40
30
|
// so that different test suites can reuse the same backend store for testing
|
|
41
|
-
beforeAll(() =>
|
|
31
|
+
beforeAll(async () => {
|
|
42
32
|
// suppress console.error output during tests
|
|
43
33
|
consoleError = console.error;
|
|
44
34
|
console.error = () => { };
|
|
@@ -48,42 +38,42 @@ export function testResumableTasks() {
|
|
|
48
38
|
dataStore = stores.dataStore;
|
|
49
39
|
resumableTaskStore = stores.resumableTaskStore;
|
|
50
40
|
stateIndex = stores.stateIndex;
|
|
51
|
-
|
|
52
|
-
dwn =
|
|
53
|
-
})
|
|
54
|
-
beforeEach(() =>
|
|
41
|
+
eventLog = TestEventLog.get();
|
|
42
|
+
dwn = await Dwn.create({ didResolver, messageStore, dataStore, stateIndex, eventLog, resumableTaskStore });
|
|
43
|
+
});
|
|
44
|
+
beforeEach(async () => {
|
|
55
45
|
sinon.restore(); // wipe all previous stubs/spies/mocks/fakes/clock
|
|
56
46
|
clock = useFakeTimers({ shouldAdvanceTime: true }); // IMPORTANT: MUST be called AFTER `sinon.restore()` because `sinon.restore()`
|
|
57
47
|
// clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
})
|
|
63
|
-
afterEach(() =>
|
|
48
|
+
await messageStore.clear();
|
|
49
|
+
await dataStore.clear();
|
|
50
|
+
await resumableTaskStore.clear();
|
|
51
|
+
await stateIndex.clear();
|
|
52
|
+
});
|
|
53
|
+
afterEach(async () => {
|
|
64
54
|
if (clock !== undefined) {
|
|
65
55
|
clock.restore(); // IMPORTANT: MUST be called, else some clock tests the heavily rely on timers and event emitters may hang forever.
|
|
66
56
|
}
|
|
67
|
-
})
|
|
68
|
-
afterAll(() =>
|
|
57
|
+
});
|
|
58
|
+
afterAll(async () => {
|
|
69
59
|
// restore console.error
|
|
70
60
|
console.error = consoleError;
|
|
71
|
-
|
|
72
|
-
})
|
|
73
|
-
it('should resume tasks that are not completed when DWN starts', () =>
|
|
61
|
+
await dwn.close();
|
|
62
|
+
});
|
|
63
|
+
it('should resume tasks that are not completed when DWN starts', async () => {
|
|
74
64
|
// Scenario: DWN has a `RecordsDelete` task that is not completed, it should resume the task upon restart
|
|
75
65
|
// 1. Write a record to DWN (for deletion later).
|
|
76
66
|
// 2. Insert a resumable `RecordDelete` task into the resumable task store bypassing message handler to avoid it being processed.
|
|
77
67
|
// 3. Restart the DWN to trigger the resumable task to be resumed.
|
|
78
68
|
// 4. Verify that the record is deleted.
|
|
79
|
-
const alice =
|
|
69
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
80
70
|
// install a protocol to allow records to be written
|
|
81
71
|
const protocolDefinition = minimalProtocolDefinition;
|
|
82
|
-
const protocolsConfig =
|
|
72
|
+
const protocolsConfig = await ProtocolsConfigure.create({
|
|
83
73
|
definition: protocolDefinition,
|
|
84
74
|
signer: Jws.createSigner(alice)
|
|
85
75
|
});
|
|
86
|
-
const protocolsConfigureReply =
|
|
76
|
+
const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
|
|
87
77
|
expect(protocolsConfigureReply.status.code).toBe(202);
|
|
88
78
|
// 1. Write a record to DWN (for deletion later).
|
|
89
79
|
const data = TestDataGenerator.randomBytes(100);
|
|
@@ -94,13 +84,13 @@ export function testResumableTasks() {
|
|
|
94
84
|
dataFormat: 'any-data-format',
|
|
95
85
|
data: data
|
|
96
86
|
};
|
|
97
|
-
const recordsWrite =
|
|
98
|
-
const recordsWriteResponse =
|
|
87
|
+
const recordsWrite = await RecordsWrite.create(messageOptions);
|
|
88
|
+
const recordsWriteResponse = await dwn.processMessage(alice.did, recordsWrite.message, { dataStream: DataStream.fromBytes(data) });
|
|
99
89
|
expect(recordsWriteResponse.status.code).toBe(202);
|
|
100
90
|
// 2. Insert a resumable `RecordDelete` task into the resumable task store bypassing message handler to avoid it being processed.
|
|
101
91
|
// IMPORTANT!!! This is to avoid `RecordsDelete` having the same timestamp as `RecordsWrite` which causes the delete to be disgarded.
|
|
102
|
-
|
|
103
|
-
const recordsDelete =
|
|
92
|
+
await clock.tickAsync(1);
|
|
93
|
+
const recordsDelete = await RecordsDelete.create({
|
|
104
94
|
recordId: recordsWrite.message.recordId,
|
|
105
95
|
prune: true,
|
|
106
96
|
signer: Jws.createSigner(alice)
|
|
@@ -112,24 +102,24 @@ export function testResumableTasks() {
|
|
|
112
102
|
message: recordsDelete.message
|
|
113
103
|
}
|
|
114
104
|
};
|
|
115
|
-
|
|
105
|
+
await resumableTaskStore.register(resumableTask, 0); // 0 timeout to ensure it immediately times out for resuming
|
|
116
106
|
// sanity check that the record is still there
|
|
117
|
-
const recordsRead =
|
|
107
|
+
const recordsRead = await RecordsRead.create({
|
|
118
108
|
signer: Jws.createSigner(alice),
|
|
119
109
|
filter: { recordId: recordsWrite.message.recordId }
|
|
120
110
|
});
|
|
121
|
-
const readReply =
|
|
111
|
+
const readReply = await dwn.processMessage(alice.did, recordsRead.message);
|
|
122
112
|
expect(readReply.status.code).toBe(200);
|
|
123
113
|
expect(readReply.entry.recordsWrite).toBeDefined();
|
|
124
114
|
// 3. Restart the DWN to trigger the resumable task to be resumed.
|
|
125
|
-
|
|
126
|
-
|
|
115
|
+
await dwn.close();
|
|
116
|
+
await dwn.open();
|
|
127
117
|
// 4. Verify that the record is deleted.
|
|
128
|
-
const readReply2 =
|
|
118
|
+
const readReply2 = await dwn.processMessage(alice.did, recordsRead.message);
|
|
129
119
|
expect(readReply2.status.code).toBe(404);
|
|
130
120
|
expect(readReply2.entry.recordsWrite).toBeUndefined();
|
|
131
|
-
})
|
|
132
|
-
it('should only resume tasks that are timed-out up to the batch size when DWN starts', () =>
|
|
121
|
+
});
|
|
122
|
+
it('should only resume tasks that are timed-out up to the batch size when DWN starts', async () => {
|
|
133
123
|
// Scenario: DWN has multiple `RecordsDelete` tasks that are not completed,
|
|
134
124
|
// it should grab tasks no greater than the batch size and only tasks that are timed-out.
|
|
135
125
|
// 1. Set ResumableTaskManager.resumableTaskBatchSize to 2.
|
|
@@ -142,14 +132,14 @@ export function testResumableTasks() {
|
|
|
142
132
|
// 6. Verify that 3 processed resumable tasks are deleted from resumable task store.
|
|
143
133
|
// 7. Verify that only 1 record remains in the DWN.
|
|
144
134
|
// 8. Set ResumableTaskManager.resumableTaskBatchSize back to original value.
|
|
145
|
-
const alice =
|
|
135
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
146
136
|
// install a protocol to allow records to be written
|
|
147
137
|
const protocolDefinition = minimalProtocolDefinition;
|
|
148
|
-
const protocolsConfig =
|
|
138
|
+
const protocolsConfig = await ProtocolsConfigure.create({
|
|
149
139
|
definition: protocolDefinition,
|
|
150
140
|
signer: Jws.createSigner(alice)
|
|
151
141
|
});
|
|
152
|
-
const protocolsConfigureReply =
|
|
142
|
+
const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
|
|
153
143
|
expect(protocolsConfigureReply.status.code).toBe(202);
|
|
154
144
|
// 1. Set ResumableTaskManager.resumableTaskBatchSize to 2.
|
|
155
145
|
const originalResumableTaskBatchSize = dwn['resumableTaskManager']['resumableTaskBatchSize'];
|
|
@@ -165,8 +155,8 @@ export function testResumableTasks() {
|
|
|
165
155
|
dataFormat: 'any-data-format',
|
|
166
156
|
data: data
|
|
167
157
|
};
|
|
168
|
-
const recordsWrite =
|
|
169
|
-
const recordsWriteResponse =
|
|
158
|
+
const recordsWrite = await RecordsWrite.create(messageOptions);
|
|
159
|
+
const recordsWriteResponse = await dwn.processMessage(alice.did, recordsWrite.message, { dataStream: DataStream.fromBytes(data) });
|
|
170
160
|
expect(recordsWriteResponse.status.code).toBe(202);
|
|
171
161
|
recordsWrites.push(recordsWrite);
|
|
172
162
|
}
|
|
@@ -174,9 +164,9 @@ export function testResumableTasks() {
|
|
|
174
164
|
// a. 1 task that is not timed-out (currently in-flight).
|
|
175
165
|
// b. 3 tasks that are already timed-out.
|
|
176
166
|
// IMPORTANT!!! This is to avoid `RecordsDelete` having the same timestamp as `RecordsWrite` which causes the delete to be discarded.
|
|
177
|
-
|
|
167
|
+
await clock.tickAsync(1);
|
|
178
168
|
for (let i = 0; i < 4; i++) {
|
|
179
|
-
const recordsDelete =
|
|
169
|
+
const recordsDelete = await RecordsDelete.create({
|
|
180
170
|
recordId: recordsWrites[i].message.recordId,
|
|
181
171
|
prune: true,
|
|
182
172
|
signer: Jws.createSigner(alice)
|
|
@@ -188,46 +178,46 @@ export function testResumableTasks() {
|
|
|
188
178
|
message: recordsDelete.message
|
|
189
179
|
}
|
|
190
180
|
};
|
|
191
|
-
|
|
181
|
+
await resumableTaskStore.register(resumableTask, i === 0 ? 1000 : 0); // 1000 second timeout for the first task, 0 timeout for the rest
|
|
192
182
|
}
|
|
193
183
|
// 4. Restart the DWN to trigger the resumable task to be resumed.
|
|
194
184
|
const grabSpy = sinon.spy(resumableTaskStore, 'grab');
|
|
195
|
-
|
|
196
|
-
|
|
185
|
+
await dwn.close();
|
|
186
|
+
await dwn.open();
|
|
197
187
|
// 5. Verify tasks were resumed in 2 batches (2 calls of `ResumableTaskStore.grab()`).
|
|
198
188
|
expect(grabSpy.calledThrice).toBe(true);
|
|
199
|
-
const resumeTaskBatch1 =
|
|
200
|
-
const resumeTaskBatch2 =
|
|
201
|
-
const resumeTaskBatch3 =
|
|
189
|
+
const resumeTaskBatch1 = await grabSpy.firstCall.returnValue;
|
|
190
|
+
const resumeTaskBatch2 = await grabSpy.secondCall.returnValue;
|
|
191
|
+
const resumeTaskBatch3 = await grabSpy.thirdCall.returnValue;
|
|
202
192
|
expect(resumeTaskBatch1.length).toBe(2);
|
|
203
193
|
expect(resumeTaskBatch2.length).toBe(1);
|
|
204
194
|
expect(resumeTaskBatch3.length).toBe(0);
|
|
205
195
|
// 6. Verify that 3 processed resumable tasks are deleted from resumable task store.
|
|
206
196
|
const [task2, task3] = resumeTaskBatch1;
|
|
207
197
|
const [task4] = resumeTaskBatch2;
|
|
208
|
-
expect(
|
|
209
|
-
expect(
|
|
210
|
-
expect(
|
|
198
|
+
expect(await resumableTaskStore.read(task2.id)).toBeUndefined();
|
|
199
|
+
expect(await resumableTaskStore.read(task3.id)).toBeUndefined();
|
|
200
|
+
expect(await resumableTaskStore.read(task4.id)).toBeUndefined();
|
|
211
201
|
// 7. Verify that only 1 record remains in the DWN.
|
|
212
|
-
const recordsQuery =
|
|
202
|
+
const recordsQuery = await RecordsQuery.create({
|
|
213
203
|
signer: Jws.createSigner(alice),
|
|
214
204
|
filter: { protocol: protocolDefinition.protocol }
|
|
215
205
|
});
|
|
216
|
-
const recordsQueryResponse =
|
|
206
|
+
const recordsQueryResponse = await dwn.processMessage(alice.did, recordsQuery.message);
|
|
217
207
|
expect(recordsQueryResponse.status.code).toBe(200);
|
|
218
208
|
expect(recordsQueryResponse.entries).toHaveLength(1);
|
|
219
209
|
expect(recordsQueryResponse.entries[0].recordId).toBe(recordsWrites[0].message.recordId);
|
|
220
210
|
// 8. Set ResumableTaskManager.resumableTaskBatchSize back to original value.
|
|
221
211
|
dwn['resumableTaskManager']['resumableTaskBatchSize'] = originalResumableTaskBatchSize;
|
|
222
|
-
})
|
|
223
|
-
it('should continue to retry tasks that throw exceptions until success when DWN starts', () =>
|
|
212
|
+
});
|
|
213
|
+
it('should continue to retry tasks that throw exceptions until success when DWN starts', async () => {
|
|
224
214
|
// Scenario:
|
|
225
215
|
// 1. Insert a 1 resumable `RecordDelete` task into the resumable task store bypassing message handler to avoid it being processed.
|
|
226
216
|
// 2. Restart the DWN to trigger the resumable task to be resumed, force the task to throw an exception on the first attempt.
|
|
227
217
|
// 3. Verify the task is retried until it succeeds.
|
|
228
|
-
const alice =
|
|
218
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
229
219
|
// 1. Insert a 1 resumable `RecordDelete` task into the resumable task store bypassing message handler to avoid it being processed.
|
|
230
|
-
const recordsDelete =
|
|
220
|
+
const recordsDelete = await RecordsDelete.create({
|
|
231
221
|
recordId: 'non-existent-record-id', // opportunistically testing non-existent record delete path
|
|
232
222
|
prune: true,
|
|
233
223
|
signer: Jws.createSigner(alice)
|
|
@@ -239,23 +229,23 @@ export function testResumableTasks() {
|
|
|
239
229
|
message: recordsDelete.message
|
|
240
230
|
}
|
|
241
231
|
};
|
|
242
|
-
|
|
232
|
+
await resumableTaskStore.register(resumableTask, 0); // 0 timeout to ensure it immediately times out for resuming
|
|
243
233
|
// 2. Restart the DWN to trigger the resumable task to be resumed, force the task to throw an exception on the first attempt.
|
|
244
234
|
const originalPerformRecordsDelete = dwn['storageController']['performRecordsDelete'].bind(dwn['storageController']);
|
|
245
235
|
let attemptCount = 0;
|
|
246
|
-
sinon.stub(dwn['storageController'], 'performRecordsDelete').callsFake((input) =>
|
|
236
|
+
sinon.stub(dwn['storageController'], 'performRecordsDelete').callsFake(async (input) => {
|
|
247
237
|
attemptCount++;
|
|
248
238
|
if (attemptCount === 1) {
|
|
249
239
|
throw new Error('This is fine, we deliberately force an error in the first attempt in this test.');
|
|
250
240
|
}
|
|
251
|
-
|
|
252
|
-
})
|
|
253
|
-
|
|
254
|
-
|
|
241
|
+
await originalPerformRecordsDelete(input);
|
|
242
|
+
});
|
|
243
|
+
await dwn.close();
|
|
244
|
+
await dwn.open();
|
|
255
245
|
// 3. Verify the task is retried until it succeeds.
|
|
256
246
|
expect(attemptCount).toBe(2);
|
|
257
|
-
})
|
|
258
|
-
it('should extend long running tasks automatically to prevent it from timing out', () =>
|
|
247
|
+
});
|
|
248
|
+
it('should extend long running tasks automatically to prevent it from timing out', async () => {
|
|
259
249
|
// Scenario: DWN is executing a long running `RecordsDelete`, it extends the timeout automatically to prevent it from timing out
|
|
260
250
|
// 1. Mock code to never complete the `RecordsDelete` until given a signal to complete.
|
|
261
251
|
// 2. Write a record to DWN.
|
|
@@ -264,23 +254,23 @@ export function testResumableTasks() {
|
|
|
264
254
|
// 5. Signal the mocked code to complete the `RecordsDelete`.
|
|
265
255
|
// 6. Verify that automatic timeout extension loop is cleared.
|
|
266
256
|
// 7. Verify that the resumable task is deleted.
|
|
267
|
-
const alice =
|
|
257
|
+
const alice = await TestDataGenerator.generateDidKeyPersona();
|
|
268
258
|
// install a protocol to allow records to be written
|
|
269
259
|
const protocolDefinition = minimalProtocolDefinition;
|
|
270
|
-
const protocolsConfig =
|
|
260
|
+
const protocolsConfig = await ProtocolsConfigure.create({
|
|
271
261
|
definition: protocolDefinition,
|
|
272
262
|
signer: Jws.createSigner(alice)
|
|
273
263
|
});
|
|
274
|
-
const protocolsConfigureReply =
|
|
264
|
+
const protocolsConfigureReply = await dwn.processMessage(alice.did, protocolsConfig.message);
|
|
275
265
|
expect(protocolsConfigureReply.status.code).toBe(202);
|
|
276
266
|
// 1. Mock code to never complete the `RecordsDelete` until given a signal to complete.
|
|
277
|
-
|
|
267
|
+
let signalDeleteComplete;
|
|
278
268
|
const completeDeletePromise = new Promise((resolve) => {
|
|
279
|
-
|
|
269
|
+
signalDeleteComplete = resolve;
|
|
270
|
+
});
|
|
271
|
+
sinon.stub(dwn['storageController'], 'performRecordsDelete').callsFake(async () => {
|
|
272
|
+
await completeDeletePromise;
|
|
280
273
|
});
|
|
281
|
-
sinon.stub(dwn['storageController'], 'performRecordsDelete').callsFake(() => __awaiter(this, void 0, void 0, function* () {
|
|
282
|
-
yield completeDeletePromise;
|
|
283
|
-
}));
|
|
284
274
|
// 2. Write a record to DWN.
|
|
285
275
|
const data = TestDataGenerator.randomBytes(100);
|
|
286
276
|
const messageOptions = {
|
|
@@ -290,15 +280,15 @@ export function testResumableTasks() {
|
|
|
290
280
|
dataFormat: 'any-data-format',
|
|
291
281
|
data: data
|
|
292
282
|
};
|
|
293
|
-
const recordsWrite =
|
|
294
|
-
const recordsWriteResponse =
|
|
283
|
+
const recordsWrite = await RecordsWrite.create(messageOptions);
|
|
284
|
+
const recordsWriteResponse = await dwn.processMessage(alice.did, recordsWrite.message, { dataStream: DataStream.fromBytes(data) });
|
|
295
285
|
expect(recordsWriteResponse.status.code).toBe(202);
|
|
296
286
|
// 3. Submit a `RecordsDelete` without awaiting on its completion.
|
|
297
287
|
const resumableTaskRegisterSpy = sinon.spy(resumableTaskStore, 'register');
|
|
298
288
|
const clearTimeoutExtensionTimerSpy = sinon.spy(ResumableTaskManager, 'clearTimeoutExtensionTimer');
|
|
299
289
|
// IMPORTANT!!! This is to avoid `RecordsDelete` having the same timestamp as `RecordsWrite` which causes the delete to be discarded.
|
|
300
|
-
|
|
301
|
-
const recordsDelete =
|
|
290
|
+
await clock.tickAsync(1);
|
|
291
|
+
const recordsDelete = await RecordsDelete.create({
|
|
302
292
|
recordId: recordsWrite.message.recordId,
|
|
303
293
|
prune: true,
|
|
304
294
|
signer: Jws.createSigner(alice)
|
|
@@ -306,7 +296,7 @@ export function testResumableTasks() {
|
|
|
306
296
|
let isDeleteComplete = false;
|
|
307
297
|
const recordsDeletePromise = dwn.processMessage(alice.did, recordsDelete.message).then(() => isDeleteComplete = true);
|
|
308
298
|
// wait until the resumable `RecordsDelete` task is registered
|
|
309
|
-
|
|
299
|
+
await new Promise((resolve) => {
|
|
310
300
|
const interval = setInterval(() => {
|
|
311
301
|
if (resumableTaskRegisterSpy.called) {
|
|
312
302
|
clearInterval(interval);
|
|
@@ -314,34 +304,34 @@ export function testResumableTasks() {
|
|
|
314
304
|
}
|
|
315
305
|
}, 10);
|
|
316
306
|
});
|
|
317
|
-
const initialResumableTaskState =
|
|
307
|
+
const initialResumableTaskState = await resumableTaskRegisterSpy.firstCall.returnValue;
|
|
318
308
|
// 4. Verify that the task timeout is automatically extended.
|
|
319
|
-
|
|
309
|
+
await clock.tickAsync(ResumableTaskManager.timeoutExtensionFrequencyInSeconds * 2 * 1000); // advancing time up to 2 extension cycles
|
|
320
310
|
// IMPORTANT: This call ensures all scheduled timers are executed
|
|
321
311
|
// In theory calling `tickAsync()` or `runToLastAsync()` alone should execute all scheduled timers
|
|
322
312
|
// but for some reason this behavior does not happen ONLY in Safari. I found 2 workarounds:
|
|
323
313
|
// 1. call BOTH `tickAsync()` and `runToLastAsync()`.
|
|
324
314
|
// 2. call `tickAsync()` with a longer time.
|
|
325
315
|
// Chose the first workaround because it is should be the more reliable of the two.
|
|
326
|
-
|
|
316
|
+
await clock.runToLastAsync();
|
|
327
317
|
let latestResumableTaskState;
|
|
328
|
-
|
|
329
|
-
latestResumableTaskState =
|
|
318
|
+
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
319
|
+
latestResumableTaskState = await resumableTaskStore.read(initialResumableTaskState.id);
|
|
330
320
|
expect(latestResumableTaskState.timeout).toBeGreaterThan(initialResumableTaskState.timeout);
|
|
331
|
-
})
|
|
321
|
+
});
|
|
332
322
|
// 5. Signal the mocked code to complete the `RecordsDelete`.
|
|
333
|
-
|
|
323
|
+
signalDeleteComplete();
|
|
334
324
|
// wait until the `RecordsDelete` is completed
|
|
335
|
-
|
|
325
|
+
await recordsDeletePromise;
|
|
336
326
|
expect(isDeleteComplete).toBe(true);
|
|
337
327
|
// 6. Verify that automatic timeout extension loop is cleared.
|
|
338
328
|
expect(clearTimeoutExtensionTimerSpy.calledOnce).toBe(true);
|
|
339
329
|
// 7. Verify that the resumable task is deleted.
|
|
340
|
-
|
|
341
|
-
latestResumableTaskState =
|
|
330
|
+
await Poller.pollUntilSuccessOrTimeout(async () => {
|
|
331
|
+
latestResumableTaskState = await resumableTaskStore.read(initialResumableTaskState.id);
|
|
342
332
|
expect(latestResumableTaskState).toBeUndefined();
|
|
343
|
-
})
|
|
344
|
-
})
|
|
333
|
+
});
|
|
334
|
+
});
|
|
345
335
|
});
|
|
346
336
|
}
|
|
347
337
|
//# sourceMappingURL=resumable-tasks.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumable-tasks.spec.js","sourceRoot":"","sources":["../../../../tests/features/resumable-tasks.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resumable-tasks.spec.js","sourceRoot":"","sources":["../../../../tests/features/resumable-tasks.spec.ts"],"names":[],"mappings":"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"}
|