@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
68 lines (67 loc) • 2.55 kB
JavaScript
import "../../../utils/credentialUseTypes.mjs";
import "../../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 ?? "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 "dc+sd-jwt":
presentationToCreate = {
claimFormat: "dc+sd-jwt",
credentialRecord: match.credentialRecord,
disclosedPayload: match.disclosedPayload,
disclosedPaths: match.disclosedPaths,
additionalPayload: match.additionalPayload,
useMode
};
break;
case "mso_mdoc":
presentationToCreate = {
claimFormat: "mso_mdoc",
credentialRecord: match.credentialRecord,
disclosedPayload: match.disclosedPayload,
useMode
};
break;
case "vc+jwt":
presentationToCreate = {
claimFormat: "vp+jwt",
credentialRecord: match.credentialRecord,
disclosedPayload: match.disclosedPayload
};
break;
case "vc+sd-jwt":
presentationToCreate = {
claimFormat: "vp+sd-jwt",
credentialRecord: match.credentialRecord,
disclosedPayload: match.disclosedPayload,
disclosedPaths: match.disclosedPaths
};
break;
default: presentationToCreate = {
claimFormat: match.claimFormat === "ldp_vc" ? "ldp_vp" : "jwt_vp",
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