@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
32 lines (31 loc) • 1.54 kB
JavaScript
import { CredoError } from "../../../../error/CredoError.mjs";
import "../../../../error/index.mjs";
import { AnonCredsW3cCredentialProof } from "../../anoncreds-w3c-credential/AnonCredsW3cCredentialProof.mjs";
import { ANONCREDS_W3C_CREDENTIAL_CRYPTOSUITE } from "../../anoncreds-w3c-credential/IAnonCredsW3cCredentialService.mjs";
import "../../anoncreds-w3c-credential/index.mjs";
import { LinkedDataProof } from "../models/LinkedDataProof.mjs";
import { Transform, TransformationType, instanceToPlain, plainToInstance } from "class-transformer";
//#region src/modules/vc/linked-data-proofs/proof-ops/ProofTransformer.ts
function ProofTransformer() {
return Transform(({ value, type }) => {
if (type === TransformationType.PLAIN_TO_CLASS) {
const plainOptionsToClass = (v) => {
if ("cryptosuite" in v) {
if (v.type !== "DataIntegrityProof" || v.cryptosuite !== "anoncreds-2023") throw new CredoError(`W3C credential proofs only support DataIntegrityProof with cryptosuite ${ANONCREDS_W3C_CREDENTIAL_CRYPTOSUITE}`);
return plainToInstance(AnonCredsW3cCredentialProof, v);
}
return plainToInstance(LinkedDataProof, v);
};
if (Array.isArray(value)) return value.map(plainOptionsToClass);
return plainOptionsToClass(value);
}
if (type === TransformationType.CLASS_TO_PLAIN) {
if (Array.isArray(value)) return value.map((v) => instanceToPlain(v));
return instanceToPlain(value);
}
return value;
});
}
//#endregion
export { ProofTransformer };
//# sourceMappingURL=ProofTransformer.mjs.map