@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,14 +1,13 @@
|
|
|
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 { Time } from '../../src/utils/time.js';
|
|
11
2
|
export class Poller {
|
|
3
|
+
/**
|
|
4
|
+
* The interval in milliseconds to wait before retrying the delegate function.
|
|
5
|
+
*/
|
|
6
|
+
static pollRetrySleep = 20;
|
|
7
|
+
/**
|
|
8
|
+
* The maximum time in milliseconds to wait before timing out the delegate function.
|
|
9
|
+
*/
|
|
10
|
+
static pollTimeout = 2000;
|
|
12
11
|
/**
|
|
13
12
|
* Polls the delegate function until it succeeds or the timeout is exceeded.
|
|
14
13
|
*
|
|
@@ -18,32 +17,22 @@ export class Poller {
|
|
|
18
17
|
*
|
|
19
18
|
* @throws {Error} `Operation timed out` if the timeout is exceeded.
|
|
20
19
|
*/
|
|
21
|
-
static pollUntilSuccessOrTimeout(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
throw new Error('Operation timed out');
|
|
33
|
-
}
|
|
34
|
-
// Sleep for the retry interval before attempting again
|
|
35
|
-
yield Time.sleep(retrySleep);
|
|
20
|
+
static async pollUntilSuccessOrTimeout(delegate, retrySleep = Poller.pollRetrySleep, timeout = Poller.pollTimeout) {
|
|
21
|
+
const startTime = Date.now();
|
|
22
|
+
while (true) {
|
|
23
|
+
try {
|
|
24
|
+
// Attempt to execute the delegate function
|
|
25
|
+
return await delegate();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Check if the timeout has been exceeded
|
|
29
|
+
if (Date.now() - startTime >= timeout) {
|
|
30
|
+
throw new Error('Operation timed out');
|
|
36
31
|
}
|
|
32
|
+
// Sleep for the retry interval before attempting again
|
|
33
|
+
await Time.sleep(retrySleep);
|
|
37
34
|
}
|
|
38
|
-
}
|
|
35
|
+
}
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
|
-
/**
|
|
42
|
-
* The interval in milliseconds to wait before retrying the delegate function.
|
|
43
|
-
*/
|
|
44
|
-
Poller.pollRetrySleep = 20;
|
|
45
|
-
/**
|
|
46
|
-
* The maximum time in milliseconds to wait before timing out the delegate function.
|
|
47
|
-
*/
|
|
48
|
-
Poller.pollTimeout = 2000;
|
|
49
38
|
//# sourceMappingURL=poller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../tests/utils/poller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../../tests/utils/poller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,MAAM,OAAO,MAAM;IAEjB;;OAEG;IACH,MAAM,CAAC,cAAc,GAAW,EAAE,CAAC;IAEnC;;OAEG;IACH,MAAM,CAAC,WAAW,GAAW,IAAI,CAAC;IAElC;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,yBAAyB,CACpC,QAA0B,EAC1B,aAAqB,MAAM,CAAC,cAAc,EAC1C,UAAkB,MAAM,CAAC,WAAW;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,2CAA2C;gBAC3C,OAAO,MAAM,QAAQ,EAAE,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;gBACzC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACzC,CAAC;gBAED,uDAAuD;gBACvD,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC"}
|
|
@@ -1,44 +1,35 @@
|
|
|
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 { DwnErrorCode } from '../../src/core/dwn-error.js';
|
|
11
2
|
import { PrivateKeySigner } from '../../src/index.js';
|
|
12
3
|
import { Secp256k1 } from '../../src/utils/secp256k1.js';
|
|
13
4
|
import { describe, expect, it } from 'bun:test';
|
|
14
5
|
describe('PrivateKeySigner', () => {
|
|
15
6
|
describe('constructor', () => {
|
|
16
|
-
it('should use key ID found in the private JWK if no key ID is explicitly given', () =>
|
|
17
|
-
const { privateJwk } =
|
|
7
|
+
it('should use key ID found in the private JWK if no key ID is explicitly given', async () => {
|
|
8
|
+
const { privateJwk } = await Secp256k1.generateKeyPair();
|
|
18
9
|
privateJwk.kid = 'awesome-key-id';
|
|
19
10
|
const signer = new PrivateKeySigner({ privateJwk });
|
|
20
11
|
expect(signer.keyId).toBe(privateJwk.kid);
|
|
21
|
-
})
|
|
22
|
-
it('should override signature algorithm found in the private JWK if a value is explicitly given', () =>
|
|
23
|
-
const { privateJwk } =
|
|
12
|
+
});
|
|
13
|
+
it('should override signature algorithm found in the private JWK if a value is explicitly given', async () => {
|
|
14
|
+
const { privateJwk } = await Secp256k1.generateKeyPair();
|
|
24
15
|
const explicitlySpecifiedAlgorithm = 'awesome-algorithm';
|
|
25
16
|
const signer = new PrivateKeySigner({ privateJwk, keyId: 'anyValue', algorithm: explicitlySpecifiedAlgorithm });
|
|
26
17
|
expect(signer.algorithm).toBe(explicitlySpecifiedAlgorithm);
|
|
27
|
-
})
|
|
28
|
-
it('should throw if key ID is not explicitly specified and not given in private JWK', () =>
|
|
29
|
-
const { privateJwk } =
|
|
18
|
+
});
|
|
19
|
+
it('should throw if key ID is not explicitly specified and not given in private JWK', async () => {
|
|
20
|
+
const { privateJwk } = await Secp256k1.generateKeyPair();
|
|
30
21
|
expect(() => new PrivateKeySigner({ privateJwk })).toThrow(DwnErrorCode.PrivateKeySignerUnableToDeduceKeyId);
|
|
31
|
-
})
|
|
32
|
-
it('should throw if signature algorithm is not explicitly specified and not given in private JWK', () =>
|
|
33
|
-
const { privateJwk } =
|
|
22
|
+
});
|
|
23
|
+
it('should throw if signature algorithm is not explicitly specified and not given in private JWK', async () => {
|
|
24
|
+
const { privateJwk } = await Secp256k1.generateKeyPair();
|
|
34
25
|
delete privateJwk.alg; // remove `alg` for this test
|
|
35
26
|
expect(() => new PrivateKeySigner({ privateJwk, keyId: 'anyValue' })).toThrow(DwnErrorCode.PrivateKeySignerUnableToDeduceAlgorithm);
|
|
36
|
-
})
|
|
37
|
-
it('should throw if crypto curve of the given private JWK is not supported', () =>
|
|
38
|
-
const { privateJwk } =
|
|
27
|
+
});
|
|
28
|
+
it('should throw if crypto curve of the given private JWK is not supported', async () => {
|
|
29
|
+
const { privateJwk } = await Secp256k1.generateKeyPair();
|
|
39
30
|
privateJwk.crv = 'unknown'; // change `crv` to an unsupported value for this test
|
|
40
31
|
expect(() => new PrivateKeySigner({ privateJwk, keyId: 'anyValue' })).toThrow(DwnErrorCode.PrivateKeySignerUnsupportedCurve);
|
|
41
|
-
})
|
|
32
|
+
});
|
|
42
33
|
});
|
|
43
34
|
});
|
|
44
35
|
//# sourceMappingURL=private-key-signer.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"private-key-signer.spec.js","sourceRoot":"","sources":["../../../../tests/utils/private-key-signer.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"private-key-signer.spec.js","sourceRoot":"","sources":["../../../../tests/utils/private-key-signer.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEhD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YACzD,UAAU,CAAC,GAAG,GAAG,gBAAgB,CAAC;YAElC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;YAC3G,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YAEzD,MAAM,4BAA4B,GAAG,mBAAmB,CAAC;YACzD,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAC,CAAC;YAChH,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;YAC/F,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YAEzD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8FAA8F,EAAE,KAAK,IAAI,EAAE;YAC5G,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YACzD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,6BAA6B;YAEpD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAC;QACtI,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YACxD,UAAkB,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,qDAAqD;YAE1F,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;QAC/H,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -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 { describe, expect, it } from 'bun:test';
|
|
11
2
|
import { DateSort } from '../../src/types/records-types.js';
|
|
12
3
|
import { DwnErrorCode } from '../../src/core/dwn-error.js';
|
|
@@ -15,17 +6,17 @@ import { SortDirection } from '../../src/types/query-types.js';
|
|
|
15
6
|
import { DwnInterfaceName, DwnMethodName, KeyDerivationScheme, Records } from '../../src/index.js';
|
|
16
7
|
describe('Records', () => {
|
|
17
8
|
describe('deriveLeafPrivateKey()', () => {
|
|
18
|
-
it('should throw if given private key is not supported', () =>
|
|
9
|
+
it('should throw if given private key is not supported', async () => {
|
|
19
10
|
const derivedKey = {
|
|
20
11
|
rootKeyId: 'unused',
|
|
21
12
|
derivationScheme: KeyDerivationScheme.ProtocolPath,
|
|
22
|
-
derivedPrivateKey: (
|
|
13
|
+
derivedPrivateKey: (await ed25519.generateKeyPair()).privateJwk
|
|
23
14
|
};
|
|
24
|
-
|
|
25
|
-
})
|
|
15
|
+
await expect(Records.derivePrivateKey(derivedKey, ['a'])).rejects.toThrow(DwnErrorCode.RecordsDerivePrivateKeyUnSupportedCurve);
|
|
16
|
+
});
|
|
26
17
|
});
|
|
27
18
|
describe('constructKeyDerivationPathUsingProtocolPathScheme()', () => {
|
|
28
|
-
it('should
|
|
19
|
+
it('should construct a valid key derivation path using protocol path scheme', async () => {
|
|
29
20
|
const descriptor = {
|
|
30
21
|
interface: DwnInterfaceName.Records,
|
|
31
22
|
method: DwnMethodName.Write,
|
|
@@ -34,22 +25,18 @@ describe('Records', () => {
|
|
|
34
25
|
dataSize: 123,
|
|
35
26
|
dateCreated: '2022-12-19T10:20:30.123456Z',
|
|
36
27
|
messageTimestamp: '2022-12-19T10:20:30.123456Z',
|
|
28
|
+
protocol: 'http://test-protocol.xyz',
|
|
29
|
+
protocolPath: 'testRecord',
|
|
37
30
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
})
|
|
31
|
+
const path = Records.constructKeyDerivationPathUsingProtocolPathScheme(descriptor);
|
|
32
|
+
expect(path).toEqual([KeyDerivationScheme.ProtocolPath, 'http://test-protocol.xyz', 'testRecord']);
|
|
33
|
+
});
|
|
41
34
|
});
|
|
42
35
|
describe('constructKeyDerivationPathUsingProtocolContextScheme()', () => {
|
|
43
|
-
it('should
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
})
|
|
47
|
-
});
|
|
48
|
-
describe('constructKeyDerivationPathUsingSchemasScheme()', () => {
|
|
49
|
-
it('should throw if not given schema', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
-
expect(() => Records.constructKeyDerivationPathUsingSchemasScheme(undefined))
|
|
51
|
-
.toThrow(DwnErrorCode.RecordsSchemasDerivationSchemeMissingSchema);
|
|
52
|
-
}));
|
|
36
|
+
it('should construct a valid key derivation path using protocol context scheme', async () => {
|
|
37
|
+
const path = Records.constructKeyDerivationPathUsingProtocolContextScheme('rootId/childId');
|
|
38
|
+
expect(path).toEqual([KeyDerivationScheme.ProtocolContext, 'rootId']);
|
|
39
|
+
});
|
|
53
40
|
});
|
|
54
41
|
describe('convertDateSort()', () => {
|
|
55
42
|
it('should return messageTimestamp descending when no dateSort is given', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.spec.js","sourceRoot":"","sources":["../../../../tests/utils/records.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"records.spec.js","sourceRoot":"","sources":["../../../../tests/utils/records.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 { base64url } from 'multiformats/bases/base64';
|
|
11
2
|
import { DwnErrorCode } from '../../src/core/dwn-error.js';
|
|
12
3
|
import { Secp256k1 } from '../../src/utils/secp256k1.js';
|
|
@@ -14,37 +5,37 @@ import { TestDataGenerator } from './test-data-generator.js';
|
|
|
14
5
|
import { describe, expect, it } from 'bun:test';
|
|
15
6
|
describe('Secp256k1', () => {
|
|
16
7
|
describe('generateKeyPairRaw()', () => {
|
|
17
|
-
it('should generate compressed publicKey', () =>
|
|
18
|
-
const { publicKey } =
|
|
8
|
+
it('should generate compressed publicKey', async () => {
|
|
9
|
+
const { publicKey } = await Secp256k1.generateKeyPairRaw();
|
|
19
10
|
expect(publicKey.length).toBe(33);
|
|
20
|
-
})
|
|
11
|
+
});
|
|
21
12
|
});
|
|
22
13
|
describe('validateKey()', () => {
|
|
23
|
-
it('should throw if key is not a valid SECP256K1 key', () =>
|
|
24
|
-
const validKey = (
|
|
25
|
-
expect(() => Secp256k1.validateKey(
|
|
26
|
-
expect(() => Secp256k1.validateKey(
|
|
27
|
-
})
|
|
14
|
+
it('should throw if key is not a valid SECP256K1 key', async () => {
|
|
15
|
+
const validKey = (await Secp256k1.generateKeyPair()).publicJwk;
|
|
16
|
+
expect(() => Secp256k1.validateKey({ ...validKey, kty: 'invalidKty' })).toThrow(DwnErrorCode.Secp256k1KeyNotValid);
|
|
17
|
+
expect(() => Secp256k1.validateKey({ ...validKey, crv: 'invalidCrv' })).toThrow(DwnErrorCode.Secp256k1KeyNotValid);
|
|
18
|
+
});
|
|
28
19
|
});
|
|
29
20
|
describe('publicKeyToJwk()', () => {
|
|
30
|
-
it('should generate the same JWK regardless of compressed or compressed public key bytes given', () =>
|
|
21
|
+
it('should generate the same JWK regardless of compressed or compressed public key bytes given', async () => {
|
|
31
22
|
const compressedPublicKeyBase64UrlString = 'A5roVr1J6MufaaBwweb5Q75PrZCbZpzC55kTCO68ylMs';
|
|
32
23
|
const uncompressedPublicKeyBase64UrlString = 'BJroVr1J6MufaaBwweb5Q75PrZCbZpzC55kTCO68ylMsyC3G4QfbKeDzIr2BwyMUQ3Na1mxPvwxJ8GBMO3jkGL0';
|
|
33
24
|
const compressedPublicKey = base64url.baseDecode(compressedPublicKeyBase64UrlString);
|
|
34
25
|
const uncompressedPublicKey = base64url.baseDecode(uncompressedPublicKeyBase64UrlString);
|
|
35
|
-
const publicJwk1 =
|
|
36
|
-
const publicJwk2 =
|
|
26
|
+
const publicJwk1 = await Secp256k1.publicKeyToJwk(compressedPublicKey);
|
|
27
|
+
const publicJwk2 = await Secp256k1.publicKeyToJwk(uncompressedPublicKey);
|
|
37
28
|
expect(publicJwk1.x).toBe(publicJwk2.x);
|
|
38
29
|
expect(publicJwk1.y).toBe(publicJwk2.y);
|
|
39
|
-
})
|
|
30
|
+
});
|
|
40
31
|
});
|
|
41
32
|
describe('sign()', () => {
|
|
42
|
-
it('should generate the signature in compact format', () =>
|
|
43
|
-
const { privateJwk } =
|
|
33
|
+
it('should generate the signature in compact format', async () => {
|
|
34
|
+
const { privateJwk } = await Secp256k1.generateKeyPair();
|
|
44
35
|
const contentBytes = TestDataGenerator.randomBytes(16);
|
|
45
|
-
const signatureBytes =
|
|
36
|
+
const signatureBytes = await Secp256k1.sign(contentBytes, privateJwk);
|
|
46
37
|
expect(signatureBytes.length).toBe(64); // DER format would be 70 bytes
|
|
47
|
-
})
|
|
38
|
+
});
|
|
48
39
|
});
|
|
49
40
|
});
|
|
50
41
|
//# sourceMappingURL=secp256k1.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secp256k1.spec.js","sourceRoot":"","sources":["../../../../tests/utils/secp256k1.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"secp256k1.spec.js","sourceRoot":"","sources":["../../../../tests/utils/secp256k1.spec.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAEhD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAC;YAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,QAAQ,GAAG,CAAC,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC;YAE/D,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,YAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;YAC1H,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,YAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAC5H,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;YAC1G,MAAM,kCAAkC,GAAG,8CAA8C,CAAC;YAC1F,MAAM,oCAAoC,GAAG,yFAAyF,CAAC;YAEvI,MAAM,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;YACrF,MAAM,qBAAqB,GAAG,SAAS,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;YAEzF,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;YACvE,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;YAEzE,MAAM,CAAE,UAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAE,UAAgC,CAAC,CAAC,CAAC,CAAC;YACtF,MAAM,CAAE,UAAgC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAE,UAAgC,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,eAAe,EAAE,CAAC;YAEzD,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YACvD,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAEtE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B;QACzE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -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 { base64url } from 'multiformats/bases/base64';
|
|
11
2
|
import { DwnErrorCode } from '../../src/core/dwn-error.js';
|
|
12
3
|
import { p256 } from '@noble/curves/p256';
|
|
@@ -15,42 +6,42 @@ import { TestDataGenerator } from './test-data-generator.js';
|
|
|
15
6
|
import { describe, expect, it } from 'bun:test';
|
|
16
7
|
describe('Secp256r1', () => {
|
|
17
8
|
describe('validateKey()', () => {
|
|
18
|
-
it('should throw if key is not a valid SECP256R1 key', () =>
|
|
19
|
-
const validKey = (
|
|
20
|
-
expect(() => Secp256r1.validateKey(
|
|
21
|
-
expect(() => Secp256r1.validateKey(
|
|
22
|
-
})
|
|
9
|
+
it('should throw if key is not a valid SECP256R1 key', async () => {
|
|
10
|
+
const validKey = (await Secp256r1.generateKeyPair()).publicJwk;
|
|
11
|
+
expect(() => Secp256r1.validateKey({ ...validKey, kty: 'invalidKty' })).toThrow(DwnErrorCode.Secp256r1KeyNotValid);
|
|
12
|
+
expect(() => Secp256r1.validateKey({ ...validKey, crv: 'invalidCrv' })).toThrow(DwnErrorCode.Secp256r1KeyNotValid);
|
|
13
|
+
});
|
|
23
14
|
});
|
|
24
15
|
describe('publicKeyToJwk()', () => {
|
|
25
|
-
it('should generate the same JWK regardless of compressed or uncompressed public key bytes given', () =>
|
|
16
|
+
it('should generate the same JWK regardless of compressed or uncompressed public key bytes given', async () => {
|
|
26
17
|
const compressedPublicKeyBase64UrlString = 'Aom0shYia6t0cNMRQDRzPgCxdMWQamrfX3UJfOroLHo_';
|
|
27
18
|
const uncompressedPublicKeyBase64UrlString = 'BIm0shYia6t0cNMRQDRzPgCxdMWQamrfX3UJfOroLHo_cSITyng0NN1lt2BtZVXH4PE9Gerxq_mw2_CpbBHsWUI';
|
|
28
19
|
const compressedPublicKey = base64url.baseDecode(compressedPublicKeyBase64UrlString);
|
|
29
20
|
const uncompressedPublicKey = base64url.baseDecode(uncompressedPublicKeyBase64UrlString);
|
|
30
|
-
const publicJwk1 =
|
|
31
|
-
const publicJwk2 =
|
|
21
|
+
const publicJwk1 = await Secp256r1.publicKeyToJwk(compressedPublicKey);
|
|
22
|
+
const publicJwk2 = await Secp256r1.publicKeyToJwk(uncompressedPublicKey);
|
|
32
23
|
expect(publicJwk1.x).toBe(publicJwk2.x);
|
|
33
24
|
expect(publicJwk1.y).toBe(publicJwk2.y);
|
|
34
|
-
})
|
|
25
|
+
});
|
|
35
26
|
});
|
|
36
27
|
describe('verify()', () => {
|
|
37
|
-
it('should correctly handle DER formatted signatures', () =>
|
|
38
|
-
const { privateJwk, publicJwk } =
|
|
28
|
+
it('should correctly handle DER formatted signatures', async () => {
|
|
29
|
+
const { privateJwk, publicJwk } = await Secp256r1.generateKeyPair();
|
|
39
30
|
const content = TestDataGenerator.randomBytes(16);
|
|
40
|
-
const signature =
|
|
31
|
+
const signature = await Secp256r1.sign(content, privateJwk);
|
|
41
32
|
// Convert the signature to DER format
|
|
42
33
|
const derSignature = p256.Signature.fromCompact(signature).toDERRawBytes();
|
|
43
|
-
const result =
|
|
34
|
+
const result = await Secp256r1.verify(content, derSignature, publicJwk);
|
|
44
35
|
expect(result).toBe(true);
|
|
45
|
-
})
|
|
36
|
+
});
|
|
46
37
|
});
|
|
47
38
|
describe('sign()', () => {
|
|
48
|
-
it('should generate the signature in compact format', () =>
|
|
49
|
-
const { privateJwk } =
|
|
39
|
+
it('should generate the signature in compact format', async () => {
|
|
40
|
+
const { privateJwk } = await Secp256r1.generateKeyPair();
|
|
50
41
|
const contentBytes = TestDataGenerator.randomBytes(16);
|
|
51
|
-
const signatureBytes =
|
|
42
|
+
const signatureBytes = await Secp256r1.sign(contentBytes, privateJwk);
|
|
52
43
|
expect(signatureBytes.length).toBe(64); // DER format would be 70 bytes
|
|
53
|
-
})
|
|
44
|
+
});
|
|
54
45
|
});
|
|
55
46
|
});
|
|
56
47
|
//# sourceMappingURL=secp256r1.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secp256r1.spec.js","sourceRoot":"","sources":["../../../../tests/utils/secp256r1.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"secp256r1.spec.js","sourceRoot":"","sources":["../../../../tests/utils/secp256r1.spec.ts"],"names":[],"mappings":"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"}
|