UNPKG

@credo-ts/core

Version:

<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1

63 lines (59 loc) • 2.55 kB
import { CredentialMultiInstanceUseMode } from "../../../utils/credentialUseTypes.mjs"; import { ClaimFormat } from "../../vc/models/ClaimFormat.mjs"; import "../../vc/index.mjs"; import { canUseInstanceFromCredentialRecord } from "../../../utils/credentialUse.mjs"; import "../../mdoc/index.mjs"; import "../../sd-jwt-vc/index.mjs"; import { DcqlError } from "../DcqlError.mjs"; //#region src/modules/dcql/utils/DcqlPresentationsToCreate.ts function dcqlGetPresentationsToCreate(credentialsForInputDescriptor) { const presentationsToCreate = {}; for (const [credentialQueryId, matches] of Object.entries(credentialsForInputDescriptor)) for (const match of matches) { const matchIndex = matches.indexOf(match); let presentationToCreate; const useMode = match.useMode ?? CredentialMultiInstanceUseMode.NewOrFirst; if (!canUseInstanceFromCredentialRecord({ credentialRecord: match.credentialRecord, useMode })) throw new DcqlError(`Unable to prepare presentation for credential at index ${matchIndex} for query credential '${credentialQueryId}'. No new credential instance available on the credential record.`); switch (match.claimFormat) { case ClaimFormat.SdJwtDc: presentationToCreate = { claimFormat: ClaimFormat.SdJwtDc, credentialRecord: match.credentialRecord, disclosedPayload: match.disclosedPayload, additionalPayload: match.additionalPayload, useMode }; break; case ClaimFormat.MsoMdoc: presentationToCreate = { claimFormat: ClaimFormat.MsoMdoc, credentialRecord: match.credentialRecord, disclosedPayload: match.disclosedPayload, useMode }; break; case ClaimFormat.JwtW3cVc: case ClaimFormat.SdJwtW3cVc: presentationToCreate = { claimFormat: match.claimFormat === ClaimFormat.JwtW3cVc ? ClaimFormat.JwtW3cVp : ClaimFormat.SdJwtW3cVp, credentialRecord: match.credentialRecord, disclosedPayload: match.disclosedPayload }; break; default: presentationToCreate = { claimFormat: match.claimFormat === ClaimFormat.LdpVc ? ClaimFormat.LdpVp : ClaimFormat.JwtVp, credentialRecord: match.credentialRecord, disclosedPayload: match.disclosedPayload, useMode }; } if (!presentationsToCreate[credentialQueryId]) presentationsToCreate[credentialQueryId] = [presentationToCreate]; else presentationsToCreate[credentialQueryId].push(presentationToCreate); } return presentationsToCreate; } //#endregion export { dcqlGetPresentationsToCreate }; //# sourceMappingURL=DcqlPresentationsToCreate.mjs.map