From 9ce891e0beb7e7d52ba123ffc3aad2ba2a792154 Mon Sep 17 00:00:00 2001 From: Niels Klomp Date: Tue, 9 Aug 2022 00:34:06 +0200 Subject: [PATCH] Ci (#2) * Add CI --- .eslintrc.json | 4 + .github/workflows/main.yaml | 35 +++++++ CHANGELOG.md | 6 ++ README.md | 4 +- lib/issuer/WellKnownDidIssuer.ts | 2 + lib/types/index.ts | 2 +- lib/verifier/WellKnownDidVerifier.ts | 22 +++-- package.json | 19 ++-- test/resources/DocumentLoader.ts | 24 +++-- test/resources/issuers/VcJsIssuer.ts | 5 +- test/resources/verifiers/VcJsVerifier.ts | 6 +- test/verifier.spec.ts | 52 ++++------ tsconfig.json | 6 +- yarn.lock | 118 +++-------------------- 14 files changed, 127 insertions(+), 178 deletions(-) create mode 100644 .github/workflows/main.yaml diff --git a/.eslintrc.json b/.eslintrc.json index b1ea353..621457f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -16,6 +16,10 @@ "rules": { "@typescript-eslint/no-var-requires": 0, "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/ban-ts-comment": [ + "error", + {"ts-ignore": "allow-with-description"} + ], "eslint-comments/disable-enable-pair": [ "error", { "allowWholeFile": true } diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..7760b70 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,35 @@ +name: CI + +on: + push: + pull_request: + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + build: + name: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: install node v14 + uses: actions/setup-node@v3 + with: + node-version: 14 + - name: yarn install + run: yarn install + - name: yarn test + run: yarn test + - name: yarn build + run: yarn build + - name: codecov + uses: codecov/codecov-action@v3 + with: + token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos + name: codecov # optional + flags: unittest + fail_ci_if_error: true # optional (default = false) + #directory: ./coverage/reports/ + #files: ./coverage1.xml,./coverage2.xml + verbose: true # optional (default = false) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b9abcc..d769537 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,8 @@ # Release Notes +The well-known DIDs client typescript library is still in an alpha state at this point. Please note that the interfaces might still change a bit as the software still is in active development. + +## v0.1.0 - 2022-08-08 + +Initial release + diff --git a/README.md b/README.md index 3400b49..84b31e4 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,10 @@
-[![CI](https://github.com/Sphereon-Opensource/wellknown-dids-client/actions/workflows/main.yml/badge.svg)](https://github.com/Sphereon-Opensource/wellknown-dids-client/actions/workflows/main.yml) [![codecov](https://codecov.io/gh/Sphereon-Opensource/wellknown-dids-client/branch/develop/graph/badge.svg?token=9P1JGUYA35)](https://codecov.io/gh/Sphereon-Opensource/wellknown-dids-client) [![NPM Version](https://img.shields.io/npm/v/@sphereon/wellknown-dids-client.svg)](https://npm.im/@sphereon/wellknown-dids-client) +[![CI](https://github.com/Sphereon-Opensource/wellknown-dids-client/actions/workflows/main.yaml/badge.svg)](https://github.com/Sphereon-Opensource/wellknown-dids-client/actions/workflows/main.yaml) [![codecov](https://codecov.io/gh/Sphereon-Opensource/wellknown-dids-client/branch/develop/graph/badge.svg?token=9P1JGUYA35)](https://codecov.io/gh/Sphereon-Opensource/wellknown-dids-client) [![NPM Version](https://img.shields.io/npm/v/@sphereon/wellknown-dids-client.svg)](https://npm.im/@sphereon/wellknown-dids-client) ### Wellknown-dids client -The wellknown-dids-client is a library to create DID configuration resources and domain linkage credentials and to be able to verify these. +The wellknown-dids-client is a library to create DID configuration resources and domain linkage credentials and to be able to verify these conforming to the DIF [spec for well-known DID Configurations](https://identity.foundation/.well-known/resources/did-configuration/) It is written in Typescript and can be compiled to any target JavaScript version. ### Supported actions diff --git a/lib/issuer/WellKnownDidIssuer.ts b/lib/issuer/WellKnownDidIssuer.ts index efa114f..ecc8a6e 100644 --- a/lib/issuer/WellKnownDidIssuer.ts +++ b/lib/issuer/WellKnownDidIssuer.ts @@ -100,6 +100,8 @@ export class WellKnownDidIssuer { return (args.issueCallback) ? await args.issueCallback({ credential, proofFormat: args.options.proofFormat }) + // @ts-ignore: We know for sure the config is present + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion : await this.config!.issueCallback({ credential, proofFormat: args.options.proofFormat }) } diff --git a/lib/types/index.ts b/lib/types/index.ts index 97622e6..7c29b27 100644 --- a/lib/types/index.ts +++ b/lib/types/index.ts @@ -132,7 +132,7 @@ export interface IVerifyDomainLinkageCredentialArgs { verifySignatureCallback?: (args: IVerifyCallbackArgs) => Promise } -export type StrictPropertyCheck = Exclude extends never ? {} : TError; +export type StrictPropertyCheck = Exclude extends never ? unknown : TError; export interface ICredentialValidation { status: ValidationStatusEnum; diff --git a/lib/verifier/WellKnownDidVerifier.ts b/lib/verifier/WellKnownDidVerifier.ts index 1594388..a5f0dda 100644 --- a/lib/verifier/WellKnownDidVerifier.ts +++ b/lib/verifier/WellKnownDidVerifier.ts @@ -89,7 +89,7 @@ export class WellKnownDidVerifier { .then((didConfigurationResource: IDidConfigurationResource) => this.verifyResource({ configuration: didConfigurationResource, - did: (this.config!.onlyVerifyServiceDid || args.onlyVerifyServiceDid) + did: (this.config?.onlyVerifyServiceDid || args.onlyVerifyServiceDid) ? args.descriptor.id : undefined, verifySignatureCallback: args.verifySignatureCallback })) @@ -135,8 +135,12 @@ export class WellKnownDidVerifier { if (new URL(args.origin).protocol !== 'https:') return Promise.reject('origin is not secure') } - const didConfigurationResource: IDidConfigurationResource = (args.configuration) + const didConfigurationResource: IDidConfigurationResource = args.configuration + // @ts-ignore: We know for sure the config is present + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion ? await verifyResourceStructure(args.configuration).then(() => args.configuration!) + // @ts-ignore: We know for sure the origin is present + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion : await fetchWellKnownDidConfiguration(args.origin!) @@ -174,7 +178,7 @@ export class WellKnownDidVerifier { /** * Verifies the domain linkage credential. * - * @param credential The domain linkage credential. Types can be JWT or JSONLD. + * @param args The domain linkage credential. Types can be JWT or JSONLD. * @return {ICredentialValidation}, The validation result. */ public async verifyDomainLinkageCredential(args: IVerifyDomainLinkageCredentialArgs): Promise { @@ -185,8 +189,10 @@ export class WellKnownDidVerifier { if (typeof args.credential === 'string') { return this.verifyJsonWebTokenProofFormat(args.credential) .then(() => this.verifyDomainLinkageCredentialStructure((decodeToken(args.credential as string, false) as IJsonWebTokenProofPayload).vc)) - .then(() => (args.verifySignatureCallback) + .then(() => args.verifySignatureCallback ? args.verifySignatureCallback({ credential: args.credential, proofFormat: ProofFormatTypesEnum.JSON_WEB_TOKEN }) + // @ts-ignore: We know for sure the config is present + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion : this.config!.verifySignatureCallback({ credential: args.credential, proofFormat: ProofFormatTypesEnum.JSON_WEB_TOKEN })) .then((verificationResult: IVerifyCredentialResult) => { if (!verificationResult.verified) return Promise.reject({ status: ValidationStatusEnum.INVALID, message: 'Signature is invalid'}) @@ -196,8 +202,10 @@ export class WellKnownDidVerifier { } return this.verifyDomainLinkageCredentialStructure(args.credential as ISignedDomainLinkageCredential) - .then(() => (args.verifySignatureCallback) + .then(() => args.verifySignatureCallback ? args.verifySignatureCallback({ credential: args.credential, proofFormat: ProofFormatTypesEnum.JSON_LD }) + // @ts-ignore: We know for sure the config is present + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion : this.config!.verifySignatureCallback({ credential: args.credential, proofFormat: ProofFormatTypesEnum.JSON_LD })) .then((verificationResult: IVerifyCredentialResult) => { if (!verificationResult.verified) return Promise.reject({ status: ValidationStatusEnum.INVALID, message: 'Signature is invalid'}) @@ -331,14 +339,14 @@ export class WellKnownDidVerifier { if (!credential.issuanceDate) return Promise.reject({ status: ValidationStatusEnum.INVALID, message: 'Property issuanceDate is not present within the credential' }) // Property issuanceDate MUST be a valid date. - if (typeof credential.issuanceDate === 'string' && isNaN(Date.parse(credential.issuanceDate))) + if (/*typeof credential.issuanceDate === 'string' && */isNaN(Date.parse(credential.issuanceDate))) return Promise.reject({ status: ValidationStatusEnum.INVALID, message: 'Property issuanceDate is not a valid date' }) // Property expirationDate MUST be present. if (!credential.expirationDate) return Promise.reject({ status: ValidationStatusEnum.INVALID, message: 'Property expirationDate is not present within the credential' }) // Property expirationDate MUST be a valid date. - if (typeof credential.expirationDate === 'string' && isNaN(Date.parse(credential.expirationDate))) + if (/*typeof credential.expirationDate === 'string' && */isNaN(Date.parse(credential.expirationDate))) return Promise.reject({ status: ValidationStatusEnum.INVALID, message: 'Property expirationDate is not a valid date' }) // Property credentialSubject MUST be present. diff --git a/package.json b/package.json index 6416ae6..4a676b7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@sphereon/wellknown-dids-client", "version": "0.1.0", - "description": "", + "description": "Well-known DID client allows to create and verify DID Domain configuration resources", "main": "dist/index.js", "typings": "dist/index.d.ts", "license": "Apache-2.0", @@ -25,6 +25,7 @@ }, "keywords": [ "DID", + "Well-known DID", "Domain Linkage", "DID Configuration Resource" ], @@ -36,24 +37,24 @@ "devDependencies": { "@digitalcredentials/ed25519-signature-2020": "^3.0.2", "@digitalcredentials/ed25519-verification-key-2020": "^3.2.2", + "@digitalcredentials/jsonld-signatures": "^9.3.1", "@digitalcredentials/vc": "^4.1.1", - "@types/jest": "^28.1.6", - "@types/node": "^18.6.3", + "did-resolver": "^4.0.0", + "typescript": "^4.6.4", + "ts-node": "^10.9.1", + "@types/node": "^14.18.23", "@typescript-eslint/eslint-plugin": "^5.31.0", "@typescript-eslint/parser": "^5.31.0", - "did-resolver": "^4.0.0", "eslint": "^8.21.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.26.0", + "@types/jest": "^28.1.6", + "ts-jest": "^28.0.7", "jest": "^28.1.3", - "jsonld-signatures": "^10.0.0", "nock": "^13.2.9", "npm-run-all": "^4.1.5", - "prettier": "^2.7.1", - "ts-jest": "^28.0.7", - "ts-node": "^10.9.1", - "typescript": "^4.7.4" + "prettier": "^2.7.1" }, "prettier": { "singleQuote": true, diff --git a/test/resources/DocumentLoader.ts b/test/resources/DocumentLoader.ts index e3eb9e0..1e7d6ff 100644 --- a/test/resources/DocumentLoader.ts +++ b/test/resources/DocumentLoader.ts @@ -1,21 +1,19 @@ +import fetch from 'cross-fetch'; + +const { extendContextLoader } = require('@digitalcredentials/jsonld-signatures'); const vc = require('@digitalcredentials/vc'); -const { extendContextLoader } = require('jsonld-signatures'); export class DocumentLoader { getLoader() { return extendContextLoader(async (url: string) => { - try { - const response = await fetch(url); - if (response.status === 200) { - const document = await response.json(); - return { - contextUrl: null, - documentUrl: url, - document, - }; - } - } catch (error: any) { - throw new Error(error); + const response = await fetch(url); + if (response.status === 200) { + const document = await response.json(); + return { + contextUrl: null, + documentUrl: url, + document, + }; } const { defaultDocumentLoader } = vc; diff --git a/test/resources/issuers/VcJsIssuer.ts b/test/resources/issuers/VcJsIssuer.ts index d4567f4..7ff45d0 100644 --- a/test/resources/issuers/VcJsIssuer.ts +++ b/test/resources/issuers/VcJsIssuer.ts @@ -5,10 +5,7 @@ import { Ed25519Signature2020 } from '@digitalcredentials/ed25519-signature-2020 // @ts-ignore import { Ed25519VerificationKey2020 } from '@digitalcredentials/ed25519-verification-key-2020'; -import { - IIssueCallbackArgs, - ISignedDomainLinkageCredential -} from '../../../lib/types'; +import { IIssueCallbackArgs, ISignedDomainLinkageCredential } from '../../../lib/types'; import { DocumentLoader } from '../DocumentLoader'; const vc = require('@digitalcredentials/vc'); diff --git a/test/resources/verifiers/VcJsVerifier.ts b/test/resources/verifiers/VcJsVerifier.ts index ebade57..426d8ad 100644 --- a/test/resources/verifiers/VcJsVerifier.ts +++ b/test/resources/verifiers/VcJsVerifier.ts @@ -5,11 +5,7 @@ import { Ed25519Signature2020 } from '@digitalcredentials/ed25519-signature-2020 // @ts-ignore import { Ed25519VerificationKey2020 } from '@digitalcredentials/ed25519-verification-key-2020'; -import { - ISignedDomainLinkageCredential, - IVerifyCallbackArgs, - IVerifyCredentialResult -} from '../../../lib/types'; +import { ISignedDomainLinkageCredential, IVerifyCallbackArgs, IVerifyCredentialResult } from '../../../lib/types'; import { DocumentLoader } from '../DocumentLoader'; const vc = require('@digitalcredentials/vc'); diff --git a/test/verifier.spec.ts b/test/verifier.spec.ts index 3aa4ea7..e924f46 100644 --- a/test/verifier.spec.ts +++ b/test/verifier.spec.ts @@ -1,12 +1,7 @@ import nock from 'nock'; import { CONTEXT_URLS } from '../lib/constants'; -import { - IVerifyCallbackArgs, - IVerifyCredentialResult, - ServiceTypesEnum, - ValidationStatusEnum -} from '../lib/types'; +import { IVerifyCallbackArgs, IVerifyCredentialResult, ServiceTypesEnum, ValidationStatusEnum } from '../lib/types'; import { WellKnownDidVerifier } from '../lib/verifier/WellKnownDidVerifier'; import { VcJsVerifier } from './resources/verifiers/VcJsVerifier'; @@ -380,34 +375,29 @@ describe('Domain Linkage Verifier', () => { }); const signedCredential = { - '@context': [ - 'https://www.w3.org/2018/credentials/v1', - 'https://identity.foundation/.well-known/did-configuration/v1' - ], - 'issuer': 'did:key:z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM', - 'issuanceDate': '2020-12-04T14:08:28-06:00', - 'expirationDate': '2025-12-04T14:08:28-06:00', - 'type': [ - 'VerifiableCredential', - 'DomainLinkageCredential' - ], - 'credentialSubject': { - 'id': 'did:key:z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM', - 'origin': 'https://identity.foundation' + '@context': ['https://www.w3.org/2018/credentials/v1', 'https://identity.foundation/.well-known/did-configuration/v1'], + issuer: 'did:key:z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM', + issuanceDate: '2020-12-04T14:08:28-06:00', + expirationDate: '2025-12-04T14:08:28-06:00', + type: ['VerifiableCredential', 'DomainLinkageCredential'], + credentialSubject: { + id: 'did:key:z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM', + origin: 'https://identity.foundation', }, - 'proof': { - 'type': 'Ed25519Signature2018', - 'created': '2020-12-04T20:08:28.540Z', - 'jws': 'eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..D0eDhglCMEjxDV9f_SNxsuU-r3ZB9GR4vaM9TYbyV7yzs1WfdUyYO8rFZdedHbwQafYy8YOpJ1iJlkSmB4JaDQ', - 'proofPurpose': 'assertionMethod', - 'verificationMethod': 'did:key:z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM#z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM' - } - } + proof: { + type: 'Ed25519Signature2018', + created: '2020-12-04T20:08:28.540Z', + jws: 'eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..D0eDhglCMEjxDV9f_SNxsuU-r3ZB9GR4vaM9TYbyV7yzs1WfdUyYO8rFZdedHbwQafYy8YOpJ1iJlkSmB4JaDQ', + proofPurpose: 'assertionMethod', + verificationMethod: 'did:key:z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM#z6MkoTHsgNNrby8JzCNQ1iRLyW5QQ6R8Xuu6AA8igGrMVPUM', + }, + }; // Will throw signature is invalid as this is just a test to check the integration - await expect( - verifier.verifyDomainLinkageCredential({ credential: signedCredential }) - ).rejects.toEqual({ status: ValidationStatusEnum.INVALID, message: 'Signature is invalid' }); + await expect(verifier.verifyDomainLinkageCredential({ credential: signedCredential })).rejects.toEqual({ + status: ValidationStatusEnum.INVALID, + message: 'Signature is invalid', + }); }); }); }); diff --git a/tsconfig.json b/tsconfig.json index 8867b71..4a72eb0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,7 +28,11 @@ /* Print names of files part of the compilation. */, "pretty": true, - "types": ["jest", "node"] + "types": ["jest", "node"], + "lib": [ + "es6", + "es2020.promise" + ] }, "include": [ diff --git a/yarn.lock b/yarn.lock index a703ee1..41167bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -304,15 +304,6 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@digitalbazaar/http-client@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@digitalbazaar/http-client/-/http-client-3.2.0.tgz#b85ea09028c7d0f288f976c852d0a8f3875f0fcf" - integrity sha512-NhYXcWE/JDE7AnJikNX7q0S6zNuUPA2NuIoRdUpmvHlarjmRqyr6hIO3Awu2FxlUzbdiI1uzuWrZyB9mD1tTvw== - dependencies: - ky "^0.30.0" - ky-universal "^0.10.1" - undici "^5.2.0" - "@digitalbazaar/security-context@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@digitalbazaar/security-context/-/security-context-1.0.0.tgz#23624692cfadc6d97e1eb787ad38a19635d89297" @@ -1658,11 +1649,16 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/node@*", "@types/node@^18.6.3": +"@types/node@*": version "18.6.3" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.3.tgz#4e4a95b6fe44014563ceb514b2598b3e623d1c98" integrity sha512-6qKpDtoaYLM+5+AFChLhHermMQxc3TOEFIDzrZLPRGHPrLEwqFkkT5Kx3ju05g6X7uDPazz3jHbKPX0KzCjntg== +"@types/node@^14.18.23": + version "14.18.23" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.23.tgz#70f5f20b0b1b38f696848c1d3647bb95694e615e" + integrity sha512-MhbCWN18R4GhO8ewQWAFK4TGQdBpXWByukz7cWyJmXhvRuCIaM/oWytGPqVmDzgEnnaIc9ss6HbU5mUi+vyZPA== + "@types/pbkdf2@^3.0.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" @@ -1693,9 +1689,9 @@ integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^17.0.8": - version "17.0.10" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" - integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + version "17.0.11" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.11.tgz#5e10ca33e219807c0eee0f08b5efcba9b6a42c06" + integrity sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA== dependencies: "@types/yargs-parser" "*" @@ -2437,11 +2433,6 @@ data-uri-to-buffer@^3.0.1: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== -data-uri-to-buffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" - integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== - debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3133,14 +3124,6 @@ fetch-blob@^2.1.1: resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-2.1.2.tgz#a7805db1361bd44c1ef62bb57fb5fe8ea173ef3c" integrity sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow== -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -3196,13 +3179,6 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" @@ -4110,25 +4086,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonld-signatures@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/jsonld-signatures/-/jsonld-signatures-10.0.0.tgz#7342d70479f8f450148086c96e48517deeaefdf3" - integrity sha512-Zvwwm2xO93QUaEi8LQGh96Sk2J9TS/VLTuXP+WiHQzwKEryNs/2r/1dcaGJ2y5uIHCwPB1nYq0W1A+U2uOvHUA== - dependencies: - jsonld "^6.0.0" - security-context "^4.0.0" - serialize-error "^8.0.1" - -jsonld@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/jsonld/-/jsonld-6.0.0.tgz#560a8a871dce72aba5d4c6b08356438d863d62fb" - integrity sha512-1SkN2RXhMCTCSkX+bzHvr9ycM2HTmjWyV41hn2xG7k6BqlCgRjw0zHmuqfphjBRPqi1gKMIqgBCe/0RZMcWrAA== - dependencies: - "@digitalbazaar/http-client" "^3.2.0" - canonicalize "^1.0.1" - lru-cache "^6.0.0" - rdf-canonize "^3.0.0" - jsonpath@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" @@ -4157,14 +4114,6 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -ky-universal@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.10.1.tgz#778881e098f6e3c52a87b382d9acca54d22bb0d3" - integrity sha512-r8909k+ELKZAxhVA5c440x22hqw5XcMRwLRbgpPQk4JHy3/ddJnvzcnSo5Ww3HdKdNeS3Y8dBgcIYyVahMa46g== - dependencies: - abort-controller "^3.0.0" - node-fetch "^3.2.2" - ky-universal@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.8.2.tgz#edc398d54cf495d7d6830aa1ab69559a3cc7f824" @@ -4178,11 +4127,6 @@ ky@^0.25.1: resolved "https://registry.yarnpkg.com/ky/-/ky-0.25.1.tgz#0df0bd872a9cc57e31acd5dbc1443547c881bfbc" integrity sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA== -ky@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/ky/-/ky-0.30.0.tgz#a3d293e4f6c4604a9a4694eceb6ce30e73d27d64" - integrity sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog== - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -4423,11 +4367,6 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - node-fetch@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -4443,15 +4382,6 @@ node-fetch@3.0.0-beta.9: data-uri-to-buffer "^3.0.1" fetch-blob "^2.1.1" -node-fetch@^3.2.2: - version "3.2.10" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.10.tgz#e8347f94b54ae18b57c9c049ef641cef398a85c8" - integrity sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - node-gyp-build@^4.2.0: version "4.5.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" @@ -4805,13 +4735,6 @@ randombytes@^2.1.0: dependencies: safe-buffer "^5.1.0" -rdf-canonize@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-3.0.0.tgz#f5bade563e5e58f5cc5881afcba3c43839e8c747" - integrity sha512-LXRkhab1QaPJnhUIt1gtXXKswQCZ9zpflsSZFczG7mCLAkMvVjdqCGk9VXCUss0aOUeEyV2jtFxGcdX8DSkj9w== - dependencies: - setimmediate "^1.0.5" - react-is@^18.0.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" @@ -4974,11 +4897,6 @@ secp256k1@4.0.3, secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -security-context@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/security-context/-/security-context-4.0.0.tgz#e73f5d22bee9c7699a02eaaced359d001dc948e9" - integrity sha512-yiDCS7tpKQl6p4NG57BdKLTSNLFfj5HosBIzXBl4jZf/qorJzSzbEUIdLhN+vVYgyLlvjixY8DPPTgqI8zvNCA== - "semver@2 || 3 || 4 || 5", semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -5396,7 +5314,7 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typescript@^4.7.4: +typescript@^4.6.4: version "4.7.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== @@ -5423,11 +5341,6 @@ underscore@1.12.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== -undici@^5.2.0: - version "5.8.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.8.1.tgz#511d43ff6be02f84ec2513ae7f4b07c589319272" - integrity sha512-iDRmWX4Zar/4A/t+1LrKQRm102zw2l9Wgat3LtTlTn8ykvMZmAmpq9tjyHEigx18FsY7IfATvyN3xSw9BDz0eA== - universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" @@ -5497,11 +5410,6 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" -web-streams-polyfill@^3.0.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== - webcrypto-core@^1.7.4: version "1.7.5" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.5.tgz#c02104c953ca7107557f9c165d194c6316587ca4" @@ -5599,9 +5507,9 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yargs-parser@^21.0.0, yargs-parser@^21.0.1: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.3.1: version "17.5.1"