Files
payload/src/graphql/errorHandler.ts
Dan Ribbens ad98b29398 feat: adds path to GraphQL errors (#457)
* feat: adds path to GraphQL errors

* feat: afterError hook complete and error handling types

* Revert "feat: afterError hook complete and error handling types"

This reverts commit 5517d16c58f516fd4663b1bff791dd7c78b1e721.

* fix: moves extra graphql error response to extensions
2022-03-16 13:11:30 -04:00

35 lines
887 B
TypeScript

import { GraphQLFormattedError } from 'graphql';
import utilities from '../utilities/logger';
const logger = utilities();
/**
*
* @param info
* @param debug
* @param afterErrorHook
* @returns {Promise<unknown[]>}
*/
const errorHandler = async (info, debug: boolean, afterErrorHook): Promise<GraphQLFormattedError[]> => Promise.all(info.result.errors.map(async (err) => {
logger.error(err.stack);
let response: GraphQLFormattedError = {
message: err.message,
locations: err.locations,
path: err.path,
extensions: {
name: err?.originalError?.name || undefined,
data: (err && err.originalError && err.originalError.data) || undefined,
stack: debug ? err.stack : undefined,
},
};
if (afterErrorHook) {
({ response } = await afterErrorHook(err, response) || { response });
}
return response;
}));
export default errorHandler;