{"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;EACxC,OAAO,gBAAgB,eAAe,EACpC,qBAAqB,KACvB,CAAC;CACH;CAEA,OAAc,SAEZ,MAEA,KACA,EAAE,WAAW,SAAmB,CAAC,GAC9B;EACH,MAAM,WAAW,gBAAgB,KAAK,MAAM,EAAE,qBAAqB,KAAK,CAAC;EAGzE,IAAI,CAAC,UAAU,OAAO;EAEtB,IAAI,CAAC,UACH,MAAM,IAAI,qBAAqB,gCAAgC,EAAE,WAAW,OAAO,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;EAE/G,iBAAiB,aAAa,QAAQ;EAEtC,OAAO;CACT;CAEA,OAAc,MAAS,eAAqB;EAC1C,OAAO,mBAAmB,eAAe;GACvC,qBAAqB;GACrB,qBAAqB;GACrB,0BAA0B;GAC1B,kBAAkB;EACpB,CAAC;CACH;CAEA,OAAc,UAAa,eAA0B;EACnD,OAAO,KAAK,UAAU,gBAAgB,OAAO,aAAa,CAAC;CAC7D;CAEA,OAAc,YACZ,YAEA,KACA,EAAE,WAAW,SAAmB,CAAC,GAC9B;EACH,OAAO,gBAAgB,SAAS,KAAK,MAAM,UAAU,GAAG,KAAK,EAAE,SAAS,CAAC;CAC3E;AACF"}