mirror of
https://github.com/strapi/strapi.git
synced 2025-09-01 04:42:58 +00:00
better graphql error formatting
This commit is contained in:
parent
ebb124de4b
commit
ec07719f3b
@ -1,6 +1,6 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const { toUpper, snakeCase } = require('lodash/fp');
|
const { toUpper, snakeCase, pick } = require('lodash/fp');
|
||||||
const {
|
const {
|
||||||
HttpError,
|
HttpError,
|
||||||
ForbiddenError,
|
ForbiddenError,
|
||||||
@ -15,6 +15,7 @@ const {
|
|||||||
} = require('apollo-server-errors');
|
} = require('apollo-server-errors');
|
||||||
|
|
||||||
const formatToCode = name => `STRAPI_${toUpper(snakeCase(name))}`;
|
const formatToCode = name => `STRAPI_${toUpper(snakeCase(name))}`;
|
||||||
|
const formatErrorToExtension = error => ({ error: pick(['name', 'message', 'details'])(error) });
|
||||||
|
|
||||||
const formatGraphqlError = error => {
|
const formatGraphqlError = error => {
|
||||||
const originalError = error.originalError;
|
const originalError = error.originalError;
|
||||||
@ -24,16 +25,16 @@ const formatGraphqlError = error => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (originalError instanceof ForbiddenError || originalError instanceof UnauthorizedError) {
|
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) {
|
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) {
|
if (originalError instanceof ApplicationError || originalError instanceof HttpError) {
|
||||||
const name = formatToCode(originalError.name);
|
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
|
// Internal server error
|
||||||
|
Loading…
x
Reference in New Issue
Block a user