relay-compiler 10.0.1 → 10.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. package/bin/relay-compiler +1347 -604
  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/IR.js.flow +0 -1
  9. package/core/IRPrinter.js.flow +3 -8
  10. package/core/RelayIRTransforms.js.flow +7 -0
  11. package/core/Schema.js.flow +55 -1
  12. package/index.js +1 -1
  13. package/language/javascript/FindGraphQLTags.js.flow +2 -97
  14. package/language/javascript/RelayFlowBabelFactories.js.flow +11 -15
  15. package/language/javascript/RelayFlowGenerator.js.flow +76 -19
  16. package/language/javascript/RelayFlowTypeTransformers.js.flow +4 -4
  17. package/lib/bin/RelayCompilerMain.js +5 -5
  18. package/lib/codegen/CodegenRunner.js +2 -2
  19. package/lib/codegen/NormalizationCodeGenerator.js +20 -8
  20. package/lib/codegen/ReaderCodeGenerator.js +43 -8
  21. package/lib/codegen/RelayFileWriter.js +2 -2
  22. package/lib/codegen/compileRelayArtifacts.js +2 -2
  23. package/lib/codegen/sortObjectByKey.js +2 -2
  24. package/lib/codegen/writeRelayGeneratedFile.js +2 -2
  25. package/lib/core/ASTCache.js +1 -0
  26. package/lib/core/CompilerContext.js +1 -0
  27. package/lib/core/CompilerError.js +2 -2
  28. package/lib/core/IRPrinter.js +3 -4
  29. package/lib/core/RelayGraphQLEnumsGenerator.js +2 -2
  30. package/lib/core/RelayIRTransforms.js +10 -4
  31. package/lib/core/RelayParser.js +4 -4
  32. package/lib/core/Schema.js +48 -7
  33. package/lib/core/getFieldDefinition.js +2 -2
  34. package/lib/core/inferRootArgumentDefinitions.js +4 -4
  35. package/lib/language/javascript/FindGraphQLTags.js +3 -69
  36. package/lib/language/javascript/RelayFlowBabelFactories.js +5 -5
  37. package/lib/language/javascript/RelayFlowGenerator.js +80 -21
  38. package/lib/runner/Artifacts.js +2 -2
  39. package/lib/runner/BufferedFilesystem.js +2 -2
  40. package/lib/runner/GraphQLASTNodeGroup.js +2 -2
  41. package/lib/runner/GraphQLNodeMap.js +2 -2
  42. package/lib/runner/Sources.js +21 -2
  43. package/lib/runner/StrictMap.js +2 -2
  44. package/lib/runner/getChangedNodeNames.js +2 -2
  45. package/lib/transforms/ApplyFragmentArgumentTransform.js +14 -14
  46. package/lib/transforms/ClientExtensionsTransform.js +5 -3
  47. package/lib/transforms/ConnectionTransform.js +8 -9
  48. package/lib/transforms/DeclarativeConnectionMutationTransform.js +113 -55
  49. package/lib/transforms/DeferStreamTransform.js +2 -2
  50. package/lib/transforms/DisallowTypenameOnRoot.js +2 -2
  51. package/lib/transforms/FieldHandleTransform.js +2 -2
  52. package/lib/transforms/FilterCompilerDirectivesTransform.js +29 -0
  53. package/lib/transforms/FlattenTransform.js +13 -12
  54. package/lib/transforms/GenerateIDFieldTransform.js +2 -2
  55. package/lib/transforms/GenerateTypeNameTransform.js +3 -3
  56. package/lib/transforms/InlineDataFragmentTransform.js +2 -2
  57. package/lib/transforms/MaskTransform.js +3 -3
  58. package/lib/transforms/MatchTransform.js +7 -3
  59. package/lib/transforms/ReactFlightComponentTransform.js +162 -0
  60. package/lib/transforms/RefetchableFragmentTransform.js +4 -4
  61. package/lib/transforms/RelayDirectiveTransform.js +2 -2
  62. package/lib/transforms/RequiredFieldTransform.js +380 -0
  63. package/lib/transforms/SkipHandleFieldTransform.js +1 -1
  64. package/lib/transforms/SkipRedundantNodesTransform.js +3 -1
  65. package/lib/transforms/SkipUnreachableNodeTransform.js +1 -1
  66. package/lib/transforms/SkipUnusedVariablesTransform.js +3 -3
  67. package/lib/transforms/TestOperationTransform.js +2 -2
  68. package/lib/transforms/ValidateGlobalVariablesTransform.js +2 -2
  69. package/lib/transforms/ValidateRequiredArgumentsTransform.js +2 -2
  70. package/lib/transforms/ValidateServerOnlyDirectivesTransform.js +2 -2
  71. package/lib/transforms/ValidateUnusedVariablesTransform.js +2 -2
  72. package/lib/transforms/query-generators/FetchableQueryGenerator.js +1 -1
  73. package/lib/transforms/query-generators/NodeQueryGenerator.js +1 -1
  74. package/lib/transforms/query-generators/index.js +2 -2
  75. package/lib/transforms/query-generators/utils.js +2 -2
  76. package/package.json +3 -3
  77. package/relay-compiler.js +4 -4
  78. package/relay-compiler.min.js +4 -4
  79. package/runner/Sources.js.flow +14 -0
  80. package/transforms/ClientExtensionsTransform.js.flow +2 -0
  81. package/transforms/ConnectionTransform.js.flow +0 -1
  82. package/transforms/DeclarativeConnectionMutationTransform.js.flow +137 -48
  83. package/transforms/FieldHandleTransform.js.flow +0 -1
  84. package/transforms/FilterCompilerDirectivesTransform.js.flow +33 -0
  85. package/transforms/FlattenTransform.js.flow +3 -2
  86. package/transforms/MatchTransform.js.flow +6 -0
  87. package/transforms/ReactFlightComponentTransform.js.flow +195 -0
  88. package/transforms/RequiredFieldTransform.js.flow +415 -0
  89. package/transforms/SkipRedundantNodesTransform.js.flow +3 -0
