From af9fad36e9f6e98448c680bfd485de96b5a7afb6 Mon Sep 17 00:00:00 2001 From: Martin Auer Date: Thu, 21 Nov 2024 14:16:56 +0100 Subject: [PATCH 1/9] feat: dcql alpha Signed-off-by: Martin Auer --- packages/core/package.json | 1 + packages/core/src/agent/AgentModules.ts | 2 + .../src/agent/__tests__/AgentModules.test.ts | 4 + packages/core/src/index.ts | 1 + packages/core/src/modules/dcql/DcqlError.ts | 13 + packages/core/src/modules/dcql/DcqlModule.ts | 25 + packages/core/src/modules/dcql/DcqlService.ts | 277 ++ packages/core/src/modules/dcql/index.ts | 5 + .../dcql/models/DcqlCredentialsForRequest.ts | 20 + .../core/src/modules/dcql/models/index.ts | 22 + .../dcql/utils/DcqlPresentationsToCreate.ts | 78 + packages/core/src/modules/dcql/utils/index.ts | 1 + .../src/modules/mdoc/MdocDeviceResponse.ts | 59 +- packages/core/src/modules/mdoc/MdocOptions.ts | 14 + packages/openid4vc/package.json | 2 +- .../OpenId4vcSiopHolderService.ts | 92 +- .../OpenId4vcSiopHolderServiceOptions.ts | 14 + .../OpenId4VcSiopVerifierService.ts | 42 +- .../OpenId4VcSiopVerifierServiceOptions.ts | 16 + .../openid4vc/tests/openid4vc.e2e.test.ts | 247 +- pnpm-lock.yaml | 4066 ++++++----------- 21 files changed, 2301 insertions(+), 2700 deletions(-) create mode 100644 packages/core/src/modules/dcql/DcqlError.ts create mode 100644 packages/core/src/modules/dcql/DcqlModule.ts create mode 100644 packages/core/src/modules/dcql/DcqlService.ts create mode 100644 packages/core/src/modules/dcql/index.ts create mode 100644 packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts create mode 100644 packages/core/src/modules/dcql/models/index.ts create mode 100644 packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts create mode 100644 packages/core/src/modules/dcql/utils/index.ts diff --git a/packages/core/package.json b/packages/core/package.json index 8488342433..3b4ca52f8a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -26,6 +26,7 @@ }, "dependencies": { "@digitalcredentials/jsonld": "^6.0.0", + "dcql": "^0.2.8", "@digitalcredentials/jsonld-signatures": "^9.4.0", "@digitalcredentials/vc": "^6.0.1", "@multiformats/base-x": "^4.0.1", diff --git a/packages/core/src/agent/AgentModules.ts b/packages/core/src/agent/AgentModules.ts index 7ca8b8851f..a55f28236f 100644 --- a/packages/core/src/agent/AgentModules.ts +++ b/packages/core/src/agent/AgentModules.ts @@ -6,6 +6,7 @@ import { BasicMessagesModule } from '../modules/basic-messages' import { CacheModule } from '../modules/cache' import { ConnectionsModule } from '../modules/connections' import { CredentialsModule } from '../modules/credentials' +import { DcqlModule } from '../modules/dcql' import { DidsModule } from '../modules/dids' import { DifPresentationExchangeModule } from '../modules/dif-presentation-exchange' import { DiscoverFeaturesModule } from '../modules/discover-features' @@ -136,6 +137,7 @@ function getDefaultAgentModules() { w3cCredentials: () => new W3cCredentialsModule(), cache: () => new CacheModule(), pex: () => new DifPresentationExchangeModule(), + dcql: () => new DcqlModule(), sdJwtVc: () => new SdJwtVcModule(), x509: () => new X509Module(), mdoc: () => new MdocModule(), diff --git a/packages/core/src/agent/__tests__/AgentModules.test.ts b/packages/core/src/agent/__tests__/AgentModules.test.ts index f174d97a4a..7e5a137d35 100644 --- a/packages/core/src/agent/__tests__/AgentModules.test.ts +++ b/packages/core/src/agent/__tests__/AgentModules.test.ts @@ -4,6 +4,7 @@ import { BasicMessagesModule } from '../../modules/basic-messages' import { CacheModule } from '../../modules/cache' import { ConnectionsModule } from '../../modules/connections' import { CredentialsModule } from '../../modules/credentials' +import { DcqlModule } from '../../modules/dcql' import { DidsModule } from '../../modules/dids' import { DifPresentationExchangeModule } from '../../modules/dif-presentation-exchange' import { DiscoverFeaturesModule } from '../../modules/discover-features' @@ -67,6 +68,7 @@ describe('AgentModules', () => { messagePickup: expect.any(MessagePickupModule), basicMessages: expect.any(BasicMessagesModule), pex: expect.any(DifPresentationExchangeModule), + dcql: expect.any(DcqlModule), genericRecords: expect.any(GenericRecordsModule), discovery: expect.any(DiscoverFeaturesModule), dids: expect.any(DidsModule), @@ -95,6 +97,7 @@ describe('AgentModules', () => { messagePickup: expect.any(MessagePickupModule), basicMessages: expect.any(BasicMessagesModule), pex: expect.any(DifPresentationExchangeModule), + dcql: expect.any(DcqlModule), genericRecords: expect.any(GenericRecordsModule), discovery: expect.any(DiscoverFeaturesModule), dids: expect.any(DidsModule), @@ -126,6 +129,7 @@ describe('AgentModules', () => { messagePickup: expect.any(MessagePickupModule), basicMessages: expect.any(BasicMessagesModule), pex: expect.any(DifPresentationExchangeModule), + dcql: expect.any(DcqlModule), genericRecords: expect.any(GenericRecordsModule), discovery: expect.any(DiscoverFeaturesModule), dids: expect.any(DidsModule), diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 1b98fd78cd..e87efc0bf6 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -65,6 +65,7 @@ export * from './modules/cache' export * from './modules/dif-presentation-exchange' export * from './modules/sd-jwt-vc' export * from './modules/mdoc' +export * from './modules/dcql' export { JsonEncoder, JsonTransformer, diff --git a/packages/core/src/modules/dcql/DcqlError.ts b/packages/core/src/modules/dcql/DcqlError.ts new file mode 100644 index 0000000000..3470a7e807 --- /dev/null +++ b/packages/core/src/modules/dcql/DcqlError.ts @@ -0,0 +1,13 @@ +import { CredoError } from '../../error' + +export class DcqlError extends CredoError { + public additionalMessages?: Array + + public constructor( + message: string, + { cause, additionalMessages }: { cause?: Error; additionalMessages?: Array } = {} + ) { + super(message, { cause }) + this.additionalMessages = additionalMessages + } +} diff --git a/packages/core/src/modules/dcql/DcqlModule.ts b/packages/core/src/modules/dcql/DcqlModule.ts new file mode 100644 index 0000000000..a25306bd2e --- /dev/null +++ b/packages/core/src/modules/dcql/DcqlModule.ts @@ -0,0 +1,25 @@ +import type { DependencyManager, Module } from '../../plugins' + +import { AgentConfig } from '../../agent/AgentConfig' + +import { DcqlService } from './DcqlService' + +/** + * @public + */ +export class DcqlModule implements Module { + /** + * Registers the dependencies of the presentation-exchange module on the dependency manager. + */ + public register(dependencyManager: DependencyManager) { + // Warn about experimental module + dependencyManager + .resolve(AgentConfig) + .logger.warn( + "The 'DcqlModule' module is experimental and could have unexpected breaking changes. When using this module, make sure to use strict versions for all @credo-ts packages." + ) + + // service + dependencyManager.registerSingleton(DcqlService) + } +} diff --git a/packages/core/src/modules/dcql/DcqlService.ts b/packages/core/src/modules/dcql/DcqlService.ts new file mode 100644 index 0000000000..5ea6f82e45 --- /dev/null +++ b/packages/core/src/modules/dcql/DcqlService.ts @@ -0,0 +1,277 @@ +import type { AgentContext } from '../../agent' + +import { DcqlCredentialRepresentation, DcqlMdocRepresentation, DcqlQuery, DcqlSdJwtVcRepresentation } from 'dcql' +import { injectable } from 'tsyringe' + +import { JsonValue } from '../../types' +import { Mdoc, MdocApi, MdocDeviceResponse, MdocOpenId4VpSessionTranscriptOptions, MdocRecord } from '../mdoc' +import { IPresentationFrame, SdJwtVcApi, SdJwtVcRecord } from '../sd-jwt-vc' +import { + ClaimFormat, + W3cCredentialRecord, + W3cCredentialRepository, + W3cJsonLdVerifiablePresentation, + W3cJwtVerifiablePresentation, +} from '../vc' + +import { DcqlError } from './DcqlError' +import { DcqlQueryResult, DcqlCredentialsForRequest, DcqlPresentationRecord } from './models' +import { dcqlGetPresentationsToCreate } from './utils' + +/** + * @todo create a public api for using dif presentation exchange + */ +@injectable() +export class DcqlService { + /** + * Queries the wallet for credentials that match the given presentation definition. This only does an initial query based on the + * schema of the input descriptors. It does not do any further filtering based on the constraints in the input descriptors. + */ + private async queryCredentialForPresentationDefinition( + agentContext: AgentContext, + dcqlQuery: DcqlQuery + ): Promise> { + const w3cCredentialRepository = agentContext.dependencyManager.resolve(W3cCredentialRepository) + + const formats = new Set(dcqlQuery.credentials.map((c) => c.format)) + for (const format of formats) { + if (format !== 'vc+sd-jwt' && format !== 'jwt_vc_json' && format !== 'jwt_vc_json-ld' && format !== 'mso_mdoc') { + throw new DcqlError(`Unsupported credential format ${format}.`) + } + } + + const allRecords: Array = [] + + // query the wallet ourselves first to avoid the need to query the pex library for all + // credentials for every proof request + const w3cCredentialRecords = + formats.has('jwt_vc_json') || formats.has('jwt_vc_json-ld') + ? await w3cCredentialRepository.getAll(agentContext) + : [] + allRecords.push(...w3cCredentialRecords) + + const sdJwtVcApi = this.getSdJwtVcApi(agentContext) + const sdJwtVcRecords = formats.has('vc+sd-jwt') ? await sdJwtVcApi.getAll() : [] + allRecords.push(...sdJwtVcRecords) + + const mdocApi = this.getMdocApi(agentContext) + const mdocRecords = formats.has('mso_mdoc') ? await mdocApi.getAll() : [] + allRecords.push(...mdocRecords) + + return allRecords + } + + public async getCredentialsForRequest(agentContext: AgentContext, dcqlQuery: DcqlQuery): Promise { + const credentialRecords = await this.queryCredentialForPresentationDefinition(agentContext, dcqlQuery) + + const mappedCredentials: DcqlCredentialRepresentation[] = credentialRecords.map((record) => { + if (record.type === 'MdocRecord') { + return { + docType: record.getTags().docType, + namespaces: Mdoc.fromBase64Url(record.base64Url).issuerSignedNamespaces, + } satisfies DcqlMdocRepresentation + } else if (record.type === 'SdJwtVcRecord') { + return { + vct: record.getTags().vct, + claims: this.getSdJwtVcApi(agentContext).fromCompact(record.compactSdJwtVc) + .prettyClaims as DcqlSdJwtVcRepresentation.Claims, + } satisfies DcqlSdJwtVcRepresentation + } else { + // TODO: + throw new DcqlError('W3C credentials are not supported yet') + } + }) + + const queryResult = DcqlQuery.query(dcqlQuery, mappedCredentials) + const matchesWithRecord = Object.fromEntries( + Object.entries(queryResult.credential_matches).map(([credential_query_id, result]) => { + return [credential_query_id, { ...result, record: credentialRecords[result.credential_index] }] + }) + ) + + return { + ...queryResult, + credential_matches: matchesWithRecord, + } + } + + /** + * Selects the credentials to use based on the output from `getCredentialsForRequest` + * Use this method if you don't want to manually select the credentials yourself. + */ + public selectCredentialsForRequest(dcqlQueryResult: DcqlQueryResult): DcqlCredentialsForRequest { + if (!dcqlQueryResult.canBeSatisfied) { + throw new DcqlError( + 'Cannot select the credentials for the dcql query presentation if the request cannot be satisfied' + ) + } + + const credentials: DcqlCredentialsForRequest = {} + + if (dcqlQueryResult.credential_sets) { + for (const credentialSet of dcqlQueryResult.credential_sets) { + // undefined defaults to true + if (credentialSet.required === false) continue + const firstFullFillableOption = credentialSet.options.find((option) => + option.every((credential_id) => dcqlQueryResult.credential_matches[credential_id].success) + ) + + if (!firstFullFillableOption) { + throw new DcqlError('Invalid dcql query result. No option is fullfillable') + } + + for (const credentialQueryId of firstFullFillableOption) { + const credential = dcqlQueryResult.credential_matches[credentialQueryId] + + if (credential.success && credential.record.type === 'MdocRecord' && 'namespaces' in credential.output) { + credentials[credentialQueryId] = { + credentialRecord: credential.record, + disclosedPayload: credential.output.namespaces, + } + } else if (credential.success && credential.record.type !== 'MdocRecord' && 'claims' in credential.output) { + credentials[credentialQueryId] = { + credentialRecord: credential.record, + disclosedPayload: credential.output.claims, + } + } else { + throw new DcqlError('Invalid dcql query result. Cannot auto-select credentials') + } + } + } + } else { + for (const credentialQuery of dcqlQueryResult.credentials) { + const credential = dcqlQueryResult.credential_matches[credentialQuery.id] + if (credential.success && credential.record.type === 'MdocRecord' && 'namespaces' in credential.output) { + credentials[credentialQuery.id] = { + credentialRecord: credential.record, + disclosedPayload: credential.output.namespaces, + } + } else if (credential.success && credential.record.type !== 'MdocRecord' && 'claims' in credential.output) { + credentials[credentialQuery.id] = { + credentialRecord: credential.record, + disclosedPayload: credential.output.claims, + } + } else { + throw new DcqlError('Invalid dcql query result. Cannot auto-select credentials') + } + } + } + + return credentials + } + + public validateDcqlQuery(dcqlQuery: DcqlQuery.Input | DcqlQuery) { + return DcqlQuery.parse(dcqlQuery) + } + + // TODO: this IS WRONG + private createPresentationFrame(obj: Record): IPresentationFrame { + const frame: IPresentationFrame = {} + + for (const [key, value] of Object.entries(obj)) { + if (typeof value === 'object' && value !== null) { + frame[key] = true + } else { + frame[key] = !!value + } + } + + return frame + } + + public async createPresentationRecord( + agentContext: AgentContext, + options: { + credentialQueryToCredential: DcqlCredentialsForRequest + challenge: string + domain?: string + openid4vp?: Omit + } + ): Promise { + const { domain, challenge, openid4vp } = options + + const presentationRecord: DcqlPresentationRecord = {} + + const presentationsToCreate = dcqlGetPresentationsToCreate(options.credentialQueryToCredential) + for (const [credentialQueryId, presentationToCreate] of Object.entries(presentationsToCreate)) { + if (presentationToCreate.claimFormat === ClaimFormat.MsoMdoc) { + const mdocRecord = presentationToCreate.credentialRecord + if (!openid4vp) { + throw new DcqlError('Missing openid4vp options for creating MDOC presentation.') + } + + if (!domain) { + throw new DcqlError('Missing domain property for creating MDOC presentation.') + } + + const { deviceResponseBase64Url } = await MdocDeviceResponse.createOpenId4VpDcqlDeviceResponse(agentContext, { + mdoc: Mdoc.fromBase64Url(mdocRecord.base64Url), + docRequest: { + itemsRequestData: { + docType: mdocRecord.getTags().docType, + nameSpaces: Object.fromEntries( + Object.entries(presentationToCreate.disclosedPayload).map(([key, value]) => { + return [key, Object.fromEntries(Object.entries(value).map(([key]) => [key, true]))] + }) + ), + }, + }, + sessionTranscriptOptions: { + ...openid4vp, + clientId: domain, + verifierGeneratedNonce: challenge, + }, + }) + + presentationRecord[credentialQueryId] = MdocDeviceResponse.fromBase64Url(deviceResponseBase64Url) + } else if (presentationToCreate.claimFormat === ClaimFormat.SdJwtVc) { + const presentationFrame = this.createPresentationFrame(presentationToCreate.disclosedPayload) + + if (!domain) { + throw new DcqlError('Missing domain property for creating SdJwtVc presentation.') + } + + const sdJwtVcApi = this.getSdJwtVcApi(agentContext) + const presentation = await sdJwtVcApi.present({ + compactSdJwtVc: presentationToCreate.credentialRecord.compactSdJwtVc, + presentationFrame, + verifierMetadata: { + audience: domain, + nonce: challenge, + issuedAt: Math.floor(Date.now() / 1000), + }, + }) + + presentationRecord[credentialQueryId] = sdJwtVcApi.fromCompact(presentation) + } else { + throw new DcqlError('Only MDOC presentations are supported') + } + } + + return presentationRecord + } + + public async getEncodedPresentationRecord(presentationRecord: DcqlPresentationRecord) { + return Object.fromEntries( + Object.entries(presentationRecord).map(([key, value]) => { + if (value instanceof MdocDeviceResponse) { + return [key, value.base64Url] + } else if (value instanceof W3cJsonLdVerifiablePresentation) { + return [key, value.toJson()] + } else if (value instanceof W3cJwtVerifiablePresentation) { + return [key, value.encoded] + } else { + return [key, value.compact] + } + }) + ) + } + + private getSdJwtVcApi(agentContext: AgentContext) { + return agentContext.dependencyManager.resolve(SdJwtVcApi) + } + + private getMdocApi(agentContext: AgentContext) { + return agentContext.dependencyManager.resolve(MdocApi) + } +} diff --git a/packages/core/src/modules/dcql/index.ts b/packages/core/src/modules/dcql/index.ts new file mode 100644 index 0000000000..2e75334382 --- /dev/null +++ b/packages/core/src/modules/dcql/index.ts @@ -0,0 +1,5 @@ +export * from './DcqlError' +export * from './DcqlModule' +export * from './DcqlService' +export * from './utils' +export * from './models' diff --git a/packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts b/packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts new file mode 100644 index 0000000000..0c9b99690e --- /dev/null +++ b/packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts @@ -0,0 +1,20 @@ +import type { JsonObject } from '../../../types' +import type { MdocRecord } from '../../mdoc' +import type { SdJwtVcRecord } from '../../sd-jwt-vc' +import type { W3cCredentialRecord } from '../../vc' +import type { MdocNameSpaces } from '@animo-id/mdoc' + +/** + * Mapping of credential query IDs to the selected credential record and the disclosed payload. + */ +export type DcqlCredentialsForRequest = Record< + string, + | { + credentialRecord: MdocRecord + disclosedPayload: MdocNameSpaces + } + | { + credentialRecord: W3cCredentialRecord | SdJwtVcRecord + disclosedPayload: JsonObject + } +> diff --git a/packages/core/src/modules/dcql/models/index.ts b/packages/core/src/modules/dcql/models/index.ts new file mode 100644 index 0000000000..2797ee579c --- /dev/null +++ b/packages/core/src/modules/dcql/models/index.ts @@ -0,0 +1,22 @@ +export * from './DcqlCredentialsForRequest' +import type { VerifiablePresentation } from '../../dif-presentation-exchange' +import type { MdocRecord } from '../../mdoc' +import type { SdJwtVcRecord } from '../../sd-jwt-vc' +import type { W3cCredentialRecord } from '../../vc' +import type { + DcqlQueryResult as InternalDcqlQueryResult, + DcqlPresentationRecord as _DcqlPresentationRecord, +} from 'dcql' + +export type { DcqlQuery, DcqlCredentialRepresentation, DcqlMdocRepresentation, DcqlSdJwtVcRepresentation } from 'dcql' + +export type DcqlMatchWithRecord = InternalDcqlQueryResult.CredentialMatch & { + record: W3cCredentialRecord | SdJwtVcRecord | MdocRecord +} + +export type DcqlQueryResult = Omit & { + credential_matches: Record +} + +export type DcqlEncodedPresentationRecord = _DcqlPresentationRecord +export type DcqlPresentationRecord = Record diff --git a/packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts b/packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts new file mode 100644 index 0000000000..db109d5d7a --- /dev/null +++ b/packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts @@ -0,0 +1,78 @@ +import type { SdJwtVcRecord } from '../../sd-jwt-vc' +import type { DcqlCredentialsForRequest } from '../models' +import type { DcqlSdJwtVcRepresentation, DcqlW3cVcRepresentation, DcqlMdocRepresentation } from 'dcql' + +import { MdocRecord } from '../../mdoc' +import { W3cCredentialRecord, ClaimFormat } from '../../vc' + +// - the credentials included in the presentation +export interface DcqlSdJwtVcPresentationToCreate { + claimFormat: ClaimFormat.SdJwtVc + subjectIds: [] // subject is included in the cnf of the sd-jwt and automatically extracted by PEX + credentialRecord: SdJwtVcRecord + disclosedPayload: DcqlSdJwtVcRepresentation.Claims +} + +export interface DcqlJwtVpPresentationToCreate { + claimFormat: ClaimFormat.JwtVp + subjectIds: [string] // only one subject id supported for JWT VP + credentialRecord: W3cCredentialRecord + disclosedPayload: DcqlW3cVcRepresentation.Claims +} + +export interface DcqlLdpVpPresentationToCreate { + claimFormat: ClaimFormat.LdpVp + // NOTE: we only support one subject id at the moment as we don't have proper + // support yet for adding multiple proofs to an LDP-VP + subjectIds: undefined | [string] + credentialRecord: W3cCredentialRecord + disclosedPayload: DcqlW3cVcRepresentation.Claims +} + +export interface DcqlMdocPresentationToCreate { + claimFormat: ClaimFormat.MsoMdoc + subjectIds: [] + credentialRecord: MdocRecord + disclosedPayload: DcqlMdocRepresentation.NameSpaces +} + +export type DcqlPresentationToCreate = Record< + string, + | DcqlSdJwtVcPresentationToCreate + | DcqlJwtVpPresentationToCreate + | DcqlLdpVpPresentationToCreate + | DcqlMdocPresentationToCreate +> + +export function dcqlGetPresentationsToCreate( + credentialsForInputDescriptor: DcqlCredentialsForRequest +): DcqlPresentationToCreate { + const presentationsToCreate: DcqlPresentationToCreate = {} + for (const [credentialQueryId, match] of Object.entries(credentialsForInputDescriptor)) { + if (match.credentialRecord instanceof W3cCredentialRecord) { + presentationsToCreate[credentialQueryId] = { + claimFormat: + match.credentialRecord.credential.claimFormat === ClaimFormat.JwtVc ? ClaimFormat.JwtVp : ClaimFormat.LdpVp, + subjectIds: [match.credentialRecord.credential.credentialSubjectIds[0]], + credentialRecord: match.credentialRecord, + disclosedPayload: match.disclosedPayload as DcqlW3cVcRepresentation.Claims, + } + } else if (match.credentialRecord instanceof MdocRecord) { + presentationsToCreate[credentialQueryId] = { + claimFormat: ClaimFormat.MsoMdoc, + subjectIds: [], + credentialRecord: match.credentialRecord, + disclosedPayload: match.disclosedPayload as DcqlMdocRepresentation.NameSpaces, + } + } else { + presentationsToCreate[credentialQueryId] = { + claimFormat: ClaimFormat.SdJwtVc, + subjectIds: [], + credentialRecord: match.credentialRecord, + disclosedPayload: match.disclosedPayload as DcqlW3cVcRepresentation.Claims, + } + } + } + + return presentationsToCreate +} diff --git a/packages/core/src/modules/dcql/utils/index.ts b/packages/core/src/modules/dcql/utils/index.ts new file mode 100644 index 0000000000..353410330d --- /dev/null +++ b/packages/core/src/modules/dcql/utils/index.ts @@ -0,0 +1 @@ +export * from './DcqlPresentationsToCreate' diff --git a/packages/core/src/modules/mdoc/MdocDeviceResponse.ts b/packages/core/src/modules/mdoc/MdocDeviceResponse.ts index a91931e095..a0edce5e60 100644 --- a/packages/core/src/modules/mdoc/MdocDeviceResponse.ts +++ b/packages/core/src/modules/mdoc/MdocDeviceResponse.ts @@ -1,4 +1,10 @@ -import type { MdocDeviceResponseOpenId4VpOptions, MdocDeviceResponseVerifyOptions } from './MdocOptions' +import type { + MdocDcqlDeviceResponseOpenId4VpOptions, + MdocDeviceResponseOpenId4VpOptions, + MdocDeviceResponseVerifyOptions, + MdocDocRequest, + MdocOpenId4VpSessionTranscriptOptions, +} from './MdocOptions' import type { AgentContext } from '../../agent' import type { DifPresentationExchangeDefinition } from '../dif-presentation-exchange' import type { PresentationDefinition } from '@animo-id/mdoc' @@ -14,6 +20,7 @@ import { MDocStatus, cborEncode, parseDeviceResponse, + DeviceRequest, } from '@animo-id/mdoc' import { CredoError } from '../../error' @@ -150,14 +157,17 @@ export class MdocDeviceResponse { return disclosedPayloadAsRecord } - public static async createOpenId4VpDeviceResponse( + private static async createDeviceResponse( agentContext: AgentContext, - options: MdocDeviceResponseOpenId4VpOptions + options: { + mdocs: Mdoc[] + deviceNameSpaces?: Record> + sessionTranscriptOptions: MdocOpenId4VpSessionTranscriptOptions + presentationDefinition?: PresentationDefinition + docRequests?: MdocDocRequest[] + } ) { const { sessionTranscriptOptions } = options - const presentationDefinition = this.partitionPresentationDefinition( - options.presentationDefinition - ).mdocPresentationDefinition const issuerSignedDocuments = options.mdocs.map((mdoc) => parseIssuerSigned(TypedArrayEncoder.fromBase64(mdoc.base64Url), mdoc.docType) @@ -175,18 +185,51 @@ export class MdocDeviceResponse { const publicDeviceJwk = COSEKey.import(deviceKeyInfo.deviceKey).toJWK() const deviceResponseBuilder = await DeviceResponse.from(mdoc) - .usingPresentationDefinition(presentationDefinition) .usingSessionTranscriptForOID4VP(sessionTranscriptOptions) .authenticateWithSignature(publicDeviceJwk, 'ES256') + if (options.presentationDefinition) { + deviceResponseBuilder.usingPresentationDefinition(options.presentationDefinition) + } else if (options.docRequests) { + const deviceRequest = DeviceRequest.from('1.0', options.docRequests) + deviceResponseBuilder.usingDeviceRequest(deviceRequest) + } + for (const [nameSpace, nameSpaceValue] of Object.entries(options.deviceNameSpaces ?? {})) { deviceResponseBuilder.addDeviceNameSpace(nameSpace, nameSpaceValue) } const deviceResponseMdoc = await deviceResponseBuilder.sign(getMdocContext(agentContext)) + return { deviceResponseBase64Url: TypedArrayEncoder.toBase64URL(deviceResponseMdoc.encode()) } + } + + public static async createOpenId4VpDcqlDeviceResponse( + agentContext: AgentContext, + options: MdocDcqlDeviceResponseOpenId4VpOptions + ) { + return this.createDeviceResponse(agentContext, { + ...options, + docRequests: [options.docRequest], + mdocs: [options.mdoc], + }) + } + + public static async createOpenId4VpDeviceResponse( + agentContext: AgentContext, + options: MdocDeviceResponseOpenId4VpOptions + ) { + const presentationDefinition = this.partitionPresentationDefinition( + options.presentationDefinition + ).mdocPresentationDefinition + + const { deviceResponseBase64Url } = await this.createDeviceResponse(agentContext, { + ...options, + presentationDefinition, + }) + return { - deviceResponseBase64Url: TypedArrayEncoder.toBase64URL(deviceResponseMdoc.encode()), + deviceResponseBase64Url, presentationSubmission: MdocDeviceResponse.createPresentationSubmission({ id: 'MdocPresentationSubmission ' + uuid(), presentationDefinition, diff --git a/packages/core/src/modules/mdoc/MdocOptions.ts b/packages/core/src/modules/mdoc/MdocOptions.ts index db43969be1..c68cc49f24 100644 --- a/packages/core/src/modules/mdoc/MdocOptions.ts +++ b/packages/core/src/modules/mdoc/MdocOptions.ts @@ -32,6 +32,20 @@ export type MdocDeviceResponseOpenId4VpOptions = { sessionTranscriptOptions: MdocOpenId4VpSessionTranscriptOptions } +export type MdocDocRequest = { + itemsRequestData: { + docType: string + nameSpaces: Record> + } +} + +export type MdocDcqlDeviceResponseOpenId4VpOptions = { + mdoc: Mdoc + docRequest: MdocDocRequest + deviceNameSpaces?: MdocNameSpaces + sessionTranscriptOptions: MdocOpenId4VpSessionTranscriptOptions +} + export type MdocDeviceResponseVerifyOptions = { trustedCertificates?: [string, ...string[]] sessionTranscriptOptions: MdocOpenId4VpSessionTranscriptOptions diff --git a/packages/openid4vc/package.json b/packages/openid4vc/package.json index 1166574152..4f62e9e700 100644 --- a/packages/openid4vc/package.json +++ b/packages/openid4vc/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@credo-ts/core": "workspace:*", - "@sphereon/did-auth-siop": "0.16.1-fix.173", + "@sphereon/did-auth-siop": "link:/Users/martinauer/Documents/Code/OID4VC/packages/siop-oid4vp", "@sphereon/oid4vc-common": "0.16.1-fix.173", "@sphereon/ssi-types": "0.30.2-next.135", "class-transformer": "^0.5.1", diff --git a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts index 122916e4b3..730cbe4b4a 100644 --- a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts +++ b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts @@ -7,6 +7,7 @@ import type { AgentContext, JwkJson, VerifiablePresentation } from '@credo-ts/co import type { AuthorizationResponsePayload, PresentationExchangeResponseOpts, + DcqlQueryResponseOpts, RequestObjectPayload, VerifiedAuthorizationRequest, } from '@sphereon/did-auth-siop' @@ -26,6 +27,7 @@ import { injectable, parseDid, MdocDeviceResponse, + DcqlService, } from '@credo-ts/core' import { OP, ResponseIss, ResponseMode, ResponseType, SupportedVersion, VPTokenLocation } from '@sphereon/did-auth-siop' @@ -34,7 +36,10 @@ import { getCreateJwtCallback, getVerifyJwtCallback, openIdTokenIssuerToJwtIssue @injectable() export class OpenId4VcSiopHolderService { - public constructor(private presentationExchangeService: DifPresentationExchangeService) {} + public constructor( + private presentationExchangeService: DifPresentationExchangeService, + private dcqlService: DcqlService + ) {} public async resolveAuthorizationRequest( agentContext: AgentContext, @@ -58,6 +63,7 @@ export class OpenId4VcSiopHolderService { } const presentationDefinition = verifiedAuthorizationRequest.presentationDefinitions?.[0]?.definition + const dcqlQuery = verifiedAuthorizationRequest.dcqlQuery return { authorizationRequest: verifiedAuthorizationRequest, @@ -72,6 +78,12 @@ export class OpenId4VcSiopHolderService { ), } : undefined, + + dcql: dcqlQuery + ? { + queryResult: await this.dcqlService.getCredentialsForRequest(agentContext, dcqlQuery), + } + : undefined, } } @@ -79,21 +91,18 @@ export class OpenId4VcSiopHolderService { agentContext: AgentContext, options: OpenId4VcSiopAcceptAuthorizationRequestOptions ) { - const { authorizationRequest, presentationExchange } = options + const { authorizationRequest, presentationExchange, dcql } = options let openIdTokenIssuer = options.openIdTokenIssuer let presentationExchangeOptions: PresentationExchangeResponseOpts | undefined = undefined + let dcqlOptions: DcqlQueryResponseOpts | undefined = undefined const wantsIdToken = await authorizationRequest.authorizationRequest.containsResponseType(ResponseType.ID_TOKEN) const authorizationResponseNonce = await agentContext.wallet.generateNonce() - // Handle presentation exchange part - if (authorizationRequest.presentationDefinitions && authorizationRequest.presentationDefinitions.length > 0) { - if (!presentationExchange) { - throw new CredoError( - 'Authorization request included presentation definition. `presentationExchange` MUST be supplied to accept authorization requests.' - ) - } - + if ( + (authorizationRequest.presentationDefinitions && authorizationRequest.presentationDefinitions.length > 0) || + authorizationRequest.dcqlQuery + ) { const nonce = await authorizationRequest.authorizationRequest.getMergedProperty('nonce') if (!nonce) { throw new CredoError("Unable to extract 'nonce' from authorization request") @@ -111,27 +120,65 @@ export class OpenId4VcSiopHolderService { throw new CredoError("Unable to extract 'response_uri' from authorization request") } - const { verifiablePresentations, presentationSubmission } = - await this.presentationExchangeService.createPresentation(agentContext, { - credentialsForInputDescriptor: presentationExchange.credentials, - presentationDefinition: authorizationRequest.presentationDefinitions[0].definition, + if (authorizationRequest.presentationDefinitions && authorizationRequest.presentationDefinitions.length > 0) { + if (!presentationExchange) { + throw new CredoError( + 'Authorization request included presentation definition. `presentationExchange` MUST be supplied to accept authorization requests.' + ) + } + + const { verifiablePresentations, presentationSubmission } = + await this.presentationExchangeService.createPresentation(agentContext, { + credentialsForInputDescriptor: presentationExchange.credentials, + presentationDefinition: authorizationRequest.presentationDefinitions[0].definition, + challenge: nonce, + domain: clientId, + presentationSubmissionLocation: DifPresentationExchangeSubmissionLocation.EXTERNAL, + openid4vp: { + mdocGeneratedNonce: authorizationResponseNonce, + responseUri, + }, + }) + + if (wantsIdToken && !openIdTokenIssuer) { + openIdTokenIssuer = this.getOpenIdTokenIssuerFromVerifiablePresentation(verifiablePresentations[0]) + } + + presentationExchangeOptions = { + verifiablePresentations: verifiablePresentations.map((vp) => getSphereonVerifiablePresentation(vp)), + presentationSubmission, + vpTokenLocation: VPTokenLocation.AUTHORIZATION_RESPONSE, + } + } else { + if (!dcql) { + throw new CredoError( + 'Authorization request included dcql query. `dcql` MUST be supplied to accept authorization requests.' + ) + } + + const presentationRecord = await this.dcqlService.createPresentationRecord(agentContext, { + credentialQueryToCredential: dcql.credentials, challenge: nonce, domain: clientId, - presentationSubmissionLocation: DifPresentationExchangeSubmissionLocation.EXTERNAL, openid4vp: { mdocGeneratedNonce: authorizationResponseNonce, responseUri, }, }) - presentationExchangeOptions = { - verifiablePresentations: verifiablePresentations.map((vp) => getSphereonVerifiablePresentation(vp)), - presentationSubmission, - vpTokenLocation: VPTokenLocation.AUTHORIZATION_RESPONSE, - } + dcqlOptions = { + encodedPresentationRecord: await this.dcqlService.getEncodedPresentationRecord(presentationRecord), + } + + if (wantsIdToken && !openIdTokenIssuer) { + const nonMdocPresentation = Object.values(presentationRecord).find( + (presentation) => presentation instanceof MdocDeviceResponse === false + ) - if (wantsIdToken && !openIdTokenIssuer) { - openIdTokenIssuer = this.getOpenIdTokenIssuerFromVerifiablePresentation(verifiablePresentations[0]) + if (nonMdocPresentation) { + openIdTokenIssuer = this.getOpenIdTokenIssuerFromVerifiablePresentation(nonMdocPresentation) + } + } } } else if (options.presentationExchange) { throw new CredoError( @@ -160,6 +207,7 @@ export class OpenId4VcSiopHolderService { { jwtIssuer, presentationExchange: presentationExchangeOptions, + dcqlQuery: dcqlOptions, // https://openid.net/specs/openid-connect-self-issued-v2-1_0.html#name-aud-of-a-request-object audience: authorizationRequest.authorizationRequestPayload.client_id, } diff --git a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.ts b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.ts index 3260d01f75..dd6f2ffbb9 100644 --- a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.ts +++ b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderServiceOptions.ts @@ -3,6 +3,8 @@ import type { DifPexCredentialsForRequest, DifPexInputDescriptorToCredentials, DifPresentationExchangeDefinition, + DcqlQueryResult, + DcqlCredentialsForRequest, } from '@credo-ts/core' export interface OpenId4VcSiopResolvedAuthorizationRequest { @@ -15,6 +17,10 @@ export interface OpenId4VcSiopResolvedAuthorizationRequest { credentialsForRequest: DifPexCredentialsForRequest } + dcql?: { + queryResult: DcqlQueryResult + } + /** * The verified authorization request. */ @@ -30,6 +36,14 @@ export interface OpenId4VcSiopAcceptAuthorizationRequestOptions { credentials: DifPexInputDescriptorToCredentials } + /** + * Parameters related to Dcql. MUST be present when the resolved + * authorization request included a `dcql` parameter. + */ + dcql?: { + credentials: DcqlCredentialsForRequest + } + /** * The issuer of the ID Token. * diff --git a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts index 9f31ff5771..98a3ce4ee6 100644 --- a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts +++ b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts @@ -3,6 +3,7 @@ import type { OpenId4VcSiopCreateAuthorizationRequestReturn, OpenId4VcSiopCreateVerifierOptions, OpenId4VcSiopVerifiedAuthorizationResponse, + OpenId4VcSiopVerifiedAuthorizationResponseDcql, OpenId4VcSiopVerifyAuthorizationResponseOptions, ResponseMode, } from './OpenId4VcSiopVerifierServiceOptions' @@ -10,6 +11,7 @@ import type { OpenId4VcVerificationSessionRecord } from './repository' import type { OpenId4VcSiopAuthorizationResponsePayload } from '../shared' import type { AgentContext, + DcqlQuery, DifPresentationExchangeDefinition, JwkJson, Query, @@ -58,7 +60,10 @@ import { RP, SupportedVersion, } from '@sphereon/did-auth-siop' -import { extractPresentationsFromVpToken } from '@sphereon/did-auth-siop/dist/authorization-response/OpenID4VP' +import { + extractPresentationRecordFromDcqlVpToken, + extractPresentationsFromVpToken, +} from '@sphereon/did-auth-siop/dist/authorization-response/OpenID4VP' import { filter, first, firstValueFrom, map, timeout } from 'rxjs' import { storeActorIdForContextCorrelationId } from '../shared/router' @@ -151,6 +156,7 @@ export class OpenId4VcSiopVerifierService { const relyingParty = await this.getRelyingParty(agentContext, options.verifier, { presentationDefinition: options.presentationExchange?.definition, + dcqlQuery: options.dcql?.query, authorizationResponseUrl, clientId, clientIdScheme, @@ -200,7 +206,7 @@ export class OpenId4VcSiopVerifierService { // NOTE: it's not possible to set the uri scheme when using the RP to create an auth request, only lower level // functions allow this. So we need to replace the uri scheme manually. let authorizationRequestUri = (await authorizationRequest.uri()).encodedUri - if (options.presentationExchange && !options.idToken) { + if ((options.presentationExchange || options.dcql) && !options.idToken) { authorizationRequestUri = authorizationRequestUri.replace('openid://', 'openid4vp://') } else { authorizationRequestUri = authorizationRequestUri.replace('openid4vp://', 'openid://') @@ -236,6 +242,7 @@ export class OpenId4VcSiopVerifierService { const requestState = await authorizationRequest.getMergedProperty('state') const responseUri = await authorizationRequest.getMergedProperty('response_uri') const presentationDefinitionsWithLocation = await authorizationRequest.getPresentationDefinitions() + const dcqlQuery = await authorizationRequest.getDcqlQuery() if (!requestNonce || !requestClientId || !requestState) { throw new CredoError( @@ -250,6 +257,7 @@ export class OpenId4VcSiopVerifierService { const relyingParty = await this.getRelyingParty(agentContext, verifier, { presentationDefinition: presentationDefinitionsWithLocation?.[0]?.definition, + dcqlQuery, authorizationResponseUrl, clientId: requestClientId, }) @@ -287,6 +295,7 @@ export class OpenId4VcSiopVerifierService { correlationId: options.verificationSession.id, state: requestState, presentationDefinitions: presentationDefinitionsWithLocation, + dcqlQuery, verification: { presentationVerificationCallback: this.getPresentationVerificationCallback(agentContext, { correlationId: options.verificationSession.id, @@ -360,13 +369,29 @@ export class OpenId4VcSiopVerifierService { } } - if (!idToken && !presentationExchange) { + let dcql: OpenId4VcSiopVerifiedAuthorizationResponseDcql | undefined = undefined + const dcqlQuery = await authorizationRequest.getDcqlQuery() + if (dcqlQuery) { + const dcqlQueryVpToken = authorizationResponse.payload.vp_token + const presentationRecord = Object.fromEntries( + Object.entries( + extractPresentationRecordFromDcqlVpToken(dcqlQueryVpToken as string, { hasher: Hasher.hash }) + ).map(([key, value]) => { + return [key, getVerifiablePresentationFromSphereonWrapped(value)] + }) + ) + + dcql = { query: dcqlQuery, presentationRecord } + } + + if (!idToken && !(presentationExchange || dcqlQuery)) { throw new CredoError('No idToken or presentationExchange found in the response.') } return { idToken, presentationExchange, + dcql, } } @@ -475,6 +500,7 @@ export class OpenId4VcSiopVerifierService { { idToken, presentationDefinition, + dcqlQuery, clientId, clientIdScheme, authorizationResponseUrl, @@ -483,6 +509,7 @@ export class OpenId4VcSiopVerifierService { responseMode?: ResponseMode idToken?: boolean presentationDefinition?: DifPresentationExchangeDefinition + dcqlQuery?: DcqlQuery clientId: string authorizationResponseUrl: string clientIdScheme?: ClientIdScheme @@ -497,13 +524,13 @@ export class OpenId4VcSiopVerifierService { const builder = RP.builder() const responseTypes: ResponseType[] = [] - if (!presentationDefinition && idToken === false) { + if (!(presentationDefinition && dcqlQuery) && idToken === false) { throw new CredoError('Either `presentationExchange` or `idToken` must be enabled') } - if (presentationDefinition) { + if (presentationDefinition || dcqlQuery) { responseTypes.push(ResponseType.VP_TOKEN) } - if (idToken === true || !presentationDefinition) { + if (idToken === true || !(presentationDefinition || dcqlQuery)) { responseTypes.push(ResponseType.ID_TOKEN) } @@ -612,6 +639,9 @@ export class OpenId4VcSiopVerifierService { if (presentationDefinition) { builder.withPresentationDefinition({ definition: presentationDefinition }, [PropertyTarget.REQUEST_OBJECT]) } + if (dcqlQuery) { + builder.withDcqlQuery(JSON.stringify(dcqlQuery)) + } if (responseTypes.includes(ResponseType.ID_TOKEN)) { builder.withScope('openid') } diff --git a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts index b0a3d87818..5e9d2e259e 100644 --- a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts +++ b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts @@ -10,6 +10,8 @@ import type { DifPresentationExchangeSubmission, DifPresentationExchangeDefinitionV2, VerifiablePresentation, + DcqlQuery, + DcqlPresentationRecord, DifPexPresentationWithDescriptor, } from '@credo-ts/core' @@ -39,6 +41,13 @@ export interface OpenId4VcSiopCreateAuthorizationRequestOptions { definition: DifPresentationExchangeDefinitionV2 } + /** + * A Digital Credentials Query Language (DCQL) can be provided to request the presentation of a Verifiable Credentials. + */ + dcql?: { + query: DcqlQuery + } + /** * The response mode to use for the authorization request. * @default to `direct_post`. @@ -69,6 +78,11 @@ export interface OpenId4VcSiopVerifiedAuthorizationResponsePresentationExchange descriptors: DifPexPresentationWithDescriptor[] } +export interface OpenId4VcSiopVerifiedAuthorizationResponseDcql { + query: DcqlQuery + presentationRecord: DcqlPresentationRecord +} + /** * Either `idToken` and/or `presentationExchange` will be present. */ @@ -78,6 +92,8 @@ export interface OpenId4VcSiopVerifiedAuthorizationResponse { } presentationExchange?: OpenId4VcSiopVerifiedAuthorizationResponsePresentationExchange + + dcql?: OpenId4VcSiopVerifiedAuthorizationResponseDcql } /** diff --git a/packages/openid4vc/tests/openid4vc.e2e.test.ts b/packages/openid4vc/tests/openid4vc.e2e.test.ts index 12c7dff9fb..f0aa9c60a1 100644 --- a/packages/openid4vc/tests/openid4vc.e2e.test.ts +++ b/packages/openid4vc/tests/openid4vc.e2e.test.ts @@ -2,7 +2,14 @@ import type { AgentType, TenantType } from './utils' import type { OpenId4VciSignMdocCredentials } from '../src' import type { OpenId4VciCredentialBindingResolver } from '../src/openid4vc-holder' import type { AuthorizationServerMetadata } from '@animo-id/oauth2' -import type { DifPresentationExchangeDefinitionV2, JwkJson, Mdoc, MdocDeviceResponse, SdJwtVc } from '@credo-ts/core' +import type { + DcqlQuery, + DifPresentationExchangeDefinitionV2, + JwkJson, + Mdoc, + SdJwtVc, + MdocDeviceResponse, +} from '@credo-ts/core' import type { Server } from 'http' import { @@ -36,6 +43,9 @@ import { Hasher, JwsService, JwtPayload, + SdJwtVcRecord, + MdocRecord, + DcqlService, } from '@credo-ts/core' import express, { type Express } from 'express' @@ -46,6 +56,7 @@ import { OpenId4VcHolderModule, OpenId4VcIssuanceSessionState, OpenId4VcIssuerModule, + OpenId4VcVerificationSessionRepository, OpenId4VcVerificationSessionState, OpenId4VcVerifierModule, } from '../src' @@ -2199,6 +2210,240 @@ describe('OpenId4Vc', () => { }) }) + it('e2e flow with verifier endpoints verifying a mdoc and sd-jwt (jarm) (dcql)', async () => { + const openIdVerifier = await verifier.agent.modules.openId4VcVerifier.createVerifier() + + const signedSdJwtVc = await issuer.agent.sdJwtVc.sign({ + holder: { method: 'did', didUrl: holder.kid }, + issuer: { + method: 'did', + didUrl: issuer.kid, + }, + payload: { + vct: 'OpenBadgeCredential', + university: 'innsbruck', + degree: 'bachelor', + name: 'John Doe', + }, + disclosureFrame: { + _sd: ['university', 'name'], + }, + }) + await holder.agent.sdJwtVc.store(signedSdJwtVc.compact) + + const selfSignedCertificate = await X509Service.createSelfSignedCertificate(issuer.agent.context, { + key: await issuer.agent.context.wallet.createKey({ keyType: KeyType.P256 }), + extensions: [], + name: 'C=DE', + }) + + await verifier.agent.x509.setTrustedCertificates([selfSignedCertificate.toString('pem')]) + + const parsedDid = parseDid(issuer.kid) + if (!parsedDid.fragment) { + throw new Error(`didUrl '${parsedDid.didUrl}' does not contain a '#'. Unable to derive key from did document.`) + } + + const holderKey = await holder.agent.context.wallet.createKey({ keyType: KeyType.P256 }) + + const signedMdoc = await issuer.agent.mdoc.sign({ + docType: 'org.eu.university', + holderKey, + issuerCertificate: selfSignedCertificate.toString('pem'), + namespaces: { + 'eu.europa.ec.eudi.pid.1': { + university: 'innsbruck', + degree: 'bachelor', + name: 'John Doe', + not: 'disclosed', + }, + }, + }) + + const certificate = await verifier.agent.x509.createSelfSignedCertificate({ + key: await verifier.agent.wallet.createKey({ keyType: KeyType.Ed25519 }), + extensions: [[{ type: 'dns', value: 'localhost:1234' }]], + }) + + const rawCertificate = certificate.toString('base64') + await holder.agent.mdoc.store(signedMdoc) + + await holder.agent.x509.addTrustedCertificate(rawCertificate) + await verifier.agent.x509.addTrustedCertificate(rawCertificate) + + const dcqlQuery = { + credentials: [ + { + id: 'orgeuuniversity', + format: ClaimFormat.MsoMdoc, + meta: { doctype_value: 'org.eu.university' }, + claims: [ + { namespace: 'eu.europa.ec.eudi.pid.1', claim_name: 'name' }, + { namespace: 'eu.europa.ec.eudi.pid.1', claim_name: 'degree' }, + ], + }, + { + id: 'OpenBadgeCredentialDescriptor', + format: ClaimFormat.SdJwtVc, + meta: { vct_values: ['OpenBadgeCredential'] }, + claims: [{ path: ['university'] }], + }, + ], + } satisfies DcqlQuery + + // Hack to make it work with x5c check + // @ts-expect-error + verifier.agent.modules.openId4VcVerifier.config.options.baseUrl = + // @ts-expect-error + verifier.agent.modules.openId4VcVerifier.config.options.baseUrl.replace('http://', 'https://') + + const { authorizationRequest, verificationSession } = + await verifier.agent.modules.openId4VcVerifier.createAuthorizationRequest({ + responseMode: 'direct_post.jwt', + verifierId: openIdVerifier.verifierId, + requestSigner: { + method: 'x5c', + x5c: [rawCertificate], + issuer: 'https://example.com/hakuna/matadata', + }, + dcql: { query: dcqlQuery }, + }) + + // Hack to make it work with x5c checks + verificationSession.authorizationRequestUri = verificationSession.authorizationRequestUri.replace('https', 'http') + const verificationSessionRepoitory = verifier.agent.dependencyManager.resolve( + OpenId4VcVerificationSessionRepository + ) + await verificationSessionRepoitory.update(verifier.agent.context, verificationSession) + + // Hack to make it work with x5c check + // @ts-expect-error + verifier.agent.modules.openId4VcVerifier.config.options.baseUrl = + // @ts-expect-error + verifier.agent.modules.openId4VcVerifier.config.options.baseUrl.replace('https://', 'http://') + + expect(authorizationRequest.replace('https', 'http')).toEqual( + `openid4vp://?client_id=localhost%3A1234&request_uri=${encodeURIComponent( + verificationSession.authorizationRequestUri + )}` + ) + + const resolvedAuthorizationRequest = await holder.agent.modules.openId4VcHolder.resolveSiopAuthorizationRequest( + // hack to make it work on localhost + authorizationRequest.replace('https', 'http') + ) + + expect(resolvedAuthorizationRequest.dcql).toEqual({ + queryResult: { + credentials: [ + { + id: 'orgeuuniversity', + format: 'mso_mdoc', + claims: [ + { namespace: 'eu.europa.ec.eudi.pid.1', claim_name: 'name' }, + { namespace: 'eu.europa.ec.eudi.pid.1', claim_name: 'degree' }, + ], + meta: { doctype_value: 'org.eu.university' }, + }, + { + id: 'OpenBadgeCredentialDescriptor', + format: 'vc+sd-jwt', + claims: [{ path: ['university'] }], + meta: { vct_values: ['OpenBadgeCredential'] }, + }, + ], + canBeSatisfied: true, + credential_matches: { + orgeuuniversity: { + typed: true, + success: true, + output: { + docType: 'org.eu.university', + namespaces: { + 'eu.europa.ec.eudi.pid.1': { + name: 'John Doe', + degree: 'bachelor', + }, + }, + }, + issues: undefined, + credential_index: 1, + claim_set_index: undefined, + all: expect.any(Array), + record: expect.any(MdocRecord), + }, + OpenBadgeCredentialDescriptor: { + typed: true, + success: true, + output: { + vct: 'OpenBadgeCredential', + claims: { + university: 'innsbruck', + }, + }, + issues: undefined, + credential_index: 0, + claim_set_index: undefined, + all: expect.any(Array), + record: expect.any(SdJwtVcRecord), + }, + }, + credential_sets: undefined, + }, + }) + + if (!resolvedAuthorizationRequest.dcql) { + throw new Error('Dcql not defined') + } + + // TODO: better way to auto-select + const dcqlService = holder.agent.dependencyManager.resolve(DcqlService) + const selectedCredentials = dcqlService.selectCredentialsForRequest(resolvedAuthorizationRequest.dcql.queryResult) + + // Hack to make it work with x5c + resolvedAuthorizationRequest.authorizationRequest.responseURI = + resolvedAuthorizationRequest.authorizationRequest.responseURI?.replace('https', 'http') + + const { serverResponse, submittedResponse } = + await holder.agent.modules.openId4VcHolder.acceptSiopAuthorizationRequest({ + authorizationRequest: resolvedAuthorizationRequest.authorizationRequest, + dcql: { + credentials: selectedCredentials, + }, + }) + + // path_nested should not be used for sd-jwt + expect(submittedResponse.presentation_submission).toBeUndefined() + expect(submittedResponse).toEqual({ state: expect.any(String), vp_token: expect.any(String) }) + expect(serverResponse).toMatchObject({ status: 200 }) + + // The RP MUST validate that the aud (audience) Claim contains the value of the client_id + // that the RP sent in the Authorization Request as an audience. + // When the request has been signed, the value might be an HTTPS URL, or a Decentralized Identifier. + await waitForVerificationSessionRecordSubject(verifier.replaySubject, { + contextCorrelationId: verifier.agent.context.contextCorrelationId, + state: OpenId4VcVerificationSessionState.ResponseVerified, + verificationSessionId: verificationSession.id, + }) + const { idToken, dcql } = await verifier.agent.modules.openId4VcVerifier.getVerifiedAuthorizationResponse( + verificationSession.id + ) + + expect(idToken).toBeUndefined() + const presentation = dcql?.presentationRecord['orgeuuniversity'] as MdocDeviceResponse + expect(presentation.documents).toHaveLength(1) + + const sdJwtPresentation = dcql?.presentationRecord['OpenBadgeCredentialDescriptor'] as SdJwtVc + expect(sdJwtPresentation.prettyClaims).toEqual({ + vct: 'OpenBadgeCredential', + degree: 'bachelor', + cnf: expect.any(Object), + iss: 'did:key:z6MkrzQPBr4pyqC776KKtrz13SchM5ePPbssuPuQZb5t4uKQ', + iat: expect.any(Number), + university: 'innsbruck', // TODO: I Think this should be disclosed + }) + }) + it('e2e flow with verifier endpoints verifying two sd-jwt-vcs with selective disclosure', async () => { const openIdVerifier = await verifier.agent.modules.openId4VcVerifier.createVerifier() diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f686589ffb..6330fc5fd8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,10 +14,10 @@ importers: devDependencies: '@babel/core': specifier: ^7.25.8 - version: 7.25.8 + version: 7.26.0 '@babel/preset-env': specifier: ^7.25.8 - version: 7.25.8(@babel/core@7.25.8) + version: 7.26.0(@babel/core@7.26.0) '@changesets/cli': specifier: ^2.27.5 version: 2.27.7 @@ -92,7 +92,7 @@ importers: version: 4.19.2 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + version: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) nock: specifier: ^14.0.0-beta.16 version: 14.0.0-beta.16 @@ -107,10 +107,10 @@ importers: version: 7.0.0 ts-jest: specifier: ^29.1.2 - version: 29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)))(typescript@5.5.4) + version: 29.2.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)))(typescript@5.5.4) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.18.8)(typescript@5.5.4) + version: 10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4) tsyringe: specifier: ^4.8.0 version: 4.8.0 @@ -119,7 +119,7 @@ importers: version: 5.5.4 undici: specifier: ^6.20.1 - version: 6.20.1 + version: 6.21.0 ws: specifier: ^8.13.0 version: 8.18.0 @@ -171,7 +171,7 @@ importers: version: 1.7.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.18.8)(typescript@5.5.4) + version: 10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4) demo-openid: dependencies: @@ -195,10 +195,10 @@ importers: version: 8.2.6 jose: specifier: ^5.3.0 - version: 5.8.0 + version: 5.9.6 oidc-provider: specifier: ^8.4.6 - version: 8.5.1 + version: 8.6.0 devDependencies: '@credo-ts/askar': specifier: workspace:* @@ -232,10 +232,10 @@ importers: version: 1.7.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.18.8)(typescript@5.5.4) + version: 10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4) tsx: specifier: ^4.11.0 - version: 4.19.0 + version: 4.19.2 packages/action-menu: dependencies: @@ -331,7 +331,7 @@ importers: devDependencies: '@animo-id/expo-secure-environment': specifier: ^0.0.1-alpha.0 - version: 0.0.1-alpha.0(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)))(react-native@0.71.19(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))(react@18.3.1))(react@18.3.1) + version: 0.0.1-alpha.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(react@18.3.1) '@hyperledger/aries-askar-nodejs': specifier: ^0.2.3 version: 0.2.3 @@ -361,7 +361,7 @@ importers: dependencies: '@animo-id/react-native-bbs-signatures': specifier: ^0.1.0 - version: 0.1.0(react-native@0.71.19(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))(react@18.3.1))(react@18.3.1) + version: 0.1.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(react@18.3.1) '@credo-ts/core': specifier: workspace:* version: link:../core @@ -441,13 +441,13 @@ importers: version: 0.2.38 '@digitalcredentials/jsonld': specifier: ^6.0.0 - version: 6.0.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + version: 6.0.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/jsonld-signatures': specifier: ^9.4.0 - version: 9.4.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + version: 9.4.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/vc': specifier: ^6.0.1 - version: 6.0.1(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + version: 6.0.1(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) '@multiformats/base-x': specifier: ^4.0.1 version: 4.0.1 @@ -520,6 +520,9 @@ importers: class-validator: specifier: 0.14.1 version: 0.14.1 + dcql: + specifier: ^0.2.8 + version: 0.2.8(typescript@5.5.4) did-resolver: specifier: ^4.1.0 version: 4.1.0 @@ -733,11 +736,11 @@ importers: specifier: workspace:* version: link:../core '@sphereon/did-auth-siop': - specifier: 0.16.1-fix.173 - version: 0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4) + specifier: link:/Users/martinauer/Documents/Code/OID4VC/packages/siop-oid4vp + version: link:../../../Code/OID4VC/packages/siop-oid4vp '@sphereon/oid4vc-common': specifier: 0.16.1-fix.173 - version: 0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + version: 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@sphereon/ssi-types': specifier: 0.30.2-next.135 version: 0.30.2-next.135 @@ -812,13 +815,13 @@ importers: devDependencies: react-native: specifier: ^0.71.4 - version: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1) + version: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) react-native-fs: specifier: ^2.20.0 - version: 2.20.0(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)) + version: 2.20.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) react-native-get-random-values: specifier: ^1.8.0 - version: 1.11.0(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)) + version: 1.11.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) rimraf: specifier: ^4.4.0 version: 4.4.1 @@ -880,7 +883,7 @@ importers: version: 8.5.12 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.18.8)(typescript@5.5.4) + version: 10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4) samples/tails: dependencies: @@ -911,7 +914,7 @@ importers: devDependencies: ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@18.18.8)(typescript@5.5.4) + version: 10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4) packages: @@ -966,24 +969,20 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/code-frame@7.25.7': - resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} '@babel/compat-data@7.25.2': resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.8': - resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.8': - resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} '@babel/generator@7.2.0': @@ -993,28 +992,28 @@ packages: resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.7': - resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.25.7': - resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': - resolution: {integrity: sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==} + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.25.2': resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.7': - resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.25.0': @@ -1023,8 +1022,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-class-features-plugin@7.25.7': - resolution: {integrity: sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==} + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1035,8 +1034,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-create-regexp-features-plugin@7.25.7': - resolution: {integrity: sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==} + '@babel/helper-create-regexp-features-plugin@7.25.9': + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1054,16 +1053,16 @@ packages: resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.25.7': - resolution: {integrity: sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.24.7': resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.7': - resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} '@babel/helper-module-transforms@7.25.2': @@ -1072,8 +1071,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.25.7': - resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1082,16 +1081,16 @@ packages: resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} - '@babel/helper-optimise-call-expression@7.25.7': - resolution: {integrity: sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.24.8': resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.25.7': - resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.25.0': @@ -1100,8 +1099,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-remap-async-to-generator@7.25.7': - resolution: {integrity: sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==} + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1112,8 +1111,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-replace-supers@7.25.7': - resolution: {integrity: sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==} + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1122,102 +1121,94 @@ packages: resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.25.7': - resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} engines: {node: '>=6.9.0'} '@babel/helper-skip-transparent-expression-wrappers@7.24.7': resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.25.7': - resolution: {integrity: sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.24.8': resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.7': - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.7': - resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} '@babel/helper-wrap-function@7.25.0': resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} engines: {node: '>=6.9.0'} - '@babel/helper-wrap-function@7.25.7': - resolution: {integrity: sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==} + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.25.7': - resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.25.7': - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} - engines: {node: '>=6.9.0'} - '@babel/parser@7.25.3': resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/parser@7.25.8': - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7': - resolution: {integrity: sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==} + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7': - resolution: {integrity: sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==} + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7': - resolution: {integrity: sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==} + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7': - resolution: {integrity: sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==} + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7': - resolution: {integrity: sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==} + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -1352,8 +1343,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.25.7': - resolution: {integrity: sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==} + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1364,8 +1355,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.25.7': - resolution: {integrity: sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==} + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1446,14 +1437,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-arrow-functions@7.25.7': - resolution: {integrity: sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==} + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.25.8': - resolution: {integrity: sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==} + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1464,8 +1455,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.25.7': - resolution: {integrity: sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==} + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1476,8 +1467,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoped-functions@7.25.7': - resolution: {integrity: sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==} + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1488,20 +1479,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.25.7': - resolution: {integrity: sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==} + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-properties@7.25.7': - resolution: {integrity: sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==} + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-class-static-block@7.25.8': - resolution: {integrity: sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==} + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 @@ -1512,8 +1503,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-classes@7.25.7': - resolution: {integrity: sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==} + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1524,8 +1515,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-computed-properties@7.25.7': - resolution: {integrity: sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==} + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1536,44 +1527,50 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.25.7': - resolution: {integrity: sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==} + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-dotall-regex@7.25.7': - resolution: {integrity: sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==} + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-keys@7.25.7': - resolution: {integrity: sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==} + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7': - resolution: {integrity: sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==} + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-dynamic-import@7.25.8': - resolution: {integrity: sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==} + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-exponentiation-operator@7.25.7': - resolution: {integrity: sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==} + '@babel/plugin-transform-exponentiation-operator@7.25.9': + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.25.8': - resolution: {integrity: sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==} + '@babel/plugin-transform-export-namespace-from@7.24.7': + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1590,8 +1587,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-for-of@7.25.7': - resolution: {integrity: sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==} + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1602,14 +1599,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-function-name@7.25.7': - resolution: {integrity: sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==} + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-json-strings@7.25.8': - resolution: {integrity: sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==} + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1620,14 +1617,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-literals@7.25.7': - resolution: {integrity: sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==} + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-logical-assignment-operators@7.25.8': - resolution: {integrity: sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==} + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1638,14 +1635,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-member-expression-literals@7.25.7': - resolution: {integrity: sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==} + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-amd@7.25.7': - resolution: {integrity: sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==} + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1656,20 +1653,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.25.7': - resolution: {integrity: sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==} + '@babel/plugin-transform-modules-commonjs@7.25.9': + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-systemjs@7.25.7': - resolution: {integrity: sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==} + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-umd@7.25.7': - resolution: {integrity: sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==} + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1680,32 +1677,38 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-named-capturing-groups-regex@7.25.7': - resolution: {integrity: sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==} + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-transform-new-target@7.25.7': - resolution: {integrity: sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==} + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.8': - resolution: {integrity: sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==} + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-numeric-separator@7.25.8': - resolution: {integrity: sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==} + '@babel/plugin-transform-object-rest-spread@7.24.7': + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.25.8': - resolution: {integrity: sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==} + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1716,20 +1719,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-super@7.25.7': - resolution: {integrity: sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==} + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-catch-binding@7.25.8': - resolution: {integrity: sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==} + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.25.8': - resolution: {integrity: sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==} + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1740,20 +1743,32 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.25.7': - resolution: {integrity: sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==} + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.25.7': - resolution: {integrity: sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==} + '@babel/plugin-transform-private-methods@7.24.7': + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.25.8': - resolution: {integrity: sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==} + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.7': + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1764,8 +1779,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-property-literals@7.25.7': - resolution: {integrity: sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==} + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1806,14 +1821,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.25.7': - resolution: {integrity: sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==} + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-reserved-words@7.25.7': - resolution: {integrity: sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==} + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1830,8 +1851,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-shorthand-properties@7.25.7': - resolution: {integrity: sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==} + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1842,8 +1863,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-spread@7.25.7': - resolution: {integrity: sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==} + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1854,8 +1875,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-sticky-regex@7.25.7': - resolution: {integrity: sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==} + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1866,14 +1887,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-template-literals@7.25.7': - resolution: {integrity: sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==} + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typeof-symbol@7.25.7': - resolution: {integrity: sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==} + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1884,14 +1905,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-escapes@7.25.7': - resolution: {integrity: sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==} + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-property-regex@7.25.7': - resolution: {integrity: sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==} + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1902,20 +1923,20 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-regex@7.25.7': - resolution: {integrity: sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==} + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-unicode-sets-regex@7.25.7': - resolution: {integrity: sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==} + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.25.8': - resolution: {integrity: sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==} + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1960,24 +1981,24 @@ packages: resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.7': - resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} '@babel/traverse@7.25.3': resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.7': - resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} '@babel/types@7.25.2': resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.8': - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -2619,9 +2640,9 @@ packages: resolution: {integrity: sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==} engines: {node: '>= 14.0.0'} - '@koa/router@12.0.1': - resolution: {integrity: sha512-ribfPYfHb+Uw3b27Eiw6NPqjhIhTpVFzEWLwyc/1Xp+DCdwRRyIlAUODX+9bPARF6aQtUu1+/PHzdNvRzcs/+Q==} - engines: {node: '>= 12'} + '@koa/router@13.1.0': + resolution: {integrity: sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==} + engines: {node: '>= 18'} '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -2645,8 +2666,8 @@ packages: resolution: {integrity: sha512-s9ccL/1TTvCP1N//4QR84j/d5D/stx/AI1kPcRgiE4O3KrxyF7ZdL9ca8fmFuN6yh9LAbn/OiGRnOXgvn38Dgg==} engines: {node: '>=14', yarn: 1.x} - '@mswjs/interceptors@0.36.9': - resolution: {integrity: sha512-mMRDUBwSNeCgjSMEWfjoh4Rm9fbyZ7xQ9SBq8eGHiiyRn1ieTip3pNEt0wxWVPPxR4i1Rv9bTkeEbkX7M4c15A==} + '@mswjs/interceptors@0.36.10': + resolution: {integrity: sha512-GXrJgakgJW3DWKueebkvtYgGKkxA7s0u5B0P5syJM5rvQUnrpLPigvci8Hukl7yEM+sU06l+er2Fgvx/gmiRgg==} engines: {node: '>=18'} '@multiformats/base-x@4.0.1': @@ -2662,10 +2683,6 @@ packages: resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} engines: {node: ^14.21.3 || >=16} - '@noble/hashes@1.4.0': - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - '@noble/hashes@1.5.0': resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} @@ -2920,17 +2937,9 @@ packages: resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} engines: {node: '>= 8'} - '@sphereon/did-auth-siop@0.16.1-fix.173': - resolution: {integrity: sha512-BurhxcEfd91y2o2zy0VAZ9STHRuWRNx/FwhR0jRSG8D7gJPspqiR2cJtdvAvLrKNaznpQSANQHniCgCiDRtjfA==} - engines: {node: '>=18'} - '@sphereon/did-uni-client@0.6.3': resolution: {integrity: sha512-g7LD7ofbE36slHN7Bhr5dwUrj6t0BuZeXBYJMaVY/pOeL1vJxW1cZHbZqu0NSfOmzyBg4nsYVlgTjyi/Aua2ew==} - '@sphereon/jarm@0.16.1-fix.173': - resolution: {integrity: sha512-VYNuNLV+x7hKKcynC8yOJymkXPrtBRQA/Gqj50Wfhl6kx6IoRsx39s/i6xGGYPwyrNTaVGFssKzg0IDcQfxToA==} - engines: {node: '>=18'} - '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': resolution: {integrity: sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A==} bundledDependencies: [] @@ -2942,10 +2951,6 @@ packages: '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} - '@sphereon/pex@5.0.0-unstable.24': - resolution: {integrity: sha512-CZc+kr8cJqPsFSpg4kHyamr5oB5xLVP2E5eJ0pbetOfOE2uSxqk0/A8zGazcPhU1zZILrO51hD4vW/hJRgtKJQ==} - engines: {node: '>=18'} - '@sphereon/pex@5.0.0-unstable.25': resolution: {integrity: sha512-EUWfGa6t20PPkYf+zbfWXhc1sSWiFNywbRah8R6grJPU738pfwWpZPunSEY3x0CoxAVaSVXn91wZ/sxmgPCFkA==} engines: {node: '>=18'} @@ -2980,9 +2985,6 @@ packages: '@sphereon/ssi-types@0.30.1': resolution: {integrity: sha512-vbYaxQXb71sOPwDj7TRDlUGfIHKVVs8PiHfImPBgSBshrD7VpEHOrB+EwwavMm5MAQvWK/yblGmzk7FHds7SHA==} - '@sphereon/ssi-types@0.30.2-next.129': - resolution: {integrity: sha512-F1TDy9S5ajDJDp21cINXseGSux9kGA+x0KScAS+5+B/RdMGRp7bLOM+3YpQw1QGPqKxVc7JAd2gAn7AI0pAkZA==} - '@sphereon/ssi-types@0.30.2-next.135': resolution: {integrity: sha512-YLQfFMPUlOJUxHbOS9v01nG3cgLwTk3d95/rTnOmEQx9kXgXjoXdvt7D0uGcMRL3RHeQ9biT/jWY//mDvCirVQ==} @@ -3046,6 +3048,81 @@ packages: '@stablelib/xchacha20poly1305@1.0.1': resolution: {integrity: sha512-B1Abj0sMJ8h3HNmGnJ7vHBrAvxuNka6cJJoZ1ILN7iuacXp7sUYcgOVEOTLWj+rtQMpspY9tXSCRLPmN1mQNWg==} + '@swc/core-darwin-arm64@1.7.40': + resolution: {integrity: sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.7.40': + resolution: {integrity: sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.7.40': + resolution: {integrity: sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.7.40': + resolution: {integrity: sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.7.40': + resolution: {integrity: sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.7.40': + resolution: {integrity: sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.7.40': + resolution: {integrity: sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.7.40': + resolution: {integrity: sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.7.40': + resolution: {integrity: sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.7.40': + resolution: {integrity: sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.7.40': + resolution: {integrity: sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.13': + resolution: {integrity: sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==} + '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -3125,8 +3202,8 @@ packages: '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/http-assert@1.5.5': - resolution: {integrity: sha512-4+tE/lwdAahgZT1g30Jkdm9PzFRde0xwxBNUyRsCitRvCQB90iuA2uJYdUnhnANRcqGXaWOGY4FEoxeElNAK2g==} + '@types/http-assert@1.5.6': + resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==} '@types/http-cache-semantics@4.0.4': resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} @@ -3753,8 +3830,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.24.0: - resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3852,8 +3929,8 @@ packages: caniuse-lite@1.0.30001651: resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} - caniuse-lite@1.0.30001668: - resolution: {integrity: sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==} + caniuse-lite@1.0.30001683: + resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==} canonicalize@1.0.8: resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==} @@ -4177,6 +4254,9 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dcql@0.2.8: + resolution: {integrity: sha512-/2TbRz3Itj/as4JnmzkupNxq6slN/w07EEx9iAwb/LRI8M8ajhnSN7YQ8rFopImuZAZkPYzOs4zga7zH6xf8eg==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -4202,6 +4282,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -4379,8 +4468,8 @@ packages: electron-to-chromium@1.5.13: resolution: {integrity: sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==} - electron-to-chromium@1.5.38: - resolution: {integrity: sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==} + electron-to-chromium@1.5.63: + resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==} elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -4482,6 +4571,10 @@ packages: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -4574,6 +4667,7 @@ packages: eslint@8.57.0: resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true esniff@2.0.1: @@ -5173,6 +5267,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -5646,8 +5744,8 @@ packages: join-component@1.1.0: resolution: {integrity: sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==} - jose@5.8.0: - resolution: {integrity: sha512-E7CqYpL/t7MMnfGnK/eg416OsFCVUrU/Y3Vwe7QjKhu/BkS1Ms455+2xsqZQVN57/U2MHMBvEb5SrmAZWAIntA==} + jose@5.9.6: + resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} @@ -5845,13 +5943,6 @@ packages: resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==} engines: {node: '>=14.16'} - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -6157,10 +6248,6 @@ packages: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -6294,10 +6381,6 @@ packages: engines: {node: '>=12.0.0', npm: '>=6.0.0'} deprecated: This module has been superseded by the multiformats module - multiformats@12.1.3: - resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - multiformats@9.7.1: resolution: {integrity: sha512-TaVmGEBt0fhxiNJMGphBfB+oGvUxFs8KgGvgl8d3C+GWtrFcvXdJ2196eg+dYhmSFClmgFfSfJEklo+SZzdNuw==} @@ -6315,8 +6398,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + nanoid@5.0.8: + resolution: {integrity: sha512-TcJPw+9RV9dibz1hHUzlLVy8N4X9TnwirAjrU08Juo6BNKggzVfP2ZJ/3ZUSq15Xl5i85i+Z89XBO90pB2PghQ==} engines: {node: ^18 || >=20} hasBin: true @@ -6467,8 +6550,8 @@ packages: resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} - oidc-provider@8.5.1: - resolution: {integrity: sha512-Bm3EyxN68/KS76IlciJ3+4pnVtfdRWL+NghWpIF0XQbiRT1gzc6Qf/cyFmpL9yieko/jXYZ/uLHUv77jD00qww==} + oidc-provider@8.6.0: + resolution: {integrity: sha512-LTzQza+KA72fFWe/70ttjTpCPvwZRoaydPFY2izNfQjo6u33lFOzJeqA9Q0TblTShkaH56ChoE2KdMYIQlNHdw==} oidc-token-hash@5.0.3: resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} @@ -6658,8 +6741,8 @@ packages: path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -6672,6 +6755,9 @@ packages: picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -6817,10 +6903,6 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} @@ -6847,6 +6929,10 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + raw-body@3.0.0: + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} + engines: {node: '>= 0.8'} + rc@1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -6996,8 +7082,8 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.11.1: - resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} + regjsparser@0.11.2: + resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} hasBin: true regjsparser@0.9.1: @@ -7635,8 +7721,8 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} - tsx@4.19.0: - resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} + tsx@4.19.2: + resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} engines: {node: '>=18.0.0'} hasBin: true @@ -7807,8 +7893,8 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici@6.20.1: - resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==} + undici@6.21.0: + resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} engines: {node: '>=18.17'} unicode-canonical-property-names-ecmascript@2.0.0: @@ -7865,6 +7951,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -7915,6 +8007,14 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} + valibot@0.37.0: + resolution: {integrity: sha512-FQz52I8RXgFgOHym3XHYSREbNtkgSjF9prvMFH1nBsRyfL6SfCzoT1GuSDTlbsuPubM7/6Kbw0ZMQb8A+V+VsQ==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + valibot@0.42.1: resolution: {integrity: sha512-3keXV29Ar5b//Hqi4MbSdV7lfVp6zuYLZuA9V1PvQUsXqogr+u5lvLPLk3A4f74VUXDnf/JfWMN6sB+koJ/FFw==} peerDependencies: @@ -8207,14 +8307,14 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@animo-id/expo-secure-environment@0.0.1-alpha.0(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)))(react-native@0.71.19(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))(react@18.3.1))(react@18.3.1)': + '@animo-id/expo-secure-environment@0.0.1-alpha.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(react@18.3.1)': dependencies: '@peculiar/asn1-ecc': 2.3.13 '@peculiar/asn1-schema': 2.3.13 '@peculiar/asn1-x509': 2.3.13 - expo: 51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + expo: 51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) react: 18.3.1 - react-native: 0.71.19(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))(react@18.3.1) + react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) '@animo-id/mdoc@0.2.38': dependencies: @@ -8242,10 +8342,10 @@ snapshots: transitivePeerDependencies: - typescript - '@animo-id/react-native-bbs-signatures@0.1.0(react-native@0.71.19(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))(react@18.3.1))(react@18.3.1)': + '@animo-id/react-native-bbs-signatures@0.1.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 - react-native: 0.71.19(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))(react@18.3.1) + react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) '@astronautlabs/jsonpath@1.1.2': dependencies: @@ -8255,54 +8355,35 @@ snapshots: '@babel/code-frame@7.10.4': dependencies: - '@babel/highlight': 7.25.7 + '@babel/highlight': 7.24.7 '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - '@babel/code-frame@7.25.7': + '@babel/code-frame@7.26.2': dependencies: - '@babel/highlight': 7.25.7 + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 picocolors: 1.0.1 '@babel/compat-data@7.25.2': {} - '@babel/compat-data@7.25.8': {} - - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 - convert-source-map: 2.0.0 - debug: 4.3.6 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/compat-data@7.26.2': {} - '@babel/core@7.25.8': + '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) - '@babel/helpers': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 convert-source-map: 2.0.0 debug: 4.3.6 gensync: 1.0.0-beta.2 @@ -8313,7 +8394,7 @@ snapshots: '@babel/generator@7.2.0': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.25.2 jsesc: 2.5.2 lodash: 4.17.21 source-map: 0.5.7 @@ -8326,9 +8407,10 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - '@babel/generator@7.25.7': + '@babel/generator@7.26.2': dependencies: - '@babel/types': 7.25.8 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -8337,14 +8419,14 @@ snapshots: dependencies: '@babel/types': 7.25.2 - '@babel/helper-annotate-as-pure@7.25.7': + '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.7': + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -8356,108 +8438,57 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-compilation-targets@7.25.7': + '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/compat-data': 7.25.8 - '@babel/helper-validator-option': 7.25.7 - browserslist: 4.24.0 + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.8)': + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.8) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/traverse': 7.25.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/traverse': 7.25.7 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.25.7(@babel/core@7.25.8)': + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.8)': + '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - regexpu-core: 6.1.1 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.25.7(@babel/core@7.25.8)': + '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 regexpu-core: 6.1.1 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.6 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.8)': + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 debug: 4.3.6 @@ -8477,10 +8508,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-member-expression-to-functions@7.25.7': + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -8491,26 +8522,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.25.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.8)': + '@babel/helper-module-transforms@7.25.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 @@ -8518,23 +8539,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -8542,83 +8552,47 @@ snapshots: dependencies: '@babel/types': 7.25.2 - '@babel/helper-optimise-call-expression@7.25.7': + '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 '@babel/helper-plugin-utils@7.24.8': {} - '@babel/helper-plugin-utils@7.25.7': {} + '@babel/helper-plugin-utils@7.25.9': {} - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2)': + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-wrap-function': 7.25.0 '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - - '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-wrap-function': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-remap-async-to-generator@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-wrap-function': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.8)': + '@babel/helper-replace-supers@7.25.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.25.7(@babel/core@7.25.8)': + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-member-expression-to-functions': 7.25.7 - '@babel/helper-optimise-call-expression': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -8629,10 +8603,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-simple-access@7.25.7': + '@babel/helper-simple-access@7.25.9': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -8643,24 +8617,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.25.7': + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.24.8': {} - '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-string-parser@7.25.9': {} '@babel/helper-validator-identifier@7.24.7': {} - '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.25.9': {} '@babel/helper-validator-option@7.24.8': {} - '@babel/helper-validator-option@7.25.7': {} + '@babel/helper-validator-option@7.25.9': {} '@babel/helper-wrap-function@7.25.0': dependencies: @@ -8670,23 +8644,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-wrap-function@7.25.7': + '@babel/helper-wrap-function@7.25.9': dependencies: - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.8 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color - '@babel/helpers@7.25.0': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - - '@babel/helpers@7.25.7': + '@babel/helpers@7.26.0': dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 '@babel/highlight@7.24.7': dependencies: @@ -8695,1736 +8664,934 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.0.1 - '@babel/highlight@7.25.7': - dependencies: - '@babel/helper-validator-identifier': 7.25.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - '@babel/parser@7.25.3': dependencies: '@babel/types': 7.25.2 - '@babel/parser@7.25.8': - dependencies: - '@babel/types': 7.25.8 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.2)': + '@babel/parser@7.26.2': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.26.0 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.26.0) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.25.8)': + '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-environment-visitor': 7.24.7 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.8) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': + '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.8)': + '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.8) + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - optional: true + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/compat-data': 7.25.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.8) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.25.2)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - optional: true + '@babel/core': 7.26.0 - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.25.8)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.8)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.2)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - optional: true + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.25.8)': + '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.25.8)': + '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.8 - '@babel/helper-compilation-targets': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.2)': + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.25.8)': + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - optional: true - - '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-assertions@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-attributes@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - optional: true - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.8)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.8)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - optional: true - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.8)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.8)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.8)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.8)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-arrow-functions@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-async-generator-functions@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-generator-functions@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.8) - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.8) + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-remap-async-to-generator': 7.25.7(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-block-scoped-functions@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-block-scoping@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-properties@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-class-static-block@7.25.8(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-class-static-block@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.2)': + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.3 - globals: 11.12.0 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.0(@babel/core@7.25.8)': + '@babel/plugin-transform-classes@7.25.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.8) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.26.0) '@babel/traverse': 7.25.3 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.2) - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) - '@babel/traverse': 7.25.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 - - '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 '@babel/template': 7.25.0 - '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/template': 7.25.7 - - '@babel/plugin-transform-computed-properties@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/template': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-destructuring@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-dotall-regex@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-duplicate-keys@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-dynamic-import@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-dynamic-import@7.25.8(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-exponentiation-operator@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-export-namespace-from@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.8)': + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-for-of@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2)': + '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.3 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-json-strings@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-literals@7.25.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-literals@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-logical-assignment-operators@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-logical-assignment-operators@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-member-expression-literals@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-amd@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-new-target@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-new-target@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.8(@babel/core@7.25.2)': + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-numeric-separator@7.25.8(@babel/core@7.25.2)': + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-numeric-separator@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-object-rest-spread@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - - '@babel/plugin-transform-object-rest-spread@7.25.8(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.8) - - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-replace-supers': 7.25.7(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-optional-catch-binding@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-optional-chaining@7.25.8(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-chaining@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-parameters@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-methods@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.25.2)': + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.25.8(@babel/core@7.25.8)': + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-create-class-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-property-literals@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - optional: true - - '@babel/plugin-transform-react-jsx-development@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.24.7 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.0) '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.25.8)': + '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.8) - '@babel/types': 7.25.2 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - optional: true - - '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - regenerator-transform: 0.15.2 - '@babel/plugin-transform-regenerator@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-reserved-words@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-module-imports': 7.24.7 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.8) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.8) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.8) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-shorthand-properties@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-spread@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-sticky-regex@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-template-literals@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-typeof-symbol@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.8)': + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-escapes@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.25.2)': + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-unicode-property-regex@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-regex@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-unicode-sets-regex@7.25.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-create-regexp-features-plugin': 7.25.7(@babel/core@7.25.8) - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/preset-env@7.25.8(@babel/core@7.25.2)': - dependencies: - '@babel/compat-data': 7.25.8 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.25.7(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.25.8(@babel/core@7.25.8)': - dependencies: - '@babel/compat-data': 7.25.8 - '@babel/core': 7.25.8 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.8) - '@babel/plugin-syntax-import-assertions': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-syntax-import-attributes': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-async-generator-functions': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-block-scoped-functions': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-class-properties': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-class-static-block': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-dotall-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-duplicate-keys': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-dynamic-import': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-exponentiation-operator': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-export-namespace-from': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-for-of': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-json-strings': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-logical-assignment-operators': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-member-expression-literals': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-modules-amd': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-modules-systemjs': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-modules-umd': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-new-target': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-numeric-separator': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-object-rest-spread': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-object-super': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-optional-catch-binding': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-optional-chaining': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-property-literals': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-regenerator': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-reserved-words': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-template-literals': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-typeof-symbol': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-unicode-escapes': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-unicode-property-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-unicode-sets-regex': 7.25.7(@babel/core@7.25.8) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.8) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.8) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.8) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.8) + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) core-js-compat: 3.38.1 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': + '@babel/preset-flow@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/types': 7.25.2 - esutils: 2.0.3 + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.26.0) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.8)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/types': 7.25.2 esutils: 2.0.3 - '@babel/preset-react@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - optional: true - - '@babel/preset-react@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.25.8) - transitivePeerDependencies: - - supports-color - - '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/preset-react@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.24.7(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.24.7(@babel/core@7.25.8)': + '@babel/preset-typescript@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.8) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.8) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/register@7.24.6(@babel/core@7.25.2)': + '@babel/register@7.24.6(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -10443,11 +9610,11 @@ snapshots: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - '@babel/template@7.25.7': + '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@babel/traverse@7.25.3': dependencies: @@ -10461,13 +9628,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/traverse@7.25.7': + '@babel/traverse@7.25.9': dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 debug: 4.3.6 globals: 11.12.0 transitivePeerDependencies: @@ -10479,11 +9646,10 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@babel/types@7.25.8': + '@babel/types@7.26.0': dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 '@bcoe/v8-coverage@0.2.3': {} @@ -10691,7 +9857,7 @@ snapshots: '@cosmjs/encoding': 0.30.1 '@cosmjs/math': 0.30.1 '@cosmjs/utils': 0.30.1 - '@noble/hashes': 1.4.0 + '@noble/hashes': 1.5.0 bn.js: 5.2.1 elliptic: 6.5.7 libsodium-wrappers: 0.7.15 @@ -10786,7 +9952,7 @@ snapshots: dependencies: ky: 0.33.3 ky-universal: 0.11.0(ky@0.33.3)(web-streams-polyfill@3.3.3) - undici: 6.20.1 + undici: 6.21.0 transitivePeerDependencies: - web-streams-polyfill @@ -10822,11 +9988,11 @@ snapshots: '@digitalcredentials/base64url-universal': 2.0.6 pako: 2.1.0 - '@digitalcredentials/ed25519-signature-2020@3.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@digitalcredentials/ed25519-signature-2020@3.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalcredentials/base58-universal': 1.0.1 '@digitalcredentials/ed25519-verification-key-2020': 3.2.2 - '@digitalcredentials/jsonld-signatures': 9.4.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld-signatures': 9.4.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) ed25519-signature-2018-context: 1.1.0 ed25519-signature-2020-context: 1.1.0 transitivePeerDependencies: @@ -10850,12 +10016,12 @@ snapshots: - domexception - web-streams-polyfill - '@digitalcredentials/jsonld-signatures@9.4.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@digitalcredentials/jsonld-signatures@9.4.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/security-context': 1.0.1 - '@digitalcredentials/jsonld': 6.0.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld': 6.0.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) fast-text-encoding: 1.0.6 - isomorphic-webcrypto: 2.3.8(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)) + isomorphic-webcrypto: 2.3.8(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) serialize-error: 8.1.0 transitivePeerDependencies: - domexception @@ -10863,10 +10029,10 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/jsonld@5.2.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@digitalcredentials/jsonld@5.2.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalcredentials/http-client': 1.2.2(web-streams-polyfill@3.3.3) - '@digitalcredentials/rdf-canonize': 1.0.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)) + '@digitalcredentials/rdf-canonize': 1.0.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) canonicalize: 1.0.8 lru-cache: 6.0.0 transitivePeerDependencies: @@ -10875,10 +10041,10 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/jsonld@6.0.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@digitalcredentials/jsonld@6.0.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalcredentials/http-client': 1.2.2(web-streams-polyfill@3.3.3) - '@digitalcredentials/rdf-canonize': 1.0.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)) + '@digitalcredentials/rdf-canonize': 1.0.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) canonicalize: 1.0.8 lru-cache: 6.0.0 transitivePeerDependencies: @@ -10889,19 +10055,19 @@ snapshots: '@digitalcredentials/open-badges-context@2.1.0': {} - '@digitalcredentials/rdf-canonize@1.0.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))': + '@digitalcredentials/rdf-canonize@1.0.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))': dependencies: fast-text-encoding: 1.0.6 - isomorphic-webcrypto: 2.3.8(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)) + isomorphic-webcrypto: 2.3.8(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) transitivePeerDependencies: - expo - react-native - '@digitalcredentials/vc-status-list@5.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@digitalcredentials/vc-status-list@5.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/vc-status-list-context': 3.1.1 '@digitalcredentials/bitstring': 2.0.1 - '@digitalcredentials/vc': 4.2.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/vc': 4.2.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 transitivePeerDependencies: - domexception @@ -10909,10 +10075,10 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/vc@4.2.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@digitalcredentials/vc@4.2.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@digitalcredentials/jsonld': 5.2.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) - '@digitalcredentials/jsonld-signatures': 9.4.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld': 5.2.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld-signatures': 9.4.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 transitivePeerDependencies: - domexception @@ -10920,14 +10086,14 @@ snapshots: - react-native - web-streams-polyfill - '@digitalcredentials/vc@6.0.1(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@digitalcredentials/vc@6.0.1(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@digitalbazaar/vc-status-list': 7.1.0(web-streams-polyfill@3.3.3) - '@digitalcredentials/ed25519-signature-2020': 3.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) - '@digitalcredentials/jsonld': 6.0.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) - '@digitalcredentials/jsonld-signatures': 9.4.0(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/ed25519-signature-2020': 3.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld': 6.0.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/jsonld-signatures': 9.4.0(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) '@digitalcredentials/open-badges-context': 2.1.0 - '@digitalcredentials/vc-status-list': 5.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1))(web-streams-polyfill@3.3.3) + '@digitalcredentials/vc-status-list': 5.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1))(web-streams-polyfill@3.3.3) credentials-context: 2.0.0 fix-esm: 1.0.1 transitivePeerDependencies: @@ -11289,10 +10455,10 @@ snapshots: '@expo/metro-config@0.18.11': dependencies: - '@babel/core': 7.25.8 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/core': 7.26.0 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@expo/config': 9.0.3 '@expo/env': 0.3.0 '@expo/json-file': 8.3.3 @@ -11324,7 +10490,7 @@ snapshots: find-up: 5.0.0 find-yarn-workspace-root: 2.0.0 js-yaml: 3.14.1 - micromatch: 4.0.8 + micromatch: 4.0.7 npm-package-arg: 7.0.0 ora: 3.4.0 split: 1.0.1 @@ -11481,7 +10647,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -11495,7 +10661,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -11611,7 +10777,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -11704,15 +10870,11 @@ snapshots: dependencies: vary: 1.1.2 - '@koa/router@12.0.1': + '@koa/router@13.1.0': dependencies: - debug: 4.3.6 http-errors: 2.0.0 koa-compose: 4.1.0 - methods: 1.1.2 - path-to-regexp: 6.2.2 - transitivePeerDependencies: - - supports-color + path-to-regexp: 6.3.0 '@manypkg/find-root@1.1.0': dependencies: @@ -11772,7 +10934,7 @@ snapshots: - supports-color optional: true - '@mswjs/interceptors@0.36.9': + '@mswjs/interceptors@0.36.10': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -11791,8 +10953,6 @@ snapshots: dependencies: '@noble/hashes': 1.5.0 - '@noble/hashes@1.4.0': {} - '@noble/hashes@1.5.0': {} '@nodelib/fs.scandir@2.1.5': @@ -12025,7 +11185,7 @@ snapshots: transitivePeerDependencies: - encoding - '@react-native-community/cli-plugin-metro@10.2.3(@babel/core@7.25.2)': + '@react-native-community/cli-plugin-metro@10.2.3(@babel/core@7.26.0)': dependencies: '@react-native-community/cli-server-api': 10.1.1 '@react-native-community/cli-tools': 10.1.1 @@ -12034,27 +11194,7 @@ snapshots: metro: 0.73.10 metro-config: 0.73.10 metro-core: 0.73.10 - metro-react-native-babel-transformer: 0.73.10(@babel/core@7.25.2) - metro-resolver: 0.73.10 - metro-runtime: 0.73.10 - readline: 1.3.0 - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@react-native-community/cli-plugin-metro@10.2.3(@babel/core@7.25.8)': - dependencies: - '@react-native-community/cli-server-api': 10.1.1 - '@react-native-community/cli-tools': 10.1.1 - chalk: 4.1.2 - execa: 1.0.0 - metro: 0.73.10 - metro-config: 0.73.10 - metro-core: 0.73.10 - metro-react-native-babel-transformer: 0.73.10(@babel/core@7.25.8) + metro-react-native-babel-transformer: 0.73.10(@babel/core@7.26.0) metro-resolver: 0.73.10 metro-runtime: 0.73.10 readline: 1.3.0 @@ -12100,40 +11240,14 @@ snapshots: dependencies: joi: 17.13.3 - '@react-native-community/cli@10.2.7(@babel/core@7.25.2)': - dependencies: - '@react-native-community/cli-clean': 10.1.1 - '@react-native-community/cli-config': 10.1.1 - '@react-native-community/cli-debugger-ui': 10.0.0 - '@react-native-community/cli-doctor': 10.2.7 - '@react-native-community/cli-hermes': 10.2.7 - '@react-native-community/cli-plugin-metro': 10.2.3(@babel/core@7.25.2) - '@react-native-community/cli-server-api': 10.1.1 - '@react-native-community/cli-tools': 10.1.1 - '@react-native-community/cli-types': 10.0.0 - chalk: 4.1.2 - commander: 9.5.0 - execa: 1.0.0 - find-up: 4.1.0 - fs-extra: 8.1.0 - graceful-fs: 4.2.11 - prompts: 2.4.2 - semver: 6.3.1 - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - encoding - - supports-color - - utf-8-validate - - '@react-native-community/cli@10.2.7(@babel/core@7.25.8)': + '@react-native-community/cli@10.2.7(@babel/core@7.26.0)': dependencies: '@react-native-community/cli-clean': 10.1.1 '@react-native-community/cli-config': 10.1.1 '@react-native-community/cli-debugger-ui': 10.0.0 '@react-native-community/cli-doctor': 10.2.7 '@react-native-community/cli-hermes': 10.2.7 - '@react-native-community/cli-plugin-metro': 10.2.3(@babel/core@7.25.8) + '@react-native-community/cli-plugin-metro': 10.2.3(@babel/core@7.26.0) '@react-native-community/cli-server-api': 10.1.1 '@react-native-community/cli-tools': 10.1.1 '@react-native-community/cli-types': 10.0.0 @@ -12154,142 +11268,70 @@ snapshots: '@react-native/assets@1.0.0': {} - '@react-native/babel-plugin-codegen@0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.2))': - dependencies: - '@react-native/codegen': 0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - optional: true - - '@react-native/babel-plugin-codegen@0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.8))': + '@react-native/babel-plugin-codegen@0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@react-native/codegen': 0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + '@react-native/codegen': 0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/babel-preset@0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))': - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.2) - '@babel/template': 7.25.7 - '@react-native/babel-plugin-codegen': 0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.2) - react-refresh: 0.14.2 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - optional: true - - '@react-native/babel-preset@0.74.87(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))': - dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.8) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.25.8) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.8) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.8) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-transform-arrow-functions': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-async-to-generator': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-block-scoping': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-classes': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-computed-properties': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-destructuring': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-function-name': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-literals': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-modules-commonjs': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-private-methods': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-private-property-in-object': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-shorthand-properties': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-spread': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-sticky-regex': 7.25.7(@babel/core@7.25.8) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-unicode-regex': 7.25.7(@babel/core@7.25.8) - '@babel/template': 7.25.7 - '@react-native/babel-plugin-codegen': 0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.8)) - babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.25.8) + '@react-native/babel-preset@0.74.87(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.26.0) + '@babel/template': 7.25.0 + '@react-native/babel-plugin-codegen': 0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color - '@react-native/codegen@0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.2))': + '@react-native/codegen@0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.25.8 - '@babel/preset-env': 7.25.8(@babel/core@7.25.2) - glob: 7.2.3 - hermes-parser: 0.19.1 - invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - mkdirp: 0.5.6 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - optional: true - - '@react-native/codegen@0.74.87(@babel/preset-env@7.25.8(@babel/core@7.25.8))': - dependencies: - '@babel/parser': 7.25.8 - '@babel/preset-env': 7.25.8(@babel/core@7.25.8) + '@babel/parser': 7.25.3 + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.19.1 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + jscodeshift: 0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -12413,86 +11455,22 @@ snapshots: '@sovpro/delimited-stream@1.1.0': {} - '@sphereon/did-auth-siop@0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4)': - dependencies: - '@astronautlabs/jsonpath': 1.1.2 - '@sphereon/jarm': 0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4) - '@sphereon/oid4vc-common': 0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) - '@sphereon/pex': 5.0.0-unstable.24 - '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.2-next.129 - cross-fetch: 4.0.0 - debug: 4.3.6 - events: 3.3.0 - jwt-decode: 4.0.0 - language-tags: 1.0.9 - multiformats: 12.1.3 - qs: 6.13.0 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - - typescript - - '@sphereon/did-uni-client@0.6.3': - dependencies: - cross-fetch: 3.1.8 - did-resolver: 4.1.0 - transitivePeerDependencies: - - encoding - - '@sphereon/jarm@0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4)': - dependencies: - '@sphereon/oid4vc-common': 0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) - valibot: 0.42.1(typescript@5.5.4) - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - - typescript - + '@sphereon/did-uni-client@0.6.3': + dependencies: + cross-fetch: 3.1.8 + did-resolver: 4.1.0 + transitivePeerDependencies: + - encoding + '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': dependencies: '@js-joda/core': 5.6.3 '@js-joda/timezone': 2.3.0(@js-joda/core@5.6.3) format-util: 1.0.5 - '@sphereon/oid4vc-common@0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))': + '@sphereon/oid4vc-common@0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))': dependencies: - '@sphereon/ssi-types': 0.30.1(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-types': 0.30.1(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) jwt-decode: 4.0.0 sha.js: 2.4.11 uint8arrays: 3.1.1 @@ -12520,22 +11498,6 @@ snapshots: '@sphereon/pex-models@2.3.1': {} - '@sphereon/pex@5.0.0-unstable.24': - dependencies: - '@astronautlabs/jsonpath': 1.1.2 - '@sd-jwt/decode': 0.7.2 - '@sd-jwt/present': 0.7.2 - '@sd-jwt/types': 0.7.2 - '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.2-next.129 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - jwt-decode: 3.1.2 - nanoid: 3.3.7 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - supports-color - '@sphereon/pex@5.0.0-unstable.25': dependencies: '@astronautlabs/jsonpath': 1.1.2 @@ -12552,14 +11514,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))': + '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))': dependencies: '@ethersproject/networks': 5.7.1 '@ethersproject/transactions': 5.7.0 '@sphereon/did-uni-client': 0.6.3 '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@sphereon/ssi-sdk.core': 0.29.1-unstable.161 '@sphereon/ssi-types': 0.29.1-unstable.161 '@stablelib/ed25519': 1.0.3 @@ -12590,12 +11552,12 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))': + '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))': dependencies: - '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@sphereon/ssi-types': 0.29.1-unstable.161 '@veramo/core': 4.2.0 '@veramo/utils': 4.2.0 @@ -12623,14 +11585,14 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))': + '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))': dependencies: - '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) - '@sphereon/ssi-sdk-ext.identifier-resolution': 0.24.1-unstable.130(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-sdk-ext.identifier-resolution': 0.24.1-unstable.130(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@sphereon/ssi-sdk-ext.key-manager': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.130 '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.130 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@sphereon/ssi-types': 0.29.1-unstable.161 '@veramo/core': 4.2.0 '@veramo/utils': 4.2.0 @@ -12698,12 +11660,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-sdk.agent-config@0.29.1-unstable.161(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))': + '@sphereon/ssi-sdk.agent-config@0.29.1-unstable.161(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))': dependencies: '@veramo/core': 4.2.0 debug: 4.3.6 jsonpointer: 5.0.1 - typeorm: 0.3.20(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + typeorm: 0.3.20(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) url-parse: 1.5.10 yaml: 2.5.0 transitivePeerDependencies: @@ -12747,11 +11709,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-types@0.30.1(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4))': + '@sphereon/ssi-types@0.30.1(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))': dependencies: '@sd-jwt/decode': 0.7.2 '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 - '@sphereon/ssi-sdk-ext.jwt-service': 0.24.1-unstable.130(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/ssi-sdk-ext.jwt-service': 0.24.1-unstable.130(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) debug: 4.3.6 events: 3.3.0 jwt-decode: 3.1.2 @@ -12776,16 +11738,6 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-types@0.30.2-next.129': - dependencies: - '@sd-jwt/decode': 0.7.2 - '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 - debug: 4.3.6 - events: 3.3.0 - jwt-decode: 3.1.2 - transitivePeerDependencies: - - supports-color - '@sphereon/ssi-types@0.30.2-next.135': dependencies: '@sd-jwt/decode': 0.7.2 @@ -12885,6 +11837,61 @@ snapshots: '@stablelib/wipe': 1.0.1 '@stablelib/xchacha20': 1.0.1 + '@swc/core-darwin-arm64@1.7.40': + optional: true + + '@swc/core-darwin-x64@1.7.40': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.7.40': + optional: true + + '@swc/core-linux-arm64-gnu@1.7.40': + optional: true + + '@swc/core-linux-arm64-musl@1.7.40': + optional: true + + '@swc/core-linux-x64-gnu@1.7.40': + optional: true + + '@swc/core-linux-x64-musl@1.7.40': + optional: true + + '@swc/core-win32-arm64-msvc@1.7.40': + optional: true + + '@swc/core-win32-ia32-msvc@1.7.40': + optional: true + + '@swc/core-win32-x64-msvc@1.7.40': + optional: true + + '@swc/core@1.7.40': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.13 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.40 + '@swc/core-darwin-x64': 1.7.40 + '@swc/core-linux-arm-gnueabihf': 1.7.40 + '@swc/core-linux-arm64-gnu': 1.7.40 + '@swc/core-linux-arm64-musl': 1.7.40 + '@swc/core-linux-x64-gnu': 1.7.40 + '@swc/core-linux-x64-musl': 1.7.40 + '@swc/core-win32-arm64-msvc': 1.7.40 + '@swc/core-win32-ia32-msvc': 1.7.40 + '@swc/core-win32-x64-msvc': 1.7.40 + optional: true + + '@swc/counter@0.1.3': + optional: true + + '@swc/types@0.1.13': + dependencies: + '@swc/counter': 0.1.3 + optional: true + '@szmarczak/http-timer@5.0.1': dependencies: defer-to-connect: 2.0.1 @@ -12987,7 +11994,7 @@ snapshots: dependencies: '@types/node': 18.18.8 - '@types/http-assert@1.5.5': {} + '@types/http-assert@1.5.6': {} '@types/http-cache-semantics@4.0.4': {} @@ -13035,7 +12042,7 @@ snapshots: '@types/accepts': 1.3.7 '@types/content-disposition': 0.5.8 '@types/cookies': 0.9.0 - '@types/http-assert': 1.5.5 + '@types/http-assert': 1.5.6 '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 @@ -13542,17 +12549,17 @@ snapshots: dependencies: b64-lite: 1.4.0 - babel-core@7.0.0-bridge.0(@babel/core@7.25.2): + babel-core@7.0.0-bridge.0(@babel/core@7.26.0): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 - babel-jest@29.7.0(@babel/core@7.25.8): + babel-jest@29.7.0(@babel/core@7.26.0): dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.25.8) + babel-preset-jest: 29.6.3(@babel/core@7.26.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -13576,58 +12583,34 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.8): + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): dependencies: - '@babel/compat-data': 7.25.2 - '@babel/core': 7.25.8 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.8) + '@babel/compat-data': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.8): + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): dependencies: - '@babel/core': 7.25.8 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) core-js-compat: 3.38.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.8): + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): dependencies: - '@babel/core': 7.25.8 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color babel-plugin-react-compiler@0.0.0-experimental-7d62301-20240819: dependencies: '@babel/generator': 7.2.0 - '@babel/types': 7.25.8 + '@babel/types': 7.25.2 chalk: 4.1.2 invariant: 2.2.4 pretty-format: 24.9.0 @@ -13638,65 +12621,40 @@ snapshots: babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {} - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.2): - dependencies: - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - transitivePeerDependencies: - - '@babel/core' - optional: true - - babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.25.8): + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.26.0): dependencies: - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.8) - transitivePeerDependencies: - - '@babel/core' - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.8): - dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.8) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.8) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.8) - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.8) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.8) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.8) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.8) - - babel-preset-expo@11.0.14(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)): - dependencies: - '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.25.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.2) - '@babel/preset-react': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@react-native/babel-preset': 0.74.87(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - babel-plugin-react-compiler: 0.0.0-experimental-7d62301-20240819 - babel-plugin-react-native-web: 0.19.12 - react-refresh: 0.14.2 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.0) transitivePeerDependencies: - '@babel/core' - - '@babel/preset-env' - - supports-color - optional: true - babel-preset-expo@11.0.14(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)): - dependencies: - '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-export-namespace-from': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-object-rest-spread': 7.25.8(@babel/core@7.25.8) - '@babel/plugin-transform-parameters': 7.25.7(@babel/core@7.25.8) - '@babel/preset-react': 7.24.7(@babel/core@7.25.8) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.8) - '@react-native/babel-preset': 0.74.87(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + + babel-preset-expo@11.0.14(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)): + dependencies: + '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) + '@babel/preset-react': 7.24.7(@babel/core@7.26.0) + '@babel/preset-typescript': 7.24.7(@babel/core@7.26.0) + '@react-native/babel-preset': 0.74.87(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) babel-plugin-react-compiler: 0.0.0-experimental-7d62301-20240819 babel-plugin-react-native-web: 0.19.12 react-refresh: 0.14.2 @@ -13705,77 +12663,44 @@ snapshots: - '@babel/preset-env' - supports-color - babel-preset-fbjs@3.4.0(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 - transitivePeerDependencies: - - supports-color - - babel-preset-fbjs@3.4.0(@babel/core@7.25.8): - dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.8) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.8) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.8) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.8) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.8) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.8) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.8) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.8) + babel-preset-fbjs@3.4.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.26.0) babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color - babel-preset-jest@29.6.3(@babel/core@7.25.8): + babel-preset-jest@29.6.3(@babel/core@7.26.0): dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.8) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) balanced-match@1.0.2: {} @@ -13890,12 +12815,12 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - browserslist@4.24.0: + browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001668 - electron-to-chromium: 1.5.38 + caniuse-lite: 1.0.30001683 + electron-to-chromium: 1.5.63 node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.24.0) + update-browserslist-db: 1.1.1(browserslist@4.24.2) bs-logger@0.2.6: dependencies: @@ -14000,7 +12925,7 @@ snapshots: caniuse-lite@1.0.30001651: {} - caniuse-lite@1.0.30001668: {} + caniuse-lite@1.0.30001683: {} canonicalize@1.0.8: {} @@ -14105,7 +13030,7 @@ snapshots: dependencies: '@hapi/bourne': 3.0.0 inflation: 2.1.0 - qs: 6.13.0 + qs: 6.11.0 raw-body: 2.5.2 type-is: 1.6.18 @@ -14255,13 +13180,13 @@ snapshots: long: 4.0.0 protobufjs: 6.11.4 - create-jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)): + create-jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -14350,6 +13275,12 @@ snapshots: dayjs@1.11.13: {} + dcql@0.2.8(typescript@5.5.4): + dependencies: + valibot: 0.37.0(typescript@5.5.4) + transitivePeerDependencies: + - typescript + debug@2.6.9: dependencies: ms: 2.0.0 @@ -14362,6 +13293,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.7: + dependencies: + ms: 2.1.3 + decamelize@1.2.0: {} decode-uri-component@0.2.2: {} @@ -14536,7 +13471,7 @@ snapshots: electron-to-chromium@1.5.13: {} - electron-to-chromium@1.5.38: {} + electron-to-chromium@1.5.63: {} elliptic@6.5.4: dependencies: @@ -14721,6 +13656,8 @@ snapshots: escalade@3.1.2: {} + escalade@3.2.0: {} + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} @@ -14945,70 +13882,35 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - expo-asset@10.0.10(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))): + expo-asset@10.0.10(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))): dependencies: - expo: 51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - expo-constants: 16.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))) + expo: 51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + expo-constants: 16.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))) invariant: 2.2.4 md5-file: 3.2.3 transitivePeerDependencies: - supports-color - optional: true - - expo-asset@10.0.10(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))): - dependencies: - expo: 51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) - expo-constants: 16.0.2(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))) - invariant: 2.2.4 - md5-file: 3.2.3 - transitivePeerDependencies: - - supports-color - - expo-constants@16.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))): - dependencies: - '@expo/config': 9.0.3 - '@expo/env': 0.3.0 - expo: 51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - transitivePeerDependencies: - - supports-color - optional: true - expo-constants@16.0.2(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))): + expo-constants@16.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))): dependencies: '@expo/config': 9.0.3 '@expo/env': 0.3.0 - expo: 51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + expo: 51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) transitivePeerDependencies: - supports-color - expo-file-system@17.0.1(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))): - dependencies: - expo: 51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - optional: true - - expo-file-system@17.0.1(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))): - dependencies: - expo: 51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) - - expo-font@12.0.9(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))): + expo-file-system@17.0.1(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))): dependencies: - expo: 51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - fontfaceobserver: 2.3.0 - optional: true + expo: 51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - expo-font@12.0.9(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))): + expo-font@12.0.9(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))): dependencies: - expo: 51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + expo: 51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) fontfaceobserver: 2.3.0 - expo-keep-awake@13.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))): - dependencies: - expo: 51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - optional: true - - expo-keep-awake@13.0.2(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))): + expo-keep-awake@13.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))): dependencies: - expo: 51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + expo: 51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) expo-modules-autolinking@0.0.3: dependencies: @@ -15033,13 +13935,13 @@ snapshots: dependencies: invariant: 2.2.4 - expo-random@14.0.1(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))): + expo-random@14.0.1(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))): dependencies: base64-js: 1.5.1 - expo: 51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) + expo: 51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) optional: true - expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)): + expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: '@babel/runtime': 7.25.0 '@expo/cli': 0.18.29(expo-modules-autolinking@1.11.2) @@ -15047,37 +13949,11 @@ snapshots: '@expo/config-plugins': 8.0.8 '@expo/metro-config': 0.18.11 '@expo/vector-icons': 14.0.2 - babel-preset-expo: 11.0.14(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - expo-asset: 10.0.10(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))) - expo-file-system: 17.0.1(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))) - expo-font: 12.0.9(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))) - expo-keep-awake: 13.0.2(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))) - expo-modules-autolinking: 1.11.2 - expo-modules-core: 1.12.21 - fbemitter: 3.0.0 - whatwg-url-without-unicode: 8.0.0-3 - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate - optional: true - - expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)): - dependencies: - '@babel/runtime': 7.25.0 - '@expo/cli': 0.18.29(expo-modules-autolinking@1.11.2) - '@expo/config': 9.0.3 - '@expo/config-plugins': 8.0.8 - '@expo/metro-config': 0.18.11 - '@expo/vector-icons': 14.0.2 - babel-preset-expo: 11.0.14(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8)) - expo-asset: 10.0.10(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))) - expo-file-system: 17.0.1(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))) - expo-font: 12.0.9(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))) - expo-keep-awake: 13.0.2(expo@51.0.29(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))) + babel-preset-expo: 11.0.14(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) + expo-asset: 10.0.10(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))) + expo-file-system: 17.0.1(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))) + expo-font: 12.0.9(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))) + expo-keep-awake: 13.0.2(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))) expo-modules-autolinking: 1.11.2 expo-modules-core: 1.12.21 fbemitter: 3.0.0 @@ -15291,13 +14167,13 @@ snapshots: find-yarn-workspace-root@2.0.0: dependencies: - micromatch: 4.0.8 + micromatch: 4.0.7 fix-esm@1.0.1: dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -15668,6 +14544,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -15909,7 +14789,7 @@ snapshots: isobject@3.0.1: {} - isomorphic-webcrypto@2.3.8(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2)))(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)): + isomorphic-webcrypto@2.3.8(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)): dependencies: '@peculiar/webcrypto': 1.5.0 asmcrypto.js: 0.22.0 @@ -15921,8 +14801,8 @@ snapshots: optionalDependencies: '@unimodules/core': 7.1.2 '@unimodules/react-native-adapter': 6.3.9 - expo-random: 14.0.1(expo@51.0.29(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))) - react-native-securerandom: 0.1.1(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)) + expo-random: 14.0.1(expo@51.0.29(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))) + react-native-securerandom: 0.1.1(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) transitivePeerDependencies: - expo - react-native @@ -15935,7 +14815,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/parser': 7.25.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -15945,7 +14825,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/parser': 7.25.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 @@ -16017,16 +14897,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)): + jest-cli@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + create-jest: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -16036,12 +14916,12 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)): + jest-config@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)): dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.8) + babel-jest: 29.7.0(@babel/core@7.26.0) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -16062,7 +14942,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 18.18.8 - ts-node: 10.9.2(@types/node@18.18.8)(typescript@5.5.4) + ts-node: 10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -16232,15 +15112,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@babel/generator': 7.25.0 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.8) + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.26.0) '@babel/types': 7.25.2 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.8) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -16315,12 +15195,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)): + jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + jest-cli: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -16339,7 +15219,7 @@ snapshots: join-component@1.1.0: {} - jose@5.8.0: {} + jose@5.9.6: {} js-base64@3.7.7: {} @@ -16437,44 +15317,19 @@ snapshots: jsc-safe-url@0.2.4: {} - jscodeshift@0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.2)): - dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.3 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/preset-env': 7.25.8(@babel/core@7.25.2) - '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/register': 7.24.6(@babel/core@7.25.2) - babel-core: 7.0.0-bridge.0(@babel/core@7.25.2) - chalk: 4.1.2 - flow-parser: 0.185.2 - graceful-fs: 4.2.11 - micromatch: 4.0.7 - neo-async: 2.6.2 - node-dir: 0.1.17 - recast: 0.21.5 - temp: 0.8.4 - write-file-atomic: 2.4.3 - transitivePeerDependencies: - - supports-color - - jscodeshift@0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.8)): + jscodeshift@0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/parser': 7.25.3 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/preset-env': 7.25.8(@babel/core@7.25.8) - '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) - '@babel/register': 7.24.6(@babel/core@7.25.2) - babel-core: 7.0.0-bridge.0(@babel/core@7.25.2) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-flow': 7.24.7(@babel/core@7.26.0) + '@babel/preset-typescript': 7.24.7(@babel/core@7.26.0) + '@babel/register': 7.24.6(@babel/core@7.26.0) + babel-core: 7.0.0-bridge.0(@babel/core@7.26.0) chalk: 4.1.2 flow-parser: 0.185.2 graceful-fs: 4.2.11 @@ -16594,7 +15449,7 @@ snapshots: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 - debug: 4.3.6 + debug: 4.3.7 delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -16637,12 +15492,6 @@ snapshots: ky@0.33.3: {} - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - leven@3.1.0: {} levn@0.3.0: @@ -16854,7 +15703,7 @@ snapshots: metro-babel-transformer@0.73.10: dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 hermes-parser: 0.8.0 metro-source-map: 0.73.10 nullthrows: 1.1.1 @@ -16928,111 +15777,56 @@ snapshots: dependencies: uglify-es: 3.3.9 - metro-react-native-babel-preset@0.73.10(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/template': 7.25.0 - react-refresh: 0.4.3 - transitivePeerDependencies: - - supports-color - - metro-react-native-babel-preset@0.73.10(@babel/core@7.25.8): - dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.25.8) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.25.8) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.25.8) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.8) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.8) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.8) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.25.8) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.8) - '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.8) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.8) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.8) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.8) + metro-react-native-babel-preset@0.73.10(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.26.0) '@babel/template': 7.25.0 react-refresh: 0.4.3 transitivePeerDependencies: - supports-color - metro-react-native-babel-transformer@0.73.10(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - babel-preset-fbjs: 3.4.0(@babel/core@7.25.2) - hermes-parser: 0.8.0 - metro-babel-transformer: 0.73.10 - metro-react-native-babel-preset: 0.73.10(@babel/core@7.25.2) - metro-source-map: 0.73.10 - nullthrows: 1.1.1 - transitivePeerDependencies: - - supports-color - - metro-react-native-babel-transformer@0.73.10(@babel/core@7.25.8): + metro-react-native-babel-transformer@0.73.10(@babel/core@7.26.0): dependencies: - '@babel/core': 7.25.8 - babel-preset-fbjs: 3.4.0(@babel/core@7.25.8) + '@babel/core': 7.26.0 + babel-preset-fbjs: 3.4.0(@babel/core@7.26.0) hermes-parser: 0.8.0 metro-babel-transformer: 0.73.10 - metro-react-native-babel-preset: 0.73.10(@babel/core@7.25.8) + metro-react-native-babel-preset: 0.73.10(@babel/core@7.26.0) metro-source-map: 0.73.10 nullthrows: 1.1.1 transitivePeerDependencies: @@ -17073,7 +15867,7 @@ snapshots: metro-transform-plugins@0.73.10: dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/generator': 7.25.0 '@babel/template': 7.25.0 '@babel/traverse': 7.25.3 @@ -17083,11 +15877,11 @@ snapshots: metro-transform-worker@0.73.10: dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/generator': 7.25.0 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - babel-preset-fbjs: 3.4.0(@babel/core@7.25.2) + babel-preset-fbjs: 3.4.0(@babel/core@7.26.0) metro: 0.73.10 metro-babel-transformer: 0.73.10 metro-cache: 0.73.10 @@ -17105,7 +15899,7 @@ snapshots: metro@0.73.10: dependencies: '@babel/code-frame': 7.24.7 - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/generator': 7.25.0 '@babel/parser': 7.25.3 '@babel/template': 7.25.0 @@ -17137,7 +15931,7 @@ snapshots: metro-inspector-proxy: 0.73.10 metro-minify-terser: 0.73.10 metro-minify-uglify: 0.73.10 - metro-react-native-babel-preset: 0.73.10(@babel/core@7.25.2) + metro-react-native-babel-preset: 0.73.10(@babel/core@7.26.0) metro-resolver: 0.73.10 metro-runtime: 0.73.10 metro-source-map: 0.73.10 @@ -17166,11 +15960,6 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - mime-db@1.52.0: {} mime-db@1.53.0: {} @@ -17272,8 +16061,6 @@ snapshots: dependencies: '@multiformats/base-x': 4.0.1 - multiformats@12.1.3: {} - multiformats@9.7.1: {} multiformats@9.9.0: {} @@ -17288,7 +16075,7 @@ snapshots: nanoid@3.3.7: {} - nanoid@5.0.7: {} + nanoid@5.0.8: {} natural-compare@1.4.0: {} @@ -17324,7 +16111,7 @@ snapshots: nock@14.0.0-beta.16: dependencies: - '@mswjs/interceptors': 0.36.9 + '@mswjs/interceptors': 0.36.10 json-stringify-safe: 5.0.1 propagate: 2.0.1 @@ -17433,21 +16220,21 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 - oidc-provider@8.5.1: + oidc-provider@8.6.0: dependencies: '@koa/cors': 5.0.0 - '@koa/router': 12.0.1 - debug: 4.3.6 + '@koa/router': 13.1.0 + debug: 4.3.7 eta: 3.5.0 got: 13.0.0 - jose: 5.8.0 + jose: 5.9.6 jsesc: 3.0.2 koa: 2.15.3 - nanoid: 5.0.7 + nanoid: 5.0.8 object-hash: 3.0.0 oidc-token-hash: 5.0.3 quick-lru: 7.0.0 - raw-body: 2.5.2 + raw-body: 3.0.0 transitivePeerDependencies: - supports-color @@ -17638,7 +16425,7 @@ snapshots: path-to-regexp@0.1.7: {} - path-to-regexp@6.2.2: {} + path-to-regexp@6.3.0: {} path-type@4.0.0: {} @@ -17646,6 +16433,8 @@ snapshots: picocolors@1.0.1: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@3.0.1: {} @@ -17810,10 +16599,6 @@ snapshots: dependencies: side-channel: 1.0.6 - qs@6.13.0: - dependencies: - side-channel: 1.0.6 - query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 @@ -17838,6 +16623,13 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + raw-body@3.0.0: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.6.3 + unpipe: 1.0.0 + rc@1.2.8: dependencies: deep-extend: 0.6.0 @@ -17867,95 +16659,39 @@ snapshots: react-is@18.3.1: {} - react-native-codegen@0.71.6(@babel/preset-env@7.25.8(@babel/core@7.25.2)): - dependencies: - '@babel/parser': 7.25.3 - flow-parser: 0.185.2 - jscodeshift: 0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@babel/preset-env' - - supports-color - - react-native-codegen@0.71.6(@babel/preset-env@7.25.8(@babel/core@7.25.8)): + react-native-codegen@0.71.6(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: '@babel/parser': 7.25.3 flow-parser: 0.185.2 - jscodeshift: 0.14.0(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + jscodeshift: 0.14.0(@babel/preset-env@7.26.0(@babel/core@7.26.0)) nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - react-native-fs@2.20.0(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)): + react-native-fs@2.20.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)): dependencies: base-64: 0.1.0 - react-native: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1) + react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) utf8: 3.0.0 - react-native-get-random-values@1.11.0(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)): + react-native-get-random-values@1.11.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)): dependencies: fast-base64-decode: 1.0.0 - react-native: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1) + react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) react-native-gradle-plugin@0.71.19: {} - react-native-securerandom@0.1.1(react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1)): + react-native-securerandom@0.1.1(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)): dependencies: base64-js: 1.5.1 - react-native: 0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1) + react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) optional: true - react-native@0.71.19(@babel/core@7.25.2)(@babel/preset-env@7.25.8(@babel/core@7.25.2))(react@18.3.1): - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 10.2.7(@babel/core@7.25.2) - '@react-native-community/cli-platform-android': 10.2.0 - '@react-native-community/cli-platform-ios': 10.2.5 - '@react-native/assets': 1.0.0 - '@react-native/normalize-color': 2.1.0 - '@react-native/polyfills': 2.0.0 - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - base64-js: 1.5.1 - deprecated-react-native-prop-types: 3.0.2 - event-target-shim: 5.0.1 - invariant: 2.2.4 - jest-environment-node: 29.7.0 - jsc-android: 250231.0.0 - memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.73.10(@babel/core@7.25.2) - metro-runtime: 0.73.10 - metro-source-map: 0.73.10 - mkdirp: 0.5.6 - nullthrows: 1.1.1 - pretty-format: 26.6.2 - promise: 8.3.0 - react: 18.3.1 - react-devtools-core: 4.28.5 - react-native-codegen: 0.71.6(@babel/preset-env@7.25.8(@babel/core@7.25.2)) - react-native-gradle-plugin: 0.71.19 - react-refresh: 0.4.3 - react-shallow-renderer: 16.15.0(react@18.3.1) - regenerator-runtime: 0.13.11 - scheduler: 0.23.2 - stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.2(react@18.3.1) - whatwg-fetch: 3.6.20 - ws: 6.2.3 - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate - - react-native@0.71.19(@babel/core@7.25.8)(@babel/preset-env@7.25.8(@babel/core@7.25.8))(react@18.3.1): + react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 10.2.7(@babel/core@7.25.8) + '@react-native-community/cli': 10.2.7(@babel/core@7.26.0) '@react-native-community/cli-platform-android': 10.2.0 '@react-native-community/cli-platform-ios': 10.2.5 '@react-native/assets': 1.0.0 @@ -17971,7 +16707,7 @@ snapshots: jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.73.10(@babel/core@7.25.8) + metro-react-native-babel-transformer: 0.73.10(@babel/core@7.26.0) metro-runtime: 0.73.10 metro-source-map: 0.73.10 mkdirp: 0.5.6 @@ -17980,7 +16716,7 @@ snapshots: promise: 8.3.0 react: 18.3.1 react-devtools-core: 4.28.5 - react-native-codegen: 0.71.6(@babel/preset-env@7.25.8(@babel/core@7.25.8)) + react-native-codegen: 0.71.6(@babel/preset-env@7.26.0(@babel/core@7.26.0)) react-native-gradle-plugin: 0.71.19 react-refresh: 0.4.3 react-shallow-renderer: 16.15.0(react@18.3.1) @@ -18109,13 +16845,13 @@ snapshots: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.0 regjsgen: 0.8.0 - regjsparser: 0.11.1 + regjsparser: 0.11.2 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 regjsgen@0.8.0: {} - regjsparser@0.11.1: + regjsparser@0.11.2: dependencies: jsesc: 3.0.2 @@ -18549,7 +17285,7 @@ snapshots: formidable: 3.5.2 methods: 1.1.2 mime: 2.6.0 - qs: 6.13.0 + qs: 6.11.0 transitivePeerDependencies: - supports-color @@ -18704,12 +17440,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.2.4(@babel/core@7.25.8)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.8))(jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)))(typescript@5.5.4): + ts-jest@29.2.4(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)))(typescript@5.5.4): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) + jest: 29.7.0(@types/node@18.18.8)(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -18718,12 +17454,12 @@ snapshots: typescript: 5.5.4 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.25.8 + '@babel/core': 7.26.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.25.8) + babel-jest: 29.7.0(@babel/core@7.26.0) - ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4): + ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -18740,6 +17476,8 @@ snapshots: typescript: 5.5.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.40 ts-typed-json@0.3.2: optional: true @@ -18759,7 +17497,7 @@ snapshots: tsscmp@1.0.6: {} - tsx@4.19.0: + tsx@4.19.2: dependencies: esbuild: 0.23.1 get-tsconfig: 4.7.6 @@ -18842,7 +17580,7 @@ snapshots: typedarray@0.0.6: {} - typeorm@0.3.20(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)): + typeorm@0.3.20(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)): dependencies: '@sqltools/formatter': 1.2.5 app-root-path: 3.1.0 @@ -18860,7 +17598,7 @@ snapshots: uuid: 9.0.1 yargs: 17.7.2 optionalDependencies: - ts-node: 10.9.2(@types/node@18.18.8)(typescript@5.5.4) + ts-node: 10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4) transitivePeerDependencies: - supports-color @@ -18897,7 +17635,7 @@ snapshots: undici-types@5.26.5: {} - undici@6.20.1: {} + undici@6.21.0: {} unicode-canonical-property-names-ecmascript@2.0.0: {} @@ -18940,11 +17678,11 @@ snapshots: escalade: 3.1.2 picocolors: 1.0.1 - update-browserslist-db@1.1.0(browserslist@4.24.0): + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: - browserslist: 4.24.0 - escalade: 3.1.2 - picocolors: 1.0.1 + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 uri-js@4.4.1: dependencies: @@ -18991,6 +17729,10 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 + valibot@0.37.0(typescript@5.5.4): + optionalDependencies: + typescript: 5.5.4 + valibot@0.42.1(typescript@5.5.4): optionalDependencies: typescript: 5.5.4 From 7ab86da00c55927c2f90b539a1b109621925d8de Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 21 Nov 2024 23:46:32 +0100 Subject: [PATCH 2/9] docs(changeset): feat(openid4vc): add support for new dcql query syntax for oid4vp Signed-off-by: Timo Glastra --- .changeset/nice-laws-kneel.md | 5 + demo-openid/src/Holder.ts | 26 +- demo-openid/src/HolderInquirer.ts | 57 ++-- demo-openid/src/Verifier.ts | 116 +++++++- demo-openid/src/VerifierInquirer.ts | 12 +- packages/core/package.json | 2 +- packages/core/src/modules/mdoc/Mdoc.ts | 5 + .../src/modules/mdoc/MdocDeviceResponse.ts | 5 + .../src/modules/sd-jwt-vc/SdJwtVcService.ts | 4 + .../src/modules/sd-jwt-vc/decodeSdJwtVc.ts | 5 +- .../openid4vc-holder/OpenId4VcHolderApi.ts | 24 +- .../OpenId4VcIssuerModuleConfig.ts | 22 +- .../OpenId4VcIssuerService.ts | 20 +- .../OpenId4VcIssuerServiceOptions.ts | 13 +- packages/openid4vc/src/shared/transform.ts | 2 + ...c-presentation-during-issuance.e2e.test.ts | 250 +++++++++++++++--- .../openid4vc/tests/openid4vc.e2e.test.ts | 50 +--- 17 files changed, 475 insertions(+), 143 deletions(-) create mode 100644 .changeset/nice-laws-kneel.md diff --git a/.changeset/nice-laws-kneel.md b/.changeset/nice-laws-kneel.md new file mode 100644 index 0000000000..2cf3e172da --- /dev/null +++ b/.changeset/nice-laws-kneel.md @@ -0,0 +1,5 @@ +--- +'@credo-ts/openid4vc': minor +--- + +feat(openid4vc): add support for new dcql query syntax for oid4vp diff --git a/demo-openid/src/Holder.ts b/demo-openid/src/Holder.ts index 7a3aa5a23b..d11420f77e 100644 --- a/demo-openid/src/Holder.ts +++ b/demo-openid/src/Holder.ts @@ -4,7 +4,6 @@ import { AskarModule } from '@credo-ts/askar' import { W3cJwtVerifiableCredential, W3cJsonLdVerifiableCredential, - DifPresentationExchangeService, Mdoc, DidKey, DidJwk, @@ -180,19 +179,26 @@ export class Holder extends BaseAgent> } public async acceptPresentationRequest(resolvedPresentationRequest: OpenId4VcSiopResolvedAuthorizationRequest) { - const presentationExchangeService = this.agent.dependencyManager.resolve(DifPresentationExchangeService) - - if (!resolvedPresentationRequest.presentationExchange) { - throw new Error('Missing presentation exchange on resolved authorization request') + if (!resolvedPresentationRequest.presentationExchange && !resolvedPresentationRequest.dcql) { + throw new Error('Missing presentation exchange or dcql on resolved authorization request') } const submissionResult = await this.agent.modules.openId4VcHolder.acceptSiopAuthorizationRequest({ authorizationRequest: resolvedPresentationRequest.authorizationRequest, - presentationExchange: { - credentials: presentationExchangeService.selectCredentialsForRequest( - resolvedPresentationRequest.presentationExchange.credentialsForRequest - ), - }, + presentationExchange: resolvedPresentationRequest.presentationExchange + ? { + credentials: this.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( + resolvedPresentationRequest.presentationExchange.credentialsForRequest + ), + } + : undefined, + dcql: resolvedPresentationRequest.dcql + ? { + credentials: this.agent.modules.openId4VcHolder.selectCredentialsForDcqlRequest( + resolvedPresentationRequest.dcql.queryResult + ), + } + : undefined, }) return submissionResult.serverResponse diff --git a/demo-openid/src/HolderInquirer.ts b/demo-openid/src/HolderInquirer.ts index dc2dee3589..482aa98f35 100644 --- a/demo-openid/src/HolderInquirer.ts +++ b/demo-openid/src/HolderInquirer.ts @@ -5,7 +5,7 @@ import type { OpenId4VciResolvedCredentialOffer, } from '@credo-ts/openid4vc' -import { DifPresentationExchangeService, Mdoc } from '@credo-ts/core' +import { Mdoc } from '@credo-ts/core' import { preAuthorizedCodeGrantIdentifier } from '@credo-ts/openid4vc' import console, { clear } from 'console' import { textSync } from 'figlet' @@ -217,24 +217,47 @@ export class HolderInquirer extends BaseInquirer { const proofRequestUri = await this.inquireInput('Enter proof request: ') this.resolvedPresentationRequest = await this.holder.resolveProofRequest(proofRequestUri) - const presentationDefinition = this.resolvedPresentationRequest?.presentationExchange?.definition - console.log(greenText(`Presentation Purpose: '${presentationDefinition?.purpose}'`)) - - if (this.resolvedPresentationRequest?.presentationExchange?.credentialsForRequest.areRequirementsSatisfied) { - const selectedCredentials = Object.values( - this.holder.agent.dependencyManager - .resolve(DifPresentationExchangeService) - .selectCredentialsForRequest(this.resolvedPresentationRequest.presentationExchange.credentialsForRequest) - ).flatMap((e) => e) + if (this.resolvedPresentationRequest.presentationExchange) { + const presentationDefinition = this.resolvedPresentationRequest.presentationExchange.definition console.log( - greenText( - `All requirements for creating the presentation are satisfied. The following credentials will be shared`, - true - ) + greenText(`Received DIF Presentation Exchange request with purpose: '${presentationDefinition.purpose}'`) ) - selectedCredentials.forEach(this.printCredential) - } else { - console.log(redText(`No credentials available that satisfy the proof request.`)) + + if (this.resolvedPresentationRequest.presentationExchange.credentialsForRequest.areRequirementsSatisfied) { + const selectedCredentials = Object.values( + this.holder.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( + this.resolvedPresentationRequest.presentationExchange.credentialsForRequest + ) + ).flatMap((e) => e) + console.log( + greenText( + `All requirements for creating the presentation are satisfied. The following credentials will be shared`, + true + ) + ) + selectedCredentials.forEach(this.printCredential) + } else { + console.log(redText(`No credentials available that satisfy the proof request.`)) + } + } else if (this.resolvedPresentationRequest.dcql) { + console.log(greenText('Received DCQL request')) + + if (this.resolvedPresentationRequest.dcql.queryResult.canBeSatisfied) { + const selectedCredentials = Object.values( + this.holder.agent.modules.openId4VcHolder.selectCredentialsForDcqlRequest( + this.resolvedPresentationRequest.dcql.queryResult + ) + ).flatMap((e) => e.credentialRecord) + console.log( + greenText( + `All requirements for creating the presentation are satisfied. The following credentials will be shared`, + true + ) + ) + selectedCredentials.forEach(this.printCredential) + } else { + console.log(redText(`No credentials available that satisfy the proof request.`)) + } } } diff --git a/demo-openid/src/Verifier.ts b/demo-openid/src/Verifier.ts index d7d31f0f34..860bb1fe6c 100644 --- a/demo-openid/src/Verifier.ts +++ b/demo-openid/src/Verifier.ts @@ -1,4 +1,4 @@ -import type { DifPresentationExchangeDefinitionV2 } from '@credo-ts/core' +import type { DcqlQuery, DifPresentationExchangeDefinitionV2 } from '@credo-ts/core' import type { OpenId4VcVerifierRecord } from '@credo-ts/openid4vc' import { AskarModule } from '@credo-ts/askar' @@ -11,8 +11,92 @@ import { Output } from './OutputClass' const VERIFIER_HOST = process.env.VERIFIER_HOST ?? 'http://localhost:4000' +const universityDegreeDcql = { + credential_sets: [ + { + required: true, + options: [ + ['UniversityDegreeCredential-vc+sd-jwt'], + ['UniversityDegreeCredential-jwt_vc_json-ld'], + ['UniversityDegreeCredential-jwt_vc_json'], + ], + }, + ], + credentials: [ + { + id: 'UniversityDegreeCredential-vc+sd-jwt', + format: 'vc+sd-jwt', + meta: { + vct_values: ['UniversityDegree'], + }, + }, + { + id: 'UniversityDegreeCredential-jwt_vc_json-ld', + format: 'jwt_vc_json-ld', + claims: [ + { + path: ['vc', 'type'], + values: ['UniversityDegree'], + }, + ], + }, + { + id: 'UniversityDegreeCredential-jwt_vc_json', + format: 'jwt_vc_json', + claims: [ + { + path: ['vc', 'type'], + values: ['UniversityDegree'], + }, + ], + }, + ], +} satisfies DcqlQuery + +const openBadgeCredentialDcql = { + credential_sets: [ + { + required: true, + options: [ + ['OpenBadgeCredential-vc+sd-jwt'], + ['OpenBadgeCredential-jwt_vc_json-ld'], + ['OpenBadgeCredential-jwt_vc_json'], + ], + }, + ], + credentials: [ + { + id: 'OpenBadgeCredential-vc+sd-jwt', + format: 'vc+sd-jwt', + meta: { + vct_values: ['OpenBadgeCredential'], + }, + }, + { + id: 'OpenBadgeCredential-jwt_vc_json-ld', + format: 'jwt_vc_json-ld', + claims: [ + { + path: ['vc', 'type'], + values: ['OpenBadgeCredential'], + }, + ], + }, + { + id: 'OpenBadgeCredential-jwt_vc_json', + format: 'jwt_vc_json', + claims: [ + { + path: ['vc', 'type'], + values: ['OpenBadgeCredential'], + }, + ], + }, + ], +} satisfies DcqlQuery + const universityDegreePresentationDefinition = { - id: 'UniversityDegreeCredential', + id: 'UniversityDegreeCredential - DIF Presentation Exchange', purpose: 'Present your UniversityDegreeCredential to verify your education level.', input_descriptors: [ { @@ -34,7 +118,7 @@ const universityDegreePresentationDefinition = { } const openBadgeCredentialPresentationDefinition = { - id: 'OpenBadgeCredential', + id: 'OpenBadgeCredential - DIF Presentation Exchange', purpose: 'Provide proof of employment to confirm your employment status.', input_descriptors: [ { @@ -60,6 +144,11 @@ export const presentationDefinitions = [ openBadgeCredentialPresentationDefinition, ] +export const dcqls = [ + { id: 'UniversityDegreeCredential - DCQL', dcql: universityDegreeDcql }, + { id: 'OpenBadgeCredential - DCQL', dcql: openBadgeCredentialDcql }, +] + export class Verifier extends BaseAgent<{ askar: AskarModule; openId4VcVerifier: OpenId4VcVerifierModule }> { public verifierRecord!: OpenId4VcVerifierRecord @@ -90,16 +179,29 @@ export class Verifier extends BaseAgent<{ askar: AskarModule; openId4VcVerifier: } // TODO: add method to show the received presentation submission - public async createProofRequest(presentationDefinition: DifPresentationExchangeDefinitionV2) { + public async createProofRequest({ + presentationDefinition, + dcql, + }: { + presentationDefinition?: DifPresentationExchangeDefinitionV2 + dcql?: DcqlQuery + }) { const { authorizationRequest } = await this.agent.modules.openId4VcVerifier.createAuthorizationRequest({ requestSigner: { method: 'did', didUrl: this.verificationMethod.id, }, verifierId: this.verifierRecord.verifierId, - presentationExchange: { - definition: presentationDefinition, - }, + presentationExchange: presentationDefinition + ? { + definition: presentationDefinition, + } + : undefined, + dcql: dcql + ? { + query: dcql, + } + : undefined, }) return authorizationRequest diff --git a/demo-openid/src/VerifierInquirer.ts b/demo-openid/src/VerifierInquirer.ts index 96fa61c68b..df1f8b02c6 100644 --- a/demo-openid/src/VerifierInquirer.ts +++ b/demo-openid/src/VerifierInquirer.ts @@ -3,7 +3,7 @@ import { textSync } from 'figlet' import { BaseInquirer } from './BaseInquirer' import { Title, purpleText } from './OutputClass' -import { Verifier, presentationDefinitions } from './Verifier' +import { Verifier, dcqls, presentationDefinitions } from './Verifier' export const runVerifier = async () => { clear() @@ -49,11 +49,15 @@ export class VerifierInquirer extends BaseInquirer { } public async createProofRequest() { - const presentationDefinitionId = await this.pickOne(presentationDefinitions.map((p) => p.id)) + const presentationDefinitionId = await this.pickOne([ + ...presentationDefinitions.map((p) => p.id), + ...dcqls.map((d) => d.id), + ]) const presentationDefinition = presentationDefinitions.find((p) => p.id === presentationDefinitionId) - if (!presentationDefinition) throw new Error('No presentation definition found') + const dcql = dcqls.find((dcql) => dcql.id === presentationDefinitionId)?.dcql + if (!presentationDefinition && !dcql) throw new Error('No presentation definition found') - const proofRequest = await this.verifier.createProofRequest(presentationDefinition) + const proofRequest = await this.verifier.createProofRequest({ presentationDefinition, dcql }) console.log(purpleText(`Proof request for the presentation of an ${presentationDefinitionId}.\n'${proofRequest}'`)) } diff --git a/packages/core/package.json b/packages/core/package.json index 3b4ca52f8a..6ce63ed427 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@digitalcredentials/jsonld": "^6.0.0", - "dcql": "^0.2.8", + "dcql": "^0.2.11", "@digitalcredentials/jsonld-signatures": "^9.4.0", "@digitalcredentials/vc": "^6.0.1", "@multiformats/base-x": "^4.0.1", diff --git a/packages/core/src/modules/mdoc/Mdoc.ts b/packages/core/src/modules/mdoc/Mdoc.ts index 85ee56e00c..ee68dc4fe5 100644 --- a/packages/core/src/modules/mdoc/Mdoc.ts +++ b/packages/core/src/modules/mdoc/Mdoc.ts @@ -12,6 +12,7 @@ import { } from '@animo-id/mdoc' import { getJwkFromKey, JwaSignatureAlgorithm } from '../../crypto' +import { ClaimFormat } from '../vc' import { X509Certificate, X509ModuleConfig } from '../x509' import { TypedArrayEncoder } from './../../utils' @@ -29,6 +30,10 @@ export class Mdoc { this.base64Url = TypedArrayEncoder.toBase64URL(cborEncode(issuerSigned)) } + public get claimFormat() { + return ClaimFormat.MsoMdoc as const + } + public static fromBase64Url(mdocBase64Url: string, expectedDocType?: string): Mdoc { const issuerSignedDocument = parseIssuerSigned(TypedArrayEncoder.fromBase64(mdocBase64Url), expectedDocType) return new Mdoc(issuerSignedDocument) diff --git a/packages/core/src/modules/mdoc/MdocDeviceResponse.ts b/packages/core/src/modules/mdoc/MdocDeviceResponse.ts index a0edce5e60..73e281e060 100644 --- a/packages/core/src/modules/mdoc/MdocDeviceResponse.ts +++ b/packages/core/src/modules/mdoc/MdocDeviceResponse.ts @@ -25,6 +25,7 @@ import { import { CredoError } from '../../error' import { uuid } from '../../utils/uuid' +import { ClaimFormat } from '../vc' import { X509Certificate } from '../x509/X509Certificate' import { X509ModuleConfig } from '../x509/X509ModuleConfig' @@ -36,6 +37,10 @@ import { MdocError } from './MdocError' export class MdocDeviceResponse { private constructor(public base64Url: string, public documents: Mdoc[]) {} + public get claimFormat() { + return ClaimFormat.MsoMdoc as const + } + public static fromBase64Url(base64Url: string) { const parsed = parseDeviceResponse(TypedArrayEncoder.fromBase64(base64Url)) if (parsed.status !== MDocStatus.OK) { diff --git a/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts b/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts index 346e512737..b1b83f3c03 100644 --- a/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts +++ b/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts @@ -24,6 +24,7 @@ import { TypedArrayEncoder, nowInSeconds } from '../../utils' import { getDomainFromUrl } from '../../utils/domain' import { fetchWithTimeout } from '../../utils/fetch' import { DidResolverService, parseDid, getKeyFromVerificationMethod } from '../dids' +import { ClaimFormat } from '../vc' import { X509Certificate, X509ModuleConfig } from '../x509' import { SdJwtVcError } from './SdJwtVcError' @@ -37,6 +38,7 @@ export interface SdJwtVc< Header extends SdJwtVcHeader = SdJwtVcHeader, Payload extends SdJwtVcPayload = SdJwtVcPayload > { + claimFormat: ClaimFormat.SdJwtVc compact: string header: Header @@ -133,6 +135,7 @@ export class SdJwtVcService { prettyClaims, header: header, payload: sdjwtPayload, + claimFormat: ClaimFormat.SdJwtVc, } satisfies SdJwtVc } @@ -226,6 +229,7 @@ export class SdJwtVcService { header: sdJwtVc.jwt.header as Header, compact: compactSdJwtVc, prettyClaims: await sdJwtVc.getClaims(sdJwtVcHasher), + claimFormat: ClaimFormat.SdJwtVc, } satisfies SdJwtVc try { diff --git a/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts b/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts index 81341c7878..7d1ccbd52c 100644 --- a/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts +++ b/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts @@ -1,9 +1,11 @@ import type { SdJwtVcHeader, SdJwtVcPayload } from './SdJwtVcOptions' +import type { SdJwtVc } from './SdJwtVcService' import type { SdJwtVcTypeMetadata } from './typeMetadata' import { decodeSdJwtSync, getClaimsSync } from '@sd-jwt/decode' import { Hasher } from '../../crypto' +import { ClaimFormat } from '../vc' export function sdJwtVcHasher(data: string | ArrayBufferLike, alg: string) { return Hasher.hash(typeof data === 'string' ? data : new Uint8Array(data), alg) @@ -12,7 +14,7 @@ export function sdJwtVcHasher(data: string | ArrayBufferLike, alg: string) { export function decodeSdJwtVc< Header extends SdJwtVcHeader = SdJwtVcHeader, Payload extends SdJwtVcPayload = SdJwtVcPayload ->(compactSdJwtVc: string, typeMetadata?: SdJwtVcTypeMetadata) { +>(compactSdJwtVc: string, typeMetadata?: SdJwtVcTypeMetadata): SdJwtVc { // NOTE: we use decodeSdJwtSync so we can make this method sync const { jwt, disclosures } = decodeSdJwtSync(compactSdJwtVc, sdJwtVcHasher) const prettyClaims = getClaimsSync(jwt.payload, disclosures, sdJwtVcHasher) @@ -23,5 +25,6 @@ export function decodeSdJwtVc< payload: jwt.payload as Payload, prettyClaims: prettyClaims as Payload, typeMetadata, + claimFormat: ClaimFormat.SdJwtVc, } } diff --git a/packages/openid4vc/src/openid4vc-holder/OpenId4VcHolderApi.ts b/packages/openid4vc/src/openid4vc-holder/OpenId4VcHolderApi.ts index 70aadbc314..e2048f120e 100644 --- a/packages/openid4vc/src/openid4vc-holder/OpenId4VcHolderApi.ts +++ b/packages/openid4vc/src/openid4vc-holder/OpenId4VcHolderApi.ts @@ -9,7 +9,14 @@ import type { } from './OpenId4VciHolderServiceOptions' import type { OpenId4VcSiopAcceptAuthorizationRequestOptions } from './OpenId4vcSiopHolderServiceOptions' -import { injectable, AgentContext, DifPresentationExchangeService, DifPexCredentialsForRequest } from '@credo-ts/core' +import { + injectable, + AgentContext, + DifPresentationExchangeService, + DifPexCredentialsForRequest, + DcqlQueryResult, + DcqlService, +} from '@credo-ts/core' import { OpenId4VciMetadata } from '../shared' @@ -25,7 +32,8 @@ export class OpenId4VcHolderApi { private agentContext: AgentContext, private openId4VciHolderService: OpenId4VciHolderService, private openId4VcSiopHolderService: OpenId4VcSiopHolderService, - private difPresentationExchangeService: DifPresentationExchangeService + private difPresentationExchangeService: DifPresentationExchangeService, + private dcqlService: DcqlService ) {} /** @@ -59,13 +67,21 @@ export class OpenId4VcHolderApi { } /** - * Automatically select credentials from available credentials for a request. Can be called after calling + * Automatically select credentials from available credentials for a presentation exchange request. Can be called after calling * @see resolveSiopAuthorizationRequest. */ - public selectCredentialsForRequest(credentialsForRequest: DifPexCredentialsForRequest) { + public selectCredentialsForPresentationExchangeRequest(credentialsForRequest: DifPexCredentialsForRequest) { return this.difPresentationExchangeService.selectCredentialsForRequest(credentialsForRequest) } + /** + * Automatically select credentials from available credentials for a dcql request. Can be called after calling + * @see resolveSiopAuthorizationRequest. + */ + public selectCredentialsForDcqlRequest(dcqlQueryResult: DcqlQueryResult) { + return this.dcqlService.selectCredentialsForRequest(dcqlQueryResult) + } + public async resolveIssuerMetadata(credentialIssuer: string): Promise { return await this.openId4VciHolderService.resolveIssuerMetadata(this.agentContext, credentialIssuer) } diff --git a/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerModuleConfig.ts b/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerModuleConfig.ts index 2056824d14..cea815a19f 100644 --- a/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerModuleConfig.ts +++ b/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerModuleConfig.ts @@ -132,8 +132,19 @@ export class OpenId4VcIssuerModuleConfig { private options: OpenId4VcIssuerModuleConfigOptions public readonly router: Router + /** + * Callback to get a verification session that needs to be fulfilled for the authorization of + * of a credential issuance session. Once the verification session has been completed the user can + * retrieve an authorization code and access token and retrieve the credential(s). + * + * Required if presentation during issuance flow is used + */ + public getVerificationSessionForIssuanceSessionAuthorization?: OpenId4VciGetVerificationSessionForIssuanceSessionAuthorization + public constructor(options: OpenId4VcIssuerModuleConfigOptions) { this.options = options + this.getVerificationSessionForIssuanceSessionAuthorization = + options.getVerificationSessionForIssuanceSessionAuthorization this.router = options.router ?? importExpress().Router() } @@ -149,17 +160,6 @@ export class OpenId4VcIssuerModuleConfig { return this.options.credentialRequestToCredentialMapper } - /** - * Callback to get a verification session that needs to be fulfilled for the authorization of - * of a credential issuance session. Once the verification session has been completed the user can - * retrieve an authorization code and access token and retrieve the credential(s). - * - * Required if presentation during issuance flow is used - */ - public get getVerificationSessionForIssuanceSessionAuthorization() { - return this.options.getVerificationSessionForIssuanceSessionAuthorization - } - /** * The time after which a cNone will expire. * diff --git a/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerService.ts b/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerService.ts index c874fa0995..3f9b34cb34 100644 --- a/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerService.ts +++ b/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerService.ts @@ -839,16 +839,22 @@ export class OpenId4VcIssuerService { const response = await verifierApi.getVerifiedAuthorizationResponse( issuanceSession.presentation.openId4VcVerificationSessionId ) - if (!response.presentationExchange) { + + if (response.presentationExchange) { + verification = { + session, + presentationExchange: response.presentationExchange, + } + } else if (response.dcql) { + verification = { + session, + dcql: response.dcql, + } + } else { throw new CredoError( - `Verified authorization response for verification session with id '${session.id}' does not have presenationExchange defined.` + `Verified authorization response for verification session with id '${session.id}' does not have presenationExchange or dcql defined.` ) } - - verification = { - session, - presentationExchange: response.presentationExchange, - } } const holderBindings = await this.getHolderBindingFromRequestProofs(agentContext, options.proofSigners) diff --git a/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerServiceOptions.ts b/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerServiceOptions.ts index 6425fc0aa0..331102f90c 100644 --- a/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerServiceOptions.ts +++ b/packages/openid4vc/src/openid4vc-issuer/OpenId4VcIssuerServiceOptions.ts @@ -1,6 +1,7 @@ import type { OpenId4VcIssuanceSessionRecord, OpenId4VcIssuerRecordProps } from './repository' import type { OpenId4VcSiopCreateAuthorizationRequestReturn, + OpenId4VcSiopVerifiedAuthorizationResponseDcql, OpenId4VcSiopVerifiedAuthorizationResponsePresentationExchange, OpenId4VcVerificationSessionRecord, } from '../openid4vc-verifier' @@ -188,8 +189,16 @@ export interface OpenId4VciCredentialRequestToCredentialMapperOptions { */ verification?: { session: OpenId4VcVerificationSessionRecord - presentationExchange: OpenId4VcSiopVerifiedAuthorizationResponsePresentationExchange - } + } & ( + | { + presentationExchange: OpenId4VcSiopVerifiedAuthorizationResponsePresentationExchange + dcql?: never + } + | { + dcql: OpenId4VcSiopVerifiedAuthorizationResponseDcql + presentationExchange?: never + } + ) /** * The issuance session associated with the credential request. You can extract the diff --git a/packages/openid4vc/src/shared/transform.ts b/packages/openid4vc/src/shared/transform.ts index 9ea3273c72..ebe18e6cb5 100644 --- a/packages/openid4vc/src/shared/transform.ts +++ b/packages/openid4vc/src/shared/transform.ts @@ -17,6 +17,7 @@ import { Mdoc, TypedArrayEncoder, MdocDeviceResponse, + ClaimFormat, } from '@credo-ts/core' export function getSphereonVerifiableCredential( @@ -73,6 +74,7 @@ export function getVerifiablePresentationFromSphereonWrapped( header, payload: wrappedVerifiablePresentation.presentation.signedPayload, prettyClaims: wrappedVerifiablePresentation.presentation.decodedPayload, + claimFormat: ClaimFormat.SdJwtVc, } satisfies SdJwtVc } else if (wrappedVerifiablePresentation.format === 'mso_mdoc') { if (typeof wrappedVerifiablePresentation.original !== 'string') { diff --git a/packages/openid4vc/tests/openid4vc-presentation-during-issuance.e2e.test.ts b/packages/openid4vc/tests/openid4vc-presentation-during-issuance.e2e.test.ts index 329292773e..cb86bbaa24 100644 --- a/packages/openid4vc/tests/openid4vc-presentation-during-issuance.e2e.test.ts +++ b/packages/openid4vc/tests/openid4vc-presentation-during-issuance.e2e.test.ts @@ -1,7 +1,10 @@ import type { AgentType } from './utils' -import type { OpenId4VciSignSdJwtCredentials } from '../src' +import type { + OpenId4VciGetVerificationSessionForIssuanceSessionAuthorization, + OpenId4VciSignSdJwtCredentials, +} from '../src' import type { OpenId4VciCredentialBindingResolver } from '../src/openid4vc-holder' -import type { DifPresentationExchangeDefinitionV2, SdJwtVc, SdJwtVcIssuer } from '@credo-ts/core' +import type { DcqlQuery, DifPresentationExchangeDefinitionV2, SdJwtVc, SdJwtVcIssuer } from '@credo-ts/core' import { AuthorizationFlow } from '@animo-id/oid4vci' import { ClaimFormat, getJwkFromKey } from '@credo-ts/core' @@ -21,6 +24,26 @@ import { import { waitForCredentialIssuanceSessionRecordSubject, createAgentFromModules } from './utils' import { universityDegreeCredentialConfigurationSupported } from './utilsVci' +const dcqlQuery = { + credentials: [ + { + id: 'e498bd12-be8f-4884-8ffe-2704176b99be', + format: 'vc+sd-jwt', + claims: [ + { + path: ['given_name'], + }, + { + path: ['family_name'], + }, + ], + meta: { + vct_values: ['urn:eu.europa.ec.eudi:pid:1'], + }, + }, + ], +} satisfies DcqlQuery + const presentationDefinition = { id: 'a34cff9d-a825-4283-9d9a-e84f97ebdd08', input_descriptors: [ @@ -60,16 +83,50 @@ const baseUrl = 'http://localhost:4871' const issuerBaseUrl = `${baseUrl}/oid4vci` const verifierBaseUrl = `${baseUrl}/oid4vp` +let issuer: AgentType<{ + openId4VcIssuer: OpenId4VcIssuerModule + openId4VcVerifier: OpenId4VcVerifierModule + askar: AskarModule +}> + +const getVerificationSessionForIssuanceSessionAuthorization = + (queryMethod: 'dcql' | 'presentationDefinition'): OpenId4VciGetVerificationSessionForIssuanceSessionAuthorization => + async ({ issuanceSession, scopes }) => { + if (scopes.includes(universityDegreeCredentialConfigurationSupported.scope)) { + const createRequestReturn = await issuer.agent.modules.openId4VcVerifier.createAuthorizationRequest({ + verifierId: issuanceSession.issuerId, + requestSigner: { + method: 'x5c', + x5c: [issuer.certificate.toString('base64')], + }, + responseMode: 'direct_post.jwt', + presentationExchange: + queryMethod === 'presentationDefinition' + ? { + definition: presentationDefinition, + } + : undefined, + dcql: + queryMethod === 'dcql' + ? { + query: dcqlQuery, + } + : undefined, + }) + + return { + ...createRequestReturn, + scopes: [universityDegreeCredentialConfigurationSupported.scope], + } + } + + throw new Error('Unsupported scope values') + } + describe('OpenId4Vc Presentation During Issuance', () => { let expressApp: Express let clearNock: () => void - let issuer: AgentType<{ - openId4VcIssuer: OpenId4VcIssuerModule - openId4VcVerifier: OpenId4VcVerifierModule - askar: AskarModule - }> - let holder: AgentType<{ openId4VcHolder: OpenId4VcHolderModule askar: AskarModule @@ -81,28 +138,8 @@ describe('OpenId4Vc Presentation During Issuance', () => { issuer = await createAgentFromModules('issuer', { openId4VcIssuer: new OpenId4VcIssuerModule({ baseUrl: issuerBaseUrl, - getVerificationSessionForIssuanceSessionAuthorization: async ({ issuanceSession, scopes }) => { - if (scopes.includes(universityDegreeCredentialConfigurationSupported.scope)) { - const createRequestReturn = await issuer.agent.modules.openId4VcVerifier.createAuthorizationRequest({ - verifierId: issuanceSession.issuerId, - requestSigner: { - method: 'x5c', - x5c: [issuer.certificate.toString('base64')], - }, - responseMode: 'direct_post.jwt', - presentationExchange: { - definition: presentationDefinition, - }, - }) - - return { - ...createRequestReturn, - scopes: [universityDegreeCredentialConfigurationSupported.scope], - } - } - - throw new Error('Unsupported scope values') - }, + getVerificationSessionForIssuanceSessionAuthorization: + getVerificationSessionForIssuanceSessionAuthorization('presentationDefinition'), credentialRequestToCredentialMapper: async ({ credentialRequest, holderBindings, @@ -114,15 +151,29 @@ describe('OpenId4Vc Presentation During Issuance', () => { } const credentialConfigurationId = credentialConfigurationIds[0] - const descriptor = verification.presentationExchange.descriptors.find( - (descriptor) => descriptor.descriptor.id === presentationDefinition.input_descriptors[0].id - ) + let credential: SdJwtVc - if (!descriptor || descriptor.format !== ClaimFormat.SdJwtVc) { - throw new Error('Expected descriptor with sd-jwt vc format') + if (verification.presentationExchange) { + const descriptor = verification.presentationExchange.descriptors.find( + (descriptor) => descriptor.descriptor.id === presentationDefinition.input_descriptors[0].id + ) + + if (!descriptor || descriptor.format !== ClaimFormat.SdJwtVc) { + throw new Error('Expected descriptor with sd-jwt vc format') + } + + credential = descriptor.credential + } else { + const presentation = verification.dcql.presentationRecord[verification.dcql.query.credentials[0].id] + + if (presentation.claimFormat !== ClaimFormat.SdJwtVc) { + throw new Error('Expected preentation with sd-jwt vc format') + } + + credential = presentation } - const fullName = `${descriptor.credential.prettyClaims.given_name} ${descriptor.credential.prettyClaims.family_name}` + const fullName = `${credential.prettyClaims.given_name} ${credential.prettyClaims.family_name}` if (credentialRequest.format === 'vc+sd-jwt') { return { @@ -182,7 +233,7 @@ describe('OpenId4Vc Presentation During Issuance', () => { jwk: getJwkFromKey(holder.key), }) - it('e2e flow with requesting presentation of credentials before issuance succeeds', async () => { + it('e2e flow with requesting presentation of credentials before issuance succeeds with presentation definition', async () => { const issuerRecord = await issuer.agent.modules.openId4VcIssuer.createIssuer({ issuerId: '2f9c0385-7191-4c50-aa22-40cf5839d52b', credentialConfigurationsSupported: { @@ -250,7 +301,7 @@ describe('OpenId4Vc Presentation During Issuance', () => { } // Submit presentation - const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForRequest( + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( resolvedPresentationRequest.presentationExchange.credentialsForRequest ) const siopResult = await holder.agent.modules.openId4VcHolder.acceptSiopAuthorizationRequest({ @@ -302,6 +353,129 @@ describe('OpenId4Vc Presentation During Issuance', () => { expect(sdJwtVc.prettyClaims.full_name).toEqual('Erika Powerstar') }) + it('e2e flow with requesting presentation of credentials before issuance succeeds with dcql query', async () => { + issuer.agent.modules.openId4VcIssuer.config.getVerificationSessionForIssuanceSessionAuthorization = + getVerificationSessionForIssuanceSessionAuthorization('dcql') + + const issuerRecord = await issuer.agent.modules.openId4VcIssuer.createIssuer({ + issuerId: '2f9c0385-7191-4c50-aa22-40cf5839d52b', + credentialConfigurationsSupported: { + universityDegree: universityDegreeCredentialConfigurationSupported, + }, + }) + + const x5cIssuer = { + method: 'x5c', + x5c: [issuer.certificate.toString('base64')], + issuer: baseUrl, + } satisfies SdJwtVcIssuer + + await issuer.agent.modules.openId4VcVerifier.createVerifier({ + verifierId: '2f9c0385-7191-4c50-aa22-40cf5839d52b', + }) + + // Pre-store identity credential + const holderIdentityCredential = await issuer.agent.sdJwtVc.sign({ + issuer: x5cIssuer, + payload: { + vct: 'urn:eu.europa.ec.eudi:pid:1', + given_name: 'Erika', + family_name: 'Powerstar', + }, + disclosureFrame: { + _sd: ['given_name', 'family_name'], + }, + holder: { + method: 'jwk', + jwk: holder.jwk, + }, + }) + await holder.agent.sdJwtVc.store(holderIdentityCredential.compact) + + // Create offer for university degree + const { issuanceSession, credentialOffer } = await issuer.agent.modules.openId4VcIssuer.createCredentialOffer({ + issuerId: issuerRecord.issuerId, + offeredCredentials: ['universityDegree'], + authorizationCodeFlowConfig: { + requirePresentationDuringIssuance: true, + }, + }) + + // Resolve offer + const resolvedCredentialOffer = await holder.agent.modules.openId4VcHolder.resolveCredentialOffer(credentialOffer) + const resolvedAuthorization = await holder.agent.modules.openId4VcHolder.resolveIssuanceAuthorizationRequest( + resolvedCredentialOffer, + { + clientId: 'foo', + redirectUri: 'http://localhost:1234/redirect', + scope: getScopesFromCredentialConfigurationsSupported(resolvedCredentialOffer.offeredCredentialConfigurations), + } + ) + + // Ensure presentation request + if (resolvedAuthorization.authorizationFlow !== AuthorizationFlow.PresentationDuringIssuance) { + throw new Error('Not supported') + } + const resolvedPresentationRequest = await holder.agent.modules.openId4VcHolder.resolveSiopAuthorizationRequest( + resolvedAuthorization.oid4vpRequestUrl + ) + if (!resolvedPresentationRequest.dcql) { + throw new Error('Missing dcql') + } + + // Submit presentation + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForDcqlRequest( + resolvedPresentationRequest.dcql.queryResult + ) + const siopResult = await holder.agent.modules.openId4VcHolder.acceptSiopAuthorizationRequest({ + authorizationRequest: resolvedPresentationRequest.authorizationRequest, + dcql: { + credentials: selectedCredentials, + }, + }) + expect(siopResult.serverResponse.status).toEqual(200) + expect(siopResult.ok).toEqual(true) + if (!siopResult.ok) { + throw new Error('not ok') + } + + // Request authorization code + const { authorizationCode } = await holder.agent.modules.openId4VcHolder.retrieveAuthorizationCodeUsingPresentation( + { + authSession: resolvedAuthorization.authSession, + resolvedCredentialOffer, + presentationDuringIssuanceSession: siopResult.presentationDuringIssuanceSession, + } + ) + + // Request access token + const tokenResponse = await holder.agent.modules.openId4VcHolder.requestToken({ + resolvedCredentialOffer, + code: authorizationCode, + clientId: 'foo', + redirectUri: 'http://localhost:1234/redirect', + }) + + // Request credential + const credentialResponse = await holder.agent.modules.openId4VcHolder.requestCredentials({ + resolvedCredentialOffer, + ...tokenResponse, + clientId: 'foo', + credentialBindingResolver, + }) + + await waitForCredentialIssuanceSessionRecordSubject(issuer.replaySubject, { + state: OpenId4VcIssuanceSessionState.Completed, + issuanceSessionId: issuanceSession.id, + }) + + expect(credentialResponse.credentials).toHaveLength(1) + const compactSdJwtVc = (credentialResponse.credentials[0].credentials[0] as SdJwtVc).compact + const sdJwtVc = holder.agent.sdJwtVc.fromCompact(compactSdJwtVc) + expect(sdJwtVc.payload.vct).toEqual(universityDegreeCredentialConfigurationSupported.vct) + expect(sdJwtVc.prettyClaims.full_name).toEqual('Erika Powerstar') + }) + it('e2e flow with requesting presentation of credentials before issuance but fails because presentation not verified', async () => { const issuerRecord = await issuer.agent.modules.openId4VcIssuer.createIssuer({ issuerId: '2f9c0385-7191-4c50-aa22-40cf5839d52b', diff --git a/packages/openid4vc/tests/openid4vc.e2e.test.ts b/packages/openid4vc/tests/openid4vc.e2e.test.ts index f0aa9c60a1..2b06e6865d 100644 --- a/packages/openid4vc/tests/openid4vc.e2e.test.ts +++ b/packages/openid4vc/tests/openid4vc.e2e.test.ts @@ -45,7 +45,6 @@ import { JwtPayload, SdJwtVcRecord, MdocRecord, - DcqlService, } from '@credo-ts/core' import express, { type Express } from 'express' @@ -56,7 +55,6 @@ import { OpenId4VcHolderModule, OpenId4VcIssuanceSessionState, OpenId4VcIssuerModule, - OpenId4VcVerificationSessionRepository, OpenId4VcVerificationSessionState, OpenId4VcVerifierModule, } from '../src' @@ -1045,7 +1043,7 @@ describe('OpenId4Vc', () => { throw new Error('Presentation exchange not defined') } - const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForRequest( + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( resolvedAuthorizationRequest.presentationExchange.credentialsForRequest ) @@ -1275,7 +1273,7 @@ describe('OpenId4Vc', () => { throw new Error('Presentation exchange not defined') } - const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForRequest( + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( resolvedAuthorizationRequest.presentationExchange.credentialsForRequest ) @@ -1576,7 +1574,7 @@ describe('OpenId4Vc', () => { throw new Error('Presentation exchange not defined') } - const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForRequest( + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( resolvedAuthorizationRequest.presentationExchange.credentialsForRequest ) @@ -2074,7 +2072,7 @@ describe('OpenId4Vc', () => { throw new Error('Presentation exchange not defined') } - const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForRequest( + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( resolvedAuthorizationRequest.presentationExchange.credentialsForRequest ) @@ -2291,12 +2289,6 @@ describe('OpenId4Vc', () => { ], } satisfies DcqlQuery - // Hack to make it work with x5c check - // @ts-expect-error - verifier.agent.modules.openId4VcVerifier.config.options.baseUrl = - // @ts-expect-error - verifier.agent.modules.openId4VcVerifier.config.options.baseUrl.replace('http://', 'https://') - const { authorizationRequest, verificationSession } = await verifier.agent.modules.openId4VcVerifier.createAuthorizationRequest({ responseMode: 'direct_post.jwt', @@ -2309,28 +2301,8 @@ describe('OpenId4Vc', () => { dcql: { query: dcqlQuery }, }) - // Hack to make it work with x5c checks - verificationSession.authorizationRequestUri = verificationSession.authorizationRequestUri.replace('https', 'http') - const verificationSessionRepoitory = verifier.agent.dependencyManager.resolve( - OpenId4VcVerificationSessionRepository - ) - await verificationSessionRepoitory.update(verifier.agent.context, verificationSession) - - // Hack to make it work with x5c check - // @ts-expect-error - verifier.agent.modules.openId4VcVerifier.config.options.baseUrl = - // @ts-expect-error - verifier.agent.modules.openId4VcVerifier.config.options.baseUrl.replace('https://', 'http://') - - expect(authorizationRequest.replace('https', 'http')).toEqual( - `openid4vp://?client_id=localhost%3A1234&request_uri=${encodeURIComponent( - verificationSession.authorizationRequestUri - )}` - ) - const resolvedAuthorizationRequest = await holder.agent.modules.openId4VcHolder.resolveSiopAuthorizationRequest( - // hack to make it work on localhost - authorizationRequest.replace('https', 'http') + authorizationRequest ) expect(resolvedAuthorizationRequest.dcql).toEqual({ @@ -2396,13 +2368,9 @@ describe('OpenId4Vc', () => { throw new Error('Dcql not defined') } - // TODO: better way to auto-select - const dcqlService = holder.agent.dependencyManager.resolve(DcqlService) - const selectedCredentials = dcqlService.selectCredentialsForRequest(resolvedAuthorizationRequest.dcql.queryResult) - - // Hack to make it work with x5c - resolvedAuthorizationRequest.authorizationRequest.responseURI = - resolvedAuthorizationRequest.authorizationRequest.responseURI?.replace('https', 'http') + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForDcqlRequest( + resolvedAuthorizationRequest.dcql.queryResult + ) const { serverResponse, submittedResponse } = await holder.agent.modules.openId4VcHolder.acceptSiopAuthorizationRequest({ @@ -2641,7 +2609,7 @@ describe('OpenId4Vc', () => { throw new Error('Presentation exchange not defined') } - const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForRequest( + const selectedCredentials = holder.agent.modules.openId4VcHolder.selectCredentialsForPresentationExchangeRequest( resolvedAuthorizationRequest.presentationExchange.credentialsForRequest ) From 17189ce2e15c0e785f00e44489002bc4526e5bdc Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 21 Nov 2024 23:47:34 +0100 Subject: [PATCH 3/9] docs(changeset): feat: add `claimFormat` to `Mdoc`, `MdocDeviceResponse` and `SdJwtVc` to allow for easier type narrowing Signed-off-by: Timo Glastra --- .changeset/tame-stingrays-wash.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tame-stingrays-wash.md diff --git a/.changeset/tame-stingrays-wash.md b/.changeset/tame-stingrays-wash.md new file mode 100644 index 0000000000..6efb29c349 --- /dev/null +++ b/.changeset/tame-stingrays-wash.md @@ -0,0 +1,5 @@ +--- +'@credo-ts/core': patch +--- + +feat: add `claimFormat` to `Mdoc`, `MdocDeviceResponse` and `SdJwtVc` to allow for easier type narrowing From 1cec2c8d08c47e818f598e2351d8bff9996c562e Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 21 Nov 2024 23:48:10 +0100 Subject: [PATCH 4/9] remove zod Signed-off-by: Timo Glastra --- packages/openid4vc/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/openid4vc/package.json b/packages/openid4vc/package.json index 4f62e9e700..b249f2d08c 100644 --- a/packages/openid4vc/package.json +++ b/packages/openid4vc/package.json @@ -32,7 +32,6 @@ "@sphereon/ssi-types": "0.30.2-next.135", "class-transformer": "^0.5.1", "rxjs": "^7.8.0", - "zod": "^3.23.8", "@animo-id/oid4vci": "0.1.3", "@animo-id/oauth2": "0.1.3" }, From 25b707e0d35fb1187118b7ff4881b27fcb20ba1c Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Thu, 21 Nov 2024 23:48:19 +0100 Subject: [PATCH 5/9] temp resolutions Signed-off-by: Timo Glastra --- package.json | 4 +- packages/openid4vc/package.json | 2 +- pnpm-lock.yaml | 293 ++++++++++++++++++++------------ 3 files changed, 189 insertions(+), 110 deletions(-) diff --git a/package.json b/package.json index 0786d91883..4dae298f94 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,9 @@ }, "resolutions": { "@types/node": "18.18.8", - "undici": "^6.20.1" + "undici": "^6.20.1", + "@sphereon/jarm": "0.16.1-fix.173", + "@sphereon/oid4vc-common": "0.16.1-fix.173" }, "engines": { "node": ">=18" diff --git a/packages/openid4vc/package.json b/packages/openid4vc/package.json index b249f2d08c..d7f75bf39a 100644 --- a/packages/openid4vc/package.json +++ b/packages/openid4vc/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@credo-ts/core": "workspace:*", - "@sphereon/did-auth-siop": "link:/Users/martinauer/Documents/Code/OID4VC/packages/siop-oid4vp", + "@sphereon/did-auth-siop": "https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke", "@sphereon/oid4vc-common": "0.16.1-fix.173", "@sphereon/ssi-types": "0.30.2-next.135", "class-transformer": "^0.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6330fc5fd8..dd887039d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,8 @@ settings: overrides: '@types/node': 18.18.8 undici: ^6.20.1 + '@sphereon/jarm': 0.16.1-fix.173 + '@sphereon/oid4vc-common': 0.16.1-fix.173 importers: @@ -521,8 +523,8 @@ importers: specifier: 0.14.1 version: 0.14.1 dcql: - specifier: ^0.2.8 - version: 0.2.8(typescript@5.5.4) + specifier: ^0.2.11 + version: 0.2.11(typescript@5.5.4) did-resolver: specifier: ^4.1.0 version: 4.1.0 @@ -736,8 +738,8 @@ importers: specifier: workspace:* version: link:../core '@sphereon/did-auth-siop': - specifier: link:/Users/martinauer/Documents/Code/OID4VC/packages/siop-oid4vp - version: link:../../../Code/OID4VC/packages/siop-oid4vp + specifier: https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke + version: https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4) '@sphereon/oid4vc-common': specifier: 0.16.1-fix.173 version: 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) @@ -750,9 +752,6 @@ importers: rxjs: specifier: ^7.8.0 version: 7.8.1 - zod: - specifier: ^3.23.8 - version: 3.23.8 devDependencies: '@credo-ts/tenants': specifier: workspace:* @@ -1563,12 +1562,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.7': - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.25.9': resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} @@ -1701,12 +1694,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.7': - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.25.9': resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} @@ -1749,24 +1736,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.25.9': resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.25.9': resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} @@ -2937,9 +2912,18 @@ packages: resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} engines: {node: '>= 8'} + '@sphereon/did-auth-siop@https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke': + resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke} + version: 0.16.0 + engines: {node: '>=18'} + '@sphereon/did-uni-client@0.6.3': resolution: {integrity: sha512-g7LD7ofbE36slHN7Bhr5dwUrj6t0BuZeXBYJMaVY/pOeL1vJxW1cZHbZqu0NSfOmzyBg4nsYVlgTjyi/Aua2ew==} + '@sphereon/jarm@0.16.1-fix.173': + resolution: {integrity: sha512-VYNuNLV+x7hKKcynC8yOJymkXPrtBRQA/Gqj50Wfhl6kx6IoRsx39s/i6xGGYPwyrNTaVGFssKzg0IDcQfxToA==} + engines: {node: '>=18'} + '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': resolution: {integrity: sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A==} bundledDependencies: [] @@ -2951,6 +2935,10 @@ packages: '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} + '@sphereon/pex@5.0.0-unstable.24': + resolution: {integrity: sha512-CZc+kr8cJqPsFSpg4kHyamr5oB5xLVP2E5eJ0pbetOfOE2uSxqk0/A8zGazcPhU1zZILrO51hD4vW/hJRgtKJQ==} + engines: {node: '>=18'} + '@sphereon/pex@5.0.0-unstable.25': resolution: {integrity: sha512-EUWfGa6t20PPkYf+zbfWXhc1sSWiFNywbRah8R6grJPU738pfwWpZPunSEY3x0CoxAVaSVXn91wZ/sxmgPCFkA==} engines: {node: '>=18'} @@ -2985,6 +2973,9 @@ packages: '@sphereon/ssi-types@0.30.1': resolution: {integrity: sha512-vbYaxQXb71sOPwDj7TRDlUGfIHKVVs8PiHfImPBgSBshrD7VpEHOrB+EwwavMm5MAQvWK/yblGmzk7FHds7SHA==} + '@sphereon/ssi-types@0.30.2-next.129': + resolution: {integrity: sha512-F1TDy9S5ajDJDp21cINXseGSux9kGA+x0KScAS+5+B/RdMGRp7bLOM+3YpQw1QGPqKxVc7JAd2gAn7AI0pAkZA==} + '@sphereon/ssi-types@0.30.2-next.135': resolution: {integrity: sha512-YLQfFMPUlOJUxHbOS9v01nG3cgLwTk3d95/rTnOmEQx9kXgXjoXdvt7D0uGcMRL3RHeQ9biT/jWY//mDvCirVQ==} @@ -4254,8 +4245,8 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - dcql@0.2.8: - resolution: {integrity: sha512-/2TbRz3Itj/as4JnmzkupNxq6slN/w07EEx9iAwb/LRI8M8ajhnSN7YQ8rFopImuZAZkPYzOs4zga7zH6xf8eg==} + dcql@0.2.11: + resolution: {integrity: sha512-hR8MuSx49b7JPoZztcFMSKEHc6iEE4l/Zs6aUsvMCWVa3qFWpuJRiJEp5Rh2+UkCAhsce94fbDpMdBTcS9zn7g==} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -5943,6 +5934,13 @@ packages: resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==} engines: {node: '>=14.16'} + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -6381,6 +6379,10 @@ packages: engines: {node: '>=12.0.0', npm: '>=6.0.0'} deprecated: This module has been superseded by the multiformats module + multiformats@12.1.3: + resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + multiformats@9.7.1: resolution: {integrity: sha512-TaVmGEBt0fhxiNJMGphBfB+oGvUxFs8KgGvgl8d3C+GWtrFcvXdJ2196eg+dYhmSFClmgFfSfJEklo+SZzdNuw==} @@ -6903,6 +6905,10 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} + qs@6.13.1: + resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} + engines: {node: '>=0.6'} + query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} @@ -8394,7 +8400,7 @@ snapshots: '@babel/generator@7.2.0': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 jsesc: 2.5.2 lodash: 4.17.21 source-map: 0.5.7 @@ -8728,8 +8734,8 @@ snapshots: '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -8749,7 +8755,7 @@ snapshots: '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': @@ -8761,7 +8767,7 @@ snapshots: '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': @@ -8815,7 +8821,7 @@ snapshots: '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': dependencies: @@ -9067,12 +9073,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9219,14 +9219,6 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9273,14 +9265,6 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9289,16 +9273,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9354,8 +9328,8 @@ snapshots: '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: @@ -9569,8 +9543,8 @@ snapshots: '@babel/preset-react@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.26.0) @@ -10306,7 +10280,7 @@ snapshots: chalk: 4.1.2 ci-info: 3.9.0 connect: 3.7.0 - debug: 4.3.6 + debug: 4.3.7 env-editor: 0.4.2 fast-glob: 3.3.2 find-yarn-workspace-root: 2.0.0 @@ -10374,7 +10348,7 @@ snapshots: '@expo/plist': 0.1.3 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 - debug: 4.3.6 + debug: 4.3.7 find-up: 5.0.0 getenv: 1.0.0 glob: 7.1.6 @@ -10425,7 +10399,7 @@ snapshots: '@expo/env@0.3.0': dependencies: chalk: 4.1.2 - debug: 4.3.6 + debug: 4.3.7 dotenv: 16.4.5 dotenv-expand: 11.0.6 getenv: 1.0.0 @@ -10456,15 +10430,15 @@ snapshots: '@expo/metro-config@0.18.11': dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@expo/config': 9.0.3 '@expo/env': 0.3.0 '@expo/json-file': 8.3.3 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 - debug: 4.3.6 + debug: 4.3.7 find-yarn-workspace-root: 2.0.0 fs-extra: 9.1.0 getenv: 1.0.0 @@ -10510,7 +10484,7 @@ snapshots: '@expo/image-utils': 0.5.1 '@expo/json-file': 8.3.3 '@react-native/normalize-colors': 0.74.85 - debug: 4.3.6 + debug: 4.3.7 expo-modules-autolinking: 1.11.2 fs-extra: 9.1.0 resolve-from: 5.0.0 @@ -11292,31 +11266,31 @@ snapshots: '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.0) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.26.0) - '@babel/template': 7.25.0 + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.25.9 '@react-native/babel-plugin-codegen': 0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 @@ -11326,7 +11300,7 @@ snapshots: '@react-native/codegen@0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.26.2 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.19.1 @@ -11455,6 +11429,45 @@ snapshots: '@sovpro/delimited-stream@1.1.0': {} + '@sphereon/did-auth-siop@https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4)': + dependencies: + '@astronautlabs/jsonpath': 1.1.2 + '@sphereon/jarm': 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4) + '@sphereon/oid4vc-common': 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) + '@sphereon/pex': 5.0.0-unstable.24 + '@sphereon/pex-models': 2.3.1 + '@sphereon/ssi-types': 0.30.2-next.129 + cross-fetch: 4.0.0 + dcql: 0.2.11(typescript@5.5.4) + debug: 4.3.7 + events: 3.3.0 + jwt-decode: 4.0.0 + language-tags: 1.0.9 + multiformats: 12.1.3 + qs: 6.13.1 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - typescript + '@sphereon/did-uni-client@0.6.3': dependencies: cross-fetch: 3.1.8 @@ -11462,6 +11475,32 @@ snapshots: transitivePeerDependencies: - encoding + '@sphereon/jarm@0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4)': + dependencies: + '@sphereon/oid4vc-common': 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) + valibot: 0.42.1(typescript@5.5.4) + transitivePeerDependencies: + - '@google-cloud/spanner' + - '@sap/hana-client' + - better-sqlite3 + - encoding + - hdb-pool + - ioredis + - mongodb + - mssql + - mysql2 + - oracledb + - pg + - pg-native + - pg-query-stream + - redis + - sql.js + - sqlite3 + - supports-color + - ts-node + - typeorm-aurora-data-api-driver + - typescript + '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': dependencies: '@js-joda/core': 5.6.3 @@ -11498,6 +11537,22 @@ snapshots: '@sphereon/pex-models@2.3.1': {} + '@sphereon/pex@5.0.0-unstable.24': + dependencies: + '@astronautlabs/jsonpath': 1.1.2 + '@sd-jwt/decode': 0.7.2 + '@sd-jwt/present': 0.7.2 + '@sd-jwt/types': 0.7.2 + '@sphereon/pex-models': 2.3.1 + '@sphereon/ssi-types': 0.30.2-next.129 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + jwt-decode: 3.1.2 + nanoid: 3.3.7 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - supports-color + '@sphereon/pex@5.0.0-unstable.25': dependencies: '@astronautlabs/jsonpath': 1.1.2 @@ -11738,6 +11793,16 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver + '@sphereon/ssi-types@0.30.2-next.129': + dependencies: + '@sd-jwt/decode': 0.7.2 + '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 + debug: 4.3.7 + events: 3.3.0 + jwt-decode: 3.1.2 + transitivePeerDependencies: + - supports-color + '@sphereon/ssi-types@0.30.2-next.135': dependencies: '@sd-jwt/decode': 0.7.2 @@ -12610,7 +12675,7 @@ snapshots: babel-plugin-react-compiler@0.0.0-experimental-7d62301-20240819: dependencies: '@babel/generator': 7.2.0 - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 chalk: 4.1.2 invariant: 2.2.4 pretty-format: 24.9.0 @@ -12649,9 +12714,9 @@ snapshots: babel-preset-expo@11.0.14(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/preset-react': 7.24.7(@babel/core@7.26.0) '@babel/preset-typescript': 7.24.7(@babel/core@7.26.0) '@react-native/babel-preset': 0.74.87(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) @@ -13275,7 +13340,7 @@ snapshots: dayjs@1.11.13: {} - dcql@0.2.8(typescript@5.5.4): + dcql@0.2.11(typescript@5.5.4): dependencies: valibot: 0.37.0(typescript@5.5.4) transitivePeerDependencies: @@ -15492,6 +15557,12 @@ snapshots: ky@0.33.3: {} + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + leven@3.1.0: {} levn@0.3.0: @@ -16061,6 +16132,8 @@ snapshots: dependencies: '@multiformats/base-x': 4.0.1 + multiformats@12.1.3: {} + multiformats@9.7.1: {} multiformats@9.9.0: {} @@ -16473,7 +16546,7 @@ snapshots: postcss@8.4.41: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.1 source-map-js: 1.2.0 preferred-pm@3.1.4: @@ -16599,6 +16672,10 @@ snapshots: dependencies: side-channel: 1.0.6 + qs@6.13.1: + dependencies: + side-channel: 1.0.6 + query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 From d7d6b501e75723871b90e99bf4d058cd6d812259 Mon Sep 17 00:00:00 2001 From: Martin Auer Date: Fri, 22 Nov 2024 11:29:36 +0100 Subject: [PATCH 6/9] fix: feedback --- packages/core/package.json | 2 +- packages/core/src/modules/dcql/DcqlService.ts | 47 ++++-- .../dcql/models/DcqlCredentialsForRequest.ts | 11 +- .../core/src/modules/dcql/models/index.ts | 12 +- .../OpenId4vcSiopHolderService.ts | 67 ++++---- .../OpenId4VcSiopVerifierService.ts | 13 +- .../OpenId4VcSiopVerifierServiceOptions.ts | 7 +- .../openid4vc/tests/openid4vc.e2e.test.ts | 10 +- pnpm-lock.yaml | 150 ++++++------------ 9 files changed, 148 insertions(+), 171 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 3b4ca52f8a..fb6b56f962 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@digitalcredentials/jsonld": "^6.0.0", - "dcql": "^0.2.8", + "dcql": "^0.2.10", "@digitalcredentials/jsonld-signatures": "^9.4.0", "@digitalcredentials/vc": "^6.0.1", "@multiformats/base-x": "^4.0.1", diff --git a/packages/core/src/modules/dcql/DcqlService.ts b/packages/core/src/modules/dcql/DcqlService.ts index 5ea6f82e45..f79534d9f8 100644 --- a/packages/core/src/modules/dcql/DcqlService.ts +++ b/packages/core/src/modules/dcql/DcqlService.ts @@ -15,8 +15,13 @@ import { } from '../vc' import { DcqlError } from './DcqlError' -import { DcqlQueryResult, DcqlCredentialsForRequest, DcqlPresentationRecord } from './models' -import { dcqlGetPresentationsToCreate } from './utils' +import { + DcqlQueryResult, + DcqlCredentialsForRequest, + DcqlPresentation as DcqlPresentation, + DcqlEncodedPresentations, +} from './models' +import { dcqlGetPresentationsToCreate as getDcqlVcPresentationsToCreate } from './utils' /** * @todo create a public api for using dif presentation exchange @@ -27,7 +32,7 @@ export class DcqlService { * Queries the wallet for credentials that match the given presentation definition. This only does an initial query based on the * schema of the input descriptors. It does not do any further filtering based on the constraints in the input descriptors. */ - private async queryCredentialForPresentationDefinition( + private async queryCredentialsForDcqlQuery( agentContext: AgentContext, dcqlQuery: DcqlQuery ): Promise> { @@ -62,7 +67,7 @@ export class DcqlService { } public async getCredentialsForRequest(agentContext: AgentContext, dcqlQuery: DcqlQuery): Promise { - const credentialRecords = await this.queryCredentialForPresentationDefinition(agentContext, dcqlQuery) + const credentialRecords = await this.queryCredentialsForDcqlQuery(agentContext, dcqlQuery) const mappedCredentials: DcqlCredentialRepresentation[] = credentialRecords.map((record) => { if (record.type === 'MdocRecord') { @@ -125,11 +130,17 @@ export class DcqlService { if (credential.success && credential.record.type === 'MdocRecord' && 'namespaces' in credential.output) { credentials[credentialQueryId] = { + claimFormat: ClaimFormat.MsoMdoc, credentialRecord: credential.record, disclosedPayload: credential.output.namespaces, } - } else if (credential.success && credential.record.type !== 'MdocRecord' && 'claims' in credential.output) { + } else if ( + credential.success && + credential.record.type === 'SdJwtVcRecord' && + 'claims' in credential.output + ) { credentials[credentialQueryId] = { + claimFormat: ClaimFormat.SdJwtVc, credentialRecord: credential.record, disclosedPayload: credential.output.claims, } @@ -143,11 +154,13 @@ export class DcqlService { const credential = dcqlQueryResult.credential_matches[credentialQuery.id] if (credential.success && credential.record.type === 'MdocRecord' && 'namespaces' in credential.output) { credentials[credentialQuery.id] = { + claimFormat: ClaimFormat.MsoMdoc, credentialRecord: credential.record, disclosedPayload: credential.output.namespaces, } - } else if (credential.success && credential.record.type !== 'MdocRecord' && 'claims' in credential.output) { + } else if (credential.success && credential.record.type === 'SdJwtVcRecord' && 'claims' in credential.output) { credentials[credentialQuery.id] = { + claimFormat: ClaimFormat.SdJwtVc, credentialRecord: credential.record, disclosedPayload: credential.output.claims, } @@ -179,7 +192,7 @@ export class DcqlService { return frame } - public async createPresentationRecord( + public async createPresentation( agentContext: AgentContext, options: { credentialQueryToCredential: DcqlCredentialsForRequest @@ -187,13 +200,13 @@ export class DcqlService { domain?: string openid4vp?: Omit } - ): Promise { + ): Promise { const { domain, challenge, openid4vp } = options - const presentationRecord: DcqlPresentationRecord = {} + const dcqlPresentation: DcqlPresentation = {} - const presentationsToCreate = dcqlGetPresentationsToCreate(options.credentialQueryToCredential) - for (const [credentialQueryId, presentationToCreate] of Object.entries(presentationsToCreate)) { + const vcPresentationsToCreate = getDcqlVcPresentationsToCreate(options.credentialQueryToCredential) + for (const [credentialQueryId, presentationToCreate] of Object.entries(vcPresentationsToCreate)) { if (presentationToCreate.claimFormat === ClaimFormat.MsoMdoc) { const mdocRecord = presentationToCreate.credentialRecord if (!openid4vp) { @@ -223,7 +236,7 @@ export class DcqlService { }, }) - presentationRecord[credentialQueryId] = MdocDeviceResponse.fromBase64Url(deviceResponseBase64Url) + dcqlPresentation[credentialQueryId] = MdocDeviceResponse.fromBase64Url(deviceResponseBase64Url) } else if (presentationToCreate.claimFormat === ClaimFormat.SdJwtVc) { const presentationFrame = this.createPresentationFrame(presentationToCreate.disclosedPayload) @@ -242,18 +255,18 @@ export class DcqlService { }, }) - presentationRecord[credentialQueryId] = sdJwtVcApi.fromCompact(presentation) + dcqlPresentation[credentialQueryId] = sdJwtVcApi.fromCompact(presentation) } else { - throw new DcqlError('Only MDOC presentations are supported') + throw new DcqlError('W3c Presentation are not yet supported in combination with DCQL.') } } - return presentationRecord + return dcqlPresentation } - public async getEncodedPresentationRecord(presentationRecord: DcqlPresentationRecord) { + public getEncodedPresentations(dcqlPresentation: DcqlPresentation): DcqlEncodedPresentations { return Object.fromEntries( - Object.entries(presentationRecord).map(([key, value]) => { + Object.entries(dcqlPresentation).map(([key, value]) => { if (value instanceof MdocDeviceResponse) { return [key, value.base64Url] } else if (value instanceof W3cJsonLdVerifiablePresentation) { diff --git a/packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts b/packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts index 0c9b99690e..56378cf649 100644 --- a/packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts +++ b/packages/core/src/modules/dcql/models/DcqlCredentialsForRequest.ts @@ -1,7 +1,7 @@ import type { JsonObject } from '../../../types' import type { MdocRecord } from '../../mdoc' import type { SdJwtVcRecord } from '../../sd-jwt-vc' -import type { W3cCredentialRecord } from '../../vc' +import type { ClaimFormat, W3cCredentialRecord } from '../../vc' import type { MdocNameSpaces } from '@animo-id/mdoc' /** @@ -10,11 +10,18 @@ import type { MdocNameSpaces } from '@animo-id/mdoc' export type DcqlCredentialsForRequest = Record< string, | { + claimFormat: ClaimFormat.MsoMdoc credentialRecord: MdocRecord disclosedPayload: MdocNameSpaces } | { - credentialRecord: W3cCredentialRecord | SdJwtVcRecord + claimFormat: ClaimFormat.SdJwtVc + credentialRecord: SdJwtVcRecord + disclosedPayload: JsonObject + } + | { + claimFormat: ClaimFormat.JwtVc | ClaimFormat.LdpVc + credentialRecord: W3cCredentialRecord disclosedPayload: JsonObject } > diff --git a/packages/core/src/modules/dcql/models/index.ts b/packages/core/src/modules/dcql/models/index.ts index 2797ee579c..292c6cb8ea 100644 --- a/packages/core/src/modules/dcql/models/index.ts +++ b/packages/core/src/modules/dcql/models/index.ts @@ -8,7 +8,13 @@ import type { DcqlPresentationRecord as _DcqlPresentationRecord, } from 'dcql' -export type { DcqlQuery, DcqlCredentialRepresentation, DcqlMdocRepresentation, DcqlSdJwtVcRepresentation } from 'dcql' +export type { + DcqlQuery, + DcqlCredentialRepresentation, + DcqlMdocRepresentation, + DcqlSdJwtVcRepresentation, + DcqlPresentationQuery as DcqlPresentationQueryResult, +} from 'dcql' export type DcqlMatchWithRecord = InternalDcqlQueryResult.CredentialMatch & { record: W3cCredentialRecord | SdJwtVcRecord | MdocRecord @@ -18,5 +24,5 @@ export type DcqlQueryResult = Omit } -export type DcqlEncodedPresentationRecord = _DcqlPresentationRecord -export type DcqlPresentationRecord = Record +export type DcqlEncodedPresentations = _DcqlPresentationRecord +export type DcqlPresentation = Record diff --git a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts index 730cbe4b4a..e924e60279 100644 --- a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts +++ b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts @@ -120,7 +120,40 @@ export class OpenId4VcSiopHolderService { throw new CredoError("Unable to extract 'response_uri' from authorization request") } - if (authorizationRequest.presentationDefinitions && authorizationRequest.presentationDefinitions.length > 0) { + if (authorizationRequest.dcqlQuery) { + if (!dcql) { + throw new CredoError( + 'Authorization request included dcql query. `dcql` MUST be supplied to accept authorization requests.' + ) + } + + const dcqlPresentation = await this.dcqlService.createPresentation(agentContext, { + credentialQueryToCredential: dcql.credentials, + challenge: nonce, + domain: clientId, + openid4vp: { + mdocGeneratedNonce: authorizationResponseNonce, + responseUri, + }, + }) + + dcqlOptions = { + encodedPresentations: await this.dcqlService.getEncodedPresentations(dcqlPresentation), + } + + if (wantsIdToken && !openIdTokenIssuer) { + const nonMdocPresentation = Object.values(dcqlPresentation).find( + (presentation) => presentation instanceof MdocDeviceResponse === false + ) + + if (nonMdocPresentation) { + openIdTokenIssuer = this.getOpenIdTokenIssuerFromVerifiablePresentation(nonMdocPresentation) + } + } + } else if ( + authorizationRequest.presentationDefinitions && + authorizationRequest.presentationDefinitions.length > 0 + ) { if (!presentationExchange) { throw new CredoError( 'Authorization request included presentation definition. `presentationExchange` MUST be supplied to accept authorization requests.' @@ -149,41 +182,13 @@ export class OpenId4VcSiopHolderService { presentationSubmission, vpTokenLocation: VPTokenLocation.AUTHORIZATION_RESPONSE, } - } else { - if (!dcql) { - throw new CredoError( - 'Authorization request included dcql query. `dcql` MUST be supplied to accept authorization requests.' - ) - } - - const presentationRecord = await this.dcqlService.createPresentationRecord(agentContext, { - credentialQueryToCredential: dcql.credentials, - challenge: nonce, - domain: clientId, - openid4vp: { - mdocGeneratedNonce: authorizationResponseNonce, - responseUri, - }, - }) - - dcqlOptions = { - encodedPresentationRecord: await this.dcqlService.getEncodedPresentationRecord(presentationRecord), - } - - if (wantsIdToken && !openIdTokenIssuer) { - const nonMdocPresentation = Object.values(presentationRecord).find( - (presentation) => presentation instanceof MdocDeviceResponse === false - ) - - if (nonMdocPresentation) { - openIdTokenIssuer = this.getOpenIdTokenIssuerFromVerifiablePresentation(nonMdocPresentation) - } - } } } else if (options.presentationExchange) { throw new CredoError( '`presentationExchange` was supplied, but no presentation definition was found in the presentation request.' ) + } else if (options.dcql) { + throw new CredoError('`dcql` was supplied, but no dcql_query was found in the presentation request.') } if (wantsIdToken) { diff --git a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts index 98a3ce4ee6..bd06a60a3f 100644 --- a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts +++ b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts @@ -59,6 +59,7 @@ import { RevocationVerification, RP, SupportedVersion, + assertValidDcqlPresentationRecord, } from '@sphereon/did-auth-siop' import { extractPresentationRecordFromDcqlVpToken, @@ -373,7 +374,7 @@ export class OpenId4VcSiopVerifierService { const dcqlQuery = await authorizationRequest.getDcqlQuery() if (dcqlQuery) { const dcqlQueryVpToken = authorizationResponse.payload.vp_token - const presentationRecord = Object.fromEntries( + const dcqlPresentation = Object.fromEntries( Object.entries( extractPresentationRecordFromDcqlVpToken(dcqlQueryVpToken as string, { hasher: Hasher.hash }) ).map(([key, value]) => { @@ -381,7 +382,13 @@ export class OpenId4VcSiopVerifierService { }) ) - dcql = { query: dcqlQuery, presentationRecord } + const presentationQueryResult = await assertValidDcqlPresentationRecord( + authorizationResponse.payload.vp_token as string, + dcqlQuery, + { hasher: Hasher.hash } + ) + + dcql = { presentation: dcqlPresentation, presentationQueryResult } } if (!idToken && !(presentationExchange || dcqlQuery)) { @@ -525,7 +532,7 @@ export class OpenId4VcSiopVerifierService { const responseTypes: ResponseType[] = [] if (!(presentationDefinition && dcqlQuery) && idToken === false) { - throw new CredoError('Either `presentationExchange` or `idToken` must be enabled') + throw new CredoError('`PresentationExchange` `DcqlQuery` or `idToken` must be enabled.') } if (presentationDefinition || dcqlQuery) { responseTypes.push(ResponseType.VP_TOKEN) diff --git a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts index 5e9d2e259e..652ab400f5 100644 --- a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts +++ b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts @@ -11,8 +11,9 @@ import type { DifPresentationExchangeDefinitionV2, VerifiablePresentation, DcqlQuery, - DcqlPresentationRecord, + DcqlPresentation, DifPexPresentationWithDescriptor, + DcqlPresentationQueryResult, } from '@credo-ts/core' export type ResponseMode = 'direct_post' | 'direct_post.jwt' @@ -79,8 +80,8 @@ export interface OpenId4VcSiopVerifiedAuthorizationResponsePresentationExchange } export interface OpenId4VcSiopVerifiedAuthorizationResponseDcql { - query: DcqlQuery - presentationRecord: DcqlPresentationRecord + presentation: DcqlPresentation + presentationQueryResult: DcqlPresentationQueryResult } /** diff --git a/packages/openid4vc/tests/openid4vc.e2e.test.ts b/packages/openid4vc/tests/openid4vc.e2e.test.ts index f0aa9c60a1..a8adf4b26f 100644 --- a/packages/openid4vc/tests/openid4vc.e2e.test.ts +++ b/packages/openid4vc/tests/openid4vc.e2e.test.ts @@ -2291,12 +2291,6 @@ describe('OpenId4Vc', () => { ], } satisfies DcqlQuery - // Hack to make it work with x5c check - // @ts-expect-error - verifier.agent.modules.openId4VcVerifier.config.options.baseUrl = - // @ts-expect-error - verifier.agent.modules.openId4VcVerifier.config.options.baseUrl.replace('http://', 'https://') - const { authorizationRequest, verificationSession } = await verifier.agent.modules.openId4VcVerifier.createAuthorizationRequest({ responseMode: 'direct_post.jwt', @@ -2430,10 +2424,10 @@ describe('OpenId4Vc', () => { ) expect(idToken).toBeUndefined() - const presentation = dcql?.presentationRecord['orgeuuniversity'] as MdocDeviceResponse + const presentation = dcql?.presentation['orgeuuniversity'] as MdocDeviceResponse expect(presentation.documents).toHaveLength(1) - const sdJwtPresentation = dcql?.presentationRecord['OpenBadgeCredentialDescriptor'] as SdJwtVc + const sdJwtPresentation = dcql?.presentation['OpenBadgeCredentialDescriptor'] as SdJwtVc expect(sdJwtPresentation.prettyClaims).toEqual({ vct: 'OpenBadgeCredential', degree: 'bachelor', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6330fc5fd8..2a15f949ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -521,8 +521,8 @@ importers: specifier: 0.14.1 version: 0.14.1 dcql: - specifier: ^0.2.8 - version: 0.2.8(typescript@5.5.4) + specifier: ^0.2.10 + version: 0.2.10(typescript@5.5.4) did-resolver: specifier: ^4.1.0 version: 4.1.0 @@ -1563,12 +1563,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.24.7': - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-export-namespace-from@7.25.9': resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} engines: {node: '>=6.9.0'} @@ -1701,12 +1695,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.24.7': - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.25.9': resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} engines: {node: '>=6.9.0'} @@ -1749,24 +1737,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.24.7': - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-methods@7.25.9': resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.24.7': - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-private-property-in-object@7.25.9': resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} engines: {node: '>=6.9.0'} @@ -4254,8 +4230,8 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - dcql@0.2.8: - resolution: {integrity: sha512-/2TbRz3Itj/as4JnmzkupNxq6slN/w07EEx9iAwb/LRI8M8ajhnSN7YQ8rFopImuZAZkPYzOs4zga7zH6xf8eg==} + dcql@0.2.10: + resolution: {integrity: sha512-EHcpkm+p6yLifQ7GtElnWr0kE/TGZIOzgAWNnHzmxLSyA2t1yQyK/s6IU7hSW4AkEldzWqSidPi0H/MFBrjMMw==} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -8394,7 +8370,7 @@ snapshots: '@babel/generator@7.2.0': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 jsesc: 2.5.2 lodash: 4.17.21 source-map: 0.5.7 @@ -8728,8 +8704,8 @@ snapshots: '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -8749,7 +8725,7 @@ snapshots: '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': @@ -8761,7 +8737,7 @@ snapshots: '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': @@ -8815,7 +8791,7 @@ snapshots: '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': dependencies: @@ -9067,12 +9043,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9219,14 +9189,6 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9273,14 +9235,6 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9289,16 +9243,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -9354,8 +9298,8 @@ snapshots: '@babel/plugin-transform-react-pure-annotations@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': dependencies: @@ -9569,8 +9513,8 @@ snapshots: '@babel/preset-react@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.26.0) @@ -10306,7 +10250,7 @@ snapshots: chalk: 4.1.2 ci-info: 3.9.0 connect: 3.7.0 - debug: 4.3.6 + debug: 4.3.7 env-editor: 0.4.2 fast-glob: 3.3.2 find-yarn-workspace-root: 2.0.0 @@ -10374,7 +10318,7 @@ snapshots: '@expo/plist': 0.1.3 '@expo/sdk-runtime-versions': 1.0.0 chalk: 4.1.2 - debug: 4.3.6 + debug: 4.3.7 find-up: 5.0.0 getenv: 1.0.0 glob: 7.1.6 @@ -10425,7 +10369,7 @@ snapshots: '@expo/env@0.3.0': dependencies: chalk: 4.1.2 - debug: 4.3.6 + debug: 4.3.7 dotenv: 16.4.5 dotenv-expand: 11.0.6 getenv: 1.0.0 @@ -10456,15 +10400,15 @@ snapshots: '@expo/metro-config@0.18.11': dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@expo/config': 9.0.3 '@expo/env': 0.3.0 '@expo/json-file': 8.3.3 '@expo/spawn-async': 1.7.2 chalk: 4.1.2 - debug: 4.3.6 + debug: 4.3.7 find-yarn-workspace-root: 2.0.0 fs-extra: 9.1.0 getenv: 1.0.0 @@ -10510,7 +10454,7 @@ snapshots: '@expo/image-utils': 0.5.1 '@expo/json-file': 8.3.3 '@react-native/normalize-colors': 0.74.85 - debug: 4.3.6 + debug: 4.3.7 expo-modules-autolinking: 1.11.2 fs-extra: 9.1.0 resolve-from: 5.0.0 @@ -11292,31 +11236,31 @@ snapshots: '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.26.0) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.26.0) - '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.26.0) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.26.0) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.26.0) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.26.0) '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.0) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.26.0) - '@babel/template': 7.25.0 + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.25.9 '@react-native/babel-plugin-codegen': 0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.26.0) react-refresh: 0.14.2 @@ -11326,7 +11270,7 @@ snapshots: '@react-native/codegen@0.74.87(@babel/preset-env@7.26.0(@babel/core@7.26.0))': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.26.2 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) glob: 7.2.3 hermes-parser: 0.19.1 @@ -12610,7 +12554,7 @@ snapshots: babel-plugin-react-compiler@0.0.0-experimental-7d62301-20240819: dependencies: '@babel/generator': 7.2.0 - '@babel/types': 7.25.2 + '@babel/types': 7.26.0 chalk: 4.1.2 invariant: 2.2.4 pretty-format: 24.9.0 @@ -12649,9 +12593,9 @@ snapshots: babel-preset-expo@11.0.14(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)): dependencies: '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) '@babel/preset-react': 7.24.7(@babel/core@7.26.0) '@babel/preset-typescript': 7.24.7(@babel/core@7.26.0) '@react-native/babel-preset': 0.74.87(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) @@ -13275,7 +13219,7 @@ snapshots: dayjs@1.11.13: {} - dcql@0.2.8(typescript@5.5.4): + dcql@0.2.10(typescript@5.5.4): dependencies: valibot: 0.37.0(typescript@5.5.4) transitivePeerDependencies: @@ -16473,7 +16417,7 @@ snapshots: postcss@8.4.41: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.1 source-map-js: 1.2.0 preferred-pm@3.1.4: From d945ca4f6bdbdc1faadc3a56ccf4cf2884f68c6d Mon Sep 17 00:00:00 2001 From: Martin Auer Date: Sat, 23 Nov 2024 10:34:21 +0100 Subject: [PATCH 7/9] fix: improve dcql support --- packages/core/package.json | 2 +- packages/core/src/modules/dcql/DcqlService.ts | 68 ++++++++--- .../core/src/modules/dcql/models/index.ts | 32 +++-- .../dcql/utils/DcqlPresentationsToCreate.ts | 16 +-- packages/openid4vc/package.json | 2 +- .../OpenId4vcSiopHolderService.ts | 2 +- .../OpenId4VcSiopVerifierService.ts | 18 +-- .../OpenId4VcSiopVerifierServiceOptions.ts | 4 +- .../openid4vc/tests/openid4vc.e2e.test.ts | 10 +- pnpm-lock.yaml | 114 ++---------------- 10 files changed, 105 insertions(+), 163 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 6ce63ed427..c51cfec8be 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -26,7 +26,7 @@ }, "dependencies": { "@digitalcredentials/jsonld": "^6.0.0", - "dcql": "^0.2.11", + "dcql": "^0.2.13", "@digitalcredentials/jsonld-signatures": "^9.4.0", "@digitalcredentials/vc": "^6.0.1", "@multiformats/base-x": "^4.0.1", diff --git a/packages/core/src/modules/dcql/DcqlService.ts b/packages/core/src/modules/dcql/DcqlService.ts index f79534d9f8..19191a0963 100644 --- a/packages/core/src/modules/dcql/DcqlService.ts +++ b/packages/core/src/modules/dcql/DcqlService.ts @@ -1,6 +1,6 @@ import type { AgentContext } from '../../agent' -import { DcqlCredentialRepresentation, DcqlMdocRepresentation, DcqlQuery, DcqlSdJwtVcRepresentation } from 'dcql' +import { DcqlCredential, DcqlMdocCredential, DcqlQuery, DcqlSdJwtVcCredential } from 'dcql' import { injectable } from 'tsyringe' import { JsonValue } from '../../types' @@ -34,7 +34,7 @@ export class DcqlService { */ private async queryCredentialsForDcqlQuery( agentContext: AgentContext, - dcqlQuery: DcqlQuery + dcqlQuery: DcqlQuery.Input ): Promise> { const w3cCredentialRepository = agentContext.dependencyManager.resolve(W3cCredentialRepository) @@ -47,47 +47,83 @@ export class DcqlService { const allRecords: Array = [] - // query the wallet ourselves first to avoid the need to query the pex library for all - // credentials for every proof request const w3cCredentialRecords = formats.has('jwt_vc_json') || formats.has('jwt_vc_json-ld') ? await w3cCredentialRepository.getAll(agentContext) : [] allRecords.push(...w3cCredentialRecords) - const sdJwtVcApi = this.getSdJwtVcApi(agentContext) - const sdJwtVcRecords = formats.has('vc+sd-jwt') ? await sdJwtVcApi.getAll() : [] - allRecords.push(...sdJwtVcRecords) + // query the wallet ourselves first to avoid the need to query the pex library for all + // credentials for every proof request + const mdocDoctypes = dcqlQuery.credentials + .filter((credentialQuery) => credentialQuery.format === 'mso_mdoc') + .map((c) => c.meta?.doctype_value) + const allMdocCredentialQueriesSpecifyDoctype = mdocDoctypes.every((doctype) => doctype) const mdocApi = this.getMdocApi(agentContext) - const mdocRecords = formats.has('mso_mdoc') ? await mdocApi.getAll() : [] - allRecords.push(...mdocRecords) + if (allMdocCredentialQueriesSpecifyDoctype) { + const mdocRecords = await mdocApi.findAllByQuery({ + $or: mdocDoctypes.map((docType) => ({ + docType: docType as string, + })), + }) + allRecords.push(...mdocRecords) + } else { + const mdocRecords = await mdocApi.getAll() + allRecords.push(...mdocRecords) + } + + // query the wallet ourselves first to avoid the need to query the pex library for all + // credentials for every proof request + const sdJwtVctValues = dcqlQuery.credentials + .filter((credentialQuery) => credentialQuery.format === 'vc+sd-jwt') + .flatMap((c) => c.meta?.vct_values) + + const allSdJwtVcQueriesSpecifyDoctype = sdJwtVctValues.every((vct) => vct) + + const sdJwtVcApi = this.getSdJwtVcApi(agentContext) + if (allSdJwtVcQueriesSpecifyDoctype) { + const sdjwtVcRecords = await sdJwtVcApi.findAllByQuery({ + $or: sdJwtVctValues.map((vct) => ({ + vct: vct as string, + })), + }) + allRecords.push(...sdjwtVcRecords) + } else { + const sdJwtVcRecords = await sdJwtVcApi.getAll() + allRecords.push(...sdJwtVcRecords) + } return allRecords } - public async getCredentialsForRequest(agentContext: AgentContext, dcqlQuery: DcqlQuery): Promise { + public async getCredentialsForRequest( + agentContext: AgentContext, + dcqlQuery: DcqlQuery.Input + ): Promise { const credentialRecords = await this.queryCredentialsForDcqlQuery(agentContext, dcqlQuery) - const mappedCredentials: DcqlCredentialRepresentation[] = credentialRecords.map((record) => { + const dcqlCredentials: DcqlCredential[] = credentialRecords.map((record) => { if (record.type === 'MdocRecord') { return { - docType: record.getTags().docType, + credentialFormat: 'mso_mdoc', + doctype: record.getTags().docType, namespaces: Mdoc.fromBase64Url(record.base64Url).issuerSignedNamespaces, - } satisfies DcqlMdocRepresentation + } satisfies DcqlMdocCredential } else if (record.type === 'SdJwtVcRecord') { return { + credentialFormat: 'vc+sd-jwt', vct: record.getTags().vct, claims: this.getSdJwtVcApi(agentContext).fromCompact(record.compactSdJwtVc) - .prettyClaims as DcqlSdJwtVcRepresentation.Claims, - } satisfies DcqlSdJwtVcRepresentation + .prettyClaims as DcqlSdJwtVcCredential.Claims, + } satisfies DcqlSdJwtVcCredential } else { // TODO: throw new DcqlError('W3C credentials are not supported yet') } }) - const queryResult = DcqlQuery.query(dcqlQuery, mappedCredentials) + const queryResult = DcqlQuery.query(DcqlQuery.parse(dcqlQuery), dcqlCredentials) const matchesWithRecord = Object.fromEntries( Object.entries(queryResult.credential_matches).map(([credential_query_id, result]) => { return [credential_query_id, { ...result, record: credentialRecords[result.credential_index] }] diff --git a/packages/core/src/modules/dcql/models/index.ts b/packages/core/src/modules/dcql/models/index.ts index 292c6cb8ea..5b32f99e06 100644 --- a/packages/core/src/modules/dcql/models/index.ts +++ b/packages/core/src/modules/dcql/models/index.ts @@ -4,25 +4,31 @@ import type { MdocRecord } from '../../mdoc' import type { SdJwtVcRecord } from '../../sd-jwt-vc' import type { W3cCredentialRecord } from '../../vc' import type { - DcqlQueryResult as InternalDcqlQueryResult, - DcqlPresentationRecord as _DcqlPresentationRecord, + DcqlQueryResult as _DcqlQueryResult, + DcqlQuery as _DcqlQuery, + DcqlCredential as _DcqlCredential, + DcqlMdocCredential as _DcqlMdocCredential, + DcqlW3cVcCredential as _DcqlW3cVcCredential, + DcqlSdJwtVcCredential as _DcqlSdJwtVcCredential, + DcqlPresentation as _DcqlPresentation, + DcqlPresentationResult as _DcqlPresentationResult, } from 'dcql' -export type { - DcqlQuery, - DcqlCredentialRepresentation, - DcqlMdocRepresentation, - DcqlSdJwtVcRepresentation, - DcqlPresentationQuery as DcqlPresentationQueryResult, -} from 'dcql' +export type DcqlQuery = _DcqlQuery.Input +export type DcqlCredential = _DcqlCredential.Model['Input'] +export type DcqlMdocCredential = _DcqlMdocCredential.Model['Input'] +export type DcqlSdJwtVcCredential = _DcqlSdJwtVcCredential.Model['Input'] +export type DcqlW3cVcCredential = _DcqlW3cVcCredential.Model['Input'] -export type DcqlMatchWithRecord = InternalDcqlQueryResult.CredentialMatch & { +export type DcqlMatchWithRecord = { record: W3cCredentialRecord | SdJwtVcRecord | MdocRecord -} +} & _DcqlQueryResult['credential_matches'][number] -export type DcqlQueryResult = Omit & { +export type DcqlQueryResult = Omit<_DcqlQueryResult.Input, 'credential_matches'> & { credential_matches: Record } -export type DcqlEncodedPresentations = _DcqlPresentationRecord +export type DcqlEncodedPresentations = _DcqlPresentation.Input export type DcqlPresentation = Record + +export type DcqlPresentationResult = _DcqlPresentationResult.Input diff --git a/packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts b/packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts index db109d5d7a..9475b09e62 100644 --- a/packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts +++ b/packages/core/src/modules/dcql/utils/DcqlPresentationsToCreate.ts @@ -1,6 +1,6 @@ import type { SdJwtVcRecord } from '../../sd-jwt-vc' import type { DcqlCredentialsForRequest } from '../models' -import type { DcqlSdJwtVcRepresentation, DcqlW3cVcRepresentation, DcqlMdocRepresentation } from 'dcql' +import type { DcqlSdJwtVcCredential, DcqlMdocCredential, DcqlW3cVcCredential } from 'dcql' import { MdocRecord } from '../../mdoc' import { W3cCredentialRecord, ClaimFormat } from '../../vc' @@ -10,14 +10,14 @@ export interface DcqlSdJwtVcPresentationToCreate { claimFormat: ClaimFormat.SdJwtVc subjectIds: [] // subject is included in the cnf of the sd-jwt and automatically extracted by PEX credentialRecord: SdJwtVcRecord - disclosedPayload: DcqlSdJwtVcRepresentation.Claims + disclosedPayload: DcqlSdJwtVcCredential.Claims } export interface DcqlJwtVpPresentationToCreate { claimFormat: ClaimFormat.JwtVp subjectIds: [string] // only one subject id supported for JWT VP credentialRecord: W3cCredentialRecord - disclosedPayload: DcqlW3cVcRepresentation.Claims + disclosedPayload: DcqlW3cVcCredential.Claims } export interface DcqlLdpVpPresentationToCreate { @@ -26,14 +26,14 @@ export interface DcqlLdpVpPresentationToCreate { // support yet for adding multiple proofs to an LDP-VP subjectIds: undefined | [string] credentialRecord: W3cCredentialRecord - disclosedPayload: DcqlW3cVcRepresentation.Claims + disclosedPayload: DcqlW3cVcCredential.Claims } export interface DcqlMdocPresentationToCreate { claimFormat: ClaimFormat.MsoMdoc subjectIds: [] credentialRecord: MdocRecord - disclosedPayload: DcqlMdocRepresentation.NameSpaces + disclosedPayload: DcqlMdocCredential.NameSpaces } export type DcqlPresentationToCreate = Record< @@ -55,21 +55,21 @@ export function dcqlGetPresentationsToCreate( match.credentialRecord.credential.claimFormat === ClaimFormat.JwtVc ? ClaimFormat.JwtVp : ClaimFormat.LdpVp, subjectIds: [match.credentialRecord.credential.credentialSubjectIds[0]], credentialRecord: match.credentialRecord, - disclosedPayload: match.disclosedPayload as DcqlW3cVcRepresentation.Claims, + disclosedPayload: match.disclosedPayload as DcqlW3cVcCredential.Claims, } } else if (match.credentialRecord instanceof MdocRecord) { presentationsToCreate[credentialQueryId] = { claimFormat: ClaimFormat.MsoMdoc, subjectIds: [], credentialRecord: match.credentialRecord, - disclosedPayload: match.disclosedPayload as DcqlMdocRepresentation.NameSpaces, + disclosedPayload: match.disclosedPayload as DcqlMdocCredential.NameSpaces, } } else { presentationsToCreate[credentialQueryId] = { claimFormat: ClaimFormat.SdJwtVc, subjectIds: [], credentialRecord: match.credentialRecord, - disclosedPayload: match.disclosedPayload as DcqlW3cVcRepresentation.Claims, + disclosedPayload: match.disclosedPayload as DcqlW3cVcCredential.Claims, } } } diff --git a/packages/openid4vc/package.json b/packages/openid4vc/package.json index d7f75bf39a..a4c5f21980 100644 --- a/packages/openid4vc/package.json +++ b/packages/openid4vc/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@credo-ts/core": "workspace:*", - "@sphereon/did-auth-siop": "https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke", + "@sphereon/did-auth-siop": "link:/../../../CODE/OID4VC/packages/siop-oid4vp", "@sphereon/oid4vc-common": "0.16.1-fix.173", "@sphereon/ssi-types": "0.30.2-next.135", "class-transformer": "^0.5.1", diff --git a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts index e924e60279..1b58b2ccd7 100644 --- a/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts +++ b/packages/openid4vc/src/openid4vc-holder/OpenId4vcSiopHolderService.ts @@ -138,7 +138,7 @@ export class OpenId4VcSiopHolderService { }) dcqlOptions = { - encodedPresentations: await this.dcqlService.getEncodedPresentations(dcqlPresentation), + dcqlPresentation: await this.dcqlService.getEncodedPresentations(dcqlPresentation), } if (wantsIdToken && !openIdTokenIssuer) { diff --git a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts index bd06a60a3f..e6d8fa5cc0 100644 --- a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts +++ b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierService.ts @@ -59,10 +59,10 @@ import { RevocationVerification, RP, SupportedVersion, - assertValidDcqlPresentationRecord, + assertValidDcqlPresentationResult, } from '@sphereon/did-auth-siop' import { - extractPresentationRecordFromDcqlVpToken, + extractDcqlPresentationFromDcqlVpToken, extractPresentationsFromVpToken, } from '@sphereon/did-auth-siop/dist/authorization-response/OpenID4VP' import { filter, first, firstValueFrom, map, timeout } from 'rxjs' @@ -375,20 +375,20 @@ export class OpenId4VcSiopVerifierService { if (dcqlQuery) { const dcqlQueryVpToken = authorizationResponse.payload.vp_token const dcqlPresentation = Object.fromEntries( - Object.entries( - extractPresentationRecordFromDcqlVpToken(dcqlQueryVpToken as string, { hasher: Hasher.hash }) - ).map(([key, value]) => { - return [key, getVerifiablePresentationFromSphereonWrapped(value)] - }) + Object.entries(extractDcqlPresentationFromDcqlVpToken(dcqlQueryVpToken as string, { hasher: Hasher.hash })).map( + ([key, value]) => { + return [key, getVerifiablePresentationFromSphereonWrapped(value)] + } + ) ) - const presentationQueryResult = await assertValidDcqlPresentationRecord( + const presentationQueryResult = await assertValidDcqlPresentationResult( authorizationResponse.payload.vp_token as string, dcqlQuery, { hasher: Hasher.hash } ) - dcql = { presentation: dcqlPresentation, presentationQueryResult } + dcql = { presentation: dcqlPresentation, presentationResult: presentationQueryResult } } if (!idToken && !(presentationExchange || dcqlQuery)) { diff --git a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts index 652ab400f5..4f0b427224 100644 --- a/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts +++ b/packages/openid4vc/src/openid4vc-verifier/OpenId4VcSiopVerifierServiceOptions.ts @@ -13,7 +13,7 @@ import type { DcqlQuery, DcqlPresentation, DifPexPresentationWithDescriptor, - DcqlPresentationQueryResult, + DcqlPresentationResult, } from '@credo-ts/core' export type ResponseMode = 'direct_post' | 'direct_post.jwt' @@ -81,7 +81,7 @@ export interface OpenId4VcSiopVerifiedAuthorizationResponsePresentationExchange export interface OpenId4VcSiopVerifiedAuthorizationResponseDcql { presentation: DcqlPresentation - presentationQueryResult: DcqlPresentationQueryResult + presentationResult: DcqlPresentationResult } /** diff --git a/packages/openid4vc/tests/openid4vc.e2e.test.ts b/packages/openid4vc/tests/openid4vc.e2e.test.ts index 7698949dac..8b4019d5ca 100644 --- a/packages/openid4vc/tests/openid4vc.e2e.test.ts +++ b/packages/openid4vc/tests/openid4vc.e2e.test.ts @@ -2330,7 +2330,8 @@ describe('OpenId4Vc', () => { typed: true, success: true, output: { - docType: 'org.eu.university', + doctype: 'org.eu.university', + credentialFormat: 'mso_mdoc', namespaces: { 'eu.europa.ec.eudi.pid.1': { name: 'John Doe', @@ -2338,8 +2339,7 @@ describe('OpenId4Vc', () => { }, }, }, - issues: undefined, - credential_index: 1, + credential_index: 0, claim_set_index: undefined, all: expect.any(Array), record: expect.any(MdocRecord), @@ -2348,13 +2348,13 @@ describe('OpenId4Vc', () => { typed: true, success: true, output: { + credentialFormat: 'vc+sd-jwt', vct: 'OpenBadgeCredential', claims: { university: 'innsbruck', }, }, - issues: undefined, - credential_index: 0, + credential_index: 1, claim_set_index: undefined, all: expect.any(Array), record: expect.any(SdJwtVcRecord), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0745cae29..648c089148 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -523,8 +523,8 @@ importers: specifier: 0.14.1 version: 0.14.1 dcql: - specifier: ^0.2.11 - version: 0.2.11(typescript@5.5.4) + specifier: ^0.2.13 + version: 0.2.13(typescript@5.5.4) did-resolver: specifier: ^4.1.0 version: 4.1.0 @@ -738,8 +738,8 @@ importers: specifier: workspace:* version: link:../core '@sphereon/did-auth-siop': - specifier: https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke - version: https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4) + specifier: link:/../../../CODE/OID4VC/packages/siop-oid4vp + version: link:../../../CODE/OID4VC/packages/siop-oid4vp '@sphereon/oid4vc-common': specifier: 0.16.1-fix.173 version: 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) @@ -2912,18 +2912,9 @@ packages: resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} engines: {node: '>= 8'} - '@sphereon/did-auth-siop@https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke} - version: 0.16.0 - engines: {node: '>=18'} - '@sphereon/did-uni-client@0.6.3': resolution: {integrity: sha512-g7LD7ofbE36slHN7Bhr5dwUrj6t0BuZeXBYJMaVY/pOeL1vJxW1cZHbZqu0NSfOmzyBg4nsYVlgTjyi/Aua2ew==} - '@sphereon/jarm@0.16.1-fix.173': - resolution: {integrity: sha512-VYNuNLV+x7hKKcynC8yOJymkXPrtBRQA/Gqj50Wfhl6kx6IoRsx39s/i6xGGYPwyrNTaVGFssKzg0IDcQfxToA==} - engines: {node: '>=18'} - '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': resolution: {integrity: sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A==} bundledDependencies: [] @@ -4238,8 +4229,8 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - dcql@0.2.11: - resolution: {integrity: sha512-hR8MuSx49b7JPoZztcFMSKEHc6iEE4l/Zs6aUsvMCWVa3qFWpuJRiJEp5Rh2+UkCAhsce94fbDpMdBTcS9zn7g==} + dcql@0.2.13: + resolution: {integrity: sha512-XfePsSz9ULj9HH3VFNguzK/xlFnliKDX2iUDb1tIrn97S+TfftcFo+jipw16m9jPlWLhhBx48QniF0D8KotIWA==} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -5927,13 +5918,6 @@ packages: resolution: {integrity: sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==} engines: {node: '>=14.16'} - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -6372,10 +6356,6 @@ packages: engines: {node: '>=12.0.0', npm: '>=6.0.0'} deprecated: This module has been superseded by the multiformats module - multiformats@12.1.3: - resolution: {integrity: sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw==} - engines: {node: '>=16.0.0', npm: '>=7.0.0'} - multiformats@9.7.1: resolution: {integrity: sha512-TaVmGEBt0fhxiNJMGphBfB+oGvUxFs8KgGvgl8d3C+GWtrFcvXdJ2196eg+dYhmSFClmgFfSfJEklo+SZzdNuw==} @@ -6898,10 +6878,6 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} - qs@6.13.1: - resolution: {integrity: sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==} - engines: {node: '>=0.6'} - query-string@7.1.3: resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} @@ -11422,44 +11398,6 @@ snapshots: '@sovpro/delimited-stream@1.1.0': {} - '@sphereon/did-auth-siop@https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4)': - dependencies: - '@astronautlabs/jsonpath': 1.1.2 - '@sphereon/jarm': 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4) - '@sphereon/oid4vc-common': 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) - '@sphereon/pex': 5.0.0-unstable.25 - '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.2-next.135 - cross-fetch: 4.0.0 - debug: 4.3.7 - events: 3.3.0 - jwt-decode: 4.0.0 - language-tags: 1.0.9 - multiformats: 12.1.3 - qs: 6.13.1 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - - typescript - '@sphereon/did-uni-client@0.6.3': dependencies: cross-fetch: 3.1.8 @@ -11467,32 +11405,6 @@ snapshots: transitivePeerDependencies: - encoding - '@sphereon/jarm@0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4))(typescript@5.5.4)': - dependencies: - '@sphereon/oid4vc-common': 0.16.1-fix.173(ts-node@10.9.2(@swc/core@1.7.40)(@types/node@18.18.8)(typescript@5.5.4)) - valibot: 0.42.1(typescript@5.5.4) - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - - typescript - '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': dependencies: '@js-joda/core': 5.6.3 @@ -13306,7 +13218,7 @@ snapshots: dayjs@1.11.13: {} - dcql@0.2.11(typescript@5.5.4): + dcql@0.2.13(typescript@5.5.4): dependencies: valibot: 0.37.0(typescript@5.5.4) transitivePeerDependencies: @@ -15523,12 +15435,6 @@ snapshots: ky@0.33.3: {} - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - leven@3.1.0: {} levn@0.3.0: @@ -16098,8 +16004,6 @@ snapshots: dependencies: '@multiformats/base-x': 4.0.1 - multiformats@12.1.3: {} - multiformats@9.7.1: {} multiformats@9.9.0: {} @@ -16638,10 +16542,6 @@ snapshots: dependencies: side-channel: 1.0.6 - qs@6.13.1: - dependencies: - side-channel: 1.0.6 - query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 From 78ab662bd49ad30cca0dd6dd5f819ab0ca20e489 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Sun, 24 Nov 2024 18:01:29 +0100 Subject: [PATCH 8/9] feat(mdoc): expose device key Signed-off-by: Timo Glastra --- packages/core/src/modules/mdoc/Mdoc.ts | 14 +++++++++++++- .../src/modules/mdoc/__tests__/mdocServer.test.ts | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/core/src/modules/mdoc/Mdoc.ts b/packages/core/src/modules/mdoc/Mdoc.ts index 4e2e701b8d..dfa90a3136 100644 --- a/packages/core/src/modules/mdoc/Mdoc.ts +++ b/packages/core/src/modules/mdoc/Mdoc.ts @@ -1,8 +1,10 @@ import type { MdocSignOptions, MdocNameSpaces, MdocVerifyOptions } from './MdocOptions' import type { AgentContext } from '../../agent' +import type { JwkJson, Key } from '../../crypto' import type { IssuerSignedDocument } from '@animo-id/mdoc' import { + COSEKey, DeviceSignedDocument, Document, Verifier, @@ -11,7 +13,7 @@ import { parseIssuerSigned, } from '@animo-id/mdoc' -import { getJwkFromKey, JwaSignatureAlgorithm } from '../../crypto' +import { getJwkFromJson, getJwkFromKey, JwaSignatureAlgorithm } from '../../crypto' import { ClaimFormat } from '../vc' import { X509Certificate, X509ModuleConfig } from '../x509' @@ -75,6 +77,16 @@ export class Mdoc { return this.issuerSignedDocument.docType } + /** + * Get the device key to which the mdoc is bound + */ + public get deviceKey(): Key | null { + const deviceKeyRaw = this.issuerSignedDocument.issuerSigned.issuerAuth.decodedPayload.deviceKeyInfo?.deviceKey + if (!deviceKeyRaw) return null + + return getJwkFromJson(COSEKey.import(deviceKeyRaw).toJWK() as JwkJson).key + } + public get alg(): JwaSignatureAlgorithm { const algName = this.issuerSignedDocument.issuerSigned.issuerAuth.algName if (!algName) { diff --git a/packages/core/src/modules/mdoc/__tests__/mdocServer.test.ts b/packages/core/src/modules/mdoc/__tests__/mdocServer.test.ts index 9f285b0f10..1e001936ca 100644 --- a/packages/core/src/modules/mdoc/__tests__/mdocServer.test.ts +++ b/packages/core/src/modules/mdoc/__tests__/mdocServer.test.ts @@ -25,6 +25,13 @@ describe('mdoc service test', () => { expect(mdoc.alg).toBe('ES256') }) + test('can get device key', async () => { + const mdoc = Mdoc.fromBase64Url(sprindFunkeTestVectorBase64Url) + const deviceKey = mdoc.deviceKey + expect(deviceKey?.keyType).toBe(KeyType.P256) + expect(deviceKey?.fingerprint).toBe('zDnaeq8nbXthvXNTYAzxdyvdWXgm5ev5xLEUtjZpfj1YtQ5g2') + }) + test('can get doctype', async () => { const mdoc = Mdoc.fromBase64Url(sprindFunkeTestVectorBase64Url) expect(mdoc.docType).toBe('eu.europa.ec.eudi.pid.1') From 9f7bc3b0c54291cd54698359d444fdf12a32fe99 Mon Sep 17 00:00:00 2001 From: Timo Glastra Date: Mon, 25 Nov 2024 14:42:57 +0100 Subject: [PATCH 9/9] feat: sd jwt disclosure frame dcql Signed-off-by: Timo Glastra --- packages/core/package.json | 1 + .../src/modules/sd-jwt-vc/SdJwtVcService.ts | 31 +++++- .../__tests__/SdJwtVcService.test.ts | 34 +++++++ .../sd-jwt-vc/__tests__/sdjwtvc.fixtures.ts | 3 + .../src/modules/sd-jwt-vc/decodeSdJwtVc.ts | 2 +- .../src/modules/sd-jwt-vc/disclosureFrame.ts | 32 ++++++ .../__tests__/openid4vci-holder.test.ts | 2 +- pnpm-lock.yaml | 97 +++++-------------- 8 files changed, 127 insertions(+), 75 deletions(-) create mode 100644 packages/core/src/modules/sd-jwt-vc/disclosureFrame.ts diff --git a/packages/core/package.json b/packages/core/package.json index 3a4d294a08..6f705d0e29 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -38,6 +38,7 @@ "@peculiar/x509": "^1.11.0", "@animo-id/mdoc": "0.2.39", "@sd-jwt/core": "^0.7.0", + "@sd-jwt/present": "^0.7.0", "@sd-jwt/decode": "^0.7.0", "@sd-jwt/jwt-status-list": "^0.7.0", "@sd-jwt/sd-jwt-vc": "^0.7.0", diff --git a/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts b/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts index 61d9e7e5d7..8ac7b5eeea 100644 --- a/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts +++ b/packages/core/src/modules/sd-jwt-vc/SdJwtVcService.ts @@ -12,12 +12,14 @@ import type { Query, QueryOptions } from '../../storage/StorageService' import type { SDJwt } from '@sd-jwt/core' import type { Signer, Verifier, PresentationFrame, DisclosureFrame } from '@sd-jwt/types' +import { decodeSdJwtSync } from '@sd-jwt/decode' +import { selectDisclosures } from '@sd-jwt/present' import { SDJwtVcInstance } from '@sd-jwt/sd-jwt-vc' import { uint8ArrayToBase64Url } from '@sd-jwt/utils' import { injectable } from 'tsyringe' import { AgentContext } from '../../agent' -import { JwtPayload, Jwk, getJwkFromJson, getJwkFromKey } from '../../crypto' +import { JwtPayload, Jwk, getJwkFromJson, getJwkFromKey, Hasher } from '../../crypto' import { CredoError } from '../../error' import { X509Service } from '../../modules/x509/X509Service' import { TypedArrayEncoder, nowInSeconds } from '../../utils' @@ -29,6 +31,7 @@ import { X509Certificate, X509ModuleConfig } from '../x509' import { SdJwtVcError } from './SdJwtVcError' import { decodeSdJwtVc, sdJwtVcHasher } from './decodeSdJwtVc' +import { buildDisclosureFrameFromPayload } from './disclosureFrame' import { SdJwtVcRecord, SdJwtVcRepository } from './repository' import { SdJwtVcTypeMetadata } from './typeMetadata' @@ -155,6 +158,32 @@ export class SdJwtVcService { return decodeSdJwtVc(compactSdJwtVc, typeMetadata) } + public applyDisclosuresForPayload(compactSdJwtVc: string, requestedPayload: Record): SdJwtVc { + const decoded = decodeSdJwtSync(compactSdJwtVc, Hasher.hash) + const presentationFrame = buildDisclosureFrameFromPayload(requestedPayload) ?? {} + + if (decoded.kbJwt) { + throw new SdJwtVcError('Cannot apply limit disclosure on an sd-jwt with key binding jwt') + } + + const requiredDisclosures = selectDisclosures( + decoded.jwt.payload, + // Map to sd-jwt disclosure format + decoded.disclosures.map((d) => ({ + digest: d.digestSync({ alg: 'sha-256', hasher: Hasher.hash }), + encoded: d.encode(), + key: d.key, + salt: d.salt, + value: d.value, + })), + presentationFrame as { [key: string]: boolean } + ) + const [jwt] = compactSdJwtVc.split('~') + const sdJwt = `${jwt}~${requiredDisclosures.map((d) => d.encoded).join('~')}~` + const disclosedDecoded = decodeSdJwtVc(sdJwt) + return disclosedDecoded + } + public async present( agentContext: AgentContext, { compactSdJwtVc, presentationFrame, verifierMetadata }: SdJwtVcPresentOptions diff --git a/packages/core/src/modules/sd-jwt-vc/__tests__/SdJwtVcService.test.ts b/packages/core/src/modules/sd-jwt-vc/__tests__/SdJwtVcService.test.ts index 345091c609..c5ad492cdc 100644 --- a/packages/core/src/modules/sd-jwt-vc/__tests__/SdJwtVcService.test.ts +++ b/packages/core/src/modules/sd-jwt-vc/__tests__/SdJwtVcService.test.ts @@ -17,6 +17,7 @@ import { expiredSdJwtVc, funkeX509, notBeforeInFutureSdJwtVc, + sdJwtVcPid, sdJwtVcWithSingleDisclosure, sdJwtVcWithSingleDisclosurePresentation, signatureInvalidSdJwtVc, @@ -667,6 +668,39 @@ describe('SdJwtVcService', () => { }) }) + describe('SdJwtVcService.applyDisclosuresForPayload', () => { + test('Applies disclosures for given payload', async () => { + const presentation = sdJwtVcService.applyDisclosuresForPayload(sdJwtVcPid, { + given_name: 'ERIKA', + birthdate: '1964-08-12', + family_name: 'MUSTERMANN', + }) + + expect(presentation.prettyClaims).toStrictEqual({ + place_of_birth: {}, + address: {}, + issuing_country: 'DE', + vct: 'https://example.bmi.bund.de/credential/pid/1.0', + issuing_authority: 'DE', + iss: 'https://demo.pid-issuer.bundesdruckerei.de/c1', + cnf: { + jwk: { + kty: 'EC', + crv: 'P-256', + x: 'NeX_ZniwxDOJD_Kyqf678V-Yx3f3-DZ0yD9XerpFmcc', + y: 'gpo5H0zWaPM9yc7M2rex4IZ6Geb9J2842T3t6X8frAM', + }, + }, + exp: 1733709514, + iat: 1732499914, + age_equal_or_over: {}, + given_name: 'ERIKA', + birthdate: '1964-08-12', + family_name: 'MUSTERMANN', + }) + }) + }) + describe('SdJwtVcService.present', () => { test('Present sd-jwt-vc from a basic payload without disclosures', async () => { const presentation = await sdJwtVcService.present(agent.context, { diff --git a/packages/core/src/modules/sd-jwt-vc/__tests__/sdjwtvc.fixtures.ts b/packages/core/src/modules/sd-jwt-vc/__tests__/sdjwtvc.fixtures.ts index 55794adb92..d7ba91d69c 100644 --- a/packages/core/src/modules/sd-jwt-vc/__tests__/sdjwtvc.fixtures.ts +++ b/packages/core/src/modules/sd-jwt-vc/__tests__/sdjwtvc.fixtures.ts @@ -516,3 +516,6 @@ export const complexSdJwtVc = */ export const complexSdJwtVcPresentation = 'eyJ0eXAiOiJ2YytzZC1qd3QiLCJhbGciOiJFZERTQSIsImtpZCI6IiN6Nk1rdHF0WE5HOENEVVk5UHJydG9TdEZ6ZUNuaHBNbWd4WUwxZ2lrY1czQnp2TlcifQ.eyJ2Y3QiOiJJZGVudGl0eUNyZWRlbnRpYWwiLCJmYW1pbHlfbmFtZSI6IkRvZSIsInBob25lX251bWJlciI6IisxLTIwMi01NTUtMDEwMSIsImFkZHJlc3MiOnsic3RyZWV0X2FkZHJlc3MiOiIxMjMgTWFpbiBTdCIsImxvY2FsaXR5IjoiQW55dG93biIsIl9zZCI6WyJOSm5tY3QwQnFCTUUxSmZCbEM2alJRVlJ1ZXZwRU9OaVl3N0E3TUh1SnlRIiwib201Wnp0WkhCLUdkMDBMRzIxQ1ZfeE00RmFFTlNvaWFPWG5UQUpOY3pCNCJdfSwiY25mIjp7Imp3ayI6eyJrdHkiOiJPS1AiLCJjcnYiOiJFZDI1NTE5IiwieCI6Im9FTlZzeE9VaUg1NFg4d0pMYVZraWNDUmswMHdCSVE0c1JnYms1NE44TW8ifX0sImlzcyI6ImRpZDprZXk6ejZNa3RxdFhORzhDRFVZOVBycnRvU3RGemVDbmhwTW1neFlMMWdpa2NXM0J6dk5XIiwiaWF0IjoxNjk4MTUxNTMyLCJfc2QiOlsiMUN1cjJrMkEyb0lCNUNzaFNJZl9BX0tnLWwyNnVfcUt1V1E3OVAwVmRhcyIsIlIxelRVdk9ZSGdjZXBqMGpIeXBHSHo5RUh0dFZLZnQweXN3YmM5RVRQYlUiLCJlRHFRcGRUWEpYYldoZi1Fc0k3enc1WDZPdlltRk4tVVpRUU1lc1h3S1B3IiwicGREazJfWEFLSG83Z09BZndGMWI3T2RDVVZUaXQya0pIYXhTRUNROXhmYyIsInBzYXVLVU5XRWkwOW51M0NsODl4S1hnbXBXRU5abDV1eTFOMW55bl9qTWsiLCJzTl9nZTBwSFhGNnFtc1luWDFBOVNkd0o4Y2g4YUVOa3hiT0RzVDc0WXdJIl0sIl9zZF9hbGciOiJzaGEtMjU2In0.Kkhrxy2acd52JTl4g_0x25D5d1QNCTbqHrD9Qu9HzXMxPMu_5T4z-cSiutDYb5cIdi9NzMXPe4MXax-fUymEDg~WyJzYWx0IiwiaXNfb3Zlcl82NSIsdHJ1ZV0~WyJzYWx0IiwiaXNfb3Zlcl8yMSIsdHJ1ZV0~WyJzYWx0IiwiZW1haWwiLCJqb2huZG9lQGV4YW1wbGUuY29tIl0~WyJzYWx0IiwiY291bnRyeSIsIlVTIl0~WyJzYWx0IiwiZ2l2ZW5fbmFtZSIsIkpvaG4iXQ~eyJ0eXAiOiJrYitqd3QiLCJhbGciOiJFZERTQSJ9.eyJpYXQiOjE2OTgxNTE1MzIsIm5vbmNlIjoic2FsdCIsImF1ZCI6ImRpZDprZXk6elVDNzRWRXFxaEVIUWNndjR6YWdTUGtxRkp4dU5XdW9CUEtqSnVIRVRFVWVITG9TcVd0OTJ2aVNzbWFXank4MnkiLCJzZF9oYXNoIjoiaFRtUklwNFQ1Y2ZqQlUxbTVvcXNNWDZuUlFObGpEdXZSSThTWnlTeWhsZyJ9.D0G1__PslfgjkwTC1082x3r8Wp5mf13977y7Ef2xhvDrOO7V3zio5BZzqrDwzXIi3Y5GA1Vv3ptqpUKMn14EBA' + +export const sdJwtVcPid = + 'eyJ4NWMiOlsiTUlJQ2REQ0NBaHVnQXdJQkFnSUJBakFLQmdncWhrak9QUVFEQWpDQmlERUxNQWtHQTFVRUJoTUNSRVV4RHpBTkJnTlZCQWNNQmtKbGNteHBiakVkTUJzR0ExVUVDZ3dVUW5WdVpHVnpaSEoxWTJ0bGNtVnBJRWR0WWtneEVUQVBCZ05WQkFzTUNGUWdRMU1nU1VSRk1UWXdOQVlEVlFRRERDMVRVRkpKVGtRZ1JuVnVhMlVnUlZWRVNTQlhZV3hzWlhRZ1VISnZkRzkwZVhCbElFbHpjM1ZwYm1jZ1EwRXdIaGNOTWpRd05UTXhNRGd4TXpFM1doY05NalV3TnpBMU1EZ3hNekUzV2pCc01Rc3dDUVlEVlFRR0V3SkVSVEVkTUJzR0ExVUVDZ3dVUW5WdVpHVnpaSEoxWTJ0bGNtVnBJRWR0WWtneENqQUlCZ05WQkFzTUFVa3hNakF3QmdOVkJBTU1LVk5RVWtsT1JDQkdkVzVyWlNCRlZVUkpJRmRoYkd4bGRDQlFjbTkwYjNSNWNHVWdTWE56ZFdWeU1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRU9GQnE0WU1LZzR3NWZUaWZzeXR3QnVKZi83RTdWaFJQWGlObTUyUzNxMUVUSWdCZFh5REsza1Z4R3hnZUhQaXZMUDN1dU12UzZpREVjN3FNeG12ZHVLT0JrRENCalRBZEJnTlZIUTRFRmdRVWlQaENrTEVyRFhQTFcyL0owV1ZlZ2h5dyttSXdEQVlEVlIwVEFRSC9CQUl3QURBT0JnTlZIUThCQWY4RUJBTUNCNEF3TFFZRFZSMFJCQ1l3SklJaVpHVnRieTV3YVdRdGFYTnpkV1Z5TG1KMWJtUmxjMlJ5ZFdOclpYSmxhUzVrWlRBZkJnTlZIU01FR0RBV2dCVFVWaGpBaVRqb0RsaUVHTWwyWXIrcnU4V1F2akFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFiZjVUemtjUXpoZldvSW95aTFWTjdkOEk5QnNGS20xTVdsdVJwaDJieUdRSWdLWWtkck5mMnhYUGpWU2JqVy9VLzVTNXZBRUM1WHhjT2FudXNPQnJvQmJVPSIsIk1JSUNlVENDQWlDZ0F3SUJBZ0lVQjVFOVFWWnRtVVljRHRDaktCL0gzVlF2NzJnd0NnWUlLb1pJemowRUF3SXdnWWd4Q3pBSkJnTlZCQVlUQWtSRk1ROHdEUVlEVlFRSERBWkNaWEpzYVc0eEhUQWJCZ05WQkFvTUZFSjFibVJsYzJSeWRXTnJaWEpsYVNCSGJXSklNUkV3RHdZRFZRUUxEQWhVSUVOVElFbEVSVEUyTURRR0ExVUVBd3d0VTFCU1NVNUVJRVoxYm10bElFVlZSRWtnVjJGc2JHVjBJRkJ5YjNSdmRIbHdaU0JKYzNOMWFXNW5JRU5CTUI0WERUSTBNRFV6TVRBMk5EZ3dPVm9YRFRNME1EVXlPVEEyTkRnd09Wb3dnWWd4Q3pBSkJnTlZCQVlUQWtSRk1ROHdEUVlEVlFRSERBWkNaWEpzYVc0eEhUQWJCZ05WQkFvTUZFSjFibVJsYzJSeWRXTnJaWEpsYVNCSGJXSklNUkV3RHdZRFZRUUxEQWhVSUVOVElFbEVSVEUyTURRR0ExVUVBd3d0VTFCU1NVNUVJRVoxYm10bElFVlZSRWtnVjJGc2JHVjBJRkJ5YjNSdmRIbHdaU0JKYzNOMWFXNW5JRU5CTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWUd6ZHdGRG5jNytLbjVpYkF2Q09NOGtlNzdWUXhxZk1jd1pMOElhSUErV0NST2NDZm1ZL2dpSDkycU1ydTVwL2t5T2l2RTBSQy9JYmRNT052RG9VeWFObU1HUXdIUVlEVlIwT0JCWUVGTlJXR01DSk9PZ09XSVFZeVhaaXY2dTd4WkMrTUI4R0ExVWRJd1FZTUJhQUZOUldHTUNKT09nT1dJUVl5WFppdjZ1N3haQytNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUUF3RGdZRFZSMFBBUUgvQkFRREFnR0dNQW9HQ0NxR1NNNDlCQU1DQTBjQU1FUUNJR0VtN3drWktIdC9hdGI0TWRGblhXNnlybndNVVQydTEzNmdkdGwxMFk2aEFpQnVURnF2Vll0aDFyYnh6Q1AweFdaSG1RSzlrVnl4bjhHUGZYMjdFSXp6c3c9PSJdLCJraWQiOiJNSUdVTUlHT3BJR0xNSUdJTVFzd0NRWURWUVFHRXdKRVJURVBNQTBHQTFVRUJ3d0dRbVZ5YkdsdU1SMHdHd1lEVlFRS0RCUkNkVzVrWlhOa2NuVmphMlZ5WldrZ1IyMWlTREVSTUE4R0ExVUVDd3dJVkNCRFV5QkpSRVV4TmpBMEJnTlZCQU1NTFZOUVVrbE9SQ0JHZFc1clpTQkZWVVJKSUZkaGJHeGxkQ0JRY205MGIzUjVjR1VnU1hOemRXbHVaeUJEUVFJQkFnPT0iLCJ0eXAiOiJ2YytzZC1qd3QiLCJhbGciOiJFUzI1NiJ9.eyJwbGFjZV9vZl9iaXJ0aCI6eyJfc2QiOlsiaG9zSHlUSkpYRXRtbHdvcC13TU9QR1NWd1J3MTdzOW83M0kyc3plQlZEbyJdfSwiX3NkIjpbIjRDbDVaZ0trN256V09FZmFXa2xhZ0FqQU53QmRMeDJST25UVUhrS1JZY1UiLCI1amQtYXFEZFRfQnUtV2tGOXNvbW5NeEVISnRyVGxRYlRfRU9Eay1yUlNzIiwiNmZ6NEdoRVp5ZnpaRndNY1dOTF9CVHRwdHNEd3RrV1habjdqTl9rU1FnWSIsIkM3VG1jS1lsVHA0Ty05VnI0SEZ0cUdBQWUwNERHX3Fmcy04MzRpSVJMVG8iLCJQVEprTlByTEw3a3pvcFpPTnZWc2pmaWppSi1rdXc2MW5BTGJUWFpsOFhvIiwiUmd0eHNOSHBVNUZJN0xNa1ktb0Q3ZFZ4eUtNMkc4RUc5aHR2TVJpZFBQRSIsImJ4YUwyQ2tpX3B2VGxhYWRRU0MwMVlhakVQcXlYMzlORFdEU2dCU2RuZlEiXSwiYWRkcmVzcyI6eyJfc2QiOlsiOTZqVjZZXy04d2VtcVgxallMdkN1N3R4dVRRT01LMTczeUdZZ1FtOUNQQSIsIkdZdWk3cHZ4bW8yQXFlblY1WWdCQmtFdGs4WGdzNktiTUZHS0o3T1c3YmciLCJmZHQwWG14OEkyOGRmcm1iQTQtbDl5ZDI5anBWSzhkUFd5clIzQ1ZMWm9JIiwicXJnQzVxM25xZWxlOGpZbVkzQmt6QjBQeEFsdHkxNl9GaHJPa2FGaGtkWSJdfSwiaXNzdWluZ19jb3VudHJ5IjoiREUiLCJ2Y3QiOiJodHRwczovL2V4YW1wbGUuYm1pLmJ1bmQuZGUvY3JlZGVudGlhbC9waWQvMS4wIiwiaXNzdWluZ19hdXRob3JpdHkiOiJERSIsIl9zZF9hbGciOiJzaGEtMjU2IiwiaXNzIjoiaHR0cHM6Ly9kZW1vLnBpZC1pc3N1ZXIuYnVuZGVzZHJ1Y2tlcmVpLmRlL2MxIiwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6Ik5lWF9abml3eERPSkRfS3lxZjY3OFYtWXgzZjMtRFoweUQ5WGVycEZtY2MiLCJ5IjoiZ3BvNUgweldhUE05eWM3TTJyZXg0SVo2R2ViOUoyODQyVDN0Nlg4ZnJBTSJ9fSwiZXhwIjoxNzMzNzA5NTE0LCJpYXQiOjE3MzI0OTk5MTQsImFnZV9lcXVhbF9vcl9vdmVyIjp7Il9zZCI6WyJIbUQtNnlpYVZPWVB6ZG1XTFBteU94enI4cTJnb3VPOUo5VjZVMFBPT1Y0IiwiSW5zX2JNOVZOaUJGV0ZNNXR1NXZ0M3RrWmhaUUJtY25LTUl5QU16dXYxcyIsImE5ZjNPaWp0NHByZGYtV2lvclkxZ09jZEliX1dDc1JwVzlCS2JPb0ZxUW8iLCJlQ19QbG9nMEMtZTJuN0s0WVNuU3NBQjRLS1dUdmxnMlpkOXhEQm1pRDVnIiwib2E2UVV5SGxQbmU5QW1tT29KTjdFQ1AwRHpEZy1TSVlKUnQtcVNheUxWSSIsInZUZlcwY2VQd0VDQXNUbTVWMFNaZlp6T0lLQUdmRHIyMTlqOWpmaFRIQUUiXX19.m5m6mQQu6O-4Y18VoIiv4mg4Jp5QPd0RStE8hPM_caqWo5prs8spXBB_0NBANGpqnNqEdK2yLRzGidZY8GRNHA~WyI5NmhWUFZxWDJYOU5rUU9IME5WLW5nIiwiZmFtaWx5X25hbWUiLCJNVVNURVJNQU5OIl0~WyJuME1ZOXVodmFCMEZ5YnZkQ2VDNHBnIiwiZ2l2ZW5fbmFtZSIsIkVSSUtBIl0~WyJIYmwzTGZHeXFOaE5rZ05GajZyV2RBIiwiYmlydGhkYXRlIiwiMTk2NC0wOC0xMiJd~WyJPcU9TTEdXNF9JTUdRLUdjRkpSS2pBIiwiYWdlX2JpcnRoX3llYXIiLDE5NjRd~WyJsdGpKV1k2cVM0V1p1bXlTNF9xcW5RIiwiYWdlX2luX3llYXJzIiw2MF0~WyJvVnFxdEY3LXdHSE5xNXJnSURlQTdnIiwiYmlydGhfZmFtaWx5X25hbWUiLCJHQUJMRVIiXQ~WyI2TDZaSjRyN2lCTmdRVjY3SXR1c1JRIiwibmF0aW9uYWxpdGllcyIsWyJERSJdXQ~WyJQLV9LSjhieTQ1NkJpenNWZ2N4UER3IiwiMTIiLHRydWVd~WyIwSmxOY0ZYd1FUYmMzMUF0SGlhY1lBIiwiMTQiLHRydWVd~WyJldjR6UE85ckZZc3QtRE55V2hzMVZRIiwiMTYiLHRydWVd~WyJ1OWxaSzljaE4wWVJWV082ZG9ySThRIiwiMTgiLHRydWVd~WyJnWkZqMUhmRS12azJFNmEzTzRESl93IiwiMjEiLHRydWVd~WyJweGNQWWIzZEFkYnhLMTdTUXR4SWRRIiwiNjUiLGZhbHNlXQ~WyJHU25uUnF0T2p0dl9FMk1Qd3l1bFZRIiwibG9jYWxpdHkiLCJCRVJMSU4iXQ~WyJoRmJNbnZGSWhtUXNpanpUT1Q1VFVnIiwibG9jYWxpdHkiLCJLw5ZMTiJd~WyJUc3lxN3RSSm9LMmEzeF9PWFlmMWp3IiwiY291bnRyeSIsIkRFIl0~WyJLQUwyVHFfSlZRLS1PMXBzYUJtSzhBIiwicG9zdGFsX2NvZGUiLCI1MTE0NyJd~WyJ4SFVxVkNwaGNSdVJYSVRZbDZsSndnIiwic3RyZWV0X2FkZHJlc3MiLCJIRUlERVNUUkHhup5FIDE3Il0~' diff --git a/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts b/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts index 3458488ae3..2a95d3f5f3 100644 --- a/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts +++ b/packages/core/src/modules/sd-jwt-vc/decodeSdJwtVc.ts @@ -26,6 +26,6 @@ export function decodeSdJwtVc< prettyClaims: prettyClaims as Payload, typeMetadata, claimFormat: ClaimFormat.SdJwtVc, - encoded: compactSdJwtVc + encoded: compactSdJwtVc, } } diff --git a/packages/core/src/modules/sd-jwt-vc/disclosureFrame.ts b/packages/core/src/modules/sd-jwt-vc/disclosureFrame.ts new file mode 100644 index 0000000000..84f30800e9 --- /dev/null +++ b/packages/core/src/modules/sd-jwt-vc/disclosureFrame.ts @@ -0,0 +1,32 @@ +type DisclosureFrame = { + [key: string]: boolean | DisclosureFrame +} + +export function buildDisclosureFrameFromPayload(input: Record): DisclosureFrame | null { + // Handle objects recursively + const result: DisclosureFrame = {} + + // Base case: input is null or undefined + if (input === null || input === undefined) { + return result + } + + for (const [key, value] of Object.entries(input)) { + // Ignore non-value values + if (value === null || value === undefined) continue + + if (typeof value === 'object') { + if (Array.isArray(value)) { + // TODO: Array disclosure frames are not yet supported - treating entire array as disclosed + result[key] = true + } else { + result[key] = buildDisclosureFrameFromPayload(value as Record) ?? false + } + } else { + // Handle primitive values + result[key] = true + } + } + + return Object.keys(result).length > 0 ? result : null +} diff --git a/packages/openid4vc/src/openid4vc-holder/__tests__/openid4vci-holder.test.ts b/packages/openid4vc/src/openid4vc-holder/__tests__/openid4vci-holder.test.ts index 4a150c06d6..51fb81b1ff 100644 --- a/packages/openid4vc/src/openid4vc-holder/__tests__/openid4vci-holder.test.ts +++ b/packages/openid4vc/src/openid4vc-holder/__tests__/openid4vci-holder.test.ts @@ -230,7 +230,7 @@ describe('OpenId4VcHolder', () => { claimFormat: 'vc+sd-jwt', compact: 'eyJhbGciOiJFZERTQSIsInR5cCI6InZjK3NkLWp3dCIsImtpZCI6IiN6Nk1raDVITlBDQ0pXWm42V1JMalJQdHR5dllaQnNrWlVkU0pmVGlad2NVU2llcXgifQ.eyJ2Y3QiOiJBbmltb09wZW5JZDRWY1BsYXlncm91bmQiLCJwbGF5Z3JvdW5kIjp7ImZyYW1ld29yayI6IkFyaWVzIEZyYW1ld29yayBKYXZhU2NyaXB0IiwiY3JlYXRlZEJ5IjoiQW5pbW8gU29sdXRpb25zIiwiX3NkIjpbImZZM0ZqUHpZSEZOcHlZZnRnVl9kX25DMlRHSVh4UnZocE00VHdrMk1yMDQiLCJwTnNqdmZJeVBZOEQwTks1c1l0alR2Nkc2R0FNVDNLTjdaZDNVNDAwZ1pZIl19LCJjbmYiOnsiandrIjp7Imt0eSI6Ik9LUCIsImNydiI6IkVkMjU1MTkiLCJ4Ijoia2MydGxwaGNadzFBSUt5a3pNNnBjY2k2UXNLQW9jWXpGTC01RmUzNmg2RSJ9fSwiaXNzIjoiZGlkOmtleTp6Nk1raDVITlBDQ0pXWm42V1JMalJQdHR5dllaQnNrWlVkU0pmVGlad2NVU2llcXgiLCJpYXQiOjE3MDU4NDM1NzQsIl9zZF9hbGciOiJzaGEtMjU2In0.2iAjaCFcuiHXTfQsrxXo6BghtwzqTrfDmhmarAAJAhY8r9yKXY3d10JY1dry2KnaEYWpq2R786thjdA5BXlPAQ~WyI5MzM3MTM0NzU4NDM3MjYyODY3NTE4NzkiLCJsYW5ndWFnZSIsIlR5cGVTY3JpcHQiXQ~WyIxMTQ3MDA5ODk2Nzc2MDYzOTc1MDUwOTMxIiwidmVyc2lvbiIsIjEuMCJd~', - encoded: + encoded: 'eyJhbGciOiJFZERTQSIsInR5cCI6InZjK3NkLWp3dCIsImtpZCI6IiN6Nk1raDVITlBDQ0pXWm42V1JMalJQdHR5dllaQnNrWlVkU0pmVGlad2NVU2llcXgifQ.eyJ2Y3QiOiJBbmltb09wZW5JZDRWY1BsYXlncm91bmQiLCJwbGF5Z3JvdW5kIjp7ImZyYW1ld29yayI6IkFyaWVzIEZyYW1ld29yayBKYXZhU2NyaXB0IiwiY3JlYXRlZEJ5IjoiQW5pbW8gU29sdXRpb25zIiwiX3NkIjpbImZZM0ZqUHpZSEZOcHlZZnRnVl9kX25DMlRHSVh4UnZocE00VHdrMk1yMDQiLCJwTnNqdmZJeVBZOEQwTks1c1l0alR2Nkc2R0FNVDNLTjdaZDNVNDAwZ1pZIl19LCJjbmYiOnsiandrIjp7Imt0eSI6Ik9LUCIsImNydiI6IkVkMjU1MTkiLCJ4Ijoia2MydGxwaGNadzFBSUt5a3pNNnBjY2k2UXNLQW9jWXpGTC01RmUzNmg2RSJ9fSwiaXNzIjoiZGlkOmtleTp6Nk1raDVITlBDQ0pXWm42V1JMalJQdHR5dllaQnNrWlVkU0pmVGlad2NVU2llcXgiLCJpYXQiOjE3MDU4NDM1NzQsIl9zZF9hbGciOiJzaGEtMjU2In0.2iAjaCFcuiHXTfQsrxXo6BghtwzqTrfDmhmarAAJAhY8r9yKXY3d10JY1dry2KnaEYWpq2R786thjdA5BXlPAQ~WyI5MzM3MTM0NzU4NDM3MjYyODY3NTE4NzkiLCJsYW5ndWFnZSIsIlR5cGVTY3JpcHQiXQ~WyIxMTQ3MDA5ODk2Nzc2MDYzOTc1MDUwOTMxIiwidmVyc2lvbiIsIjEuMCJd~', header: { alg: 'EdDSA', diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a98940b1f..cea32c2d73 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -486,6 +486,9 @@ importers: '@sd-jwt/jwt-status-list': specifier: ^0.7.0 version: 0.7.2 + '@sd-jwt/present': + specifier: ^0.7.0 + version: 0.7.2 '@sd-jwt/sd-jwt-vc': specifier: ^0.7.0 version: 0.7.2 @@ -811,13 +814,13 @@ importers: devDependencies: react-native: specifier: ^0.71.4 - version: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0) + version: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) react-native-fs: specifier: ^2.20.0 - version: 2.20.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)) + version: 2.20.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) react-native-get-random-values: specifier: ^1.8.0 - version: 1.11.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)) + version: 1.11.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)) rimraf: specifier: ^4.4.0 version: 4.4.1 @@ -2672,6 +2675,7 @@ packages: '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': resolution: {integrity: sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A==} + bundledDependencies: [] '@sphereon/oid4vc-common@0.16.1-fix.173': resolution: {integrity: sha512-+AAUvEEFs0vzz1mrgjSgvDkcBtr18d2XEVgJex7QlAqxCKVGfjzZlqL2Q2vOLKYVaXsazhD5LnYiY6B5WMTC3Q==} @@ -2720,6 +2724,9 @@ packages: '@sphereon/ssi-types@0.30.2-next.135': resolution: {integrity: sha512-YLQfFMPUlOJUxHbOS9v01nG3cgLwTk3d95/rTnOmEQx9kXgXjoXdvt7D0uGcMRL3RHeQ9biT/jWY//mDvCirVQ==} + '@sphereon/ssi-types@0.30.2-next.279': + resolution: {integrity: sha512-8I+wlZIKICKqwTJ0lObJWao2KKYHA3hoRzB4mDapPAIPKUbojJCIh9ei37DnEf5AEDAtUS1gOlEDmC/cKJrtpA==} + '@sqltools/formatter@1.2.5': resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} @@ -6620,10 +6627,6 @@ packages: peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -10680,7 +10683,7 @@ snapshots: '@sphereon/oid4vc-common': 0.16.1-fix.173(ts-node@10.9.2(@types/node@18.18.8)(typescript@5.5.4)) '@sphereon/pex': 5.0.0-unstable.24 '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.2-next.129 + '@sphereon/ssi-types': 0.30.2-next.279 cross-fetch: 4.0.0 dcql: 0.2.13(typescript@5.5.4) debug: 4.3.7 @@ -11041,6 +11044,16 @@ snapshots: transitivePeerDependencies: - supports-color + '@sphereon/ssi-types@0.30.2-next.279': + dependencies: + '@sd-jwt/decode': 0.7.2 + '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 + debug: 4.3.7 + events: 3.3.0 + jwt-decode: 3.1.2 + transitivePeerDependencies: + - supports-color + '@sqltools/formatter@1.2.5': {} '@stablelib/aead@1.0.1': {} @@ -15845,16 +15858,16 @@ snapshots: - '@babel/preset-env' - supports-color - react-native-fs@2.20.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)): + react-native-fs@2.20.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)): dependencies: base-64: 0.1.0 - react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0) + react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) utf8: 3.0.0 - react-native-get-random-values@1.11.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0)): + react-native-get-random-values@1.11.0(react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1)): dependencies: fast-base64-decode: 1.0.0 - react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0) + react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) react-native-gradle-plugin@0.71.19: {} @@ -15864,52 +15877,6 @@ snapshots: react-native: 0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1) optional: true - react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.2.0): - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 10.2.7(@babel/core@7.26.0) - '@react-native-community/cli-platform-android': 10.2.0 - '@react-native-community/cli-platform-ios': 10.2.5 - '@react-native/assets': 1.0.0 - '@react-native/normalize-color': 2.1.0 - '@react-native/polyfills': 2.0.0 - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - base64-js: 1.5.1 - deprecated-react-native-prop-types: 3.0.2 - event-target-shim: 5.0.1 - invariant: 2.2.4 - jest-environment-node: 29.7.0 - jsc-android: 250231.0.0 - memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.73.10(@babel/core@7.26.0) - metro-runtime: 0.73.10 - metro-source-map: 0.73.10 - mkdirp: 0.5.6 - nullthrows: 1.1.1 - pretty-format: 26.6.2 - promise: 8.3.0 - react: 18.2.0 - react-devtools-core: 4.28.5 - react-native-codegen: 0.71.6(@babel/preset-env@7.26.0(@babel/core@7.26.0)) - react-native-gradle-plugin: 0.71.19 - react-refresh: 0.4.3 - react-shallow-renderer: 16.15.0(react@18.2.0) - regenerator-runtime: 0.13.11 - scheduler: 0.23.2 - stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.2(react@18.2.0) - whatwg-fetch: 3.6.20 - ws: 6.2.3 - transitivePeerDependencies: - - '@babel/core' - - '@babel/preset-env' - - bufferutil - - encoding - - supports-color - - utf-8-validate - react-native@0.71.19(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(react@18.3.1): dependencies: '@jest/create-cache-key-function': 29.7.0 @@ -15960,22 +15927,12 @@ snapshots: react-refresh@0.4.3: {} - react-shallow-renderer@16.15.0(react@18.2.0): - dependencies: - object-assign: 4.1.1 - react: 18.2.0 - react-is: 18.3.1 - react-shallow-renderer@16.15.0(react@18.3.1): dependencies: object-assign: 4.1.1 react: 18.3.1 react-is: 18.3.1 - react@18.2.0: - dependencies: - loose-envify: 1.4.0 - react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -16896,10 +16853,6 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 - use-sync-external-store@1.2.2(react@18.2.0): - dependencies: - react: 18.2.0 - use-sync-external-store@1.2.2(react@18.3.1): dependencies: react: 18.3.1