From 98ac6562531ce01261d33fbf5e2bb29ff4e1dd7b Mon Sep 17 00:00:00 2001 From: Michael Shihjay Chen Date: Thu, 30 Jan 2025 22:02:04 -0800 Subject: [PATCH] clean up --- lib/rp.ts | 162 ---------- package-lock.json | 469 ++++------------------------ package.json | 2 - pages/api/vp/authorize.ts | 85 ----- pages/api/vp/response.ts | 80 ++--- pages/api/vp/vp_response/[vp_id].ts | 72 ----- 6 files changed, 92 insertions(+), 778 deletions(-) delete mode 100644 pages/api/vp/authorize.ts delete mode 100644 pages/api/vp/vp_response/[vp_id].ts diff --git a/lib/rp.ts b/lib/rp.ts index ba17a36d..8f7fa412 100644 --- a/lib/rp.ts +++ b/lib/rp.ts @@ -1,20 +1,14 @@ -// import { RP, CreateJwtCallback, VerifyJwtCallback, ResponseType, ResponseMode, Scope, PassBy, SupportedVersion, SubjectType } from '@sphereon/did-auth-siop'; import { agent } from './veramo'; import { getUniResolver } from '@sphereon/did-uni-client'; import { Resolvable, Resolver, ResolverRegistry } from 'did-resolver'; import { createJWT, decodeJWT, verifyJWT } from 'did-jwt'; import { JWTHeader } from 'did-jwt/lib/JWT'; -// import { VerifyCallback } from '@sphereon/wellknown-dids-client'; -// import { parseJWT, SigningAlgo } from '@sphereon/oid4vc-common'; -// import { VerifiedJWT } from '@sphereon/did-auth-siop'; import { bytesToBase64, createJWK } from '@veramo/utils'; -// import objectPath from 'object-path'; import moment from 'moment'; const domain: string = process.env.DOMAIN !== undefined ? process.env.DOMAIN: ''; const url = new URL(domain); const url_res = url.protocol + "//" + url.hostname + "/api/vp/response"; -// const url_auth = url.protocol + "//" + url.hostname + "/api/vp/authorize"; const createAuthRequest = async(nonce:string, state:string, type:string, pd_id:string) => { const identifier = await agent.didManagerGetOrCreate({ alias: 'default' }); @@ -159,18 +153,6 @@ const verifyAuthResponse = async(jwt:string) => { } } -// const getAudience = (jwt: string) => { -// const { payload } = parseJWT(jwt) -// if (!payload) { -// throw new Error('No audience found in JWT payload or not configured') -// } else if (!payload.aud) { -// return undefined -// } else if (Array.isArray(payload.aud)) { -// throw new Error('Audience is invalid. Should be a string value.') -// } -// return payload.aud -// } - const getResolver = (methods: string | string[]): Resolvable => { const getMethodFromDid = (did: string): string => { if (!did) { @@ -193,148 +175,4 @@ const getResolver = (methods: string | string[]): Resolvable => { return new Resolver(...uniResolvers); } -// const verifyJwtCallback = ( -// // resolver?: Resolvable, -// verifyOpts?: JWTVerifyOptions & { -// checkLinkedDomain: 'never' | 'if_present' | 'always' -// wellknownDIDVerifyCallback?: VerifyCallback -// }, -// ): VerifyJwtCallback => { -// return async (jwtVerifier, jwt) => { -// const resolver = getResolver(objectPath.get(jwtVerifier, 'didUrl')) -// console.log(resolver) -// console.log(jwtVerifier) -// const audience = -// jwtVerifier.type === 'request-object' -// ? (verifyOpts?.audience ?? getAudience(jwt.raw)) -// : jwtVerifier.type === 'id-token' -// ? (verifyOpts?.audience ?? getAudience(jwt.raw)) -// : undefined -// await verifyDidJWT(jwt.raw, resolver, { audience, ...verifyOpts }) -// return true -// } -// } - -// const createJwtCallback = (): CreateJwtCallback => { -// return async (jwtIssuer, jwt) => { -// if (jwtIssuer.method === 'did') { -// const jwk = createJWK("Ed25519", identifier.keys[0].publicKeyHex); -// jwt.header = {alg: 'EdDSA', typ: 'JWT', jwk: jwk }; -// const signer = (data: string | Uint8Array ) => { -// let dataString, encoding: 'base64' | undefined -// if (typeof data === 'string') { -// dataString = data -// encoding = undefined -// } else { -// ;(dataString = bytesToBase64(data)), (encoding = 'base64') -// } -// return agent.keyManagerSign({ keyRef: identifier.keys[0].kid, data: dataString, alg: jwt.header.alg }) -// } -// const jwt_created = await createJWT( -// jwt.payload, -// { issuer: identifier.did, signer, alg: jwt.header.alg }, -// jwt.header as Partial -// ); -// return jwt_created; -// } -// throw new Error('Not implemented yet') -// } -// } - -// const verifyDidJWT = async(jwt: string, resolver: Resolvable, options: JWTVerifyOptions): Promise => { -// try { -// return await verifyJWT(jwt, { ...options, resolver }) -// } catch (e: any) { -// return Promise.reject(e) -// } -// } - -// const rp = (type:string, id:string) => { -// let constraints = {}; -// if (type === 'NPI') { -// constraints = { -// "fields": [ -// { -// "path": [ -// "$.vc.credentialSubject.npi", -// "$.vc.credentialSubject.name", -// "$.vc.credentialSubject.description", -// "$.vc.credentialSubject.gender", -// "$.vc.credentialSubject.city", -// "$.vc.credentialSubject.state", -// "$.vc.credentialSubject.zip", -// "$.vc.credentialSubject.credentials", -// "$.vc.credentialSubject.specialty", -// "$.vc.credentialSubject.medicalSchools", -// "$.vc.credentialSubject.residencies", -// "$.vc.credentialSubject.profilePhoto", -// ] -// } -// ] -// } -// } else { -// constraints = { -// "fields": [ -// { -// "path": [ -// "$.vc.credentialSubject.name", -// "$.vc.credentialSubject.email", -// "$.vc.credentialSubject.dob" -// ] -// } -// ] -// } -// } -// return RP.builder() -// // return RP.builder({ requestVersion: SupportedVersion.SIOPv2_ID1 }) -// .withClientId(identifier.did) -// .withScope('openid') -// .withResponseType('vp_token id_token') -// .withResponseMode(ResponseMode.POST) -// .withAuthorizationEndpoint(url_auth) -// .withRedirectUri(url_res) -// .withVerifyJwtCallback(verifyJwtCallback()) -// .withRequestBy(PassBy.VALUE) -// .withCreateJwtCallback(createJwtCallback()) -// // .withAudience(aud) -// // .withSupportedVersions(SupportedVersion.SIOPv2_ID1) -// .withSupportedVersions(SupportedVersion.SIOPv2_D12_OID4VP_D20) -// .withPresentationDefinition({ -// definition: { -// id: id, -// input_descriptors: [ -// { -// "id": "1", -// "name": type + " Verifiable Credential", -// "purpose": "We want a VC of this type to proof provider claim", -// "constraints": constraints, -// "schema": [ -// { -// "uri": "https://www.w3.org/2018/credentials/v1" -// } -// ] -// } -// ] -// } -// }) -// .withClientMetadata({ -// client_id: identifier.did, -// idTokenSigningAlgValuesSupported: [SigningAlgo.EDDSA, SigningAlgo.ES256], -// requestObjectSigningAlgValuesSupported: [SigningAlgo.EDDSA, SigningAlgo.ES256], -// responseTypesSupported: [ResponseType.ID_TOKEN, ResponseType.VP_TOKEN], -// vpFormatsSupported: { -// jwt_vc: { alg: [SigningAlgo.EDDSA, SigningAlgo.RS256, SigningAlgo.ES256] }, -// jwt_vp: { alg: [SigningAlgo.EDDSA, SigningAlgo.RS256, SigningAlgo.ES256] } -// }, -// scopesSupported: [Scope.OPENID_DIDAUTHN, Scope.OPENID], -// subjectTypesSupported: [SubjectType.PAIRWISE], -// subject_syntax_types_supported: ['did', 'did:ethr', 'did:key', 'did:jwk', 'did:web', 'did:ion'], -// passBy: PassBy.VALUE, -// // logo_uri: VERIFIER_LOGO_FOR_CLIENT, -// clientName: 'Trustee', -// clientPurpose: "Grant Negotiation and Authorization Protocol (GNAP) Server" -// }) -// .build(); -// } - export { createAuthRequest, verifyAuthResponse } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 3c9e37f1..3d70959f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,7 @@ "@mui/x-date-pickers": "^7.23.3", "@sendgrid/mail": "^8.1.3", "@simplewebauthn/server": "^7.3.1", - "@sphereon/did-auth-siop": "^0.16.0", "@sphereon/did-uni-client": "^0.6.3", - "@sphereon/wellknown-dids-client": "^0.1.3", "@spruceid/ssx": "^2.1.0", "@spruceid/ssx-react": "^2.1.0", "@types/pouchdb": "^6.4.0", @@ -132,15 +130,6 @@ "node": ">=6.0.0" } }, - "node_modules/@astronautlabs/jsonpath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@astronautlabs/jsonpath/-/jsonpath-1.1.2.tgz", - "integrity": "sha512-FqL/muoreH7iltYC1EB5Tvox5E8NSOOPGkgns4G+qxRKl6k5dxEVljUjB5NcKESzkqwnUqWjSZkL61XGYOuV+A==", - "license": "MIT", - "dependencies": { - "static-eval": "2.0.2" - } - }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", @@ -8777,55 +8766,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sd-jwt/decode": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@sd-jwt/decode/-/decode-0.6.1.tgz", - "integrity": "sha512-QgTIoYd5zyKKLgXB4xEYJTrvumVwtsj5Dog0v0L9UH9ZvHekDaeexS247X7A4iSdzTvmZzUpGskgABOa4D8NmQ==", - "license": "Apache-2.0", - "dependencies": { - "@sd-jwt/types": "0.6.1", - "@sd-jwt/utils": "0.6.1" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@sd-jwt/present": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@sd-jwt/present/-/present-0.6.1.tgz", - "integrity": "sha512-QRD3TUDLj4PqQNZ70bBxh8FLLrOE9mY8V9qiZrJSsaDOLFs2p1CtZG+v9ig62fxFYJZMf4bWKwYjz+qqGAtxCg==", - "license": "Apache-2.0", - "dependencies": { - "@sd-jwt/decode": "0.6.1", - "@sd-jwt/types": "0.6.1", - "@sd-jwt/utils": "0.6.1" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@sd-jwt/types": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@sd-jwt/types/-/types-0.6.1.tgz", - "integrity": "sha512-LKpABZJGT77jNhOLvAHIkNNmGqXzyfwBT+6r+DN9zNzMx1CzuNR0qXk1GMUbast9iCfPkGbnEpUv/jHTBvlIvg==", - "license": "Apache-2.0", - "engines": { - "node": ">=16" - } - }, - "node_modules/@sd-jwt/utils": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@sd-jwt/utils/-/utils-0.6.1.tgz", - "integrity": "sha512-1NHZ//+GecGQJb+gSdDicnrHG0DvACUk9jTnXA5yLZhlRjgkjyfJLNsCZesYeCyVp/SiyvIC9B+JwoY4kI0TwQ==", - "license": "Apache-2.0", - "dependencies": { - "@sd-jwt/types": "0.6.1", - "js-base64": "^3.7.6" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/@segment/loosely-validate-event": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", @@ -9576,40 +9516,6 @@ "license": "MIT", "peer": true }, - "node_modules/@sphereon/did-auth-siop": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@sphereon/did-auth-siop/-/did-auth-siop-0.16.0.tgz", - "integrity": "sha512-hWLzP+jv1Re/2s3Kkq5sBUhWKHPu6ptOcYWNCGIaYBS0SF8E86Bg5mPBbwq1tSr+/GapsxMcmL6QszQgJqJ+Cw==", - "license": "Apache-2.0", - "dependencies": { - "@astronautlabs/jsonpath": "^1.1.2", - "@sphereon/did-uni-client": "^0.6.2", - "@sphereon/oid4vc-common": "0.16.0", - "@sphereon/pex": "^3.3.2", - "@sphereon/pex-models": "^2.2.4", - "@sphereon/ssi-types": "0.22.0", - "@sphereon/wellknown-dids-client": "^0.1.3", - "cross-fetch": "^4.0.0", - "events": "^3.3.0", - "jwt-decode": "^4.0.0", - "language-tags": "^1.0.9", - "multiformats": "^12.1.3", - "qs": "^6.11.2", - "uint8arrays": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sphereon/did-auth-siop/node_modules/cross-fetch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", - "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.7.0" - } - }, "node_modules/@sphereon/did-uni-client": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/@sphereon/did-uni-client/-/did-uni-client-0.6.3.tgz", @@ -9620,149 +9526,6 @@ "did-resolver": "^4.1.0" } }, - "node_modules/@sphereon/oid4vc-common": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@sphereon/oid4vc-common/-/oid4vc-common-0.16.0.tgz", - "integrity": "sha512-EgT0gwMX5/MhTDAOEWqbx2c9azBSQAThL8EDu7wufGQxRFNAc3Ya8NXoCMIOfqIqbSLhmyCB0ANcdoHeJq2VdA==", - "license": "Apache-2.0", - "dependencies": { - "@sphereon/ssi-types": "0.28.0", - "jwt-decode": "^4.0.0", - "sha.js": "^2.4.11", - "uint8arrays": "3.1.1", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sphereon/oid4vc-common/node_modules/@sphereon/ssi-types": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@sphereon/ssi-types/-/ssi-types-0.28.0.tgz", - "integrity": "sha512-NkTkrsBoQUZzJutlk5XD3snBxL9kfsxKdQvBbGUEaUDOiW8siTNUoJuQFeA+bI0eJY99up95bmMKdJeDc1VDfg==", - "license": "Apache-2.0", - "dependencies": { - "@sd-jwt/decode": "^0.6.1", - "debug": "^4.3.5", - "events": "^3.3.0", - "jwt-decode": "^3.1.2" - } - }, - "node_modules/@sphereon/oid4vc-common/node_modules/@sphereon/ssi-types/node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "license": "MIT" - }, - "node_modules/@sphereon/oid4vc-common/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@sphereon/pex": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sphereon/pex/-/pex-3.3.3.tgz", - "integrity": "sha512-CXwdEcMTUh2z/5AriBn3OuShEG06l2tgiIr7qDJthnkez8DQ3sZo2vr4NEQWKKAL+DeAWAI4FryQGO4KuK7yfg==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@astronautlabs/jsonpath": "^1.1.2", - "@sd-jwt/decode": "^0.6.1", - "@sd-jwt/present": "^0.6.1", - "@sd-jwt/types": "^0.6.1", - "@sphereon/pex-models": "^2.2.4", - "@sphereon/ssi-types": "0.22.0", - "ajv": "^8.12.0", - "ajv-formats": "^2.1.1", - "jwt-decode": "^3.1.2", - "nanoid": "^3.3.7", - "string.prototype.matchall": "^4.0.10", - "uint8arrays": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sphereon/pex-models": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sphereon/pex-models/-/pex-models-2.3.2.tgz", - "integrity": "sha512-foFxfLkRwcn/MOp/eht46Q7wsvpQGlO7aowowIIb5Tz9u97kYZ2kz6K2h2ODxWuv5CRA7Q0MY8XUBGE2lfOhOQ==", - "license": "Apache-2.0" - }, - "node_modules/@sphereon/pex/node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "license": "MIT" - }, - "node_modules/@sphereon/pex/node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/@sphereon/ssi-types": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/@sphereon/ssi-types/-/ssi-types-0.22.0.tgz", - "integrity": "sha512-YPJAZlKmzNALXK8ohP3ETxj1oVzL4+M9ljj3fD5xrbacvYax1JPCVKc8BWSubGcQckKHPbgbpcS7LYEeghyT9Q==", - "license": "Apache-2.0", - "dependencies": { - "@sd-jwt/decode": "^0.6.1", - "jwt-decode": "^3.1.2" - } - }, - "node_modules/@sphereon/ssi-types/node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "license": "MIT" - }, - "node_modules/@sphereon/wellknown-dids-client": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@sphereon/wellknown-dids-client/-/wellknown-dids-client-0.1.3.tgz", - "integrity": "sha512-TAT24L3RoXD8ocrkTcsz7HuJmgjNjdoV6IXP1p3DdaI/GqkynytXE3J1+F7vUFMRYwY5nW2RaXSgDQhrFJemaA==", - "license": "Apache-2.0", - "dependencies": { - "@sphereon/ssi-types": "^0.9.0", - "cross-fetch": "^3.1.5", - "jwt-decode": "^3.1.2" - } - }, - "node_modules/@sphereon/wellknown-dids-client/node_modules/@sphereon/ssi-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@sphereon/ssi-types/-/ssi-types-0.9.0.tgz", - "integrity": "sha512-umCr/syNcmvMMbQ+i/r/mwjI1Qw2aFPp9AwBTvTo1ailAVaaJjJGPkkVz1K9/2NZATNdDiQ3A8yGzdVJoKh9pA==", - "license": "Apache-2.0", - "dependencies": { - "jwt-decode": "^3.1.2" - } - }, - "node_modules/@sphereon/wellknown-dids-client/node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "license": "MIT" - }, "node_modules/@spruceid/siwe-parser": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@spruceid/siwe-parser/-/siwe-parser-2.1.2.tgz", @@ -13157,39 +12920,6 @@ "node": ">=8" } }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/anser": { "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", @@ -13324,6 +13054,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -13475,6 +13206,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", @@ -13588,6 +13320,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -15693,6 +15426,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -15710,6 +15444,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -15727,6 +15462,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -15820,6 +15556,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, "license": "MIT" }, "node_modules/deepmerge": { @@ -16485,6 +16222,7 @@ "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", @@ -16608,6 +16346,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -16633,6 +16372,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7", @@ -16674,97 +16414,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "license": "MIT", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "license": "MIT", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", @@ -17317,6 +16966,8 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "license": "BSD-2-Clause", + "optional": true, + "peer": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -17365,6 +17016,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" @@ -18144,6 +17796,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, "license": "MIT" }, "node_modules/fast-redact": { @@ -18170,22 +17823,6 @@ "license": "Apache-2.0", "optional": true }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/fast-xml-parser": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", @@ -18719,6 +18356,7 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -18739,6 +18377,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18840,6 +18479,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -18931,6 +18571,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.2.1", @@ -19024,6 +18665,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -19058,6 +18700,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" @@ -19403,6 +19046,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -19534,6 +19178,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -19557,6 +19202,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, "license": "MIT", "dependencies": { "async-function": "^1.0.0", @@ -19576,6 +19222,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" @@ -19603,6 +19250,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -19677,6 +19325,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -19694,6 +19343,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -19747,6 +19397,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -19801,6 +19452,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -19838,6 +19490,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -19907,6 +19560,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -19919,6 +19573,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" @@ -19947,6 +19602,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -19963,6 +19619,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -19995,6 +19652,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -20007,6 +19665,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2" @@ -20022,6 +19681,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -20052,6 +19712,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, "license": "MIT" }, "node_modules/isexe": { @@ -21025,12 +20686,6 @@ "url": "https://github.com/sponsors/panva" } }, - "node_modules/js-base64": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", - "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", - "license": "BSD-3-Clause" - }, "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -21178,12 +20833,6 @@ "license": "ISC", "peer": true }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -21273,15 +20922,6 @@ "node": "*" } }, - "node_modules/jwt-decode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/keccak": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", @@ -21405,12 +21045,14 @@ "version": "0.3.23", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, "license": "MIT", "dependencies": { "language-subtag-registry": "^0.3.20" @@ -24043,6 +23685,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", @@ -25484,6 +25127,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -25545,6 +25189,7 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -25638,6 +25283,8 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -25814,6 +25461,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -25853,6 +25501,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -26087,6 +25736,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -26102,6 +25752,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -26756,15 +26407,6 @@ "node": ">=8" } }, - "node_modules/static-eval": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", - "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", - "license": "MIT", - "dependencies": { - "escodegen": "^1.8.1" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -26923,6 +26565,7 @@ "version": "4.0.12", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -26961,6 +26604,7 @@ "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -26982,6 +26626,7 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -27000,6 +26645,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -27918,6 +27564,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -27932,6 +27579,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -27951,6 +27599,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", @@ -27972,6 +27621,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -28134,6 +27784,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", @@ -28798,6 +28449,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", @@ -28817,6 +28469,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -28844,6 +28497,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -28896,6 +28550,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" diff --git a/package.json b/package.json index 168e61f7..01408305 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,7 @@ "@mui/x-date-pickers": "^7.23.3", "@sendgrid/mail": "^8.1.3", "@simplewebauthn/server": "^7.3.1", - "@sphereon/did-auth-siop": "^0.16.0", "@sphereon/did-uni-client": "^0.6.3", - "@sphereon/wellknown-dids-client": "^0.1.3", "@spruceid/ssx": "^2.1.0", "@spruceid/ssx-react": "^2.1.0", "@types/pouchdb": "^6.4.0", diff --git a/pages/api/vp/authorize.ts b/pages/api/vp/authorize.ts deleted file mode 100644 index d660c0d8..00000000 --- a/pages/api/vp/authorize.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import NextCors from '../../../lib/cors'; -import objectPath from 'object-path'; -import { verifyAuthResponse } from '../../../lib/rp'; - -var user = process.env.COUCHDB_USER; -var pass = process.env.COUCHDB_PASSWORD; -const domain: string = process.env.DOMAIN !== undefined ? process.env.DOMAIN: ''; -const url = new URL(domain); -if (process.env.NODE_ENV === 'development') { - var nano = require("nano")(`http://${user}:${pass}@127.0.0.1:5984`); -} else { - var nano = require("nano")(url.protocol + `//${user}:${pass}@db.` + url.hostname); -} - -async function handler(req: NextApiRequest, res: NextApiResponse) { - await NextCors(req, res, { - methods: ["POST"], - origin: process.env.DOMAIN, - optionsSuccessStatus: 200 - }); - console.log('got to authorize'); - console.log(req.body); - const gnap = await nano.db.use("gnap"); - const patients = await nano.db.use("patients"); - const {state} = req.body; - const q = { - selector: { - vp_state: {"$eq": state} - } - }; - try { - const response = await gnap.find(q); - if (response.docs[0]) { - if (objectPath.has(response, 'docs.0.vp_jwt')) { - const doc = response.docs[0]; - const patient_doc = await patients.get(doc.email); - const aud = url.protocol + "//" + url.hostname + "/api/vp/authorize"; - console.log(doc); - console.log(req.body); - console.log(req.body.id_token); - const verifiedAuthResponse = await verifyAuthResponse(req.body.id_token) - console.log(verifiedAuthResponse) - if (objectPath.get(verifiedAuthResponse, 'payload.state') === doc.vp_state) { - console.log('state matches') - } - if (objectPath.get(verifiedAuthResponse, 'payload.nonce') === doc.vp_state) { - console.log('state matches') - } - res.status(200).json({message: 'OK'}); - // if (objectPath.has(payload, 'vp.verifiableCredential')) { - // const vc = jose.decodeJwt(objectPath.get(payload, 'vp.verifiableCredential.0')); - // if (objectPath.has(doc, 'vc')) { - // const vc_arr = objectPath.get(doc, 'vc'); - // vc_arr.push(vc); - // objectPath.set(doc, 'vc', vc_arr); - // } else { - // objectPath.set(doc, 'vc.0', vc); - // } - // objectPath.set(doc, 'vp_status', 'complete'); - // await gnap.insert(doc); - // if (objectPath.has(patient_doc, 'vc')) { - // const vc_arr1 = objectPath.get(patient_doc, 'vc'); - // vc_arr1.push(vc); - // objectPath.set(patient_doc, 'vc', vc_arr1); - // } else { - // objectPath.set(patient_doc, 'vc.0', vc); - // } - // await patients.insert(patient_doc); - // res.status(200).json({message: 'OK'}); - // } else { - // res.status(400).json({error: 'invalid_token'}); - // } - } else { - res.status(400).json({error: 'invalid_request'}); - } - } else { - res.status(400).json({error: 'invalid_request'}); - } - } catch (e) { - res.status(400).json({error: 'invalid_request'}); - } -} - -export default handler; diff --git a/pages/api/vp/response.ts b/pages/api/vp/response.ts index 12c70932..830eac6f 100644 --- a/pages/api/vp/response.ts +++ b/pages/api/vp/response.ts @@ -38,65 +38,45 @@ async function handler(req: NextApiRequest, res: NextApiResponse) { const patient_doc = await patients.get(doc.email); console.log(doc); try { - const verifiedAuthResponse = await verifyAuthResponse(req.body.vp_token) - console.log(verifiedAuthResponse) - if (objectPath.has(verifiedAuthResponse, 'payload.vp.verifiableCredential')) { - const vc = decodeJWT(objectPath.get(verifiedAuthResponse, 'payload.vp.verifiableCredential.0')); - if (objectPath.has(doc, 'vc')) { - const vc_arr = objectPath.get(doc, 'vc'); - vc_arr.push(vc); - objectPath.set(doc, 'vc', vc_arr); + if (req.body.state === doc.vp_state) { + const verifiedAuthResponse = await verifyAuthResponse(req.body.vp_token) + console.log(verifiedAuthResponse) + if (objectPath.get(verifiedAuthResponse, 'payload.nonce') === doc.vp_nonce) { + if (objectPath.has(verifiedAuthResponse, 'payload.vp.verifiableCredential')) { + const vc = decodeJWT(objectPath.get(verifiedAuthResponse, 'payload.vp.verifiableCredential.0')); + if (objectPath.has(doc, 'vc')) { + const vc_arr = objectPath.get(doc, 'vc'); + vc_arr.push(vc); + objectPath.set(doc, 'vc', vc_arr); + } else { + objectPath.set(doc, 'vc.0', vc); + } + objectPath.set(doc, 'vp_status', 'complete'); + await gnap.insert(doc); + if (objectPath.has(patient_doc, 'vc')) { + const vc_arr1 = objectPath.get(patient_doc, 'vc'); + vc_arr1.push(vc); + objectPath.set(patient_doc, 'vc', vc_arr1); + } else { + objectPath.set(patient_doc, 'vc.0', vc); + } + await patients.insert(patient_doc); + res.status(200).json({message: 'OK'}); + } else { + res.status(400).json({error: 'invalid_token'}); + } } else { - objectPath.set(doc, 'vc.0', vc); + res.status(400).json({error: 'invalid_token'}); } - objectPath.set(doc, 'vp_status', 'complete'); - await gnap.insert(doc); - if (objectPath.has(patient_doc, 'vc')) { - const vc_arr1 = objectPath.get(patient_doc, 'vc'); - vc_arr1.push(vc); - objectPath.set(patient_doc, 'vc', vc_arr1); - } else { - objectPath.set(patient_doc, 'vc.0', vc); - } - await patients.insert(patient_doc); res.status(200).json({message: 'OK'}); } else { - res.status(400).json({error: 'invalid_token'}); + console.log('state does not match'); + res.status(400).json({error: 'invalid_request'}); } - // if (objectPath.get(verifiedAuthResponse, 'payload.state') === doc.vp_state) { - // console.log('state matches') - // } - // if (objectPath.get(verifiedAuthResponse, 'payload.nonce') === doc.vp_state) { - // console.log('state matches') - // } - res.status(200).json({message: 'OK'}); } catch (e) { console.log(e) res.status(400).json({error: 'invalid_request'}); } - // if (objectPath.has(payload, 'vp.verifiableCredential')) { - // const vc = decodeJWT(objectPath.get(payload, 'vp.verifiableCredential.0')); - // if (objectPath.has(doc, 'vc')) { - // const vc_arr = objectPath.get(doc, 'vc'); - // vc_arr.push(vc); - // objectPath.set(doc, 'vc', vc_arr); - // } else { - // objectPath.set(doc, 'vc.0', vc); - // } - // objectPath.set(doc, 'vp_status', 'complete'); - // await gnap.insert(doc); - // if (objectPath.has(patient_doc, 'vc')) { - // const vc_arr1 = objectPath.get(patient_doc, 'vc'); - // vc_arr1.push(vc); - // objectPath.set(patient_doc, 'vc', vc_arr1); - // } else { - // objectPath.set(patient_doc, 'vc.0', vc); - // } - // await patients.insert(patient_doc); - // res.status(200).json({message: 'OK'}); - // } else { - // res.status(400).json({error: 'invalid_token'}); - // } } else { res.status(400).json({error: 'invalid_request'}); } diff --git a/pages/api/vp/vp_response/[vp_id].ts b/pages/api/vp/vp_response/[vp_id].ts deleted file mode 100644 index 9cf3020f..00000000 --- a/pages/api/vp/vp_response/[vp_id].ts +++ /dev/null @@ -1,72 +0,0 @@ -import { NextApiRequest, NextApiResponse } from 'next'; -import NextCors from '../../../../lib/cors'; -import * as jose from 'jose'; -import objectPath from 'object-path'; - -var user = process.env.COUCHDB_USER; -var pass = process.env.COUCHDB_PASSWORD; -const domain: string = process.env.DOMAIN !== undefined ? process.env.DOMAIN: ''; -const url = new URL(domain); -if (process.env.NODE_ENV === 'development') { - var nano = require("nano")(`http://${user}:${pass}@127.0.0.1:5984`); -} else { - var nano = require("nano")(url.protocol + `//${user}:${pass}@db.` + url.hostname); -} - -async function handler(req: NextApiRequest, res: NextApiResponse) { - await NextCors(req, res, { - methods: ["POST"], - origin: process.env.DOMAIN, - optionsSuccessStatus: 200 - }); - console.log('got to response'); - const gnap = await nano.db.use("gnap"); - const patients = await nano.db.use("patients"); - const {state} = req.body; - const q = { - selector: { - vp_state: {"$eq": state} - } - }; - try { - const response = await gnap.find(q); - if (response.docs[0]) { - if (objectPath.has(response, 'docs.0.vp_jwt')) { - const doc = response.docs[0]; - const patient_doc = await patients.get(doc.email); - const payload = jose.decodeJwt(req.body.vp_token); - if (objectPath.has(payload, 'vp.verifiableCredential')) { - const vc = jose.decodeJwt(objectPath.get(payload, 'vp.verifiableCredential.0')); - if (objectPath.has(doc, 'vc')) { - const vc_arr = objectPath.get(doc, 'vc'); - vc_arr.push(vc); - objectPath.set(doc, 'vc', vc_arr); - } else { - objectPath.set(doc, 'vc.0', vc); - } - objectPath.set(doc, 'vp_status', 'complete'); - await gnap.insert(doc); - if (objectPath.has(patient_doc, 'vc')) { - const vc_arr1 = objectPath.get(patient_doc, 'vc'); - vc_arr1.push(vc); - objectPath.set(patient_doc, 'vc', vc_arr1); - } else { - objectPath.set(patient_doc, 'vc.0', vc); - } - await patients.insert(patient_doc); - res.status(200).json({message: 'OK'}); - } else { - res.status(400).json({error: 'invalid_token'}); - } - } else { - res.status(400).json({error: 'invalid_request'}); - } - } else { - res.status(400).json({error: 'invalid_request'}); - } - } catch (e) { - res.status(400).json({error: 'invalid_request'}); - } -} - -export default handler;