|
1 | 1 | import { AccumulatorMap } from '../jsutils/AccumulatorMap.js'; |
2 | | -import type { ObjMap } from '../jsutils/ObjMap.js'; |
| 2 | +import type { ObjMap, ReadOnlyObjMap } from '../jsutils/ObjMap.js'; |
3 | 3 |
|
4 | 4 | import type { |
5 | 5 | DirectiveNode, |
@@ -35,10 +35,20 @@ export interface DeferUsage { |
35 | 35 | parentDeferUsage: DeferUsage | undefined; |
36 | 36 | } |
37 | 37 |
|
| 38 | +export interface FragmentVariableValues { |
| 39 | + readonly sources: ReadOnlyObjMap<FragmentVariableValueSource>; |
| 40 | + readonly coerced: ReadOnlyObjMap<unknown>; |
| 41 | +} |
| 42 | + |
| 43 | +interface FragmentVariableValueSource { |
| 44 | + readonly signature: GraphQLVariableSignature; |
| 45 | + readonly value?: unknown; |
| 46 | +} |
| 47 | + |
38 | 48 | export interface FieldDetails { |
39 | 49 | node: FieldNode; |
40 | 50 | deferUsage?: DeferUsage | undefined; |
41 | | - fragmentVariableValues?: VariableValues | undefined; |
| 51 | + fragmentVariableValues?: FragmentVariableValues | undefined; |
42 | 52 | } |
43 | 53 |
|
44 | 54 | export type FieldDetailsList = ReadonlyArray<FieldDetails>; |
@@ -168,7 +178,7 @@ function collectFieldsImpl( |
168 | 178 | groupedFieldSet: AccumulatorMap<string, FieldDetails>, |
169 | 179 | newDeferUsages: Array<DeferUsage>, |
170 | 180 | deferUsage?: DeferUsage, |
171 | | - fragmentVariableValues?: VariableValues, |
| 181 | + fragmentVariableValues?: FragmentVariableValues, |
172 | 182 | ): void { |
173 | 183 | const { |
174 | 184 | schema, |
@@ -318,7 +328,7 @@ function collectFieldsImpl( |
318 | 328 | */ |
319 | 329 | function getDeferUsage( |
320 | 330 | variableValues: VariableValues, |
321 | | - fragmentVariableValues: VariableValues | undefined, |
| 331 | + fragmentVariableValues: FragmentVariableValues | undefined, |
322 | 332 | node: FragmentSpreadNode | InlineFragmentNode, |
323 | 333 | parentDeferUsage: DeferUsage | undefined, |
324 | 334 | ): DeferUsage | undefined { |
@@ -351,7 +361,7 @@ function shouldIncludeNode( |
351 | 361 | context: CollectFieldsContext, |
352 | 362 | node: FragmentSpreadNode | FieldNode | InlineFragmentNode, |
353 | 363 | variableValues: VariableValues, |
354 | | - fragmentVariableValues: VariableValues | undefined, |
| 364 | + fragmentVariableValues: FragmentVariableValues | undefined, |
355 | 365 | ): boolean { |
356 | 366 | const skipDirectiveNode = node.directives?.find( |
357 | 367 | (directive) => directive.name.value === GraphQLSkipDirective.name, |
|
0 commit comments