@@ -33,29 +33,29 @@ export interface GraphQLFormattedErrorExtensions {
3333 [ attributeName : string ] : unknown ;
3434}
3535
36- export interface GraphQLErrorOptions {
36+ export interface GraphQLErrorOptions < TErrorExtensions = GraphQLErrorExtensions > {
3737 nodes ?: ReadonlyArray < ASTNode > | ASTNode | null ;
3838 source ?: Maybe < Source > ;
3939 positions ?: Maybe < ReadonlyArray < number > > ;
4040 path ?: Maybe < ReadonlyArray < string | number > > ;
4141 originalError ?: Maybe < Error & { readonly extensions ?: unknown } > ;
42- extensions ?: Maybe < GraphQLErrorExtensions > ;
42+ extensions ?: Maybe < TErrorExtensions > ;
4343}
4444
45- type BackwardsCompatibleArgs =
46- | [ options ?: GraphQLErrorOptions ]
45+ type BackwardsCompatibleArgs < TErrorExtensions = GraphQLErrorExtensions > =
46+ | [ options ?: GraphQLErrorOptions < TErrorExtensions > ]
4747 | [
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' ] ,
5454 ] ;
5555
56- function toNormalizedOptions (
57- args : BackwardsCompatibleArgs ,
58- ) : GraphQLErrorOptions {
56+ function toNormalizedOptions < TErrorExtensions = GraphQLErrorExtensions > (
57+ args : BackwardsCompatibleArgs < TErrorExtensions > ,
58+ ) : GraphQLErrorOptions < TErrorExtensions > {
5959 const firstArg = args [ 0 ] ;
6060 if ( firstArg == null || 'kind' in firstArg || 'length' in firstArg ) {
6161 return {
@@ -76,7 +76,7 @@ function toNormalizedOptions(
7676 * and stack trace, it also includes information about the locations in a
7777 * GraphQL document and/or execution result that correspond to the Error.
7878 */
79- export class GraphQLError extends Error {
79+ export class GraphQLError < TErrorExtensions = GraphQLErrorExtensions > extends Error {
8080 /**
8181 * An array of `{ line, column }` locations within the source GraphQL document
8282 * which correspond to this error.
@@ -124,9 +124,9 @@ export class GraphQLError extends Error {
124124 /**
125125 * Extension fields to add to the formatted error.
126126 */
127- readonly extensions : GraphQLErrorExtensions ;
127+ readonly extensions : TErrorExtensions ;
128128
129- constructor ( message : string , options ?: GraphQLErrorOptions ) ;
129+ constructor ( message : string , options ?: GraphQLErrorOptions < TErrorExtensions > ) ;
130130 /**
131131 * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.
132132 */
@@ -137,11 +137,11 @@ export class GraphQLError extends Error {
137137 positions ?: Maybe < ReadonlyArray < number > > ,
138138 path ?: Maybe < ReadonlyArray < string | number > > ,
139139 originalError ?: Maybe < Error & { readonly extensions ?: unknown } > ,
140- extensions ?: Maybe < GraphQLErrorExtensions > ,
140+ extensions ?: Maybe < TErrorExtensions > ,
141141 ) ;
142- constructor ( message : string , ...rawArgs : BackwardsCompatibleArgs ) {
142+ constructor ( message : string , ...rawArgs : BackwardsCompatibleArgs < TErrorExtensions > ) {
143143 const { nodes, source, positions, path, originalError, extensions } =
144- toNormalizedOptions ( rawArgs ) ;
144+ toNormalizedOptions < TErrorExtensions > ( rawArgs ) ;
145145 super ( message ) ;
146146
147147 this . name = 'GraphQLError' ;
@@ -231,9 +231,9 @@ export class GraphQLError extends Error {
231231 return output ;
232232 }
233233
234- toJSON ( ) : GraphQLFormattedError {
234+ toJSON ( ) : GraphQLFormattedError < TErrorExtensions > {
235235 type WritableFormattedError = {
236- - readonly [ P in keyof GraphQLFormattedError ] : GraphQLFormattedError [ P ] ;
236+ - readonly [ P in keyof GraphQLFormattedError < TErrorExtensions > ] : GraphQLFormattedError < TErrorExtensions > [ P ] ;
237237 } ;
238238
239239 const formattedError : WritableFormattedError = {
@@ -265,7 +265,7 @@ function undefinedIfEmpty<T>(
265265/**
266266 * See: https://spec.graphql.org/draft/#sec-Errors
267267 */
268- export interface GraphQLFormattedError {
268+ export interface GraphQLFormattedError < TErrorExtensions = GraphQLFormattedErrorExtensions > {
269269 /**
270270 * A short, human-readable summary of the problem that **SHOULD NOT** change
271271 * from occurrence to occurrence of the problem, except for purposes of
@@ -288,7 +288,7 @@ export interface GraphQLFormattedError {
288288 * Reserved for implementors to extend the protocol however they see fit,
289289 * and hence there are no additional restrictions on its contents.
290290 */
291- readonly extensions ?: GraphQLFormattedErrorExtensions ;
291+ readonly extensions ?: TErrorExtensions ;
292292}
293293
294294/**
0 commit comments