@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,218 @@
|
|
|
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 threadRoleProtocolDefinition from '../vectors/protocol-definitions/thread-role.json' with { type: 'json' };
|
|
13
|
+
import { authenticate } from '../../src/core/auth.js';
|
|
14
|
+
import { DidKeyResolver } from '../../src/did/did-key-resolver.js';
|
|
15
|
+
import { Encoder } from '../../src/index.js';
|
|
16
|
+
import { HdKey } from '../../src/utils/hd-key.js';
|
|
17
|
+
import { KeyDerivationScheme } from '../../src/utils/hd-key.js';
|
|
18
|
+
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
19
|
+
import { TestStores } from '../test-stores.js';
|
|
20
|
+
import { TestStubGenerator } from '../utils/test-stub-generator.js';
|
|
21
|
+
import chai, { expect } from 'chai';
|
|
22
|
+
import { DataStream, DidResolver, Dwn, Jws, Protocols, ProtocolsConfigure, ProtocolsQuery, Records, RecordsRead } from '../../src/index.js';
|
|
23
|
+
chai.use(chaiAsPromised);
|
|
24
|
+
export function testEndToEndScenarios() {
|
|
25
|
+
describe('End-to-end Scenarios Spanning Features', () => {
|
|
26
|
+
if (process.env.TESTSOFF === 'true') {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let didResolver;
|
|
30
|
+
let messageStore;
|
|
31
|
+
let dataStore;
|
|
32
|
+
let eventLog;
|
|
33
|
+
let dwn;
|
|
34
|
+
// important to follow the `before` and `after` pattern to initialize and clean the stores in tests
|
|
35
|
+
// so that different test suites can reuse the same backend store for testing
|
|
36
|
+
before(() => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
didResolver = new DidResolver([new DidKeyResolver()]);
|
|
38
|
+
const stores = TestStores.get();
|
|
39
|
+
messageStore = stores.messageStore;
|
|
40
|
+
dataStore = stores.dataStore;
|
|
41
|
+
eventLog = stores.eventLog;
|
|
42
|
+
dwn = yield Dwn.create({ didResolver, messageStore, dataStore, eventLog });
|
|
43
|
+
}));
|
|
44
|
+
beforeEach(() => __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
sinon.restore(); // wipe all previous stubs/spies/mocks/fakes
|
|
46
|
+
// clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
47
|
+
yield messageStore.clear();
|
|
48
|
+
yield dataStore.clear();
|
|
49
|
+
yield eventLog.clear();
|
|
50
|
+
}));
|
|
51
|
+
after(() => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
yield dwn.close();
|
|
53
|
+
}));
|
|
54
|
+
it('should support a multi-participant encrypted chat protocol', () => __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
// Scenario:
|
|
56
|
+
// 1. Alice starts a chat thread
|
|
57
|
+
// 2. Alice adds Bob as a participant with [symmetric key] encrypted using [Bob's participant-level public key]
|
|
58
|
+
// 3. Alice writes a chat message(s) in the thread
|
|
59
|
+
// 4. Alice sends an invite to Bob's DWN with the [context/thread ID]
|
|
60
|
+
// 5. Bob fetches the invite from his DWN and obtains the [context/thread ID]
|
|
61
|
+
// 6. Bob fetches the entire thread using the [context/thread ID]
|
|
62
|
+
// 7. Bob is able to decrypt all thread content
|
|
63
|
+
// creating Alice and Bob persona and setting up a stub DID resolver
|
|
64
|
+
const alice = yield TestDataGenerator.generatePersona();
|
|
65
|
+
const bob = yield TestDataGenerator.generatePersona();
|
|
66
|
+
TestStubGenerator.stubDidResolver(didResolver, [alice, bob]);
|
|
67
|
+
const protocolDefinition = threadRoleProtocolDefinition;
|
|
68
|
+
// Alice configures chat protocol with encryption
|
|
69
|
+
const protocolDefinitionForAlice = yield Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, alice.keyId, alice.keyPair.privateJwk);
|
|
70
|
+
const protocolsConfigureForAlice = yield TestDataGenerator.generateProtocolsConfigure({
|
|
71
|
+
author: alice,
|
|
72
|
+
protocolDefinition: protocolDefinitionForAlice
|
|
73
|
+
});
|
|
74
|
+
const protocolsConfigureForAliceReply = yield dwn.processMessage(alice.did, protocolsConfigureForAlice.message);
|
|
75
|
+
expect(protocolsConfigureForAliceReply.status.code).to.equal(202);
|
|
76
|
+
// Bob configures chat protocol with encryption
|
|
77
|
+
const protocolDefinitionForBob = yield Protocols.deriveAndInjectPublicEncryptionKeys(protocolDefinition, bob.keyId, bob.keyPair.privateJwk);
|
|
78
|
+
const protocolsConfigureForBob = yield TestDataGenerator.generateProtocolsConfigure({
|
|
79
|
+
author: bob,
|
|
80
|
+
protocolDefinition: protocolDefinitionForBob
|
|
81
|
+
});
|
|
82
|
+
const protocolsConfigureReply = yield dwn.processMessage(bob.did, protocolsConfigureForBob.message);
|
|
83
|
+
expect(protocolsConfigureReply.status.code).to.equal(202);
|
|
84
|
+
// 1. Alice starts a chat thread writing to her own DWN
|
|
85
|
+
const threadBytes = Encoder.objectToBytes({ title: 'Top Secret' });
|
|
86
|
+
const threadRecord = yield TestDataGenerator.generateProtocolEncryptedRecordsWrite({
|
|
87
|
+
plaintextBytes: threadBytes,
|
|
88
|
+
author: alice,
|
|
89
|
+
protocolDefinition: protocolDefinition,
|
|
90
|
+
protocolPath: 'thread',
|
|
91
|
+
encryptSymmetricKeyWithProtocolPathDerivedKey: false,
|
|
92
|
+
encryptSymmetricKeyWithProtocolContextDerivedKey: true
|
|
93
|
+
});
|
|
94
|
+
const threadRecordReply1 = yield dwn.processMessage(alice.did, threadRecord.message, threadRecord.dataStream);
|
|
95
|
+
expect(threadRecordReply1.status.code).to.equal(202);
|
|
96
|
+
// 2. Alice adds Bob as a participant giving him the [context-derived private key] encrypted using [Bob's participant-level public key]
|
|
97
|
+
// the context-derived key to be used for encrypting symmetric keys
|
|
98
|
+
const aliceRootKey = {
|
|
99
|
+
rootKeyId: alice.keyId,
|
|
100
|
+
derivationScheme: KeyDerivationScheme.ProtocolContext,
|
|
101
|
+
derivedPrivateKey: alice.keyPair.privateJwk
|
|
102
|
+
};
|
|
103
|
+
const contextDerivationPath = Records.constructKeyDerivationPathUsingProtocolContextScheme(threadRecord.message.contextId);
|
|
104
|
+
const contextDerivedPrivateKey = yield HdKey.derivePrivateKey(aliceRootKey, contextDerivationPath);
|
|
105
|
+
const contextDerivedPublicKey = threadRecord.encryptionInput.keyEncryptionInputs[0].publicKey;
|
|
106
|
+
// Alice queries Bob's DWN for Bob's chat protocol definition containing public key declarations
|
|
107
|
+
const protocolsQuery = yield ProtocolsQuery.create({
|
|
108
|
+
filter: { protocol: threadRoleProtocolDefinition.protocol }
|
|
109
|
+
});
|
|
110
|
+
const protocolsQueryReply = yield dwn.processMessage(bob.did, protocolsQuery.message);
|
|
111
|
+
const protocolConfigureMessageOfBobFetched = protocolsQueryReply.entries[0];
|
|
112
|
+
// Alice verifies that the chat protocol definition is authored by Bob
|
|
113
|
+
yield authenticate(protocolConfigureMessageOfBobFetched.authorization, didResolver);
|
|
114
|
+
const protocolsConfigureOfBobFetched = yield ProtocolsConfigure.parse(protocolConfigureMessageOfBobFetched);
|
|
115
|
+
expect(protocolsConfigureOfBobFetched.author).to.equal(bob.did);
|
|
116
|
+
// generate the encrypted participant record using Bob's protocol configuration fetched
|
|
117
|
+
const participantBobRecord = yield TestDataGenerator.generateProtocolEncryptedRecordsWrite({
|
|
118
|
+
plaintextBytes: Encoder.objectToBytes(contextDerivedPrivateKey),
|
|
119
|
+
author: alice,
|
|
120
|
+
recipient: bob.did,
|
|
121
|
+
protocolDefinition: protocolsConfigureOfBobFetched.message.descriptor.definition,
|
|
122
|
+
protocolPath: 'thread/participant',
|
|
123
|
+
protocolContextId: threadRecord.message.contextId,
|
|
124
|
+
protocolParentId: threadRecord.message.recordId,
|
|
125
|
+
encryptSymmetricKeyWithProtocolPathDerivedKey: true,
|
|
126
|
+
encryptSymmetricKeyWithProtocolContextDerivedKey: false // this could be `true` also, but mostly orthogonal to the scenario
|
|
127
|
+
});
|
|
128
|
+
const participantRecordReply = yield dwn.processMessage(alice.did, participantBobRecord.message, participantBobRecord.dataStream);
|
|
129
|
+
expect(participantRecordReply.status.code).to.equal(202);
|
|
130
|
+
// 3. Alice writes a chat message(s) in the thread
|
|
131
|
+
const messageByAlice = 'Message from Alice';
|
|
132
|
+
const chatMessageByAlice = yield TestDataGenerator.generateProtocolEncryptedRecordsWrite({
|
|
133
|
+
plaintextBytes: Encoder.stringToBytes(messageByAlice),
|
|
134
|
+
author: alice,
|
|
135
|
+
recipient: alice.did, // this is arguably irrelevant in multi-party communication
|
|
136
|
+
protocolDefinition: protocolDefinition,
|
|
137
|
+
protocolPath: 'thread/chat',
|
|
138
|
+
protocolContextId: threadRecord.message.contextId,
|
|
139
|
+
protocolContextDerivingRootKeyId: aliceRootKey.rootKeyId,
|
|
140
|
+
protocolContextDerivedPublicJwk: contextDerivedPublicKey,
|
|
141
|
+
protocolParentId: threadRecord.message.recordId,
|
|
142
|
+
encryptSymmetricKeyWithProtocolPathDerivedKey: false,
|
|
143
|
+
encryptSymmetricKeyWithProtocolContextDerivedKey: true
|
|
144
|
+
});
|
|
145
|
+
const chatMessageReply = yield dwn.processMessage(alice.did, chatMessageByAlice.message, chatMessageByAlice.dataStream);
|
|
146
|
+
expect(chatMessageReply.status.code).to.equal(202);
|
|
147
|
+
// Assume the below steps can be done since it is a common DWN usage pattern
|
|
148
|
+
// 4. Alice sends an invite to Bob's DWN with the [context/thread ID]
|
|
149
|
+
// 5. Bob fetches the invite from his DWN and obtains the [context/thread ID]
|
|
150
|
+
// 6. Bob fetches the entire thread using the [context/thread ID]
|
|
151
|
+
// Test that Bob is able to read his 'participant' role to obtain the context-derived private key for message decryption.
|
|
152
|
+
// He doesn't need to invoke the role because recipients of a record are always authorized to read it
|
|
153
|
+
const participantRead = yield RecordsRead.create({
|
|
154
|
+
signer: Jws.createSigner(bob),
|
|
155
|
+
filter: {
|
|
156
|
+
protocolPath: 'thread/participant',
|
|
157
|
+
recipient: bob.did,
|
|
158
|
+
contextId: threadRecord.message.contextId
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
const participantReadReply = yield dwn.processMessage(alice.did, participantRead.message);
|
|
162
|
+
expect(participantReadReply.status.code).to.equal(200);
|
|
163
|
+
// Test that Bob is able to read the thread root record
|
|
164
|
+
const threadRead = yield RecordsRead.create({
|
|
165
|
+
signer: Jws.createSigner(bob),
|
|
166
|
+
filter: {
|
|
167
|
+
protocolPath: 'thread',
|
|
168
|
+
contextId: threadRecord.message.contextId
|
|
169
|
+
},
|
|
170
|
+
protocolRole: 'thread/participant'
|
|
171
|
+
});
|
|
172
|
+
const threadReadReply = yield dwn.processMessage(alice.did, threadRead.message);
|
|
173
|
+
expect(threadReadReply.status.code).to.equal(200);
|
|
174
|
+
expect(threadReadReply.record).to.exist;
|
|
175
|
+
// Test Bob can invoke his 'participant' role to read the chat message
|
|
176
|
+
const chatRead = yield RecordsRead.create({
|
|
177
|
+
signer: Jws.createSigner(bob),
|
|
178
|
+
filter: {
|
|
179
|
+
protocolPath: 'thread/chat',
|
|
180
|
+
contextId: threadRecord.message.contextId
|
|
181
|
+
},
|
|
182
|
+
protocolRole: 'thread/participant'
|
|
183
|
+
});
|
|
184
|
+
const chatReadReply = yield dwn.processMessage(alice.did, chatRead.message);
|
|
185
|
+
expect(chatReadReply.status.code).to.equal(200);
|
|
186
|
+
expect(chatReadReply.record).to.exist;
|
|
187
|
+
// 7. Bob is able to decrypt all thread content
|
|
188
|
+
// Bob decrypts the participant message to obtain the context-derived private key
|
|
189
|
+
const bobRootKey = {
|
|
190
|
+
rootKeyId: bob.keyId,
|
|
191
|
+
derivationScheme: KeyDerivationScheme.ProtocolPath,
|
|
192
|
+
derivedPrivateKey: bob.keyPair.privateJwk
|
|
193
|
+
};
|
|
194
|
+
const participantRecordFetched = participantReadReply.record;
|
|
195
|
+
const encryptedContextDerivedPrivateKeyBytes = yield DataStream.toBytes(participantRecordFetched.data); // to create streams for testing
|
|
196
|
+
const derivationPathFromProtocolPath = Records.constructKeyDerivationPathUsingProtocolPathScheme(participantRecordFetched.descriptor);
|
|
197
|
+
const bobProtocolPathDerivedPrivateKey = yield HdKey.derivePrivateKey(bobRootKey, derivationPathFromProtocolPath);
|
|
198
|
+
const decryptedContextDerivedKeyStream = yield Records.decrypt(participantRecordFetched, bobProtocolPathDerivedPrivateKey, DataStream.fromBytes(encryptedContextDerivedPrivateKeyBytes));
|
|
199
|
+
const decryptedContextDerivedPrivateKey = yield DataStream.toObject(decryptedContextDerivedKeyStream);
|
|
200
|
+
expect(decryptedContextDerivedPrivateKey).to.deep.equal(contextDerivedPrivateKey);
|
|
201
|
+
// Arguably unrelated to the scenario, but let's sanity check that Bob's root key can also decrypt the encrypted context-derived private key
|
|
202
|
+
const decryptedContextDerivedKeyStream2 = yield Records.decrypt(participantRecordFetched, bobRootKey, DataStream.fromBytes(encryptedContextDerivedPrivateKeyBytes));
|
|
203
|
+
const decryptedContextDerivedPrivateKey2 = yield DataStream.toObject(decryptedContextDerivedKeyStream2);
|
|
204
|
+
expect(decryptedContextDerivedPrivateKey2).to.deep.equal(contextDerivedPrivateKey);
|
|
205
|
+
// Verify that Bob can now decrypt Alice's chat thread record using the decrypted context-derived key
|
|
206
|
+
const decryptedChatThread = yield Records.decrypt(threadReadReply.record, decryptedContextDerivedPrivateKey, threadReadReply.record.data);
|
|
207
|
+
expect(yield DataStream.toBytes(decryptedChatThread)).to.deep.equal(threadBytes);
|
|
208
|
+
// Verify that Bob can now decrypt Alice's chat message using the decrypted context-derived key
|
|
209
|
+
const encryptedChatMessageBytes = yield DataStream.toBytes(chatReadReply.record.data); // to create streams for testing
|
|
210
|
+
const decryptedChatMessage = yield Records.decrypt(chatReadReply.record, decryptedContextDerivedPrivateKey, DataStream.fromBytes(encryptedChatMessageBytes));
|
|
211
|
+
expect(yield DataStream.toBytes(decryptedChatMessage)).to.deep.equal(Encoder.stringToBytes(messageByAlice));
|
|
212
|
+
// Arguably unrelated to the scenario, but let's also sanity check that Alice's root key can also decrypt the encrypted chat message
|
|
213
|
+
const decryptedChatMessageStream2 = yield Records.decrypt(chatReadReply.record, aliceRootKey, DataStream.fromBytes(encryptedChatMessageBytes));
|
|
214
|
+
expect(yield DataStream.toBytes(decryptedChatMessageStream2)).to.deep.equal(Encoder.stringToBytes(messageByAlice));
|
|
215
|
+
}));
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=end-to-end-tests.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"end-to-end-tests.spec.js","sourceRoot":"","sources":["../../../../tests/scenarios/end-to-end-tests.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
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 chai, { expect } from 'chai';
|
|
12
|
+
import { ArrayUtility } from '../../src/utils/array.js';
|
|
13
|
+
import { Cid } from '../../src/utils/cid.js';
|
|
14
|
+
import { DataStoreLevel } from '../../src/store/data-store-level.js';
|
|
15
|
+
import { DataStream } from '../../src/index.js';
|
|
16
|
+
import { TestDataGenerator } from '../utils/test-data-generator.js';
|
|
17
|
+
chai.use(chaiAsPromised);
|
|
18
|
+
let store;
|
|
19
|
+
describe('DataStoreLevel Test Suite', () => {
|
|
20
|
+
if (process.env.TESTSOFF === 'true') {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
before(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
store = new DataStoreLevel({ blockstoreLocation: 'tests/data/TEST-DATASTORE' });
|
|
25
|
+
yield store.open();
|
|
26
|
+
}));
|
|
27
|
+
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
28
|
+
yield store.clear(); // clean up before each test rather than after so that a test does not depend on other tests to do the clean up
|
|
29
|
+
}));
|
|
30
|
+
after(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
yield store.close();
|
|
32
|
+
}));
|
|
33
|
+
describe('put', function () {
|
|
34
|
+
it('should return the correct size of the data stored', () => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
const tenant = yield TestDataGenerator.randomCborSha256Cid();
|
|
36
|
+
const messageCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
37
|
+
let dataSizeInBytes = 10;
|
|
38
|
+
// iterate through order of magnitude in size until hitting 10MB
|
|
39
|
+
while (dataSizeInBytes <= 10000000) {
|
|
40
|
+
const dataBytes = TestDataGenerator.randomBytes(dataSizeInBytes);
|
|
41
|
+
const dataStream = DataStream.fromBytes(dataBytes);
|
|
42
|
+
const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
|
|
43
|
+
const { dataSize } = yield store.put(tenant, messageCid, dataCid, dataStream);
|
|
44
|
+
expect(dataSize).to.equal(dataSizeInBytes);
|
|
45
|
+
const result = (yield store.get(tenant, messageCid, dataCid));
|
|
46
|
+
const storedDataBytes = yield DataStream.toBytes(result.dataStream);
|
|
47
|
+
expect(storedDataBytes).to.eql(dataBytes);
|
|
48
|
+
dataSizeInBytes *= 10;
|
|
49
|
+
}
|
|
50
|
+
}));
|
|
51
|
+
it('should duplicate same data if written to different tenants', () => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const alice = yield TestDataGenerator.randomCborSha256Cid();
|
|
53
|
+
const bob = yield TestDataGenerator.randomCborSha256Cid();
|
|
54
|
+
const dataBytes = TestDataGenerator.randomBytes(100);
|
|
55
|
+
const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
|
|
56
|
+
const blockstoreForData = yield store.blockstore.partition('data');
|
|
57
|
+
const blockstoreOfAlice = yield blockstoreForData.partition(alice);
|
|
58
|
+
const blockstoreOfAliceOfDataCid = yield blockstoreOfAlice.partition(dataCid);
|
|
59
|
+
const blockstoreOfBob = yield blockstoreForData.partition(bob);
|
|
60
|
+
const blockstoreOfBobOfDataCid = yield blockstoreOfBob.partition(dataCid);
|
|
61
|
+
// write data to alice's DWN
|
|
62
|
+
const dataStream1 = DataStream.fromBytes(dataBytes);
|
|
63
|
+
const messageCid1 = yield TestDataGenerator.randomCborSha256Cid();
|
|
64
|
+
yield store.put(alice, messageCid1, dataCid, dataStream1);
|
|
65
|
+
// write same data to bob's DWN
|
|
66
|
+
const dataStream2 = DataStream.fromBytes(dataBytes);
|
|
67
|
+
const messageCid2 = yield TestDataGenerator.randomCborSha256Cid();
|
|
68
|
+
yield store.put(bob, messageCid2, dataCid, dataStream2);
|
|
69
|
+
// verify that both alice and bob's blockstore have their own reference to data CID
|
|
70
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
71
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
describe('get', function () {
|
|
75
|
+
it('should return `undefined if unable to find the data specified`', () => __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
const tenant = yield TestDataGenerator.randomCborSha256Cid();
|
|
77
|
+
const messageCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
78
|
+
const randomCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
79
|
+
const result = yield store.get(tenant, messageCid, randomCid);
|
|
80
|
+
expect(result).to.be.undefined;
|
|
81
|
+
}));
|
|
82
|
+
it('should return `undefined if the dataCid is different than the dataStream`', () => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
const tenant = yield TestDataGenerator.randomCborSha256Cid();
|
|
84
|
+
const messageCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
85
|
+
const randomCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
86
|
+
const dataBytes = TestDataGenerator.randomBytes(10000000);
|
|
87
|
+
const dataStream = DataStream.fromBytes(dataBytes);
|
|
88
|
+
const { dataCid } = yield store.put(tenant, messageCid, randomCid, dataStream);
|
|
89
|
+
expect(dataCid).to.not.equal(randomCid);
|
|
90
|
+
const result = yield store.get(tenant, messageCid, randomCid);
|
|
91
|
+
expect(result).to.be.undefined;
|
|
92
|
+
}));
|
|
93
|
+
});
|
|
94
|
+
describe('associate', function () {
|
|
95
|
+
it('should return `false` if tenant missing', () => __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
const tenant = yield TestDataGenerator.randomCborSha256Cid();
|
|
97
|
+
const messageCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
98
|
+
const randomCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
99
|
+
const keysBeforeAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
100
|
+
expect(keysBeforeAssociate.length).to.equal(0);
|
|
101
|
+
const result = yield store.associate(tenant, messageCid, randomCid);
|
|
102
|
+
expect(result).to.be.undefined;
|
|
103
|
+
const keysAfterAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
104
|
+
expect(keysAfterAssociate.length).to.equal(0);
|
|
105
|
+
}));
|
|
106
|
+
it('should return `false` if data missing', () => __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
const tenant = yield TestDataGenerator.randomCborSha256Cid();
|
|
108
|
+
const messageCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
109
|
+
const randomCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
110
|
+
const dataBytes = TestDataGenerator.randomBytes(10);
|
|
111
|
+
const dataStream = DataStream.fromBytes(dataBytes);
|
|
112
|
+
const { dataCid } = yield store.put(tenant, messageCid, randomCid, dataStream);
|
|
113
|
+
expect(dataCid).to.not.equal(randomCid);
|
|
114
|
+
const keysBeforeAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
115
|
+
expect(keysBeforeAssociate.length).to.equal(2);
|
|
116
|
+
const result = yield store.associate(tenant, messageCid, randomCid);
|
|
117
|
+
expect(result).to.be.undefined;
|
|
118
|
+
const keysAfterAssociate = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
119
|
+
expect(keysAfterAssociate.length).to.equal(2);
|
|
120
|
+
}));
|
|
121
|
+
it('should return the root CID', () => __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
const tenant = yield TestDataGenerator.randomCborSha256Cid();
|
|
123
|
+
const messageCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
124
|
+
const dataBytes = TestDataGenerator.randomBytes(10000000);
|
|
125
|
+
const dataStream = DataStream.fromBytes(dataBytes);
|
|
126
|
+
const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
|
|
127
|
+
yield store.put(tenant, messageCid, dataCid, dataStream);
|
|
128
|
+
const keysBeforeDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
129
|
+
expect(keysBeforeDelete.length).to.equal(41);
|
|
130
|
+
const result = (yield store.associate(tenant, messageCid, dataCid));
|
|
131
|
+
expect(result.dataCid).to.equal(dataCid);
|
|
132
|
+
expect(result.dataSize).to.equal(10000000);
|
|
133
|
+
const keysAfterDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
134
|
+
expect(keysAfterDelete.length).to.equal(41);
|
|
135
|
+
}));
|
|
136
|
+
});
|
|
137
|
+
describe('delete', function () {
|
|
138
|
+
it('should not leave anything behind when deleting a the root CID', () => __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const tenant = yield TestDataGenerator.randomCborSha256Cid();
|
|
140
|
+
const messageCid = yield TestDataGenerator.randomCborSha256Cid();
|
|
141
|
+
const dataBytes = TestDataGenerator.randomBytes(10000000);
|
|
142
|
+
const dataStream = DataStream.fromBytes(dataBytes);
|
|
143
|
+
const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
|
|
144
|
+
yield store.put(tenant, messageCid, dataCid, dataStream);
|
|
145
|
+
const keysBeforeDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
146
|
+
expect(keysBeforeDelete.length).to.equal(41);
|
|
147
|
+
yield store.delete(tenant, messageCid, dataCid);
|
|
148
|
+
const keysAfterDelete = yield ArrayUtility.fromAsyncGenerator(store.blockstore.db.keys());
|
|
149
|
+
expect(keysAfterDelete.length).to.equal(0);
|
|
150
|
+
}));
|
|
151
|
+
it('should only delete data after all messages referencing it are deleted', () => __awaiter(this, void 0, void 0, function* () {
|
|
152
|
+
const alice = yield TestDataGenerator.randomCborSha256Cid();
|
|
153
|
+
const bob = yield TestDataGenerator.randomCborSha256Cid();
|
|
154
|
+
const dataBytes = TestDataGenerator.randomBytes(100);
|
|
155
|
+
const dataCid = yield Cid.computeDagPbCidFromBytes(dataBytes);
|
|
156
|
+
const blockstoreForData = yield store.blockstore.partition('data');
|
|
157
|
+
const blockstoreOfAlice = yield blockstoreForData.partition(alice);
|
|
158
|
+
const blockstoreOfAliceOfDataCid = yield blockstoreOfAlice.partition(dataCid);
|
|
159
|
+
const blockstoreOfBob = yield blockstoreForData.partition(bob);
|
|
160
|
+
const blockstoreOfBobOfDataCid = yield blockstoreOfBob.partition(dataCid);
|
|
161
|
+
// alice writes a records with data
|
|
162
|
+
const dataStream1 = DataStream.fromBytes(dataBytes);
|
|
163
|
+
const messageCid1 = yield TestDataGenerator.randomCborSha256Cid();
|
|
164
|
+
yield store.put(alice, messageCid1, dataCid, dataStream1);
|
|
165
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
166
|
+
// alice writes a different record with same data again
|
|
167
|
+
const dataStream2 = DataStream.fromBytes(dataBytes);
|
|
168
|
+
const messageCid2 = yield TestDataGenerator.randomCborSha256Cid();
|
|
169
|
+
yield store.put(alice, messageCid2, dataCid, dataStream2);
|
|
170
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
171
|
+
// bob writes a records with same data
|
|
172
|
+
const dataStream3 = DataStream.fromBytes(dataBytes);
|
|
173
|
+
const messageCid3 = yield TestDataGenerator.randomCborSha256Cid();
|
|
174
|
+
yield store.put(bob, messageCid3, dataCid, dataStream3);
|
|
175
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
176
|
+
// bob writes a different record with same data again
|
|
177
|
+
const dataStream4 = DataStream.fromBytes(dataBytes);
|
|
178
|
+
const messageCid4 = yield TestDataGenerator.randomCborSha256Cid();
|
|
179
|
+
yield store.put(bob, messageCid4, dataCid, dataStream4);
|
|
180
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
181
|
+
// alice deletes one of the two records
|
|
182
|
+
yield store.delete(alice, messageCid1, dataCid);
|
|
183
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
184
|
+
// alice deletes the other record
|
|
185
|
+
yield store.delete(alice, messageCid2, dataCid);
|
|
186
|
+
// verify that data is deleted in alice's blockstore, but remains in bob's blockstore
|
|
187
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfAliceOfDataCid.db.keys())).to.eventually.eql([]);
|
|
188
|
+
yield expect(ArrayUtility.fromAsyncGenerator(blockstoreOfBobOfDataCid.db.keys())).to.eventually.eql([dataCid]);
|
|
189
|
+
}));
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=data-store-level.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-store-level.spec.js","sourceRoot":"","sources":["../../../../tests/store/data-store-level.spec.ts"],"names":[],"mappings":"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"}
|