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

37 lines (33 loc) • 1.32 kB
import { ClassValidationError } from "../error/ClassValidationError.mjs"; import { MessageValidator } from "./MessageValidator.mjs"; import { instanceToInstance, instanceToPlain, plainToInstance } from "class-transformer"; //#region src/utils/JsonTransformer.ts var JsonTransformer = class JsonTransformer { static toJSON(classInstance) { return instanceToPlain(classInstance, { exposeDefaultValues: true }); } static fromJSON(json, cls, { validate = true } = {}) { const instance = plainToInstance(cls, json, { exposeDefaultValues: true }); if (!validate) return instance; if (!instance) throw new ClassValidationError("Cannot validate instance of ", { classType: Object.getPrototypeOf(cls).name }); MessageValidator.validateSync(instance); return instance; } static clone(classInstance) { return instanceToInstance(classInstance, { exposeDefaultValues: true, enableCircularCheck: true, enableImplicitConversion: true, ignoreDecorators: true }); } static serialize(classInstance) { return JSON.stringify(JsonTransformer.toJSON(classInstance)); } static deserialize(jsonString, cls, { validate = true } = {}) { return JsonTransformer.fromJSON(JSON.parse(jsonString), cls, { validate }); } }; //#endregion export { JsonTransformer }; //# sourceMappingURL=JsonTransformer.mjs.map