{"version":3,"sources":["../../src/sdk/dto/utils/validate-dto.ts"],"sourcesContent":["import { validate } from 'class-validator';\nimport { ValidationException, prepareAddresses } from '../../common';\n\n/**\n * @ignore\n */\nexport async function validateDto<T extends {}>(\n  dto: Partial<T>,\n  DtoConstructor: { new (): T },\n  options: {\n    addressKeys?: (keyof T)[];\n  } = {},\n): Promise<T> {\n  const result = new DtoConstructor();\n\n  const { addressKeys } = options;\n\n  try {\n    let dtoWithoutUndefined = Object.entries(dto).reduce((result, [key, value]) => {\n      if (typeof value !== 'undefined') {\n        result = {\n          ...result,\n          [key]: value,\n        };\n      }\n      return result;\n    }, {}) as T;\n\n    if (addressKeys) {\n      dtoWithoutUndefined = prepareAddresses(dtoWithoutUndefined, ...addressKeys);\n    }\n\n    Object.assign(result, dtoWithoutUndefined);\n  } catch (err) {\n    //\n  }\n\n  const errors = await validate(result, {\n    forbidUnknownValues: true,\n    validationError: {\n      target: false,\n      value: false,\n    },\n  });\n\n  if (errors && errors.length) {\n    throw new ValidationException(errors);\n  }\n\n  return result;\n}\n"],"mappings":";;;;;;;;AAAA,SAAS,gBAAgB;AAMzB,eAAsB,YACpB,KACA,gBACA,UAEI,CAAC,GACO;AACZ,QAAM,SAAS,IAAI,eAAe;AAElC,QAAM,EAAE,YAAY,IAAI;AAExB,MAAI;AACF,QAAI,sBAAsB,OAAO,QAAQ,GAAG,EAAE,OAAO,CAACA,SAAQ,CAAC,KAAK,KAAK,MAAM;AAC7E,UAAI,OAAO,UAAU,aAAa;AAChC,QAAAA,UAAS;AAAA,UACP,GAAGA;AAAA,UACH,CAAC,GAAG,GAAG;AAAA,QACT;AAAA,MACF;AACA,aAAOA;AAAA,IACT,GAAG,CAAC,CAAC;AAEL,QAAI,aAAa;AACf,4BAAsB,iBAAiB,qBAAqB,GAAG,WAAW;AAAA,IAC5E;AAEA,WAAO,OAAO,QAAQ,mBAAmB;AAAA,EAC3C,SAAS,KAAK;AAAA,EAEd;AAEA,QAAM,SAAS,MAAM,SAAS,QAAQ;AAAA,IACpC,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,OAAO;AAAA,IACT;AAAA,EACF,CAAC;AAED,MAAI,UAAU,OAAO,QAAQ;AAC3B,UAAM,IAAI,oBAAoB,MAAM;AAAA,EACtC;AAEA,SAAO;AACT;","names":["result"]}