@graphql-tools/graphql
Version:
Fork of GraphQL.js
26 lines (25 loc) • 961 B
JavaScript
import { toError } from '../jsutils/toError.js';
import { GraphQLError } from './GraphQLError.js';
/**
* Given an arbitrary value, presumably thrown while attempting to execute a
* GraphQL operation, produce a new GraphQLError aware of the location in the
* document responsible for the original Error.
*/
export function locatedError(rawOriginalError, nodes, path) {
var _a;
const originalError = toError(rawOriginalError);
// Note: this uses a brand-check to support GraphQL errors originating from other contexts.
if (isLocatedGraphQLError(originalError)) {
return originalError;
}
return new GraphQLError(originalError.message, {
nodes: (_a = originalError.nodes) !== null && _a !== void 0 ? _a : nodes,
source: originalError.source,
positions: originalError.positions,
path,
originalError,
});
}
function isLocatedGraphQLError(error) {
return Array.isArray(error.path);
}