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.72 kB
{"version":3,"file":"W3cIssuer.mjs","names":[],"sources":["../../../../../src/modules/vc/models/credential/W3cIssuer.ts"],"sourcesContent":["import { instanceToPlain, plainToInstance, Transform, TransformationType } from 'class-transformer'\nimport type { ValidationOptions } from 'class-validator'\nimport { buildMessage, isInstance, isString, ValidateBy } from 'class-validator'\n\nimport { IsUri, isUri } from '../../../../utils/validators'\n\n/**\n * TODO: check how to support arbitrary data in class\n * @see https://www.w3.org/TR/vc-data-model/#credential-subject\n */\n\nexport interface W3cIssuerOptions {\n id: string\n}\n\nexport class W3cIssuer {\n public constructor(options: W3cIssuerOptions) {\n if (options) {\n this.id = options.id\n }\n }\n\n @IsUri()\n public id!: string\n}\n\n// Custom transformers\n\nexport function W3cIssuerTransformer() {\n return Transform(({ value, type }: { value: string | W3cIssuerOptions; type: TransformationType }) => {\n if (type === TransformationType.PLAIN_TO_CLASS) {\n if (isString(value)) return value\n return plainToInstance(W3cIssuer, value)\n }\n if (type === TransformationType.CLASS_TO_PLAIN) {\n if (isString(value)) return value\n return instanceToPlain(value)\n }\n // PLAIN_TO_PLAIN\n return value\n })\n}\n\n// Custom validators\n\nexport function IsW3cIssuer(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: 'IsW3cIssuer',\n validator: {\n validate: (value): boolean => {\n if (typeof value === 'string') {\n return isUri(value)\n }\n if (isInstance(value, W3cIssuer)) {\n return isUri(value.id)\n }\n return false\n },\n defaultMessage: buildMessage(\n (eachPrefix) => `${eachPrefix}$property must be an URI or an object with an id property which is an URI`,\n validationOptions\n ),\n },\n },\n validationOptions\n )\n}\n"],"mappings":";;;;;;AAeA,IAAa,YAAb,MAAuB;CACrB,YAAmB,SAA2B;EAC5C,IAAI,SACF,KAAK,KAAK,QAAQ;CAEtB;AAIF;AAFG,WAAA,CAAA,MAAM,GAAA,mBAAA,eAAA,MAAA,CAAA,GAAA,UAAA,WAAA,MAAA,KAAA,CAAA;AAMT,SAAgB,uBAAuB;CACrC,OAAO,WAAW,EAAE,OAAO,WAA2E;EACpG,IAAI,SAAS,mBAAmB,gBAAgB;GAC9C,IAAI,SAAS,KAAK,GAAG,OAAO;GAC5B,OAAO,gBAAgB,WAAW,KAAK;EACzC;EACA,IAAI,SAAS,mBAAmB,gBAAgB;GAC9C,IAAI,SAAS,KAAK,GAAG,OAAO;GAC5B,OAAO,gBAAgB,KAAK;EAC9B;EAEA,OAAO;CACT,CAAC;AACH;AAIA,SAAgB,YAAY,mBAA0D;CACpF,OAAO,WACL;EACE,MAAM;EACN,WAAW;GACT,WAAW,UAAmB;IAC5B,IAAI,OAAO,UAAU,UACnB,OAAO,MAAM,KAAK;IAEpB,IAAI,WAAW,OAAO,SAAS,GAC7B,OAAO,MAAM,MAAM,EAAE;IAEvB,OAAO;GACT;GACA,gBAAgB,cACb,eAAe,GAAG,WAAW,4EAC9B,iBACF;EACF;CACF,GACA,iBACF;AACF"}