{"version":3,"file":"errors.mjs","sources":["../../src/services/errors.ts"],"sourcesContent":["import createError from 'http-errors';\nimport { errors } from '@strapi/utils';\n\nconst mapErrorsAndStatus = [\n  {\n    classError: errors.UnauthorizedError,\n    status: 401,\n  },\n  {\n    classError: errors.ForbiddenError,\n    status: 403,\n  },\n  {\n    classError: errors.NotFoundError,\n    status: 404,\n  },\n  {\n    classError: errors.PayloadTooLargeError,\n    status: 413,\n  },\n  {\n    classError: errors.RateLimitError,\n    status: 429,\n  },\n  {\n    classError: errors.NotImplementedError,\n    status: 501,\n  },\n];\n\nconst formatApplicationError = (error: InstanceType<typeof errors.ApplicationError>) => {\n  const errorAndStatus = mapErrorsAndStatus.find((pair) => error instanceof pair.classError);\n  const status = errorAndStatus ? errorAndStatus.status : 400;\n\n  return {\n    status,\n    body: {\n      data: null,\n      error: {\n        status,\n        name: error.name,\n        message: error.message,\n        details: error.details,\n      },\n    },\n  };\n};\n\nconst formatHttpError = (error: createError.HttpError) => {\n  return {\n    status: error.status,\n    body: {\n      data: null,\n      error: {\n        status: error.status,\n        name: error.name,\n        message: error.message,\n        details: error.details,\n      },\n    },\n  };\n};\n\nconst formatInternalError = (error: unknown) => {\n  if (!(error instanceof Error)) {\n    return formatHttpError(createError(500));\n  }\n\n  const httpError = createError(error);\n\n  if (httpError.expose) {\n    return formatHttpError(httpError);\n  }\n\n  return formatHttpError(createError(httpError.status || 500));\n};\n\nexport { formatApplicationError, formatHttpError, formatInternalError };\n"],"names":["mapErrorsAndStatus","classError","errors","UnauthorizedError","status","ForbiddenError","NotFoundError","PayloadTooLargeError","RateLimitError","NotImplementedError","formatApplicationError","error","errorAndStatus","find","pair","body","data","name","message","details","formatHttpError","formatInternalError","Error","createError","httpError","expose"],"mappings":";;;AAGA,MAAMA,kBAAAA,GAAqB;AACzB,IAAA;AACEC,QAAAA,UAAAA,EAAYC,OAAOC,iBAAiB;QACpCC,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;AACEH,QAAAA,UAAAA,EAAYC,OAAOG,cAAc;QACjCD,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;AACEH,QAAAA,UAAAA,EAAYC,OAAOI,aAAa;QAChCF,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;AACEH,QAAAA,UAAAA,EAAYC,OAAOK,oBAAoB;QACvCH,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;AACEH,QAAAA,UAAAA,EAAYC,OAAOM,cAAc;QACjCJ,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;AACEH,QAAAA,UAAAA,EAAYC,OAAOO,mBAAmB;QACtCL,MAAAA,EAAQ;AACV;AACD,CAAA;AAED,MAAMM,yBAAyB,CAACC,KAAAA,GAAAA;IAC9B,MAAMC,cAAAA,GAAiBZ,mBAAmBa,IAAI,CAAC,CAACC,IAAAA,GAASH,KAAAA,YAAiBG,KAAKb,UAAU,CAAA;AACzF,IAAA,MAAMG,MAAAA,GAASQ,cAAAA,GAAiBA,cAAAA,CAAeR,MAAM,GAAG,GAAA;IAExD,OAAO;AACLA,QAAAA,MAAAA;QACAW,IAAAA,EAAM;YACJC,IAAAA,EAAM,IAAA;YACNL,KAAAA,EAAO;AACLP,gBAAAA,MAAAA;AACAa,gBAAAA,IAAAA,EAAMN,MAAMM,IAAI;AAChBC,gBAAAA,OAAAA,EAASP,MAAMO,OAAO;AACtBC,gBAAAA,OAAAA,EAASR,MAAMQ;AACjB;AACF;AACF,KAAA;AACF;AAEA,MAAMC,kBAAkB,CAACT,KAAAA,GAAAA;IACvB,OAAO;AACLP,QAAAA,MAAAA,EAAQO,MAAMP,MAAM;QACpBW,IAAAA,EAAM;YACJC,IAAAA,EAAM,IAAA;YACNL,KAAAA,EAAO;AACLP,gBAAAA,MAAAA,EAAQO,MAAMP,MAAM;AACpBa,gBAAAA,IAAAA,EAAMN,MAAMM,IAAI;AAChBC,gBAAAA,OAAAA,EAASP,MAAMO,OAAO;AACtBC,gBAAAA,OAAAA,EAASR,MAAMQ;AACjB;AACF;AACF,KAAA;AACF;AAEA,MAAME,sBAAsB,CAACV,KAAAA,GAAAA;AAC3B,IAAA,IAAI,EAAEA,KAAAA,YAAiBW,KAAI,CAAA,EAAI;AAC7B,QAAA,OAAOF,gBAAgBG,WAAAA,CAAY,GAAA,CAAA,CAAA;AACrC,IAAA;AAEA,IAAA,MAAMC,YAAYD,WAAAA,CAAYZ,KAAAA,CAAAA;IAE9B,IAAIa,SAAAA,CAAUC,MAAM,EAAE;AACpB,QAAA,OAAOL,eAAAA,CAAgBI,SAAAA,CAAAA;AACzB,IAAA;AAEA,IAAA,OAAOJ,eAAAA,CAAgBG,WAAAA,CAAYC,SAAAA,CAAUpB,MAAM,IAAI,GAAA,CAAA,CAAA;AACzD;;;;"}