{"version":3,"file":"ProofTransformer.mjs","names":[],"sources":["../../../../../src/modules/vc/linked-data-proofs/proof-ops/ProofTransformer.ts"],"sourcesContent":["import { instanceToPlain, plainToInstance, Transform, TransformationType } from 'class-transformer'\nimport { CredoError } from '../../../../error'\nimport type { SingleOrArray } from '../../../../types'\nimport type { AnonCredsW3cCredentialProofOptions } from '../../anoncreds-w3c-credential'\nimport { ANONCREDS_W3C_CREDENTIAL_CRYPTOSUITE, AnonCredsW3cCredentialProof } from '../../anoncreds-w3c-credential'\nimport type { LinkedDataProofOptions } from '../models/LinkedDataProof'\nimport { LinkedDataProof } from '../models/LinkedDataProof'\n\nexport function ProofTransformer() {\n  return Transform(\n    ({\n      value,\n      type,\n    }: {\n      value: SingleOrArray<LinkedDataProofOptions | AnonCredsW3cCredentialProofOptions>\n      type: TransformationType\n    }) => {\n      if (type === TransformationType.PLAIN_TO_CLASS) {\n        const plainOptionsToClass = (v: LinkedDataProofOptions | AnonCredsW3cCredentialProofOptions) => {\n          if ('cryptosuite' in v) {\n            if (v.type !== 'DataIntegrityProof' || v.cryptosuite !== ANONCREDS_W3C_CREDENTIAL_CRYPTOSUITE) {\n              throw new CredoError(\n                `W3C credential proofs only support DataIntegrityProof with cryptosuite ${ANONCREDS_W3C_CREDENTIAL_CRYPTOSUITE}`\n              )\n            }\n\n            return plainToInstance(AnonCredsW3cCredentialProof, v)\n          }\n          return plainToInstance(LinkedDataProof, v)\n        }\n\n        if (Array.isArray(value)) return value.map(plainOptionsToClass)\n        return plainOptionsToClass(value)\n      }\n      if (type === TransformationType.CLASS_TO_PLAIN) {\n        if (Array.isArray(value)) return value.map((v) => instanceToPlain(v))\n        return instanceToPlain(value)\n      }\n      // PLAIN_TO_PLAIN\n      return value\n    }\n  )\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,mBAAmB;CACjC,OAAO,WACJ,EACC,OACA,WAII;EACJ,IAAI,SAAS,mBAAmB,gBAAgB;GAC9C,MAAM,uBAAuB,MAAmE;IAC9F,IAAI,iBAAiB,GAAG;KACtB,IAAI,EAAE,SAAS,wBAAwB,EAAE,gBAAA,kBACvC,MAAM,IAAI,WACR,0EAA0E,sCAC5E;KAGF,OAAO,gBAAgB,6BAA6B,CAAC;IACvD;IACA,OAAO,gBAAgB,iBAAiB,CAAC;GAC3C;GAEA,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,mBAAmB;GAC9D,OAAO,oBAAoB,KAAK;EAClC;EACA,IAAI,SAAS,mBAAmB,gBAAgB;GAC9C,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,KAAK,MAAM,gBAAgB,CAAC,CAAC;GACpE,OAAO,gBAAgB,KAAK;EAC9B;EAEA,OAAO;CACT,CACF;AACF"}