{"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"}