@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
34 lines (33 loc) • 1.32 kB
JavaScript
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