UNPKG

graphql-yoga

Version:
51 lines (50 loc) • 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.maskError = void 0; const graphql_1 = require("graphql"); const utils_1 = require("@graphql-tools/utils"); const error_js_1 = require("../error.js"); function serializeError(error) { if ((0, error_js_1.isGraphQLError)(error)) { return error.toJSON(); } if (error instanceof Error) { return { message: error.message, stack: error.stack, cause: error.cause, }; } return error; } const maskError = (error, message, isDev = globalThis.process?.env?.['NODE_ENV'] === 'development') => { if ((0, error_js_1.isOriginalGraphQLError)(error)) { return error; } const errorExtensions = { code: 'INTERNAL_SERVER_ERROR', unexpected: true, }; const errorOptions = { extensions: errorExtensions, }; let coordinate; if ((0, error_js_1.isGraphQLError)(error)) { errorOptions.nodes = error.nodes; errorOptions.source = error.source; errorOptions.positions = error.positions; errorOptions.path = error.path; coordinate = (0, utils_1.getSchemaCoordinate)(error); if (isDev && error.originalError) { errorExtensions['originalError'] = serializeError(error.originalError); } if (error.extensions?.['http']) { errorExtensions['http'] = error.extensions['http']; } } else if (isDev) { errorExtensions['originalError'] = serializeError(error); } return (0, error_js_1.withSchemaCoordinate)(new graphql_1.GraphQLError(message, errorOptions), coordinate); }; exports.maskError = maskError;