relay-compiler 10.0.1 → 10.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. package/bin/relay-compiler +1538 -975
  2. package/codegen/NormalizationCodeGenerator.js.flow +12 -4
  3. package/codegen/ReaderCodeGenerator.js.flow +38 -3
  4. package/codegen/RelayFileWriter.js.flow +2 -0
  5. package/codegen/writeRelayGeneratedFile.js.flow +1 -1
  6. package/core/ASTCache.js.flow +1 -0
  7. package/core/CompilerContext.js.flow +1 -0
  8. package/core/CompilerError.js.flow +6 -1
  9. package/core/IR.js.flow +0 -1
  10. package/core/IRPrinter.js.flow +3 -8
  11. package/core/RelayIRTransforms.js.flow +7 -0
  12. package/core/Schema.js.flow +55 -1
  13. package/index.js +1 -1
  14. package/language/javascript/FindGraphQLTags.js.flow +2 -97
  15. package/language/javascript/RelayFlowBabelFactories.js.flow +11 -15
  16. package/language/javascript/RelayFlowGenerator.js.flow +76 -19
  17. package/language/javascript/RelayFlowTypeTransformers.js.flow +4 -4
  18. package/lib/bin/RelayCompilerMain.js +8 -14
  19. package/lib/codegen/CodegenRunner.js +5 -9
  20. package/lib/codegen/NormalizationCodeGenerator.js +21 -13
  21. package/lib/codegen/ReaderCodeGenerator.js +44 -13
  22. package/lib/codegen/RelayFileWriter.js +3 -7
  23. package/lib/codegen/compileRelayArtifacts.js +4 -8
  24. package/lib/codegen/sortObjectByKey.js +3 -5
  25. package/lib/codegen/writeRelayGeneratedFile.js +3 -7
  26. package/lib/core/ASTCache.js +1 -0
  27. package/lib/core/CompilerContext.js +1 -0
  28. package/lib/core/CompilerError.js +8 -8
  29. package/lib/core/IRPrinter.js +3 -4
  30. package/lib/core/IRTransformer.js +3 -7
  31. package/lib/core/RelayGraphQLEnumsGenerator.js +3 -7
  32. package/lib/core/RelayIRTransforms.js +10 -4
  33. package/lib/core/RelayParser.js +7 -15
  34. package/lib/core/Schema.js +50 -13
  35. package/lib/core/getFieldDefinition.js +3 -5
  36. package/lib/core/inferRootArgumentDefinitions.js +6 -14
  37. package/lib/language/javascript/FindGraphQLTags.js +3 -69
  38. package/lib/language/javascript/RelayFlowBabelFactories.js +5 -5
  39. package/lib/language/javascript/RelayFlowGenerator.js +85 -34
  40. package/lib/runner/Artifacts.js +13 -17
  41. package/lib/runner/BufferedFilesystem.js +6 -10
  42. package/lib/runner/GraphQLASTNodeGroup.js +10 -14
  43. package/lib/runner/GraphQLNodeMap.js +3 -7
  44. package/lib/runner/Sources.js +27 -17
  45. package/lib/runner/StrictMap.js +5 -7
  46. package/lib/runner/getChangedNodeNames.js +6 -8
  47. package/lib/transforms/ApplyFragmentArgumentTransform.js +16 -25
  48. package/lib/transforms/ClientExtensionsTransform.js +8 -9
  49. package/lib/transforms/ConnectionTransform.js +9 -14
  50. package/lib/transforms/DeclarativeConnectionMutationTransform.js +115 -64
  51. package/lib/transforms/DeferStreamTransform.js +3 -7
  52. package/lib/transforms/DisallowTypenameOnRoot.js +3 -5
  53. package/lib/transforms/FieldHandleTransform.js +3 -7
  54. package/lib/transforms/FilterCompilerDirectivesTransform.js +29 -0
  55. package/lib/transforms/FlattenTransform.js +14 -17
  56. package/lib/transforms/GenerateIDFieldTransform.js +3 -7
  57. package/lib/transforms/GenerateTypeNameTransform.js +4 -8
  58. package/lib/transforms/InlineDataFragmentTransform.js +3 -7
  59. package/lib/transforms/MaskTransform.js +4 -12
  60. package/lib/transforms/MatchTransform.js +8 -8
  61. package/lib/transforms/ReactFlightComponentTransform.js +158 -0
  62. package/lib/transforms/RefetchableFragmentTransform.js +5 -9
  63. package/lib/transforms/RelayDirectiveTransform.js +3 -7
  64. package/lib/transforms/RequiredFieldTransform.js +369 -0
  65. package/lib/transforms/SkipHandleFieldTransform.js +2 -6
  66. package/lib/transforms/SkipRedundantNodesTransform.js +4 -6
  67. package/lib/transforms/SkipUnreachableNodeTransform.js +2 -6
  68. package/lib/transforms/SkipUnusedVariablesTransform.js +4 -12
  69. package/lib/transforms/TestOperationTransform.js +3 -7
  70. package/lib/transforms/ValidateGlobalVariablesTransform.js +4 -6
  71. package/lib/transforms/ValidateRequiredArgumentsTransform.js +3 -5
  72. package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +4 -6
  73. package/lib/transforms/ValidateUnusedVariablesTransform.js +4 -6
  74. package/lib/transforms/query-generators/FetchableQueryGenerator.js +2 -6
  75. package/lib/transforms/query-generators/NodeQueryGenerator.js +2 -6
  76. package/lib/transforms/query-generators/index.js +3 -5
  77. package/lib/transforms/query-generators/utils.js +3 -5
  78. package/package.json +3 -3
  79. package/relay-compiler.js +4 -4
  80. package/relay-compiler.min.js +4 -4
  81. package/runner/Sources.js.flow +14 -0
  82. package/transforms/ClientExtensionsTransform.js.flow +3 -0
  83. package/transforms/ConnectionTransform.js.flow +0 -1
  84. package/transforms/DeclarativeConnectionMutationTransform.js.flow +140 -48
  85. package/transforms/FieldHandleTransform.js.flow +0 -1
  86. package/transforms/FilterCompilerDirectivesTransform.js.flow +33 -0
  87. package/transforms/FlattenTransform.js.flow +3 -2
  88. package/transforms/MatchTransform.js.flow +6 -0
  89. package/transforms/ReactFlightComponentTransform.js.flow +195 -0
  90. package/transforms/RequiredFieldTransform.js.flow +415 -0
  91. package/transforms/SkipRedundantNodesTransform.js.flow +3 -0
