forked from graphql/graphql-js
/
locatedError.js
37 lines (34 loc) · 1.12 KB
/
locatedError.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow strict
*/
import { GraphQLError } from './GraphQLError';
import { type ASTNode } from '../language/ast';
/**
* Given an arbitrary Error, 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(
originalError: Error | GraphQLError,
nodes: $ReadOnlyArray<ASTNode>,
path: $ReadOnlyArray<string | number>,
): GraphQLError {
// Note: this uses a brand-check to support GraphQL errors originating from
// other contexts.
if (originalError && Array.isArray(originalError.path)) {
return (originalError: any);
}
return new GraphQLError(
originalError && originalError.message,
(originalError && (originalError: any).nodes) || nodes,
originalError && (originalError: any).source,
originalError && (originalError: any).positions,
path,
originalError,
);
}