@@ -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
4547type 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
5658function 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