{"version":3,"file":"W3cVerifiableCredential.mjs","names":[],"sources":["../../../../../src/modules/vc/models/credential/W3cVerifiableCredential.ts"],"sourcesContent":["import { Transform, TransformationType } from 'class-transformer'\nimport { ValidationError } from 'class-validator'\nimport { ClassValidationError, CredoError } from '../../../../error'\nimport type { SingleOrArray } from '../../../../types'\nimport { JsonTransformer } from '../../../../utils'\nimport { W3cJsonLdVerifiableCredential } from '../../data-integrity/models/W3cJsonLdVerifiableCredential'\nimport { W3cJwtVerifiableCredential } from '../../jwt-vc/W3cJwtVerifiableCredential'\nimport type { ClaimFormat } from '../ClaimFormat'\n\nconst getCredential = (v: unknown) => {\n  try {\n    return typeof v === 'string'\n      ? W3cJwtVerifiableCredential.fromSerializedJwt(v)\n      : // Validation is done separately\n        JsonTransformer.fromJSON(v, W3cJsonLdVerifiableCredential, { validate: false })\n  } catch (error) {\n    if (error instanceof ValidationError || error instanceof ClassValidationError) throw error\n    throw new CredoError(`value '${v}' is not a valid W3cJwtVerifiableCredential. ${error.message}`)\n  }\n}\n\nconst getEncoded = (v: unknown) =>\n  v instanceof W3cJwtVerifiableCredential ? v.serializedJwt : JsonTransformer.toJSON(v)\n\nexport function W3cVerifiableCredentialTransformer() {\n  return Transform(({ value, type }: { value: SingleOrArray<unknown>; type: TransformationType }) => {\n    if (type === TransformationType.PLAIN_TO_CLASS) {\n      return Array.isArray(value) ? value.map(getCredential) : getCredential(value)\n    }\n    if (type === TransformationType.CLASS_TO_PLAIN) {\n      if (Array.isArray(value)) return value.map(getEncoded)\n      return getEncoded(value)\n    }\n    // PLAIN_TO_PLAIN\n    return value\n  })\n}\n\nexport type W3cVerifiableCredential<Format extends ClaimFormat.JwtVc | ClaimFormat.LdpVc | unknown = unknown> =\n  Format extends ClaimFormat.JwtVc\n    ? W3cJwtVerifiableCredential\n    : Format extends ClaimFormat.LdpVc\n      ? W3cJsonLdVerifiableCredential\n      : W3cJsonLdVerifiableCredential | W3cJwtVerifiableCredential\n"],"mappings":";;;;;;;;;;;;;AASA,MAAM,iBAAiB,MAAe;AACpC,KAAI;AACF,SAAO,OAAO,MAAM,WAChB,2BAA2B,kBAAkB,EAAE,GAE/C,gBAAgB,SAAS,GAAG,+BAA+B,EAAE,UAAU,OAAO,CAAC;UAC5E,OAAO;AACd,MAAI,iBAAiB,mBAAmB,iBAAiB,qBAAsB,OAAM;AACrF,QAAM,IAAI,WAAW,UAAU,EAAE,+CAA+C,MAAM,UAAU;;;AAIpG,MAAM,cAAc,MAClB,aAAa,6BAA6B,EAAE,gBAAgB,gBAAgB,OAAO,EAAE;AAEvF,SAAgB,qCAAqC;AACnD,QAAO,WAAW,EAAE,OAAO,WAAwE;AACjG,MAAI,SAAS,mBAAmB,eAC9B,QAAO,MAAM,QAAQ,MAAM,GAAG,MAAM,IAAI,cAAc,GAAG,cAAc,MAAM;AAE/E,MAAI,SAAS,mBAAmB,gBAAgB;AAC9C,OAAI,MAAM,QAAQ,MAAM,CAAE,QAAO,MAAM,IAAI,WAAW;AACtD,UAAO,WAAW,MAAM;;AAG1B,SAAO;GACP"}