relay-compiler 11.0.2 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/bin/relay-compiler +92 -34
  2. package/codegen/NormalizationCodeGenerator.js.flow +1 -6
  3. package/codegen/createPrintRequireModuleDependency.js.flow +2 -4
  4. package/codegen/writeRelayGeneratedFile.js.flow +1 -1
  5. package/index.js +1 -1
  6. package/language/javascript/RelayFlowTypeTransformers.js.flow +3 -3
  7. package/lib/codegen/NormalizationCodeGenerator.js +2 -3
  8. package/lib/codegen/createPrintRequireModuleDependency.js +2 -2
  9. package/lib/codegen/writeRelayGeneratedFile.js +1 -1
  10. package/lib/transforms/ClientExtensionsTransform.js +1 -0
  11. package/lib/transforms/ConnectionTransform.js +6 -2
  12. package/lib/transforms/DeclarativeConnectionMutationTransform.js +5 -2
  13. package/lib/transforms/DeferStreamTransform.js +2 -1
  14. package/lib/transforms/DisallowIdAsAlias.js +2 -1
  15. package/lib/transforms/FieldHandleTransform.js +3 -1
  16. package/lib/transforms/FlattenTransform.js +3 -1
  17. package/lib/transforms/GenerateIDFieldTransform.js +3 -1
  18. package/lib/transforms/GenerateTypeNameTransform.js +9 -3
  19. package/lib/transforms/InlineDataFragmentTransform.js +6 -2
  20. package/lib/transforms/InlineFragmentsTransform.js +4 -2
  21. package/lib/transforms/MaskTransform.js +7 -3
  22. package/lib/transforms/MatchTransform.js +5 -1
  23. package/lib/transforms/ReactFlightComponentTransform.js +3 -0
  24. package/lib/transforms/RelayDirectiveTransform.js +3 -1
  25. package/lib/transforms/RequiredFieldTransform.js +6 -2
  26. package/lib/transforms/SkipClientExtensionsTransform.js +3 -0
  27. package/lib/transforms/SkipHandleFieldTransform.js +1 -0
  28. package/lib/transforms/SkipRedundantNodesTransform.js +2 -1
  29. package/lib/transforms/SplitModuleImportTransform.js +4 -1
  30. package/lib/transforms/TestOperationTransform.js +1 -0
  31. package/lib/transforms/ValidateRequiredArgumentsTransform.js +5 -1
  32. package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +4 -1
  33. package/lib/util/areEqualArgValues.js +2 -1
  34. package/package.json +7 -7
  35. package/relay-compiler.js +3 -3
  36. package/relay-compiler.min.js +3 -3
  37. package/transforms/ClientExtensionsTransform.js.flow +1 -0
  38. package/transforms/ConnectionTransform.js.flow +4 -0
  39. package/transforms/DeclarativeConnectionMutationTransform.js.flow +3 -0
  40. package/transforms/DeferStreamTransform.js.flow +1 -0
  41. package/transforms/DisallowIdAsAlias.js.flow +1 -0
  42. package/transforms/FieldHandleTransform.js.flow +2 -0
  43. package/transforms/FlattenTransform.js.flow +2 -0
  44. package/transforms/GenerateIDFieldTransform.js.flow +2 -0
  45. package/transforms/GenerateTypeNameTransform.js.flow +6 -0
  46. package/transforms/InlineDataFragmentTransform.js.flow +4 -0
  47. package/transforms/InlineFragmentsTransform.js.flow +2 -0
  48. package/transforms/MaskTransform.js.flow +4 -0
  49. package/transforms/MatchTransform.js.flow +4 -0
  50. package/transforms/ReactFlightComponentTransform.js.flow +3 -0
  51. package/transforms/RelayDirectiveTransform.js.flow +2 -0
  52. package/transforms/RequiredFieldTransform.js.flow +4 -0
  53. package/transforms/SkipClientExtensionsTransform.js.flow +3 -0
  54. package/transforms/SkipHandleFieldTransform.js.flow +1 -0
  55. package/transforms/SkipRedundantNodesTransform.js.flow +1 -0
  56. package/transforms/SplitModuleImportTransform.js.flow +3 -0
  57. package/transforms/TestOperationTransform.js.flow +1 -0
  58. package/transforms/ValidateRequiredArgumentsTransform.js.flow +4 -0
  59. package/transforms/ValidateServerOnlyDirectivesTransform.js.flow +3 -0
  60. package/util/areEqualArgValues.js.flow +1 -0
