From ba833fe70516532a19c5f012db3bca57b8e45cf1 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 11 May 2023 11:50:48 +0200 Subject: [PATCH 1/2] fix: jsonld document loader node 18 Signed-off-by: Timo Glastra --- packages/core/package.json | 2 +- .../src/modules/vc/W3cCredentialService.ts | 9 +- .../vc/libraries/nativeDocumentLoader.ts | 2 +- .../vc/libraries/nodeDocumentLoader.ts | 207 ++++++++++++++++++ yarn.lock | 8 +- 5 files changed, 220 insertions(+), 8 deletions(-) create mode 100644 packages/core/src/modules/vc/libraries/nodeDocumentLoader.ts diff --git a/packages/core/package.json b/packages/core/package.json index 9eb5d56a3f..60e2ff6132 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -25,7 +25,7 @@ "dependencies": { "@digitalcredentials/jsonld": "^5.2.1", "@digitalcredentials/jsonld-signatures": "^9.3.1", - "@digitalcredentials/vc": "^1.1.2", + "@digitalcredentials/vc": "^5.0.0", "@multiformats/base-x": "^4.0.1", "@stablelib/ed25519": "^1.0.2", "@stablelib/random": "^1.0.1", diff --git a/packages/core/src/modules/vc/W3cCredentialService.ts b/packages/core/src/modules/vc/W3cCredentialService.ts index 214911d02c..b444d67154 100644 --- a/packages/core/src/modules/vc/W3cCredentialService.ts +++ b/packages/core/src/modules/vc/W3cCredentialService.ts @@ -128,9 +128,14 @@ export class W3cCredentialService { verifyOptions['purpose'] = options.proofPurpose } - const result = await vc.verifyCredential(verifyOptions) + const result = (await vc.verifyCredential(verifyOptions)) as unknown as W3cVerifyCredentialResult + if (!result.verified) { + agentContext.config.logger.debug(`Credential verification failed: ${result.error?.message}`, { + stack: result.error?.stack, + }) + } - return result as unknown as W3cVerifyCredentialResult + return result } /** diff --git a/packages/core/src/modules/vc/libraries/nativeDocumentLoader.ts b/packages/core/src/modules/vc/libraries/nativeDocumentLoader.ts index 9ad2e61701..de69a7c793 100644 --- a/packages/core/src/modules/vc/libraries/nativeDocumentLoader.ts +++ b/packages/core/src/modules/vc/libraries/nativeDocumentLoader.ts @@ -2,7 +2,7 @@ import type { DocumentLoader } from './jsonld' export function getNativeDocumentLoader(): () => DocumentLoader { // eslint-disable-next-line @typescript-eslint/no-var-requires - const loader = require('@digitalcredentials/jsonld/lib/documentLoaders/node') + const loader = require('./nodeDocumentLoader') return loader as () => DocumentLoader } diff --git a/packages/core/src/modules/vc/libraries/nodeDocumentLoader.ts b/packages/core/src/modules/vc/libraries/nodeDocumentLoader.ts new file mode 100644 index 0000000000..3b1ea40601 --- /dev/null +++ b/packages/core/src/modules/vc/libraries/nodeDocumentLoader.ts @@ -0,0 +1,207 @@ +// NOTE: this file is copied from the digitalcredentials/jsonld.js library +// as there's a bug in Node.JS 18. If the PR is merged and released we can remove +// the custom implementation in AFJ: https://github.com/digitalcredentials/jsonld.js/pull/2 + +// We ignore the typescript and eslint errors in this file, so we can keep the file as close to the original as possible +/* eslint-disable */ +// @ts-nocheck + +/* + * Copyright (c) 2017-2021 Digital Bazaar, Inc. All rights reserved. + */ + +const { httpClient } = require('@digitalcredentials/http-client') +const https = require('https') + +const JsonLdError = require('@digitalcredentials/jsonld/lib//JsonLdError') +const RequestQueue = require('@digitalcredentials/jsonld/lib//RequestQueue') +const { LINK_HEADER_CONTEXT } = require('@digitalcredentials/jsonld/lib//constants') +const { prependBase } = require('@digitalcredentials/jsonld/lib//url') +const { parseLinkHeader, buildHeaders } = require('@digitalcredentials/jsonld/lib//util') + +/** + * Creates a built-in node document loader. + * + * @param options the options to use: + * [secure]: require all URLs to use HTTPS. (default: false) + * [strictSSL]: true to require SSL certificates to be valid, + * false not to. (default: true) + * [maxRedirects]: the maximum number of redirects to permit. + * (default: none) + * [headers]: an object (map) of headers which will be passed as + * request headers for the requested document. Accept is not + * allowed. (default: none). + * [httpAgent]: a Node.js `http.Agent` to use with 'http' requests. + * (default: none) + * [httpsAgent]: a Node.js `https.Agent` to use with 'https' requests. + * (default: An agent with rejectUnauthorized to the strictSSL + * value) + * + * @return the node document loader. + */ +module.exports = ( + { secure, strictSSL = true, maxRedirects = -1, headers = {}, httpAgent, httpsAgent } = { + strictSSL: true, + maxRedirects: -1, + headers: {}, + } +) => { + headers = buildHeaders(headers) + // if no default user-agent header, copy headers and set one + if (!('user-agent' in headers)) { + headers = Object.assign({}, headers, { + 'user-agent': 'jsonld.js', + }) + } + const http = require('http') + + const queue = new RequestQueue() + return queue.wrapLoader(function (url) { + return loadDocument(url, []) + }) + + async function loadDocument(url, redirects) { + const isHttp = url.startsWith('http:') + const isHttps = url.startsWith('https:') + if (!isHttp && !isHttps) { + throw new JsonLdError( + 'URL could not be dereferenced; only "http" and "https" URLs are ' + 'supported.', + 'jsonld.InvalidUrl', + { code: 'loading document failed', url } + ) + } + if (secure && !isHttps) { + throw new JsonLdError( + 'URL could not be dereferenced; secure mode is enabled and ' + 'the URL\'s scheme is not "https".', + 'jsonld.InvalidUrl', + { code: 'loading document failed', url } + ) + } + // TODO: disable cache until HTTP caching implemented + let doc = null //cache.get(url); + if (doc !== null) { + return doc + } + + let alternate = null + + const { res, body } = await _fetch({ + url, + headers, + strictSSL, + httpAgent, + httpsAgent, + }) + doc = { contextUrl: null, documentUrl: url, document: body || null } + + // handle error + const statusText = http.STATUS_CODES[res.status] + if (res.status >= 400) { + throw new JsonLdError(`URL "${url}" could not be dereferenced: ${statusText}`, 'jsonld.InvalidUrl', { + code: 'loading document failed', + url, + httpStatusCode: res.status, + }) + } + const link = res.headers.get('link') + let location = res.headers.get('location') + const contentType = res.headers.get('content-type') + + // handle Link Header + if (link && contentType !== 'application/ld+json') { + // only 1 related link header permitted + const linkHeaders = parseLinkHeader(link) + const linkedContext = linkHeaders[LINK_HEADER_CONTEXT] + if (Array.isArray(linkedContext)) { + throw new JsonLdError( + 'URL could not be dereferenced, it has more than one associated ' + 'HTTP Link Header.', + 'jsonld.InvalidUrl', + { code: 'multiple context link headers', url } + ) + } + if (linkedContext) { + doc.contextUrl = linkedContext.target + } + + // "alternate" link header is a redirect + alternate = linkHeaders['alternate'] + if ( + alternate && + alternate.type == 'application/ld+json' && + !(contentType || '').match(/^application\/(\w*\+)?json$/) + ) { + location = prependBase(url, alternate.target) + } + } + + // handle redirect + if ((alternate || (res.status >= 300 && res.status < 400)) && location) { + if (redirects.length === maxRedirects) { + throw new JsonLdError( + 'URL could not be dereferenced; there were too many redirects.', + 'jsonld.TooManyRedirects', + { + code: 'loading document failed', + url, + httpStatusCode: res.status, + redirects, + } + ) + } + if (redirects.indexOf(url) !== -1) { + throw new JsonLdError( + 'URL could not be dereferenced; infinite redirection was detected.', + 'jsonld.InfiniteRedirectDetected', + { + code: 'recursive context inclusion', + url, + httpStatusCode: res.status, + redirects, + } + ) + } + redirects.push(url) + return loadDocument(location, redirects) + } + + // cache for each redirected URL + redirects.push(url) + // TODO: disable cache until HTTP caching implemented + /* + for(let i = 0; i < redirects.length; ++i) { + cache.set( + redirects[i], + {contextUrl: null, documentUrl: redirects[i], document: body}); + } + */ + + return doc + } +} + +async function _fetch({ url, headers, strictSSL, httpAgent, httpsAgent }) { + try { + const options = { headers, redirect: 'manual' } + const isHttps = url.startsWith('https:') + if (isHttps) { + options.agent = httpsAgent || new https.Agent({ rejectUnauthorized: strictSSL }) + } else { + if (httpAgent) { + options.agent = httpAgent + } + } + const res = await httpClient.get(url, options) + return { res, body: res.data } + } catch (e) { + // HTTP errors have a response in them + // ky considers redirects HTTP errors + if (e.response) { + return { res: e.response, body: null } + } + throw new JsonLdError('URL could not be dereferenced, an error occurred.', 'jsonld.LoadDocumentError', { + code: 'loading document failed', + url, + cause: e, + }) + } +} diff --git a/yarn.lock b/yarn.lock index 87c7ee9ec5..349e57ca45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -954,10 +954,10 @@ fast-text-encoding "^1.0.3" isomorphic-webcrypto "^2.3.8" -"@digitalcredentials/vc@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-1.1.2.tgz#868a56962f5137c29eb51eea1ba60251ebf69ad1" - integrity sha512-TSgny9XUh+W7uFjdcpvZzN7I35F9YMTv6jVINXr7UaLNgrinIjy6A5RMGQH9ecpcaoLMemKB5XjtLOOOQ3vknQ== +"@digitalcredentials/vc@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-5.0.0.tgz#9940103221d9bdc280ce82ca615624ac2ef08d47" + integrity sha512-87ARRxlAdIuUPArbMYJ8vUY7QqkIvJGFrBwfTH1PcB8Wz1E/M4q3oc/WLrDyJNg4o/irVVB5gkA9iIntTYSpoA== dependencies: "@digitalcredentials/jsonld" "^5.2.1" "@digitalcredentials/jsonld-signatures" "^9.3.1" From cbd70554cc5d9ef7ff95791f5c401f5afa38a694 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Mon, 29 Jan 2024 21:56:31 +0700 Subject: [PATCH 2/2] revive PR Signed-off-by: Timo Glastra --- .../signature-suites/BbsBlsSignature2020.ts | 29 +- .../BbsBlsSignatureProof2020.ts | 27 +- .../src/types/CanonizeOptions.ts | 6 +- .../src/types/CreateProofOptions.ts | 4 - .../src/types/CreateVerifyDataOptions.ts | 7 +- .../src/types/DeriveProofOptions.ts | 6 +- .../src/types/SuiteSignOptions.ts | 5 +- .../src/types/VerifyProofOptions.ts | 4 - .../src/types/VerifySignatureOptions.ts | 4 - .../tests/bbs-signatures.e2e.test.ts | 4 +- .../tests/bbs-signing-provider.e2e.test.ts | 4 +- packages/bbs-signatures/tests/util.ts | 4 +- ...proof.credentials.propose-offerBbs.test.ts | 4 +- packages/core/package.json | 9 +- .../W3cJsonLdCredentialService.ts | 6 +- .../W3cJsonLdCredentialService.test.ts | 21 + .../modules/vc/data-integrity/deriveProof.ts | 8 +- .../modules/vc/data-integrity/jsonldUtil.ts | 8 +- .../libraries/nativeDocumentLoader.ts | 2 +- .../libraries/nodeDocumentLoader.ts | 207 -------- .../data-integrity/models/GetProofsOptions.ts | 4 - .../data-integrity/models/GetTypeOptions.ts | 4 - .../CredentialIssuancePurpose.ts | 2 - .../JwsLinkedDataSignature.ts | 7 - .../ed25519/Ed25519Signature2018.ts | 7 - yarn.lock | 490 +++++++++++++++++- 26 files changed, 544 insertions(+), 339 deletions(-) delete mode 100644 packages/core/src/modules/vc/data-integrity/libraries/nodeDocumentLoader.ts diff --git a/packages/bbs-signatures/src/signature-suites/BbsBlsSignature2020.ts b/packages/bbs-signatures/src/signature-suites/BbsBlsSignature2020.ts index f1a4239007..5b517a1a8e 100644 --- a/packages/bbs-signatures/src/signature-suites/BbsBlsSignature2020.ts +++ b/packages/bbs-signatures/src/signature-suites/BbsBlsSignature2020.ts @@ -113,7 +113,7 @@ export class BbsBlsSignature2020 extends LinkedDataProof { * @returns {Promise} Resolves with the created proof object. */ public async createProof(options: CreateProofOptions): Promise> { - const { document, purpose, documentLoader, expansionMap, compactProof } = options + const { document, purpose, documentLoader, compactProof } = options let proof: JsonObject @@ -121,7 +121,6 @@ export class BbsBlsSignature2020 extends LinkedDataProof { if (this.proof) { proof = await jsonld.compact(this.proof, SECURITY_CONTEXT_URL, { documentLoader, - expansionMap, compactToRelative: true, }) } else { @@ -159,7 +158,6 @@ export class BbsBlsSignature2020 extends LinkedDataProof { document, suite: this, documentLoader, - expansionMap, }) // create data to sign @@ -168,7 +166,7 @@ export class BbsBlsSignature2020 extends LinkedDataProof { document, proof, documentLoader, - expansionMap, + compactProof, }) ).map((item) => new Uint8Array(TypedArrayEncoder.fromString(item))) @@ -179,7 +177,6 @@ export class BbsBlsSignature2020 extends LinkedDataProof { document, proof, documentLoader, - expansionMap, }) delete proof['@context'] @@ -192,7 +189,7 @@ export class BbsBlsSignature2020 extends LinkedDataProof { * @returns {Promise<{object}>} Resolves with the verification result. */ public async verifyProof(options: VerifyProofOptions): Promise> { - const { proof, document, documentLoader, expansionMap, purpose } = options + const { proof, document, documentLoader, purpose } = options try { // create data to verify @@ -201,7 +198,6 @@ export class BbsBlsSignature2020 extends LinkedDataProof { document, proof, documentLoader, - expansionMap, compactProof: false, }) ).map((item) => new Uint8Array(TypedArrayEncoder.fromString(item))) @@ -219,7 +215,6 @@ export class BbsBlsSignature2020 extends LinkedDataProof { document, proof, documentLoader, - expansionMap, }) if (!verified) { throw new Error('Invalid signature.') @@ -231,7 +226,6 @@ export class BbsBlsSignature2020 extends LinkedDataProof { suite: this, verificationMethod, documentLoader, - expansionMap, }) if (!valid) { throw error @@ -244,24 +238,22 @@ export class BbsBlsSignature2020 extends LinkedDataProof { } public async canonize(input: Record, options: CanonizeOptions): Promise { - const { documentLoader, expansionMap, skipExpansion } = options + const { documentLoader, skipExpansion } = options return jsonld.canonize(input, { algorithm: 'URDNA2015', format: 'application/n-quads', documentLoader, - expansionMap, skipExpansion, useNative: this.useNativeCanonize, }) } public async canonizeProof(proof: Record, options: CanonizeOptions): Promise { - const { documentLoader, expansionMap } = options + const { documentLoader } = options proof = { ...proof } delete proof[this.proofSignatureKey] return this.canonize(proof, { documentLoader, - expansionMap, skipExpansion: false, }) } @@ -272,17 +264,15 @@ export class BbsBlsSignature2020 extends LinkedDataProof { * @returns {Promise<{string[]>}. */ public async createVerifyData(options: CreateVerifyDataOptions): Promise { - const { proof, document, documentLoader, expansionMap } = options + const { proof, document, documentLoader } = options const proof2 = { ...proof, '@context': document['@context'] } const proofStatements = await this.createVerifyProofData(proof2, { documentLoader, - expansionMap, }) const documentStatements = await this.createVerifyDocumentData(document, { documentLoader, - expansionMap, }) // concatenate c14n proof options and c14n document @@ -297,11 +287,10 @@ export class BbsBlsSignature2020 extends LinkedDataProof { */ public async createVerifyProofData( proof: Record, - { documentLoader, expansionMap }: { documentLoader?: DocumentLoader; expansionMap?: () => void } + { documentLoader }: { documentLoader?: DocumentLoader } ): Promise { const c14nProofOptions = await this.canonizeProof(proof, { documentLoader, - expansionMap, }) return c14nProofOptions.split('\n').filter((_) => _.length > 0) @@ -315,11 +304,10 @@ export class BbsBlsSignature2020 extends LinkedDataProof { */ public async createVerifyDocumentData( document: Record, - { documentLoader, expansionMap }: { documentLoader?: DocumentLoader; expansionMap?: () => void } + { documentLoader }: { documentLoader?: DocumentLoader } ): Promise { const c14nDocument = await this.canonize(document, { documentLoader, - expansionMap, }) return c14nDocument.split('\n').filter((_) => _.length > 0) @@ -329,7 +317,6 @@ export class BbsBlsSignature2020 extends LinkedDataProof { * @param document {object} to be signed. * @param proof {object} * @param documentLoader {function} - * @param expansionMap {function} */ public async getVerificationMethod({ proof, diff --git a/packages/bbs-signatures/src/signature-suites/BbsBlsSignatureProof2020.ts b/packages/bbs-signatures/src/signature-suites/BbsBlsSignatureProof2020.ts index 59d0b37eb3..2d902c8591 100644 --- a/packages/bbs-signatures/src/signature-suites/BbsBlsSignatureProof2020.ts +++ b/packages/bbs-signatures/src/signature-suites/BbsBlsSignatureProof2020.ts @@ -62,7 +62,7 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { * @returns {Promise} Resolves with the derived proof object. */ public async deriveProof(options: DeriveProofOptions): Promise> { - const { document, proof, revealDocument, documentLoader, expansionMap } = options + const { document, proof, revealDocument, documentLoader } = options let { nonce } = options const proofType = proof.type @@ -98,7 +98,6 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { // use proof JSON-LD document passed to API derivedProof = await jsonld.compact(this.proof, SECURITY_CONTEXT_URL, { documentLoader, - expansionMap, compactToRelative: false, }) } else { @@ -112,13 +111,11 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { // Get the input document statements const documentStatements = await suite.createVerifyDocumentData(document, { documentLoader, - expansionMap, }) // Get the proof statements const proofStatements = await suite.createVerifyProofData(proof, { documentLoader, - expansionMap, }) // Transform any blank node identifiers for the input @@ -137,7 +134,6 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { // Canonicalize the resulting reveal document const revealDocumentStatements = await suite.createVerifyDocumentData(revealDocumentResult, { documentLoader, - expansionMap, }) //Get the indicies of the revealed statements from the transformed input document offset @@ -216,7 +212,7 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { * @returns {Promise<{object}>} Resolves with the verification result. */ public async verifyProof(options: VerifyProofOptions): Promise { - const { document, documentLoader, expansionMap, purpose } = options + const { document, documentLoader, purpose } = options const { proof } = options try { @@ -227,13 +223,11 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { // Get the proof statements const proofStatements = await this.createVerifyProofData(proofIncludingDocumentContext, { documentLoader, - expansionMap, }) // Get the document statements const documentStatements = await this.createVerifyProofData(document, { documentLoader, - expansionMap, }) // Transform the blank node identifier placeholders for the document statements @@ -278,7 +272,6 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { suite: this, verificationMethod, documentLoader, - expansionMap, }) if (!valid) { throw error @@ -291,19 +284,18 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { } public async canonize(input: JsonObject, options: CanonizeOptions): Promise { - const { documentLoader, expansionMap, skipExpansion } = options + const { documentLoader, skipExpansion } = options return jsonld.canonize(input, { algorithm: 'URDNA2015', format: 'application/n-quads', documentLoader, - expansionMap, skipExpansion, useNative: this.useNativeCanonize, }) } public async canonizeProof(proof: JsonObject, options: CanonizeOptions): Promise { - const { documentLoader, expansionMap } = options + const { documentLoader } = options proof = { ...proof } delete proof.nonce @@ -311,7 +303,6 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { return this.canonize(proof, { documentLoader, - expansionMap, skipExpansion: false, }) } @@ -322,15 +313,13 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { * @returns {Promise<{string[]>}. */ public async createVerifyData(options: CreateVerifyDataOptions): Promise { - const { proof, document, documentLoader, expansionMap } = options + const { proof, document, documentLoader } = options const proofStatements = await this.createVerifyProofData(proof, { documentLoader, - expansionMap, }) const documentStatements = await this.createVerifyDocumentData(document, { documentLoader, - expansionMap, }) // concatenate c14n proof options and c14n document @@ -345,11 +334,10 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { */ public async createVerifyProofData( proof: JsonObject, - { documentLoader, expansionMap }: { documentLoader?: DocumentLoader; expansionMap?: () => void } + { documentLoader }: { documentLoader?: DocumentLoader } ): Promise { const c14nProofOptions = await this.canonizeProof(proof, { documentLoader, - expansionMap, }) return c14nProofOptions.split('\n').filter((_) => _.length > 0) @@ -363,11 +351,10 @@ export class BbsBlsSignatureProof2020 extends LinkedDataProof { */ public async createVerifyDocumentData( document: JsonObject, - { documentLoader, expansionMap }: { documentLoader?: DocumentLoader; expansionMap?: () => void } + { documentLoader }: { documentLoader?: DocumentLoader } ): Promise { const c14nDocument = await this.canonize(document, { documentLoader, - expansionMap, }) return c14nDocument.split('\n').filter((_) => _.length > 0) diff --git a/packages/bbs-signatures/src/types/CanonizeOptions.ts b/packages/bbs-signatures/src/types/CanonizeOptions.ts index e2a4af60c8..73a4217e8c 100644 --- a/packages/bbs-signatures/src/types/CanonizeOptions.ts +++ b/packages/bbs-signatures/src/types/CanonizeOptions.ts @@ -21,11 +21,7 @@ export interface CanonizeOptions { * Optional custom document loader */ documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - // eslint-disable-next-line - expansionMap?: () => void + /** * Indicates whether to skip expansion during canonization */ diff --git a/packages/bbs-signatures/src/types/CreateProofOptions.ts b/packages/bbs-signatures/src/types/CreateProofOptions.ts index d4acbbe0ba..e413649ced 100644 --- a/packages/bbs-signatures/src/types/CreateProofOptions.ts +++ b/packages/bbs-signatures/src/types/CreateProofOptions.ts @@ -29,10 +29,6 @@ export interface CreateProofOptions { * Optional custom document loader */ documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - expansionMap?: () => void /** * Indicates whether to compact the resulting proof */ diff --git a/packages/bbs-signatures/src/types/CreateVerifyDataOptions.ts b/packages/bbs-signatures/src/types/CreateVerifyDataOptions.ts index c163eca5c6..7aff485105 100644 --- a/packages/bbs-signatures/src/types/CreateVerifyDataOptions.ts +++ b/packages/bbs-signatures/src/types/CreateVerifyDataOptions.ts @@ -21,20 +21,17 @@ export interface CreateVerifyDataOptions { * Document to create the proof for */ readonly document: JsonObject + /** * The proof */ readonly proof: JsonObject + /** * Optional custom document loader */ - documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - expansionMap?: () => void /** * Indicates whether to compact the proof */ diff --git a/packages/bbs-signatures/src/types/DeriveProofOptions.ts b/packages/bbs-signatures/src/types/DeriveProofOptions.ts index 23fe427798..db62925292 100644 --- a/packages/bbs-signatures/src/types/DeriveProofOptions.ts +++ b/packages/bbs-signatures/src/types/DeriveProofOptions.ts @@ -34,11 +34,7 @@ export interface DeriveProofOptions { */ // eslint-disable-next-line documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - // eslint-disable-next-line - expansionMap?: () => void + /** * Nonce to include in the derived proof */ diff --git a/packages/bbs-signatures/src/types/SuiteSignOptions.ts b/packages/bbs-signatures/src/types/SuiteSignOptions.ts index 850587dc60..44420e7221 100644 --- a/packages/bbs-signatures/src/types/SuiteSignOptions.ts +++ b/packages/bbs-signatures/src/types/SuiteSignOptions.ts @@ -25,10 +25,7 @@ export interface SuiteSignOptions { * Optional custom document loader */ documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - expansionMap?: () => void + /** * The array of statements to sign */ diff --git a/packages/bbs-signatures/src/types/VerifyProofOptions.ts b/packages/bbs-signatures/src/types/VerifyProofOptions.ts index 9aa2a60ff4..decfc7a47a 100644 --- a/packages/bbs-signatures/src/types/VerifyProofOptions.ts +++ b/packages/bbs-signatures/src/types/VerifyProofOptions.ts @@ -33,8 +33,4 @@ export interface VerifyProofOptions { * Optional custom document loader */ documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - expansionMap?: () => void } diff --git a/packages/bbs-signatures/src/types/VerifySignatureOptions.ts b/packages/bbs-signatures/src/types/VerifySignatureOptions.ts index 07ea80c5b8..03a0ddfb80 100644 --- a/packages/bbs-signatures/src/types/VerifySignatureOptions.ts +++ b/packages/bbs-signatures/src/types/VerifySignatureOptions.ts @@ -37,8 +37,4 @@ export interface VerifySignatureOptions { * Optional custom document loader */ documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - expansionMap?: () => void } diff --git a/packages/bbs-signatures/tests/bbs-signatures.e2e.test.ts b/packages/bbs-signatures/tests/bbs-signatures.e2e.test.ts index 6aa8db303f..c5c20bf90c 100644 --- a/packages/bbs-signatures/tests/bbs-signatures.e2e.test.ts +++ b/packages/bbs-signatures/tests/bbs-signatures.e2e.test.ts @@ -31,7 +31,7 @@ import { indySdk } from '../../indy-sdk/tests/setupIndySdkModule' import { BbsBlsSignature2020, BbsBlsSignatureProof2020, Bls12381g2SigningProvider } from '../src' import { BbsBlsSignature2020Fixtures } from './fixtures' -import { describeSkipNode17And18 } from './util' +import { describeSkipNode18 } from './util' const { jsonldSignatures } = vcLibraries const { purposes } = jsonldSignatures @@ -61,7 +61,7 @@ const signingProviderRegistry = new SigningProviderRegistry([new Bls12381g2Signi const agentConfig = getAgentConfig('BbsSignaturesE2eTest') -describeSkipNode17And18('BBS W3cCredentialService', () => { +describeSkipNode18('BBS W3cCredentialService', () => { let wallet: Wallet let agentContext: AgentContext let w3cJsonLdCredentialService: W3cJsonLdCredentialService diff --git a/packages/bbs-signatures/tests/bbs-signing-provider.e2e.test.ts b/packages/bbs-signatures/tests/bbs-signing-provider.e2e.test.ts index 67e2112e96..a9b48d6352 100644 --- a/packages/bbs-signatures/tests/bbs-signing-provider.e2e.test.ts +++ b/packages/bbs-signatures/tests/bbs-signing-provider.e2e.test.ts @@ -14,7 +14,7 @@ import { IndySdkWallet } from '../../indy-sdk/src' import { indySdk } from '../../indy-sdk/tests/setupIndySdkModule' import { Bls12381g2SigningProvider } from '../src' -import { describeSkipNode17And18 } from './util' +import { describeSkipNode18 } from './util' // use raw key derivation method to speed up wallet creating / opening / closing between tests const walletConfig: WalletConfig = { @@ -24,7 +24,7 @@ const walletConfig: WalletConfig = { keyDerivationMethod: KeyDerivationMethod.Raw, } -describeSkipNode17And18('BBS Signing Provider', () => { +describeSkipNode18('BBS Signing Provider', () => { let wallet: Wallet const seed = TypedArrayEncoder.fromString('sample-seed-min-of-32-bytes-long') const message = TypedArrayEncoder.fromString('sample-message') diff --git a/packages/bbs-signatures/tests/util.ts b/packages/bbs-signatures/tests/util.ts index 208a6ce8ac..efe9f799bd 100644 --- a/packages/bbs-signatures/tests/util.ts +++ b/packages/bbs-signatures/tests/util.ts @@ -1,7 +1,7 @@ -export function describeSkipNode17And18(...parameters: Parameters) { +export function describeSkipNode18(...parameters: Parameters) { const version = process.version - if (version.startsWith('v17.') || version.startsWith('v18.')) { + if (version.startsWith('v18.')) { describe.skip(...parameters) } else { describe(...parameters) diff --git a/packages/bbs-signatures/tests/v2.ldproof.credentials.propose-offerBbs.test.ts b/packages/bbs-signatures/tests/v2.ldproof.credentials.propose-offerBbs.test.ts index 78d06d862a..feaead2f3e 100644 --- a/packages/bbs-signatures/tests/v2.ldproof.credentials.propose-offerBbs.test.ts +++ b/packages/bbs-signatures/tests/v2.ldproof.credentials.propose-offerBbs.test.ts @@ -9,7 +9,7 @@ import { CREDENTIALS_CONTEXT_V1_URL, SECURITY_CONTEXT_BBS_URL } from '../../core import { JsonTransformer } from '../../core/src/utils/JsonTransformer' import { waitForCredentialRecordSubject, setupJsonLdTests, testLogger } from '../../core/tests' -import { describeSkipNode17And18 } from './util' +import { describeSkipNode18 } from './util' let faberAgent: JsonLdTestsAgent let faberReplay: EventReplaySubject @@ -52,7 +52,7 @@ const signCredentialOptions = { }, } -describeSkipNode17And18('credentials, BBS+ signature', () => { +describeSkipNode18('credentials, BBS+ signature', () => { beforeAll(async () => { ;({ issuerAgent: faberAgent, diff --git a/packages/core/package.json b/packages/core/package.json index c04617c73c..02c30fec80 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -23,13 +23,10 @@ "prepublishOnly": "yarn run build" }, "dependencies": { - "@digitalcredentials/jsonld": "^5.2.1", - "@digitalcredentials/jsonld-signatures": "^9.3.1", - "@digitalcredentials/vc": "^5.0.0", + "@digitalcredentials/jsonld": "^6.0.0", + "@digitalcredentials/jsonld-signatures": "^9.4.0", + "@digitalcredentials/vc": "^6.0.1", "@multiformats/base-x": "^4.0.1", - "@sphereon/pex": "^2.2.2", - "@sphereon/pex-models": "^2.1.2", - "@sphereon/ssi-types": "^0.17.5", "@stablelib/ed25519": "^1.0.2", "@stablelib/random": "^1.0.1", "@stablelib/sha256": "^1.0.1", diff --git a/packages/core/src/modules/vc/data-integrity/W3cJsonLdCredentialService.ts b/packages/core/src/modules/vc/data-integrity/W3cJsonLdCredentialService.ts index 5fc7acb229..f2777463dc 100644 --- a/packages/core/src/modules/vc/data-integrity/W3cJsonLdCredentialService.ts +++ b/packages/core/src/modules/vc/data-integrity/W3cJsonLdCredentialService.ts @@ -9,6 +9,7 @@ import type { W3cJsonLdVerifyPresentationOptions, } from '../W3cCredentialServiceOptions' import type { W3cVerifyCredentialResult, W3cVerifyPresentationResult } from '../models' +import type { W3cJsonCredential } from '../models/credential/W3cJsonCredential' import { createWalletKeyPairClass } from '../../../crypto/WalletKeyPair' import { AriesFrameworkError } from '../../../error' @@ -108,8 +109,9 @@ export class W3cJsonLdCredentialService { credential: JsonTransformer.toJSON(options.credential), suite: suites, documentLoader: this.w3cCredentialsModuleConfig.documentLoader(agentContext), - checkStatus: () => { - if (verifyCredentialStatus) { + checkStatus: ({ credential }: { credential: W3cJsonCredential }) => { + // Only throw error if credentialStatus is present + if (verifyCredentialStatus && 'credentialStatus' in credential) { throw new AriesFrameworkError( 'Verifying credential status for JSON-LD credentials is currently not supported' ) diff --git a/packages/core/src/modules/vc/data-integrity/__tests__/W3cJsonLdCredentialService.test.ts b/packages/core/src/modules/vc/data-integrity/__tests__/W3cJsonLdCredentialService.test.ts index 80f4e42526..0e1a416dd2 100644 --- a/packages/core/src/modules/vc/data-integrity/__tests__/W3cJsonLdCredentialService.test.ts +++ b/packages/core/src/modules/vc/data-integrity/__tests__/W3cJsonLdCredentialService.test.ts @@ -156,6 +156,27 @@ describe('W3cJsonLdCredentialsService', () => { vcJs: { isValid: true, results: expect.any(Array), + log: [ + { + id: 'expiration', + valid: true, + }, + { + id: 'valid_signature', + valid: true, + }, + { + id: 'issuer_did_resolves', + valid: true, + }, + { + id: 'revocation_status', + valid: true, + }, + ], + statusResult: { + verified: true, + }, }, }, }) diff --git a/packages/core/src/modules/vc/data-integrity/deriveProof.ts b/packages/core/src/modules/vc/data-integrity/deriveProof.ts index a98bf1a064..fe89595115 100644 --- a/packages/core/src/modules/vc/data-integrity/deriveProof.ts +++ b/packages/core/src/modules/vc/data-integrity/deriveProof.ts @@ -38,7 +38,7 @@ export interface W3cJsonLdDeriveProofOptions { export const deriveProof = async ( proofDocument: JsonObject, revealDocument: JsonObject, - { suite, skipProofCompaction, documentLoader, expansionMap, nonce }: any + { suite, skipProofCompaction, documentLoader, nonce }: any ): Promise => { if (!suite) { throw new TypeError('"options.suite" is required.') @@ -52,7 +52,6 @@ export const deriveProof = async ( document: proofDocument, proofType: suite.supportedDeriveProofType, documentLoader, - expansionMap, }) if (proofs.length === 0) { @@ -64,7 +63,7 @@ export const deriveProof = async ( proof: proofs[0], revealDocument, documentLoader, - expansionMap, + nonce, }) @@ -82,7 +81,6 @@ export const deriveProof = async ( proof, revealDocument, documentLoader, - expansionMap, }) derivedProof.proof.push(additionalDerivedProofValue.proof) } @@ -99,7 +97,6 @@ export const deriveProof = async ( // account for type-scoped `proof` definition by getting document types const { types, alias } = await getTypeInfo(derivedProof.document, { documentLoader, - expansionMap, }) expandedProof['@type'] = types @@ -108,7 +105,6 @@ export const deriveProof = async ( const compactProof = await jsonld.compact(expandedProof, ctx, { documentLoader, - expansionMap, compactToRelative: false, }) diff --git a/packages/core/src/modules/vc/data-integrity/jsonldUtil.ts b/packages/core/src/modules/vc/data-integrity/jsonldUtil.ts index 7fbd3a753c..6975e92c99 100644 --- a/packages/core/src/modules/vc/data-integrity/jsonldUtil.ts +++ b/packages/core/src/modules/vc/data-integrity/jsonldUtil.ts @@ -67,7 +67,7 @@ const PROOF_PROPERTY = 'proof' * @returns {GetProofsResult} An object containing the matched proofs and the JSON-LD document */ export const getProofs = async (options: GetProofsOptions): Promise => { - const { proofType, skipProofCompaction, documentLoader, expansionMap } = options + const { proofType, skipProofCompaction, documentLoader } = options let { document } = options let proofs @@ -76,7 +76,6 @@ export const getProofs = async (options: GetProofsOptions): Promise => { - const { documentLoader, expansionMap } = options + const { documentLoader } = options // determine `@type` alias, if any // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -124,7 +123,6 @@ export const getTypeInfo = async ( const compacted = await jsonld.compact({ '@type': '_:b0' }, context, { documentLoader, - expansionMap, }) delete compacted['@context'] @@ -139,7 +137,7 @@ export const getTypeInfo = async ( // @ts-ignore - needed because getValues is not part of the public API. toExpand['@type'] = jsonld.getValues(document, '@type').concat(jsonld.getValues(document, alias)) - const expanded = (await jsonld.expand(toExpand, { documentLoader, expansionMap }))[0] || {} + const expanded = (await jsonld.expand(toExpand, { documentLoader }))[0] || {} // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - needed because getValues is not part of the public API. diff --git a/packages/core/src/modules/vc/data-integrity/libraries/nativeDocumentLoader.ts b/packages/core/src/modules/vc/data-integrity/libraries/nativeDocumentLoader.ts index de69a7c793..9ad2e61701 100644 --- a/packages/core/src/modules/vc/data-integrity/libraries/nativeDocumentLoader.ts +++ b/packages/core/src/modules/vc/data-integrity/libraries/nativeDocumentLoader.ts @@ -2,7 +2,7 @@ import type { DocumentLoader } from './jsonld' export function getNativeDocumentLoader(): () => DocumentLoader { // eslint-disable-next-line @typescript-eslint/no-var-requires - const loader = require('./nodeDocumentLoader') + const loader = require('@digitalcredentials/jsonld/lib/documentLoaders/node') return loader as () => DocumentLoader } diff --git a/packages/core/src/modules/vc/data-integrity/libraries/nodeDocumentLoader.ts b/packages/core/src/modules/vc/data-integrity/libraries/nodeDocumentLoader.ts deleted file mode 100644 index 3b1ea40601..0000000000 --- a/packages/core/src/modules/vc/data-integrity/libraries/nodeDocumentLoader.ts +++ /dev/null @@ -1,207 +0,0 @@ -// NOTE: this file is copied from the digitalcredentials/jsonld.js library -// as there's a bug in Node.JS 18. If the PR is merged and released we can remove -// the custom implementation in AFJ: https://github.com/digitalcredentials/jsonld.js/pull/2 - -// We ignore the typescript and eslint errors in this file, so we can keep the file as close to the original as possible -/* eslint-disable */ -// @ts-nocheck - -/* - * Copyright (c) 2017-2021 Digital Bazaar, Inc. All rights reserved. - */ - -const { httpClient } = require('@digitalcredentials/http-client') -const https = require('https') - -const JsonLdError = require('@digitalcredentials/jsonld/lib//JsonLdError') -const RequestQueue = require('@digitalcredentials/jsonld/lib//RequestQueue') -const { LINK_HEADER_CONTEXT } = require('@digitalcredentials/jsonld/lib//constants') -const { prependBase } = require('@digitalcredentials/jsonld/lib//url') -const { parseLinkHeader, buildHeaders } = require('@digitalcredentials/jsonld/lib//util') - -/** - * Creates a built-in node document loader. - * - * @param options the options to use: - * [secure]: require all URLs to use HTTPS. (default: false) - * [strictSSL]: true to require SSL certificates to be valid, - * false not to. (default: true) - * [maxRedirects]: the maximum number of redirects to permit. - * (default: none) - * [headers]: an object (map) of headers which will be passed as - * request headers for the requested document. Accept is not - * allowed. (default: none). - * [httpAgent]: a Node.js `http.Agent` to use with 'http' requests. - * (default: none) - * [httpsAgent]: a Node.js `https.Agent` to use with 'https' requests. - * (default: An agent with rejectUnauthorized to the strictSSL - * value) - * - * @return the node document loader. - */ -module.exports = ( - { secure, strictSSL = true, maxRedirects = -1, headers = {}, httpAgent, httpsAgent } = { - strictSSL: true, - maxRedirects: -1, - headers: {}, - } -) => { - headers = buildHeaders(headers) - // if no default user-agent header, copy headers and set one - if (!('user-agent' in headers)) { - headers = Object.assign({}, headers, { - 'user-agent': 'jsonld.js', - }) - } - const http = require('http') - - const queue = new RequestQueue() - return queue.wrapLoader(function (url) { - return loadDocument(url, []) - }) - - async function loadDocument(url, redirects) { - const isHttp = url.startsWith('http:') - const isHttps = url.startsWith('https:') - if (!isHttp && !isHttps) { - throw new JsonLdError( - 'URL could not be dereferenced; only "http" and "https" URLs are ' + 'supported.', - 'jsonld.InvalidUrl', - { code: 'loading document failed', url } - ) - } - if (secure && !isHttps) { - throw new JsonLdError( - 'URL could not be dereferenced; secure mode is enabled and ' + 'the URL\'s scheme is not "https".', - 'jsonld.InvalidUrl', - { code: 'loading document failed', url } - ) - } - // TODO: disable cache until HTTP caching implemented - let doc = null //cache.get(url); - if (doc !== null) { - return doc - } - - let alternate = null - - const { res, body } = await _fetch({ - url, - headers, - strictSSL, - httpAgent, - httpsAgent, - }) - doc = { contextUrl: null, documentUrl: url, document: body || null } - - // handle error - const statusText = http.STATUS_CODES[res.status] - if (res.status >= 400) { - throw new JsonLdError(`URL "${url}" could not be dereferenced: ${statusText}`, 'jsonld.InvalidUrl', { - code: 'loading document failed', - url, - httpStatusCode: res.status, - }) - } - const link = res.headers.get('link') - let location = res.headers.get('location') - const contentType = res.headers.get('content-type') - - // handle Link Header - if (link && contentType !== 'application/ld+json') { - // only 1 related link header permitted - const linkHeaders = parseLinkHeader(link) - const linkedContext = linkHeaders[LINK_HEADER_CONTEXT] - if (Array.isArray(linkedContext)) { - throw new JsonLdError( - 'URL could not be dereferenced, it has more than one associated ' + 'HTTP Link Header.', - 'jsonld.InvalidUrl', - { code: 'multiple context link headers', url } - ) - } - if (linkedContext) { - doc.contextUrl = linkedContext.target - } - - // "alternate" link header is a redirect - alternate = linkHeaders['alternate'] - if ( - alternate && - alternate.type == 'application/ld+json' && - !(contentType || '').match(/^application\/(\w*\+)?json$/) - ) { - location = prependBase(url, alternate.target) - } - } - - // handle redirect - if ((alternate || (res.status >= 300 && res.status < 400)) && location) { - if (redirects.length === maxRedirects) { - throw new JsonLdError( - 'URL could not be dereferenced; there were too many redirects.', - 'jsonld.TooManyRedirects', - { - code: 'loading document failed', - url, - httpStatusCode: res.status, - redirects, - } - ) - } - if (redirects.indexOf(url) !== -1) { - throw new JsonLdError( - 'URL could not be dereferenced; infinite redirection was detected.', - 'jsonld.InfiniteRedirectDetected', - { - code: 'recursive context inclusion', - url, - httpStatusCode: res.status, - redirects, - } - ) - } - redirects.push(url) - return loadDocument(location, redirects) - } - - // cache for each redirected URL - redirects.push(url) - // TODO: disable cache until HTTP caching implemented - /* - for(let i = 0; i < redirects.length; ++i) { - cache.set( - redirects[i], - {contextUrl: null, documentUrl: redirects[i], document: body}); - } - */ - - return doc - } -} - -async function _fetch({ url, headers, strictSSL, httpAgent, httpsAgent }) { - try { - const options = { headers, redirect: 'manual' } - const isHttps = url.startsWith('https:') - if (isHttps) { - options.agent = httpsAgent || new https.Agent({ rejectUnauthorized: strictSSL }) - } else { - if (httpAgent) { - options.agent = httpAgent - } - } - const res = await httpClient.get(url, options) - return { res, body: res.data } - } catch (e) { - // HTTP errors have a response in them - // ky considers redirects HTTP errors - if (e.response) { - return { res: e.response, body: null } - } - throw new JsonLdError('URL could not be dereferenced, an error occurred.', 'jsonld.LoadDocumentError', { - code: 'loading document failed', - url, - cause: e, - }) - } -} diff --git a/packages/core/src/modules/vc/data-integrity/models/GetProofsOptions.ts b/packages/core/src/modules/vc/data-integrity/models/GetProofsOptions.ts index 0ed1214404..76e9dfccb5 100644 --- a/packages/core/src/modules/vc/data-integrity/models/GetProofsOptions.ts +++ b/packages/core/src/modules/vc/data-integrity/models/GetProofsOptions.ts @@ -30,10 +30,6 @@ export interface GetProofsOptions { * Optional custom document loader */ documentLoader?(): DocumentLoader - /** - * Optional expansion map - */ - expansionMap?(): () => void /** * Optional property to indicate whether to skip compacting the resulting proof */ diff --git a/packages/core/src/modules/vc/data-integrity/models/GetTypeOptions.ts b/packages/core/src/modules/vc/data-integrity/models/GetTypeOptions.ts index f39854f02b..da40540e38 100644 --- a/packages/core/src/modules/vc/data-integrity/models/GetTypeOptions.ts +++ b/packages/core/src/modules/vc/data-integrity/models/GetTypeOptions.ts @@ -21,8 +21,4 @@ export interface GetTypeOptions { * Optional custom document loader */ documentLoader?: DocumentLoader - /** - * Optional expansion map - */ - expansionMap?: () => void } diff --git a/packages/core/src/modules/vc/data-integrity/proof-purposes/CredentialIssuancePurpose.ts b/packages/core/src/modules/vc/data-integrity/proof-purposes/CredentialIssuancePurpose.ts index 950f5b3790..3f79fe92b7 100644 --- a/packages/core/src/modules/vc/data-integrity/proof-purposes/CredentialIssuancePurpose.ts +++ b/packages/core/src/modules/vc/data-integrity/proof-purposes/CredentialIssuancePurpose.ts @@ -40,7 +40,6 @@ export class CredentialIssuancePurpose extends AssertionProofPurpose { * @param {string} options.verificationMethod - Key id URL to the paired * public key. * @param {object} [options.documentLoader] - A document loader. - * @param {object} [options.expansionMap] - An expansion map. * * @throws {Error} If verification method not authorized by controller. * @throws {Error} If proof's created timestamp is out of range. @@ -54,7 +53,6 @@ export class CredentialIssuancePurpose extends AssertionProofPurpose { suite: typeof LinkedDataProof verificationMethod: string documentLoader?: DocumentLoader - expansionMap?: () => void } // eslint-disable-next-line @typescript-eslint/no-explicit-any ): Promise<{ valid: boolean; error?: any }> { diff --git a/packages/core/src/modules/vc/data-integrity/signature-suites/JwsLinkedDataSignature.ts b/packages/core/src/modules/vc/data-integrity/signature-suites/JwsLinkedDataSignature.ts index cf1f25ad06..db012f8555 100644 --- a/packages/core/src/modules/vc/data-integrity/signature-suites/JwsLinkedDataSignature.ts +++ b/packages/core/src/modules/vc/data-integrity/signature-suites/JwsLinkedDataSignature.ts @@ -208,11 +208,6 @@ export class JwsLinkedDataSignature extends LinkedDataSignature { * recommended to use one that provides static known documents, instead of * fetching from the web) for returning contexts, controller documents, * keys, and other relevant URLs needed for the proof. - * @param [options.expansionMap] - A custom expansion map that is - * passed to the JSON-LD processor; by default a function that will throw - * an error when unmapped properties are detected in the input, use `false` - * to turn this off and allow unmapped properties to be dropped or use a - * custom function. * * @returns Whether a match for the proof was found. */ @@ -222,14 +217,12 @@ export class JwsLinkedDataSignature extends LinkedDataSignature { // eslint-disable-next-line @typescript-eslint/no-explicit-any purpose: any documentLoader?: DocumentLoader - expansionMap?: () => void }) { const proofMatches = await super.matchProof({ proof: options.proof, document: options.document, purpose: options.purpose, documentLoader: options.documentLoader, - expansionMap: options.expansionMap, }) if (!proofMatches) { return false diff --git a/packages/core/src/modules/vc/data-integrity/signature-suites/ed25519/Ed25519Signature2018.ts b/packages/core/src/modules/vc/data-integrity/signature-suites/ed25519/Ed25519Signature2018.ts index 329b71c47c..3feed55441 100644 --- a/packages/core/src/modules/vc/data-integrity/signature-suites/ed25519/Ed25519Signature2018.ts +++ b/packages/core/src/modules/vc/data-integrity/signature-suites/ed25519/Ed25519Signature2018.ts @@ -155,11 +155,6 @@ export class Ed25519Signature2018 extends JwsLinkedDataSignature { * recommended to use one that provides static known documents, instead of * fetching from the web) for returning contexts, controller documents, * keys, and other relevant URLs needed for the proof. - * @param {Function} [options.expansionMap] - A custom expansion map that is - * passed to the JSON-LD processor; by default a function that will throw - * an error when unmapped properties are detected in the input, use `false` - * to turn this off and allow unmapped properties to be dropped or use a - * custom function. * * @returns {Promise} Whether a match for the proof was found. */ @@ -169,7 +164,6 @@ export class Ed25519Signature2018 extends JwsLinkedDataSignature { // eslint-disable-next-line @typescript-eslint/no-explicit-any purpose: any documentLoader?: DocumentLoader - expansionMap?: () => void }) { if (!_includesCompatibleContext({ document: options.document })) { return false @@ -179,7 +173,6 @@ export class Ed25519Signature2018 extends JwsLinkedDataSignature { document: options.document, purpose: options.purpose, documentLoader: options.documentLoader, - expansionMap: options.expansionMap, }) } } diff --git a/yarn.lock b/yarn.lock index 61fb0df1a1..59c30b61a1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -59,11 +59,24 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" +"@babel/code-frame@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" + integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== + dependencies: + "@babel/highlight" "^7.23.4" + chalk "^2.4.2" + "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f" integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g== +"@babel/compat-data@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" + integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== + "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659" @@ -85,6 +98,27 @@ json5 "^2.2.2" semver "^6.3.0" +"@babel/core@^7.14.6": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" + integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.9" + "@babel/parser" "^7.23.9" + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.20.0", "@babel/generator@^7.21.4", "@babel/generator@^7.7.2": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc" @@ -105,6 +139,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" + integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== + dependencies: + "@babel/types" "^7.23.6" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" @@ -123,6 +167,17 @@ lru-cache "^5.1.1" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz#3a017163dc3c2ba7deb9a7950849a9586ea24c18" @@ -204,6 +259,13 @@ dependencies: "@babel/types" "^7.21.4" +"@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + "@babel/helper-module-transforms@^7.21.2": version "7.21.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" @@ -218,6 +280,17 @@ "@babel/traverse" "^7.21.2" "@babel/types" "^7.21.2" +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -230,6 +303,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== +"@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -259,6 +337,13 @@ dependencies: "@babel/types" "^7.20.2" +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" @@ -290,6 +375,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" @@ -305,6 +395,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helper-wrap-function@^7.18.9": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" @@ -324,6 +419,15 @@ "@babel/traverse" "^7.21.0" "@babel/types" "^7.21.0" +"@babel/helpers@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" + integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== + dependencies: + "@babel/template" "^7.23.9" + "@babel/traverse" "^7.23.9" + "@babel/types" "^7.23.9" + "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" @@ -342,6 +446,15 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" + integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.21.4": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17" @@ -352,6 +465,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== + "@babel/plugin-proposal-async-generator-functions@^7.0.0": version "7.20.7" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" @@ -378,6 +496,14 @@ "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-default-from" "^7.18.6" +"@babel/plugin-proposal-export-namespace-from@^7.14.5": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.0.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" @@ -449,6 +575,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.18.6": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz#3e37fca4f06d93567c1cd9b75156422e90a67107" @@ -640,6 +773,15 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-simple-access" "^7.20.2" +"@babel/plugin-transform-modules-commonjs@^7.14.5": + version "7.23.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz#661ae831b9577e52be57dd8356b734f9700b53b4" + integrity sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex@^7.0.0": version "7.20.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" @@ -822,6 +964,15 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" +"@babel/template@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" + integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + "@babel/traverse@^7.20.0", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" @@ -838,6 +989,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" + integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.9" + "@babel/types" "^7.23.9" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.21.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4" @@ -856,6 +1023,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.23.6", "@babel/types@^7.23.9": + version "7.23.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1078,11 +1254,93 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" +"@digitalbazaar/bitstring@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@digitalbazaar/bitstring/-/bitstring-3.1.0.tgz#bbbacb80eaaa53594723a801879b3a95a0401b11" + integrity sha512-Cii+Sl++qaexOvv3vchhgZFfSmtHPNIPzGegaq4ffPnflVXFu+V2qrJ17aL2+gfLxrlC/zazZFuAltyKTPq7eg== + dependencies: + base64url-universal "^2.0.0" + pako "^2.0.4" + +"@digitalbazaar/http-client@^3.4.1": + version "3.4.1" + resolved "https://registry.yarnpkg.com/@digitalbazaar/http-client/-/http-client-3.4.1.tgz#5116fc44290d647cfe4b615d1f3fad9d6005e44d" + integrity sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g== + dependencies: + ky "^0.33.3" + ky-universal "^0.11.0" + undici "^5.21.2" + "@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" integrity sha512-mlj+UmodxTAdMCHGxnGVTRLHcSLyiEOVRiz3J6yiRliJWyrgeXs34wlWjBorDIEMDIjK2JwZrDuFEKO9bS5nKQ== +"@digitalbazaar/vc-status-list-context@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@digitalbazaar/vc-status-list-context/-/vc-status-list-context-3.0.1.tgz#0507b7b6f6ee8b5e7e4d402e7a2905efdc70a316" + integrity sha512-vQsqQXpmSXKNy/C0xxFUOBzz60dHh6oupQam1xRC8IspVC11hYJiX9SAhmbI0ulHvX1R2JfqZaJHZjmAyMZ/aA== + +"@digitalbazaar/vc-status-list@^7.0.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@digitalbazaar/vc-status-list/-/vc-status-list-7.1.0.tgz#1d585a1766106e1586e1e2f87092dd0381b3f036" + integrity sha512-p5uxKJlX13N8TcTuv9qFDeej+6bndU+Rh1Cez2MT+bXQE6Jpn5t336FBSHmcECB4yUfZQpkmV/LOcYU4lW8Ojw== + dependencies: + "@digitalbazaar/bitstring" "^3.0.0" + "@digitalbazaar/vc" "^5.0.0" + "@digitalbazaar/vc-status-list-context" "^3.0.1" + credentials-context "^2.0.0" + +"@digitalbazaar/vc@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@digitalbazaar/vc/-/vc-5.0.0.tgz#20180fb492cb755eb2c6b6df9a17f7407d5e4b5a" + integrity sha512-XmLM7Ag5W+XidGnFuxFIyUFSMnHnWEMJlHei602GG94+WzFJ6Ik8txzPQL8T18egSoiTsd1VekymbIlSimhuaQ== + dependencies: + credentials-context "^2.0.0" + jsonld "^8.0.0" + jsonld-signatures "^11.0.0" + +"@digitalcredentials/base58-universal@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@digitalcredentials/base58-universal/-/base58-universal-1.0.1.tgz#41b5a16cdeaac9cf01b23f1e564c560c2599b607" + integrity sha512-1xKdJnfITMvrF/sCgwBx2C4p7qcNAARyIvrAOZGqIHmBaT/hAenpC8bf44qVY+UIMuCYP23kqpIfJQebQDThDQ== + +"@digitalcredentials/base64url-universal@^2.0.2": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@digitalcredentials/base64url-universal/-/base64url-universal-2.0.6.tgz#43c59c62a33b024e7adc3c56403d18dbcb61ec61" + integrity sha512-QJyK6xS8BYNnkKLhEAgQc6Tb9DMe+GkHnBAWJKITCxVRXJAFLhJnr+FsJnCThS3x2Y0UiiDAXoWjwMqtUrp4Kg== + dependencies: + base64url "^3.0.1" + +"@digitalcredentials/bitstring@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@digitalcredentials/bitstring/-/bitstring-2.0.1.tgz#bb887f1d0999980598754e426d831c96a26a3863" + integrity sha512-9priXvsEJGI4LYHPwLqf5jv9HtQGlG0MgeuY8Q4NHN+xWz5rYMylh1TYTVThKa3XI6xF2pR2oEfKZD21eWXveQ== + dependencies: + "@digitalcredentials/base64url-universal" "^2.0.2" + pako "^2.0.4" + +"@digitalcredentials/ed25519-signature-2020@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@digitalcredentials/ed25519-signature-2020/-/ed25519-signature-2020-3.0.2.tgz#2df8fb6f814a1964b40ebb3402d41630c30120da" + integrity sha512-R8IrR21Dh+75CYriQov3nVHKaOVusbxfk9gyi6eCAwLHKn6fllUt+2LQfuUrL7Ts/sGIJqQcev7YvkX9GvyYRA== + dependencies: + "@digitalcredentials/base58-universal" "^1.0.1" + "@digitalcredentials/ed25519-verification-key-2020" "^3.1.1" + "@digitalcredentials/jsonld-signatures" "^9.3.1" + ed25519-signature-2018-context "^1.1.0" + ed25519-signature-2020-context "^1.0.1" + +"@digitalcredentials/ed25519-verification-key-2020@^3.1.1": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@digitalcredentials/ed25519-verification-key-2020/-/ed25519-verification-key-2020-3.2.2.tgz#cdf271bf4bb44dd2c417dcde6d7a0436e31d84ca" + integrity sha512-ZfxNFZlA379MZpf+gV2tUYyiZ15eGVgjtCQLWlyu3frWxsumUgv++o0OJlMnrDsWGwzFMRrsXcosd5+752rLOA== + dependencies: + "@digitalcredentials/base58-universal" "^1.0.1" + "@stablelib/ed25519" "^1.0.1" + base64url-universal "^1.1.0" + crypto-ld "^6.0.0" + "@digitalcredentials/http-client@^1.0.0": version "1.2.2" resolved "https://registry.yarnpkg.com/@digitalcredentials/http-client/-/http-client-1.2.2.tgz#8b09ab6f1e3aa8878d91d3ca51946ca8265cc92e" @@ -1102,6 +1360,17 @@ isomorphic-webcrypto "^2.3.8" serialize-error "^8.0.1" +"@digitalcredentials/jsonld-signatures@^9.3.2", "@digitalcredentials/jsonld-signatures@^9.4.0": + version "9.4.0" + resolved "https://registry.yarnpkg.com/@digitalcredentials/jsonld-signatures/-/jsonld-signatures-9.4.0.tgz#d5881122c4202449b88a7e2384f8e615ae55582c" + integrity sha512-DnR+HDTm7qpcDd0wcD1w6GdlAwfHjQSgu+ahion8REkCkkMRywF+CLunU7t8AZpFB2Gr/+N8naUtiEBNje1Oew== + dependencies: + "@digitalbazaar/security-context" "^1.0.0" + "@digitalcredentials/jsonld" "^6.0.0" + fast-text-encoding "^1.0.3" + isomorphic-webcrypto "^2.3.8" + serialize-error "^8.0.1" + "@digitalcredentials/jsonld@^5.2.1": version "5.2.1" resolved "https://registry.yarnpkg.com/@digitalcredentials/jsonld/-/jsonld-5.2.1.tgz#60acf587bec8331e86324819fd19692939118775" @@ -1122,6 +1391,11 @@ canonicalize "^1.0.1" lru-cache "^6.0.0" +"@digitalcredentials/open-badges-context@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@digitalcredentials/open-badges-context/-/open-badges-context-2.1.0.tgz#cefd29af4642adf8feeed5bb7ede663b14913c2f" + integrity sha512-VK7X5u6OoBFxkyIFplNqUPVbo+8vFSAEoam8tSozpj05KPfcGw41Tp5p9fqMnY38oPfwtZR2yDNSctj/slrE0A== + "@digitalcredentials/rdf-canonize@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@digitalcredentials/rdf-canonize/-/rdf-canonize-1.0.0.tgz#6297d512072004c2be7f280246383a9c4b0877ff" @@ -1130,15 +1404,39 @@ fast-text-encoding "^1.0.3" isomorphic-webcrypto "^2.3.8" -"@digitalcredentials/vc@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-5.0.0.tgz#9940103221d9bdc280ce82ca615624ac2ef08d47" - integrity sha512-87ARRxlAdIuUPArbMYJ8vUY7QqkIvJGFrBwfTH1PcB8Wz1E/M4q3oc/WLrDyJNg4o/irVVB5gkA9iIntTYSpoA== +"@digitalcredentials/vc-status-list@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@digitalcredentials/vc-status-list/-/vc-status-list-5.0.2.tgz#9de8b23b6d533668a354ff464a689ecc42f24445" + integrity sha512-PI0N7SM0tXpaNLelbCNsMAi34AjOeuhUzMSYTkHdeqRPX7oT2F3ukyOssgr4koEqDxw9shHtxHu3fSJzrzcPMQ== + dependencies: + "@digitalbazaar/vc-status-list-context" "^3.0.1" + "@digitalcredentials/bitstring" "^2.0.1" + "@digitalcredentials/vc" "^4.1.1" + credentials-context "^2.0.0" + +"@digitalcredentials/vc@^4.1.1": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-4.2.0.tgz#d2197b26547d670965d5969a9e49437f244b5944" + integrity sha512-8Rxpn77JghJN7noBQdcMuzm/tB8vhDwPoFepr3oGd5w+CyJxOk2RnBlgIGlAAGA+mALFWECPv1rANfXno+hdjA== dependencies: "@digitalcredentials/jsonld" "^5.2.1" "@digitalcredentials/jsonld-signatures" "^9.3.1" credentials-context "^2.0.0" +"@digitalcredentials/vc@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@digitalcredentials/vc/-/vc-6.0.1.tgz#e4bdbac37d677c5288f2ad8d9ea59c3b41e0fd78" + integrity sha512-TZgLoi00Jc9uv3b6jStH+G8+bCqpHIqFw9DYODz+fVjNh197ksvcYqSndUDHa2oi0HCcK+soI8j4ba3Sa4Pl4w== + dependencies: + "@digitalbazaar/vc-status-list" "^7.0.0" + "@digitalcredentials/ed25519-signature-2020" "^3.0.2" + "@digitalcredentials/jsonld" "^6.0.0" + "@digitalcredentials/jsonld-signatures" "^9.3.2" + "@digitalcredentials/open-badges-context" "^2.1.0" + "@digitalcredentials/vc-status-list" "^5.0.2" + credentials-context "^2.0.0" + fix-esm "^1.0.1" + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1171,6 +1469,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== +"@fastify/busboy@^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.0.tgz#0709e9f4cb252351c609c6e6d8d6779a8d25edff" + integrity sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA== + "@gar/promisify@^1.0.1", "@gar/promisify@^1.1.3": version "1.1.3" resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" @@ -2654,7 +2957,7 @@ resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== -"@stablelib/ed25519@^1.0.2", "@stablelib/ed25519@^1.0.3": +"@stablelib/ed25519@^1.0.1", "@stablelib/ed25519@^1.0.2", "@stablelib/ed25519@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== @@ -3864,6 +4167,25 @@ base64-js@*, base64-js@^1.1.2, base64-js@^1.3.0, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +base64url-universal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/base64url-universal/-/base64url-universal-1.1.0.tgz#94da6356c1d43ead55b1d91c045c0a5b09ec8181" + integrity sha512-WyftvZqye29YQ10ZnuiBeEj0lk8SN8xHU9hOznkLc85wS1cLTp6RpzlMrHxMPD9nH7S55gsBqMqgGyz93rqmkA== + dependencies: + base64url "^3.0.0" + +base64url-universal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64url-universal/-/base64url-universal-2.0.0.tgz#6023785c0e349a90de1cf396e8a4519750a4e67b" + integrity sha512-6Hpg7EBf3t148C3+fMzjf+CHnADVDafWzlJUXAqqqbm4MKNXbsoPdOkWeRTjNlkYG7TpyjIpRO1Gk0SnsFD1rw== + dependencies: + base64url "^3.0.1" + +base64url@^3.0.0, base64url@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -4022,6 +4344,16 @@ browserslist@^4.21.3, browserslist@^4.21.5: node-releases "^2.0.8" update-browserslist-db "^1.0.10" +browserslist@^4.22.2: + version "4.22.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" + integrity sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A== + dependencies: + caniuse-lite "^1.0.30001580" + electron-to-chromium "^1.4.648" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -4245,6 +4577,11 @@ caniuse-lite@^1.0.30001449: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz#f58a717afe92f9e69d0e35ff64df596bfad93912" integrity sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ== +caniuse-lite@^1.0.30001580: + version "1.0.30001581" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001581.tgz#0dfd4db9e94edbdca67d57348ebc070dece279f4" + integrity sha512-whlTkwhqV2tUmP3oYhtNfaWGYHDdS3JYFQBKXxcUR9qqPWsRhFHhoISO2Xnl/g0xyKzht9mI1LZpiNWfMzHixQ== + canonicalize@^1.0.1: version "1.0.8" resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.8.tgz#24d1f1a00ed202faafd9bf8e63352cd4450c6df1" @@ -4891,6 +5228,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypto-ld@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/crypto-ld/-/crypto-ld-6.0.0.tgz#cf8dcf566cb3020bdb27f0279e6cc9b46d031cd7" + integrity sha512-XWL1LslqggNoaCI/m3I7HcvaSt9b2tYzdrXO+jHLUj9G1BvRfvV7ZTFDVY5nifYuIGAPdAGu7unPxLRustw3VA== + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -4919,6 +5261,11 @@ 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.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -4936,7 +5283,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5205,6 +5552,16 @@ duplexer@^0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== +ed25519-signature-2018-context@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ed25519-signature-2018-context/-/ed25519-signature-2018-context-1.1.0.tgz#68002ea7497c32e8170667cfd67468dedf7d220e" + integrity sha512-ppDWYMNwwp9bploq0fS4l048vHIq41nWsAbPq6H4mNVx9G/GxW3fwg4Ln0mqctP13MoEpREK7Biz8TbVVdYXqA== + +ed25519-signature-2020-context@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ed25519-signature-2020-context/-/ed25519-signature-2020-context-1.1.0.tgz#b2f724f07db154ddf0fd6605410d88736e56fd07" + integrity sha512-dBGSmoUIK6h2vadDctrDnhhTO01PR2hJk0mRNEfrRDPCjaIwrfy4J+eziEQ9Q1m8By4f/CSRgKM1h53ydKfdNg== + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -5222,6 +5579,11 @@ electron-to-chromium@^1.4.284: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.371.tgz#393983ef087268a20c926a89be30e9f0bfc803b0" integrity sha512-jlBzY4tFcJaiUjzhRTCWAqRvTO/fWzjA3Bls0mykzGZ7zvcMP7h05W6UcgzfT9Ca1SW2xyKDOFRyI0pQeRNZGw== +electron-to-chromium@^1.4.648: + version "1.4.648" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.648.tgz#c7b46c9010752c37bb4322739d6d2dd82354fbe4" + integrity sha512-EmFMarXeqJp9cUKu/QEciEApn0S/xRcpZWuAm32U7NgoZCimjsilKXHRO9saeEW55eHZagIDg6XTUOv32w9pjg== + elliptic@^6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -5955,6 +6317,14 @@ 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" + figlet@^1.5.2: version "1.6.0" resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.6.0.tgz#812050fa9f01043b4d44ddeb11f20fb268fa4b93" @@ -6094,6 +6464,15 @@ find-workspaces@^0.1.0: type-fest "^3.2.0" yaml "^2.1.3" +fix-esm@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fix-esm/-/fix-esm-1.0.1.tgz#e0e2199d841e43ff7db9b5f5ba7496bc45130ebb" + integrity sha512-EZtb7wPXZS54GaGxaWxMlhd1DUDCnAg5srlYdu/1ZVeW+7wwR3Tp59nu52dXByFs3MBRq+SByx1wDOJpRvLEXw== + dependencies: + "@babel/core" "^7.14.6" + "@babel/plugin-proposal-export-namespace-from" "^7.14.5" + "@babel/plugin-transform-modules-commonjs" "^7.14.5" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -6148,6 +6527,13 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +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" + forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -8160,6 +8546,25 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonld-signatures@^11.0.0: + version "11.2.1" + resolved "https://registry.yarnpkg.com/jsonld-signatures/-/jsonld-signatures-11.2.1.tgz#e2ff23ac7476fcdb92e5fecd9a1734ceaf904bb0" + integrity sha512-RNaHTEeRrX0jWeidPCwxMq/E/Ze94zFyEZz/v267ObbCHQlXhPO7GtkY6N5PSHQfQhZPXa8NlMBg5LiDF4dNbA== + dependencies: + "@digitalbazaar/security-context" "^1.0.0" + jsonld "^8.0.0" + serialize-error "^8.1.0" + +jsonld@^8.0.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/jsonld/-/jsonld-8.3.2.tgz#7033f8994aed346b536e9046025f7f1fe9669934" + integrity sha512-MwBbq95szLwt8eVQ1Bcfwmgju/Y5P2GdtlHE2ncyfuYjIdEhluUVyj1eudacf1mOkWIoS9GpDBTECqhmq7EOaA== + dependencies: + "@digitalbazaar/http-client" "^3.4.1" + canonicalize "^1.0.1" + lru-cache "^6.0.0" + rdf-canonize "^3.4.0" + jsonparse@^1.2.0, jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -8225,6 +8630,14 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +ky-universal@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.11.0.tgz#f5edf857865aaaea416a1968222148ad7d9e4017" + integrity sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw== + dependencies: + abort-controller "^3.0.0" + node-fetch "^3.2.10" + ky-universal@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.8.2.tgz#edc398d54cf495d7d6830aa1ab69559a3cc7f824" @@ -8238,6 +8651,11 @@ ky@^0.25.1: resolved "https://registry.yarnpkg.com/ky/-/ky-0.25.1.tgz#0df0bd872a9cc57e31acd5dbc1443547c881bfbc" integrity sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA== +ky@^0.33.3: + version "0.33.3" + resolved "https://registry.yarnpkg.com/ky/-/ky-0.33.3.tgz#bf1ad322a3f2c3428c13cfa4b3af95e6c4a2f543" + integrity sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw== + lerna@^6.5.1: version "6.6.1" resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.6.1.tgz#4897171aed64e244a2d0f9000eef5c5b228f9332" @@ -9459,6 +9877,11 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" +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" @@ -9488,6 +9911,15 @@ node-fetch@^2.6.12: dependencies: whatwg-url "^5.0.0" +node-fetch@^3.2.10: + version "3.3.2" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" + integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-gyp-build@^4.2.1, node-gyp-build@^4.3.0: version "4.6.0" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" @@ -9546,6 +9978,11 @@ node-pre-gyp@0.17.0: semver "^5.7.1" tar "^4.4.13" +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + node-releases@^2.0.8: version "2.0.10" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" @@ -10251,6 +10688,11 @@ pacote@^15.0.0, pacote@^15.0.8: ssri "^10.0.0" tar "^6.1.11" +pako@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -10711,6 +11153,13 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +rdf-canonize@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/rdf-canonize/-/rdf-canonize-3.4.0.tgz#87f88342b173cc371d812a07de350f0c1aa9f058" + integrity sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA== + dependencies: + setimmediate "^1.0.5" + react-devtools-core@^4.26.1: version "4.28.5" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" @@ -11302,7 +11751,7 @@ semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^ dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -11331,7 +11780,7 @@ serialize-error@^2.1.0: resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" integrity sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw== -serialize-error@^8.0.1: +serialize-error@^8.0.1, serialize-error@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-8.1.0.tgz#3a069970c712f78634942ddd50fbbc0eaebe2f67" integrity sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ== @@ -11382,6 +11831,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -12464,6 +12918,13 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici@^5.21.2: + version "5.28.2" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.2.tgz#fea200eac65fc7ecaff80a023d1a0543423b4c91" + integrity sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w== + dependencies: + "@fastify/busboy" "^2.0.0" + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -12587,6 +13048,14 @@ update-browserslist-db@^1.0.10: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -12729,6 +13198,11 @@ web-did-resolver@^2.0.21: cross-fetch "^4.0.0" did-resolver "^4.0.0" +web-streams-polyfill@^3.0.3: + version "3.3.2" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.2.tgz#32e26522e05128203a7de59519be3c648004343b" + integrity sha512-3pRGuxRF5gpuZc0W+EpwQRmCD7gRqcDOMt688KmdlDAgAyaB1XlN0zq2njfDNm44XVdIouE7pZ6GzbdyH47uIQ== + webcrypto-core@^1.7.7: version "1.7.7" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c"