{"version":3,"sources":["../../src/common/validationErrorCounter.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\n\nimport {\n  ConsumerMethodPath,\n  ValidationError,\n  ValidationErrorsItem,\n} from \"./types.js\";\n\nexport default class ValidationErrorCounter {\n  private errorCounts: Map<string, number>;\n  private errorDetails: Map<string, ConsumerMethodPath & ValidationError>;\n\n  constructor() {\n    this.errorCounts = new Map();\n    this.errorDetails = new Map();\n  }\n\n  public addValidationError(\n    validationError: ConsumerMethodPath & ValidationError,\n  ) {\n    const key = this.getKey(validationError);\n    if (!this.errorDetails.has(key)) {\n      this.errorDetails.set(key, validationError);\n    }\n    this.errorCounts.set(key, (this.errorCounts.get(key) || 0) + 1);\n  }\n\n  public getAndResetValidationErrors() {\n    const data: Array<ValidationErrorsItem> = [];\n    this.errorCounts.forEach((count, key) => {\n      const validationError = this.errorDetails.get(key);\n      if (validationError) {\n        data.push({\n          consumer: validationError.consumer || null,\n          method: validationError.method,\n          path: validationError.path,\n          loc: validationError.loc.split(\".\").filter(Boolean),\n          msg: validationError.msg,\n          type: validationError.type,\n          error_count: count,\n        });\n      }\n    });\n    this.errorCounts.clear();\n    this.errorDetails.clear();\n    return data;\n  }\n\n  private getKey(validationError: ConsumerMethodPath & ValidationError) {\n    const hashInput = [\n      validationError.consumer || \"\",\n      validationError.method.toUpperCase(),\n      validationError.path,\n      validationError.loc.split(\".\").filter(Boolean),\n      validationError.msg.trim(),\n      validationError.type,\n    ].join(\"|\");\n    return createHash(\"md5\").update(hashInput).digest(\"hex\");\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;;;;AAAA,yBAA2B;AAQ3B,MAAqBA,0BAArB,MAAqBA,wBAAAA;EACXC;EACAC;EAER,cAAc;AACZ,SAAKD,cAAc,oBAAIE,IAAAA;AACvB,SAAKD,eAAe,oBAAIC,IAAAA;EAC1B;EAEOC,mBACLC,iBACA;AACA,UAAMC,MAAM,KAAKC,OAAOF,eAAAA;AACxB,QAAI,CAAC,KAAKH,aAAaM,IAAIF,GAAAA,GAAM;AAC/B,WAAKJ,aAAaO,IAAIH,KAAKD,eAAAA;IAC7B;AACA,SAAKJ,YAAYQ,IAAIH,MAAM,KAAKL,YAAYS,IAAIJ,GAAAA,KAAQ,KAAK,CAAA;EAC/D;EAEOK,8BAA8B;AACnC,UAAMC,OAAoC,CAAA;AAC1C,SAAKX,YAAYY,QAAQ,CAACC,OAAOR,QAAAA;AAC/B,YAAMD,kBAAkB,KAAKH,aAAaQ,IAAIJ,GAAAA;AAC9C,UAAID,iBAAiB;AACnBO,aAAKG,KAAK;UACRC,UAAUX,gBAAgBW,YAAY;UACtCC,QAAQZ,gBAAgBY;UACxBC,MAAMb,gBAAgBa;UACtBC,KAAKd,gBAAgBc,IAAIC,MAAM,GAAA,EAAKC,OAAOC,OAAAA;UAC3CC,KAAKlB,gBAAgBkB;UACrBC,MAAMnB,gBAAgBmB;UACtBC,aAAaX;QACf,CAAA;MACF;IACF,CAAA;AACA,SAAKb,YAAYyB,MAAK;AACtB,SAAKxB,aAAawB,MAAK;AACvB,WAAOd;EACT;EAEQL,OAAOF,iBAAuD;AACpE,UAAMsB,YAAY;MAChBtB,gBAAgBW,YAAY;MAC5BX,gBAAgBY,OAAOW,YAAW;MAClCvB,gBAAgBa;MAChBb,gBAAgBc,IAAIC,MAAM,GAAA,EAAKC,OAAOC,OAAAA;MACtCjB,gBAAgBkB,IAAIM,KAAI;MACxBxB,gBAAgBmB;MAChBM,KAAK,GAAA;AACP,eAAOC,+BAAW,KAAA,EAAOC,OAAOL,SAAAA,EAAWM,OAAO,KAAA;EACpD;AACF;AAnDqBjC;AAArB,IAAqBA,yBAArB;","names":["ValidationErrorCounter","errorCounts","errorDetails","Map","addValidationError","validationError","key","getKey","has","set","get","getAndResetValidationErrors","data","forEach","count","push","consumer","method","path","loc","split","filter","Boolean","msg","type","error_count","clear","hashInput","toUpperCase","trim","join","createHash","update","digest"]}