|
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