@@ -31,6 +31,7 @@ function clientExtensionTransform(context: CompilerContext): CompilerContext {
31
31
  }
32
32
 
33
33
  function traverseDefinition<T: Definition>(node: T): T {
34
+ // $FlowFixMe[incompatible-use]
34
35
  const compilerContext: CompilerContext = this.getContext();
35
36
 
36
37
  const schema = compilerContext.getSchema();
@@ -123,6 +123,7 @@ function visitFragmentOrRoot<N: Fragment | Root>(
123
123
  node: N,
124
124
  options: Options,
125
125
  ): ?N {
126
+ // $FlowFixMe[incompatible-use]
126
127
  const transformedNode = this.traverse(node, options);
127
128
  const connectionMetadata = options.connectionMetadata;
128
129
  if (connectionMetadata.length) {
@@ -141,6 +142,7 @@ function visitFragmentOrRoot<N: Fragment | Root>(
141
142
  * @internal
142
143
  */
143
144
  function visitLinkedField(field: LinkedField, options: Options): LinkedField {
145
+ // $FlowFixMe[incompatible-use]
144
146
  const context: CompilerContext = this.getContext();
145
147
  const schema = context.getSchema();
146
148
 
@@ -148,6 +150,7 @@ function visitLinkedField(field: LinkedField, options: Options): LinkedField {
148
150
 
149
151
  const isPlural = schema.isList(nullableType);
150
152
  const path = options.path.concat(isPlural ? null : field.alias || field.name);
153
+ // $FlowFixMe[incompatible-use]
151
154
  let transformedField: LinkedField = this.traverse(field, {
152
155
  ...options,
153
156
  path,
@@ -198,6 +201,7 @@ function visitLinkedField(field: LinkedField, options: Options): LinkedField {
198
201
  const {direction} = connectionMetadata;
199
202
  if (direction != null) {
200
203
  const selections = transformConnectionSelections(
204
+ // $FlowFixMe[incompatible-use]
201
205
  this.getContext(),
202
206
  transformedField,
203
207
  schema.assertCompositeType(nullableType),
@@ -94,6 +94,7 @@ function visitScalarField(field: ScalarField): ScalarField {
94
94
  return field;
95
95
  }
96
96
 
97
+ // $FlowFixMe[incompatible-use]
97
98
  const schema = this.getContext().getSchema();
98
99
 
99
100
  if (!schema.isId(schema.getRawType(field.type))) {
@@ -126,6 +127,7 @@ function visitScalarField(field: ScalarField): ScalarField {
126
127
  }
127
128
 
128
129
  function visitLinkedField(field: LinkedField): LinkedField {
130
+ // $FlowFixMe[incompatible-use]
129
131
  const transformedField = this.traverse(field);
130
132
  const deleteDirective = transformedField.directives.find(
131
133
  directive => directive.name === DELETE_RECORD,
@@ -162,6 +164,7 @@ function visitLinkedField(field: LinkedField): LinkedField {
162
164
  [targetDirective.loc],
163
165
  );
164
166
  }
167
+ // $FlowFixMe[incompatible-use]
165
168
  const schema = this.getContext().getSchema();
166
169
  if (edgeDirective) {
167
170
  const fieldType = schema.getRawType(transformedField.type);
@@ -156,6 +156,7 @@ function visitScalarField(field: ScalarField, state: State): ScalarField {
156
156
  [streamDirective.loc],
157
157
  );
158
158
  }
159
+ // $FlowFixMe[incompatible-use]
159
160
  return this.traverse(field, state);
160
161
  }
161
162
 
@@ -28,6 +28,7 @@ function visitField<T: ScalarField | LinkedField>(field: T): T {
28
28
  [field.loc],
29
29
  );
30
30
  }
31
+ // $FlowFixMe[incompatible-use]
31
32
  return this.traverse(field);
32
33
  }
33
34
 
@@ -34,6 +34,7 @@ function fieldHandleTransform(context: CompilerContext): CompilerContext {
34
34
  * @internal
35
35
  */
36
36
  function visitField<F: LinkedField | ScalarField>(field: F): F {
37
+ // $FlowFixMe[incompatible-use]
37
38
  const nextField = field.kind === 'LinkedField' ? this.traverse(field) : field;
38
39
  const handles = nextField.handles;
39
40
  if (!handles || !handles.length) {
@@ -46,6 +47,7 @@ function visitField<F: LinkedField | ScalarField>(field: F): F {
46
47
  '"handle" property, got `%s`.',
47
48
  handles.join(', '),
48
49
  );
50
+ // $FlowFixMe[incompatible-use]
49
51
  const context: CompilerContext = this.getContext();
50
52
  const schema = context.getSchema();
51
53
  const alias = nextField.alias;
@@ -74,6 +74,7 @@ function flattenTransformImpl(
74
74
 
75
75
  function memoizedFlattenSelection(cache: Map<Node, Map<?TypeID, any>>) {
76
76
  return function flattenSelectionsFn<T: Node>(node: T, state: State): T {
77
+ // $FlowFixMe[incompatible-use]
77
78
  const context: CompilerContext = this.getContext();
78
79
  let nodeCache = cache.get(node);
79
80
  if (nodeCache == null) {
@@ -117,6 +118,7 @@ function memoizedFlattenSelection(cache: Map<Node, Map<?TypeID, any>>) {
117
118
  ? {...node, selections: Array.from(nextSelections.values())}
118
119
  : node;
119
120
  state.parentType = type;
121
+ // $FlowFixMe[incompatible-use]
120
122
  const deeplyFlattenedNode = this.traverse(flattenedNode, state);
121
123
  state.parentType = parentType;
122
124
  nodeCache.set(parentType, deeplyFlattenedNode);
@@ -77,6 +77,7 @@ function generateIDFieldTransform(context: CompilerContext): CompilerContext {
77
77
  }
78
78
 
79
79
  function visitLinkedField(field: LinkedField, state: State): LinkedField {
80
+ // $FlowFixMe[incompatible-use]
80
81
  const transformedNode = this.traverse(field, state);
81
82
 
82
83
  // If the field already has an unaliased `id` field, do nothing
@@ -84,6 +85,7 @@ function visitLinkedField(field: LinkedField, state: State): LinkedField {
84
85
  return transformedNode;
85
86
  }
86
87
 
88
+ // $FlowFixMe[incompatible-use]
87
89
  const context: CompilerContext = this.getContext();
88
90
  const schema = context.getSchema();
89
91
  const unmodifiedType = schema.assertCompositeType(
@@ -69,8 +69,10 @@ function generateTypeNameTransform(context: CompilerContext): CompilerContext {
69
69
  }
70
70
 
71
71
  function visitFragment(fragment: Fragment, state: State): Fragment {
72
+ // $FlowFixMe[incompatible-use]
72
73
  const schema: Schema = this.getContext().getSchema();
73
74
  const rawType = schema.getRawType(fragment.type);
75
+ // $FlowFixMe[incompatible-use]
74
76
  let transformedNode = (this.traverse(fragment, state): Fragment);
75
77
  const isClientType = !schema.isServerType(rawType);
76
78
  if (!isClientType && schema.isAbstractType(rawType)) {
@@ -102,12 +104,14 @@ function visitInlineFragment(
102
104
  fragment: InlineFragment,
103
105
  state: State,
104
106
  ): InlineFragment {
107
+ // $FlowFixMe[incompatible-use]
105
108
  const schema: Schema = this.getContext().getSchema();
106
109
  let transformedNode = cache.get(fragment);
107
110
  if (transformedNode != null && transformedNode.kind === 'InlineFragment') {
108
111
  return transformedNode;
109
112
  }
110
113
  const rawType = schema.getRawType(fragment.typeCondition);
114
+ // $FlowFixMe[incompatible-use]
111
115
  transformedNode = (this.traverse(fragment, state): InlineFragment);
112
116
  const isClientType = !schema.isServerType(rawType);
113
117
  if (!isClientType && schema.isAbstractType(rawType)) {
@@ -137,11 +141,13 @@ function visitInlineFragment(
137
141
  }
138
142
 
139
143
  function visitLinkedField(field: LinkedField, state: State): LinkedField {
144
+ // $FlowFixMe[incompatible-use]
140
145
  const schema: Schema = this.getContext().getSchema();
141
146
  let transformedNode = cache.get(field);
142
147
  if (transformedNode != null && transformedNode.kind === 'LinkedField') {
143
148
  return transformedNode;
144
149
  }
150
+ // $FlowFixMe[incompatible-use]
145
151
  transformedNode = (this.traverse(field, state): LinkedField);
146
152
  if (
147
153
  schema.isAbstractType(schema.getRawType(transformedNode.type)) &&
@@ -44,6 +44,7 @@ function inlineDataFragmentTransform(
44
44
  }
45
45
 
46
46
  function visitFragment(fragment: Fragment): Fragment {
47
+ // $FlowFixMe[incompatible-use]
47
48
  const transformedFragment = this.traverse(fragment);
48
49
 
49
50
  const inlineDirective = transformedFragment.directives.find(
@@ -67,10 +68,12 @@ function visitFragment(fragment: Fragment): Fragment {
67
68
  function visitFragmentSpread(
68
69
  fragmentSpread: FragmentSpread,
69
70
  ): FragmentSpread | InlineDataFragmentSpread {
71
+ // $FlowFixMe[incompatible-use]
70
72
  const transformedFragmentSpread: FragmentSpread = this.traverse(
71
73
  fragmentSpread,
72
74
  );
73
75
 
76
+ // $FlowFixMe[incompatible-use]
74
77
  const context: CompilerContext = this.getContext();
75
78
  const fragment = context.get(transformedFragmentSpread.name);
76
79
  if (
@@ -99,6 +102,7 @@ function visitFragmentSpread(
99
102
  );
100
103
  }
101
104
 
105
+ // $FlowFixMe[incompatible-use]
102
106
  const transformedFragment = (this.visit(fragment): Fragment);
103
107
 
104
108
  return ({
@@ -48,6 +48,7 @@ function fragmentSpreadVisitor(cache: FragmentVisitorCache): FragmentVisitor {
48
48
  'arguments. Use the `ApplyFragmentArgumentTransform` before flattening',
49
49
  fragmentSpread.name,
50
50
  );
51
+ // $FlowFixMe[incompatible-use]
51
52
  const fragment: Fragment = this.getContext().getFragment(
52
53
  fragmentSpread.name,
53
54
  fragmentSpread.loc,
@@ -60,6 +61,7 @@ function fragmentSpreadVisitor(cache: FragmentVisitorCache): FragmentVisitor {
60
61
  selections: fragment.selections,
61
62
  typeCondition: fragment.type,
62
63
  };
64
+ // $FlowFixMe[incompatible-use]
63
65
  traverseResult = this.traverse(result);
64
66
  cache.set(fragmentSpread, traverseResult);
65
67
  return traverseResult;
@@ -47,11 +47,13 @@ function maskTransform(context: CompilerContext): CompilerContext {
47
47
  }
48
48
 
49
49
  function visitFragment(fragment: Fragment, state: State): Fragment {
50
+ // $FlowFixMe[incompatible-use]
50
51
  const result = this.traverse(fragment, state);
51
52
  if (state.reachableArguments.length === 0) {
52
53
  return result;
53
54
  }
54
55
  const joinedArgumentDefinitions = joinArgumentDefinitions(
56
+ // $FlowFixMe[incompatible-use]
55
57
  this.getContext().getSchema(),
56
58
  fragment,
57
59
  state.reachableArguments,
@@ -76,6 +78,7 @@ function visitFragmentSpread(
76
78
  'arguments. Use the `ApplyFragmentArgumentTransform` before flattening',
77
79
  fragmentSpread.name,
78
80
  );
81
+ // $FlowFixMe[incompatible-use]
79
82
  const context = this.getContext();
80
83
  const fragment: Fragment = context.getFragment(fragmentSpread.name);
81
84
  const result: InlineFragment = {
@@ -111,6 +114,7 @@ function visitFragmentSpread(
111
114
  for (const argDef of fragment.argumentDefinitions) {
112
115
  state.reachableArguments.push(argDef);
113
116
  }
117
+ // $FlowFixMe[incompatible-use]
114
118
  return this.traverse(result, state);
115
119
  }
116
120
 
@@ -91,6 +91,7 @@ function visitInlineFragment(
91
91
  node: InlineFragment,
92
92
  state: State,
93
93
  ): InlineFragment {
94
+ // $FlowFixMe[incompatible-use]
94
95
  return this.traverse(node, {
95
96
  ...state,
96
97
  parentType: node.typeCondition,
@@ -98,6 +99,7 @@ function visitInlineFragment(
98
99
  }
99
100
 
100
101
  function visitScalarField(field: ScalarField): ScalarField {
102
+ // $FlowFixMe[incompatible-use]
101
103
  const context: CompilerContext = this.getContext();
102
104
  const schema = context.getSchema();
103
105
 
@@ -125,6 +127,7 @@ function visitScalarField(field: ScalarField): ScalarField {
125
127
  }
126
128
 
127
129
  function visitLinkedField(node: LinkedField, state: State): LinkedField {
130
+ // $FlowFixMe[incompatible-use]
128
131
  const context: CompilerContext = this.getContext();
129
132
  const schema = context.getSchema();
130
133
 
@@ -153,6 +156,7 @@ function visitLinkedField(node: LinkedField, state: State): LinkedField {
153
156
  }
154
157
 
155
158
  state.path.push(node);
159
+ // $FlowFixMe[incompatible-use]
156
160
  const transformedNode: LinkedField = this.traverse(node, {
157
161
  ...state,
158
162
  moduleKey,
@@ -70,6 +70,7 @@ function reactFlightComponentTransform(
70
70
  }
71
71
 
72
72
  function visitInlineFragment(fragment, state) {
73
+ // $FlowFixMe[incompatible-use]
73
74
  return this.traverse(fragment, {
74
75
  parentType: fragment.typeCondition ?? state.parentType,
75
76
  types: state.types,
@@ -77,11 +78,13 @@ function visitInlineFragment(fragment, state) {
77
78
  }
78
79
 
79
80
  function visitLinkedField(field, state) {
81
+ // $FlowFixMe[incompatible-use]
80
82
  return this.traverse(field, {parentType: field.type, types: state.types});
81
83
  }
82
84
 
83
85
  function visitScalarField(field: ScalarField, state: State): ScalarField {
84
86
  // use the return type to quickly determine if this is a flight field
87
+ // $FlowFixMe[incompatible-use]
85
88
  const schema = this.getContext().getSchema();
86
89
  if (schema.getRawType(field.type) !== state.types.componentType) {
87
90
  return field;
@@ -49,10 +49,12 @@ function visitRelayMetadata<T: Fragment | FragmentSpread>(
49
49
  return function(node) {
50
50
  const relayDirective = node.directives.find(({name}) => name === RELAY);
51
51
  if (!relayDirective) {
52
+ // $FlowFixMe[incompatible-use]
52
53
  return this.traverse(node);
53
54
  }
54
55
  const argValues = getLiteralArgumentValues(relayDirective.args);
55
56
  const metadata = metadataFn(argValues);
57
+ // $FlowFixMe[incompatible-use]
56
58
  return this.traverse({
57
59
  ...node,
58
60
  directives: node.directives.filter(
@@ -95,10 +95,12 @@ function requiredFieldTransform(context: CompilerContext): CompilerContext {
95
95
  }
96
96
 
97
97
  function visitFragment(fragment: Fragment, state: State) {
98
+ // $FlowFixMe[incompatible-use]
98
99
  return addChildrenCanBubbleMetadata(this.traverse(fragment, state), state);
99
100
  }
100
101
 
101
102
  function visitRoot(root: Root, state: State) {
103
+ // $FlowFixMe[incompatible-use]
102
104
  return addChildrenCanBubbleMetadata(this.traverse(root, state), state);
103
105
  }
104
106
 
@@ -110,6 +112,7 @@ function visitInlineFragment(fragment: InlineFragment, state: State) {
110
112
  state.parentAbstractInlineFragment ??
111
113
  getAbstractInlineFragment(fragment, state.schema);
112
114
 
115
+ // $FlowFixMe[incompatible-use]
113
116
  return this.traverse(fragment, {...state, parentAbstractInlineFragment});
114
117
  }
115
118
 
@@ -148,6 +151,7 @@ function visitLinkedField(field: LinkedField, state: State): LinkedField {
148
151
  parentAbstractInlineFragment: null,
149
152
  };
150
153
 
154
+ // $FlowFixMe[incompatible-use]
151
155
  let newField = this.traverse(field, newState);
152
156
 
153
157
  const pathName = path.join('.');
@@ -28,14 +28,17 @@ function skipClientExtensionTransform(
28
28
  }
29
29
 
30
30
  function visitFragment(node: Fragment): ?Fragment {
31
+ // $FlowFixMe[incompatible-use]
31
32
  const context: CompilerContext = this.getContext();
32
33
  if (context.getSchema().isServerType(node.type)) {
34
+ // $FlowFixMe[incompatible-use]
33
35
  return this.traverse(node);
34
36
  }
35
37
  return null;
36
38
  }
37
39
 
38
40
  function vistFragmentSpread(node: FragmentSpread): ?FragmentSpread {
41
+ // $FlowFixMe[incompatible-use]
39
42
  const context: CompilerContext = this.getContext();
40
43
  const fragment = context.getFragment(node.name, node.loc);
41
44
  const isServer = context.getSchema().isServerType(fragment.type);
@@ -29,6 +29,7 @@ function skipHandleFieldTransform(context: CompilerContext): CompilerContext {
29
29
  }
30
30
 
31
31
  function visitField<F: Field>(field: F): ?F {
32
+ // $FlowFixMe[incompatible-use]
32
33
  const transformedNode = this.traverse(field);
33
34
  if (transformedNode.handles) {
34
35
  return {
@@ -137,6 +137,7 @@ function skipRedundantNodesTransform(
137
137
  let cache = new Map();
138
138
  function visitNode<T: Fragment | Root | SplitOperation>(node: T): ?T {
139
139
  cache = new Map();
140
+ // $FlowFixMe[incompatible-use]
140
141
  const context: CompilerContext = this.getContext();
141
142
  return transformNode(context.getSchema(), node, new IMap()).node;
142
143
  }
@@ -51,6 +51,7 @@ function splitMatchTransform(context: CompilerContext): CompilerContext {
51
51
  }
52
52
 
53
53
  function visitLinkedField(field: LinkedField, state: State): LinkedField {
54
+ // $FlowFixMe[incompatible-use]
54
55
  return this.traverse(field, {
55
56
  parentType: field.type,
56
57
  splitOperations: state.splitOperations,
@@ -61,6 +62,7 @@ function visitInlineFragment(
61
62
  fragment: InlineFragment,
62
63
  state: State,
63
64
  ): InlineFragment {
65
+ // $FlowFixMe[incompatible-use]
64
66
  return this.traverse(fragment, {
65
67
  parentType: fragment.typeCondition,
66
68
  splitOperations: state.splitOperations,
@@ -77,6 +79,7 @@ function visitModuleImport(node: ModuleImport, state: State): ModuleImport {
77
79
  createdSplitOperation.parentSources.add(node.sourceDocument);
78
80
  return node;
79
81
  }
82
+ // $FlowFixMe[incompatible-use]
80
83
  const transformedNode = this.traverse(node, state);
81
84
  const splitOperation: SplitOperation = {
82
85
  kind: 'SplitOperation',
@@ -57,6 +57,7 @@ function getTypeDetails(schema: Schema, fieldType: TypeID): TypeDetails {
57
57
  }
58
58
 
59
59
  function visitRoot(node: Root) {
60
+ // $FlowFixMe[incompatible-use]
60
61
  const schema: Schema = this.getContext().getSchema();
61
62
  const testDirective = node.directives.find(
62
63
  directive => directive.name === 'relay_test_operation',
@@ -51,6 +51,7 @@ function validateRequiredArguments(context: CompilerContext): CompilerContext {
51
51
  }
52
52
 
53
53
  function visitDirective(node: Directive, {rootNode}: State): void {
54
+ // $FlowFixMe[incompatible-use]
54
55
  const context: CompilerContext = this.getContext();
55
56
  const directiveDef = context.getSchema().getDirective(node.name);
56
57
  if (directiveDef == null) {
@@ -65,6 +66,7 @@ function visitDirective(node: Directive, {rootNode}: State): void {
65
66
  }
66
67
 
67
68
  function visitInlineFragment(fragment, {rootNode}: State): void {
69
+ // $FlowFixMe[incompatible-use]
68
70
  this.traverse(fragment, {
69
71
  rootNode,
70
72
  parentType: fragment.typeCondition,
@@ -72,6 +74,7 @@ function visitInlineFragment(fragment, {rootNode}: State): void {
72
74
  }
73
75
 
74
76
  function visitField(node: Field, {parentType, rootNode}: State): void {
77
+ // $FlowFixMe[incompatible-use]
75
78
  const context: CompilerContext = this.getContext();
76
79
  const schema = context.getSchema();
77
80
  const definition = getFieldDefinitionStrict(schema, parentType, node.name);
@@ -94,6 +97,7 @@ function visitField(node: Field, {parentType, rootNode}: State): void {
94
97
  rootNode,
95
98
  );
96
99
  }
100
+ // $FlowFixMe[incompatible-use]
97
101
  this.traverse(node, {
98
102
  rootNode,
99
103
  parentType: node.type,
@@ -61,12 +61,14 @@ function stopVisit() {}
61
61
  // Only visits selections as an optimization to not look at arguments
62
62
  function visitLinkedField(node: LinkedField, state: State): void {
63
63
  for (const selection of node.selections) {
64
+ // $FlowFixMe[incompatible-use]
64
65
  this.visit(selection, state);
65
66
  }
66
67
  }
67
68
 
68
69
  function visitClientExtension(node: ClientExtension, state: State): void {
69
70
  for (const selection of node.selections) {
71
+ // $FlowFixMe[incompatible-use]
70
72
  this.visit(selection, {
71
73
  rootClientSelection: selection,
72
74
  });
@@ -92,6 +94,7 @@ function visitTransformedDirective(node: Defer | Stream, state: State): void {
92
94
  : null,
93
95
  );
94
96
  }
97
+ // $FlowFixMe[incompatible-use]
95
98
  this.traverse(node, state);
96
99
  }
97
100
 
@@ -47,6 +47,7 @@ function eq(a: any, b: any, aStack: Array<any>, bStack: Array<any>): boolean {
47
47
  if (typeof a !== 'object' || typeof b !== 'object') {
48
48
  return false;
49
49
  }
50
+ // $FlowFixMe[method-unbinding] added when improving typing for this parameters
50
51
  const objToStr = Object.prototype.toString;
51
52
  const className = objToStr.call(a);
52
53
  if (className !== objToStr.call(b)) {