@abaxxtech/id 0.0.0
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/LICENSE +201 -0
- package/README.md +31 -0
- package/README.npm.md +31 -0
- package/dist/bundles/dwn.js +83 -0
- package/dist/cjs/index.js +31250 -0
- package/dist/cjs/package.json +1 -0
- package/dist/esm/generated/precompiled-validators.js +7820 -0
- package/dist/esm/generated/precompiled-validators.js.map +1 -0
- package/dist/esm/json-schemas/definitions.json +23 -0
- package/dist/esm/src/core/abstract-message.js +37 -0
- package/dist/esm/src/core/abstract-message.js.map +1 -0
- package/dist/esm/src/core/auth.js +97 -0
- package/dist/esm/src/core/auth.js.map +1 -0
- package/dist/esm/src/core/dwn-constant.js +8 -0
- package/dist/esm/src/core/dwn-constant.js.map +1 -0
- package/dist/esm/src/core/dwn-error.js +138 -0
- package/dist/esm/src/core/dwn-error.js.map +1 -0
- package/dist/esm/src/core/grant-authorization.js +108 -0
- package/dist/esm/src/core/grant-authorization.js.map +1 -0
- package/dist/esm/src/core/message-reply.js +5 -0
- package/dist/esm/src/core/message-reply.js.map +1 -0
- package/dist/esm/src/core/message.js +200 -0
- package/dist/esm/src/core/message.js.map +1 -0
- package/dist/esm/src/core/protocol-authorization.js +449 -0
- package/dist/esm/src/core/protocol-authorization.js.map +1 -0
- package/dist/esm/src/core/records-grant-authorization.js +106 -0
- package/dist/esm/src/core/records-grant-authorization.js.map +1 -0
- package/dist/esm/src/core/tenant-gate.js +20 -0
- package/dist/esm/src/core/tenant-gate.js.map +1 -0
- package/dist/esm/src/did/did-dht-resolver.js +241 -0
- package/dist/esm/src/did/did-dht-resolver.js.map +1 -0
- package/dist/esm/src/did/did-ion-resolver.js +53 -0
- package/dist/esm/src/did/did-ion-resolver.js.map +1 -0
- package/dist/esm/src/did/did-key-resolver.js +135 -0
- package/dist/esm/src/did/did-key-resolver.js.map +1 -0
- package/dist/esm/src/did/did-resolver.js +70 -0
- package/dist/esm/src/did/did-resolver.js.map +1 -0
- package/dist/esm/src/did/did.js +36 -0
- package/dist/esm/src/did/did.js.map +1 -0
- package/dist/esm/src/dwn.js +164 -0
- package/dist/esm/src/dwn.js.map +1 -0
- package/dist/esm/src/enums/dwn-interface-method.js +22 -0
- package/dist/esm/src/enums/dwn-interface-method.js.map +1 -0
- package/dist/esm/src/event-log/event-log-level.js +112 -0
- package/dist/esm/src/event-log/event-log-level.js.map +1 -0
- package/dist/esm/src/handlers/events-get.js +48 -0
- package/dist/esm/src/handlers/events-get.js.map +1 -0
- package/dist/esm/src/handlers/messages-get.js +76 -0
- package/dist/esm/src/handlers/messages-get.js.map +1 -0
- package/dist/esm/src/handlers/permissions-grant.js +62 -0
- package/dist/esm/src/handlers/permissions-grant.js.map +1 -0
- package/dist/esm/src/handlers/permissions-request.js +63 -0
- package/dist/esm/src/handlers/permissions-request.js.map +1 -0
- package/dist/esm/src/handlers/permissions-revoke.js +114 -0
- package/dist/esm/src/handlers/permissions-revoke.js.map +1 -0
- package/dist/esm/src/handlers/protocols-configure.js +102 -0
- package/dist/esm/src/handlers/protocols-configure.js.map +1 -0
- package/dist/esm/src/handlers/protocols-query.js +72 -0
- package/dist/esm/src/handlers/protocols-query.js.map +1 -0
- package/dist/esm/src/handlers/records-delete.js +119 -0
- package/dist/esm/src/handlers/records-delete.js.map +1 -0
- package/dist/esm/src/handlers/records-query.js +206 -0
- package/dist/esm/src/handlers/records-query.js.map +1 -0
- package/dist/esm/src/handlers/records-read.js +118 -0
- package/dist/esm/src/handlers/records-read.js.map +1 -0
- package/dist/esm/src/handlers/records-write.js +252 -0
- package/dist/esm/src/handlers/records-write.js.map +1 -0
- package/dist/esm/src/index.js +43 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/interfaces/events-get.js +41 -0
- package/dist/esm/src/interfaces/events-get.js.map +1 -0
- package/dist/esm/src/interfaces/messages-get.js +58 -0
- package/dist/esm/src/interfaces/messages-get.js.map +1 -0
- package/dist/esm/src/interfaces/permissions-grant.js +130 -0
- package/dist/esm/src/interfaces/permissions-grant.js.map +1 -0
- package/dist/esm/src/interfaces/permissions-request.js +47 -0
- package/dist/esm/src/interfaces/permissions-request.js.map +1 -0
- package/dist/esm/src/interfaces/permissions-revoke.js +47 -0
- package/dist/esm/src/interfaces/permissions-revoke.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-configure.js +149 -0
- package/dist/esm/src/interfaces/protocols-configure.js.map +1 -0
- package/dist/esm/src/interfaces/protocols-query.js +80 -0
- package/dist/esm/src/interfaces/protocols-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-delete.js +56 -0
- package/dist/esm/src/interfaces/records-delete.js.map +1 -0
- package/dist/esm/src/interfaces/records-query.js +81 -0
- package/dist/esm/src/interfaces/records-query.js.map +1 -0
- package/dist/esm/src/interfaces/records-read.js +65 -0
- package/dist/esm/src/interfaces/records-read.js.map +1 -0
- package/dist/esm/src/interfaces/records-write.js +677 -0
- package/dist/esm/src/interfaces/records-write.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js +54 -0
- package/dist/esm/src/jose/algorithms/signing/ed25519.js.map +1 -0
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js +13 -0
- package/dist/esm/src/jose/algorithms/signing/signature-algorithms.js.map +1 -0
- package/dist/esm/src/jose/jws/general/builder.js +47 -0
- package/dist/esm/src/jose/jws/general/builder.js.map +1 -0
- package/dist/esm/src/jose/jws/general/signer.js +36 -0
- package/dist/esm/src/jose/jws/general/signer.js.map +1 -0
- package/dist/esm/src/jose/jws/general/verifier.js +97 -0
- package/dist/esm/src/jose/jws/general/verifier.js.map +1 -0
- package/dist/esm/src/schema-validator.js +28 -0
- package/dist/esm/src/schema-validator.js.map +1 -0
- package/dist/esm/src/store/blockstore-level.js +187 -0
- package/dist/esm/src/store/blockstore-level.js.map +1 -0
- package/dist/esm/src/store/data-store-level.js +192 -0
- package/dist/esm/src/store/data-store-level.js.map +1 -0
- package/dist/esm/src/store/index-level.js +302 -0
- package/dist/esm/src/store/index-level.js.map +1 -0
- package/dist/esm/src/store/level-wrapper.js +296 -0
- package/dist/esm/src/store/level-wrapper.js.map +1 -0
- package/dist/esm/src/store/message-store-level.js +236 -0
- package/dist/esm/src/store/message-store-level.js.map +1 -0
- package/dist/esm/src/store/storage-controller.js +69 -0
- package/dist/esm/src/store/storage-controller.js.map +1 -0
- package/dist/esm/src/types/cache.js +2 -0
- package/dist/esm/src/types/cache.js.map +1 -0
- package/dist/esm/src/types/data-store.js +2 -0
- package/dist/esm/src/types/data-store.js.map +1 -0
- package/dist/esm/src/types/delegated-grant-message.js +2 -0
- package/dist/esm/src/types/delegated-grant-message.js.map +1 -0
- package/dist/esm/src/types/did-types.js +2 -0
- package/dist/esm/src/types/did-types.js.map +1 -0
- package/dist/esm/src/types/event-log.js +2 -0
- package/dist/esm/src/types/event-log.js.map +1 -0
- package/dist/esm/src/types/event-types.js +2 -0
- package/dist/esm/src/types/event-types.js.map +1 -0
- package/dist/esm/src/types/jose-types.js +2 -0
- package/dist/esm/src/types/jose-types.js.map +1 -0
- package/dist/esm/src/types/jws-types.js +2 -0
- package/dist/esm/src/types/jws-types.js.map +1 -0
- package/dist/esm/src/types/message-interface.js +2 -0
- package/dist/esm/src/types/message-interface.js.map +1 -0
- package/dist/esm/src/types/message-store.js +2 -0
- package/dist/esm/src/types/message-store.js.map +1 -0
- package/dist/esm/src/types/message-types.js +6 -0
- package/dist/esm/src/types/message-types.js.map +1 -0
- package/dist/esm/src/types/messages-types.js +2 -0
- package/dist/esm/src/types/messages-types.js.map +1 -0
- package/dist/esm/src/types/method-handler.js +2 -0
- package/dist/esm/src/types/method-handler.js.map +1 -0
- package/dist/esm/src/types/permissions-grant-descriptor.js +6 -0
- package/dist/esm/src/types/permissions-grant-descriptor.js.map +1 -0
- package/dist/esm/src/types/permissions-types.js +2 -0
- package/dist/esm/src/types/permissions-types.js.map +1 -0
- package/dist/esm/src/types/protocols-types.js +15 -0
- package/dist/esm/src/types/protocols-types.js.map +1 -0
- package/dist/esm/src/types/records-types.js +8 -0
- package/dist/esm/src/types/records-types.js.map +1 -0
- package/dist/esm/src/types/signer.js +2 -0
- package/dist/esm/src/types/signer.js.map +1 -0
- package/dist/esm/src/utils/abort.js +40 -0
- package/dist/esm/src/utils/abort.js.map +1 -0
- package/dist/esm/src/utils/array.js +72 -0
- package/dist/esm/src/utils/array.js.map +1 -0
- package/dist/esm/src/utils/cid.js +130 -0
- package/dist/esm/src/utils/cid.js.map +1 -0
- package/dist/esm/src/utils/data-stream.js +88 -0
- package/dist/esm/src/utils/data-stream.js.map +1 -0
- package/dist/esm/src/utils/encoder.js +45 -0
- package/dist/esm/src/utils/encoder.js.map +1 -0
- package/dist/esm/src/utils/encryption.js +128 -0
- package/dist/esm/src/utils/encryption.js.map +1 -0
- package/dist/esm/src/utils/hd-key.js +60 -0
- package/dist/esm/src/utils/hd-key.js.map +1 -0
- package/dist/esm/src/utils/jws.js +89 -0
- package/dist/esm/src/utils/jws.js.map +1 -0
- package/dist/esm/src/utils/memory-cache.js +41 -0
- package/dist/esm/src/utils/memory-cache.js.map +1 -0
- package/dist/esm/src/utils/object.js +50 -0
- package/dist/esm/src/utils/object.js.map +1 -0
- package/dist/esm/src/utils/private-key-signer.js +43 -0
- package/dist/esm/src/utils/private-key-signer.js.map +1 -0
- package/dist/esm/src/utils/protocols.js +51 -0
- package/dist/esm/src/utils/protocols.js.map +1 -0
- package/dist/esm/src/utils/records.js +267 -0
- package/dist/esm/src/utils/records.js.map +1 -0
- package/dist/esm/src/utils/secp256k1.js +219 -0
- package/dist/esm/src/utils/secp256k1.js.map +1 -0
- package/dist/esm/src/utils/string.js +16 -0
- package/dist/esm/src/utils/string.js.map +1 -0
- package/dist/esm/src/utils/time.js +84 -0
- package/dist/esm/src/utils/time.js.map +1 -0
- package/dist/esm/src/utils/url.js +63 -0
- package/dist/esm/src/utils/url.js.map +1 -0
- package/dist/esm/tests/core/auth.spec.js +25 -0
- package/dist/esm/tests/core/auth.spec.js.map +1 -0
- package/dist/esm/tests/core/message-reply.spec.js +19 -0
- package/dist/esm/tests/core/message-reply.spec.js.map +1 -0
- package/dist/esm/tests/core/message.spec.js +85 -0
- package/dist/esm/tests/core/message.spec.js.map +1 -0
- package/dist/esm/tests/did/did-ion-resolver.spec.js +82 -0
- package/dist/esm/tests/did/did-ion-resolver.spec.js.map +1 -0
- package/dist/esm/tests/did/did-key-resolver.spec.js +74 -0
- package/dist/esm/tests/did/did-key-resolver.spec.js.map +1 -0
- package/dist/esm/tests/did/did-resolver.spec.js +84 -0
- package/dist/esm/tests/did/did-resolver.spec.js.map +1 -0
- package/dist/esm/tests/did/did.spec.js +22 -0
- package/dist/esm/tests/did/did.spec.js.map +1 -0
- package/dist/esm/tests/dwn.spec.js +252 -0
- package/dist/esm/tests/dwn.spec.js.map +1 -0
- package/dist/esm/tests/end-to-end-tests.spec.js +218 -0
- package/dist/esm/tests/end-to-end-tests.spec.js.map +1 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js +137 -0
- package/dist/esm/tests/event-log/event-log-level.spec.js.map +1 -0
- package/dist/esm/tests/handlers/events-get.spec.js +108 -0
- package/dist/esm/tests/handlers/events-get.spec.js.map +1 -0
- package/dist/esm/tests/handlers/messages-get.spec.js +209 -0
- package/dist/esm/tests/handlers/messages-get.spec.js.map +1 -0
- package/dist/esm/tests/handlers/permissions-grant.spec.js +249 -0
- package/dist/esm/tests/handlers/permissions-grant.spec.js.map +1 -0
- package/dist/esm/tests/handlers/permissions-request.spec.js +132 -0
- package/dist/esm/tests/handlers/permissions-request.spec.js.map +1 -0
- package/dist/esm/tests/handlers/permissions-revoke.spec.js +311 -0
- package/dist/esm/tests/handlers/permissions-revoke.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js +254 -0
- package/dist/esm/tests/handlers/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js +373 -0
- package/dist/esm/tests/handlers/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-delete.spec.js +630 -0
- package/dist/esm/tests/handlers/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-query.spec.js +1937 -0
- package/dist/esm/tests/handlers/records-query.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-read.spec.js +1729 -0
- package/dist/esm/tests/handlers/records-read.spec.js.map +1 -0
- package/dist/esm/tests/handlers/records-write.spec.js +3381 -0
- package/dist/esm/tests/handlers/records-write.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/events-get.spec.js +73 -0
- package/dist/esm/tests/interfaces/events-get.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js +93 -0
- package/dist/esm/tests/interfaces/messages-get.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/permissions-grant.spec.js +216 -0
- package/dist/esm/tests/interfaces/permissions-grant.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/permissions-request.spec.js +45 -0
- package/dist/esm/tests/interfaces/permissions-request.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js +334 -0
- package/dist/esm/tests/interfaces/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js +49 -0
- package/dist/esm/tests/interfaces/protocols-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js +42 -0
- package/dist/esm/tests/interfaces/records-delete.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-query.spec.js +75 -0
- package/dist/esm/tests/interfaces/records-query.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-read.spec.js +65 -0
- package/dist/esm/tests/interfaces/records-read.spec.js.map +1 -0
- package/dist/esm/tests/interfaces/records-write.spec.js +369 -0
- package/dist/esm/tests/interfaces/records-write.spec.js.map +1 -0
- package/dist/esm/tests/jose/jws/general.spec.js +185 -0
- package/dist/esm/tests/jose/jws/general.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/delegated-grant.spec.js +490 -0
- package/dist/esm/tests/scenarios/delegated-grant.spec.js.map +1 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js +218 -0
- package/dist/esm/tests/scenarios/end-to-end-tests.spec.js.map +1 -0
- package/dist/esm/tests/store/data-store-level.spec.js +192 -0
- package/dist/esm/tests/store/data-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/index-level.spec.js +428 -0
- package/dist/esm/tests/store/index-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store-level.spec.js +51 -0
- package/dist/esm/tests/store/message-store-level.spec.js.map +1 -0
- package/dist/esm/tests/store/message-store.spec.js +395 -0
- package/dist/esm/tests/store/message-store.spec.js.map +1 -0
- package/dist/esm/tests/store-dependent-tests.spec.js +8 -0
- package/dist/esm/tests/store-dependent-tests.spec.js.map +1 -0
- package/dist/esm/tests/test-stores.js +40 -0
- package/dist/esm/tests/test-stores.js.map +1 -0
- package/dist/esm/tests/test-suite.js +51 -0
- package/dist/esm/tests/test-suite.js.map +1 -0
- package/dist/esm/tests/utils/cid.spec.js +83 -0
- package/dist/esm/tests/utils/cid.spec.js.map +1 -0
- package/dist/esm/tests/utils/data-stream.spec.js +30 -0
- package/dist/esm/tests/utils/data-stream.spec.js.map +1 -0
- package/dist/esm/tests/utils/encryption.spec.js +151 -0
- package/dist/esm/tests/utils/encryption.spec.js.map +1 -0
- package/dist/esm/tests/utils/jws.spec.js +11 -0
- package/dist/esm/tests/utils/jws.spec.js.map +1 -0
- package/dist/esm/tests/utils/memory-cache.spec.js +38 -0
- package/dist/esm/tests/utils/memory-cache.spec.js.map +1 -0
- package/dist/esm/tests/utils/object.spec.js +39 -0
- package/dist/esm/tests/utils/object.spec.js.map +1 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js +47 -0
- package/dist/esm/tests/utils/private-key-signer.spec.js.map +1 -0
- package/dist/esm/tests/utils/records.spec.js +56 -0
- package/dist/esm/tests/utils/records.spec.js.map +1 -0
- package/dist/esm/tests/utils/secp256k1.spec.js +77 -0
- package/dist/esm/tests/utils/secp256k1.spec.js.map +1 -0
- package/dist/esm/tests/utils/test-data-generator.js +570 -0
- package/dist/esm/tests/utils/test-data-generator.js.map +1 -0
- package/dist/esm/tests/utils/test-stub-generator.js +39 -0
- package/dist/esm/tests/utils/test-stub-generator.js.map +1 -0
- package/dist/esm/tests/utils/time.spec.js +67 -0
- package/dist/esm/tests/utils/time.spec.js.map +1 -0
- package/dist/esm/tests/utils/url.spec.js +46 -0
- package/dist/esm/tests/utils/url.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js +36 -0
- package/dist/esm/tests/validation/json-schemas/definitions.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js +53 -0
- package/dist/esm/tests/validation/json-schemas/jwk/general-jwk.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js +39 -0
- package/dist/esm/tests/validation/json-schemas/jwk/public-jwk.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js +76 -0
- package/dist/esm/tests/validation/json-schemas/jwk-verification-method.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js +74 -0
- package/dist/esm/tests/validation/json-schemas/protocols/protocols-configure.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js +151 -0
- package/dist/esm/tests/validation/json-schemas/records/records-query.spec.js.map +1 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js +389 -0
- package/dist/esm/tests/validation/json-schemas/records/records-write.spec.js.map +1 -0
- package/dist/esm/tests/vectors/protocol-definitions/anyone-collaborate.json +25 -0
- package/dist/esm/tests/vectors/protocol-definitions/author-can.json +32 -0
- package/dist/esm/tests/vectors/protocol-definitions/chat.json +56 -0
- package/dist/esm/tests/vectors/protocol-definitions/credential-issuance.json +37 -0
- package/dist/esm/tests/vectors/protocol-definitions/dex.json +52 -0
- package/dist/esm/tests/vectors/protocol-definitions/email.json +50 -0
- package/dist/esm/tests/vectors/protocol-definitions/free-for-all.json +30 -0
- package/dist/esm/tests/vectors/protocol-definitions/friend-role.json +48 -0
- package/dist/esm/tests/vectors/protocol-definitions/message.json +20 -0
- package/dist/esm/tests/vectors/protocol-definitions/minimal.json +10 -0
- package/dist/esm/tests/vectors/protocol-definitions/nested.json +31 -0
- package/dist/esm/tests/vectors/protocol-definitions/private-protocol.json +13 -0
- package/dist/esm/tests/vectors/protocol-definitions/recipient-can.json +36 -0
- package/dist/esm/tests/vectors/protocol-definitions/social-media.json +88 -0
- package/dist/esm/tests/vectors/protocol-definitions/thread-role.json +68 -0
- package/dist/types/generated/precompiled-validators.d.ts +113 -0
- package/dist/types/generated/precompiled-validators.d.ts.map +1 -0
- package/dist/types/src/core/abstract-message.d.ts +19 -0
- package/dist/types/src/core/abstract-message.d.ts.map +1 -0
- package/dist/types/src/core/auth.d.ts +30 -0
- package/dist/types/src/core/auth.d.ts.map +1 -0
- package/dist/types/src/core/dwn-constant.d.ts +8 -0
- package/dist/types/src/core/dwn-constant.d.ts.map +1 -0
- package/dist/types/src/core/dwn-error.d.ts +133 -0
- package/dist/types/src/core/dwn-error.d.ts.map +1 -0
- package/dist/types/src/core/grant-authorization.d.ts +35 -0
- package/dist/types/src/core/grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/message-reply.d.ts +33 -0
- package/dist/types/src/core/message-reply.d.ts.map +1 -0
- package/dist/types/src/core/message.d.ts +79 -0
- package/dist/types/src/core/message.d.ts.map +1 -0
- package/dist/types/src/core/protocol-authorization.d.ts +85 -0
- package/dist/types/src/core/protocol-authorization.d.ts.map +1 -0
- package/dist/types/src/core/records-grant-authorization.d.ts +38 -0
- package/dist/types/src/core/records-grant-authorization.d.ts.map +1 -0
- package/dist/types/src/core/tenant-gate.d.ts +16 -0
- package/dist/types/src/core/tenant-gate.d.ts.map +1 -0
- package/dist/types/src/did/did-dht-resolver.d.ts +26 -0
- package/dist/types/src/did/did-dht-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did-ion-resolver.d.ts +20 -0
- package/dist/types/src/did/did-ion-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did-key-resolver.d.ts +32 -0
- package/dist/types/src/did/did-key-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did-resolver.d.ts +20 -0
- package/dist/types/src/did/did-resolver.d.ts.map +1 -0
- package/dist/types/src/did/did.d.ts +15 -0
- package/dist/types/src/did/did.d.ts.map +1 -0
- package/dist/types/src/dwn.d.ts +74 -0
- package/dist/types/src/dwn.d.ts.map +1 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts +20 -0
- package/dist/types/src/enums/dwn-interface-method.d.ts.map +1 -0
- package/dist/types/src/event-log/event-log-level.d.ts +26 -0
- package/dist/types/src/event-log/event-log-level.d.ts.map +1 -0
- package/dist/types/src/handlers/events-get.d.ts +16 -0
- package/dist/types/src/handlers/events-get.d.ts.map +1 -0
- package/dist/types/src/handlers/messages-get.d.ts +18 -0
- package/dist/types/src/handlers/messages-get.d.ts.map +1 -0
- package/dist/types/src/handlers/permissions-grant.d.ts +17 -0
- package/dist/types/src/handlers/permissions-grant.d.ts.map +1 -0
- package/dist/types/src/handlers/permissions-request.d.ts +17 -0
- package/dist/types/src/handlers/permissions-request.d.ts.map +1 -0
- package/dist/types/src/handlers/permissions-revoke.d.ts +17 -0
- package/dist/types/src/handlers/permissions-revoke.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-configure.d.ts +21 -0
- package/dist/types/src/handlers/protocols-configure.d.ts.map +1 -0
- package/dist/types/src/handlers/protocols-query.d.ts +20 -0
- package/dist/types/src/handlers/protocols-query.d.ts.map +1 -0
- package/dist/types/src/handlers/records-delete.d.ts +22 -0
- package/dist/types/src/handlers/records-delete.d.ts.map +1 -0
- package/dist/types/src/handlers/records-query.d.ts +78 -0
- package/dist/types/src/handlers/records-query.d.ts.map +1 -0
- package/dist/types/src/handlers/records-read.d.ts +17 -0
- package/dist/types/src/handlers/records-read.d.ts.map +1 -0
- package/dist/types/src/handlers/records-write.d.ts +61 -0
- package/dist/types/src/handlers/records-write.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +72 -0
- package/dist/types/src/index.d.ts.map +1 -0
- package/dist/types/src/interfaces/events-get.d.ts +13 -0
- package/dist/types/src/interfaces/events-get.d.ts.map +1 -0
- package/dist/types/src/interfaces/messages-get.d.ts +19 -0
- package/dist/types/src/interfaces/messages-get.d.ts.map +1 -0
- package/dist/types/src/interfaces/permissions-grant.d.ts +59 -0
- package/dist/types/src/interfaces/permissions-grant.d.ts.map +1 -0
- package/dist/types/src/interfaces/permissions-request.d.ts +19 -0
- package/dist/types/src/interfaces/permissions-request.d.ts.map +1 -0
- package/dist/types/src/interfaces/permissions-revoke.d.ts +14 -0
- package/dist/types/src/interfaces/permissions-revoke.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts +21 -0
- package/dist/types/src/interfaces/protocols-configure.d.ts.map +1 -0
- package/dist/types/src/interfaces/protocols-query.d.ts +17 -0
- package/dist/types/src/interfaces/protocols-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-delete.d.ts +24 -0
- package/dist/types/src/interfaces/records-delete.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-query.d.ts +29 -0
- package/dist/types/src/interfaces/records-query.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-read.d.ts +31 -0
- package/dist/types/src/interfaces/records-read.d.ts.map +1 -0
- package/dist/types/src/interfaces/records-write.d.ts +259 -0
- package/dist/types/src/interfaces/records-write.d.ts.map +1 -0
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts +3 -0
- package/dist/types/src/jose/algorithms/signing/ed25519.d.ts.map +1 -0
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts +3 -0
- package/dist/types/src/jose/algorithms/signing/signature-algorithms.d.ts.map +1 -0
- package/dist/types/src/jose/jws/general/builder.d.ts +10 -0
- package/dist/types/src/jose/jws/general/builder.d.ts.map +1 -0
- package/dist/types/src/jose/jws/general/signer.d.ts +8 -0
- package/dist/types/src/jose/jws/general/signer.d.ts.map +1 -0
- package/dist/types/src/jose/jws/general/verifier.d.ts +32 -0
- package/dist/types/src/jose/jws/general/verifier.d.ts.map +1 -0
- package/dist/types/src/schema-validator.d.ts +8 -0
- package/dist/types/src/schema-validator.d.ts.map +1 -0
- package/dist/types/src/store/blockstore-level.d.ts +35 -0
- package/dist/types/src/store/blockstore-level.d.ts.map +1 -0
- package/dist/types/src/store/data-store-level.d.ts +44 -0
- package/dist/types/src/store/data-store-level.d.ts.map +1 -0
- package/dist/types/src/store/index-level.d.ts +69 -0
- package/dist/types/src/store/index-level.d.ts.map +1 -0
- package/dist/types/src/store/level-wrapper.d.ts +44 -0
- package/dist/types/src/store/level-wrapper.d.ts.map +1 -0
- package/dist/types/src/store/message-store-level.d.ts +70 -0
- package/dist/types/src/store/message-store-level.d.ts.map +1 -0
- package/dist/types/src/store/storage-controller.d.ts +19 -0
- package/dist/types/src/store/storage-controller.d.ts.map +1 -0
- package/dist/types/src/types/cache.d.ts +16 -0
- package/dist/types/src/types/cache.d.ts.map +1 -0
- package/dist/types/src/types/data-store.d.ts +69 -0
- package/dist/types/src/types/data-store.d.ts.map +1 -0
- package/dist/types/src/types/delegated-grant-message.d.ts +14 -0
- package/dist/types/src/types/delegated-grant-message.d.ts.map +1 -0
- package/dist/types/src/types/did-types.d.ts +68 -0
- package/dist/types/src/types/did-types.d.ts.map +1 -0
- package/dist/types/src/types/event-log.d.ts +39 -0
- package/dist/types/src/types/event-log.d.ts.map +1 -0
- package/dist/types/src/types/event-types.d.ts +18 -0
- package/dist/types/src/types/event-types.d.ts.map +1 -0
- package/dist/types/src/types/jose-types.d.ts +75 -0
- package/dist/types/src/types/jose-types.d.ts.map +1 -0
- package/dist/types/src/types/jws-types.d.ts +27 -0
- package/dist/types/src/types/jws-types.d.ts.map +1 -0
- package/dist/types/src/types/message-interface.d.ts +22 -0
- package/dist/types/src/types/message-interface.d.ts.map +1 -0
- package/dist/types/src/types/message-store.d.ts +43 -0
- package/dist/types/src/types/message-store.d.ts.map +1 -0
- package/dist/types/src/types/message-types.d.ts +113 -0
- package/dist/types/src/types/message-types.d.ts.map +1 -0
- package/dist/types/src/types/messages-types.d.ts +23 -0
- package/dist/types/src/types/messages-types.d.ts.map +1 -0
- package/dist/types/src/types/method-handler.d.ts +17 -0
- package/dist/types/src/types/method-handler.d.ts.map +1 -0
- package/dist/types/src/types/permissions-grant-descriptor.d.ts +65 -0
- package/dist/types/src/types/permissions-grant-descriptor.d.ts.map +1 -0
- package/dist/types/src/types/permissions-types.d.ts +33 -0
- package/dist/types/src/types/permissions-types.d.ts.map +1 -0
- package/dist/types/src/types/protocols-types.d.ts +138 -0
- package/dist/types/src/types/protocols-types.d.ts.map +1 -0
- package/dist/types/src/types/records-types.d.ts +164 -0
- package/dist/types/src/types/records-types.d.ts.map +1 -0
- package/dist/types/src/types/signer.d.ts +26 -0
- package/dist/types/src/types/signer.d.ts.map +1 -0
- package/dist/types/src/utils/abort.d.ts +5 -0
- package/dist/types/src/utils/abort.d.ts.map +1 -0
- package/dist/types/src/utils/array.d.ts +18 -0
- package/dist/types/src/utils/array.d.ts.map +1 -0
- package/dist/types/src/utils/cid.d.ts +30 -0
- package/dist/types/src/utils/cid.d.ts.map +1 -0
- package/dist/types/src/utils/data-stream.d.ts +27 -0
- package/dist/types/src/utils/data-stream.d.ts.map +1 -0
- package/dist/types/src/utils/encoder.d.ts +14 -0
- package/dist/types/src/utils/encoder.d.ts.map +1 -0
- package/dist/types/src/utils/encryption.d.ts +44 -0
- package/dist/types/src/utils/encryption.d.ts.map +1 -0
- package/dist/types/src/utils/hd-key.d.ts +35 -0
- package/dist/types/src/utils/hd-key.d.ts.map +1 -0
- package/dist/types/src/utils/jws.d.ts +39 -0
- package/dist/types/src/utils/jws.d.ts.map +1 -0
- package/dist/types/src/utils/memory-cache.d.ts +15 -0
- package/dist/types/src/utils/memory-cache.d.ts.map +1 -0
- package/dist/types/src/utils/object.d.ts +18 -0
- package/dist/types/src/utils/object.d.ts.map +1 -0
- package/dist/types/src/utils/private-key-signer.d.ts +34 -0
- package/dist/types/src/utils/private-key-signer.d.ts.map +1 -0
- package/dist/types/src/utils/protocols.d.ts +14 -0
- package/dist/types/src/utils/protocols.d.ts.map +1 -0
- package/dist/types/src/utils/records.d.ts +68 -0
- package/dist/types/src/utils/records.d.ts.map +1 -0
- package/dist/types/src/utils/secp256k1.d.ts +78 -0
- package/dist/types/src/utils/secp256k1.d.ts.map +1 -0
- package/dist/types/src/utils/string.d.ts +6 -0
- package/dist/types/src/utils/string.d.ts.map +1 -0
- package/dist/types/src/utils/time.d.ts +49 -0
- package/dist/types/src/utils/time.d.ts.map +1 -0
- package/dist/types/src/utils/url.d.ts +5 -0
- package/dist/types/src/utils/url.d.ts.map +1 -0
- package/dist/types/tests/core/auth.spec.d.ts +2 -0
- package/dist/types/tests/core/auth.spec.d.ts.map +1 -0
- package/dist/types/tests/core/message-reply.spec.d.ts +2 -0
- package/dist/types/tests/core/message-reply.spec.d.ts.map +1 -0
- package/dist/types/tests/core/message.spec.d.ts +2 -0
- package/dist/types/tests/core/message.spec.d.ts.map +1 -0
- package/dist/types/tests/did/did-ion-resolver.spec.d.ts +2 -0
- package/dist/types/tests/did/did-ion-resolver.spec.d.ts.map +1 -0
- package/dist/types/tests/did/did-key-resolver.spec.d.ts +2 -0
- package/dist/types/tests/did/did-key-resolver.spec.d.ts.map +1 -0
- package/dist/types/tests/did/did-resolver.spec.d.ts +2 -0
- package/dist/types/tests/did/did-resolver.spec.d.ts.map +1 -0
- package/dist/types/tests/did/did.spec.d.ts +2 -0
- package/dist/types/tests/did/did.spec.d.ts.map +1 -0
- package/dist/types/tests/dwn.spec.d.ts +2 -0
- package/dist/types/tests/dwn.spec.d.ts.map +1 -0
- package/dist/types/tests/end-to-end-tests.spec.d.ts +2 -0
- package/dist/types/tests/end-to-end-tests.spec.d.ts.map +1 -0
- package/dist/types/tests/event-log/event-log-level.spec.d.ts +2 -0
- package/dist/types/tests/event-log/event-log-level.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/events-get.spec.d.ts +2 -0
- package/dist/types/tests/handlers/events-get.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/messages-get.spec.d.ts +2 -0
- package/dist/types/tests/handlers/messages-get.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/permissions-grant.spec.d.ts +2 -0
- package/dist/types/tests/handlers/permissions-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/permissions-request.spec.d.ts +2 -0
- package/dist/types/tests/handlers/permissions-request.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/permissions-revoke.spec.d.ts +2 -0
- package/dist/types/tests/handlers/permissions-revoke.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/handlers/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/protocols-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/protocols-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-delete.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-delete.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-query.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-read.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-read.spec.d.ts.map +1 -0
- package/dist/types/tests/handlers/records-write.spec.d.ts +2 -0
- package/dist/types/tests/handlers/records-write.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/events-get.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/events-get.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/messages-get.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/messages-get.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/permissions-grant.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/permissions-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/permissions-request.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/permissions-request.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/protocols-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/protocols-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-delete.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-delete.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-query.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-read.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-read.spec.d.ts.map +1 -0
- package/dist/types/tests/interfaces/records-write.spec.d.ts +2 -0
- package/dist/types/tests/interfaces/records-write.spec.d.ts.map +1 -0
- package/dist/types/tests/jose/jws/general.spec.d.ts +2 -0
- package/dist/types/tests/jose/jws/general.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/delegated-grant.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/delegated-grant.spec.d.ts.map +1 -0
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts +2 -0
- package/dist/types/tests/scenarios/end-to-end-tests.spec.d.ts.map +1 -0
- package/dist/types/tests/store/data-store-level.spec.d.ts +2 -0
- package/dist/types/tests/store/data-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/index-level.spec.d.ts +2 -0
- package/dist/types/tests/store/index-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store-level.spec.d.ts +2 -0
- package/dist/types/tests/store/message-store-level.spec.d.ts.map +1 -0
- package/dist/types/tests/store/message-store.spec.d.ts +2 -0
- package/dist/types/tests/store/message-store.spec.d.ts.map +1 -0
- package/dist/types/tests/store-dependent-tests.spec.d.ts +2 -0
- package/dist/types/tests/store-dependent-tests.spec.d.ts.map +1 -0
- package/dist/types/tests/test-stores.d.ts +30 -0
- package/dist/types/tests/test-stores.d.ts.map +1 -0
- package/dist/types/tests/test-suite.d.ts +16 -0
- package/dist/types/tests/test-suite.d.ts.map +1 -0
- package/dist/types/tests/utils/cid.spec.d.ts +2 -0
- package/dist/types/tests/utils/cid.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/data-stream.spec.d.ts +2 -0
- package/dist/types/tests/utils/data-stream.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/encryption.spec.d.ts +2 -0
- package/dist/types/tests/utils/encryption.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/jws.spec.d.ts +2 -0
- package/dist/types/tests/utils/jws.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/memory-cache.spec.d.ts +2 -0
- package/dist/types/tests/utils/memory-cache.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/object.spec.d.ts +2 -0
- package/dist/types/tests/utils/object.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/private-key-signer.spec.d.ts +2 -0
- package/dist/types/tests/utils/private-key-signer.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/records.spec.d.ts +2 -0
- package/dist/types/tests/utils/records.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/secp256k1.spec.d.ts +2 -0
- package/dist/types/tests/utils/secp256k1.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/test-data-generator.d.ts +323 -0
- package/dist/types/tests/utils/test-data-generator.d.ts.map +1 -0
- package/dist/types/tests/utils/test-stub-generator.d.ts +16 -0
- package/dist/types/tests/utils/test-stub-generator.d.ts.map +1 -0
- package/dist/types/tests/utils/time.spec.d.ts +2 -0
- package/dist/types/tests/utils/time.spec.d.ts.map +1 -0
- package/dist/types/tests/utils/url.spec.d.ts +2 -0
- package/dist/types/tests/utils/url.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/definitions.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk/general-jwk.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk/public-jwk.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/jwk-verification-method.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/protocols/protocols-configure.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-query.spec.d.ts.map +1 -0
- package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts +2 -0
- package/dist/types/tests/validation/json-schemas/records/records-write.spec.d.ts.map +1 -0
- package/package.json +156 -0
- package/src/core/abstract-message.ts +48 -0
- package/src/core/auth.ts +108 -0
- package/src/core/dwn-constant.ts +7 -0
- package/src/core/dwn-error.ts +136 -0
- package/src/core/grant-authorization.ts +163 -0
- package/src/core/message-reply.ts +42 -0
- package/src/core/message.ts +224 -0
- package/src/core/protocol-authorization.ts +691 -0
- package/src/core/records-grant-authorization.ts +167 -0
- package/src/core/tenant-gate.ts +18 -0
- package/src/did/did-dht-resolver.ts +241 -0
- package/src/did/did-ion-resolver.ts +52 -0
- package/src/did/did-key-resolver.ts +137 -0
- package/src/did/did-resolver.ts +77 -0
- package/src/did/did.ts +39 -0
- package/src/dwn.ts +213 -0
- package/src/enums/dwn-interface-method.ts +20 -0
- package/src/event-log/event-log-level.ts +116 -0
- package/src/handlers/events-get.ts +46 -0
- package/src/handlers/messages-get.ts +80 -0
- package/src/handlers/permissions-grant.ts +52 -0
- package/src/handlers/permissions-request.ts +54 -0
- package/src/handlers/permissions-revoke.ts +121 -0
- package/src/handlers/protocols-configure.ts +104 -0
- package/src/handlers/protocols-query.ts +81 -0
- package/src/handlers/records-delete.ts +139 -0
- package/src/handlers/records-query.ts +253 -0
- package/src/handlers/records-read.ts +127 -0
- package/src/handlers/records-write.ts +296 -0
- package/src/index.ts +81 -0
- package/src/interfaces/events-get.ts +43 -0
- package/src/interfaces/messages-get.ts +59 -0
- package/src/interfaces/permissions-grant.ts +175 -0
- package/src/interfaces/permissions-request.ts +55 -0
- package/src/interfaces/permissions-revoke.ts +46 -0
- package/src/interfaces/protocols-configure.ts +188 -0
- package/src/interfaces/protocols-query.ts +99 -0
- package/src/interfaces/records-delete.ts +67 -0
- package/src/interfaces/records-query.ts +100 -0
- package/src/interfaces/records-read.ts +82 -0
- package/src/interfaces/records-write.ts +924 -0
- package/src/jose/algorithms/signing/ed25519.ts +61 -0
- package/src/jose/algorithms/signing/signature-algorithms.ts +15 -0
- package/src/jose/jws/general/builder.ts +48 -0
- package/src/jose/jws/general/signer.ts +29 -0
- package/src/jose/jws/general/verifier.ts +113 -0
- package/src/schema-validator.ts +34 -0
- package/src/store/blockstore-level.ts +113 -0
- package/src/store/data-store-level.ts +188 -0
- package/src/store/index-level.ts +306 -0
- package/src/store/level-wrapper.ts +262 -0
- package/src/store/message-store-level.ts +284 -0
- package/src/store/storage-controller.ts +80 -0
- package/src/types/cache.ts +16 -0
- package/src/types/data-store.ts +78 -0
- package/src/types/delegated-grant-message.ts +15 -0
- package/src/types/did-types.ts +95 -0
- package/src/types/event-log.ts +46 -0
- package/src/types/event-types.ts +20 -0
- package/src/types/jose-types.ts +76 -0
- package/src/types/jws-types.ts +28 -0
- package/src/types/message-interface.ts +24 -0
- package/src/types/message-store.ts +56 -0
- package/src/types/message-types.ts +115 -0
- package/src/types/messages-types.ts +26 -0
- package/src/types/method-handler.ts +17 -0
- package/src/types/permissions-grant-descriptor.ts +79 -0
- package/src/types/permissions-types.ts +42 -0
- package/src/types/protocols-types.ts +154 -0
- package/src/types/records-types.ts +184 -0
- package/src/types/signer.ts +27 -0
- package/src/utils/abort.ts +31 -0
- package/src/utils/array.ts +39 -0
- package/src/utils/cid.ts +101 -0
- package/src/utils/data-stream.ts +85 -0
- package/src/utils/encoder.ts +54 -0
- package/src/utils/encryption.ts +145 -0
- package/src/utils/hd-key.ts +58 -0
- package/src/utils/jws.ts +95 -0
- package/src/utils/memory-cache.ts +31 -0
- package/src/utils/object.ts +55 -0
- package/src/utils/private-key-signer.ts +72 -0
- package/src/utils/protocols.ts +50 -0
- package/src/utils/records.ts +326 -0
- package/src/utils/secp256k1.ts +209 -0
- package/src/utils/string.ts +13 -0
- package/src/utils/time.ts +77 -0
- package/src/utils/url.ts +66 -0
|
@@ -0,0 +1,630 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
11
|
+
import sinon from 'sinon';
|
|
12
|
+
import chai, { expect } from 'chai';
|
|
13
|
+
import anyoneCollaborateProtocolDefinition from '../vectors/protocol-definitions/anyone-collaborate.json' with { type: 'json' };
|
|
14
|
+
import authorCanProtocolDefinition from '../vectors/protocol-definitions/author-can.json' with { type: 'json' };
|
|
15
|
+
import friendRoleProtocolDefinition from '../vectors/protocol-definitions/friend-role.json' with { type: 'json' };
|
|
16
|
+
import recipientCanProtocolDefinition from '../vectors/protocol-definitions/recipient-can.json' with { type: 'json' };
|
|
17
|
+
import threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' with { type: 'json' };
|
|
18
|
+
import { ArrayUtility } from '../../src/utils/array.js';
|
|
19
|
+
import { DidKeyResolver } from '../../src/did/did-key-resolver.js';
|
|
20
|
+
import { DwnErrorCode } from '../../src/index.js';
|
|
21
|
+
import { Message } from '../../src/core/message.js';
|
|
22
|
+
import { RecordsDeleteHandler } from '../../src/handlers/records-delete.js';
|
|
23
|
+
import { stubInterface } from 'ts-sinon';
|
|
24
|
+
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
25
|
+
import { TestStores } from '../test-stores.js';
|
|
26
|
+
import { TestStubGenerator } from '../utils/test-stub-generator.js';
|
|
27
|
+
import { Time } from '../../src/utils/time.js';
|
|
28
|
+
import { DataStream, DidResolver, Dwn, Encoder, Jws, RecordsDelete, RecordsRead, RecordsWrite } from '../../src/index.js';
|
|
29
|
+
chai.use(chaiAsPromised);
|
|
30
|
+
export function testRecordsDeleteHandler() {
|
|
31
|
+
describe('RecordsDeleteHandler.handle()', () => {
|
|
32
|
+
if (process.env.TESTSOFF === 'true') {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
let didResolver;
|
|
36
|
+
let messageStore;
|
|
37
|
+
let dataStore;
|
|
38
|
+
let eventLog;
|
|
39
|
+
let dwn;
|
|
40
|
+
describe('functional tests', () => {
|
|
41
|
+
// important to follow the `before` and `after` pattern to initialize and clean the stores in tests
|
|
42
|
+
// so that different test suites can reuse the same backend store for testing
|
|
43
|
+
before(() => __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
didResolver = new DidResolver([new DidKeyResolver()]);
|
|
45
|
+
const stores = TestStores.get();
|
|
46
|
+
messageStore = stores.messageStore;
|
|
47
|
+
dataStore = stores.dataStore;
|
|
48
|
+
eventLog = stores.eventLog;
|
|
49
|
+
dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog });
|
|
50
|
+
}));
|
|
51
|
+
beforeEach(() => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
|
|
53
|
+
// clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
54
|
+
yield messageStore.clear();
|
|
55
|
+
yield dataStore.clear();
|
|
56
|
+
yield eventLog.clear();
|
|
57
|
+
}));
|
|
58
|
+
after(() => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
yield dwn.close();
|
|
60
|
+
}));
|
|
61
|
+
it('should handle RecordsDelete successfully and return 404 if deleting a deleted record', () => __awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
const alice = yield DidKeyResolver.generate();
|
|
64
|
+
// insert data
|
|
65
|
+
const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
66
|
+
const writeReply = yield dwn.processMessage(alice.did, message, dataStream);
|
|
67
|
+
expect(writeReply.status.code).to.equal(202);
|
|
68
|
+
// ensure data is inserted
|
|
69
|
+
const queryData = yield TestDataGenerator.generateRecordsQuery({
|
|
70
|
+
author: alice,
|
|
71
|
+
filter: { recordId: message.recordId }
|
|
72
|
+
});
|
|
73
|
+
const reply = yield dwn.processMessage(alice.did, queryData.message);
|
|
74
|
+
expect(reply.status.code).to.equal(200);
|
|
75
|
+
expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
|
|
76
|
+
// testing delete
|
|
77
|
+
const recordsDelete = yield RecordsDelete.create({
|
|
78
|
+
recordId: message.recordId,
|
|
79
|
+
signer: Jws.createSigner(alice)
|
|
80
|
+
});
|
|
81
|
+
const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
82
|
+
expect(deleteReply.status.code).to.equal(202);
|
|
83
|
+
// ensure a query will no longer find the deleted record
|
|
84
|
+
const reply2 = yield dwn.processMessage(alice.did, queryData.message);
|
|
85
|
+
expect(reply2.status.code).to.equal(200);
|
|
86
|
+
expect((_b = reply2.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
|
|
87
|
+
// testing deleting a deleted record
|
|
88
|
+
const recordsDelete2 = yield RecordsDelete.create({
|
|
89
|
+
recordId: message.recordId,
|
|
90
|
+
signer: Jws.createSigner(alice)
|
|
91
|
+
});
|
|
92
|
+
const recordsDelete2Reply = yield dwn.processMessage(alice.did, recordsDelete2.message);
|
|
93
|
+
expect(recordsDelete2Reply.status.code).to.equal(404);
|
|
94
|
+
}));
|
|
95
|
+
it('should not affect other records or tenants with the same data', () => __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
const alice = yield DidKeyResolver.generate();
|
|
97
|
+
const bob = yield DidKeyResolver.generate();
|
|
98
|
+
const data = Encoder.stringToBytes('test');
|
|
99
|
+
// alice writes a records with data
|
|
100
|
+
const aliceWriteData = yield TestDataGenerator.generateRecordsWrite({ author: alice, data });
|
|
101
|
+
const aliceWriteReply = yield dwn.processMessage(alice.did, aliceWriteData.message, aliceWriteData.dataStream);
|
|
102
|
+
expect(aliceWriteReply.status.code).to.equal(202);
|
|
103
|
+
// alice writes another record with the same data
|
|
104
|
+
const aliceAssociateData = yield TestDataGenerator.generateRecordsWrite({ author: alice, data });
|
|
105
|
+
const aliceAssociateReply = yield dwn.processMessage(alice.did, aliceAssociateData.message, aliceAssociateData.dataStream);
|
|
106
|
+
expect(aliceAssociateReply.status.code).to.equal(202);
|
|
107
|
+
// bob writes a records with same data
|
|
108
|
+
const bobWriteData = yield TestDataGenerator.generateRecordsWrite({ author: bob, data });
|
|
109
|
+
const bobWriteReply = yield dwn.processMessage(bob.did, bobWriteData.message, bobWriteData.dataStream);
|
|
110
|
+
expect(bobWriteReply.status.code).to.equal(202);
|
|
111
|
+
// bob writes another record with the same data
|
|
112
|
+
const bobAssociateData = yield TestDataGenerator.generateRecordsWrite({ author: bob, data });
|
|
113
|
+
const bobAssociateReply = yield dwn.processMessage(bob.did, bobAssociateData.message, bobAssociateData.dataStream);
|
|
114
|
+
expect(bobAssociateReply.status.code).to.equal(202);
|
|
115
|
+
// alice deletes one of the two records
|
|
116
|
+
const aliceDeleteWriteData = yield TestDataGenerator.generateRecordsDelete({
|
|
117
|
+
author: alice,
|
|
118
|
+
recordId: aliceWriteData.message.recordId
|
|
119
|
+
});
|
|
120
|
+
const aliceDeleteWriteReply = yield dwn.processMessage(alice.did, aliceDeleteWriteData.message);
|
|
121
|
+
expect(aliceDeleteWriteReply.status.code).to.equal(202);
|
|
122
|
+
// verify the other record with the same data is unaffected
|
|
123
|
+
const aliceRead1 = yield RecordsRead.create({
|
|
124
|
+
filter: {
|
|
125
|
+
recordId: aliceAssociateData.message.recordId,
|
|
126
|
+
},
|
|
127
|
+
signer: Jws.createSigner(alice)
|
|
128
|
+
});
|
|
129
|
+
const aliceRead1Reply = yield dwn.processMessage(alice.did, aliceRead1.message);
|
|
130
|
+
expect(aliceRead1Reply.status.code).to.equal(200);
|
|
131
|
+
const aliceDataFetched = yield DataStream.toBytes(aliceRead1Reply.record.data);
|
|
132
|
+
expect(ArrayUtility.byteArraysEqual(aliceDataFetched, data)).to.be.true;
|
|
133
|
+
// alice deletes the other record
|
|
134
|
+
const aliceDeleteAssociateData = yield TestDataGenerator.generateRecordsDelete({
|
|
135
|
+
author: alice,
|
|
136
|
+
recordId: aliceAssociateData.message.recordId
|
|
137
|
+
});
|
|
138
|
+
const aliceDeleteAssociateReply = yield dwn.processMessage(alice.did, aliceDeleteAssociateData.message);
|
|
139
|
+
expect(aliceDeleteAssociateReply.status.code).to.equal(202);
|
|
140
|
+
// verify that alice can no longer fetch the 2nd record
|
|
141
|
+
const aliceRead2Reply = yield dwn.processMessage(alice.did, aliceRead1.message);
|
|
142
|
+
expect(aliceRead2Reply.status.code).to.equal(404);
|
|
143
|
+
// verify that bob can still fetch record with the same data
|
|
144
|
+
const bobRead1 = yield RecordsRead.create({
|
|
145
|
+
filter: {
|
|
146
|
+
recordId: bobAssociateData.message.recordId,
|
|
147
|
+
},
|
|
148
|
+
signer: Jws.createSigner(bob)
|
|
149
|
+
});
|
|
150
|
+
const bobRead1Reply = yield dwn.processMessage(bob.did, bobRead1.message);
|
|
151
|
+
expect(bobRead1Reply.status.code).to.equal(200);
|
|
152
|
+
const bobDataFetched = yield DataStream.toBytes(bobRead1Reply.record.data);
|
|
153
|
+
expect(ArrayUtility.byteArraysEqual(bobDataFetched, data)).to.be.true;
|
|
154
|
+
}));
|
|
155
|
+
it('should return 404 if deleting a non-existent record', () => __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
const alice = yield DidKeyResolver.generate();
|
|
157
|
+
// testing deleting a non-existent record
|
|
158
|
+
const recordsDelete = yield RecordsDelete.create({
|
|
159
|
+
recordId: 'nonExistentRecordId',
|
|
160
|
+
signer: Jws.createSigner(alice)
|
|
161
|
+
});
|
|
162
|
+
const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
163
|
+
expect(deleteReply.status.code).to.equal(404);
|
|
164
|
+
}));
|
|
165
|
+
it('should be disallowed if there is a newer RecordsWrite already in the DWN ', () => __awaiter(this, void 0, void 0, function* () {
|
|
166
|
+
var _a;
|
|
167
|
+
const alice = yield DidKeyResolver.generate();
|
|
168
|
+
// initial write
|
|
169
|
+
const initialWriteData = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
170
|
+
const initialWriteReply = yield dwn.processMessage(alice.did, initialWriteData.message, initialWriteData.dataStream);
|
|
171
|
+
expect(initialWriteReply.status.code).to.equal(202);
|
|
172
|
+
// generate subsequent write and delete with the delete having an earlier timestamp
|
|
173
|
+
// NOTE: creating RecordsDelete first ensures it has an earlier `messageTimestamp` time
|
|
174
|
+
const recordsDelete = yield RecordsDelete.create({
|
|
175
|
+
recordId: initialWriteData.message.recordId,
|
|
176
|
+
signer: Jws.createSigner(alice)
|
|
177
|
+
});
|
|
178
|
+
yield Time.minimalSleep();
|
|
179
|
+
const subsequentWriteData = yield TestDataGenerator.generateFromRecordsWrite({
|
|
180
|
+
existingWrite: initialWriteData.recordsWrite,
|
|
181
|
+
author: alice
|
|
182
|
+
});
|
|
183
|
+
// subsequent write
|
|
184
|
+
const subsequentWriteReply = yield dwn.processMessage(alice.did, subsequentWriteData.message, subsequentWriteData.dataStream);
|
|
185
|
+
expect(subsequentWriteReply.status.code).to.equal(202);
|
|
186
|
+
// test that a delete with an earlier `messageTimestamp` results in a 409
|
|
187
|
+
const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
188
|
+
expect(deleteReply.status.code).to.equal(409);
|
|
189
|
+
// ensure data still exists
|
|
190
|
+
const queryData = yield TestDataGenerator.generateRecordsQuery({
|
|
191
|
+
author: alice,
|
|
192
|
+
filter: { recordId: initialWriteData.message.recordId }
|
|
193
|
+
});
|
|
194
|
+
const expectedEncodedData = Encoder.bytesToBase64Url(subsequentWriteData.dataBytes);
|
|
195
|
+
const reply = yield dwn.processMessage(alice.did, queryData.message);
|
|
196
|
+
expect(reply.status.code).to.equal(200);
|
|
197
|
+
expect((_a = reply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
|
|
198
|
+
expect(reply.entries[0].encodedData).to.equal(expectedEncodedData);
|
|
199
|
+
}));
|
|
200
|
+
it('should be able to delete then rewrite the same data', () => __awaiter(this, void 0, void 0, function* () {
|
|
201
|
+
var _a, _b, _c;
|
|
202
|
+
const alice = yield DidKeyResolver.generate();
|
|
203
|
+
const data = Encoder.stringToBytes('test');
|
|
204
|
+
const encodedData = Encoder.bytesToBase64Url(data);
|
|
205
|
+
// alice writes a record
|
|
206
|
+
const aliceWriteData = yield TestDataGenerator.generateRecordsWrite({
|
|
207
|
+
author: alice,
|
|
208
|
+
data
|
|
209
|
+
});
|
|
210
|
+
const aliceWriteReply = yield dwn.processMessage(alice.did, aliceWriteData.message, aliceWriteData.dataStream);
|
|
211
|
+
expect(aliceWriteReply.status.code).to.equal(202);
|
|
212
|
+
const aliceQueryWriteAfterAliceWriteData = yield TestDataGenerator.generateRecordsQuery({
|
|
213
|
+
author: alice,
|
|
214
|
+
filter: { recordId: aliceWriteData.message.recordId }
|
|
215
|
+
});
|
|
216
|
+
const aliceQueryWriteAfterAliceWriteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceWriteData.message);
|
|
217
|
+
expect(aliceQueryWriteAfterAliceWriteReply.status.code).to.equal(200);
|
|
218
|
+
expect((_a = aliceQueryWriteAfterAliceWriteReply.entries) === null || _a === void 0 ? void 0 : _a.length).to.equal(1);
|
|
219
|
+
expect(aliceQueryWriteAfterAliceWriteReply.entries[0].encodedData).to.equal(encodedData);
|
|
220
|
+
// alice deleting the record
|
|
221
|
+
const aliceDeleteWriteData = yield TestDataGenerator.generateRecordsDelete({
|
|
222
|
+
author: alice,
|
|
223
|
+
recordId: aliceWriteData.message.recordId
|
|
224
|
+
});
|
|
225
|
+
const aliceDeleteWriteReply = yield dwn.processMessage(alice.did, aliceDeleteWriteData.message);
|
|
226
|
+
expect(aliceDeleteWriteReply.status.code).to.equal(202);
|
|
227
|
+
const aliceQueryWriteAfterAliceDeleteData = yield TestDataGenerator.generateRecordsQuery({
|
|
228
|
+
author: alice,
|
|
229
|
+
filter: { recordId: aliceWriteData.message.recordId }
|
|
230
|
+
});
|
|
231
|
+
const aliceQueryWriteAfterAliceDeleteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceDeleteData.message);
|
|
232
|
+
expect(aliceQueryWriteAfterAliceDeleteReply.status.code).to.equal(200);
|
|
233
|
+
expect((_b = aliceQueryWriteAfterAliceDeleteReply.entries) === null || _b === void 0 ? void 0 : _b.length).to.equal(0);
|
|
234
|
+
// alice writes a new record with the same data
|
|
235
|
+
const aliceRewriteData = yield TestDataGenerator.generateRecordsWrite({
|
|
236
|
+
author: alice,
|
|
237
|
+
data
|
|
238
|
+
});
|
|
239
|
+
const aliceRewriteReply = yield dwn.processMessage(alice.did, aliceRewriteData.message, aliceRewriteData.dataStream);
|
|
240
|
+
expect(aliceRewriteReply.status.code).to.equal(202);
|
|
241
|
+
const aliceQueryWriteAfterAliceRewriteData = yield TestDataGenerator.generateRecordsQuery({
|
|
242
|
+
author: alice,
|
|
243
|
+
filter: { recordId: aliceRewriteData.message.recordId }
|
|
244
|
+
});
|
|
245
|
+
const aliceQueryWriteAfterAliceRewriteReply = yield dwn.processMessage(alice.did, aliceQueryWriteAfterAliceRewriteData.message);
|
|
246
|
+
expect(aliceQueryWriteAfterAliceRewriteReply.status.code).to.equal(200);
|
|
247
|
+
expect((_c = aliceQueryWriteAfterAliceRewriteReply.entries) === null || _c === void 0 ? void 0 : _c.length).to.equal(1);
|
|
248
|
+
expect(aliceQueryWriteAfterAliceRewriteReply.entries[0].encodedData).to.equal(encodedData);
|
|
249
|
+
}));
|
|
250
|
+
describe('protocol based deletes', () => {
|
|
251
|
+
it('should allow delete with allow-anyone rule', () => __awaiter(this, void 0, void 0, function* () {
|
|
252
|
+
// scenario: Alice creates a record in her DWN. Bob (anyone) is able to delete the record.
|
|
253
|
+
const protocolDefinition = anyoneCollaborateProtocolDefinition;
|
|
254
|
+
const alice = yield TestDataGenerator.generatePersona();
|
|
255
|
+
const bob = yield TestDataGenerator.generatePersona();
|
|
256
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
257
|
+
author: alice,
|
|
258
|
+
protocolDefinition
|
|
259
|
+
});
|
|
260
|
+
// setting up a stub DID resolver
|
|
261
|
+
TestStubGenerator.stubDidResolver(didResolver, [alice, bob]);
|
|
262
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
263
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
264
|
+
// Alice writes a record
|
|
265
|
+
const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
|
|
266
|
+
author: alice,
|
|
267
|
+
protocol: protocolDefinition.protocol,
|
|
268
|
+
protocolPath: 'doc',
|
|
269
|
+
});
|
|
270
|
+
const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, recordsWrite.dataStream);
|
|
271
|
+
expect(recordsWriteReply.status.code).to.eq(202);
|
|
272
|
+
// Bob (anyone) is able to delete the record
|
|
273
|
+
const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
274
|
+
author: bob,
|
|
275
|
+
recordId: recordsWrite.message.recordId,
|
|
276
|
+
});
|
|
277
|
+
const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
278
|
+
expect(recordsDeleteReply.status.code).to.eq(202);
|
|
279
|
+
}));
|
|
280
|
+
describe('recipient rules', () => {
|
|
281
|
+
it('should allow delete with ancestor recipient rule', () => __awaiter(this, void 0, void 0, function* () {
|
|
282
|
+
// scenario: Alice creates a 'post' with Bob as recipient and a 'post/tag'. Bob is able to delete
|
|
283
|
+
// the 'chat/tag' because he was recipient of the 'chat'. Carol is not able to delete.
|
|
284
|
+
const protocolDefinition = recipientCanProtocolDefinition;
|
|
285
|
+
const alice = yield TestDataGenerator.generatePersona();
|
|
286
|
+
const bob = yield TestDataGenerator.generatePersona();
|
|
287
|
+
const carol = yield TestDataGenerator.generatePersona();
|
|
288
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
289
|
+
author: alice,
|
|
290
|
+
protocolDefinition
|
|
291
|
+
});
|
|
292
|
+
// setting up a stub DID resolver
|
|
293
|
+
TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
|
|
294
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
295
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
296
|
+
// Alice writes a chat
|
|
297
|
+
const chatRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
|
|
298
|
+
author: alice,
|
|
299
|
+
recipient: bob.did,
|
|
300
|
+
protocol: protocolDefinition.protocol,
|
|
301
|
+
protocolPath: 'post',
|
|
302
|
+
});
|
|
303
|
+
const chatRecordsWriteReply = yield dwn.processMessage(alice.did, chatRecordsWrite.message, chatRecordsWrite.dataStream);
|
|
304
|
+
expect(chatRecordsWriteReply.status.code).to.eq(202);
|
|
305
|
+
// Alice writes a 'chat/tag'
|
|
306
|
+
const tagRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
|
|
307
|
+
author: alice,
|
|
308
|
+
protocol: protocolDefinition.protocol,
|
|
309
|
+
protocolPath: 'post/tag',
|
|
310
|
+
contextId: chatRecordsWrite.message.contextId,
|
|
311
|
+
parentId: chatRecordsWrite.message.recordId,
|
|
312
|
+
});
|
|
313
|
+
const tagRecordsWriteReply = yield dwn.processMessage(alice.did, tagRecordsWrite.message, tagRecordsWrite.dataStream);
|
|
314
|
+
expect(tagRecordsWriteReply.status.code).to.eq(202);
|
|
315
|
+
// Carol is unable to delete the 'chat/tag'
|
|
316
|
+
const recordsDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
|
|
317
|
+
author: carol,
|
|
318
|
+
recordId: tagRecordsWrite.message.recordId,
|
|
319
|
+
});
|
|
320
|
+
const recordsDeleteCarolReply = yield dwn.processMessage(alice.did, recordsDeleteCarol.message);
|
|
321
|
+
expect(recordsDeleteCarolReply.status.code).to.eq(401);
|
|
322
|
+
expect(recordsDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
|
|
323
|
+
// Bob is able to delete the 'chat/tag'
|
|
324
|
+
const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
325
|
+
author: bob,
|
|
326
|
+
recordId: tagRecordsWrite.message.recordId,
|
|
327
|
+
});
|
|
328
|
+
const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
329
|
+
expect(recordsDeleteReply.status.code).to.eq(202);
|
|
330
|
+
}));
|
|
331
|
+
it('should allow delete with direct recipient rule', () => __awaiter(this, void 0, void 0, function* () {
|
|
332
|
+
// scenario: Alice creates a 'post' with Bob as recipient. Bob is able to delete
|
|
333
|
+
// the 'post' because he was recipient of it. Carol is not able to delete.
|
|
334
|
+
const protocolDefinition = recipientCanProtocolDefinition;
|
|
335
|
+
const alice = yield TestDataGenerator.generatePersona();
|
|
336
|
+
const bob = yield TestDataGenerator.generatePersona();
|
|
337
|
+
const carol = yield TestDataGenerator.generatePersona();
|
|
338
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
339
|
+
author: alice,
|
|
340
|
+
protocolDefinition
|
|
341
|
+
});
|
|
342
|
+
// setting up a stub DID resolver
|
|
343
|
+
TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
|
|
344
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
345
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
346
|
+
// Alice creates a 'post' with Bob as recipient
|
|
347
|
+
const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
|
|
348
|
+
author: alice,
|
|
349
|
+
recipient: bob.did,
|
|
350
|
+
protocol: protocolDefinition.protocol,
|
|
351
|
+
protocolPath: 'post',
|
|
352
|
+
});
|
|
353
|
+
const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, recordsWrite.dataStream);
|
|
354
|
+
expect(recordsWriteReply.status.code).to.eq(202);
|
|
355
|
+
// Carol is unable to delete the 'post'
|
|
356
|
+
const carolRecordsDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
357
|
+
author: carol,
|
|
358
|
+
recordId: recordsWrite.message.recordId,
|
|
359
|
+
});
|
|
360
|
+
const carolRecordsDeleteReply = yield dwn.processMessage(alice.did, carolRecordsDelete.message);
|
|
361
|
+
expect(carolRecordsDeleteReply.status.code).to.eq(401);
|
|
362
|
+
expect(carolRecordsDeleteReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
|
|
363
|
+
// Bob is able to delete the post
|
|
364
|
+
const bobRecordsDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
365
|
+
author: bob,
|
|
366
|
+
recordId: recordsWrite.message.recordId,
|
|
367
|
+
});
|
|
368
|
+
const bobRecordsDeleteReply = yield dwn.processMessage(alice.did, bobRecordsDelete.message);
|
|
369
|
+
expect(bobRecordsDeleteReply.status.code).to.eq(202);
|
|
370
|
+
}));
|
|
371
|
+
});
|
|
372
|
+
describe('author action rules', () => {
|
|
373
|
+
it('allow author to delete with ancestor author rule', () => __awaiter(this, void 0, void 0, function* () {
|
|
374
|
+
// scenario: Bob writes a 'post' and Alice writes a 'post/comment' to her DWN. Bob deletes the comment
|
|
375
|
+
// because author of post can delete. Carol is unable to delete the comment.
|
|
376
|
+
const protocolDefinition = authorCanProtocolDefinition;
|
|
377
|
+
const alice = yield TestDataGenerator.generatePersona();
|
|
378
|
+
const bob = yield TestDataGenerator.generatePersona();
|
|
379
|
+
const carol = yield TestDataGenerator.generatePersona();
|
|
380
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
381
|
+
author: alice,
|
|
382
|
+
protocolDefinition
|
|
383
|
+
});
|
|
384
|
+
// setting up a stub DID resolver
|
|
385
|
+
TestStubGenerator.stubDidResolver(didResolver, [alice, bob, carol]);
|
|
386
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
387
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
388
|
+
// Bob writes a post
|
|
389
|
+
const postRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
|
|
390
|
+
author: bob,
|
|
391
|
+
protocol: protocolDefinition.protocol,
|
|
392
|
+
protocolPath: 'post',
|
|
393
|
+
});
|
|
394
|
+
const postRecordsWriteReply = yield dwn.processMessage(alice.did, postRecordsWrite.message, postRecordsWrite.dataStream);
|
|
395
|
+
expect(postRecordsWriteReply.status.code).to.eq(202);
|
|
396
|
+
// Alice writes a 'post/comment'
|
|
397
|
+
const commentRecordsWrite = yield TestDataGenerator.generateRecordsWrite({
|
|
398
|
+
author: alice,
|
|
399
|
+
protocol: protocolDefinition.protocol,
|
|
400
|
+
protocolPath: 'post/comment',
|
|
401
|
+
contextId: postRecordsWrite.message.contextId,
|
|
402
|
+
parentId: postRecordsWrite.message.recordId,
|
|
403
|
+
});
|
|
404
|
+
const commentRecordsWriteReply = yield dwn.processMessage(alice.did, commentRecordsWrite.message, commentRecordsWrite.dataStream);
|
|
405
|
+
expect(commentRecordsWriteReply.status.code).to.eq(202);
|
|
406
|
+
// Carol is unable to delete Alice's 'post/comment'
|
|
407
|
+
const recordsDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
|
|
408
|
+
author: carol,
|
|
409
|
+
recordId: commentRecordsWrite.message.recordId,
|
|
410
|
+
});
|
|
411
|
+
const recordsDeleteCarolReply = yield dwn.processMessage(alice.did, recordsDeleteCarol.message);
|
|
412
|
+
expect(recordsDeleteCarolReply.status.code).to.eq(401);
|
|
413
|
+
expect(recordsDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
|
|
414
|
+
// Bob is able to delete the Alice's 'post/comment'
|
|
415
|
+
const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
416
|
+
author: bob,
|
|
417
|
+
recordId: commentRecordsWrite.message.recordId,
|
|
418
|
+
});
|
|
419
|
+
const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
420
|
+
expect(recordsDeleteReply.status.code).to.eq(202);
|
|
421
|
+
}));
|
|
422
|
+
});
|
|
423
|
+
describe('role based deletes', () => {
|
|
424
|
+
it('should allow deletes with $contextRole', () => __awaiter(this, void 0, void 0, function* () {
|
|
425
|
+
// scenario: Alice adds Bob as a 'thread/admin' $contextRole. She writes a 'thread/chat'.
|
|
426
|
+
// Bob invokes his admin role to delete the 'thread/chat'. Carol is unable to delete
|
|
427
|
+
// the 'thread/chat'.
|
|
428
|
+
const alice = yield DidKeyResolver.generate();
|
|
429
|
+
const bob = yield DidKeyResolver.generate();
|
|
430
|
+
const carol = yield DidKeyResolver.generate();
|
|
431
|
+
const protocolDefinition = threadRoleProtocolDefinition;
|
|
432
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
433
|
+
author: alice,
|
|
434
|
+
protocolDefinition
|
|
435
|
+
});
|
|
436
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
437
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
438
|
+
// Alice creates a thread
|
|
439
|
+
const threadRecord = yield TestDataGenerator.generateRecordsWrite({
|
|
440
|
+
author: alice,
|
|
441
|
+
recipient: bob.did,
|
|
442
|
+
protocol: protocolDefinition.protocol,
|
|
443
|
+
protocolPath: 'thread'
|
|
444
|
+
});
|
|
445
|
+
const threadRecordReply = yield dwn.processMessage(alice.did, threadRecord.message, threadRecord.dataStream);
|
|
446
|
+
expect(threadRecordReply.status.code).to.equal(202);
|
|
447
|
+
// Alice adds Bob as a 'thread/admin' in that thread
|
|
448
|
+
const participantRecord = yield TestDataGenerator.generateRecordsWrite({
|
|
449
|
+
author: alice,
|
|
450
|
+
recipient: bob.did,
|
|
451
|
+
protocol: protocolDefinition.protocol,
|
|
452
|
+
protocolPath: 'thread/admin',
|
|
453
|
+
contextId: threadRecord.message.contextId,
|
|
454
|
+
parentId: threadRecord.message.recordId,
|
|
455
|
+
});
|
|
456
|
+
const participantRecordReply = yield dwn.processMessage(alice.did, participantRecord.message, participantRecord.dataStream);
|
|
457
|
+
expect(participantRecordReply.status.code).to.equal(202);
|
|
458
|
+
// Alice writes a chat message in that thread
|
|
459
|
+
const chatRecord = yield TestDataGenerator.generateRecordsWrite({
|
|
460
|
+
author: alice,
|
|
461
|
+
recipient: alice.did,
|
|
462
|
+
protocol: protocolDefinition.protocol,
|
|
463
|
+
protocolPath: 'thread/chat',
|
|
464
|
+
contextId: threadRecord.message.contextId,
|
|
465
|
+
parentId: threadRecord.message.recordId,
|
|
466
|
+
});
|
|
467
|
+
const chatRecordReply = yield dwn.processMessage(alice.did, chatRecord.message, chatRecord.dataStream);
|
|
468
|
+
expect(chatRecordReply.status.code).to.equal(202);
|
|
469
|
+
const chatDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
|
|
470
|
+
author: carol,
|
|
471
|
+
recordId: chatRecord.message.recordId,
|
|
472
|
+
});
|
|
473
|
+
const chatDeleteReplyCarol = yield dwn.processMessage(alice.did, chatDeleteCarol.message);
|
|
474
|
+
expect(chatDeleteReplyCarol.status.code).to.eq(401);
|
|
475
|
+
expect(chatDeleteReplyCarol.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
|
|
476
|
+
// Bob invokes the role to delete the chat message
|
|
477
|
+
const chatDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
478
|
+
author: bob,
|
|
479
|
+
recordId: chatRecord.message.recordId,
|
|
480
|
+
protocolRole: 'thread/admin',
|
|
481
|
+
});
|
|
482
|
+
const chatDeleteReply = yield dwn.processMessage(alice.did, chatDelete.message);
|
|
483
|
+
expect(chatDeleteReply.status.code).to.equal(202);
|
|
484
|
+
}));
|
|
485
|
+
it('should allow delete with $globalRole', () => __awaiter(this, void 0, void 0, function* () {
|
|
486
|
+
// scenario: Alice adds Bob as an 'admin' $globalRole. She writes a 'chat'.
|
|
487
|
+
// Bob invokes his admin role to delete the 'chat'.
|
|
488
|
+
const alice = yield DidKeyResolver.generate();
|
|
489
|
+
const bob = yield DidKeyResolver.generate();
|
|
490
|
+
const carol = yield DidKeyResolver.generate();
|
|
491
|
+
const protocolDefinition = friendRoleProtocolDefinition;
|
|
492
|
+
const protocolsConfig = yield TestDataGenerator.generateProtocolsConfigure({
|
|
493
|
+
author: alice,
|
|
494
|
+
protocolDefinition
|
|
495
|
+
});
|
|
496
|
+
const protocolsConfigureReply = yield dwn.processMessage(alice.did, protocolsConfig.message);
|
|
497
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
498
|
+
// Alice adds Bob as a 'thread/admin' in that thread
|
|
499
|
+
const participantRecord = yield TestDataGenerator.generateRecordsWrite({
|
|
500
|
+
author: alice,
|
|
501
|
+
recipient: bob.did,
|
|
502
|
+
protocol: protocolDefinition.protocol,
|
|
503
|
+
protocolPath: 'admin',
|
|
504
|
+
});
|
|
505
|
+
const participantRecordReply = yield dwn.processMessage(alice.did, participantRecord.message, participantRecord.dataStream);
|
|
506
|
+
expect(participantRecordReply.status.code).to.equal(202);
|
|
507
|
+
// Alice writes a chat message in that thread
|
|
508
|
+
const chatRecord = yield TestDataGenerator.generateRecordsWrite({
|
|
509
|
+
author: alice,
|
|
510
|
+
recipient: alice.did,
|
|
511
|
+
protocol: protocolDefinition.protocol,
|
|
512
|
+
protocolPath: 'chat',
|
|
513
|
+
});
|
|
514
|
+
const chatRecordReply = yield dwn.processMessage(alice.did, chatRecord.message, chatRecord.dataStream);
|
|
515
|
+
expect(chatRecordReply.status.code).to.equal(202);
|
|
516
|
+
// Carol is unable to delete the chat message
|
|
517
|
+
const chatDeleteCarol = yield TestDataGenerator.generateRecordsDelete({
|
|
518
|
+
author: carol,
|
|
519
|
+
recordId: chatRecord.message.recordId,
|
|
520
|
+
});
|
|
521
|
+
const chatDeleteCarolReply = yield dwn.processMessage(alice.did, chatDeleteCarol.message);
|
|
522
|
+
expect(chatDeleteCarolReply.status.code).to.equal(401);
|
|
523
|
+
expect(chatDeleteCarolReply.status.detail).to.contain(DwnErrorCode.ProtocolAuthorizationActionNotAllowed);
|
|
524
|
+
// Bob invokes the role to delete the chat message
|
|
525
|
+
const chatDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
526
|
+
author: bob,
|
|
527
|
+
recordId: chatRecord.message.recordId,
|
|
528
|
+
protocolRole: 'admin',
|
|
529
|
+
});
|
|
530
|
+
const chatDeleteReply = yield dwn.processMessage(alice.did, chatDelete.message);
|
|
531
|
+
expect(chatDeleteReply.status.code).to.equal(202);
|
|
532
|
+
}));
|
|
533
|
+
});
|
|
534
|
+
});
|
|
535
|
+
it('should return 401 if message is not authorized', () => __awaiter(this, void 0, void 0, function* () {
|
|
536
|
+
// scenario: Alice creates a record and Bob is unable to delete it.
|
|
537
|
+
const alice = yield DidKeyResolver.generate();
|
|
538
|
+
const bob = yield DidKeyResolver.generate();
|
|
539
|
+
const recordsWrite = yield TestDataGenerator.generateRecordsWrite({
|
|
540
|
+
author: alice,
|
|
541
|
+
});
|
|
542
|
+
const recordsWriteReply = yield dwn.processMessage(alice.did, recordsWrite.message, recordsWrite.dataStream);
|
|
543
|
+
expect(recordsWriteReply.status.code).to.equal(202);
|
|
544
|
+
const recordsDelete = yield TestDataGenerator.generateRecordsDelete({
|
|
545
|
+
author: bob,
|
|
546
|
+
recordId: recordsWrite.message.recordId,
|
|
547
|
+
});
|
|
548
|
+
const recordsDeleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
549
|
+
expect(recordsDeleteReply.status.code).to.equal(401);
|
|
550
|
+
expect(recordsDeleteReply.status.detail).to.contain(DwnErrorCode.RecordsDeleteAuthorizationFailed);
|
|
551
|
+
}));
|
|
552
|
+
describe('event log', () => {
|
|
553
|
+
it('should include RecordsDelete event and keep initial RecordsWrite event', () => __awaiter(this, void 0, void 0, function* () {
|
|
554
|
+
const alice = yield DidKeyResolver.generate();
|
|
555
|
+
const { message, dataStream } = yield TestDataGenerator.generateRecordsWrite({ author: alice });
|
|
556
|
+
const writeReply = yield dwn.processMessage(alice.did, message, dataStream);
|
|
557
|
+
expect(writeReply.status.code).to.equal(202);
|
|
558
|
+
const recordsDelete = yield RecordsDelete.create({
|
|
559
|
+
recordId: message.recordId,
|
|
560
|
+
signer: Jws.createSigner(alice)
|
|
561
|
+
});
|
|
562
|
+
const deleteReply = yield dwn.processMessage(alice.did, recordsDelete.message);
|
|
563
|
+
expect(deleteReply.status.code).to.equal(202);
|
|
564
|
+
const events = yield eventLog.getEvents(alice.did);
|
|
565
|
+
expect(events.length).to.equal(2);
|
|
566
|
+
const writeMessageCid = yield Message.getCid(message);
|
|
567
|
+
const deleteMessageCid = yield Message.getCid(recordsDelete.message);
|
|
568
|
+
const expectedMessageCids = new Set([writeMessageCid, deleteMessageCid]);
|
|
569
|
+
for (const { messageCid } of events) {
|
|
570
|
+
expectedMessageCids.delete(messageCid);
|
|
571
|
+
}
|
|
572
|
+
expect(expectedMessageCids.size).to.equal(0);
|
|
573
|
+
}));
|
|
574
|
+
it('should only keep first write and delete when subsequent writes happen', () => __awaiter(this, void 0, void 0, function* () {
|
|
575
|
+
const { message, author, dataStream, recordsWrite } = yield TestDataGenerator.generateRecordsWrite();
|
|
576
|
+
TestStubGenerator.stubDidResolver(didResolver, [author]);
|
|
577
|
+
const reply = yield dwn.processMessage(author.did, message, dataStream);
|
|
578
|
+
expect(reply.status.code).to.equal(202);
|
|
579
|
+
const newWrite = yield RecordsWrite.createFrom({
|
|
580
|
+
recordsWriteMessage: recordsWrite.message,
|
|
581
|
+
published: true,
|
|
582
|
+
signer: Jws.createSigner(author)
|
|
583
|
+
});
|
|
584
|
+
const newWriteReply = yield dwn.processMessage(author.did, newWrite.message);
|
|
585
|
+
expect(newWriteReply.status.code).to.equal(202);
|
|
586
|
+
const recordsDelete = yield RecordsDelete.create({
|
|
587
|
+
recordId: message.recordId,
|
|
588
|
+
signer: Jws.createSigner(author)
|
|
589
|
+
});
|
|
590
|
+
const deleteReply = yield dwn.processMessage(author.did, recordsDelete.message);
|
|
591
|
+
expect(deleteReply.status.code).to.equal(202);
|
|
592
|
+
const events = yield eventLog.getEvents(author.did);
|
|
593
|
+
expect(events.length).to.equal(2);
|
|
594
|
+
const deletedMessageCid = yield Message.getCid(newWrite.message);
|
|
595
|
+
for (const { messageCid } of events) {
|
|
596
|
+
if (messageCid === deletedMessageCid) {
|
|
597
|
+
expect.fail(`${messageCid} should not exist`);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}));
|
|
601
|
+
});
|
|
602
|
+
});
|
|
603
|
+
it('should return 401 if signature check fails', () => __awaiter(this, void 0, void 0, function* () {
|
|
604
|
+
const { author, message } = yield TestDataGenerator.generateRecordsDelete();
|
|
605
|
+
const tenant = author.did;
|
|
606
|
+
// setting up a stub did resolver & message store
|
|
607
|
+
// intentionally not supplying the public key so a different public key is generated to simulate invalid signature
|
|
608
|
+
const mismatchingPersona = yield TestDataGenerator.generatePersona({ did: author.did, keyId: author.keyId });
|
|
609
|
+
const didResolver = TestStubGenerator.createDidResolverStub(mismatchingPersona);
|
|
610
|
+
const messageStore = stubInterface();
|
|
611
|
+
const dataStore = stubInterface();
|
|
612
|
+
const recordsDeleteHandler = new RecordsDeleteHandler(didResolver, messageStore, dataStore, eventLog);
|
|
613
|
+
const reply = yield recordsDeleteHandler.handle({ tenant, message });
|
|
614
|
+
expect(reply.status.code).to.equal(401);
|
|
615
|
+
}));
|
|
616
|
+
it('should return 400 if fail parsing the message', () => __awaiter(this, void 0, void 0, function* () {
|
|
617
|
+
const { author, message } = yield TestDataGenerator.generateRecordsDelete();
|
|
618
|
+
const tenant = author.did;
|
|
619
|
+
// setting up a stub method resolver & message store
|
|
620
|
+
const messageStore = stubInterface();
|
|
621
|
+
const dataStore = stubInterface();
|
|
622
|
+
const recordsDeleteHandler = new RecordsDeleteHandler(didResolver, messageStore, dataStore, eventLog);
|
|
623
|
+
// stub the `parse()` function to throw an error
|
|
624
|
+
sinon.stub(RecordsDelete, 'parse').throws('anyError');
|
|
625
|
+
const reply = yield recordsDeleteHandler.handle({ tenant, message });
|
|
626
|
+
expect(reply.status.code).to.equal(400);
|
|
627
|
+
}));
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
//# sourceMappingURL=records-delete.spec.js.map
|