From 3da897ee34d48af6bc973dc3ae92845f0ece09e1 Mon Sep 17 00:00:00 2001 From: John Henderson Date: Fri, 3 Jul 2026 11:13:52 -0400 Subject: [PATCH 1/2] chore: migrate @sphereon/pex 1.1.3 to @animo-id/pex 6.1.1 Replace the unmaintained @sphereon/pex 1.x with @animo-id/pex 6.1.1, the fork used by Credo 0.7, so both resolve to a single copy of @sphereon/ssi-types. - presentationFrom now returns a PresentationResult; request the submission embedded in the presentation (presentationSubmissionLocation: PRESENTATION) to keep 1.x behavior - validateDefinition is now a static method on PEX - evaluatePresentation is told to generate a submission when the presentation does not carry one, matching 1.x tolerance - ProofPurpose/IPresentation/IVerifiableCredential/IProof now come from @sphereon/ssi-types; the ProofPurpose OpenAPI enum gains verificationMethod (additive) - bump @sphereon/pex-models to ^2.3.2; regenerate docs/openapi.json Signed-off-by: John Henderson --- apps/vc-api/docs/openapi.json | 1 + apps/vc-api/package.json | 7 +- .../credentials/credentials.service.spec.ts | 3 +- .../vc-api/credentials/credentials.service.ts | 11 +- .../dtos/prove-presentation-options.dto.ts | 2 +- .../credentials/dtos/verify-options.dto.ts | 2 +- ...n-definition-credential-query.validator.ts | 5 +- .../exchanges/types/verifiable-credential.ts | 2 +- .../vp-submission-verifier.service.ts | 10 +- apps/vc-api/src/vc-api/vc-api.controller.ts | 2 +- ...n-definition-credential-query.validator.ts | 5 +- .../workflows/types/verifiable-credential.ts | 2 +- .../vp-submission-verifier.service.ts | 10 +- .../consent-and-resident-card.e2e-suite.ts | 2 +- .../exchanges/rebeam/rebeam.e2e-suite.ts | 2 +- .../resident-card/resident-card.e2e-suite.ts | 2 +- .../resident-card/resident-card.e2e-suite.ts | 2 +- apps/vc-api/test/wallet-client.ts | 2 +- pnpm-lock.yaml | 752 +----------------- pnpm-workspace.yaml | 4 +- 20 files changed, 65 insertions(+), 763 deletions(-) diff --git a/apps/vc-api/docs/openapi.json b/apps/vc-api/docs/openapi.json index 44da7db4..efe9ad83 100644 --- a/apps/vc-api/docs/openapi.json +++ b/apps/vc-api/docs/openapi.json @@ -1139,6 +1139,7 @@ "ProofPurpose": { "type": "string", "enum": [ + "verificationMethod", "assertionMethod", "authentication", "keyAgreement", diff --git a/apps/vc-api/package.json b/apps/vc-api/package.json index 884dba4a..d1509b61 100644 --- a/apps/vc-api/package.json +++ b/apps/vc-api/package.json @@ -40,7 +40,6 @@ "@nestjs/typeorm": "^11.0.0", "@openwallet-foundation/askar-nodejs": "catalog:", "@openwallet-foundation/askar-shared": "catalog:", - "@sphereon/pex": "1.1.3", "axios": "~1.18.1", "class-transformer": "~0.5.1", "class-validator": "~0.14.3", @@ -53,13 +52,15 @@ "sqlite3": "~5.1.7", "swagger-ui-express": "~5.0.1", "typeorm": "^0.3.17", - "uuid": "~9.0.0" + "uuid": "~9.0.0", + "@animo-id/pex": "catalog:", + "@sphereon/ssi-types": "catalog:" }, "devDependencies": { "@nestjs/cli": "^11.0.0", "@nestjs/schematics": "^11.0.0", "@nestjs/testing": "catalog:", - "@sphereon/pex-models": "~2.0.2", + "@sphereon/pex-models": "catalog:", "@types/express": "^5.0.0", "@types/jest": "catalog:", "@types/node": "catalog:", diff --git a/apps/vc-api/src/vc-api/credentials/credentials.service.spec.ts b/apps/vc-api/src/vc-api/credentials/credentials.service.spec.ts index 8f14e84f..cbed41f1 100644 --- a/apps/vc-api/src/vc-api/credentials/credentials.service.spec.ts +++ b/apps/vc-api/src/vc-api/credentials/credentials.service.spec.ts @@ -9,7 +9,8 @@ import { IssueOptionsDto } from './dtos/issue-options.dto'; import { VerifyOptionsDto } from './dtos/verify-options.dto'; import { DIDService } from '../../did/did.service'; import { KeyService } from '../../key/key.service'; -import { IPresentationDefinition, ProofPurpose } from '@sphereon/pex'; +import { IPresentationDefinition } from '@animo-id/pex'; +import { IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import { VerifiableCredential } from '../exchanges/types/verifiable-credential'; import { CredentialDto } from './dtos/credential.dto'; import { diff --git a/apps/vc-api/src/vc-api/credentials/credentials.service.ts b/apps/vc-api/src/vc-api/credentials/credentials.service.ts index 96b6991f..f557cc4a 100644 --- a/apps/vc-api/src/vc-api/credentials/credentials.service.ts +++ b/apps/vc-api/src/vc-api/credentials/credentials.service.ts @@ -12,7 +12,8 @@ import { VerificationResultDto } from './dtos/verification-result.dto'; import { ProvePresentationDto } from './dtos/prove-presentation.dto'; import { CredentialVerifier } from './types/credential-verifier'; import { PresentationDto } from './dtos/presentation.dto'; -import { IPresentationDefinition, IVerifiableCredential, PEX, ProofPurpose, Status } from '@sphereon/pex'; +import { IPresentationDefinition, PEX, PresentationSubmissionLocation, Status } from '@animo-id/pex'; +import { IProofPurpose as ProofPurpose, IVerifiableCredential } from '@sphereon/ssi-types'; import { VerificationMethod } from 'did-resolver'; import { CredoService } from '../../credo/credo.service'; import { @@ -89,9 +90,13 @@ export class CredentialsService implements CredentialVerifier { if (areRequiredCredentialsPresent !== Status.INFO) { throw new InternalServerErrorException('Credentials do not satisfy defintion'); } - const presentation = pex.presentationFrom(presentationDefinition, verifiableCredential); + // keep the presentation submission embedded in the presentation, as + // returned by pex 1.x + const { presentations } = pex.presentationFrom(presentationDefinition, verifiableCredential, { + presentationSubmissionLocation: PresentationSubmissionLocation.PRESENTATION + }); - return presentation as PresentationDto; + return presentations[0] as PresentationDto; } async provePresentation(provePresentationDto: ProvePresentationDto): Promise { diff --git a/apps/vc-api/src/vc-api/credentials/dtos/prove-presentation-options.dto.ts b/apps/vc-api/src/vc-api/credentials/dtos/prove-presentation-options.dto.ts index 1c6997e1..52de727a 100644 --- a/apps/vc-api/src/vc-api/credentials/dtos/prove-presentation-options.dto.ts +++ b/apps/vc-api/src/vc-api/credentials/dtos/prove-presentation-options.dto.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { ProofPurpose } from '@sphereon/pex'; +import { IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import { IsEnum, IsObject, IsOptional, IsString } from 'class-validator'; import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; diff --git a/apps/vc-api/src/vc-api/credentials/dtos/verify-options.dto.ts b/apps/vc-api/src/vc-api/credentials/dtos/verify-options.dto.ts index 1adf5943..05c8d1b3 100644 --- a/apps/vc-api/src/vc-api/credentials/dtos/verify-options.dto.ts +++ b/apps/vc-api/src/vc-api/credentials/dtos/verify-options.dto.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { ProofPurpose } from '@sphereon/pex'; +import { IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import { IsOptional, IsString } from 'class-validator'; import { VerifyOptions } from '../types/verify-options'; import { ApiPropertyOptional } from '@nestjs/swagger'; diff --git a/apps/vc-api/src/vc-api/exchanges/dtos/custom-validators/presentation-definition-credential-query.validator.ts b/apps/vc-api/src/vc-api/exchanges/dtos/custom-validators/presentation-definition-credential-query.validator.ts index c08f4cb9..c94ea5f1 100644 --- a/apps/vc-api/src/vc-api/exchanges/dtos/custom-validators/presentation-definition-credential-query.validator.ts +++ b/apps/vc-api/src/vc-api/exchanges/dtos/custom-validators/presentation-definition-credential-query.validator.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { IPresentationDefinition, PEX, Status } from '@sphereon/pex'; +import { IPresentationDefinition, PEX, Status } from '@animo-id/pex'; import { registerDecorator, ValidationArguments, @@ -19,9 +19,8 @@ import { @ValidatorConstraint({ async: false }) export class IsPresentationDefinitionCredentialQueryConstraint implements ValidatorConstraintInterface { validate(value: IPresentationDefinition): boolean { - const pex = new PEX(); try { - const validated = pex.validateDefinition(value); + const validated = PEX.validateDefinition(value); const resultArray = Array.isArray(validated) ? validated : [validated]; const statuses = resultArray.map((checked) => checked.status); if (statuses.includes(Status.ERROR) || statuses.includes(Status.WARN)) { diff --git a/apps/vc-api/src/vc-api/exchanges/types/verifiable-credential.ts b/apps/vc-api/src/vc-api/exchanges/types/verifiable-credential.ts index febada14..e7b38f25 100644 --- a/apps/vc-api/src/vc-api/exchanges/types/verifiable-credential.ts +++ b/apps/vc-api/src/vc-api/exchanges/types/verifiable-credential.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { IProof } from '@sphereon/pex'; +import { IProof } from '@sphereon/ssi-types'; import { Credential } from './credential'; /** diff --git a/apps/vc-api/src/vc-api/exchanges/vp-submission-verifier.service.ts b/apps/vc-api/src/vc-api/exchanges/vp-submission-verifier.service.ts index eec7db1c..47706981 100644 --- a/apps/vc-api/src/vc-api/exchanges/vp-submission-verifier.service.ts +++ b/apps/vc-api/src/vc-api/exchanges/vp-submission-verifier.service.ts @@ -4,7 +4,8 @@ */ import { Injectable, Logger } from '@nestjs/common'; -import { ProofPurpose, IPresentationDefinition, PEX, IPresentation } from '@sphereon/pex'; +import { IPresentationDefinition, PEX } from '@animo-id/pex'; +import { IPresentation, IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import { CredentialsService } from '../credentials/credentials.service'; import { VpRequestEntity } from './entities/vp-request.entity'; import { SubmissionVerifier } from './types/submission-verifier'; @@ -111,7 +112,12 @@ export class VpSubmissionVerifierService implements SubmissionVerifier { let partialErrors; try { - const { errors } = pex.evaluatePresentation(presentationDefinition, presentation as IPresentation); + const { errors } = pex.evaluatePresentation(presentationDefinition, presentation as IPresentation, { + // pex 1.x evaluated presentations without an embedded submission; + // pex 6.x requires one unless asked to generate it + generatePresentationSubmission: + (presentation as IPresentation).presentation_submission === undefined + }); partialErrors = errors; } catch (err) { if (typeof err === 'string') { diff --git a/apps/vc-api/src/vc-api/vc-api.controller.ts b/apps/vc-api/src/vc-api/vc-api.controller.ts index 7267d8c0..fd613475 100644 --- a/apps/vc-api/src/vc-api/vc-api.controller.ts +++ b/apps/vc-api/src/vc-api/vc-api.controller.ts @@ -51,7 +51,7 @@ import { BadRequestErrorResponseDto } from '../dtos/bad-request-error-response.d import { ConflictErrorResponseDto } from '../dtos/conflict-error-response.dto'; import { NotFoundErrorResponseDto } from '../dtos/not-found-error-response.dto'; import { InternalServerErrorResponseDto } from '../dtos/internal-server-error-response.dto'; -import { IPresentationDefinition } from '@sphereon/pex'; +import { IPresentationDefinition } from '@animo-id/pex'; import { AuthenticateDto } from './credentials/dtos/authenticate.dto'; import { CreateWorkflowRequestDto } from './workflows/dtos/create-workflow-request.dto'; import { WorkflowService } from './workflows/workflow.service'; diff --git a/apps/vc-api/src/vc-api/workflows/dtos/custom-validators/presentation-definition-credential-query.validator.ts b/apps/vc-api/src/vc-api/workflows/dtos/custom-validators/presentation-definition-credential-query.validator.ts index c08f4cb9..c94ea5f1 100644 --- a/apps/vc-api/src/vc-api/workflows/dtos/custom-validators/presentation-definition-credential-query.validator.ts +++ b/apps/vc-api/src/vc-api/workflows/dtos/custom-validators/presentation-definition-credential-query.validator.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { IPresentationDefinition, PEX, Status } from '@sphereon/pex'; +import { IPresentationDefinition, PEX, Status } from '@animo-id/pex'; import { registerDecorator, ValidationArguments, @@ -19,9 +19,8 @@ import { @ValidatorConstraint({ async: false }) export class IsPresentationDefinitionCredentialQueryConstraint implements ValidatorConstraintInterface { validate(value: IPresentationDefinition): boolean { - const pex = new PEX(); try { - const validated = pex.validateDefinition(value); + const validated = PEX.validateDefinition(value); const resultArray = Array.isArray(validated) ? validated : [validated]; const statuses = resultArray.map((checked) => checked.status); if (statuses.includes(Status.ERROR) || statuses.includes(Status.WARN)) { diff --git a/apps/vc-api/src/vc-api/workflows/types/verifiable-credential.ts b/apps/vc-api/src/vc-api/workflows/types/verifiable-credential.ts index febada14..e7b38f25 100644 --- a/apps/vc-api/src/vc-api/workflows/types/verifiable-credential.ts +++ b/apps/vc-api/src/vc-api/workflows/types/verifiable-credential.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { IProof } from '@sphereon/pex'; +import { IProof } from '@sphereon/ssi-types'; import { Credential } from './credential'; /** diff --git a/apps/vc-api/src/vc-api/workflows/vp-submission-verifier.service.ts b/apps/vc-api/src/vc-api/workflows/vp-submission-verifier.service.ts index 163b4c11..28ce1511 100644 --- a/apps/vc-api/src/vc-api/workflows/vp-submission-verifier.service.ts +++ b/apps/vc-api/src/vc-api/workflows/vp-submission-verifier.service.ts @@ -4,7 +4,8 @@ */ import { Injectable, Logger } from '@nestjs/common'; -import { ProofPurpose, IPresentationDefinition, PEX, IPresentation } from '@sphereon/pex'; +import { IPresentationDefinition, PEX } from '@animo-id/pex'; +import { IPresentation, IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import { CredentialsService } from '../credentials/credentials.service'; import { SubmissionVerifier } from './types/submission-verifier'; import { VerifiablePresentation } from './types/verifiable-presentation'; @@ -112,7 +113,12 @@ export class VpSubmissionVerifierService implements SubmissionVerifier { let partialErrors; try { - const { errors } = pex.evaluatePresentation(presentationDefinition, presentation as IPresentation); + const { errors } = pex.evaluatePresentation(presentationDefinition, presentation as IPresentation, { + // pex 1.x evaluated presentations without an embedded submission; + // pex 6.x requires one unless asked to generate it + generatePresentationSubmission: + (presentation as IPresentation).presentation_submission === undefined + }); partialErrors = errors; } catch (err) { if (typeof err === 'string') { diff --git a/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card.e2e-suite.ts b/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card.e2e-suite.ts index 67aeba5e..6c289720 100644 --- a/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card.e2e-suite.ts +++ b/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card.e2e-suite.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { ProofPurpose } from '@sphereon/pex'; +import { IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import * as request from 'supertest'; import * as nock from 'nock'; import { PresentationDto } from '../../../../src/vc-api/credentials/dtos/presentation.dto'; diff --git a/apps/vc-api/test/vc-api/exchanges/rebeam/rebeam.e2e-suite.ts b/apps/vc-api/test/vc-api/exchanges/rebeam/rebeam.e2e-suite.ts index c234b5fd..6bce80e1 100644 --- a/apps/vc-api/test/vc-api/exchanges/rebeam/rebeam.e2e-suite.ts +++ b/apps/vc-api/test/vc-api/exchanges/rebeam/rebeam.e2e-suite.ts @@ -5,7 +5,7 @@ import * as request from 'supertest'; import * as nock from 'nock'; -import { ProofPurpose } from '@sphereon/pex'; +import { IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import { RebeamCpoNode } from './rebeam-cpo-node'; import { app, getContinuationEndpoint, vcApiBaseUrl, walletClient } from '../../../app.e2e-spec'; import { RebeamSupplier } from './rebeam-supplier'; diff --git a/apps/vc-api/test/vc-api/exchanges/resident-card/resident-card.e2e-suite.ts b/apps/vc-api/test/vc-api/exchanges/resident-card/resident-card.e2e-suite.ts index 152aad84..4f99b0db 100644 --- a/apps/vc-api/test/vc-api/exchanges/resident-card/resident-card.e2e-suite.ts +++ b/apps/vc-api/test/vc-api/exchanges/resident-card/resident-card.e2e-suite.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { ProofPurpose } from '@sphereon/pex'; +import { IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import * as request from 'supertest'; import * as nock from 'nock'; import { PresentationDto } from '../../../../src/vc-api/credentials/dtos/presentation.dto'; diff --git a/apps/vc-api/test/vc-api/workflows/resident-card/resident-card.e2e-suite.ts b/apps/vc-api/test/vc-api/workflows/resident-card/resident-card.e2e-suite.ts index a5b8b9ce..6a5c6946 100644 --- a/apps/vc-api/test/vc-api/workflows/resident-card/resident-card.e2e-suite.ts +++ b/apps/vc-api/test/vc-api/workflows/resident-card/resident-card.e2e-suite.ts @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { ProofPurpose } from '@sphereon/pex'; +import { IProofPurpose as ProofPurpose } from '@sphereon/ssi-types'; import * as request from 'supertest'; import * as nock from 'nock'; import { PresentationDto } from '../../../../src/vc-api/credentials/dtos/presentation.dto'; diff --git a/apps/vc-api/test/wallet-client.ts b/apps/vc-api/test/wallet-client.ts index 9d3909dc..39371dda 100644 --- a/apps/vc-api/test/wallet-client.ts +++ b/apps/vc-api/test/wallet-client.ts @@ -16,7 +16,7 @@ import { ExchangeResponseDto as WfExchangeResponseDto } from '../src/vc-api/work import { VpRequestQueryType } from '../src/vc-api/exchanges/types/vp-request-query-type'; import { TransactionDto } from '../src/vc-api/exchanges/dtos/transaction.dto'; import { SubmissionReviewDto } from '../src/vc-api/exchanges/dtos/submission-review.dto'; -import { IPresentationDefinition } from '@sphereon/pex'; +import { IPresentationDefinition } from '@animo-id/pex'; import { PresentationDto } from '../src/vc-api/credentials/dtos/presentation.dto'; import { KeyPairDto } from '../src/key/dtos/key-pair.dto'; import { KeyDescriptionDto } from 'src/key/dtos/key-description.dto'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b76215b1..d6fc9303 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,9 @@ settings: catalogs: default: + '@animo-id/pex': + specifier: ^6.1.1 + version: 6.1.1 '@credo-ts/askar': specifier: ^0.7.0 version: 0.7.0 @@ -33,6 +36,12 @@ catalogs: '@openwallet-foundation/askar-shared': specifier: ^0.6.0 version: 0.6.0 + '@sphereon/pex-models': + specifier: ^2.3.2 + version: 2.3.2 + '@sphereon/ssi-types': + specifier: 0.33.0 + version: 0.33.0 '@types/jest': specifier: ^30.0.0 version: 30.0.0 @@ -140,6 +149,9 @@ importers: apps/vc-api: dependencies: + '@animo-id/pex': + specifier: 'catalog:' + version: 6.1.1 '@credo-ts/askar': specifier: 'catalog:' version: 0.7.0(@openwallet-foundation/askar-shared@0.6.0)(encoding@0.1.13)(typescript@5.9.3) @@ -188,9 +200,9 @@ importers: '@openwallet-foundation/askar-shared': specifier: 'catalog:' version: 0.6.0 - '@sphereon/pex': - specifier: 1.1.3 - version: 1.1.3 + '@sphereon/ssi-types': + specifier: 'catalog:' + version: 0.33.0 axios: specifier: ~1.18.1 version: 1.18.1 @@ -241,8 +253,8 @@ importers: specifier: 'catalog:' version: 11.1.27(@nestjs/common@11.1.27(class-transformer@0.5.1)(class-validator@0.14.1)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.27)(@nestjs/platform-express@11.1.27) '@sphereon/pex-models': - specifier: ~2.0.2 - version: 2.0.3 + specifier: 'catalog:' + version: 2.3.2 '@types/express': specifier: ^5.0.0 version: 5.0.6 @@ -1511,19 +1523,9 @@ packages: '@sphereon/kmp-mdoc-core@0.2.0-SNAPSHOT.26': resolution: {integrity: sha512-QXJ6R8ENiZV2rPMbn06cw5JKwqUYN1kzVRbYfONqE1PEXx1noQ4md7uxr2zSczi0ubKkNcbyYDNtIMTZIhGzmQ==} - '@sphereon/pex-models@1.2.2': - resolution: {integrity: sha512-/pGDQGs4lSK4Fuf6WzaGengb1UqNYmjRdkIC+dJT89kMktIwJLoNB2PvQHcggn3nEbmwZFB/1dgJGumAnWPYsg==} - - '@sphereon/pex-models@2.0.3': - resolution: {integrity: sha512-NsPeYmJLhxRG5fJxpcHnRR3xvi7i8SK8s21kYR9oBWO8cBU9qBCpw3gdUNiyI01/h6fbYqkIZ7eBNsHBIzqk5Q==} - '@sphereon/pex-models@2.3.2': resolution: {integrity: sha512-foFxfLkRwcn/MOp/eht46Q7wsvpQGlO7aowowIIb5Tz9u97kYZ2kz6K2h2ODxWuv5CRA7Q0MY8XUBGE2lfOhOQ==} - '@sphereon/pex@1.1.3': - resolution: {integrity: sha512-9k+g3zDAfIwmzbmZ9sfdgIpm7OCTURDprmpgCNGda5aAxRvErEZOakn3vsT5y6ac3g8Os2QolZi4bEYyuvKq3w==} - engines: {node: '>=10'} - '@sphereon/ssi-types@0.33.0': resolution: {integrity: sha512-OQnWLKZQU6lHlMw3JS5308q5Kctv1eT/NNQthGNXETarsgJFiD711pWMOJvi0p5kLpU8N1e7/okaH3mXsVAW0A==} @@ -2071,17 +2073,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -2092,10 +2086,6 @@ packages: resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} engines: {node: '>=12.0.0'} - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -2457,18 +2447,6 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - dayjs@1.11.21: resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} @@ -2518,10 +2496,6 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -2619,14 +2593,6 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-abstract-get@1.0.0: - resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} - engines: {node: '>= 0.4'} - - es-abstract@1.24.2: - resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} - engines: {node: '>= 0.4'} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -2646,10 +2612,6 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-to-primitive@1.3.4: - resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} - engines: {node: '>= 0.4'} - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2670,11 +2632,6 @@ packages: engines: {node: '>=4.0'} hasBin: true - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - eslint-config-prettier@10.1.8: resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true @@ -2715,11 +2672,6 @@ packages: resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - esprima@1.2.5: - resolution: {integrity: sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==} - engines: {node: '>=0.4.0'} - hasBin: true - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -2916,22 +2868,11 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - function.prototype.name@1.2.0: - resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gauge@4.0.4: resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. - generator-function@2.0.1: - resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} - engines: {node: '>= 0.4'} - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2956,10 +2897,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -2992,10 +2929,6 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3008,10 +2941,6 @@ packages: engines: {node: '>=0.4.7'} hasBin: true - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3019,10 +2948,6 @@ packages: has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -3118,10 +3043,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - ip-address@10.2.0: resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} @@ -3130,49 +3051,17 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-document.all@1.0.0: - resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} - engines: {node: '>= 0.4'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -3181,10 +3070,6 @@ packages: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} - is-generator-function@1.1.2: - resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} - engines: {node: '>= 0.4'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -3196,21 +3081,9 @@ packages: is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3218,30 +3091,10 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -3250,18 +3103,6 @@ packages: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3504,9 +3345,6 @@ packages: jsonfile@6.2.1: resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} - jsonpath@1.3.0: - resolution: {integrity: sha512-0kjkYHJBkAy50Z5QzArZ7udmvxrJzkpKYW27fiF//BrMY7TQibYLl+FYIXN2BiYmwMIVzSfD8aDRj6IzgBX2/w==} - jwt-decode@3.1.2: resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} @@ -3855,14 +3693,6 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -3889,10 +3719,6 @@ packages: outvariant@1.4.3: resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -4101,14 +3927,6 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4157,21 +3975,9 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - safe-array-concat@1.1.4: - resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} - engines: {node: '>=0.4'} - safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -4211,14 +4017,6 @@ packages: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -4326,17 +4124,10 @@ packages: static-eval@2.0.2: resolution: {integrity: sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==} - static-eval@2.1.1: - resolution: {integrity: sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -4356,22 +4147,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.trim@1.2.11: - resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.10: - resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -4659,18 +4434,6 @@ packages: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.8: - resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} - engines: {node: '>= 0.4'} - typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -4757,13 +4520,6 @@ packages: uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - underscore@1.13.6: - resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} - undici-types@7.18.2: resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} @@ -4882,18 +4638,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.22: resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} engines: {node: '>= 0.4'} @@ -6533,22 +6277,8 @@ snapshots: '@js-joda/timezone': 2.3.0(@js-joda/core@5.6.3) format-util: 1.0.5 - '@sphereon/pex-models@1.2.2': {} - - '@sphereon/pex-models@2.0.3': {} - '@sphereon/pex-models@2.3.2': {} - '@sphereon/pex@1.1.3': - dependencies: - '@sphereon/pex-models': 1.2.2 - ajv: 8.20.0 - ajv-formats: 2.1.1(ajv@8.20.0) - jsonpath: 1.3.0 - jwt-decode: 3.1.2 - nanoid: 3.3.15 - string.prototype.matchall: 4.0.12 - '@sphereon/ssi-types@0.33.0': dependencies: '@noble/hashes': 1.6.1 @@ -7130,23 +6860,8 @@ snapshots: argparse@2.0.1: {} - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - array-timsort@1.0.3: {} - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - asap@2.0.6: {} asn1.js@5.4.1: @@ -7162,8 +6877,6 @@ snapshots: pvutils: 1.1.5 tslib: 2.8.1 - async-function@1.0.0: {} - asynckit@0.4.0: {} available-typed-arrays@1.0.7: @@ -7579,24 +7292,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - dayjs@1.11.21: {} dcql@3.0.0(typescript@5.9.3): @@ -7633,12 +7328,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - delayed-stream@1.0.0: {} delegates@1.0.0: @@ -7725,70 +7414,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract-get@1.0.0: - dependencies: - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - is-callable: 1.2.7 - object-inspect: 1.13.4 - - es-abstract@1.24.2: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.4 - function.prototype.name: 1.2.0 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.4 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.4 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.11 - string.prototype.trimend: 1.0.10 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.8 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.22 - es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -7806,15 +7431,6 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.4 - es-to-primitive@1.3.4: - dependencies: - es-abstract-get: 1.0.0 - es-define-property: 1.0.1 - es-errors: 1.3.0 - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - escalade@3.2.0: {} escape-html@1.0.3: {} @@ -7832,14 +7448,6 @@ snapshots: optionalDependencies: source-map: 0.6.1 - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - eslint-config-prettier@10.1.8(eslint@10.6.0): dependencies: eslint: 10.6.0 @@ -7903,8 +7511,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.17.0) eslint-visitor-keys: 5.0.1 - esprima@1.2.5: {} - esprima@4.0.1: {} esquery@1.7.0: @@ -8152,20 +7758,6 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.2.0: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - es-define-property: 1.0.1 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - hasown: 2.0.4 - is-callable: 1.2.7 - is-document.all: 1.0.0 - - functions-have-names@1.2.3: {} - gauge@4.0.4: dependencies: aproba: 2.1.0 @@ -8178,8 +7770,6 @@ snapshots: wide-align: 1.1.5 optional: true - generator-function@2.0.1: {} - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -8206,12 +7796,6 @@ snapshots: get-stream@6.0.1: {} - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - github-from-package@0.0.0: {} glob-parent@6.0.2: @@ -8253,11 +7837,6 @@ snapshots: globals@16.5.0: {} - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -8271,18 +7850,12 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 - has-bigints@1.1.0: {} - has-flag@4.0.0: {} has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -8385,77 +7958,21 @@ snapshots: ini@1.3.8: {} - internal-slot@1.1.0: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.4 - side-channel: 1.1.1 - ip-address@10.2.0: optional: true ipaddr.js@1.9.1: {} - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-arrayish@0.2.1: {} - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-bigint@1.1.0: - dependencies: - has-bigints: 1.1.0 - - is-boolean-object@1.2.2: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - is-callable@1.2.7: {} - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - - is-date-object@1.1.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-document.all@1.0.0: - dependencies: - call-bound: 1.0.4 - is-extglob@2.1.1: {} - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - is-fullwidth-code-point@3.0.0: {} is-generator-fn@2.1.0: {} - is-generator-function@1.1.2: - dependencies: - call-bound: 1.0.4 - generator-function: 2.0.1 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -8465,64 +7982,20 @@ snapshots: is-lambda@1.0.1: optional: true - is-map@2.0.3: {} - - is-negative-zero@2.0.3: {} - is-node-process@1.2.0: {} - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - is-number@7.0.0: {} is-promise@4.0.0: {} - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.4 - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.4: - dependencies: - call-bound: 1.0.4 - is-stream@2.0.1: {} - is-string@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-symbol@1.1.1: - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.22 is-unicode-supported@0.1.0: {} - is-weakmap@2.0.2: {} - - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - isarray@2.0.5: {} isexe@2.0.0: {} @@ -8977,12 +8450,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonpath@1.3.0: - dependencies: - esprima: 1.2.5 - static-eval: 2.1.1 - underscore: 1.13.6 - jwt-decode@3.1.2: {} jwt-decode@4.0.0: {} @@ -9301,17 +8768,6 @@ snapshots: object-inspect@1.13.4: {} - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - has-symbols: 1.1.0 - object-keys: 1.1.1 - on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -9356,12 +8812,6 @@ snapshots: outvariant@1.4.3: {} - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -9555,26 +9005,6 @@ snapshots: reflect-metadata@0.2.2: {} - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - regexp.prototype.flags@1.5.4: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -9622,27 +9052,8 @@ snapshots: dependencies: tslib: 2.8.1 - safe-array-concat@1.1.4: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - safe-buffer@5.2.1: {} - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - safer-buffer@2.1.2: {} schema-utils@3.3.0: @@ -9703,19 +9114,6 @@ snapshots: gopd: 1.2.0 has-property-descriptors: 1.0.2 - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -9839,17 +9237,8 @@ snapshots: dependencies: escodegen: 1.14.3 - static-eval@2.1.1: - dependencies: - escodegen: 2.1.0 - statuses@2.0.2: {} - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - streamsearch@1.1.0: {} strict-event-emitter@0.5.1: {} @@ -9871,46 +9260,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.1 - - string.prototype.trim@1.2.11: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 - has-property-descriptors: 1.0.2 - safe-regex-test: 1.1.0 - - string.prototype.trimend@1.0.10: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -10196,33 +9545,6 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.8: - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - typedarray@0.0.6: {} typeorm@0.3.30(sqlite3@5.1.7)(ts-node@10.9.2(@types/node@24.13.2)(typescript@5.9.3)): @@ -10275,15 +9597,6 @@ snapshots: dependencies: multiformats: 9.9.0 - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - - underscore@1.13.6: {} - undici-types@7.18.2: {} undici-types@8.3.0: {} @@ -10445,37 +9758,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.2.0 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.2 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.22 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - which-typed-array@1.1.22: dependencies: available-typed-arrays: 1.0.7 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 86b355eb..65fc8875 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,7 +9,6 @@ allowBuilds: '@openwallet-foundation/askar-nodejs': true '@nestjs/core': true '@scarf/scarf': false - '@sphereon/pex': false es5-ext: false sqlite3: true unrs-resolver: true @@ -19,11 +18,14 @@ allowBuilds: # Shared dependency versions (replaces Rush's ensureConsistentVersions). # Reference these from package.json with the "catalog:" protocol. catalog: + '@animo-id/pex': ^6.1.1 '@credo-ts/askar': ^0.7.0 '@credo-ts/core': ^0.7.0 '@credo-ts/node': ^0.7.0 '@openwallet-foundation/askar-nodejs': ^0.6.0 '@openwallet-foundation/askar-shared': ^0.6.0 + '@sphereon/pex-models': ^2.3.2 + '@sphereon/ssi-types': 0.33.0 '@nestjs/common': ^11.1.0 '@nestjs/core': ^11.1.0 '@nestjs/platform-express': ^11.1.0 From b6d8d690fce43190bb090bf66023bba3f2bfa36a Mon Sep 17 00:00:00 2001 From: John Henderson Date: Fri, 3 Jul 2026 11:28:15 -0400 Subject: [PATCH 2/2] test: make consent presentation-definition filters PE-spec conformant pex 6 validates field filters against the DIF Presentation Exchange filter schema, which does not allow free-form json-schema keywords (properties, $ref, definitions, additionalItems). The consent credential @context and credentialSubject filters used those keywords and were rejected, so creating the consent presentation exchange returned 400 in CI. Express the same checks with json paths into the context array and subject instead. Also clean nock interceptors between e2e tests: the 400 aborted one test and its unused callback interceptor absorbed the next tests\x27 callbacks, cascading into two unrelated-looking scope failures. Signed-off-by: John Henderson --- apps/vc-api/test/app.e2e-spec.ts | 6 + ...and-resident-card-presentation.exchange.ts | 118 ++++++------------ 2 files changed, 44 insertions(+), 80 deletions(-) diff --git a/apps/vc-api/test/app.e2e-spec.ts b/apps/vc-api/test/app.e2e-spec.ts index e99f0858..317d1296 100644 --- a/apps/vc-api/test/app.e2e-spec.ts +++ b/apps/vc-api/test/app.e2e-spec.ts @@ -58,6 +58,12 @@ describe('App (e2e)', () => { await workflowRepository.clear(); }); + // Drop any interceptors a failed test left behind; otherwise they absorb + // the next test's callback requests and its scope assertions fail too + afterEach(() => { + nock.cleanAll(); + }); + describe('DID (e2e)', didSuite); describe('Key (e2e)', keySuite); describe('VC-API (e2e)', vcApiSuite); diff --git a/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card-presentation.exchange.ts b/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card-presentation.exchange.ts index 55e798af..c914c53f 100644 --- a/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card-presentation.exchange.ts +++ b/apps/vc-api/test/vc-api/exchanges/consent-and-resident-card-credentialexchange/consent-and-resident-card-presentation.exchange.ts @@ -86,52 +86,31 @@ export class ConsentAndResidentCardPresentation { const: 'urn:uuid:49f69fb8-f256-4b2e-b15d-c7ebec3a507e' } }, + // pex 6 validates filters against the DIF PE filter schema, which + // does not allow free-form json-schema keywords such as "properties" + // or "$ref"; reach into the context and subject with json paths instead { - path: ['$.@context'], + path: ["$['@context'][0]"], filter: { - $schema: 'http://json-schema.org/draft-07/schema#', - type: 'array', - items: [ - { - const: 'https://www.w3.org/2018/credentials/v1' - }, - { - $ref: '#/definitions/eliaGroupContext' - } - ], - additionalItems: false, - minItems: 2, - maxItems: 2, - definitions: { - eliaGroupContext: { - type: 'object', - properties: { - elia: { - const: 'https://www.eliagroup.eu/ld-context-2022#' - }, - consent: { - const: 'elia:consent' - }, - ConsentCredential: { - const: 'elia:ConsentCredential' - } - }, - additionalProperties: false, - required: ['elia', 'consent'] - } - } + const: 'https://www.w3.org/2018/credentials/v1' } }, { - path: ['$.credentialSubject'], + path: ["$['@context'][1].elia"], filter: { - type: 'object', - properties: { - consent: { - const: 'I consent to such and such' - } - }, - additionalProperties: true + const: 'https://www.eliagroup.eu/ld-context-2022#' + } + }, + { + path: ["$['@context'][1].consent"], + filter: { + const: 'elia:consent' + } + }, + { + path: ['$.credentialSubject.consent'], + filter: { + const: 'I consent to such and such' } }, { @@ -223,52 +202,31 @@ export class ConsentAndResidentCardPresentation { const: 'urn:uuid:49f69fb8-f256-4b2e-b15d-c7ebec3a507e' } }, + // pex 6 validates filters against the DIF PE filter schema, which + // does not allow free-form json-schema keywords such as "properties" + // or "$ref"; reach into the context and subject with json paths instead { - path: ['$.@context'], + path: ["$['@context'][0]"], filter: { - $schema: 'http://json-schema.org/draft-07/schema#', - type: 'array', - items: [ - { - const: 'https://www.w3.org/2018/credentials/v1' - }, - { - $ref: '#/definitions/eliaGroupContext' - } - ], - additionalItems: false, - minItems: 2, - maxItems: 2, - definitions: { - eliaGroupContext: { - type: 'object', - properties: { - elia: { - const: 'https://www.eliagroup.eu/ld-context-2022#' - }, - consent: { - const: 'elia:consent' - }, - ConsentCredential: { - const: 'elia:ConsentCredential' - } - }, - additionalProperties: false, - required: ['elia', 'consent'] - } - } + const: 'https://www.w3.org/2018/credentials/v1' } }, { - path: ['$.credentialSubject'], + path: ["$['@context'][1].elia"], filter: { - type: 'object', - properties: { - consent: { - const: 'I consent to such and such' - } - }, - additionalProperties: true + const: 'https://www.eliagroup.eu/ld-context-2022#' + } + }, + { + path: ["$['@context'][1].consent"], + filter: { + const: 'elia:consent' + } + }, + { + path: ['$.credentialSubject.consent'], + filter: { + const: 'I consent to such and such' } }, {