@@ -16,9 +16,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
16
16
 
17
17
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
18
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; } } }; }
19
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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
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); }
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
22
 
23
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
24
 
@@ -40,6 +40,8 @@ var RefetchableFragmentTransform = require('../../transforms/RefetchableFragment
40
40
 
41
41
  var RelayDirectiveTransform = require('../../transforms/RelayDirectiveTransform');
42
42
 
43
+ var RequiredFieldTransform = require('../../transforms/RequiredFieldTransform');
44
+
43
45
  var generateAbstractTypeRefinementKey = require('../../util/generateAbstractTypeRefinementKey');
44
46
 
45
47
  var partitionArray = require('../../util/partitionArray');
@@ -162,14 +164,14 @@ function selectionsToBabel(schema, selections, state, unmasked, fragmentTypeName
162
164
 
163
165
  for (var concreteType in byConcreteType) {
164
166
  selectionMap = mergeSelections(selectionMap, selectionsToMap(byConcreteType[concreteType].map(function (sel) {
165
- return _objectSpread({}, sel, {
167
+ return _objectSpread(_objectSpread({}, sel), {}, {
166
168
  conditional: true
167
169
  });
168
170
  })));
169
171
  }
170
172
 
171
173
  var selectionMapValues = groupRefs(Array.from(selectionMap.values())).map(function (sel) {
172
- return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, _objectSpread({}, sel, {
174
+ return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, _objectSpread(_objectSpread({}, sel), {}, {
173
175
  conditional: false
174
176
  }), state, unmasked, sel.concreteType) : makeProp(schema, sel, state, unmasked);
175
177
  });
@@ -190,7 +192,7 @@ function mergeSelection(a, b) {
190
192
 
191
193
  if (!a) {
192
194
  if (shouldSetConditional) {
193
- return _objectSpread({}, b, {
195
+ return _objectSpread(_objectSpread({}, b), {}, {
194
196
  conditional: true
195
197
  });
196
198
  }
@@ -198,7 +200,7 @@ function mergeSelection(a, b) {
198
200
  return b;
199
201
  }
200
202
 
201
- return _objectSpread({}, a, {
203
+ return _objectSpread(_objectSpread({}, a), {}, {
202
204
  nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, nullthrows(b.nodeSelections), shouldSetConditional) : null,
203
205
  conditional: a.conditional && b.conditional
204
206
  });
@@ -265,10 +267,19 @@ function createVisitor(schema, options) {
265
267
  return {
266
268
  leave: {
267
269
  Root: function Root(node) {
270
+ var _node$metadata;
271
+
268
272
  var inputVariablesType = generateInputVariablesType(schema, node, state);
269
273
  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));
274
+ var responseTypeDefinition = selectionsToBabel(schema,
275
+ /* $FlowFixMe: selections have already been transformed */
276
+ node.selections, state, false);
277
+
278
+ if (((_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.childrenCanBubbleNull) === true) {
279
+ responseTypeDefinition = t.nullableTypeAnnotation(responseTypeDefinition);
280
+ }
281
+
282
+ var responseType = exportType("".concat(node.name, "Response"), responseTypeDefinition);
272
283
  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
284
 
274
285
  var rawResponseType;
@@ -319,6 +330,8 @@ function createVisitor(schema, options) {
319
330
  return t.program(babelNodes);
320
331
  },
321
332
  Fragment: function Fragment(node) {
333
+ var _node$metadata2;
334
+
322
335
  var selections = flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
323
336
  node.selections);
324
337
  var numConecreteSelections = selections.filter(function (s) {
@@ -326,7 +339,7 @@ function createVisitor(schema, options) {
326
339
  }).length;
327
340
  selections = selections.map(function (selection) {
328
341
  if (numConecreteSelections <= 1 && isTypenameSelection(selection) && !schema.isAbstractType(node.type)) {
329
- return [_objectSpread({}, selection, {
342
+ return [_objectSpread(_objectSpread({}, selection), {}, {
330
343
  concreteType: schema.getTypeString(node.type)
331
344
  })];
332
345
  }
@@ -346,15 +359,20 @@ function createVisitor(schema, options) {
346
359
  var unmasked = node.metadata != null && node.metadata.mask === false;
347
360
  var baseType = selectionsToBabel(schema, selections, state, unmasked, unmasked ? undefined : getOldFragmentTypeName(node.name));
348
361
  var type = isPluralFragment ? readOnlyArrayOfType(baseType) : baseType;
362
+
363
+ if (((_node$metadata2 = node.metadata) === null || _node$metadata2 === void 0 ? void 0 : _node$metadata2.childrenCanBubbleNull) === true) {
364
+ type = t.nullableTypeAnnotation(type);
365
+ }
366
+
349
367
  state.runtimeImports.add('FragmentReference');
350
368
  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
369
  },
352
370
  InlineFragment: function InlineFragment(node) {
353
371
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
354
372
  node.selections).map(function (typeSelection) {
355
- return schema.isAbstractType(node.typeCondition) ? _objectSpread({}, typeSelection, {
373
+ return schema.isAbstractType(node.typeCondition) ? _objectSpread(_objectSpread({}, typeSelection), {}, {
356
374
  conditional: true
357
- }) : _objectSpread({}, typeSelection, {
375
+ }) : _objectSpread(_objectSpread({}, typeSelection), {}, {
358
376
  concreteType: schema.getTypeString(node.typeCondition)
359
377
  });
360
378
  });
@@ -362,7 +380,7 @@ function createVisitor(schema, options) {
362
380
  Condition: function Condition(node) {
363
381
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
364
382
  node.selections).map(function (selection) {
365
- return _objectSpread({}, selection, {
383
+ return _objectSpread(_objectSpread({}, selection), {}, {
366
384
  conditional: true
367
385
  });
368
386
  });
@@ -370,7 +388,9 @@ function createVisitor(schema, options) {
370
388
  ScalarField: function ScalarField(node) {
371
389
  return visitScalarField(schema, node, state);
372
390
  },
373
- LinkedField: visitLinkedField,
391
+ LinkedField: function LinkedField(node) {
392
+ return visitLinkedField(schema, node);
393
+ },
374
394
  ModuleImport: function ModuleImport(node) {
375
395
  return [{
376
396
  key: '__fragmentPropName',
@@ -402,18 +422,55 @@ function visitNodeWithSelectionsOnly(node) {
402
422
  }
403
423
 
404
424
  function visitScalarField(schema, node, state) {
425
+ var _node$metadata3;
426
+
427
+ var requiredMetadata = (_node$metadata3 = node.metadata) === null || _node$metadata3 === void 0 ? void 0 : _node$metadata3.required;
428
+ var nodeType = requiredMetadata != null ? schema.getNonNullType(node.type) : node.type;
405
429
  return [{
406
430
  key: node.alias,
407
431
  schemaName: node.name,
408
- value: transformScalarType(schema, node.type, state)
432
+ value: transformScalarType(schema, nodeType, state)
409
433
  }];
410
434
  }
411
435
 
412
- function visitLinkedField(node) {
436
+ function getLinkedFieldNodeType(schema, node) {
437
+ var _node$metadata4, _node$metadata5;
438
+
439
+ var requiredMetadata = (_node$metadata4 = node.metadata) === null || _node$metadata4 === void 0 ? void 0 : _node$metadata4.required;
440
+
441
+ if (requiredMetadata != null) {
442
+ return schema.getNonNullType(node.type);
443
+ }
444
+
445
+ if (((_node$metadata5 = node.metadata) === null || _node$metadata5 === void 0 ? void 0 : _node$metadata5.childrenCanBubbleNull) === true) {
446
+ if (schema.isList(node.type)) {
447
+ // In a plural field, nulls bubble up to the item, resulting in a list of nullable items.
448
+ return schema.mapListItemType(node.type, function (inner) {
449
+ return schema.getNullableType(inner);
450
+ });
451
+ } else if (schema.isNonNull(node.type)) {
452
+ var nullable = schema.getNullableType(node.type);
453
+
454
+ if (schema.isList(nullable)) {
455
+ return schema.getNonNullType(schema.mapListItemType(nullable, function (inner) {
456
+ return schema.getNullableType(inner);
457
+ }));
458
+ }
459
+
460
+ return nullable;
461
+ }
462
+
463
+ return node.type;
464
+ }
465
+
466
+ return node.type;
467
+ }
468
+
469
+ function visitLinkedField(schema, node) {
413
470
  return [{
414
471
  key: node.alias,
415
472
  schemaName: node.name,
416
- nodeType: node.type,
473
+ nodeType: getLinkedFieldNodeType(schema, node),
417
474
  nodeSelections: selectionsToMap(flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
418
475
  node.selections),
419
476
  /*
@@ -504,7 +561,7 @@ function appendLocal3DPayload(types, selections, schema, state, currentType) {
504
561
  if (moduleImport) {
505
562
  // Generate an extra opaque type for client 3D fields
506
563
  state.runtimeImports.add('Local3DPayload');
507
- types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(moduleImport.documentName), exactObjectTypeAnnotation(selections.filter(function (sel) {
564
+ types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(nullthrows(moduleImport.documentName)), exactObjectTypeAnnotation(selections.filter(function (sel) {
508
565
  return sel.schemaName !== 'js';
509
566
  }).map(function (selection) {
510
567
  return makeRawResponseProp(schema, selection, state, currentType);
@@ -524,7 +581,7 @@ function createRawResponseTypeVisitor(schema, state) {
524
581
  var typeCondition = node.typeCondition;
525
582
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
526
583
  node.selections).map(function (typeSelection) {
527
- return schema.isAbstractType(typeCondition) ? typeSelection : _objectSpread({}, typeSelection, {
584
+ return schema.isAbstractType(typeCondition) ? typeSelection : _objectSpread(_objectSpread({}, typeSelection), {}, {
528
585
  concreteType: schema.getTypeString(typeCondition)
529
586
  });
530
587
  });
@@ -535,12 +592,14 @@ function createRawResponseTypeVisitor(schema, state) {
535
592
  ClientExtension: function ClientExtension(node) {
536
593
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
537
594
  node.selections).map(function (sel) {
538
- return _objectSpread({}, sel, {
595
+ return _objectSpread(_objectSpread({}, sel), {}, {
539
596
  conditional: true
540
597
  });
541
598
  });
542
599
  },
543
- LinkedField: visitLinkedField,
600
+ LinkedField: function LinkedField(node) {
601
+ return visitLinkedField(schema, node);
602
+ },
544
603
  Condition: visitNodeWithSelectionsOnly,
545
604
  Defer: visitNodeWithSelectionsOnly,
546
605
  Stream: visitNodeWithSelectionsOnly,
@@ -796,7 +855,7 @@ function getDataTypeName(name) {
796
855
  return "".concat(name, "$data");
797
856
  }
798
857
 
799
- var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
858
+ var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RequiredFieldTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
800
859
  var DIRECTIVE_NAME = 'raw_response_type';
801
860
  module.exports = {
802
861
  generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'),
@@ -14,9 +14,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
14
14
 
15
15
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
16
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; } } }; }
17
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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
18
 
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); }
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
20
 
21
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; }
22
22
 
@@ -17,9 +17,9 @@ var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator");
17
17
 
18
18
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
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; } } }; }
20
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
21
21
 
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); }
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
23
23
 
24
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; }
25
25
 
@@ -14,9 +14,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
14
14
 
15
15
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
16
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; } } }; }
17
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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
18
 
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); }
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
20
 
21
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; }
22
22
 
@@ -16,9 +16,9 @@ var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inh
16
16
 
17
17
  var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
18
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; } } }; }
19
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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
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); }
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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
22
22
 
23
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
24
 
@@ -19,9 +19,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
19
19
 
20
20
  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; }
21
21
 
22
- 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; } } }; }
22
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
23
23
 
24
- 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); }
24
+ 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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
25
25
 
26
26
  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; }
27
27
 
@@ -106,6 +106,8 @@ var Sources = /*#__PURE__*/function () {
106
106
  var _proto = Sources.prototype;
107
107
 
108
108
  _proto.processChanges = function processChanges(baseDir, files) {
109
+ var _ast$name$value, _ast$name;
110
+
109
111
  var added = [];
110
112
  var removed = [];
111
113
 
@@ -151,6 +153,23 @@ var Sources = /*#__PURE__*/function () {
151
153
  _ast = _step4$value.ast,
152
154
  text = _step4$value.text;
153
155
  var hashedText = md5(text);
156
+
157
+ if (newTexts.has(hashedText)) {
158
+ var name = 'unknown';
159
+
160
+ switch (_ast.kind) {
161
+ case 'FragmentDefinition':
162
+ name = _ast.name.value;
163
+ break;
164
+
165
+ case 'OperationDefinition':
166
+ name = (_ast$name$value = (_ast$name = _ast.name) === null || _ast$name === void 0 ? void 0 : _ast$name.value) !== null && _ast$name$value !== void 0 ? _ast$name$value : 'unnamed operation';
167
+ break;
168
+ }
169
+
170
+ throw new Error("Duplicate definition of `".concat(name, "` in `").concat(_file.name, "`"));
171
+ }
172
+
154
173
  newTexts.add(hashedText);
155
174
 
156
175
  if (hasEntry && oldEntry[hashedText] != null) {
@@ -13,9 +13,9 @@
13
13
 
14
14
  var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator");
15
15
 
16
- 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; } } }; }
16
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
17
17
 
18
- 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); }
18
+ 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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
19
 
20
20
  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; }
21
21
 
@@ -10,9 +10,9 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
- 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; } } }; }
13
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
14
14
 
15
- 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); }
15
+ 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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
16
 
17
17
  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; }
18
18
 
@@ -20,9 +20,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
20
20
 
21
21
  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; }
22
22
 
23
- 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; } } }; }
23
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; 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 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; } } }; }
24
24
 
25
- 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); }
25
+ 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(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
26
26
 
27
27
  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; }
28
28
 
@@ -109,13 +109,13 @@ function transformNode(context, fragments, scope, node, errorContext) {
109
109
 
110
110
  if (node.hasOwnProperty('directives')) {
111
111
  var directives = transformDirectives(scope, node.directives, errorContext);
112
- return _objectSpread({}, node, {
112
+ return _objectSpread(_objectSpread({}, node), {}, {
113
113
  directives: directives,
114
114
  selections: selections
115
115
  });
116
116
  }
117
117
 
118
- return _objectSpread({}, node, {
118
+ return _objectSpread(_objectSpread({}, node), {}, {
119
119
  selections: selections
120
120
  });
121
121
  }
@@ -162,7 +162,7 @@ function transformFragmentSpread(context, fragments, scope, spread, errorContext
162
162
  return null;
163
163
  }
164
164
 
165
- var transformed = _objectSpread({}, spread, {
165
+ var transformed = _objectSpread(_objectSpread({}, spread), {}, {
166
166
  kind: 'FragmentSpread',
167
167
  args: [],
168
168
  directives: directives,
@@ -183,13 +183,13 @@ function transformField(context, fragments, scope, field, errorContext) {
183
183
  return null;
184
184
  }
185
185
 
186
- return _objectSpread({}, field, {
186
+ return _objectSpread(_objectSpread({}, field), {}, {
187
187
  args: args,
188
188
  directives: directives,
189
189
  selections: selections
190
190
  });
191
191
  } else {
192
- return _objectSpread({}, field, {
192
+ return _objectSpread(_objectSpread({}, field), {}, {
193
193
  args: args,
194
194
  directives: directives
195
195
  });
@@ -222,7 +222,7 @@ function transformCondition(context, fragments, scope, node, errorContext) {
222
222
  return selections;
223
223
  }
224
224
 
225
- return [_objectSpread({}, node, {
225
+ return [_objectSpread(_objectSpread({}, node), {}, {
226
226
  condition: condition,
227
227
  selections: selections
228
228
  })];
@@ -267,7 +267,7 @@ function transformSelections(context, fragments, scope, selections, errorContext
267
267
  function transformDirectives(scope, directives, errorContext) {
268
268
  return directives.map(function (directive) {
269
269
  var args = transformArguments(scope, directive.args, errorContext);
270
- return _objectSpread({}, directive, {
270
+ return _objectSpread(_objectSpread({}, directive), {}, {
271
271
  args: args
272
272
  });
273
273
  });
@@ -276,7 +276,7 @@ function transformDirectives(scope, directives, errorContext) {
276
276
  function transformArguments(scope, args, errorContext) {
277
277
  return args.map(function (arg) {
278
278
  var value = transformValue(scope, arg.value, errorContext);
279
- return value === arg.value ? arg : _objectSpread({}, arg, {
279
+ return value === arg.value ? arg : _objectSpread(_objectSpread({}, arg), {}, {
280
280
  value: value
281
281
  });
282
282
  });
@@ -297,15 +297,15 @@ function transformValue(scope, value, errorContext) {
297
297
 
298
298
  return scopeValue;
299
299
  } else if (value.kind === 'ObjectValue') {
300
- return _objectSpread({}, value, {
300
+ return _objectSpread(_objectSpread({}, value), {}, {
301
301
  fields: value.fields.map(function (field) {
302
- return _objectSpread({}, field, {
302
+ return _objectSpread(_objectSpread({}, field), {}, {
303
303
  value: transformValue(scope, field.value, errorContext)
304
304
  });
305
305
  })
306
306
  });
307
307
  } else if (value.kind === 'ListValue') {
308
- return _objectSpread({}, value, {
308
+ return _objectSpread(_objectSpread({}, value), {}, {
309
309
  items: value.items.map(function (item) {
310
310
  return transformValue(scope, item, errorContext);
311
311
  })
@@ -349,7 +349,7 @@ function transformFragment(context, fragments, parentScope, spread, args, errorC
349
349
  var selections = transformSelections(context, fragments, fragmentScope, fragment.selections, errorContext);
350
350
 
351
351
  if (selections) {
352
- transformedFragment = _objectSpread({}, fragment, {
352
+ transformedFragment = _objectSpread(_objectSpread({}, fragment), {}, {
353
353
  selections: selections,
354
354
  name: fragmentName,
355
355
  argumentDefinitions: []
@@ -87,10 +87,12 @@ function traverseDefinition(node) {
87
87
  }
88
88
 
89
89
  function traverseSelections(node, compilerContext, parentType) {
90
+ // $FlowFixMe[escaped-generic]
90
91
  var nodeCache = cachesByNode.get(node);
91
92
 
92
93
  if (nodeCache == null) {
93
- nodeCache = new Map();
94
+ nodeCache = new Map(); // $FlowFixMe[escaped-generic]
95
+
94
96
  cachesByNode.set(node, nodeCache);
95
97
  }
96
98
 
@@ -161,12 +163,12 @@ function traverseSelections(node, compilerContext, parentType) {
161
163
  if (serverSelections === node.selections) {
162
164
  result = node;
163
165
  } else {
164
- result = _objectSpread({}, node, {
166
+ result = _objectSpread(_objectSpread({}, node), {}, {
165
167
  selections: serverSelections
166
168
  });
167
169
  }
168
170
  } else {
169
- result = _objectSpread({}, node, {
171
+ result = _objectSpread(_objectSpread({}, node), {}, {
170
172
  selections: [].concat((0, _toConsumableArray2["default"])(serverSelections), [// Group client fields under a single ClientExtension node
171
173
  {
172
174
  kind: 'ClientExtension',
@@ -82,8 +82,8 @@ function visitFragmentOrRoot(node, options) {
82
82
  var connectionMetadata = options.connectionMetadata;
83
83
 
84
84
  if (connectionMetadata.length) {
85
- return _objectSpread({}, transformedNode, {
86
- metadata: _objectSpread({}, transformedNode.metadata, {
85
+ return _objectSpread(_objectSpread({}, transformedNode), {}, {
86
+ metadata: _objectSpread(_objectSpread({}, transformedNode.metadata), {}, {
87
87
  connection: connectionMetadata
88
88
  })
89
89
  });
@@ -104,7 +104,7 @@ function visitLinkedField(field, options) {
104
104
  var nullableType = schema.getNullableType(field.type);
105
105
  var isPlural = schema.isList(nullableType);
106
106
  var path = options.path.concat(isPlural ? null : field.alias || field.name);
107
- var transformedField = this.traverse(field, _objectSpread({}, options, {
107
+ var transformedField = this.traverse(field, _objectSpread(_objectSpread({}, options), {}, {
108
108
  path: path
109
109
  }));
110
110
  var connectionDirective = field.directives.find(function (directive) {
@@ -134,12 +134,12 @@ function visitLinkedField(field, options) {
134
134
 
135
135
  if (direction != null) {
136
136
  var selections = transformConnectionSelections(this.getContext(), transformedField, schema.assertCompositeType(nullableType), direction, connectionArguments, connectionDirective.loc, options.documentName);
137
- transformedField = _objectSpread({}, transformedField, {
137
+ transformedField = _objectSpread(_objectSpread({}, transformedField), {}, {
138
138
  selections: selections
139
139
  });
140
140
  }
141
141
 
142
- return _objectSpread({}, transformedField, {
142
+ return _objectSpread(_objectSpread({}, transformedField), {}, {
143
143
  directives: transformedField.directives.filter(function (directive) {
144
144
  return directive !== connectionDirective;
145
145
  }),
@@ -228,8 +228,7 @@ function buildConnectionArguments(field, connectionDirective) {
228
228
  useCustomizedBatch: useCustomizedBatchArg,
229
229
  label: key
230
230
  };
231
- } // T45504512: new connection model
232
-
231
+ }
233
232
 
234
233
  var dynamicKeyArg = connectionDirective.args.find(function (arg) {
235
234
  return arg.name === 'dynamicKey_UNSTABLE';
@@ -452,7 +451,7 @@ function transformConnectionSelections(context, field, nullableType, direction,
452
451
  throw createCompilerError('ConnectionTransform: Expected generated pageInfo selection to be ' + 'a LinkedField', [field.loc]);
453
452
  }
454
453
 
455
- transformedPageInfoSelection = _objectSpread({}, transformedPageInfoSelection, {
454
+ transformedPageInfoSelection = _objectSpread(_objectSpread({}, transformedPageInfoSelection), {}, {
456
455
  selections: [].concat((0, _toConsumableArray2["default"])(transformedPageInfoSelection.selections), [{
457
456
  directives: [],
458
457
  kind: 'InlineFragment',
@@ -481,7 +480,7 @@ function transformConnectionSelections(context, field, nullableType, direction,
481
480
  var edgeAst = parse(edgeText);
482
481
  var edgeFragment = RelayParser.transform(schema, [edgeAst.definitions[0]])[0]; // When streaming the edges field needs @stream
483
482
 
484
- transformedEdgesSelection = _objectSpread({}, transformedEdgesSelection, {
483
+ transformedEdgesSelection = _objectSpread(_objectSpread({}, transformedEdgesSelection), {}, {
485
484
  directives: streamDirective != null ? [].concat((0, _toConsumableArray2["default"])(transformedEdgesSelection.directives), [streamDirective]) : transformedEdgesSelection.directives,
486
485
  selections: [].concat((0, _toConsumableArray2["default"])(transformedEdgesSelection.selections), [{
487
486
  directives: [],