@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,39 +1,30 @@
|
|
|
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 { describe, expect, it } from 'bun:test';
|
|
11
2
|
import { TestDataGenerator } from './test-data-generator.js';
|
|
12
3
|
import { DataStream, Encoder } from '../../src/index.js';
|
|
13
4
|
describe('DataStream', () => {
|
|
14
5
|
describe('fromObject() and toBytes()', () => {
|
|
15
|
-
it('should round-trip an object through stream', () =>
|
|
6
|
+
it('should round-trip an object through stream', async () => {
|
|
16
7
|
const originalObject = {
|
|
17
8
|
a: TestDataGenerator.randomString(32)
|
|
18
9
|
};
|
|
19
10
|
const stream = DataStream.fromObject(originalObject);
|
|
20
|
-
const readBytes =
|
|
11
|
+
const readBytes = await DataStream.toBytes(stream);
|
|
21
12
|
const readObject = JSON.parse(Encoder.bytesToString(readBytes));
|
|
22
13
|
expect(readObject.a).toBe(originalObject.a);
|
|
23
|
-
})
|
|
14
|
+
});
|
|
24
15
|
});
|
|
25
16
|
describe('toBytes()', () => {
|
|
26
|
-
it('should return an empty Uint8Array for an empty stream', () =>
|
|
17
|
+
it('should return an empty Uint8Array for an empty stream', async () => {
|
|
27
18
|
const stream = new ReadableStream({
|
|
28
19
|
start(controller) {
|
|
29
20
|
controller.close();
|
|
30
21
|
}
|
|
31
22
|
});
|
|
32
|
-
const result =
|
|
23
|
+
const result = await DataStream.toBytes(stream);
|
|
33
24
|
expect(result).toBeInstanceOf(Uint8Array);
|
|
34
25
|
expect(result.length).toBe(0);
|
|
35
|
-
})
|
|
36
|
-
it('should handle a stream with many small chunks', () =>
|
|
26
|
+
});
|
|
27
|
+
it('should handle a stream with many small chunks', async () => {
|
|
37
28
|
const chunks = Array.from({ length: 100 }, (_, i) => new Uint8Array([i % 256]));
|
|
38
29
|
let index = 0;
|
|
39
30
|
const stream = new ReadableStream({
|
|
@@ -46,54 +37,54 @@ describe('DataStream', () => {
|
|
|
46
37
|
index++;
|
|
47
38
|
}
|
|
48
39
|
});
|
|
49
|
-
const result =
|
|
40
|
+
const result = await DataStream.toBytes(stream);
|
|
50
41
|
expect(result.length).toBe(100);
|
|
51
42
|
for (let i = 0; i < 100; i++) {
|
|
52
43
|
expect(result[i]).toBe(i % 256);
|
|
53
44
|
}
|
|
54
|
-
})
|
|
55
|
-
it('should propagate errors from an errored stream', () =>
|
|
45
|
+
});
|
|
46
|
+
it('should propagate errors from an errored stream', async () => {
|
|
56
47
|
const stream = new ReadableStream({
|
|
57
48
|
start(controller) {
|
|
58
49
|
controller.error(new Error('test error'));
|
|
59
50
|
}
|
|
60
51
|
});
|
|
61
52
|
try {
|
|
62
|
-
|
|
53
|
+
await DataStream.toBytes(stream);
|
|
63
54
|
throw new Error('Should have thrown');
|
|
64
55
|
}
|
|
65
56
|
catch (err) {
|
|
66
57
|
expect(err.message).toBe('test error');
|
|
67
58
|
}
|
|
68
|
-
})
|
|
59
|
+
});
|
|
69
60
|
});
|
|
70
61
|
describe('toObject()', () => {
|
|
71
|
-
it('should parse a valid JSON stream into an object', () =>
|
|
62
|
+
it('should parse a valid JSON stream into an object', async () => {
|
|
72
63
|
const obj = { key: 'value', num: 42 };
|
|
73
64
|
const stream = DataStream.fromObject(obj);
|
|
74
|
-
const result =
|
|
65
|
+
const result = await DataStream.toObject(stream);
|
|
75
66
|
expect(result).toEqual(obj);
|
|
76
|
-
})
|
|
77
|
-
it('should throw for a stream containing invalid JSON', () =>
|
|
67
|
+
});
|
|
68
|
+
it('should throw for a stream containing invalid JSON', async () => {
|
|
78
69
|
const invalidJson = new TextEncoder().encode('not valid json');
|
|
79
70
|
const stream = DataStream.fromBytes(invalidJson);
|
|
80
71
|
try {
|
|
81
|
-
|
|
72
|
+
await DataStream.toObject(stream);
|
|
82
73
|
throw new Error('Should have thrown');
|
|
83
74
|
}
|
|
84
75
|
catch (err) {
|
|
85
76
|
expect(err).toBeInstanceOf(Error);
|
|
86
77
|
}
|
|
87
|
-
})
|
|
78
|
+
});
|
|
88
79
|
});
|
|
89
80
|
describe('fromBytes()', () => {
|
|
90
|
-
it('should produce multiple chunks for data larger than 100KB', () =>
|
|
91
|
-
const largeData = TestDataGenerator.randomBytes(
|
|
81
|
+
it('should produce multiple chunks for data larger than 100KB', async () => {
|
|
82
|
+
const largeData = TestDataGenerator.randomBytes(250_000);
|
|
92
83
|
const stream = DataStream.fromBytes(largeData);
|
|
93
84
|
const reader = stream.getReader();
|
|
94
85
|
const chunks = [];
|
|
95
86
|
while (true) {
|
|
96
|
-
const { done, value } =
|
|
87
|
+
const { done, value } = await reader.read();
|
|
97
88
|
if (done) {
|
|
98
89
|
break;
|
|
99
90
|
}
|
|
@@ -101,30 +92,30 @@ describe('DataStream', () => {
|
|
|
101
92
|
}
|
|
102
93
|
// 250KB / 100KB chunks = 3 chunks (100K, 100K, 50K)
|
|
103
94
|
expect(chunks.length).toBe(3);
|
|
104
|
-
expect(chunks[0].length).toBe(
|
|
105
|
-
expect(chunks[1].length).toBe(
|
|
106
|
-
expect(chunks[2].length).toBe(
|
|
107
|
-
})
|
|
108
|
-
it('should produce a single chunk for data smaller than 100KB', () =>
|
|
109
|
-
const smallData = TestDataGenerator.randomBytes(
|
|
95
|
+
expect(chunks[0].length).toBe(100_000);
|
|
96
|
+
expect(chunks[1].length).toBe(100_000);
|
|
97
|
+
expect(chunks[2].length).toBe(50_000);
|
|
98
|
+
});
|
|
99
|
+
it('should produce a single chunk for data smaller than 100KB', async () => {
|
|
100
|
+
const smallData = TestDataGenerator.randomBytes(50_000);
|
|
110
101
|
const stream = DataStream.fromBytes(smallData);
|
|
111
102
|
const reader = stream.getReader();
|
|
112
103
|
const chunks = [];
|
|
113
104
|
while (true) {
|
|
114
|
-
const { done, value } =
|
|
105
|
+
const { done, value } = await reader.read();
|
|
115
106
|
if (done) {
|
|
116
107
|
break;
|
|
117
108
|
}
|
|
118
109
|
chunks.push(value);
|
|
119
110
|
}
|
|
120
111
|
expect(chunks.length).toBe(1);
|
|
121
|
-
expect(chunks[0].length).toBe(
|
|
122
|
-
})
|
|
123
|
-
it('should handle an empty Uint8Array', () =>
|
|
112
|
+
expect(chunks[0].length).toBe(50_000);
|
|
113
|
+
});
|
|
114
|
+
it('should handle an empty Uint8Array', async () => {
|
|
124
115
|
const stream = DataStream.fromBytes(new Uint8Array(0));
|
|
125
|
-
const result =
|
|
116
|
+
const result = await DataStream.toBytes(stream);
|
|
126
117
|
expect(result.length).toBe(0);
|
|
127
|
-
})
|
|
118
|
+
});
|
|
128
119
|
});
|
|
129
120
|
describe('duplicateDataStream()', () => {
|
|
130
121
|
it('should return an empty array when count is 0', () => {
|
|
@@ -139,43 +130,43 @@ describe('DataStream', () => {
|
|
|
139
130
|
expect(result.length).toBe(1);
|
|
140
131
|
expect(result[0]).toBe(stream);
|
|
141
132
|
});
|
|
142
|
-
it('should return two independently consumable streams when count is 2', () =>
|
|
133
|
+
it('should return two independently consumable streams when count is 2', async () => {
|
|
143
134
|
const data = TestDataGenerator.randomBytes(1000);
|
|
144
135
|
const stream = DataStream.fromBytes(data);
|
|
145
136
|
const [copy1, copy2] = DataStream.duplicateDataStream(stream, 2);
|
|
146
|
-
const bytes1 =
|
|
147
|
-
const bytes2 =
|
|
137
|
+
const bytes1 = await DataStream.toBytes(copy1);
|
|
138
|
+
const bytes2 = await DataStream.toBytes(copy2);
|
|
148
139
|
expect(bytes1).toEqual(data);
|
|
149
140
|
expect(bytes2).toEqual(data);
|
|
150
|
-
})
|
|
151
|
-
it('should return N independently consumable streams when count > 2', () =>
|
|
141
|
+
});
|
|
142
|
+
it('should return N independently consumable streams when count > 2', async () => {
|
|
152
143
|
const data = TestDataGenerator.randomBytes(5000);
|
|
153
144
|
const stream = DataStream.fromBytes(data);
|
|
154
145
|
const copies = DataStream.duplicateDataStream(stream, 4);
|
|
155
146
|
expect(copies.length).toBe(4);
|
|
156
147
|
for (const copy of copies) {
|
|
157
|
-
const bytes =
|
|
148
|
+
const bytes = await DataStream.toBytes(copy);
|
|
158
149
|
expect(bytes).toEqual(data);
|
|
159
150
|
}
|
|
160
|
-
})
|
|
161
|
-
it('should handle an empty source stream', () =>
|
|
151
|
+
});
|
|
152
|
+
it('should handle an empty source stream', async () => {
|
|
162
153
|
const stream = DataStream.fromBytes(new Uint8Array(0));
|
|
163
154
|
const [copy1, copy2] = DataStream.duplicateDataStream(stream, 2);
|
|
164
|
-
const bytes1 =
|
|
165
|
-
const bytes2 =
|
|
155
|
+
const bytes1 = await DataStream.toBytes(copy1);
|
|
156
|
+
const bytes2 = await DataStream.toBytes(copy2);
|
|
166
157
|
expect(bytes1.length).toBe(0);
|
|
167
158
|
expect(bytes2.length).toBe(0);
|
|
168
|
-
})
|
|
169
|
-
it('should handle large data with count = 3', () =>
|
|
170
|
-
const data = TestDataGenerator.randomBytes(
|
|
159
|
+
});
|
|
160
|
+
it('should handle large data with count = 3', async () => {
|
|
161
|
+
const data = TestDataGenerator.randomBytes(500_000);
|
|
171
162
|
const stream = DataStream.fromBytes(data);
|
|
172
163
|
const copies = DataStream.duplicateDataStream(stream, 3);
|
|
173
164
|
expect(copies.length).toBe(3);
|
|
174
165
|
for (const copy of copies) {
|
|
175
|
-
const bytes =
|
|
166
|
+
const bytes = await DataStream.toBytes(copy);
|
|
176
167
|
expect(bytes).toEqual(data);
|
|
177
168
|
}
|
|
178
|
-
})
|
|
169
|
+
});
|
|
179
170
|
});
|
|
180
171
|
});
|
|
181
172
|
//# sourceMappingURL=data-stream.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-stream.spec.js","sourceRoot":"","sources":["../../../../tests/utils/data-stream.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-stream.spec.js","sourceRoot":"","sources":["../../../../tests/utils/data-stream.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
1
|
import { DataStream } from '../../src/utils/data-stream.js';
|
|
11
2
|
import { Encoder } from '../../src/utils/encoder.js';
|
|
12
3
|
import { Encryption } from '../../src/utils/encryption.js';
|
|
@@ -19,13 +10,13 @@ import { HdKey, KeyDerivationScheme } from '../../src/utils/hd-key.js';
|
|
|
19
10
|
describe('Encryption Callback Interfaces', () => {
|
|
20
11
|
let privateJwk;
|
|
21
12
|
let rootKeyId;
|
|
22
|
-
beforeEach(() =>
|
|
23
|
-
const key =
|
|
13
|
+
beforeEach(async () => {
|
|
14
|
+
const key = await X25519.generateKey();
|
|
24
15
|
privateJwk = key;
|
|
25
16
|
rootKeyId = 'did:example:alice#enc';
|
|
26
|
-
})
|
|
17
|
+
});
|
|
27
18
|
describe('Protocols.deriveAndInjectPublicEncryptionKeys() with EncryptionKeyDeriver', () => {
|
|
28
|
-
it('produces the same $encryption output as the raw-key overload', () =>
|
|
19
|
+
it('produces the same $encryption output as the raw-key overload', async () => {
|
|
29
20
|
const protocolDefinition = {
|
|
30
21
|
protocol: 'https://example.com/protocol/foo',
|
|
31
22
|
published: true,
|
|
@@ -46,20 +37,20 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
46
37
|
}
|
|
47
38
|
};
|
|
48
39
|
// Call with raw (rootKeyId, privateJwk) — get result A
|
|
49
|
-
const resultA =
|
|
40
|
+
const resultA = await Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, rootKeyId, privateJwk);
|
|
50
41
|
// Build an EncryptionKeyDeriver that uses the same key
|
|
51
42
|
const keyDeriver = {
|
|
52
43
|
rootKeyId,
|
|
53
44
|
derivationScheme: KeyDerivationScheme.ProtocolPath,
|
|
54
|
-
derivePublicKey: (fullDerivationPath) =>
|
|
55
|
-
const privateKeyBytes =
|
|
56
|
-
const derivedPrivateKeyBytes =
|
|
57
|
-
const derivedPrivateKey =
|
|
58
|
-
return
|
|
59
|
-
}
|
|
45
|
+
derivePublicKey: async (fullDerivationPath) => {
|
|
46
|
+
const privateKeyBytes = await X25519.privateKeyToBytes({ privateKey: privateJwk });
|
|
47
|
+
const derivedPrivateKeyBytes = await HdKey.derivePrivateKeyBytes(privateKeyBytes, fullDerivationPath);
|
|
48
|
+
const derivedPrivateKey = await X25519.bytesToPrivateKey({ privateKeyBytes: derivedPrivateKeyBytes });
|
|
49
|
+
return await X25519.getPublicKey({ key: derivedPrivateKey });
|
|
50
|
+
}
|
|
60
51
|
};
|
|
61
52
|
// Call with the callback — get result B
|
|
62
|
-
const resultB =
|
|
53
|
+
const resultB = await Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, keyDeriver);
|
|
63
54
|
// Assert A and B have identical $encryption at every path level
|
|
64
55
|
expect(resultA.structure.thread.$encryption).toBeDefined();
|
|
65
56
|
expect(resultB.structure.thread.$encryption).toBeDefined();
|
|
@@ -71,8 +62,8 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
71
62
|
expect(messageRuleSetB.$encryption).toBeDefined();
|
|
72
63
|
expect(messageRuleSetA.$encryption.rootKeyId).toBe(messageRuleSetB.$encryption.rootKeyId);
|
|
73
64
|
expect(messageRuleSetA.$encryption.publicKeyJwk).toEqual(messageRuleSetB.$encryption.publicKeyJwk);
|
|
74
|
-
})
|
|
75
|
-
it('calls derivePublicKey with correct full derivation paths', () =>
|
|
65
|
+
});
|
|
66
|
+
it('calls derivePublicKey with correct full derivation paths', async () => {
|
|
76
67
|
const protocolDefinition = {
|
|
77
68
|
protocol: 'https://example.com/protocol/bar',
|
|
78
69
|
published: true,
|
|
@@ -96,15 +87,15 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
96
87
|
const keyDeriver = {
|
|
97
88
|
rootKeyId,
|
|
98
89
|
derivationScheme: KeyDerivationScheme.ProtocolPath,
|
|
99
|
-
derivePublicKey: (fullDerivationPath) =>
|
|
90
|
+
derivePublicKey: async (fullDerivationPath) => {
|
|
100
91
|
calledPaths.push([...fullDerivationPath]);
|
|
101
|
-
const privateKeyBytes =
|
|
102
|
-
const derivedPrivateKeyBytes =
|
|
103
|
-
const derivedPrivateKey =
|
|
104
|
-
return
|
|
105
|
-
}
|
|
92
|
+
const privateKeyBytes = await X25519.privateKeyToBytes({ privateKey: privateJwk });
|
|
93
|
+
const derivedPrivateKeyBytes = await HdKey.derivePrivateKeyBytes(privateKeyBytes, fullDerivationPath);
|
|
94
|
+
const derivedPrivateKey = await X25519.bytesToPrivateKey({ privateKeyBytes: derivedPrivateKeyBytes });
|
|
95
|
+
return await X25519.getPublicKey({ key: derivedPrivateKey });
|
|
96
|
+
}
|
|
106
97
|
};
|
|
107
|
-
|
|
98
|
+
await Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, keyDeriver);
|
|
108
99
|
// Assert paths: ['protocolPath', '<url>', 'thread']
|
|
109
100
|
// and ['protocolPath', '<url>', 'thread', 'message']
|
|
110
101
|
expect(calledPaths).toHaveLength(2);
|
|
@@ -119,10 +110,10 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
119
110
|
'thread',
|
|
120
111
|
'message'
|
|
121
112
|
]);
|
|
122
|
-
})
|
|
113
|
+
});
|
|
123
114
|
});
|
|
124
115
|
describe('Records.decrypt() with KeyDecrypter', () => {
|
|
125
|
-
it('produces the same plaintext as the raw-key overload', () =>
|
|
116
|
+
it('produces the same plaintext as the raw-key overload', async () => {
|
|
126
117
|
const protocolDefinition = {
|
|
127
118
|
protocol: 'https://example.com/protocol/decrypt-test',
|
|
128
119
|
published: true,
|
|
@@ -137,13 +128,13 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
137
128
|
}
|
|
138
129
|
};
|
|
139
130
|
// Derive and inject encryption keys
|
|
140
|
-
const encryptedProtocol =
|
|
131
|
+
const encryptedProtocol = await Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, rootKeyId, privateJwk);
|
|
141
132
|
// Generate a test persona
|
|
142
|
-
const alice =
|
|
133
|
+
const alice = await TestDataGenerator.generatePersona();
|
|
143
134
|
// Encrypt a record using the standard flow
|
|
144
135
|
const plaintext = 'This is a secret message';
|
|
145
136
|
const plaintextBytes = Encoder.stringToBytes(plaintext);
|
|
146
|
-
const encryptedRecord =
|
|
137
|
+
const encryptedRecord = await TestDataGenerator.generateProtocolEncryptedRecordsWrite({
|
|
147
138
|
plaintextBytes,
|
|
148
139
|
author: alice,
|
|
149
140
|
protocolDefinition: encryptedProtocol,
|
|
@@ -157,22 +148,22 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
157
148
|
derivationScheme: KeyDerivationScheme.ProtocolPath,
|
|
158
149
|
derivedPrivateKey: privateJwk
|
|
159
150
|
};
|
|
160
|
-
const decryptedStreamA =
|
|
161
|
-
const plaintextA =
|
|
151
|
+
const decryptedStreamA = await Records.decrypt(encryptedRecord.message, rootKey, encryptedRecord.dataStream);
|
|
152
|
+
const plaintextA = await DataStream.toBytes(decryptedStreamA);
|
|
162
153
|
// Build a KeyDecrypter that performs ECDH-ES key agreement and AES Key Unwrap
|
|
163
154
|
const keyDecrypter = {
|
|
164
155
|
rootKeyId,
|
|
165
156
|
derivationScheme: KeyDerivationScheme.ProtocolPath,
|
|
166
|
-
decrypt: (fullDerivationPath, jwePayload) =>
|
|
167
|
-
const privateKeyBytes =
|
|
168
|
-
const leafPrivateKeyBytes =
|
|
169
|
-
const leafPrivateKey =
|
|
157
|
+
decrypt: async (fullDerivationPath, jwePayload) => {
|
|
158
|
+
const privateKeyBytes = await X25519.privateKeyToBytes({ privateKey: privateJwk });
|
|
159
|
+
const leafPrivateKeyBytes = await HdKey.derivePrivateKeyBytes(privateKeyBytes, fullDerivationPath);
|
|
160
|
+
const leafPrivateKey = await X25519.bytesToPrivateKey({ privateKeyBytes: leafPrivateKeyBytes });
|
|
170
161
|
return Encryption.ecdhEsUnwrapKey(leafPrivateKey, jwePayload.ephemeralPublicKey, jwePayload.encryptedKey);
|
|
171
|
-
}
|
|
162
|
+
}
|
|
172
163
|
};
|
|
173
164
|
// Decrypt with the callback — get plaintext B
|
|
174
165
|
// Note: Need to create a new stream since the first one was consumed
|
|
175
|
-
const encryptedRecord2 =
|
|
166
|
+
const encryptedRecord2 = await TestDataGenerator.generateProtocolEncryptedRecordsWrite({
|
|
176
167
|
plaintextBytes,
|
|
177
168
|
author: alice,
|
|
178
169
|
protocolDefinition: encryptedProtocol,
|
|
@@ -180,14 +171,14 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
180
171
|
encryptSymmetricKeyWithProtocolPathDerivedKey: true,
|
|
181
172
|
encryptSymmetricKeyWithProtocolContextDerivedKey: false
|
|
182
173
|
});
|
|
183
|
-
const decryptedStreamB =
|
|
184
|
-
const plaintextB =
|
|
174
|
+
const decryptedStreamB = await Records.decrypt(encryptedRecord2.message, keyDecrypter, encryptedRecord2.dataStream);
|
|
175
|
+
const plaintextB = await DataStream.toBytes(decryptedStreamB);
|
|
185
176
|
// Assert A and B are identical
|
|
186
177
|
expect(Encoder.bytesToString(plaintextA)).toBe(plaintext);
|
|
187
178
|
expect(Encoder.bytesToString(plaintextB)).toBe(plaintext);
|
|
188
179
|
expect(plaintextA).toEqual(plaintextB);
|
|
189
|
-
})
|
|
190
|
-
it('throws if no matching recipient entry found', () =>
|
|
180
|
+
});
|
|
181
|
+
it('throws if no matching recipient entry found', async () => {
|
|
191
182
|
const protocolDefinition = {
|
|
192
183
|
protocol: 'https://example.com/protocol/mismatch-test',
|
|
193
184
|
published: true,
|
|
@@ -202,11 +193,11 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
202
193
|
}
|
|
203
194
|
};
|
|
204
195
|
// Derive and inject encryption keys
|
|
205
|
-
const encryptedProtocol =
|
|
206
|
-
const alice =
|
|
196
|
+
const encryptedProtocol = await Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, rootKeyId, privateJwk);
|
|
197
|
+
const alice = await TestDataGenerator.generatePersona();
|
|
207
198
|
const plaintext = 'This is a secret message';
|
|
208
199
|
const plaintextBytes = Encoder.stringToBytes(plaintext);
|
|
209
|
-
const encryptedRecord =
|
|
200
|
+
const encryptedRecord = await TestDataGenerator.generateProtocolEncryptedRecordsWrite({
|
|
210
201
|
plaintextBytes,
|
|
211
202
|
author: alice,
|
|
212
203
|
protocolDefinition: encryptedProtocol,
|
|
@@ -218,13 +209,13 @@ describe('Encryption Callback Interfaces', () => {
|
|
|
218
209
|
const keyDecrypter = {
|
|
219
210
|
rootKeyId: 'did:example:bob#enc', // Wrong key ID
|
|
220
211
|
derivationScheme: KeyDerivationScheme.ProtocolPath,
|
|
221
|
-
decrypt: () =>
|
|
212
|
+
decrypt: async () => {
|
|
222
213
|
throw new Error('Should not be called');
|
|
223
|
-
}
|
|
214
|
+
}
|
|
224
215
|
};
|
|
225
216
|
// Attempt to decrypt — should throw
|
|
226
|
-
|
|
227
|
-
})
|
|
217
|
+
await expect(Records.decrypt(encryptedRecord.message, keyDecrypter, encryptedRecord.dataStream)).rejects.toThrow('Unable to find a JWE recipient matching key');
|
|
218
|
+
});
|
|
228
219
|
});
|
|
229
220
|
});
|
|
230
221
|
//# sourceMappingURL=encryption-callbacks.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption-callbacks.spec.js","sourceRoot":"","sources":["../../../../tests/utils/encryption-callbacks.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encryption-callbacks.spec.js","sourceRoot":"","sources":["../../../../tests/utils/encryption-callbacks.spec.ts"],"names":[],"mappings":"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"}
|