@@ -18,7 +18,7 @@ var t = require('@babel/types');
18
18
  * type NAME = any;
19
19
  */
20
20
  function anyTypeAlias(name) {
21
- return t.typeAlias(t.identifier(name), null, t.anyTypeAnnotation());
21
+ return t.typeAlias(t.identifier(name), undefined, t.anyTypeAnnotation());
22
22
  }
23
23
  /**
24
24
  * {|
@@ -51,7 +51,7 @@ function inexactObjectTypeAnnotation(props) {
51
51
 
52
52
 
53
53
  function exportType(name, type) {
54
- return t.exportNamedDeclaration(t.typeAlias(t.identifier(name), null, type), [], null);
54
+ return t.exportNamedDeclaration(t.typeAlias(t.identifier(name), undefined, type), [], undefined);
55
55
  }
56
56
  /**
57
57
  * export type {A, B, C}
@@ -59,9 +59,9 @@ function exportType(name, type) {
59
59
 
60
60
 
61
61
  function exportTypes(names) {
62
- var res = t.exportNamedDeclaration(null, names.map(function (name) {
62
+ var res = t.exportNamedDeclaration(undefined, names.map(function (name) {
63
63
  return t.exportSpecifier(t.identifier(name), t.identifier(name));
64
- }), null);
64
+ }), undefined);
65
65
  res.exportKind = 'type';
66
66
  return res;
67
67
  }
@@ -71,7 +71,7 @@ function exportTypes(names) {
71
71
 
72
72
 
73
73
  function declareExportOpaqueType(name, value) {
74
- return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name), null, t.genericTypeAnnotation(t.identifier(value))));
74
+ return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name), undefined, t.genericTypeAnnotation(t.identifier(value))));
75
75
  }
76
76
  /**
77
77
  * import type {NAMES[0], NAMES[1], ...} from 'MODULE';
@@ -12,19 +12,11 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
16
16
 
17
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
18
-
19
- function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
20
-
21
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
-
23
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
24
-
25
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
17
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
26
18
 
27
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
19
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
28
20
 
29
21
  var FlattenTransform = require('../../transforms/FlattenTransform');
30
22
 
@@ -40,6 +32,8 @@ var RefetchableFragmentTransform = require('../../transforms/RefetchableFragment
40
32
 
41
33
  var RelayDirectiveTransform = require('../../transforms/RelayDirectiveTransform');
42
34
 
35
+ var RequiredFieldTransform = require('../../transforms/RequiredFieldTransform');
36
+
43
37
  var generateAbstractTypeRefinementKey = require('../../util/generateAbstractTypeRefinementKey');
44
38
 
45
39
  var partitionArray = require('../../util/partitionArray');
@@ -162,14 +156,14 @@ function selectionsToBabel(schema, selections, state, unmasked, fragmentTypeName
162
156
 
163
157
  for (var concreteType in byConcreteType) {
164
158
  selectionMap = mergeSelections(selectionMap, selectionsToMap(byConcreteType[concreteType].map(function (sel) {
165
- return _objectSpread({}, sel, {
159
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, sel), {}, {
166
160
  conditional: true
167
161
  });
168
162
  })));
169
163
  }
170
164
 
171
165
  var selectionMapValues = groupRefs(Array.from(selectionMap.values())).map(function (sel) {
172
- return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, _objectSpread({}, sel, {
166
+ return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, sel), {}, {
173
167
  conditional: false
174
168
  }), state, unmasked, sel.concreteType) : makeProp(schema, sel, state, unmasked);
175
169
  });
@@ -190,7 +184,7 @@ function mergeSelection(a, b) {
190
184
 
191
185
  if (!a) {
192
186
  if (shouldSetConditional) {
193
- return _objectSpread({}, b, {
187
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, b), {}, {
194
188
  conditional: true
195
189
  });
196
190
  }
@@ -198,7 +192,7 @@ function mergeSelection(a, b) {
198
192
  return b;
199
193
  }
200
194
 
201
- return _objectSpread({}, a, {
195
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, a), {}, {
202
196
  nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, nullthrows(b.nodeSelections), shouldSetConditional) : null,
203
197
  conditional: a.conditional && b.conditional
204
198
  });
@@ -208,7 +202,7 @@ function mergeSelections(a, b) {
208
202
  var shouldSetConditional = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
209
203
  var merged = new Map();
210
204
 
211
- var _iterator = _createForOfIteratorHelper(a.entries()),
205
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(a.entries()),
212
206
  _step;
213
207
 
214
208
  try {
@@ -224,7 +218,7 @@ function mergeSelections(a, b) {
224
218
  _iterator.f();
225
219
  }
226
220
 
227
- var _iterator2 = _createForOfIteratorHelper(b.entries()),
221
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(b.entries()),
228
222
  _step2;
229
223
 
230
224
  try {
@@ -265,10 +259,19 @@ function createVisitor(schema, options) {
265
259
  return {
266
260
  leave: {
267
261
  Root: function Root(node) {
262
+ var _node$metadata;
263
+
268
264
  var inputVariablesType = generateInputVariablesType(schema, node, state);
269
265
  var inputObjectTypes = generateInputObjectTypes(state);
270
- var responseType = exportType("".concat(node.name, "Response"), selectionsToBabel(schema, // $FlowFixMe[incompatible-cast] : selections have already been transformed
271
- node.selections, state, false));
266
+ var responseTypeDefinition = selectionsToBabel(schema,
267
+ /* $FlowFixMe: selections have already been transformed */
268
+ node.selections, state, false);
269
+
270
+ if (((_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.childrenCanBubbleNull) === true) {
271
+ responseTypeDefinition = t.nullableTypeAnnotation(responseTypeDefinition);
272
+ }
273
+
274
+ var responseType = exportType("".concat(node.name, "Response"), responseTypeDefinition);
272
275
  var operationTypes = [t.objectTypeProperty(t.identifier('variables'), t.genericTypeAnnotation(t.identifier("".concat(node.name, "Variables")))), t.objectTypeProperty(t.identifier('response'), t.genericTypeAnnotation(t.identifier("".concat(node.name, "Response"))))]; // Generate raw response type
273
276
 
274
277
  var rawResponseType;
@@ -295,7 +298,7 @@ function createVisitor(schema, options) {
295
298
  babelNodes.push.apply(babelNodes, (0, _toConsumableArray2["default"])(refetchableFragmentName ? generateFragmentRefsForRefetchable(refetchableFragmentName) : getFragmentImports(state)).concat((0, _toConsumableArray2["default"])(getEnumDefinitions(schema, state)), (0, _toConsumableArray2["default"])(inputObjectTypes), [inputVariablesType, responseType]));
296
299
 
297
300
  if (rawResponseType) {
298
- var _iterator3 = _createForOfIteratorHelper(state.matchFields),
301
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(state.matchFields),
299
302
  _step3;
300
303
 
301
304
  try {
@@ -319,6 +322,8 @@ function createVisitor(schema, options) {
319
322
  return t.program(babelNodes);
320
323
  },
321
324
  Fragment: function Fragment(node) {
325
+ var _node$metadata2;
326
+
322
327
  var selections = flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
323
328
  node.selections);
324
329
  var numConecreteSelections = selections.filter(function (s) {
@@ -326,7 +331,7 @@ function createVisitor(schema, options) {
326
331
  }).length;
327
332
  selections = selections.map(function (selection) {
328
333
  if (numConecreteSelections <= 1 && isTypenameSelection(selection) && !schema.isAbstractType(node.type)) {
329
- return [_objectSpread({}, selection, {
334
+ return [(0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, selection), {}, {
330
335
  concreteType: schema.getTypeString(node.type)
331
336
  })];
332
337
  }
@@ -346,15 +351,20 @@ function createVisitor(schema, options) {
346
351
  var unmasked = node.metadata != null && node.metadata.mask === false;
347
352
  var baseType = selectionsToBabel(schema, selections, state, unmasked, unmasked ? undefined : getOldFragmentTypeName(node.name));
348
353
  var type = isPluralFragment ? readOnlyArrayOfType(baseType) : baseType;
354
+
355
+ if (((_node$metadata2 = node.metadata) === null || _node$metadata2 === void 0 ? void 0 : _node$metadata2.childrenCanBubbleNull) === true) {
356
+ type = t.nullableTypeAnnotation(type);
357
+ }
358
+
349
359
  state.runtimeImports.add('FragmentReference');
350
360
  return t.program([].concat((0, _toConsumableArray2["default"])(getFragmentImports(state)), (0, _toConsumableArray2["default"])(getEnumDefinitions(schema, state)), [importTypes(Array.from(state.runtimeImports).sort(), 'relay-runtime')], (0, _toConsumableArray2["default"])(fragmentTypes), [exportType(node.name, type), exportType(dataTypeName, dataType), exportType(refTypeName, isPluralFragment ? readOnlyArrayOfType(refType) : refType)]));
351
361
  },
352
362
  InlineFragment: function InlineFragment(node) {
353
363
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
354
364
  node.selections).map(function (typeSelection) {
355
- return schema.isAbstractType(node.typeCondition) ? _objectSpread({}, typeSelection, {
365
+ return schema.isAbstractType(node.typeCondition) ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, typeSelection), {}, {
356
366
  conditional: true
357
- }) : _objectSpread({}, typeSelection, {
367
+ }) : (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, typeSelection), {}, {
358
368
  concreteType: schema.getTypeString(node.typeCondition)
359
369
  });
360
370
  });
@@ -362,7 +372,7 @@ function createVisitor(schema, options) {
362
372
  Condition: function Condition(node) {
363
373
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
364
374
  node.selections).map(function (selection) {
365
- return _objectSpread({}, selection, {
375
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, selection), {}, {
366
376
  conditional: true
367
377
  });
368
378
  });
@@ -370,7 +380,9 @@ function createVisitor(schema, options) {
370
380
  ScalarField: function ScalarField(node) {
371
381
  return visitScalarField(schema, node, state);
372
382
  },
373
- LinkedField: visitLinkedField,
383
+ LinkedField: function LinkedField(node) {
384
+ return visitLinkedField(schema, node);
385
+ },
374
386
  ModuleImport: function ModuleImport(node) {
375
387
  return [{
376
388
  key: '__fragmentPropName',
@@ -402,18 +414,55 @@ function visitNodeWithSelectionsOnly(node) {
402
414
  }
403
415
 
404
416
  function visitScalarField(schema, node, state) {
417
+ var _node$metadata3;
418
+
419
+ var requiredMetadata = (_node$metadata3 = node.metadata) === null || _node$metadata3 === void 0 ? void 0 : _node$metadata3.required;
420
+ var nodeType = requiredMetadata != null ? schema.getNonNullType(node.type) : node.type;
405
421
  return [{
406
422
  key: node.alias,
407
423
  schemaName: node.name,
408
- value: transformScalarType(schema, node.type, state)
424
+ value: transformScalarType(schema, nodeType, state)
409
425
  }];
410
426
  }
411
427
 
412
- function visitLinkedField(node) {
428
+ function getLinkedFieldNodeType(schema, node) {
429
+ var _node$metadata4, _node$metadata5;
430
+
431
+ var requiredMetadata = (_node$metadata4 = node.metadata) === null || _node$metadata4 === void 0 ? void 0 : _node$metadata4.required;
432
+
433
+ if (requiredMetadata != null) {
434
+ return schema.getNonNullType(node.type);
435
+ }
436
+
437
+ if (((_node$metadata5 = node.metadata) === null || _node$metadata5 === void 0 ? void 0 : _node$metadata5.childrenCanBubbleNull) === true) {
438
+ if (schema.isList(node.type)) {
439
+ // In a plural field, nulls bubble up to the item, resulting in a list of nullable items.
440
+ return schema.mapListItemType(node.type, function (inner) {
441
+ return schema.getNullableType(inner);
442
+ });
443
+ } else if (schema.isNonNull(node.type)) {
444
+ var nullable = schema.getNullableType(node.type);
445
+
446
+ if (schema.isList(nullable)) {
447
+ return schema.getNonNullType(schema.mapListItemType(nullable, function (inner) {
448
+ return schema.getNullableType(inner);
449
+ }));
450
+ }
451
+
452
+ return nullable;
453
+ }
454
+
455
+ return node.type;
456
+ }
457
+
458
+ return node.type;
459
+ }
460
+
461
+ function visitLinkedField(schema, node) {
413
462
  return [{
414
463
  key: node.alias,
415
464
  schemaName: node.name,
416
- nodeType: node.type,
465
+ nodeType: getLinkedFieldNodeType(schema, node),
417
466
  nodeSelections: selectionsToMap(flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
418
467
  node.selections),
419
468
  /*
@@ -504,7 +553,7 @@ function appendLocal3DPayload(types, selections, schema, state, currentType) {
504
553
  if (moduleImport) {
505
554
  // Generate an extra opaque type for client 3D fields
506
555
  state.runtimeImports.add('Local3DPayload');
507
- types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(moduleImport.documentName), exactObjectTypeAnnotation(selections.filter(function (sel) {
556
+ types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(nullthrows(moduleImport.documentName)), exactObjectTypeAnnotation(selections.filter(function (sel) {
508
557
  return sel.schemaName !== 'js';
509
558
  }).map(function (selection) {
510
559
  return makeRawResponseProp(schema, selection, state, currentType);
@@ -524,7 +573,7 @@ function createRawResponseTypeVisitor(schema, state) {
524
573
  var typeCondition = node.typeCondition;
525
574
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
526
575
  node.selections).map(function (typeSelection) {
527
- return schema.isAbstractType(typeCondition) ? typeSelection : _objectSpread({}, typeSelection, {
576
+ return schema.isAbstractType(typeCondition) ? typeSelection : (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, typeSelection), {}, {
528
577
  concreteType: schema.getTypeString(typeCondition)
529
578
  });
530
579
  });
@@ -535,12 +584,14 @@ function createRawResponseTypeVisitor(schema, state) {
535
584
  ClientExtension: function ClientExtension(node) {
536
585
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
537
586
  node.selections).map(function (sel) {
538
- return _objectSpread({}, sel, {
587
+ return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, sel), {}, {
539
588
  conditional: true
540
589
  });
541
590
  });
542
591
  },
543
- LinkedField: visitLinkedField,
592
+ LinkedField: function LinkedField(node) {
593
+ return visitLinkedField(schema, node);
594
+ },
544
595
  Condition: visitNodeWithSelectionsOnly,
545
596
  Defer: visitNodeWithSelectionsOnly,
546
597
  Stream: visitNodeWithSelectionsOnly,
@@ -649,7 +700,7 @@ function getFragmentImports(state) {
649
700
  if (state.usedFragments.size > 0) {
650
701
  var usedFragments = Array.from(state.usedFragments).sort();
651
702
 
652
- var _iterator4 = _createForOfIteratorHelper(usedFragments),
703
+ var _iterator4 = (0, _createForOfIteratorHelper2["default"])(usedFragments),
653
704
  _step4;
654
705
 
655
706
  try {
@@ -796,7 +847,7 @@ function getDataTypeName(name) {
796
847
  return "".concat(name, "$data");
797
848
  }
798
849
 
799
- var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
850
+ var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RequiredFieldTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
800
851
  var DIRECTIVE_NAME = 'raw_response_type';
801
852
  module.exports = {
802
853
  generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'),
@@ -12,13 +12,9 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
16
-
17
- function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
15
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
18
16
 
19
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
-
21
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
17
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
22
18
 
23
19
  var crypto = require('crypto');
24
20
 
@@ -37,7 +33,7 @@ function createEmptyState() {
37
33
  function serializeState(state) {
38
34
  var json = [];
39
35
 
40
- var _iterator = _createForOfIteratorHelper(state.artifacts),
36
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(state.artifacts),
41
37
  _step;
42
38
 
43
39
  try {
@@ -89,7 +85,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
89
85
  var deletionCandidates = new Set();
90
86
  var addedNames = new Set();
91
87
 
92
- var _iterator2 = _createForOfIteratorHelper(changes.added),
88
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(changes.added),
93
89
  _step2;
94
90
 
95
91
  try {
@@ -106,7 +102,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
106
102
  _iterator2.f();
107
103
  }
108
104
 
109
- var _iterator3 = _createForOfIteratorHelper(changes.removed),
105
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(changes.removed),
110
106
  _step3;
111
107
 
112
108
  try {
@@ -126,7 +122,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
126
122
  continue;
127
123
  }
128
124
 
129
- var _iterator7 = _createForOfIteratorHelper(entry.keys()),
125
+ var _iterator7 = (0, _createForOfIteratorHelper2["default"])(entry.keys()),
130
126
  _step7;
131
127
 
132
128
  try {
@@ -148,7 +144,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
148
144
  _iterator3.f();
149
145
  }
150
146
 
151
- var _iterator4 = _createForOfIteratorHelper(generatedArtifacts.artifacts),
147
+ var _iterator4 = (0, _createForOfIteratorHelper2["default"])(generatedArtifacts.artifacts),
152
148
  _step4;
153
149
 
154
150
  try {
@@ -159,7 +155,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
159
155
  var oldEntry = nextState.artifacts.get(_name);
160
156
 
161
157
  if (oldEntry != null) {
162
- var _iterator8 = _createForOfIteratorHelper(oldEntry),
158
+ var _iterator8 = (0, _createForOfIteratorHelper2["default"])(oldEntry),
163
159
  _step8;
164
160
 
165
161
  try {
@@ -179,7 +175,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
179
175
 
180
176
  nextState.artifacts.set(_name, artifacts);
181
177
 
182
- var _iterator9 = _createForOfIteratorHelper(artifacts.keys()),
178
+ var _iterator9 = (0, _createForOfIteratorHelper2["default"])(artifacts.keys()),
183
179
  _step9;
184
180
 
185
181
  try {
@@ -207,7 +203,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
207
203
 
208
204
  var nextGeneratedArtifacts = new Set();
209
205
 
210
- var _iterator5 = _createForOfIteratorHelper(eachNameAndArtifact(nextState)),
206
+ var _iterator5 = (0, _createForOfIteratorHelper2["default"])(eachNameAndArtifact(nextState)),
211
207
  _step5;
212
208
 
213
209
  try {
@@ -222,7 +218,7 @@ function updateState(state, changes, generatedArtifacts, filesystem, resolveFull
222
218
  _iterator5.f();
223
219
  }
224
220
 
225
- var _iterator6 = _createForOfIteratorHelper(deletionCandidates),
221
+ var _iterator6 = (0, _createForOfIteratorHelper2["default"])(deletionCandidates),
226
222
  _step6;
227
223
 
228
224
  try {
@@ -283,7 +279,7 @@ function producedFiles(dirs, artifactsMetadata) {
283
279
  }
284
280
 
285
281
  function* eachNameAndArtifact(artifacts) {
286
- var _iterator10 = _createForOfIteratorHelper(artifacts.artifacts),
282
+ var _iterator10 = (0, _createForOfIteratorHelper2["default"])(artifacts.artifacts),
287
283
  _step10;
288
284
 
289
285
  try {
@@ -292,7 +288,7 @@ function* eachNameAndArtifact(artifacts) {
292
288
  name = _step10$value[0],
293
289
  artifactsForSource = _step10$value[1];
294
290
 
295
- var _iterator11 = _createForOfIteratorHelper(artifactsForSource.keys()),
291
+ var _iterator11 = (0, _createForOfIteratorHelper2["default"])(artifactsForSource.keys()),
296
292
  _step11;
297
293
 
298
294
  try {
@@ -15,13 +15,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
15
15
 
16
16
  var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator");
17
17
 
18
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
-
20
- function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
18
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
21
19
 
22
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
-
24
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
21
 
26
22
  var fs = require('fs');
27
23
 
@@ -51,7 +47,7 @@ var BufferedFilesystem = /*#__PURE__*/function () {
51
47
  var removed = [];
52
48
  var added = [];
53
49
 
54
- var _iterator = _createForOfIteratorHelper(this.buffer),
50
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(this.buffer),
55
51
  _step;
56
52
 
57
53
  try {
@@ -104,7 +100,7 @@ var BufferedFilesystem = /*#__PURE__*/function () {
104
100
  var updated = [];
105
101
  var removed = [];
106
102
 
107
- var _iterator2 = _createForOfIteratorHelper(this.buffer),
103
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(this.buffer),
108
104
  _step2;
109
105
 
110
106
  try {
@@ -138,7 +134,7 @@ var BufferedFilesystem = /*#__PURE__*/function () {
138
134
  var added = [];
139
135
  var removed = [];
140
136
 
141
- var _iterator3 = _createForOfIteratorHelper(this.buffer),
137
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(this.buffer),
142
138
  _step3;
143
139
 
144
140
  try {
@@ -221,7 +217,7 @@ var BufferedFilesystem = /*#__PURE__*/function () {
221
217
  var changed = [];
222
218
  var removed = [];
223
219
 
224
- var _iterator4 = _createForOfIteratorHelper(this.buffer),
220
+ var _iterator4 = (0, _createForOfIteratorHelper2["default"])(this.buffer),
225
221
  _step4;
226
222
 
227
223
  try {
@@ -12,13 +12,9 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
16
-
17
- function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
15
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
18
16
 
19
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
-
21
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
17
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
22
18
 
23
19
  var GraphQLNodeMap = require('./GraphQLNodeMap');
24
20
 
@@ -31,7 +27,7 @@ var _require2 = require('graphql'),
31
27
  function buildDependencyMap(nodes) {
32
28
  var dependencyMap = new Map();
33
29
 
34
- var _iterator = _createForOfIteratorHelper(nodes.values()),
30
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(nodes.values()),
35
31
  _step;
36
32
 
37
33
  try {
@@ -57,14 +53,14 @@ function buildDependencyMap(nodes) {
57
53
  function mergeMaps(maps) {
58
54
  var result = new Map();
59
55
 
60
- var _iterator2 = _createForOfIteratorHelper(maps),
56
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(maps),
61
57
  _step2;
62
58
 
63
59
  try {
64
60
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
65
61
  var source = _step2.value;
66
62
 
67
- var _iterator3 = _createForOfIteratorHelper(source.entries()),
63
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(source.entries()),
68
64
  _step3;
69
65
 
70
66
  try {
@@ -113,7 +109,7 @@ function forChanges(nodes, changedNames) {
113
109
 
114
110
  var directlyChangedRelatedToProject = new Set();
115
111
 
116
- var _iterator4 = _createForOfIteratorHelper(directlyChangedAndAncestors),
112
+ var _iterator4 = (0, _createForOfIteratorHelper2["default"])(directlyChangedAndAncestors),
117
113
  _step4;
118
114
 
119
115
  try {
@@ -140,7 +136,7 @@ function buildResult(includedNames, nameToNode, baseNameToNode) {
140
136
  var baseNames = new Set();
141
137
  var nodes = [];
142
138
 
143
- var _iterator5 = _createForOfIteratorHelper(includedNames),
139
+ var _iterator5 = (0, _createForOfIteratorHelper2["default"])(includedNames),
144
140
  _step5;
145
141
 
146
142
  try {
@@ -179,7 +175,7 @@ function includeReachable(changed, deps) {
179
175
  var current = toVisit.pop();
180
176
  visited.add(current);
181
177
 
182
- var _iterator6 = _createForOfIteratorHelper(deps.get(current) || []),
178
+ var _iterator6 = (0, _createForOfIteratorHelper2["default"])(deps.get(current) || []),
183
179
  _step6;
184
180
 
185
181
  try {
@@ -213,7 +209,7 @@ function findIncludedFragments(node) {
213
209
  function inverseDependencyMap(map) {
214
210
  var invertedMap = new Map();
215
211
 
216
- var _iterator7 = _createForOfIteratorHelper(map.entries()),
212
+ var _iterator7 = (0, _createForOfIteratorHelper2["default"])(map.entries()),
217
213
  _step7;
218
214
 
219
215
  try {
@@ -223,7 +219,7 @@ function inverseDependencyMap(map) {
223
219
  dests = _step7$value[1];
224
220
  var inverseDest = source;
225
221
 
226
- var _iterator8 = _createForOfIteratorHelper(dests),
222
+ var _iterator8 = (0, _createForOfIteratorHelper2["default"])(dests),
227
223
  _step8;
228
224
 
229
225
  try {
@@ -12,16 +12,12 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
16
+
15
17
  var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
16
18
 
17
19
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
18
20
 
19
- function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
20
-
21
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
-
23
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
24
-
25
21
  var _require = require('../core/CompilerError'),
26
22
  createUserError = _require.createUserError,
27
23
  createCompilerError = _require.createCompilerError;
@@ -39,7 +35,7 @@ var GraphQLNodeMap = /*#__PURE__*/function (_Map) {
39
35
  GraphQLNodeMap.from = function from(nodes) {
40
36
  var result = new GraphQLNodeMap();
41
37
 
42
- var _iterator = _createForOfIteratorHelper(nodes),
38
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(nodes),
43
39
  _step;
44
40
 
45
41
  try {