3
3
GraphQLOutputType ,
4
4
SelectionSetNode ,
5
5
FieldNode ,
6
- DocumentNode ,
7
6
GraphQLResolveInfo ,
8
7
GraphQLFieldResolver ,
9
8
FragmentDefinitionNode ,
@@ -15,7 +14,7 @@ import {
15
14
16
15
import DataLoader from 'dataloader' ;
17
16
18
- import { Request , TypeMap , ExecutionResult } from '@graphql-tools/utils' ;
17
+ import { ExecutionParams , ExecutionResult , Executor , Request , Subscriber , TypeMap } from '@graphql-tools/utils' ;
19
18
20
19
import { Subschema } from './Subschema' ;
21
20
import { OBJECT_SUBSCHEMA_SYMBOL , FIELD_SUBSCHEMA_MAP_SYMBOL , UNPATHED_ERRORS_SYMBOL } from './symbols' ;
@@ -60,7 +59,7 @@ export interface DelegationContext {
60
59
export type DelegationBinding = ( delegationContext : DelegationContext ) => Array < Transform > ;
61
60
62
61
export interface IDelegateToSchemaOptions < TContext = Record < string , any > , TArgs = Record < string , any > > {
63
- schema : GraphQLSchema | SubschemaConfig ;
62
+ schema : GraphQLSchema | SubschemaConfig < any , any , any , TContext > ;
64
63
operationName ?: string ;
65
64
operation ?: OperationTypeNode ;
66
65
fieldName ?: string ;
@@ -79,7 +78,8 @@ export interface IDelegateToSchemaOptions<TContext = Record<string, any>, TArgs
79
78
binding ?: DelegationBinding ;
80
79
}
81
80
82
- export interface IDelegateRequestOptions extends Omit < IDelegateToSchemaOptions , 'info' > {
81
+ export interface IDelegateRequestOptions < TContext = Record < string , any > , TArgs = Record < string , any > >
82
+ extends Omit < IDelegateToSchemaOptions < TContext , TArgs > , 'info' > {
83
83
request : Request ;
84
84
info ?: GraphQLResolveInfo ;
85
85
}
@@ -107,7 +107,7 @@ export interface ICreateRequest {
107
107
fieldNodes ?: ReadonlyArray < FieldNode > ;
108
108
}
109
109
110
- export interface MergedTypeInfo {
110
+ export interface MergedTypeInfo < TContext = Record < string , any > > {
111
111
typeName : string ;
112
112
selectionSet ?: SelectionSetNode ;
113
113
targetSubschemas : Map < Subschema , Array < Subschema > > ;
@@ -116,67 +116,45 @@ export interface MergedTypeInfo {
116
116
typeMaps : Map < GraphQLSchema | SubschemaConfig , TypeMap > ;
117
117
selectionSets : Map < Subschema , SelectionSetNode > ;
118
118
fieldSelectionSets : Map < Subschema , Record < string , SelectionSetNode > > ;
119
- resolvers : Map < Subschema , MergedTypeResolver > ;
119
+ resolvers : Map < Subschema , MergedTypeResolver < TContext > > ;
120
120
}
121
121
122
- export interface ExecutionParams < TArgs = Record < string , any > , TContext = any > {
123
- document : DocumentNode ;
124
- variables ?: TArgs ;
125
- extensions ?: Record < string , any > ;
126
- context ?: TContext ;
127
- info ?: GraphQLResolveInfo ;
128
- }
129
-
130
- export type AsyncExecutor = <
131
- TReturn = Record < string , any > ,
132
- TArgs = Record < string , any > ,
133
- TContext = Record < string , any >
134
- > (
135
- params : ExecutionParams < TArgs , TContext >
136
- ) => Promise < ExecutionResult < TReturn > > ;
137
- export type SyncExecutor = < TReturn = Record < string , any > , TArgs = Record < string , any > , TContext = Record < string , any > > (
138
- params : ExecutionParams < TArgs , TContext >
139
- ) => ExecutionResult < TReturn > ;
140
- export type Executor = < TReturn = Record < string , any > , TArgs = Record < string , any > , TContext = Record < string , any > > (
141
- params : ExecutionParams < TArgs , TContext >
142
- ) => ExecutionResult < TReturn > | Promise < ExecutionResult < TReturn > > ;
143
- export type Subscriber = < TReturn = Record < string , any > , TArgs = Record < string , any > , TContext = Record < string , any > > (
144
- params : ExecutionParams < TArgs , TContext >
145
- ) => Promise < AsyncIterator < ExecutionResult < TReturn > > | ExecutionResult < TReturn > > ;
146
-
147
- export interface ICreateProxyingResolverOptions {
148
- subschemaConfig : SubschemaConfig ;
122
+ export interface ICreateProxyingResolverOptions < TContext = Record < string , any > > {
123
+ subschemaConfig : SubschemaConfig < any , any , any , TContext > ;
149
124
transformedSchema ?: GraphQLSchema ;
150
125
operation ?: OperationTypeNode ;
151
126
fieldName ?: string ;
152
127
}
153
128
154
- export type CreateProxyingResolverFn = ( options : ICreateProxyingResolverOptions ) => GraphQLFieldResolver < any , any > ;
129
+ export type CreateProxyingResolverFn < TContext = Record < string , any > > = (
130
+ options : ICreateProxyingResolverOptions < TContext >
131
+ ) => GraphQLFieldResolver < any , TContext > ;
155
132
156
133
export interface BatchingOptions < K = any , V = any , C = K > {
157
134
extensionsReducer ?: ( mergedExtensions : Record < string , any > , executionParams : ExecutionParams ) => Record < string , any > ;
158
135
dataLoaderOptions ?: DataLoader . Options < K , V , C > ;
159
136
}
160
137
161
- export interface SubschemaConfig < K = any , V = any , C = K > {
138
+ export interface SubschemaConfig < K = any , V = any , C = K , TContext = Record < string , any > > {
162
139
schema : GraphQLSchema ;
163
- createProxyingResolver ?: CreateProxyingResolverFn ;
140
+ createProxyingResolver ?: CreateProxyingResolverFn < TContext > ;
164
141
transforms ?: Array < Transform > ;
165
- merge ?: Record < string , MergedTypeConfig > ;
142
+ merge ?: Record < string , MergedTypeConfig < any , any , TContext > > ;
166
143
rootValue ?: Record < string , any > ;
167
- executor ?: Executor ;
168
- subscriber ?: Subscriber ;
144
+ executor ?: Executor < TContext > ;
145
+ subscriber ?: Subscriber < TContext > ;
169
146
batch ?: boolean ;
170
147
batchingOptions ?: BatchingOptions < K , V , C > ;
171
148
}
172
149
173
- export interface MergedTypeConfig < K = any , V = any > extends MergedTypeResolverOptions < K , V > {
150
+ export interface MergedTypeConfig < K = any , V = any , TContext = Record < string , any > >
151
+ extends MergedTypeResolverOptions < K , V > {
174
152
selectionSet ?: string ;
175
153
fields ?: Record < string , MergedFieldConfig > ;
176
154
computedFields ?: Record < string , { selectionSet ?: string } > ;
177
155
key ?: ( originalResult : any ) => K ;
178
156
canonical ?: boolean ;
179
- resolve ?: MergedTypeResolver ;
157
+ resolve ?: MergedTypeResolver < TContext > ;
180
158
}
181
159
182
160
export interface MergedTypeResolverOptions < K = any , V = any > {
@@ -192,26 +170,26 @@ export interface MergedFieldConfig {
192
170
canonical ?: boolean ;
193
171
}
194
172
195
- export type MergedTypeResolver = (
173
+ export type MergedTypeResolver < TContext = Record < string , any > > = (
196
174
originalResult : any ,
197
- context : Record < string , any > ,
175
+ context : TContext ,
198
176
info : GraphQLResolveInfo ,
199
- subschema : GraphQLSchema | SubschemaConfig ,
177
+ subschema : GraphQLSchema | SubschemaConfig < any , any , any , TContext > ,
200
178
selectionSet : SelectionSetNode ,
201
179
key ?: any
202
180
) => any ;
203
181
204
- export interface StitchingInfo {
205
- subschemaMap : Map < GraphQLSchema | SubschemaConfig , Subschema > ;
182
+ export interface StitchingInfo < TContext = Record < string , any > > {
183
+ subschemaMap : Map < GraphQLSchema | SubschemaConfig < any , any , any , TContext > , Subschema < any , any , any , TContext > > ;
206
184
selectionSetsByType : Record < string , SelectionSetNode > ;
207
185
selectionSetsByField : Record < string , Record < string , SelectionSetNode > > ;
208
186
dynamicSelectionSetsByField : Record < string , Record < string , Array < ( node : FieldNode ) => SelectionSetNode > > > ;
209
- mergedTypes : Record < string , MergedTypeInfo > ;
187
+ mergedTypes : Record < string , MergedTypeInfo < TContext > > ;
210
188
}
211
189
212
- export interface ExternalObject {
190
+ export interface ExternalObject < TContext = Record < string , any > > {
213
191
key : any ;
214
- [ OBJECT_SUBSCHEMA_SYMBOL ] : GraphQLSchema | SubschemaConfig ;
215
- [ FIELD_SUBSCHEMA_MAP_SYMBOL ] : Record < string , GraphQLSchema | SubschemaConfig > ;
192
+ [ OBJECT_SUBSCHEMA_SYMBOL ] : GraphQLSchema | SubschemaConfig < any , any , any , TContext > ;
193
+ [ FIELD_SUBSCHEMA_MAP_SYMBOL ] : Record < string , GraphQLSchema | SubschemaConfig < any , any , any , TContext > > ;
216
194
[ UNPATHED_ERRORS_SYMBOL ] : Array < GraphQLError > ;
217
195
}
0 commit comments