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

1 lines • 2.79 kB
{"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 { W3cJwtVerifiableCredential } from '../../jwt-vc/W3cJwtVerifiableCredential'\nimport { W3cJsonLdVerifiableCredential } from '../../linked-data-proofs/models/W3cJsonLdVerifiableCredential'\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;CACpC,IAAI;EACF,OAAO,OAAO,MAAM,WAChB,2BAA2B,kBAAkB,CAAC,IAE9C,gBAAgB,SAAS,GAAG,+BAA+B,EAAE,UAAU,MAAM,CAAC;CACpF,SAAS,OAAO;EACd,IAAI,iBAAiB,mBAAmB,iBAAiB,sBAAsB,MAAM;EACrF,MAAM,IAAI,WAAW,UAAU,EAAE,+CAA+C,MAAM,SAAS;CACjG;AACF;AAEA,MAAM,cAAc,MAClB,aAAa,6BAA6B,EAAE,gBAAgB,gBAAgB,OAAO,CAAC;AAEtF,SAAgB,qCAAqC;CACnD,OAAO,WAAW,EAAE,OAAO,WAAwE;EACjG,IAAI,SAAS,mBAAmB,gBAC9B,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,aAAa,IAAI,cAAc,KAAK;EAE9E,IAAI,SAAS,mBAAmB,gBAAgB;GAC9C,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,IAAI,UAAU;GACrD,OAAO,WAAW,KAAK;EACzB;EAEA,OAAO;CACT,CAAC;AACH"}