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.61 kB
{"version":3,"file":"JsonTransformer.mjs","names":[],"sources":["../../src/utils/JsonTransformer.ts"],"sourcesContent":["import { instanceToInstance, instanceToPlain, plainToInstance } from 'class-transformer'\nimport { ClassValidationError } from '../error/ClassValidationError'\nimport { MessageValidator } from './MessageValidator'\n\ninterface Validate {\n validate?: boolean\n}\n\n// biome-ignore lint/complexity/noStaticOnlyClass: no explanation\nexport class JsonTransformer {\n public static toJSON<T>(classInstance: T) {\n return instanceToPlain(classInstance, {\n exposeDefaultValues: true,\n })\n }\n\n public static fromJSON<T>(\n // biome-ignore lint/suspicious/noExplicitAny: no explanation\n json: any,\n // biome-ignore lint/suspicious/noExplicitAny: no explanation\n cls: { new (...args: any[]): T },\n { validate = true }: Validate = {}\n ): T {\n const instance = plainToInstance(cls, json, { exposeDefaultValues: true })\n\n // Skip validation\n if (!validate) return instance\n\n if (!instance) {\n throw new ClassValidationError('Cannot validate instance of ', { classType: Object.getPrototypeOf(cls).name })\n }\n MessageValidator.validateSync(instance)\n\n return instance\n }\n\n public static clone<T>(classInstance: T): T {\n return instanceToInstance(classInstance, {\n exposeDefaultValues: true,\n enableCircularCheck: true,\n enableImplicitConversion: true,\n ignoreDecorators: true,\n })\n }\n\n public static serialize<T>(classInstance: T): string {\n return JSON.stringify(JsonTransformer.toJSON(classInstance))\n }\n\n public static deserialize<T>(\n jsonString: string,\n // biome-ignore lint/suspicious/noExplicitAny: no explanation\n cls: { new (...args: any[]): T },\n { validate = true }: Validate = {}\n ): T {\n return JsonTransformer.fromJSON(JSON.parse(jsonString), cls, { validate })\n }\n}\n"],"mappings":";;;;;;;AASA,IAAa,kBAAb,MAAa,gBAAgB;CAC3B,OAAc,OAAU,eAAkB;AACxC,SAAO,gBAAgB,eAAe,EACpC,qBAAqB,MACtB,CAAC;;CAGJ,OAAc,SAEZ,MAEA,KACA,EAAE,WAAW,SAAmB,EAAE,EAC/B;EACH,MAAM,WAAW,gBAAgB,KAAK,MAAM,EAAE,qBAAqB,MAAM,CAAC;AAG1E,MAAI,CAAC,SAAU,QAAO;AAEtB,MAAI,CAAC,SACH,OAAM,IAAI,qBAAqB,gCAAgC,EAAE,WAAW,OAAO,eAAe,IAAI,CAAC,MAAM,CAAC;AAEhH,mBAAiB,aAAa,SAAS;AAEvC,SAAO;;CAGT,OAAc,MAAS,eAAqB;AAC1C,SAAO,mBAAmB,eAAe;GACvC,qBAAqB;GACrB,qBAAqB;GACrB,0BAA0B;GAC1B,kBAAkB;GACnB,CAAC;;CAGJ,OAAc,UAAa,eAA0B;AACnD,SAAO,KAAK,UAAU,gBAAgB,OAAO,cAAc,CAAC;;CAG9D,OAAc,YACZ,YAEA,KACA,EAAE,WAAW,SAAmB,EAAE,EAC/B;AACH,SAAO,gBAAgB,SAAS,KAAK,MAAM,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC"}