Skip to content

Commit cd7dd84

Browse files
authored
Adopt Error.cause in favor of originalError
1 parent 60ae6c4 commit cd7dd84

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

src/error/GraphQLError.ts

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,22 @@ export interface GraphQLErrorOptions {
3838
source?: Maybe<Source>;
3939
positions?: Maybe<ReadonlyArray<number>>;
4040
path?: Maybe<ReadonlyArray<string | number>>;
41+
/** @deprecated Prefer `cause` instead */
4142
originalError?: Maybe<Error & { readonly extensions?: unknown }>;
43+
cause?: unknown;
4244
extensions?: Maybe<GraphQLErrorExtensions>;
4345
}
4446

4547
type BackwardsCompatibleArgs =
4648
| [options?: GraphQLErrorOptions]
4749
| [
48-
nodes?: GraphQLErrorOptions['nodes'],
49-
source?: GraphQLErrorOptions['source'],
50-
positions?: GraphQLErrorOptions['positions'],
51-
path?: GraphQLErrorOptions['path'],
52-
originalError?: GraphQLErrorOptions['originalError'],
53-
extensions?: GraphQLErrorOptions['extensions'],
54-
];
50+
nodes?: GraphQLErrorOptions['nodes'],
51+
source?: GraphQLErrorOptions['source'],
52+
positions?: GraphQLErrorOptions['positions'],
53+
path?: GraphQLErrorOptions['path'],
54+
originalError?: GraphQLErrorOptions['originalError'],
55+
extensions?: GraphQLErrorOptions['extensions'],
56+
];
5557

5658
function toNormalizedOptions(
5759
args: BackwardsCompatibleArgs,
@@ -118,6 +120,7 @@ export class GraphQLError extends Error {
118120

119121
/**
120122
* The original error thrown from a field resolver during execution.
123+
* @deprecated Prefer using {@link Error.cause} instead
121124
*/
122125
readonly originalError: Error | undefined;
123126

@@ -140,13 +143,21 @@ export class GraphQLError extends Error {
140143
extensions?: Maybe<GraphQLErrorExtensions>,
141144
);
142145
constructor(message: string, ...rawArgs: BackwardsCompatibleArgs) {
143-
const { nodes, source, positions, path, originalError, extensions } =
146+
const { nodes, source, positions, path, originalError, extensions, cause } =
144147
toNormalizedOptions(rawArgs);
145-
super(message);
148+
super(message, { cause: cause ?? originalError });
146149

147150
this.name = 'GraphQLError';
148151
this.path = path ?? undefined;
149-
this.originalError = originalError ?? undefined;
152+
if (originalError) {
153+
this.originalError = originalError;
154+
} else if (cause instanceof Error) {
155+
// If we guide users to migrate to `cause` instead of `originalError`,
156+
// better not to break any downstream usages that still rely on `originalError`
157+
this.originalError = cause;
158+
} else {
159+
this.originalError = undefined;
160+
}
150161

151162
// Compute list of blame nodes.
152163
this.nodes = undefinedIfEmpty(

0 commit comments

Comments
 (0)