From ec07719f3be5a11e88dee1bda62f3c677dbe656e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20No=C3=ABl?= Date: Fri, 29 Oct 2021 17:17:58 +0200 Subject: [PATCH] better graphql error formatting --- packages/plugins/graphql/server/format-graphql-error.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/plugins/graphql/server/format-graphql-error.js b/packages/plugins/graphql/server/format-graphql-error.js index a0c0a7ab4e..1f7dba16f9 100644 --- a/packages/plugins/graphql/server/format-graphql-error.js +++ b/packages/plugins/graphql/server/format-graphql-error.js @@ -1,6 +1,6 @@ 'use strict'; -const { toUpper, snakeCase } = require('lodash/fp'); +const { toUpper, snakeCase, pick } = require('lodash/fp'); const { HttpError, ForbiddenError, @@ -15,6 +15,7 @@ const { } = require('apollo-server-errors'); const formatToCode = name => `STRAPI_${toUpper(snakeCase(name))}`; +const formatErrorToExtension = error => ({ error: pick(['name', 'message', 'details'])(error) }); const formatGraphqlError = error => { const originalError = error.originalError; @@ -24,16 +25,16 @@ const formatGraphqlError = error => { } if (originalError instanceof ForbiddenError || originalError instanceof UnauthorizedError) { - return new ApolloForbiddenError(originalError.message, { details: originalError.details }); + return new ApolloForbiddenError(originalError.message, formatErrorToExtension(originalError)); } if (originalError instanceof ValidationError) { - return new ApolloUserInputError(originalError.message, { details: originalError.details }); + return new ApolloUserInputError(originalError.message, formatErrorToExtension(originalError)); } if (originalError instanceof ApplicationError || originalError instanceof HttpError) { const name = formatToCode(originalError.name); - return new ApolloError(originalError.message, name, { details: originalError.details }); + return new ApolloError(originalError.message, name, formatErrorToExtension(originalError)); } // Internal server error