@@ -38,20 +38,22 @@ export interface GraphQLErrorOptions {
38
38
source ?: Maybe < Source > ;
39
39
positions ?: Maybe < ReadonlyArray < number > > ;
40
40
path ?: Maybe < ReadonlyArray < string | number > > ;
41
+ /** @deprecated Prefer `cause` instead */
41
42
originalError ?: Maybe < Error & { readonly extensions ?: unknown } > ;
43
+ cause ?: unknown ;
42
44
extensions ?: Maybe < GraphQLErrorExtensions > ;
43
45
}
44
46
45
47
type BackwardsCompatibleArgs =
46
48
| [ options ?: GraphQLErrorOptions ]
47
49
| [
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
+ ] ;
55
57
56
58
function toNormalizedOptions (
57
59
args : BackwardsCompatibleArgs ,
@@ -118,6 +120,7 @@ export class GraphQLError extends Error {
118
120
119
121
/**
120
122
* The original error thrown from a field resolver during execution.
123
+ * @deprecated Prefer using {@link Error.cause} instead
121
124
*/
122
125
readonly originalError : Error | undefined ;
123
126
@@ -140,13 +143,21 @@ export class GraphQLError extends Error {
140
143
extensions ?: Maybe < GraphQLErrorExtensions > ,
141
144
) ;
142
145
constructor ( message : string , ...rawArgs : BackwardsCompatibleArgs ) {
143
- const { nodes, source, positions, path, originalError, extensions } =
146
+ const { nodes, source, positions, path, originalError, extensions, cause } =
144
147
toNormalizedOptions ( rawArgs ) ;
145
- super ( message ) ;
148
+ super ( message , { cause : cause ?? originalError } ) ;
146
149
147
150
this . name = 'GraphQLError' ;
148
151
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
+ }
150
161
151
162
// Compute list of blame nodes.
152
163
this . nodes = undefinedIfEmpty (
0 commit comments