@@ -33,29 +33,29 @@ export interface GraphQLFormattedErrorExtensions {
33
33
[ attributeName : string ] : unknown ;
34
34
}
35
35
36
- export interface GraphQLErrorOptions {
36
+ export interface GraphQLErrorOptions < TErrorExtensions = GraphQLErrorExtensions > {
37
37
nodes ?: ReadonlyArray < ASTNode > | ASTNode | null ;
38
38
source ?: Maybe < Source > ;
39
39
positions ?: Maybe < ReadonlyArray < number > > ;
40
40
path ?: Maybe < ReadonlyArray < string | number > > ;
41
41
originalError ?: Maybe < Error & { readonly extensions ?: unknown } > ;
42
- extensions ?: Maybe < GraphQLErrorExtensions > ;
42
+ extensions ?: Maybe < TErrorExtensions > ;
43
43
}
44
44
45
- type BackwardsCompatibleArgs =
46
- | [ options ?: GraphQLErrorOptions ]
45
+ type BackwardsCompatibleArgs < TErrorExtensions = GraphQLErrorExtensions > =
46
+ | [ options ?: GraphQLErrorOptions < TErrorExtensions > ]
47
47
| [
48
- nodes ?: GraphQLErrorOptions [ 'nodes' ] ,
49
- source ?: GraphQLErrorOptions [ 'source' ] ,
50
- positions ?: GraphQLErrorOptions [ 'positions' ] ,
51
- path ?: GraphQLErrorOptions [ 'path' ] ,
52
- originalError ?: GraphQLErrorOptions [ 'originalError' ] ,
53
- extensions ?: GraphQLErrorOptions [ 'extensions' ] ,
48
+ nodes ?: GraphQLErrorOptions < TErrorExtensions > [ 'nodes' ] ,
49
+ source ?: GraphQLErrorOptions < TErrorExtensions > [ 'source' ] ,
50
+ positions ?: GraphQLErrorOptions < TErrorExtensions > [ 'positions' ] ,
51
+ path ?: GraphQLErrorOptions < TErrorExtensions > [ 'path' ] ,
52
+ originalError ?: GraphQLErrorOptions < TErrorExtensions > [ 'originalError' ] ,
53
+ extensions ?: GraphQLErrorOptions < TErrorExtensions > [ 'extensions' ] ,
54
54
] ;
55
55
56
- function toNormalizedOptions (
57
- args : BackwardsCompatibleArgs ,
58
- ) : GraphQLErrorOptions {
56
+ function toNormalizedOptions < TErrorExtensions = GraphQLErrorExtensions > (
57
+ args : BackwardsCompatibleArgs < TErrorExtensions > ,
58
+ ) : GraphQLErrorOptions < TErrorExtensions > {
59
59
const firstArg = args [ 0 ] ;
60
60
if ( firstArg == null || 'kind' in firstArg || 'length' in firstArg ) {
61
61
return {
@@ -76,7 +76,7 @@ function toNormalizedOptions(
76
76
* and stack trace, it also includes information about the locations in a
77
77
* GraphQL document and/or execution result that correspond to the Error.
78
78
*/
79
- export class GraphQLError extends Error {
79
+ export class GraphQLError < TErrorExtensions = GraphQLErrorExtensions > extends Error {
80
80
/**
81
81
* An array of `{ line, column }` locations within the source GraphQL document
82
82
* which correspond to this error.
@@ -124,9 +124,9 @@ export class GraphQLError extends Error {
124
124
/**
125
125
* Extension fields to add to the formatted error.
126
126
*/
127
- readonly extensions : GraphQLErrorExtensions ;
127
+ readonly extensions : TErrorExtensions ;
128
128
129
- constructor ( message : string , options ?: GraphQLErrorOptions ) ;
129
+ constructor ( message : string , options ?: GraphQLErrorOptions < TErrorExtensions > ) ;
130
130
/**
131
131
* @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.
132
132
*/
@@ -137,11 +137,11 @@ export class GraphQLError extends Error {
137
137
positions ?: Maybe < ReadonlyArray < number > > ,
138
138
path ?: Maybe < ReadonlyArray < string | number > > ,
139
139
originalError ?: Maybe < Error & { readonly extensions ?: unknown } > ,
140
- extensions ?: Maybe < GraphQLErrorExtensions > ,
140
+ extensions ?: Maybe < TErrorExtensions > ,
141
141
) ;
142
- constructor ( message : string , ...rawArgs : BackwardsCompatibleArgs ) {
142
+ constructor ( message : string , ...rawArgs : BackwardsCompatibleArgs < TErrorExtensions > ) {
143
143
const { nodes, source, positions, path, originalError, extensions } =
144
- toNormalizedOptions ( rawArgs ) ;
144
+ toNormalizedOptions < TErrorExtensions > ( rawArgs ) ;
145
145
super ( message ) ;
146
146
147
147
this . name = 'GraphQLError' ;
@@ -231,9 +231,9 @@ export class GraphQLError extends Error {
231
231
return output ;
232
232
}
233
233
234
- toJSON ( ) : GraphQLFormattedError {
234
+ toJSON ( ) : GraphQLFormattedError < TErrorExtensions > {
235
235
type WritableFormattedError = {
236
- - readonly [ P in keyof GraphQLFormattedError ] : GraphQLFormattedError [ P ] ;
236
+ - readonly [ P in keyof GraphQLFormattedError < TErrorExtensions > ] : GraphQLFormattedError < TErrorExtensions > [ P ] ;
237
237
} ;
238
238
239
239
const formattedError : WritableFormattedError = {
@@ -265,7 +265,7 @@ function undefinedIfEmpty<T>(
265
265
/**
266
266
* See: https://spec.graphql.org/draft/#sec-Errors
267
267
*/
268
- export interface GraphQLFormattedError {
268
+ export interface GraphQLFormattedError < TErrorExtensions = GraphQLFormattedErrorExtensions > {
269
269
/**
270
270
* A short, human-readable summary of the problem that **SHOULD NOT** change
271
271
* from occurrence to occurrence of the problem, except for purposes of
@@ -288,7 +288,7 @@ export interface GraphQLFormattedError {
288
288
* Reserved for implementors to extend the protocol however they see fit,
289
289
* and hence there are no additional restrictions on its contents.
290
290
*/
291
- readonly extensions ?: GraphQLFormattedErrorExtensions ;
291
+ readonly extensions ?: TErrorExtensions ;
292
292
}
293
293
294
294
/**
0 commit comments