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
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Relay v10.0.1
3
+ * Relay v10.1.0
4
4
  *
5
5
  * Copyright (c) Facebook, Inc. and its affiliates.
6
6
  *
@@ -91,7 +91,7 @@ module.exports =
91
91
  /******/
92
92
  /******/
93
93
  /******/ // Load entry module and return exports
94
- /******/ return __webpack_require__(__webpack_require__.s = 49);
94
+ /******/ return __webpack_require__(__webpack_require__.s = 50);
95
95
  /******/ })
96
96
  /************************************************************************/
97
97
  /******/ ([
@@ -117,9 +117,9 @@ module.exports = require("@babel/runtime/helpers/interopRequireDefault");
117
117
  // flowlint ambiguous-object-type:error
118
118
 
119
119
 
120
- 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; } } }; }
120
+ 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; } } }; }
121
121
 
122
- 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); }
122
+ 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); }
123
123
 
124
124
  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; }
125
125
 
@@ -747,7 +747,7 @@ module.exports = require("fbjs/lib/invariant");
747
747
  // flowlint ambiguous-object-type:error
748
748
 
749
749
 
750
- var _asyncToGenerator = __webpack_require__(10);
750
+ var _asyncToGenerator = __webpack_require__(11);
751
751
 
752
752
  var invariant = __webpack_require__(5);
753
753
  /**
@@ -1155,13 +1155,13 @@ module.exports = {
1155
1155
  /* 10 */
1156
1156
  /***/ (function(module, exports) {
1157
1157
 
1158
- module.exports = require("@babel/runtime/helpers/asyncToGenerator");
1158
+ module.exports = require("relay-runtime");
1159
1159
 
1160
1160
  /***/ }),
1161
1161
  /* 11 */
1162
1162
  /***/ (function(module, exports) {
1163
1163
 
1164
- module.exports = require("relay-runtime");
1164
+ module.exports = require("@babel/runtime/helpers/asyncToGenerator");
1165
1165
 
1166
1166
  /***/ }),
1167
1167
  /* 12 */
@@ -1183,12 +1183,6 @@ module.exports = require("immutable");
1183
1183
 
1184
1184
  /***/ }),
1185
1185
  /* 15 */
1186
- /***/ (function(module, exports) {
1187
-
1188
- module.exports = require("nullthrows");
1189
-
1190
- /***/ }),
1191
- /* 16 */
1192
1186
  /***/ (function(module, exports, __webpack_require__) {
1193
1187
 
1194
1188
  "use strict";
@@ -1228,6 +1222,12 @@ function partitionArray(array, predicate) {
1228
1222
 
1229
1223
  module.exports = partitionArray;
1230
1224
 
1225
+ /***/ }),
1226
+ /* 16 */
1227
+ /***/ (function(module, exports) {
1228
+
1229
+ module.exports = require("nullthrows");
1230
+
1231
1231
  /***/ }),
1232
1232
  /* 17 */
1233
1233
  /***/ (function(module, exports, __webpack_require__) {
@@ -1362,9 +1362,9 @@ var _interopRequireDefault = __webpack_require__(0);
1362
1362
 
1363
1363
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
1364
1364
 
1365
- 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; } } }; }
1365
+ 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; } } }; }
1366
1366
 
1367
- 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); }
1367
+ 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); }
1368
1368
 
1369
1369
  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; }
1370
1370
 
@@ -1412,7 +1412,7 @@ function inferRootArgumentDefinitions(context) {
1412
1412
  case 'Fragment':
1413
1413
  {
1414
1414
  var argumentDefinitions = transformFragmentArguments(context, transformed, node);
1415
- return _objectSpread({}, node, {
1415
+ return _objectSpread(_objectSpread({}, node), {}, {
1416
1416
  argumentDefinitions: Array.from(argumentDefinitions.values())
1417
1417
  });
1418
1418
  }
@@ -1462,7 +1462,7 @@ function transformRoot(context, transformed, root) {
1462
1462
  }
1463
1463
 
1464
1464
  visit(context, transformed, argumentDefinitions, root);
1465
- return _objectSpread({}, root, {
1465
+ return _objectSpread(_objectSpread({}, root), {}, {
1466
1466
  argumentDefinitions: Array.from(argumentDefinitions.values(), function (argDef) {
1467
1467
  var _localDefinition$type, _localDefinition$defa;
1468
1468
 
@@ -1723,9 +1723,9 @@ module.exports = inferRootArgumentDefinitions;
1723
1723
  // flowlint ambiguous-object-type:error
1724
1724
 
1725
1725
 
1726
- 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; } } }; }
1726
+ 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; } } }; }
1727
1727
 
1728
- 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); }
1728
+ 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); }
1729
1729
 
1730
1730
  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; }
1731
1731
 
@@ -1824,11 +1824,11 @@ module.exports = {
1824
1824
  // flowlint ambiguous-object-type:error
1825
1825
 
1826
1826
 
1827
- var _asyncToGenerator = __webpack_require__(10);
1827
+ var _asyncToGenerator = __webpack_require__(11);
1828
1828
 
1829
- var childProcess = __webpack_require__(54);
1829
+ var childProcess = __webpack_require__(55);
1830
1830
 
1831
- var watchman = __webpack_require__(55);
1831
+ var watchman = __webpack_require__(56);
1832
1832
 
1833
1833
  var MAX_ATTEMPT_LIMIT = 5;
1834
1834
 
@@ -1995,6 +1995,7 @@ var _require2 = __webpack_require__(14),
1995
1995
  * For each document, the context stores the IR and any validation errors.
1996
1996
  */
1997
1997
  var CompilerContext = /*#__PURE__*/function () {
1998
+ // $FlowFixMe[value-as-type]
1998
1999
  function CompilerContext(schema) {
1999
2000
  this._isMutable = false;
2000
2001
  this._documents = new ImmutableOrderedMap();
@@ -2180,7 +2181,7 @@ module.exports = require("@babel/types");
2180
2181
 
2181
2182
  var _interopRequireDefault = __webpack_require__(0);
2182
2183
 
2183
- var _asyncToGenerator = __webpack_require__(10);
2184
+ var _asyncToGenerator = __webpack_require__(11);
2184
2185
 
2185
2186
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
2186
2187
 
@@ -2532,6 +2533,7 @@ var ASTCache = /*#__PURE__*/function () {
2532
2533
  this._baseDir = config.baseDir;
2533
2534
  this._parse = Profiler.instrument(config.parse, 'ASTCache.parseFn');
2534
2535
  } // Short-term: we don't do subscriptions/delta updates, instead always use all definitions
2536
+ // $FlowFixMe[value-as-type]
2535
2537
 
2536
2538
 
2537
2539
  var _proto = ASTCache.prototype;
@@ -2605,17 +2607,17 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
2605
2607
 
2606
2608
  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; }
2607
2609
 
2608
- 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; } } }; }
2610
+ 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; } } }; }
2609
2611
 
2610
- 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); }
2612
+ 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); }
2611
2613
 
2612
2614
  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; }
2613
2615
 
2614
2616
  var Profiler = __webpack_require__(6);
2615
2617
 
2616
- var orList = __webpack_require__(63);
2618
+ var orList = __webpack_require__(64);
2617
2619
 
2618
- var partitionArray = __webpack_require__(16);
2620
+ var partitionArray = __webpack_require__(15);
2619
2621
 
2620
2622
  var _require = __webpack_require__(29),
2621
2623
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
@@ -3208,7 +3210,7 @@ var GraphQLDefinitionParser = /*#__PURE__*/function () {
3208
3210
  directives = _this4$_splitConditio[1];
3209
3211
 
3210
3212
  var conditionalNodes = applyConditions(conditions, // $FlowFixMe[incompatible-call]
3211
- [_objectSpread({}, node, {
3213
+ [_objectSpread(_objectSpread({}, node), {}, {
3212
3214
  directives: directives
3213
3215
  })]);
3214
3216
 
@@ -3902,7 +3904,7 @@ function buildLocation(loc) {
3902
3904
  function applyConditions(conditions, selections) {
3903
3905
  var nextSelections = selections;
3904
3906
  conditions.forEach(function (condition) {
3905
- nextSelections = [_objectSpread({}, condition, {
3907
+ nextSelections = [_objectSpread(_objectSpread({}, condition), {}, {
3906
3908
  selections: nextSelections
3907
3909
  })];
3908
3910
  });
@@ -4009,9 +4011,9 @@ module.exports = {
4009
4011
  // flowlint ambiguous-object-type:error
4010
4012
 
4011
4013
 
4012
- 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; } } }; }
4014
+ 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; } } }; }
4013
4015
 
4014
- 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); }
4016
+ 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); }
4015
4017
 
4016
4018
  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; }
4017
4019
 
@@ -4447,11 +4449,10 @@ function printValue(schema, value, type) {
4447
4449
  if (value.kind === 'Variable') {
4448
4450
  return '$' + value.variableName;
4449
4451
  } else if (value.kind === 'ObjectValue') {
4450
- !(type && schema.isInputObject(type)) ? true ? invariant(false, 'GraphQLIRPrinter: Need an InputObject type to print objects.') : undefined : void 0;
4451
- var inputType = schema.assertInputObjectType(type);
4452
+ var inputType = type != null ? schema.asInputObjectType(type) : null;
4452
4453
  var pairs = value.fields.map(function (field) {
4453
- var fieldConfig = type != null ? schema.hasField(inputType, field.name) ? schema.getFieldConfig(schema.expectField(inputType, field.name)) : null : null;
4454
- var innerValue = fieldConfig && printValue(schema, field.value, fieldConfig.type);
4454
+ var fieldConfig = inputType != null ? schema.hasField(inputType, field.name) ? schema.getFieldConfig(schema.expectField(inputType, field.name)) : null : null;
4455
+ var innerValue = printValue(schema, field.value, fieldConfig === null || fieldConfig === void 0 ? void 0 : fieldConfig.type);
4455
4456
  return innerValue == null ? null : field.name + ': ' + innerValue;
4456
4457
  }).filter(Boolean);
4457
4458
  return '{' + pairs.join(', ') + '}';
@@ -4599,9 +4600,9 @@ module.exports = argumentContainsVariables;
4599
4600
  */
4600
4601
 
4601
4602
 
4602
- 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; } } }; }
4603
+ 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; } } }; }
4603
4604
 
4604
- 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); }
4605
+ 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); }
4605
4606
 
4606
4607
  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; }
4607
4608
 
@@ -5128,7 +5129,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
5128
5129
 
5129
5130
  var IRTransformer = __webpack_require__(3);
5130
5131
 
5131
- var areEqual = __webpack_require__(85);
5132
+ var areEqual = __webpack_require__(87);
5132
5133
 
5133
5134
  var getIdentifierForSelection = __webpack_require__(39);
5134
5135
 
@@ -5153,9 +5154,10 @@ function flattenTransformImpl(context, options) {
5153
5154
  Condition: visitorFn,
5154
5155
  Defer: visitorFn,
5155
5156
  Fragment: visitorFn,
5156
- InlineFragment: visitorFn,
5157
5157
  InlineDataFragmentSpread: visitorFn,
5158
+ InlineFragment: visitorFn,
5158
5159
  LinkedField: visitorFn,
5160
+ ModuleImport: visitorFn,
5159
5161
  Root: visitorFn,
5160
5162
  SplitOperation: visitorFn
5161
5163
  }, function () {
@@ -5192,7 +5194,7 @@ function memoizedFlattenSelection(cache) {
5192
5194
 
5193
5195
  var nextSelections = new Map();
5194
5196
  var hasFlattened = flattenSelectionsInto(context.getSchema(), nextSelections, node, state, type);
5195
- var flattenedNode = hasFlattened ? _objectSpread({}, node, {
5197
+ var flattenedNode = hasFlattened ? _objectSpread(_objectSpread({}, node), {}, {
5196
5198
  selections: Array.from(nextSelections.values())
5197
5199
  }) : node;
5198
5200
  state.parentType = type;
@@ -5232,7 +5234,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
5232
5234
  throw createCompilerError("FlattenTransform: Expected an InlineFragment, got a '".concat(selection.kind, "'"), [selection.loc]);
5233
5235
  }
5234
5236
 
5235
- flattenedSelections.set(nodeIdentifier, _objectSpread({}, flattenedSelection, {
5237
+ flattenedSelections.set(nodeIdentifier, _objectSpread(_objectSpread({}, flattenedSelection), {}, {
5236
5238
  selections: mergeSelections(schema, flattenedSelection, selection, state, selection.typeCondition)
5237
5239
  }));
5238
5240
  } else if (flattenedSelection.kind === 'Condition') {
@@ -5240,7 +5242,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
5240
5242
  throw createCompilerError("FlattenTransform: Expected a Condition, got a '".concat(selection.kind, "'"), [selection.loc]);
5241
5243
  }
5242
5244
 
5243
- flattenedSelections.set(nodeIdentifier, _objectSpread({}, flattenedSelection, {
5245
+ flattenedSelections.set(nodeIdentifier, _objectSpread(_objectSpread({}, flattenedSelection), {}, {
5244
5246
  selections: mergeSelections(schema, flattenedSelection, selection, state, type)
5245
5247
  }));
5246
5248
  } else if (flattenedSelection.kind === 'ClientExtension') {
@@ -5248,7 +5250,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
5248
5250
  throw createCompilerError("FlattenTransform: Expected a ClientExtension, got a '".concat(selection.kind, "'"), [selection.loc]);
5249
5251
  }
5250
5252
 
5251
- flattenedSelections.set(nodeIdentifier, _objectSpread({}, flattenedSelection, {
5253
+ flattenedSelections.set(nodeIdentifier, _objectSpread(_objectSpread({}, flattenedSelection), {}, {
5252
5254
  selections: mergeSelections(schema, flattenedSelection, selection, state, type)
5253
5255
  }));
5254
5256
  } else if (flattenedSelection.kind === 'FragmentSpread') {// Ignore duplicate fragment spreads.
@@ -5261,7 +5263,7 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
5261
5263
  throw createUserError('Found conflicting @module selections: use a unique alias on the ' + 'parent fields.', [selection.loc, flattenedSelection.loc]);
5262
5264
  }
5263
5265
 
5264
- flattenedSelections.set(nodeIdentifier, _objectSpread({}, flattenedSelection, {
5266
+ flattenedSelections.set(nodeIdentifier, _objectSpread(_objectSpread({}, flattenedSelection), {}, {
5265
5267
  selections: mergeSelections(schema, flattenedSelection, selection, state, type)
5266
5268
  }));
5267
5269
  } else if (flattenedSelection.kind === 'Defer') {
@@ -5269,9 +5271,9 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
5269
5271
  throw createCompilerError("FlattenTransform: Expected a Defer, got a '".concat(selection.kind, "'"), [selection.loc]);
5270
5272
  }
5271
5273
 
5272
- flattenedSelections.set(nodeIdentifier, _objectSpread({
5274
+ flattenedSelections.set(nodeIdentifier, _objectSpread(_objectSpread({
5273
5275
  kind: 'Defer'
5274
- }, flattenedSelection, {
5276
+ }, flattenedSelection), {}, {
5275
5277
  selections: mergeSelections(schema, flattenedSelection, selection, state, type)
5276
5278
  }));
5277
5279
  } else if (flattenedSelection.kind === 'Stream') {
@@ -5279,9 +5281,9 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
5279
5281
  throw createCompilerError("FlattenTransform: Expected a Stream, got a '".concat(selection.kind, "'"), [selection.loc]);
5280
5282
  }
5281
5283
 
5282
- flattenedSelections.set(nodeIdentifier, _objectSpread({
5284
+ flattenedSelections.set(nodeIdentifier, _objectSpread(_objectSpread({
5283
5285
  kind: 'Stream'
5284
- }, flattenedSelection, {
5286
+ }, flattenedSelection), {}, {
5285
5287
  selections: mergeSelections(schema, flattenedSelection, selection, state, type)
5286
5288
  }));
5287
5289
  } else if (flattenedSelection.kind === 'LinkedField') {
@@ -5312,9 +5314,9 @@ function flattenSelectionsInto(schema, flattenedSelections, node, state, type) {
5312
5314
  assertUniqueArgsForAlias(selection, flattenedSelection);
5313
5315
 
5314
5316
  if (selection.handles && selection.handles.length > 0) {
5315
- flattenedSelections.set(nodeIdentifier, _objectSpread({
5317
+ flattenedSelections.set(nodeIdentifier, _objectSpread(_objectSpread({
5316
5318
  kind: 'ScalarField'
5317
- }, flattenedSelection, {
5319
+ }, flattenedSelection), {}, {
5318
5320
  handles: mergeHandles(selection, flattenedSelection)
5319
5321
  }));
5320
5322
  }
@@ -5515,9 +5517,9 @@ var _interopRequireDefault = __webpack_require__(0);
5515
5517
 
5516
5518
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
5517
5519
 
5518
- 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; } } }; }
5520
+ 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; } } }; }
5519
5521
 
5520
- 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); }
5522
+ 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); }
5521
5523
 
5522
5524
  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; }
5523
5525
 
@@ -5529,7 +5531,7 @@ var IRTransformer = __webpack_require__(3);
5529
5531
 
5530
5532
  var invariant = __webpack_require__(5);
5531
5533
 
5532
- var joinArgumentDefinitions = __webpack_require__(90);
5534
+ var joinArgumentDefinitions = __webpack_require__(92);
5533
5535
 
5534
5536
  var _require = __webpack_require__(1),
5535
5537
  createUserError = _require.createUserError;
@@ -5557,7 +5559,7 @@ function visitFragment(fragment, state) {
5557
5559
  }
5558
5560
 
5559
5561
  var joinedArgumentDefinitions = joinArgumentDefinitions(this.getContext().getSchema(), fragment, state.reachableArguments, '@relay(unmask: true)');
5560
- return _objectSpread({}, result, {
5562
+ return _objectSpread(_objectSpread({}, result), {}, {
5561
5563
  argumentDefinitions: joinedArgumentDefinitions
5562
5564
  });
5563
5565
  }
@@ -5662,7 +5664,7 @@ var _require = __webpack_require__(1),
5662
5664
  createCompilerError = _require.createCompilerError,
5663
5665
  createUserError = _require.createUserError;
5664
5666
 
5665
- var _require2 = __webpack_require__(11),
5667
+ var _require2 = __webpack_require__(10),
5666
5668
  getModuleComponentKey = _require2.getModuleComponentKey,
5667
5669
  getModuleOperationKey = _require2.getModuleOperationKey;
5668
5670
 
@@ -5696,7 +5698,7 @@ function matchTransform(context) {
5696
5698
  }
5697
5699
 
5698
5700
  function visitInlineFragment(node, state) {
5699
- return this.traverse(node, _objectSpread({}, state, {
5701
+ return this.traverse(node, _objectSpread(_objectSpread({}, state), {}, {
5700
5702
  parentType: node.typeCondition
5701
5703
  }));
5702
5704
  }
@@ -5743,7 +5745,7 @@ function visitLinkedField(node, state) {
5743
5745
  }
5744
5746
 
5745
5747
  state.path.push(node);
5746
- var transformedNode = this.traverse(node, _objectSpread({}, state, {
5748
+ var transformedNode = this.traverse(node, _objectSpread(_objectSpread({}, state), {}, {
5747
5749
  moduleKey: moduleKey,
5748
5750
  parentType: node.type
5749
5751
  }));
@@ -5767,6 +5769,10 @@ function visitLinkedField(node, state) {
5767
5769
  });
5768
5770
 
5769
5771
  if (supportedArgumentDefinition == null) {
5772
+ if (moduleKey == null) {
5773
+ throw createUserError('@match on a field without the `supported` argument is a no-op, please remove the `@match`.', [node.loc]);
5774
+ }
5775
+
5770
5776
  return transformedNode;
5771
5777
  }
5772
5778
 
@@ -6050,7 +6056,7 @@ function visitFragmentSpread(spread, _ref2) {
6050
6056
  module: moduleName,
6051
6057
  sourceDocument: documentName,
6052
6058
  name: spread.name,
6053
- selections: [_objectSpread({}, spread, {
6059
+ selections: [_objectSpread(_objectSpread({}, spread), {}, {
6054
6060
  directives: spread.directives.filter(function (directive) {
6055
6061
  return directive !== moduleDirective;
6056
6062
  })
@@ -6123,7 +6129,7 @@ var _require = __webpack_require__(1),
6123
6129
  createUserError = _require.createUserError,
6124
6130
  eachWithCombinedError = _require.eachWithCombinedError;
6125
6131
 
6126
- var _require2 = __webpack_require__(91),
6132
+ var _require2 = __webpack_require__(94),
6127
6133
  buildRefetchOperation = _require2.buildRefetchOperation;
6128
6134
 
6129
6135
  var SCHEMA_EXTENSION = "\n directive @refetchable(\n queryName: String!\n ) on FRAGMENT_DEFINITION\n";
@@ -6159,8 +6165,8 @@ function refetchableFragmentTransform(context) {
6159
6165
  transformedFragment = _buildRefetchOperatio.transformedFragment;
6160
6166
 
6161
6167
  var connectionMetadata = extractConnectionMetadata(context.getSchema(), transformedFragment);
6162
- nextContext = nextContext.replace(_objectSpread({}, transformedFragment, {
6163
- metadata: _objectSpread({}, transformedFragment.metadata || {}, {
6168
+ nextContext = nextContext.replace(_objectSpread(_objectSpread({}, transformedFragment), {}, {
6169
+ metadata: _objectSpread(_objectSpread({}, transformedFragment.metadata || {}), {}, {
6164
6170
  refetch: {
6165
6171
  connection: connectionMetadata !== null && connectionMetadata !== void 0 ? connectionMetadata : null,
6166
6172
  operation: refetchName,
@@ -6169,8 +6175,8 @@ function refetchableFragmentTransform(context) {
6169
6175
  }
6170
6176
  })
6171
6177
  }));
6172
- nextContext = nextContext.add(_objectSpread({}, node, {
6173
- metadata: _objectSpread({}, node.metadata || {}, {
6178
+ nextContext = nextContext.add(_objectSpread(_objectSpread({}, node), {}, {
6179
+ metadata: _objectSpread(_objectSpread({}, node.metadata || {}), {}, {
6174
6180
  derivedFrom: transformedFragment.name,
6175
6181
  isRefetchableQuery: true
6176
6182
  })
@@ -6405,12 +6411,12 @@ function visitRelayMetadata(metadataFn) {
6405
6411
 
6406
6412
  var argValues = getLiteralArgumentValues(relayDirective.args);
6407
6413
  var metadata = metadataFn(argValues);
6408
- return this.traverse(_objectSpread({}, node, {
6414
+ return this.traverse(_objectSpread(_objectSpread({}, node), {}, {
6409
6415
  directives: node.directives.filter(function (directive) {
6410
6416
  return directive !== relayDirective;
6411
6417
  }),
6412
6418
  // $FlowFixMe[cannot-spread-indexer]
6413
- metadata: _objectSpread({}, node.metadata || {}, {}, metadata)
6419
+ metadata: _objectSpread(_objectSpread({}, node.metadata || {}), metadata)
6414
6420
  }));
6415
6421
  };
6416
6422
  }
@@ -6463,9 +6469,9 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
6463
6469
 
6464
6470
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
6465
6471
 
6466
- 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; } } }; }
6472
+ 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; } } }; }
6467
6473
 
6468
- 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); }
6474
+ 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); }
6469
6475
 
6470
6476
  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; }
6471
6477
 
@@ -6487,11 +6493,13 @@ var RefetchableFragmentTransform = __webpack_require__(44);
6487
6493
 
6488
6494
  var RelayDirectiveTransform = __webpack_require__(45);
6489
6495
 
6496
+ var RequiredFieldTransform = __webpack_require__(47);
6497
+
6490
6498
  var generateAbstractTypeRefinementKey = __webpack_require__(17);
6491
6499
 
6492
- var partitionArray = __webpack_require__(16);
6500
+ var partitionArray = __webpack_require__(15);
6493
6501
 
6494
- var _require = __webpack_require__(47),
6502
+ var _require = __webpack_require__(48),
6495
6503
  anyTypeAlias = _require.anyTypeAlias,
6496
6504
  declareExportOpaqueType = _require.declareExportOpaqueType,
6497
6505
  exactObjectTypeAnnotation = _require.exactObjectTypeAnnotation,
@@ -6505,17 +6513,17 @@ var _require = __webpack_require__(47),
6505
6513
  readOnlyObjectTypeProperty = _require.readOnlyObjectTypeProperty,
6506
6514
  unionTypeAnnotation = _require.unionTypeAnnotation;
6507
6515
 
6508
- var _require2 = __webpack_require__(96),
6516
+ var _require2 = __webpack_require__(99),
6509
6517
  transformInputType = _require2.transformInputType,
6510
6518
  transformScalarType = _require2.transformScalarType;
6511
6519
 
6512
- var babelGenerator = __webpack_require__(97)["default"];
6520
+ var babelGenerator = __webpack_require__(100)["default"];
6513
6521
 
6514
6522
  var t = __webpack_require__(25);
6515
6523
 
6516
6524
  var invariant = __webpack_require__(5);
6517
6525
 
6518
- var nullthrows = __webpack_require__(15);
6526
+ var nullthrows = __webpack_require__(16);
6519
6527
 
6520
6528
  function generate(schema, node, options) {
6521
6529
  var ast = IRVisitor.visit(node, createVisitor(schema, options));
@@ -6609,14 +6617,14 @@ function selectionsToBabel(schema, selections, state, unmasked, fragmentTypeName
6609
6617
 
6610
6618
  for (var concreteType in byConcreteType) {
6611
6619
  selectionMap = mergeSelections(selectionMap, selectionsToMap(byConcreteType[concreteType].map(function (sel) {
6612
- return _objectSpread({}, sel, {
6620
+ return _objectSpread(_objectSpread({}, sel), {}, {
6613
6621
  conditional: true
6614
6622
  });
6615
6623
  })));
6616
6624
  }
6617
6625
 
6618
6626
  var selectionMapValues = groupRefs(Array.from(selectionMap.values())).map(function (sel) {
6619
- return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, _objectSpread({}, sel, {
6627
+ return isTypenameSelection(sel) && sel.concreteType ? makeProp(schema, _objectSpread(_objectSpread({}, sel), {}, {
6620
6628
  conditional: false
6621
6629
  }), state, unmasked, sel.concreteType) : makeProp(schema, sel, state, unmasked);
6622
6630
  });
@@ -6637,7 +6645,7 @@ function mergeSelection(a, b) {
6637
6645
 
6638
6646
  if (!a) {
6639
6647
  if (shouldSetConditional) {
6640
- return _objectSpread({}, b, {
6648
+ return _objectSpread(_objectSpread({}, b), {}, {
6641
6649
  conditional: true
6642
6650
  });
6643
6651
  }
@@ -6645,7 +6653,7 @@ function mergeSelection(a, b) {
6645
6653
  return b;
6646
6654
  }
6647
6655
 
6648
- return _objectSpread({}, a, {
6656
+ return _objectSpread(_objectSpread({}, a), {}, {
6649
6657
  nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, nullthrows(b.nodeSelections), shouldSetConditional) : null,
6650
6658
  conditional: a.conditional && b.conditional
6651
6659
  });
@@ -6712,10 +6720,19 @@ function createVisitor(schema, options) {
6712
6720
  return {
6713
6721
  leave: {
6714
6722
  Root: function Root(node) {
6723
+ var _node$metadata;
6724
+
6715
6725
  var inputVariablesType = generateInputVariablesType(schema, node, state);
6716
6726
  var inputObjectTypes = generateInputObjectTypes(state);
6717
- var responseType = exportType("".concat(node.name, "Response"), selectionsToBabel(schema, // $FlowFixMe[incompatible-cast] : selections have already been transformed
6718
- node.selections, state, false));
6727
+ var responseTypeDefinition = selectionsToBabel(schema,
6728
+ /* $FlowFixMe: selections have already been transformed */
6729
+ node.selections, state, false);
6730
+
6731
+ if (((_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.childrenCanBubbleNull) === true) {
6732
+ responseTypeDefinition = t.nullableTypeAnnotation(responseTypeDefinition);
6733
+ }
6734
+
6735
+ var responseType = exportType("".concat(node.name, "Response"), responseTypeDefinition);
6719
6736
  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
6720
6737
 
6721
6738
  var rawResponseType;
@@ -6766,6 +6783,8 @@ function createVisitor(schema, options) {
6766
6783
  return t.program(babelNodes);
6767
6784
  },
6768
6785
  Fragment: function Fragment(node) {
6786
+ var _node$metadata2;
6787
+
6769
6788
  var selections = flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
6770
6789
  node.selections);
6771
6790
  var numConecreteSelections = selections.filter(function (s) {
@@ -6773,7 +6792,7 @@ function createVisitor(schema, options) {
6773
6792
  }).length;
6774
6793
  selections = selections.map(function (selection) {
6775
6794
  if (numConecreteSelections <= 1 && isTypenameSelection(selection) && !schema.isAbstractType(node.type)) {
6776
- return [_objectSpread({}, selection, {
6795
+ return [_objectSpread(_objectSpread({}, selection), {}, {
6777
6796
  concreteType: schema.getTypeString(node.type)
6778
6797
  })];
6779
6798
  }
@@ -6793,15 +6812,20 @@ function createVisitor(schema, options) {
6793
6812
  var unmasked = node.metadata != null && node.metadata.mask === false;
6794
6813
  var baseType = selectionsToBabel(schema, selections, state, unmasked, unmasked ? undefined : getOldFragmentTypeName(node.name));
6795
6814
  var type = isPluralFragment ? readOnlyArrayOfType(baseType) : baseType;
6815
+
6816
+ if (((_node$metadata2 = node.metadata) === null || _node$metadata2 === void 0 ? void 0 : _node$metadata2.childrenCanBubbleNull) === true) {
6817
+ type = t.nullableTypeAnnotation(type);
6818
+ }
6819
+
6796
6820
  state.runtimeImports.add('FragmentReference');
6797
6821
  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)]));
6798
6822
  },
6799
6823
  InlineFragment: function InlineFragment(node) {
6800
6824
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
6801
6825
  node.selections).map(function (typeSelection) {
6802
- return schema.isAbstractType(node.typeCondition) ? _objectSpread({}, typeSelection, {
6826
+ return schema.isAbstractType(node.typeCondition) ? _objectSpread(_objectSpread({}, typeSelection), {}, {
6803
6827
  conditional: true
6804
- }) : _objectSpread({}, typeSelection, {
6828
+ }) : _objectSpread(_objectSpread({}, typeSelection), {}, {
6805
6829
  concreteType: schema.getTypeString(node.typeCondition)
6806
6830
  });
6807
6831
  });
@@ -6809,7 +6833,7 @@ function createVisitor(schema, options) {
6809
6833
  Condition: function Condition(node) {
6810
6834
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
6811
6835
  node.selections).map(function (selection) {
6812
- return _objectSpread({}, selection, {
6836
+ return _objectSpread(_objectSpread({}, selection), {}, {
6813
6837
  conditional: true
6814
6838
  });
6815
6839
  });
@@ -6817,7 +6841,9 @@ function createVisitor(schema, options) {
6817
6841
  ScalarField: function ScalarField(node) {
6818
6842
  return visitScalarField(schema, node, state);
6819
6843
  },
6820
- LinkedField: visitLinkedField,
6844
+ LinkedField: function LinkedField(node) {
6845
+ return visitLinkedField(schema, node);
6846
+ },
6821
6847
  ModuleImport: function ModuleImport(node) {
6822
6848
  return [{
6823
6849
  key: '__fragmentPropName',
@@ -6849,18 +6875,55 @@ function visitNodeWithSelectionsOnly(node) {
6849
6875
  }
6850
6876
 
6851
6877
  function visitScalarField(schema, node, state) {
6878
+ var _node$metadata3;
6879
+
6880
+ var requiredMetadata = (_node$metadata3 = node.metadata) === null || _node$metadata3 === void 0 ? void 0 : _node$metadata3.required;
6881
+ var nodeType = requiredMetadata != null ? schema.getNonNullType(node.type) : node.type;
6852
6882
  return [{
6853
6883
  key: node.alias,
6854
6884
  schemaName: node.name,
6855
- value: transformScalarType(schema, node.type, state)
6885
+ value: transformScalarType(schema, nodeType, state)
6856
6886
  }];
6857
6887
  }
6858
6888
 
6859
- function visitLinkedField(node) {
6889
+ function getLinkedFieldNodeType(schema, node) {
6890
+ var _node$metadata4, _node$metadata5;
6891
+
6892
+ var requiredMetadata = (_node$metadata4 = node.metadata) === null || _node$metadata4 === void 0 ? void 0 : _node$metadata4.required;
6893
+
6894
+ if (requiredMetadata != null) {
6895
+ return schema.getNonNullType(node.type);
6896
+ }
6897
+
6898
+ if (((_node$metadata5 = node.metadata) === null || _node$metadata5 === void 0 ? void 0 : _node$metadata5.childrenCanBubbleNull) === true) {
6899
+ if (schema.isList(node.type)) {
6900
+ // In a plural field, nulls bubble up to the item, resulting in a list of nullable items.
6901
+ return schema.mapListItemType(node.type, function (inner) {
6902
+ return schema.getNullableType(inner);
6903
+ });
6904
+ } else if (schema.isNonNull(node.type)) {
6905
+ var nullable = schema.getNullableType(node.type);
6906
+
6907
+ if (schema.isList(nullable)) {
6908
+ return schema.getNonNullType(schema.mapListItemType(nullable, function (inner) {
6909
+ return schema.getNullableType(inner);
6910
+ }));
6911
+ }
6912
+
6913
+ return nullable;
6914
+ }
6915
+
6916
+ return node.type;
6917
+ }
6918
+
6919
+ return node.type;
6920
+ }
6921
+
6922
+ function visitLinkedField(schema, node) {
6860
6923
  return [{
6861
6924
  key: node.alias,
6862
6925
  schemaName: node.name,
6863
- nodeType: node.type,
6926
+ nodeType: getLinkedFieldNodeType(schema, node),
6864
6927
  nodeSelections: selectionsToMap(flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
6865
6928
  node.selections),
6866
6929
  /*
@@ -6951,7 +7014,7 @@ function appendLocal3DPayload(types, selections, schema, state, currentType) {
6951
7014
  if (moduleImport) {
6952
7015
  // Generate an extra opaque type for client 3D fields
6953
7016
  state.runtimeImports.add('Local3DPayload');
6954
- types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(moduleImport.documentName), exactObjectTypeAnnotation(selections.filter(function (sel) {
7017
+ types.push(t.genericTypeAnnotation(t.identifier('Local3DPayload'), t.typeParameterInstantiation([t.stringLiteralTypeAnnotation(nullthrows(moduleImport.documentName)), exactObjectTypeAnnotation(selections.filter(function (sel) {
6955
7018
  return sel.schemaName !== 'js';
6956
7019
  }).map(function (selection) {
6957
7020
  return makeRawResponseProp(schema, selection, state, currentType);
@@ -6971,7 +7034,7 @@ function createRawResponseTypeVisitor(schema, state) {
6971
7034
  var typeCondition = node.typeCondition;
6972
7035
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
6973
7036
  node.selections).map(function (typeSelection) {
6974
- return schema.isAbstractType(typeCondition) ? typeSelection : _objectSpread({}, typeSelection, {
7037
+ return schema.isAbstractType(typeCondition) ? typeSelection : _objectSpread(_objectSpread({}, typeSelection), {}, {
6975
7038
  concreteType: schema.getTypeString(typeCondition)
6976
7039
  });
6977
7040
  });
@@ -6982,12 +7045,14 @@ function createRawResponseTypeVisitor(schema, state) {
6982
7045
  ClientExtension: function ClientExtension(node) {
6983
7046
  return flattenArray( // $FlowFixMe[incompatible-cast] : selections have already been transformed
6984
7047
  node.selections).map(function (sel) {
6985
- return _objectSpread({}, sel, {
7048
+ return _objectSpread(_objectSpread({}, sel), {}, {
6986
7049
  conditional: true
6987
7050
  });
6988
7051
  });
6989
7052
  },
6990
- LinkedField: visitLinkedField,
7053
+ LinkedField: function LinkedField(node) {
7054
+ return visitLinkedField(schema, node);
7055
+ },
6991
7056
  Condition: visitNodeWithSelectionsOnly,
6992
7057
  Defer: visitNodeWithSelectionsOnly,
6993
7058
  Stream: visitNodeWithSelectionsOnly,
@@ -7243,7 +7308,7 @@ function getDataTypeName(name) {
7243
7308
  return "".concat(name, "$data");
7244
7309
  }
7245
7310
 
7246
- var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
7311
+ var FLOW_TRANSFORMS = [RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RequiredFieldTransform.transform, FlattenTransform.transformWithOptions({}), RefetchableFragmentTransform.transform];
7247
7312
  var DIRECTIVE_NAME = 'raw_response_type';
7248
7313
  module.exports = {
7249
7314
  generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'),
@@ -7268,197 +7333,583 @@ module.exports = {
7268
7333
  // flowlint ambiguous-object-type:error
7269
7334
 
7270
7335
 
7271
- var invariant = __webpack_require__(5);
7336
+ var _interopRequireDefault = __webpack_require__(0);
7272
7337
 
7273
- var t = __webpack_require__(25);
7338
+ var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
7274
7339
 
7275
- /**
7276
- * type NAME = any;
7277
- */
7278
- function anyTypeAlias(name) {
7279
- return t.typeAlias(t.identifier(name), null, t.anyTypeAnnotation());
7280
- }
7281
- /**
7282
- * {|
7283
- * PROPS
7284
- * |}
7285
- */
7340
+ var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
7286
7341
 
7342
+ 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; } } }; }
7287
7343
 
7288
- function exactObjectTypeAnnotation(props) {
7289
- var typeAnnotation = t.objectTypeAnnotation(props);
7290
- typeAnnotation.exact = true;
7291
- return typeAnnotation;
7292
- }
7293
- /**
7294
- * {
7295
- * PROPS
7296
- * ...
7297
- * }
7298
- */
7344
+ 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); }
7299
7345
 
7346
+ 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; }
7300
7347
 
7301
- function inexactObjectTypeAnnotation(props) {
7302
- var typeAnnotation = t.objectTypeAnnotation(props);
7303
- typeAnnotation.inexact = true;
7304
- return typeAnnotation;
7305
- }
7306
- /**
7307
- * export type NAME = TYPE
7308
- */
7348
+ 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; }
7309
7349
 
7350
+ 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; }
7310
7351
 
7311
- function exportType(name, type) {
7312
- return t.exportNamedDeclaration(t.typeAlias(t.identifier(name), null, type), [], null);
7313
- }
7314
- /**
7315
- * export type {A, B, C}
7316
- */
7352
+ var IRTransformer = __webpack_require__(3);
7317
7353
 
7354
+ var partitionArray = __webpack_require__(15);
7318
7355
 
7319
- function exportTypes(names) {
7320
- var res = t.exportNamedDeclaration(null, names.map(function (name) {
7321
- return t.exportSpecifier(t.identifier(name), t.identifier(name));
7322
- }), null);
7323
- res.exportKind = 'type';
7324
- return res;
7325
- }
7326
- /**
7327
- * declare export type NAME = VALUE
7328
- */
7356
+ var _require = __webpack_require__(1),
7357
+ createUserError = _require.createUserError,
7358
+ createCompilerError = _require.createCompilerError;
7329
7359
 
7360
+ var _require2 = __webpack_require__(10),
7361
+ RelayFeatureFlags = _require2.RelayFeatureFlags;
7330
7362
 
7331
- function declareExportOpaqueType(name, value) {
7332
- return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name), null, t.genericTypeAnnotation(t.identifier(value))));
7333
- }
7363
+ var SCHEMA_EXTENSION = "\n enum RequiredFieldAction {\n NONE\n LOG\n THROW\n }\n directive @required(\n action: RequiredFieldAction!\n ) on FIELD\n";
7334
7364
  /**
7335
- * import type {NAMES[0], NAMES[1], ...} from 'MODULE';
7365
+ * This transform rewrites ScalarField and LinkedField nodes with a @required
7366
+ * directive into fields with the directives stripped and sets the `required`
7367
+ * and `path` metadata values.
7336
7368
  */
7337
7369
 
7370
+ function requiredFieldTransform(context) {
7371
+ var schema = context.getSchema();
7372
+ return IRTransformer.transform(context, {
7373
+ LinkedField: visitLinkedField,
7374
+ ScalarField: vistitScalarField,
7375
+ InlineFragment: visitInlineFragment,
7376
+ Fragment: visitFragment,
7377
+ Root: visitRoot
7378
+ }, function (node) {
7379
+ return {
7380
+ schema: schema,
7381
+ documentName: node.name,
7382
+ path: [],
7383
+ pathRequiredMap: new Map(),
7384
+ currentNodeRequiredChildren: new Map(),
7385
+ requiredChildrenMap: new Map(),
7386
+ parentAbstractInlineFragment: null
7387
+ };
7388
+ });
7389
+ }
7338
7390
 
7339
- function importTypes(names, module) {
7340
- var importDeclaration = t.importDeclaration(names.map(function (name) {
7341
- return t.importSpecifier(t.identifier(name), t.identifier(name));
7342
- }), t.stringLiteral(module));
7343
- importDeclaration.importKind = 'type';
7344
- return importDeclaration;
7391
+ function visitFragment(fragment, state) {
7392
+ return addChildrenCanBubbleMetadata(this.traverse(fragment, state), state);
7345
7393
  }
7346
- /**
7347
- * Create an intersection type if needed.
7348
- *
7349
- * TYPES[0] & TYPES[1] & ...
7350
- */
7351
7394
 
7395
+ function visitRoot(root, state) {
7396
+ return addChildrenCanBubbleMetadata(this.traverse(root, state), state);
7397
+ }
7352
7398
 
7353
- function intersectionTypeAnnotation(types) {
7354
- !(types.length > 0) ? true ? invariant(false, 'RelayFlowBabelFactories: cannot create an intersection of 0 types') : undefined : void 0;
7355
- return types.length === 1 ? types[0] : t.intersectionTypeAnnotation(types);
7399
+ function visitInlineFragment(fragment, state) {
7400
+ var _state$parentAbstract;
7401
+
7402
+ // Ideally we could allow @required when the direct parent inline fragment was
7403
+ // on a concrete type, but we would need to solve this bug in our Flow type
7404
+ // generation first: T65695438
7405
+ var parentAbstractInlineFragment = (_state$parentAbstract = state.parentAbstractInlineFragment) !== null && _state$parentAbstract !== void 0 ? _state$parentAbstract : getAbstractInlineFragment(fragment, state.schema);
7406
+ return this.traverse(fragment, _objectSpread(_objectSpread({}, state), {}, {
7407
+ parentAbstractInlineFragment: parentAbstractInlineFragment
7408
+ }));
7356
7409
  }
7357
7410
 
7358
- function lineComments() {
7359
- for (var _len = arguments.length, lines = new Array(_len), _key = 0; _key < _len; _key++) {
7360
- lines[_key] = arguments[_key];
7411
+ function getAbstractInlineFragment(fragment, schema) {
7412
+ var typeCondition = fragment.typeCondition;
7413
+
7414
+ if (schema.isAbstractType(typeCondition)) {
7415
+ return fragment;
7361
7416
  }
7362
7417
 
7363
- return lines.map(function (line) {
7364
- return {
7365
- type: 'CommentLine',
7366
- value: ' ' + line
7367
- };
7368
- });
7369
- }
7370
- /**
7371
- * $ReadOnlyArray<TYPE>
7372
- */
7418
+ return null;
7419
+ } // Convert action to a number so that we can numerically compare their severity.
7373
7420
 
7374
7421
 
7375
- function readOnlyArrayOfType(thing) {
7376
- return t.genericTypeAnnotation(t.identifier('$ReadOnlyArray'), t.typeParameterInstantiation([thing]));
7377
- }
7378
- /**
7379
- * +KEY: VALUE
7380
- */
7422
+ function getActionSeverity(action) {
7423
+ switch (action) {
7424
+ case 'NONE':
7425
+ return 0;
7381
7426
 
7427
+ case 'LOG':
7428
+ return 1;
7382
7429
 
7383
- function readOnlyObjectTypeProperty(key, value) {
7384
- var prop = t.objectTypeProperty(t.identifier(key), value);
7385
- prop.variance = t.variance('plus');
7386
- return prop;
7430
+ case 'THROW':
7431
+ return 2;
7432
+
7433
+ default:
7434
+ action;
7435
+ throw createCompilerError("Unhandled action type ".concat(action));
7436
+ }
7387
7437
  }
7388
7438
 
7389
- function stringLiteralTypeAnnotation(value) {
7390
- return t.stringLiteralTypeAnnotation(value);
7439
+ function visitLinkedField(field, state) {
7440
+ var path = [].concat((0, _toConsumableArray2["default"])(state.path), [field.alias]);
7441
+
7442
+ var newState = _objectSpread(_objectSpread({}, state), {}, {
7443
+ currentNodeRequiredChildren: new Map(),
7444
+ path: path,
7445
+ parentAbstractInlineFragment: null
7446
+ });
7447
+
7448
+ var newField = this.traverse(field, newState);
7449
+ var pathName = path.join('.');
7450
+ assertCompatibleRequiredChildren(field, pathName, newState);
7451
+ newField = applyDirectives(newField, pathName, state.documentName);
7452
+ assertCompatibleNullability(newField, pathName, newState.pathRequiredMap);
7453
+ var directiveMetadata = getRequiredDirectiveMetadata(newField);
7454
+
7455
+ if (directiveMetadata != null) {
7456
+ assertParentIsNotInvalidInlineFragmet(state.schema, directiveMetadata, state.parentAbstractInlineFragment);
7457
+ state.currentNodeRequiredChildren.set(field.alias, newField);
7458
+ var severity = getActionSeverity(directiveMetadata.action); // Assert that all @required children have at least this severity.
7459
+
7460
+ newState.currentNodeRequiredChildren.forEach(function (childField) {
7461
+ var childMetadata = getRequiredDirectiveMetadata(childField);
7462
+
7463
+ if (childMetadata == null) {
7464
+ return;
7465
+ }
7466
+
7467
+ if (getActionSeverity(childMetadata.action) < severity) {
7468
+ throw createUserError("The @required field [1] may not have an `action` less severe than that of its @required parent [2]. [1] should probably be `action: ".concat(directiveMetadata.action, "`."), [childMetadata.actionLoc, directiveMetadata.actionLoc]);
7469
+ }
7470
+ });
7471
+ }
7472
+
7473
+ state.requiredChildrenMap.set(pathName, newState.currentNodeRequiredChildren);
7474
+ return addChildrenCanBubbleMetadata(newField, newState);
7391
7475
  }
7392
- /**
7393
- * Create a union type if needed.
7394
- *
7395
- * TYPES[0] | TYPES[1] | ...
7396
- */
7397
7476
 
7477
+ function vistitScalarField(field, state) {
7478
+ var pathName = [].concat((0, _toConsumableArray2["default"])(state.path), [field.alias]).join('.');
7479
+ var newField = applyDirectives(field, pathName, state.documentName);
7480
+ var directiveMetadata = getRequiredDirectiveMetadata(newField);
7398
7481
 
7399
- function unionTypeAnnotation(types) {
7400
- !(types.length > 0) ? true ? invariant(false, 'RelayFlowBabelFactories: cannot create a union of 0 types') : undefined : void 0;
7401
- return types.length === 1 ? types[0] : t.unionTypeAnnotation(types);
7482
+ if (directiveMetadata != null) {
7483
+ assertParentIsNotInvalidInlineFragmet(state.schema, directiveMetadata, state.parentAbstractInlineFragment);
7484
+ state.currentNodeRequiredChildren.set(field.alias, newField);
7485
+ }
7486
+
7487
+ assertCompatibleNullability(newField, pathName, state.pathRequiredMap);
7488
+ return newField;
7402
7489
  }
7403
7490
 
7404
- module.exports = {
7405
- anyTypeAlias: anyTypeAlias,
7406
- declareExportOpaqueType: declareExportOpaqueType,
7407
- exactObjectTypeAnnotation: exactObjectTypeAnnotation,
7408
- inexactObjectTypeAnnotation: inexactObjectTypeAnnotation,
7409
- exportType: exportType,
7410
- exportTypes: exportTypes,
7411
- importTypes: importTypes,
7412
- intersectionTypeAnnotation: intersectionTypeAnnotation,
7413
- lineComments: lineComments,
7414
- readOnlyArrayOfType: readOnlyArrayOfType,
7415
- readOnlyObjectTypeProperty: readOnlyObjectTypeProperty,
7416
- stringLiteralTypeAnnotation: stringLiteralTypeAnnotation,
7417
- unionTypeAnnotation: unionTypeAnnotation
7418
- };
7491
+ function addChildrenCanBubbleMetadata(node, state) {
7492
+ var _iterator = _createForOfIteratorHelper(state.currentNodeRequiredChildren.values()),
7493
+ _step;
7419
7494
 
7420
- /***/ }),
7421
- /* 48 */
7422
- /***/ (function(module, exports) {
7495
+ try {
7496
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
7497
+ var child = _step.value;
7498
+ var requiredMetadata = getRequiredDirectiveMetadata(child);
7423
7499
 
7424
- module.exports = require("util");
7500
+ if (requiredMetadata != null && requiredMetadata.action !== 'THROW') {
7501
+ var metadata = _objectSpread(_objectSpread({}, node.metadata), {}, {
7502
+ childrenCanBubbleNull: true
7503
+ });
7425
7504
 
7426
- /***/ }),
7427
- /* 49 */
7428
- /***/ (function(module, exports, __webpack_require__) {
7505
+ return _objectSpread(_objectSpread({}, node), {}, {
7506
+ metadata: metadata
7507
+ });
7508
+ }
7509
+ }
7510
+ } catch (err) {
7511
+ _iterator.e(err);
7512
+ } finally {
7513
+ _iterator.f();
7514
+ }
7429
7515
 
7430
- "use strict";
7431
- /**
7432
- * Copyright (c) Facebook, Inc. and its affiliates.
7433
- *
7434
- * This source code is licensed under the MIT license found in the
7435
- * LICENSE file in the root directory of this source tree.
7436
- *
7437
- *
7438
- * @format
7439
- */
7440
- // flowlint ambiguous-object-type:error
7516
+ return node;
7517
+ }
7441
7518
 
7519
+ function assertParentIsNotInvalidInlineFragmet(schema, directiveMetadata, parentAbstractInlineFragment) {
7520
+ if (parentAbstractInlineFragment == null) {
7521
+ return;
7522
+ }
7442
7523
 
7443
- var _yargs = __webpack_require__(50);
7524
+ var typeCondition = parentAbstractInlineFragment.typeCondition;
7444
7525
 
7445
- var _require = __webpack_require__(51),
7446
- main = _require.main;
7526
+ if (schema.isUnion(typeCondition)) {
7527
+ throw createUserError('The @required directive [1] may not be used anywhere within an inline fragment on a union type [2].', [directiveMetadata.directiveLoc, parentAbstractInlineFragment.loc]);
7528
+ } else if (schema.isInterface(typeCondition)) {
7529
+ throw createUserError('The @required directive [1] may not be used anywhere within an inline fragment on an interface type [2].', [directiveMetadata.directiveLoc, parentAbstractInlineFragment.loc]);
7530
+ } else {
7531
+ throw createCompilerError('Unexpected abstract inline fragment type.', [parentAbstractInlineFragment.loc]);
7532
+ }
7533
+ } // Check that this field's nullability matches all other instances.
7447
7534
 
7448
- var RelayConfig;
7449
7535
 
7450
- try {
7451
- // eslint-disable-next-line no-eval
7452
- RelayConfig = eval('require')('relay-config'); // eslint-disable-next-line lint/no-unused-catch-bindings
7453
- } catch (_) {}
7536
+ function assertCompatibleNullability(field, pathName, pathRequiredMap) {
7537
+ var existingField = pathRequiredMap.get(pathName);
7454
7538
 
7455
- var options = {
7456
- schema: {
7457
- describe: 'Path to schema.graphql or schema.json',
7458
- demandOption: true,
7459
- type: 'string',
7460
- array: false
7461
- },
7539
+ if (existingField == null) {
7540
+ pathRequiredMap.set(pathName, field);
7541
+ return;
7542
+ }
7543
+
7544
+ var requiredMetadata = getRequiredDirectiveMetadata(field);
7545
+ var existingRequiredMetadata = getRequiredDirectiveMetadata(existingField);
7546
+
7547
+ if ((requiredMetadata === null || requiredMetadata === void 0 ? void 0 : requiredMetadata.action) === (existingRequiredMetadata === null || existingRequiredMetadata === void 0 ? void 0 : existingRequiredMetadata.action)) {
7548
+ return;
7549
+ }
7550
+
7551
+ if (requiredMetadata == null) {
7552
+ throw createUserError("The field \"".concat(field.alias, "\" is @required in [1] but not in [2]."), [existingField.loc, field.loc]);
7553
+ }
7554
+
7555
+ if (existingRequiredMetadata == null) {
7556
+ throw createUserError("The field \"".concat(field.alias, "\" is @required in [1] but not in [2]."), [field.loc, existingField.loc]);
7557
+ }
7558
+
7559
+ throw createUserError("The field \"".concat(field.alias, "\" has a different @required action in [1] than in [2]."), [requiredMetadata.actionLoc, existingRequiredMetadata.actionLoc]);
7560
+ } // Metadata is untyped, so we use this utility function to do the type coersion.
7561
+
7562
+
7563
+ function getRequiredDirectiveMetadata(field) {
7564
+ var _field$metadata;
7565
+
7566
+ return (_field$metadata = field.metadata) === null || _field$metadata === void 0 ? void 0 : _field$metadata.required;
7567
+ } // Check that this field has the same required children as all other instances.
7568
+
7569
+
7570
+ function assertCompatibleRequiredChildren(field, fieldPath, _ref) {
7571
+ var currentNodeRequiredChildren = _ref.currentNodeRequiredChildren,
7572
+ pathRequiredMap = _ref.pathRequiredMap,
7573
+ requiredChildrenMap = _ref.requiredChildrenMap;
7574
+ var previouslyRequiredChildren = requiredChildrenMap.get(fieldPath);
7575
+
7576
+ if (previouslyRequiredChildren == null) {
7577
+ return;
7578
+ } // Check if this field has a required child field which was previously omitted.
7579
+
7580
+
7581
+ var _iterator2 = _createForOfIteratorHelper(currentNodeRequiredChildren),
7582
+ _step2;
7583
+
7584
+ try {
7585
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
7586
+ var _step2$value = _step2.value,
7587
+ path = _step2$value[0],
7588
+ childField = _step2$value[1];
7589
+
7590
+ if (!previouslyRequiredChildren.has(path)) {
7591
+ var otherParent = pathRequiredMap.get(fieldPath);
7592
+
7593
+ if (otherParent == null) {
7594
+ throw createCompilerError("Could not find other parent node at path \"".concat(fieldPath, "\"."), [childField.loc]);
7595
+ }
7596
+
7597
+ throw createMissingRequiredFieldError(childField, otherParent);
7598
+ }
7599
+ } // Check if a previous reference to this field had a required child field which we are missing.
7600
+
7601
+ } catch (err) {
7602
+ _iterator2.e(err);
7603
+ } finally {
7604
+ _iterator2.f();
7605
+ }
7606
+
7607
+ var _iterator3 = _createForOfIteratorHelper(previouslyRequiredChildren),
7608
+ _step3;
7609
+
7610
+ try {
7611
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
7612
+ var _step3$value = _step3.value,
7613
+ _path = _step3$value[0],
7614
+ _childField = _step3$value[1];
7615
+
7616
+ if (!currentNodeRequiredChildren.has(_path)) {
7617
+ throw createMissingRequiredFieldError(_childField, field);
7618
+ }
7619
+ }
7620
+ } catch (err) {
7621
+ _iterator3.e(err);
7622
+ } finally {
7623
+ _iterator3.f();
7624
+ }
7625
+ }
7626
+
7627
+ function createMissingRequiredFieldError(requiredChild, missingParent) {
7628
+ var alias = requiredChild.alias;
7629
+ return createUserError("The field \"".concat(alias, "\" is marked as @required in [1] but is missing in [2]."), [requiredChild.loc, missingParent.loc]);
7630
+ } // TODO T74397896: Remove prefix gating once @required is rolled out more broadly.
7631
+
7632
+
7633
+ function featureIsEnabled(documentName) {
7634
+ var featureFlag = RelayFeatureFlags.ENABLE_REQUIRED_DIRECTIVES;
7635
+
7636
+ if (typeof featureFlag === 'boolean') {
7637
+ return featureFlag;
7638
+ } else if (featureFlag === 'LIMITED') {
7639
+ return documentName.startsWith('RelayRequiredTest');
7640
+ } else if (typeof featureFlag === 'string') {
7641
+ return featureFlag.split('|').some(function (prefix) {
7642
+ return documentName.startsWith(prefix);
7643
+ });
7644
+ }
7645
+
7646
+ return false;
7647
+ } // Strip and validate @required directives, and convert them to metadata.
7648
+
7649
+
7650
+ function applyDirectives(field, pathName, documentName) {
7651
+ var _partitionArray = partitionArray(field.directives, function (directive) {
7652
+ return directive.name === 'required';
7653
+ }),
7654
+ requiredDirectives = _partitionArray[0],
7655
+ otherDirectives = _partitionArray[1];
7656
+
7657
+ if (requiredDirectives.length === 0) {
7658
+ return field;
7659
+ }
7660
+
7661
+ if (!featureIsEnabled(documentName)) {
7662
+ throw new createUserError( // Purposefully don't include details in this error message, since we
7663
+ // don't want folks adopting this feature until it's been tested more.
7664
+ 'The @required directive is experimental and not yet supported for use in product code', requiredDirectives.map(function (x) {
7665
+ return x.loc;
7666
+ }));
7667
+ }
7668
+
7669
+ if (requiredDirectives.length > 1) {
7670
+ throw new createUserError('Did not expect multiple @required directives.', requiredDirectives.map(function (x) {
7671
+ return x.loc;
7672
+ }));
7673
+ }
7674
+
7675
+ var requiredDirective = requiredDirectives[0];
7676
+ var arg = requiredDirective.args[0]; // I would expect this check to be handled by the schema validation, but...
7677
+
7678
+ if (arg == null) {
7679
+ throw createUserError('The @required directive requires an `action` argument.', [requiredDirective.loc]);
7680
+ }
7681
+
7682
+ if (arg.value.kind !== 'Literal') {
7683
+ throw createUserError('Expected @required `action` argument to be a literal.', [arg.value.loc]);
7684
+ }
7685
+
7686
+ return _objectSpread(_objectSpread({}, field), {}, {
7687
+ directives: otherDirectives,
7688
+ metadata: _objectSpread(_objectSpread({}, field.metadata), {}, {
7689
+ required: {
7690
+ action: arg.value.value,
7691
+ actionLoc: arg.loc,
7692
+ directiveLoc: requiredDirective.loc,
7693
+ path: pathName
7694
+ }
7695
+ })
7696
+ });
7697
+ } // Transform @required directive to metadata
7698
+
7699
+
7700
+ module.exports = {
7701
+ SCHEMA_EXTENSION: SCHEMA_EXTENSION,
7702
+ transform: requiredFieldTransform
7703
+ };
7704
+
7705
+ /***/ }),
7706
+ /* 48 */
7707
+ /***/ (function(module, exports, __webpack_require__) {
7708
+
7709
+ "use strict";
7710
+ /**
7711
+ * Copyright (c) Facebook, Inc. and its affiliates.
7712
+ *
7713
+ * This source code is licensed under the MIT license found in the
7714
+ * LICENSE file in the root directory of this source tree.
7715
+ *
7716
+ *
7717
+ * @format
7718
+ */
7719
+ // flowlint ambiguous-object-type:error
7720
+
7721
+
7722
+ var invariant = __webpack_require__(5);
7723
+
7724
+ var t = __webpack_require__(25);
7725
+
7726
+ /**
7727
+ * type NAME = any;
7728
+ */
7729
+ function anyTypeAlias(name) {
7730
+ return t.typeAlias(t.identifier(name), undefined, t.anyTypeAnnotation());
7731
+ }
7732
+ /**
7733
+ * {|
7734
+ * PROPS
7735
+ * |}
7736
+ */
7737
+
7738
+
7739
+ function exactObjectTypeAnnotation(props) {
7740
+ var typeAnnotation = t.objectTypeAnnotation(props);
7741
+ typeAnnotation.exact = true;
7742
+ return typeAnnotation;
7743
+ }
7744
+ /**
7745
+ * {
7746
+ * PROPS
7747
+ * ...
7748
+ * }
7749
+ */
7750
+
7751
+
7752
+ function inexactObjectTypeAnnotation(props) {
7753
+ var typeAnnotation = t.objectTypeAnnotation(props);
7754
+ typeAnnotation.inexact = true;
7755
+ return typeAnnotation;
7756
+ }
7757
+ /**
7758
+ * export type NAME = TYPE
7759
+ */
7760
+
7761
+
7762
+ function exportType(name, type) {
7763
+ return t.exportNamedDeclaration(t.typeAlias(t.identifier(name), undefined, type), [], undefined);
7764
+ }
7765
+ /**
7766
+ * export type {A, B, C}
7767
+ */
7768
+
7769
+
7770
+ function exportTypes(names) {
7771
+ var res = t.exportNamedDeclaration(undefined, names.map(function (name) {
7772
+ return t.exportSpecifier(t.identifier(name), t.identifier(name));
7773
+ }), undefined);
7774
+ res.exportKind = 'type';
7775
+ return res;
7776
+ }
7777
+ /**
7778
+ * declare export type NAME = VALUE
7779
+ */
7780
+
7781
+
7782
+ function declareExportOpaqueType(name, value) {
7783
+ return t.declareExportDeclaration(t.declareOpaqueType(t.identifier(name), undefined, t.genericTypeAnnotation(t.identifier(value))));
7784
+ }
7785
+ /**
7786
+ * import type {NAMES[0], NAMES[1], ...} from 'MODULE';
7787
+ */
7788
+
7789
+
7790
+ function importTypes(names, module) {
7791
+ var importDeclaration = t.importDeclaration(names.map(function (name) {
7792
+ return t.importSpecifier(t.identifier(name), t.identifier(name));
7793
+ }), t.stringLiteral(module));
7794
+ importDeclaration.importKind = 'type';
7795
+ return importDeclaration;
7796
+ }
7797
+ /**
7798
+ * Create an intersection type if needed.
7799
+ *
7800
+ * TYPES[0] & TYPES[1] & ...
7801
+ */
7802
+
7803
+
7804
+ function intersectionTypeAnnotation(types) {
7805
+ !(types.length > 0) ? true ? invariant(false, 'RelayFlowBabelFactories: cannot create an intersection of 0 types') : undefined : void 0;
7806
+ return types.length === 1 ? types[0] : t.intersectionTypeAnnotation(types);
7807
+ }
7808
+
7809
+ function lineComments() {
7810
+ for (var _len = arguments.length, lines = new Array(_len), _key = 0; _key < _len; _key++) {
7811
+ lines[_key] = arguments[_key];
7812
+ }
7813
+
7814
+ return lines.map(function (line) {
7815
+ return {
7816
+ type: 'CommentLine',
7817
+ value: ' ' + line
7818
+ };
7819
+ });
7820
+ }
7821
+ /**
7822
+ * $ReadOnlyArray<TYPE>
7823
+ */
7824
+
7825
+
7826
+ function readOnlyArrayOfType(thing) {
7827
+ return t.genericTypeAnnotation(t.identifier('$ReadOnlyArray'), t.typeParameterInstantiation([thing]));
7828
+ }
7829
+ /**
7830
+ * +KEY: VALUE
7831
+ */
7832
+
7833
+
7834
+ function readOnlyObjectTypeProperty(key, value) {
7835
+ var prop = t.objectTypeProperty(t.identifier(key), value);
7836
+ prop.variance = t.variance('plus');
7837
+ return prop;
7838
+ }
7839
+
7840
+ function stringLiteralTypeAnnotation(value) {
7841
+ return t.stringLiteralTypeAnnotation(value);
7842
+ }
7843
+ /**
7844
+ * Create a union type if needed.
7845
+ *
7846
+ * TYPES[0] | TYPES[1] | ...
7847
+ */
7848
+
7849
+
7850
+ function unionTypeAnnotation(types) {
7851
+ !(types.length > 0) ? true ? invariant(false, 'RelayFlowBabelFactories: cannot create a union of 0 types') : undefined : void 0;
7852
+ return types.length === 1 ? types[0] : t.unionTypeAnnotation(types);
7853
+ }
7854
+
7855
+ module.exports = {
7856
+ anyTypeAlias: anyTypeAlias,
7857
+ declareExportOpaqueType: declareExportOpaqueType,
7858
+ exactObjectTypeAnnotation: exactObjectTypeAnnotation,
7859
+ inexactObjectTypeAnnotation: inexactObjectTypeAnnotation,
7860
+ exportType: exportType,
7861
+ exportTypes: exportTypes,
7862
+ importTypes: importTypes,
7863
+ intersectionTypeAnnotation: intersectionTypeAnnotation,
7864
+ lineComments: lineComments,
7865
+ readOnlyArrayOfType: readOnlyArrayOfType,
7866
+ readOnlyObjectTypeProperty: readOnlyObjectTypeProperty,
7867
+ stringLiteralTypeAnnotation: stringLiteralTypeAnnotation,
7868
+ unionTypeAnnotation: unionTypeAnnotation
7869
+ };
7870
+
7871
+ /***/ }),
7872
+ /* 49 */
7873
+ /***/ (function(module, exports) {
7874
+
7875
+ module.exports = require("util");
7876
+
7877
+ /***/ }),
7878
+ /* 50 */
7879
+ /***/ (function(module, exports, __webpack_require__) {
7880
+
7881
+ "use strict";
7882
+ /**
7883
+ * Copyright (c) Facebook, Inc. and its affiliates.
7884
+ *
7885
+ * This source code is licensed under the MIT license found in the
7886
+ * LICENSE file in the root directory of this source tree.
7887
+ *
7888
+ *
7889
+ * @format
7890
+ */
7891
+ // flowlint ambiguous-object-type:error
7892
+
7893
+
7894
+ var _yargs = __webpack_require__(51);
7895
+
7896
+ var _require = __webpack_require__(52),
7897
+ main = _require.main;
7898
+
7899
+ var RelayConfig;
7900
+
7901
+ try {
7902
+ // eslint-disable-next-line no-eval
7903
+ RelayConfig = eval('require')('relay-config'); // eslint-disable-next-line lint/no-unused-catch-bindings
7904
+ } catch (_) {}
7905
+
7906
+ var options = {
7907
+ schema: {
7908
+ describe: 'Path to schema.graphql or schema.json',
7909
+ demandOption: true,
7910
+ type: 'string',
7911
+ array: false
7912
+ },
7462
7913
  src: {
7463
7914
  describe: 'Root directory of application code',
7464
7915
  demandOption: true,
@@ -7573,13 +8024,13 @@ main(argv)["catch"](function (error) {
7573
8024
  });
7574
8025
 
7575
8026
  /***/ }),
7576
- /* 50 */
8027
+ /* 51 */
7577
8028
  /***/ (function(module, exports) {
7578
8029
 
7579
8030
  module.exports = require("yargs");
7580
8031
 
7581
8032
  /***/ }),
7582
- /* 51 */
8033
+ /* 52 */
7583
8034
  /***/ (function(module, exports, __webpack_require__) {
7584
8035
 
7585
8036
  "use strict";
@@ -7597,15 +8048,15 @@ module.exports = require("yargs");
7597
8048
 
7598
8049
  var _interopRequireDefault = __webpack_require__(0);
7599
8050
 
7600
- var _asyncToGenerator = __webpack_require__(10);
8051
+ var _asyncToGenerator = __webpack_require__(11);
7601
8052
 
7602
8053
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
7603
8054
 
7604
8055
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
7605
8056
 
7606
- 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; } } }; }
8057
+ 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; } } }; }
7607
8058
 
7608
- 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); }
8059
+ 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); }
7609
8060
 
7610
8061
  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; }
7611
8062
 
@@ -7613,19 +8064,19 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
7613
8064
 
7614
8065
  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; }
7615
8066
 
7616
- var CodegenRunner = __webpack_require__(52);
8067
+ var CodegenRunner = __webpack_require__(53);
7617
8068
 
7618
- var ConsoleReporter = __webpack_require__(58);
8069
+ var ConsoleReporter = __webpack_require__(59);
7619
8070
 
7620
- var DotGraphQLParser = __webpack_require__(60);
8071
+ var DotGraphQLParser = __webpack_require__(61);
7621
8072
 
7622
- var RelayFileWriter = __webpack_require__(61);
8073
+ var RelayFileWriter = __webpack_require__(62);
7623
8074
 
7624
- var RelayIRTransforms = __webpack_require__(74);
8075
+ var RelayIRTransforms = __webpack_require__(75);
7625
8076
 
7626
- var RelayLanguagePluginJavaScript = __webpack_require__(109);
8077
+ var RelayLanguagePluginJavaScript = __webpack_require__(112);
7627
8078
 
7628
- var RelaySourceModuleParser = __webpack_require__(113);
8079
+ var RelaySourceModuleParser = __webpack_require__(116);
7629
8080
 
7630
8081
  var WatchmanClient = __webpack_require__(22);
7631
8082
 
@@ -7633,7 +8084,7 @@ var crypto = __webpack_require__(13);
7633
8084
 
7634
8085
  var fs = __webpack_require__(12);
7635
8086
 
7636
- var glob = __webpack_require__(118);
8087
+ var glob = __webpack_require__(121);
7637
8088
 
7638
8089
  var invariant = __webpack_require__(5);
7639
8090
 
@@ -7809,7 +8260,7 @@ function getPathBasedConfig(config) {
7809
8260
  }
7810
8261
  }
7811
8262
 
7812
- return _objectSpread({}, config, {
8263
+ return _objectSpread(_objectSpread({}, config), {}, {
7813
8264
  schema: schema,
7814
8265
  src: src,
7815
8266
  persistOutput: persistOutput
@@ -7827,7 +8278,7 @@ function _getWatchConfig() {
7827
8278
  if (config.watch) {
7828
8279
  if (!watchman) {
7829
8280
  console.error('Watchman is required to watch for changes. Running with watch mode disabled.');
7830
- return _objectSpread({}, config, {
8281
+ return _objectSpread(_objectSpread({}, config), {}, {
7831
8282
  watch: false,
7832
8283
  watchman: false
7833
8284
  });
@@ -7841,7 +8292,7 @@ function _getWatchConfig() {
7841
8292
  console.log('HINT: pass --watch to keep watching for changes.');
7842
8293
  }
7843
8294
 
7844
- return _objectSpread({}, config, {
8295
+ return _objectSpread(_objectSpread({}, config), {}, {
7845
8296
  watchman: watchman
7846
8297
  });
7847
8298
  });
@@ -8077,7 +8528,7 @@ module.exports = {
8077
8528
  };
8078
8529
 
8079
8530
  /***/ }),
8080
- /* 52 */
8531
+ /* 53 */
8081
8532
  /***/ (function(module, exports, __webpack_require__) {
8082
8533
 
8083
8534
  "use strict";
@@ -8095,19 +8546,19 @@ module.exports = {
8095
8546
 
8096
8547
  var _interopRequireDefault = __webpack_require__(0);
8097
8548
 
8098
- var _asyncToGenerator = __webpack_require__(10);
8549
+ var _asyncToGenerator = __webpack_require__(11);
8099
8550
 
8100
8551
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
8101
8552
 
8102
- 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; } } }; }
8553
+ 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; } } }; }
8103
8554
 
8104
- 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); }
8555
+ 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); }
8105
8556
 
8106
8557
  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; }
8107
8558
 
8108
8559
  var CodegenDirectory = __webpack_require__(26);
8109
8560
 
8110
- var CodegenWatcher = __webpack_require__(53);
8561
+ var CodegenWatcher = __webpack_require__(54);
8111
8562
 
8112
8563
  var GraphQLWatchmanClient = __webpack_require__(22);
8113
8564
 
@@ -8117,7 +8568,7 @@ var invariant = __webpack_require__(5);
8117
8568
 
8118
8569
  var path = __webpack_require__(8);
8119
8570
 
8120
- var _require = __webpack_require__(56),
8571
+ var _require = __webpack_require__(57),
8121
8572
  createSchema = _require.create;
8122
8573
  /* $FlowFixMe[untyped-import] - importing immutable, which is untyped (and flow
8123
8574
  * is sad about it) */
@@ -8520,7 +8971,7 @@ function anyFileFilter(file) {
8520
8971
  module.exports = CodegenRunner;
8521
8972
 
8522
8973
  /***/ }),
8523
- /* 53 */
8974
+ /* 54 */
8524
8975
  /***/ (function(module, exports, __webpack_require__) {
8525
8976
 
8526
8977
  "use strict";
@@ -8536,7 +8987,7 @@ module.exports = CodegenRunner;
8536
8987
  // flowlint ambiguous-object-type:error
8537
8988
 
8538
8989
 
8539
- var _asyncToGenerator = __webpack_require__(10);
8990
+ var _asyncToGenerator = __webpack_require__(11);
8540
8991
 
8541
8992
  var GraphQLWatchmanClient = __webpack_require__(22);
8542
8993
 
@@ -8797,19 +9248,19 @@ module.exports = {
8797
9248
  };
8798
9249
 
8799
9250
  /***/ }),
8800
- /* 54 */
9251
+ /* 55 */
8801
9252
  /***/ (function(module, exports) {
8802
9253
 
8803
9254
  module.exports = require("child_process");
8804
9255
 
8805
9256
  /***/ }),
8806
- /* 55 */
9257
+ /* 56 */
8807
9258
  /***/ (function(module, exports) {
8808
9259
 
8809
9260
  module.exports = require("fb-watchman");
8810
9261
 
8811
9262
  /***/ }),
8812
- /* 56 */
9263
+ /* 57 */
8813
9264
  /***/ (function(module, exports, __webpack_require__) {
8814
9265
 
8815
9266
  "use strict";
@@ -8828,11 +9279,11 @@ module.exports = require("fb-watchman");
8828
9279
 
8829
9280
  var _interopRequireDefault = __webpack_require__(0);
8830
9281
 
8831
- var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(57));
9282
+ var _inheritsLoose2 = _interopRequireDefault(__webpack_require__(58));
8832
9283
 
8833
- 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; } } }; }
9284
+ 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; } } }; }
8834
9285
 
8835
- 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); }
9286
+ 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); }
8836
9287
 
8837
9288
  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; }
8838
9289
 
@@ -9013,12 +9464,13 @@ var NonNull = /*#__PURE__*/function () {
9013
9464
  */
9014
9465
 
9015
9466
 
9016
- var Field = function Field(schema, name, type, belongsTo, args, isClient) {
9467
+ var Field = function Field(schema, name, type, belongsTo, args, directives, isClient) {
9017
9468
  this.name = name;
9018
9469
  this.type = type;
9019
9470
  this.belongsTo = belongsTo;
9020
9471
  this.isClient = isClient;
9021
9472
  this.args = parseInputArgumentDefinitionsMap(schema, args);
9473
+ this.directives = directives;
9022
9474
  };
9023
9475
  /**
9024
9476
  * @private
@@ -9275,6 +9727,27 @@ var Schema = /*#__PURE__*/function () {
9275
9727
  return type;
9276
9728
  };
9277
9729
 
9730
+ _proto4.mapListItemType = function mapListItemType(type, mapper) {
9731
+ if (!(type instanceof List)) {
9732
+ throw createCompilerError('Expected List type');
9733
+ }
9734
+
9735
+ var innerType = mapper(type.ofType);
9736
+ var cacheKey = "[".concat(this.getTypeString(innerType), "]");
9737
+
9738
+ var newType = this._typeWrappersMap.get(cacheKey);
9739
+
9740
+ if (newType) {
9741
+ return newType;
9742
+ }
9743
+
9744
+ newType = new List(innerType);
9745
+
9746
+ this._typeWrappersMap.set(cacheKey, newType);
9747
+
9748
+ return newType;
9749
+ };
9750
+
9278
9751
  _proto4.areEqualTypes = function areEqualTypes(typeA, typeB) {
9279
9752
  if (typeA === typeB) {
9280
9753
  return true;
@@ -9482,6 +9955,14 @@ var Schema = /*#__PURE__*/function () {
9482
9955
  return type;
9483
9956
  };
9484
9957
 
9958
+ _proto4.asInputObjectType = function asInputObjectType(type) {
9959
+ if (!_isInputObject(type)) {
9960
+ return null;
9961
+ }
9962
+
9963
+ return type;
9964
+ };
9965
+
9485
9966
  _proto4.assertInterfaceType = function assertInterfaceType(type) {
9486
9967
  if (!_isInterface(type)) {
9487
9968
  throw createCompilerError("Expected ".concat(this.getTypeString(type), " to be an interface type."));
@@ -9790,7 +10271,7 @@ var Schema = /*#__PURE__*/function () {
9790
10271
  fieldName = _step$value[0],
9791
10272
  fieldDefinition = _step$value[1];
9792
10273
  var fieldType = this.expectTypeFromAST(fieldDefinition.type);
9793
- fieldsMap.set(fieldName, new Field(this, fieldName, fieldType, this.assertCompositeType(type), fieldDefinition.arguments, fieldDefinition.isClient));
10274
+ fieldsMap.set(fieldName, new Field(this, fieldName, fieldType, this.assertCompositeType(type), fieldDefinition.arguments, fieldDefinition.directives, fieldDefinition.isClient));
9794
10275
  }
9795
10276
  } catch (err) {
9796
10277
  _iterator.e(err);
@@ -9813,7 +10294,7 @@ var Schema = /*#__PURE__*/function () {
9813
10294
 
9814
10295
  var _fieldType = this.expectTypeFromAST(typeNode);
9815
10296
 
9816
- fieldsMap.set(_fieldName, new Field(this, _fieldName, _fieldType, type, [], false));
10297
+ fieldsMap.set(_fieldName, new Field(this, _fieldName, _fieldType, type, [], null, false));
9817
10298
  }
9818
10299
  } catch (err) {
9819
10300
  _iterator2.e(err);
@@ -9843,7 +10324,7 @@ var Schema = /*#__PURE__*/function () {
9843
10324
  var typename = this._typeNameMap.get(type);
9844
10325
 
9845
10326
  if (!typename) {
9846
- typename = new Field(this, TYPENAME_FIELD, this.getNonNullType(this.expectStringType()), type, [], false);
10327
+ typename = new Field(this, TYPENAME_FIELD, this.getNonNullType(this.expectStringType()), type, [], null, false);
9847
10328
 
9848
10329
  this._typeNameMap.set(type, typename);
9849
10330
  }
@@ -9855,7 +10336,7 @@ var Schema = /*#__PURE__*/function () {
9855
10336
  var clientId = this._clientIdMap.get(type);
9856
10337
 
9857
10338
  if (!clientId) {
9858
- clientId = new Field(this, CLIENT_ID_FIELD, this.getNonNullType(this.expectIdType()), type, [], true);
10339
+ clientId = new Field(this, CLIENT_ID_FIELD, this.getNonNullType(this.expectIdType()), type, [], null, true);
9859
10340
 
9860
10341
  this._clientIdMap.set(type, clientId);
9861
10342
  }
@@ -10381,6 +10862,17 @@ var TypeMap = /*#__PURE__*/function () {
10381
10862
  defaultValue: arg.defaultValue
10382
10863
  };
10383
10864
  }) : [],
10865
+ directives: fieldNode.directives ? fieldNode.directives.map(function (directive) {
10866
+ return {
10867
+ name: directive.name.value,
10868
+ args: directive.arguments ? directive.arguments.map(function (arg) {
10869
+ return {
10870
+ name: arg.name.value,
10871
+ value: arg.value
10872
+ };
10873
+ }) : []
10874
+ };
10875
+ }) : null,
10384
10876
  type: fieldNode.type,
10385
10877
  isClient: isClient
10386
10878
  });
@@ -10655,13 +11147,13 @@ module.exports = {
10655
11147
  };
10656
11148
 
10657
11149
  /***/ }),
10658
- /* 57 */
11150
+ /* 58 */
10659
11151
  /***/ (function(module, exports) {
10660
11152
 
10661
11153
  module.exports = require("@babel/runtime/helpers/inheritsLoose");
10662
11154
 
10663
11155
  /***/ }),
10664
- /* 58 */
11156
+ /* 59 */
10665
11157
  /***/ (function(module, exports, __webpack_require__) {
10666
11158
 
10667
11159
  "use strict";
@@ -10677,7 +11169,7 @@ module.exports = require("@babel/runtime/helpers/inheritsLoose");
10677
11169
  // flowlint ambiguous-object-type:error
10678
11170
 
10679
11171
 
10680
- var chalk = __webpack_require__(59);
11172
+ var chalk = __webpack_require__(60);
10681
11173
 
10682
11174
  function getMemoryUsageString() {
10683
11175
  return chalk.blue(Math.round(process.memoryUsage().heapUsed / 1024 / 1024) + 'Mb');
@@ -10728,13 +11220,13 @@ function leftPad(len, str) {
10728
11220
  module.exports = ConsoleReporter;
10729
11221
 
10730
11222
  /***/ }),
10731
- /* 59 */
11223
+ /* 60 */
10732
11224
  /***/ (function(module, exports) {
10733
11225
 
10734
11226
  module.exports = require("chalk");
10735
11227
 
10736
11228
  /***/ }),
10737
- /* 60 */
11229
+ /* 61 */
10738
11230
  /***/ (function(module, exports, __webpack_require__) {
10739
11231
 
10740
11232
  "use strict";
@@ -10780,7 +11272,7 @@ module.exports = {
10780
11272
  };
10781
11273
 
10782
11274
  /***/ }),
10783
- /* 61 */
11275
+ /* 62 */
10784
11276
  /***/ (function(module, exports, __webpack_require__) {
10785
11277
 
10786
11278
  "use strict";
@@ -10798,17 +11290,17 @@ module.exports = {
10798
11290
 
10799
11291
  var _interopRequireDefault = __webpack_require__(0);
10800
11292
 
10801
- var _asyncToGenerator = __webpack_require__(10);
11293
+ var _asyncToGenerator = __webpack_require__(11);
10802
11294
 
10803
11295
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
10804
11296
 
10805
- 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; } } }; }
11297
+ 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; } } }; }
10806
11298
 
10807
- 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); }
11299
+ 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); }
10808
11300
 
10809
11301
  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; }
10810
11302
 
10811
- var ASTConvert = __webpack_require__(62);
11303
+ var ASTConvert = __webpack_require__(63);
10812
11304
 
10813
11305
  var CodegenDirectory = __webpack_require__(26);
10814
11306
 
@@ -10818,7 +11310,7 @@ var Profiler = __webpack_require__(6);
10818
11310
 
10819
11311
  var RelayParser = __webpack_require__(28);
10820
11312
 
10821
- var compileRelayArtifacts = __webpack_require__(64);
11313
+ var compileRelayArtifacts = __webpack_require__(65);
10822
11314
 
10823
11315
  var graphql = __webpack_require__(7);
10824
11316
 
@@ -10826,13 +11318,13 @@ var invariant = __webpack_require__(5);
10826
11318
 
10827
11319
  var md5 = __webpack_require__(24);
10828
11320
 
10829
- var nullthrows = __webpack_require__(15);
11321
+ var nullthrows = __webpack_require__(16);
10830
11322
 
10831
11323
  var path = __webpack_require__(8);
10832
11324
 
10833
- var writeRelayGeneratedFile = __webpack_require__(69);
11325
+ var writeRelayGeneratedFile = __webpack_require__(70);
10834
11326
 
10835
- var _require = __webpack_require__(73),
11327
+ var _require = __webpack_require__(74),
10836
11328
  getReaderSourceDefinitionName = _require.getReaderSourceDefinitionName;
10837
11329
 
10838
11330
  var _require2 = __webpack_require__(9),
@@ -11060,7 +11552,7 @@ module.exports = {
11060
11552
  };
11061
11553
 
11062
11554
  /***/ }),
11063
- /* 62 */
11555
+ /* 63 */
11064
11556
  /***/ (function(module, exports, __webpack_require__) {
11065
11557
 
11066
11558
  "use strict";
@@ -11264,7 +11756,7 @@ module.exports = {
11264
11756
  };
11265
11757
 
11266
11758
  /***/ }),
11267
- /* 63 */
11759
+ /* 64 */
11268
11760
  /***/ (function(module, exports, __webpack_require__) {
11269
11761
 
11270
11762
  "use strict";
@@ -11306,7 +11798,7 @@ function orList(items) {
11306
11798
  module.exports = orList;
11307
11799
 
11308
11800
  /***/ }),
11309
- /* 64 */
11801
+ /* 65 */
11310
11802
  /***/ (function(module, exports, __webpack_require__) {
11311
11803
 
11312
11804
  "use strict";
@@ -11326,9 +11818,9 @@ var _interopRequireDefault = __webpack_require__(0);
11326
11818
 
11327
11819
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
11328
11820
 
11329
- 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; } } }; }
11821
+ 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; } } }; }
11330
11822
 
11331
- 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); }
11823
+ 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); }
11332
11824
 
11333
11825
  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; }
11334
11826
 
@@ -11336,9 +11828,9 @@ var Printer = __webpack_require__(31);
11336
11828
 
11337
11829
  var Profiler = __webpack_require__(6);
11338
11830
 
11339
- var RelayCodeGenerator = __webpack_require__(65);
11831
+ var RelayCodeGenerator = __webpack_require__(66);
11340
11832
 
11341
- var filterContextForNode = __webpack_require__(68);
11833
+ var filterContextForNode = __webpack_require__(69);
11342
11834
 
11343
11835
  function createFragmentContext(context, transforms, reporter) {
11344
11836
  // The fragment is used for reading data from the normalized store.
@@ -11473,7 +11965,7 @@ function compileRelayArtifacts(context, transforms, reporter) {
11473
11965
  module.exports = compileRelayArtifacts;
11474
11966
 
11475
11967
  /***/ }),
11476
- /* 65 */
11968
+ /* 66 */
11477
11969
  /***/ (function(module, exports, __webpack_require__) {
11478
11970
 
11479
11971
  "use strict";
@@ -11489,15 +11981,15 @@ module.exports = compileRelayArtifacts;
11489
11981
  // flowlint ambiguous-object-type:error
11490
11982
 
11491
11983
 
11492
- var NormalizationCodeGenerator = __webpack_require__(66);
11984
+ var NormalizationCodeGenerator = __webpack_require__(67);
11493
11985
 
11494
- var ReaderCodeGenerator = __webpack_require__(67);
11986
+ var ReaderCodeGenerator = __webpack_require__(68);
11495
11987
 
11496
11988
  var sortObjectByKey = __webpack_require__(33);
11497
11989
 
11498
11990
  var md5 = __webpack_require__(24);
11499
11991
 
11500
- var nullthrows = __webpack_require__(15);
11992
+ var nullthrows = __webpack_require__(16);
11501
11993
 
11502
11994
  var _require = __webpack_require__(1),
11503
11995
  createCompilerError = _require.createCompilerError;
@@ -11547,7 +12039,7 @@ module.exports = {
11547
12039
  };
11548
12040
 
11549
12041
  /***/ }),
11550
- /* 66 */
12042
+ /* 67 */
11551
12043
  /***/ (function(module, exports, __webpack_require__) {
11552
12044
 
11553
12045
  "use strict";
@@ -11577,7 +12069,7 @@ var argumentContainsVariables = __webpack_require__(32);
11577
12069
 
11578
12070
  var generateAbstractTypeRefinementKey = __webpack_require__(17);
11579
12071
 
11580
- var partitionArray = __webpack_require__(16);
12072
+ var partitionArray = __webpack_require__(15);
11581
12073
 
11582
12074
  var sortObjectByKey = __webpack_require__(33);
11583
12075
 
@@ -11585,7 +12077,7 @@ var _require = __webpack_require__(1),
11585
12077
  createCompilerError = _require.createCompilerError,
11586
12078
  createUserError = _require.createUserError;
11587
12079
 
11588
- var _require2 = __webpack_require__(11),
12080
+ var _require2 = __webpack_require__(10),
11589
12081
  getStorageKey = _require2.getStorageKey,
11590
12082
  stableCopy = _require2.stableCopy;
11591
12083
 
@@ -11778,14 +12270,13 @@ function generateLinkedField(schema, node) {
11778
12270
  key: handle.key,
11779
12271
  kind: 'LinkedHandle',
11780
12272
  name: node.name
11781
- }; // T45504512: new connection model
11782
- // NOTE: this intentionally adds a dynamic key in order to avoid
12273
+ }; // NOTE: this intentionally adds a dynamic key in order to avoid
11783
12274
  // triggering updates to existing queries that do not use dynamic
11784
12275
  // keys.
11785
12276
 
11786
12277
  if (handle.dynamicKey != null) {
11787
12278
  var dynamicKeyArgName = '__dynamicKey';
11788
- handleNode = _objectSpread({}, handleNode, {
12279
+ handleNode = _objectSpread(_objectSpread({}, handleNode), {}, {
11789
12280
  dynamicKey: {
11790
12281
  kind: 'Variable',
11791
12282
  name: dynamicKeyArgName,
@@ -11798,7 +12289,7 @@ function generateLinkedField(schema, node) {
11798
12289
  var handleArgs = generateArgs(handle.handleArgs);
11799
12290
 
11800
12291
  if (handleArgs != null) {
11801
- handleNode = _objectSpread({}, handleNode, {
12292
+ handleNode = _objectSpread(_objectSpread({}, handleNode), {}, {
11802
12293
  handleArgs: handleArgs
11803
12294
  });
11804
12295
  }
@@ -11821,7 +12312,7 @@ function generateLinkedField(schema, node) {
11821
12312
  var storageKey = getStaticStorageKey(field, node.metadata);
11822
12313
 
11823
12314
  if (storageKey != null) {
11824
- field = _objectSpread({}, field, {
12315
+ field = _objectSpread(_objectSpread({}, field), {}, {
11825
12316
  storageKey: storageKey
11826
12317
  });
11827
12318
  }
@@ -11859,7 +12350,7 @@ function generateTypeDiscriminator(abstractKey) {
11859
12350
  }
11860
12351
 
11861
12352
  function generateScalarField(node) {
11862
- var _node$metadata;
12353
+ var _node$metadata, _node$metadata2;
11863
12354
 
11864
12355
  // flowlint-next-line sketchy-null-mixed:off
11865
12356
  if ((_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.skipNormalizationNode) {
@@ -11874,7 +12365,7 @@ function generateScalarField(node) {
11874
12365
  throw createUserError('Dynamic key values are not supported on scalar fields.', [handle.dynamicKey.loc]);
11875
12366
  }
11876
12367
 
11877
- return {
12368
+ var nodeHandle = {
11878
12369
  alias: node.alias === node.name ? null : node.alias,
11879
12370
  args: generateArgs(node.args),
11880
12371
  filters: handle.filters,
@@ -11883,6 +12374,13 @@ function generateScalarField(node) {
11883
12374
  kind: 'ScalarHandle',
11884
12375
  name: node.name
11885
12376
  };
12377
+
12378
+ if (handle.handleArgs != null) {
12379
+ // $FlowFixMe handleArgs exists in Handle
12380
+ nodeHandle.handleArgs = generateArgs(handle.handleArgs);
12381
+ }
12382
+
12383
+ return nodeHandle;
11886
12384
  }) || [];
11887
12385
  var field = {
11888
12386
  alias: node.alias === node.name ? null : node.alias,
@@ -11895,11 +12393,17 @@ function generateScalarField(node) {
11895
12393
  var storageKey = getStaticStorageKey(field, node.metadata);
11896
12394
 
11897
12395
  if (storageKey != null) {
11898
- field = _objectSpread({}, field, {
12396
+ field = _objectSpread(_objectSpread({}, field), {}, {
11899
12397
  storageKey: storageKey
11900
12398
  });
11901
12399
  }
11902
12400
 
12401
+ if (((_node$metadata2 = node.metadata) === null || _node$metadata2 === void 0 ? void 0 : _node$metadata2.flight) === true) {
12402
+ field = _objectSpread(_objectSpread({}, field), {}, {
12403
+ kind: 'FlightField'
12404
+ });
12405
+ }
12406
+
11903
12407
  return [field].concat(handles);
11904
12408
  }
11905
12409
 
@@ -12026,7 +12530,7 @@ module.exports = {
12026
12530
  };
12027
12531
 
12028
12532
  /***/ }),
12029
- /* 67 */
12533
+ /* 68 */
12030
12534
  /***/ (function(module, exports, __webpack_require__) {
12031
12535
 
12032
12536
  "use strict";
@@ -12060,7 +12564,7 @@ var _require = __webpack_require__(1),
12060
12564
  createCompilerError = _require.createCompilerError,
12061
12565
  createUserError = _require.createUserError;
12062
12566
 
12063
- var _require2 = __webpack_require__(11),
12567
+ var _require2 = __webpack_require__(10),
12064
12568
  getStorageKey = _require2.getStorageKey,
12065
12569
  stableCopy = _require2.stableCopy;
12066
12570
 
@@ -12078,11 +12582,11 @@ function generate(schema, node) {
12078
12582
  var metadata = null;
12079
12583
 
12080
12584
  if (node.metadata != null) {
12081
- var _node$metadata = node.metadata,
12082
- mask = _node$metadata.mask,
12083
- plural = _node$metadata.plural,
12084
- connection = _node$metadata.connection,
12085
- refetch = _node$metadata.refetch;
12585
+ var _node$metadata4 = node.metadata,
12586
+ mask = _node$metadata4.mask,
12587
+ plural = _node$metadata4.plural,
12588
+ connection = _node$metadata4.connection,
12589
+ refetch = _node$metadata4.refetch;
12086
12590
 
12087
12591
  if (Array.isArray(connection)) {
12088
12592
  var _metadata;
@@ -12117,7 +12621,7 @@ function generate(schema, node) {
12117
12621
  };
12118
12622
 
12119
12623
  if (typeof refetch.identifierField === 'string') {
12120
- metadata.refetch = _objectSpread({}, metadata.refetch, {
12624
+ metadata.refetch = _objectSpread(_objectSpread({}, metadata.refetch), {}, {
12121
12625
  identifierField: refetch.identifierField
12122
12626
  });
12123
12627
  }
@@ -12280,6 +12784,8 @@ function generateInlineDataFragmentSpread(schema, node) {
12280
12784
  }
12281
12785
 
12282
12786
  function generateLinkedField(schema, node) {
12787
+ var _node$metadata;
12788
+
12283
12789
  // Note: it is important that the arguments of this field be sorted to
12284
12790
  // ensure stable generation of storage keys for equivalent arguments
12285
12791
  // which may have originally appeared in different orders across an app.
@@ -12306,14 +12812,29 @@ function generateLinkedField(schema, node) {
12306
12812
  var storageKey = getStaticStorageKey(field, node.metadata);
12307
12813
 
12308
12814
  if (storageKey) {
12309
- field = _objectSpread({}, field, {
12815
+ field = _objectSpread(_objectSpread({}, field), {}, {
12310
12816
  storageKey: storageKey
12311
12817
  });
12312
12818
  }
12313
12819
 
12820
+ var requiredMetadata = (_node$metadata = node.metadata) === null || _node$metadata === void 0 ? void 0 : _node$metadata.required;
12821
+
12822
+ if (requiredMetadata != null) {
12823
+ return createRequiredField(field, requiredMetadata);
12824
+ }
12825
+
12314
12826
  return field;
12315
12827
  }
12316
12828
 
12829
+ function createRequiredField(field, requiredMetadata) {
12830
+ return {
12831
+ kind: 'RequiredField',
12832
+ field: field,
12833
+ action: requiredMetadata.action,
12834
+ path: requiredMetadata.path
12835
+ };
12836
+ }
12837
+
12317
12838
  function generateModuleImport(schema, node) {
12318
12839
  var fragmentName = node.name;
12319
12840
  var regExpMatch = fragmentName.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:_([a-zA-Z][_a-zA-Z0-9]*))?$/);
@@ -12337,6 +12858,8 @@ function generateModuleImport(schema, node) {
12337
12858
  }
12338
12859
 
12339
12860
  function generateScalarField(schema, node) {
12861
+ var _node$metadata2, _node$metadata3;
12862
+
12340
12863
  // Note: it is important that the arguments of this field be sorted to
12341
12864
  // ensure stable generation of storage keys for equivalent arguments
12342
12865
  // which may have originally appeared in different orders across an app.
@@ -12359,11 +12882,27 @@ function generateScalarField(schema, node) {
12359
12882
  var storageKey = getStaticStorageKey(field, node.metadata);
12360
12883
 
12361
12884
  if (storageKey) {
12362
- field = _objectSpread({}, field, {
12885
+ field = _objectSpread(_objectSpread({}, field), {}, {
12363
12886
  storageKey: storageKey
12364
12887
  });
12365
12888
  }
12366
12889
 
12890
+ if (((_node$metadata2 = node.metadata) === null || _node$metadata2 === void 0 ? void 0 : _node$metadata2.flight) === true) {
12891
+ field = _objectSpread(_objectSpread({}, field), {}, {
12892
+ kind: 'FlightField'
12893
+ });
12894
+ }
12895
+
12896
+ var requiredMetadata = (_node$metadata3 = node.metadata) === null || _node$metadata3 === void 0 ? void 0 : _node$metadata3.required;
12897
+
12898
+ if (requiredMetadata != null) {
12899
+ if (field.kind === 'FlightField') {
12900
+ throw new createUserError('@required cannot be used on a ReactFlightComponent.', [node.loc]);
12901
+ }
12902
+
12903
+ return createRequiredField(field, requiredMetadata);
12904
+ }
12905
+
12367
12906
  return field;
12368
12907
  }
12369
12908
 
@@ -12473,7 +13012,7 @@ module.exports = {
12473
13012
  };
12474
13013
 
12475
13014
  /***/ }),
12476
- /* 68 */
13015
+ /* 69 */
12477
13016
  /***/ (function(module, exports, __webpack_require__) {
12478
13017
 
12479
13018
  "use strict";
@@ -12528,7 +13067,7 @@ function filterContextForNode(node, context) {
12528
13067
  module.exports = filterContextForNode;
12529
13068
 
12530
13069
  /***/ }),
12531
- /* 69 */
13070
+ /* 70 */
12532
13071
  /***/ (function(module, exports, __webpack_require__) {
12533
13072
 
12534
13073
  "use strict";
@@ -12546,11 +13085,11 @@ module.exports = filterContextForNode;
12546
13085
 
12547
13086
  var _interopRequireDefault = __webpack_require__(0);
12548
13087
 
12549
- var _asyncToGenerator = __webpack_require__(10);
13088
+ var _asyncToGenerator = __webpack_require__(11);
12550
13089
 
12551
13090
  var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
12552
13091
 
12553
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(70));
13092
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(71));
12554
13093
 
12555
13094
  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; }
12556
13095
 
@@ -12558,15 +13097,15 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
12558
13097
 
12559
13098
  var CodeMarker = __webpack_require__(34);
12560
13099
 
12561
- var createPrintRequireModuleDependency = __webpack_require__(71);
13100
+ var createPrintRequireModuleDependency = __webpack_require__(72);
12562
13101
 
12563
- var dedupeJSONStringify = __webpack_require__(72);
13102
+ var dedupeJSONStringify = __webpack_require__(73);
12564
13103
 
12565
13104
  var invariant = __webpack_require__(5);
12566
13105
 
12567
13106
  var md5 = __webpack_require__(24);
12568
13107
 
12569
- var _require = __webpack_require__(11),
13108
+ var _require = __webpack_require__(10),
12570
13109
  RelayConcreteNode = _require.RelayConcreteNode;
12571
13110
 
12572
13111
  function getConcreteType(node) {
@@ -12661,7 +13200,7 @@ function writeRelayGeneratedFile(schema, codegenDir, definition, _generatedNode,
12661
13200
  };
12662
13201
  }
12663
13202
 
12664
- generatedNode = _objectSpread({}, generatedNode, {
13203
+ generatedNode = _objectSpread(_objectSpread({}, generatedNode), {}, {
12665
13204
  params: nextRequestParams
12666
13205
  });
12667
13206
  } // Strip metadata only used within the compiler
@@ -12671,7 +13210,7 @@ function writeRelayGeneratedFile(schema, codegenDir, definition, _generatedNode,
12671
13210
  var _generatedNode$metada2 = generatedNode.metadata,
12672
13211
  _ignored3 = _generatedNode$metada2.derivedFrom,
12673
13212
  metadata = (0, _objectWithoutPropertiesLoose2["default"])(_generatedNode$metada2, ["derivedFrom"]);
12674
- generatedNode = _objectSpread({}, generatedNode, {
13213
+ generatedNode = _objectSpread(_objectSpread({}, generatedNode), {}, {
12675
13214
  metadata: metadata
12676
13215
  });
12677
13216
  }
@@ -12730,13 +13269,13 @@ function extractRelayRequestID(text) {
12730
13269
  module.exports = writeRelayGeneratedFile;
12731
13270
 
12732
13271
  /***/ }),
12733
- /* 70 */
13272
+ /* 71 */
12734
13273
  /***/ (function(module, exports) {
12735
13274
 
12736
13275
  module.exports = require("@babel/runtime/helpers/objectWithoutPropertiesLoose");
12737
13276
 
12738
13277
  /***/ }),
12739
- /* 71 */
13278
+ /* 72 */
12740
13279
  /***/ (function(module, exports, __webpack_require__) {
12741
13280
 
12742
13281
  "use strict";
@@ -12761,7 +13300,7 @@ function createPrintRequireModuleDependency(extension) {
12761
13300
  module.exports = createPrintRequireModuleDependency;
12762
13301
 
12763
13302
  /***/ }),
12764
- /* 72 */
13303
+ /* 73 */
12765
13304
  /***/ (function(module, exports, __webpack_require__) {
12766
13305
 
12767
13306
  "use strict";
@@ -12927,7 +13466,7 @@ function dedupeJSONStringify(jsonValue) {
12927
13466
  module.exports = dedupeJSONStringify;
12928
13467
 
12929
13468
  /***/ }),
12930
- /* 73 */
13469
+ /* 74 */
12931
13470
  /***/ (function(module, exports, __webpack_require__) {
12932
13471
 
12933
13472
  "use strict";
@@ -12964,7 +13503,7 @@ module.exports = {
12964
13503
  };
12965
13504
 
12966
13505
  /***/ }),
12967
- /* 74 */
13506
+ /* 75 */
12968
13507
  /***/ (function(module, exports, __webpack_require__) {
12969
13508
 
12970
13509
  "use strict";
@@ -12980,80 +13519,86 @@ module.exports = {
12980
13519
  // flowlint ambiguous-object-type:error
12981
13520
 
12982
13521
 
12983
- var ApplyFragmentArgumentTransform = __webpack_require__(75);
13522
+ var ApplyFragmentArgumentTransform = __webpack_require__(76);
12984
13523
 
12985
- var ClientExtensionsTransform = __webpack_require__(77);
13524
+ var ClientExtensionsTransform = __webpack_require__(78);
12986
13525
 
12987
- var ConnectionTransform = __webpack_require__(78);
13526
+ var ConnectionTransform = __webpack_require__(79);
12988
13527
 
12989
- var DeclarativeConnectionMutationTransform = __webpack_require__(79);
13528
+ var DeclarativeConnectionMutationTransform = __webpack_require__(80);
12990
13529
 
12991
- var DeferStreamTransform = __webpack_require__(80);
13530
+ var DeferStreamTransform = __webpack_require__(81);
12992
13531
 
12993
- var DisallowIdAsAlias = __webpack_require__(81);
13532
+ var DisallowIdAsAlias = __webpack_require__(82);
12994
13533
 
12995
- var DisallowTypenameOnRoot = __webpack_require__(82);
13534
+ var DisallowTypenameOnRoot = __webpack_require__(83);
12996
13535
 
12997
- var FieldHandleTransform = __webpack_require__(83);
13536
+ var FieldHandleTransform = __webpack_require__(84);
12998
13537
 
12999
- var FilterDirectivesTransform = __webpack_require__(84);
13538
+ var FilterCompilerDirectivesTransform = __webpack_require__(85);
13539
+
13540
+ var FilterDirectivesTransform = __webpack_require__(86);
13000
13541
 
13001
13542
  var FlattenTransform = __webpack_require__(38);
13002
13543
 
13003
- var GenerateIDFieldTransform = __webpack_require__(86);
13544
+ var GenerateIDFieldTransform = __webpack_require__(88);
13004
13545
 
13005
- var GenerateTypeNameTransform = __webpack_require__(87);
13546
+ var GenerateTypeNameTransform = __webpack_require__(89);
13006
13547
 
13007
- var InlineDataFragmentTransform = __webpack_require__(88);
13548
+ var InlineDataFragmentTransform = __webpack_require__(90);
13008
13549
 
13009
- var InlineFragmentsTransform = __webpack_require__(89);
13550
+ var InlineFragmentsTransform = __webpack_require__(91);
13010
13551
 
13011
13552
  var MaskTransform = __webpack_require__(41);
13012
13553
 
13013
13554
  var MatchTransform = __webpack_require__(42);
13014
13555
 
13556
+ var ReactFlightComponentTransform = __webpack_require__(93);
13557
+
13015
13558
  var RefetchableFragmentTransform = __webpack_require__(44);
13016
13559
 
13017
13560
  var RelayDirectiveTransform = __webpack_require__(45);
13018
13561
 
13019
13562
  var RelayFlowGenerator = __webpack_require__(46);
13020
13563
 
13021
- var SkipClientExtensionsTransform = __webpack_require__(98);
13564
+ var RequiredFieldTransform = __webpack_require__(47);
13565
+
13566
+ var SkipClientExtensionsTransform = __webpack_require__(101);
13022
13567
 
13023
- var SkipHandleFieldTransform = __webpack_require__(99);
13568
+ var SkipHandleFieldTransform = __webpack_require__(102);
13024
13569
 
13025
- var SkipRedundantNodesTransform = __webpack_require__(100);
13570
+ var SkipRedundantNodesTransform = __webpack_require__(103);
13026
13571
 
13027
- var SkipSplitOperationTransform = __webpack_require__(101);
13572
+ var SkipSplitOperationTransform = __webpack_require__(104);
13028
13573
 
13029
- var SkipUnreachableNodeTransform = __webpack_require__(102);
13574
+ var SkipUnreachableNodeTransform = __webpack_require__(105);
13030
13575
 
13031
- var SkipUnusedVariablesTransform = __webpack_require__(103);
13576
+ var SkipUnusedVariablesTransform = __webpack_require__(106);
13032
13577
 
13033
- var SplitModuleImportTransform = __webpack_require__(104);
13578
+ var SplitModuleImportTransform = __webpack_require__(107);
13034
13579
 
13035
- var TestOperationTransform = __webpack_require__(105);
13580
+ var TestOperationTransform = __webpack_require__(108);
13036
13581
 
13037
- var ValidateGlobalVariablesTransform = __webpack_require__(106);
13582
+ var ValidateGlobalVariablesTransform = __webpack_require__(109);
13038
13583
 
13039
- var ValidateRequiredArgumentsTransform = __webpack_require__(107);
13584
+ var ValidateRequiredArgumentsTransform = __webpack_require__(110);
13040
13585
 
13041
- var ValidateUnusedVariablesTransform = __webpack_require__(108);
13586
+ var ValidateUnusedVariablesTransform = __webpack_require__(111);
13042
13587
 
13043
13588
  // Transforms applied to the code used to process a query response.
13044
- var relaySchemaExtensions = [ConnectionTransform.SCHEMA_EXTENSION, DeclarativeConnectionMutationTransform.SCHEMA_EXTENSION, InlineDataFragmentTransform.SCHEMA_EXTENSION, MatchTransform.SCHEMA_EXTENSION, RefetchableFragmentTransform.SCHEMA_EXTENSION, RelayDirectiveTransform.SCHEMA_EXTENSION, RelayFlowGenerator.SCHEMA_EXTENSION, TestOperationTransform.SCHEMA_EXTENSION, ValidateUnusedVariablesTransform.SCHEMA_EXTENSION]; // Transforms applied to both operations and fragments for both reading and
13589
+ var relaySchemaExtensions = [ConnectionTransform.SCHEMA_EXTENSION, DeclarativeConnectionMutationTransform.SCHEMA_EXTENSION, InlineDataFragmentTransform.SCHEMA_EXTENSION, MatchTransform.SCHEMA_EXTENSION, RequiredFieldTransform.SCHEMA_EXTENSION, RefetchableFragmentTransform.SCHEMA_EXTENSION, RelayDirectiveTransform.SCHEMA_EXTENSION, RelayFlowGenerator.SCHEMA_EXTENSION, TestOperationTransform.SCHEMA_EXTENSION, ValidateUnusedVariablesTransform.SCHEMA_EXTENSION]; // Transforms applied to both operations and fragments for both reading and
13045
13590
  // writing from the store.
13046
13591
 
13047
- var relayCommonTransforms = [DisallowIdAsAlias.transform, ConnectionTransform.transform, RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RefetchableFragmentTransform.transform, DeferStreamTransform.transform]; // Transforms applied to fragments used for reading data from a store
13592
+ var relayCommonTransforms = [DisallowIdAsAlias.transform, ConnectionTransform.transform, RelayDirectiveTransform.transform, MaskTransform.transform, MatchTransform.transform, RefetchableFragmentTransform.transform, DeferStreamTransform.transform, ReactFlightComponentTransform.transform]; // Transforms applied to fragments used for reading data from a store
13048
13593
 
13049
13594
  var relayFragmentTransforms = [ClientExtensionsTransform.transform, FieldHandleTransform.transform, InlineDataFragmentTransform.transform, FlattenTransform.transformWithOptions({
13050
13595
  isForCodegen: true
13051
- }), SkipRedundantNodesTransform.transform]; // Transforms applied to queries/mutations/subscriptions that are used for
13596
+ }), RequiredFieldTransform.transform, SkipRedundantNodesTransform.transform]; // Transforms applied to queries/mutations/subscriptions that are used for
13052
13597
  // fetching data from the server and parsing those responses.
13053
13598
 
13054
13599
  var relayQueryTransforms = [SplitModuleImportTransform.transform, DisallowTypenameOnRoot.transform, ValidateUnusedVariablesTransform.transform, ApplyFragmentArgumentTransform.transform, ValidateGlobalVariablesTransform.transform, GenerateIDFieldTransform.transform, DeclarativeConnectionMutationTransform.transform]; // Transforms applied to the code used to process a query response.
13055
13600
 
13056
- var relayCodegenTransforms = [SkipUnreachableNodeTransform.transform, InlineFragmentsTransform.transform, // NOTE: For the codegen context, we make sure to run ClientExtensions
13601
+ var relayCodegenTransforms = [FilterCompilerDirectivesTransform.transform, SkipUnreachableNodeTransform.transform, InlineFragmentsTransform.transform, // NOTE: For the codegen context, we make sure to run ClientExtensions
13057
13602
  // transform after we've inlined fragment spreads (i.e. InlineFragmentsTransform)
13058
13603
  // This will ensure that we don't generate nested ClientExtension nodes
13059
13604
  ClientExtensionsTransform.transform, GenerateTypeNameTransform.transform, FlattenTransform.transformWithOptions({
@@ -13073,7 +13618,7 @@ module.exports = {
13073
13618
  };
13074
13619
 
13075
13620
  /***/ }),
13076
- /* 75 */
13621
+ /* 76 */
13077
13622
  /***/ (function(module, exports, __webpack_require__) {
13078
13623
 
13079
13624
  "use strict";
@@ -13099,15 +13644,15 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
13099
13644
 
13100
13645
  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; }
13101
13646
 
13102
- 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; } } }; }
13647
+ 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; } } }; }
13103
13648
 
13104
- 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); }
13649
+ 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); }
13105
13650
 
13106
13651
  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; }
13107
13652
 
13108
13653
  var IRTransformer = __webpack_require__(3);
13109
13654
 
13110
- var RelayCompilerScope = __webpack_require__(76);
13655
+ var RelayCompilerScope = __webpack_require__(77);
13111
13656
 
13112
13657
  var getIdentifierForArgumentValue = __webpack_require__(35);
13113
13658
 
@@ -13188,13 +13733,13 @@ function transformNode(context, fragments, scope, node, errorContext) {
13188
13733
 
13189
13734
  if (node.hasOwnProperty('directives')) {
13190
13735
  var directives = transformDirectives(scope, node.directives, errorContext);
13191
- return _objectSpread({}, node, {
13736
+ return _objectSpread(_objectSpread({}, node), {}, {
13192
13737
  directives: directives,
13193
13738
  selections: selections
13194
13739
  });
13195
13740
  }
13196
13741
 
13197
- return _objectSpread({}, node, {
13742
+ return _objectSpread(_objectSpread({}, node), {}, {
13198
13743
  selections: selections
13199
13744
  });
13200
13745
  }
@@ -13241,7 +13786,7 @@ function transformFragmentSpread(context, fragments, scope, spread, errorContext
13241
13786
  return null;
13242
13787
  }
13243
13788
 
13244
- var transformed = _objectSpread({}, spread, {
13789
+ var transformed = _objectSpread(_objectSpread({}, spread), {}, {
13245
13790
  kind: 'FragmentSpread',
13246
13791
  args: [],
13247
13792
  directives: directives,
@@ -13262,13 +13807,13 @@ function transformField(context, fragments, scope, field, errorContext) {
13262
13807
  return null;
13263
13808
  }
13264
13809
 
13265
- return _objectSpread({}, field, {
13810
+ return _objectSpread(_objectSpread({}, field), {}, {
13266
13811
  args: args,
13267
13812
  directives: directives,
13268
13813
  selections: selections
13269
13814
  });
13270
13815
  } else {
13271
- return _objectSpread({}, field, {
13816
+ return _objectSpread(_objectSpread({}, field), {}, {
13272
13817
  args: args,
13273
13818
  directives: directives
13274
13819
  });
@@ -13301,7 +13846,7 @@ function transformCondition(context, fragments, scope, node, errorContext) {
13301
13846
  return selections;
13302
13847
  }
13303
13848
 
13304
- return [_objectSpread({}, node, {
13849
+ return [_objectSpread(_objectSpread({}, node), {}, {
13305
13850
  condition: condition,
13306
13851
  selections: selections
13307
13852
  })];
@@ -13346,7 +13891,7 @@ function transformSelections(context, fragments, scope, selections, errorContext
13346
13891
  function transformDirectives(scope, directives, errorContext) {
13347
13892
  return directives.map(function (directive) {
13348
13893
  var args = transformArguments(scope, directive.args, errorContext);
13349
- return _objectSpread({}, directive, {
13894
+ return _objectSpread(_objectSpread({}, directive), {}, {
13350
13895
  args: args
13351
13896
  });
13352
13897
  });
@@ -13355,7 +13900,7 @@ function transformDirectives(scope, directives, errorContext) {
13355
13900
  function transformArguments(scope, args, errorContext) {
13356
13901
  return args.map(function (arg) {
13357
13902
  var value = transformValue(scope, arg.value, errorContext);
13358
- return value === arg.value ? arg : _objectSpread({}, arg, {
13903
+ return value === arg.value ? arg : _objectSpread(_objectSpread({}, arg), {}, {
13359
13904
  value: value
13360
13905
  });
13361
13906
  });
@@ -13376,15 +13921,15 @@ function transformValue(scope, value, errorContext) {
13376
13921
 
13377
13922
  return scopeValue;
13378
13923
  } else if (value.kind === 'ObjectValue') {
13379
- return _objectSpread({}, value, {
13924
+ return _objectSpread(_objectSpread({}, value), {}, {
13380
13925
  fields: value.fields.map(function (field) {
13381
- return _objectSpread({}, field, {
13926
+ return _objectSpread(_objectSpread({}, field), {}, {
13382
13927
  value: transformValue(scope, field.value, errorContext)
13383
13928
  });
13384
13929
  })
13385
13930
  });
13386
13931
  } else if (value.kind === 'ListValue') {
13387
- return _objectSpread({}, value, {
13932
+ return _objectSpread(_objectSpread({}, value), {}, {
13388
13933
  items: value.items.map(function (item) {
13389
13934
  return transformValue(scope, item, errorContext);
13390
13935
  })
@@ -13428,7 +13973,7 @@ function transformFragment(context, fragments, parentScope, spread, args, errorC
13428
13973
  var selections = transformSelections(context, fragments, fragmentScope, fragment.selections, errorContext);
13429
13974
 
13430
13975
  if (selections) {
13431
- transformedFragment = _objectSpread({}, fragment, {
13976
+ transformedFragment = _objectSpread(_objectSpread({}, fragment), {}, {
13432
13977
  selections: selections,
13433
13978
  name: fragmentName,
13434
13979
  argumentDefinitions: []
@@ -13481,7 +14026,7 @@ module.exports = {
13481
14026
  };
13482
14027
 
13483
14028
  /***/ }),
13484
- /* 76 */
14029
+ /* 77 */
13485
14030
  /***/ (function(module, exports, __webpack_require__) {
13486
14031
 
13487
14032
  "use strict";
@@ -13636,7 +14181,7 @@ module.exports = {
13636
14181
  };
13637
14182
 
13638
14183
  /***/ }),
13639
- /* 77 */
14184
+ /* 78 */
13640
14185
  /***/ (function(module, exports, __webpack_require__) {
13641
14186
 
13642
14187
  "use strict";
@@ -13729,10 +14274,12 @@ function traverseDefinition(node) {
13729
14274
  }
13730
14275
 
13731
14276
  function traverseSelections(node, compilerContext, parentType) {
14277
+ // $FlowFixMe[escaped-generic]
13732
14278
  var nodeCache = cachesByNode.get(node);
13733
14279
 
13734
14280
  if (nodeCache == null) {
13735
- nodeCache = new Map();
14281
+ nodeCache = new Map(); // $FlowFixMe[escaped-generic]
14282
+
13736
14283
  cachesByNode.set(node, nodeCache);
13737
14284
  }
13738
14285
 
@@ -13803,12 +14350,12 @@ function traverseSelections(node, compilerContext, parentType) {
13803
14350
  if (serverSelections === node.selections) {
13804
14351
  result = node;
13805
14352
  } else {
13806
- result = _objectSpread({}, node, {
14353
+ result = _objectSpread(_objectSpread({}, node), {}, {
13807
14354
  selections: serverSelections
13808
14355
  });
13809
14356
  }
13810
14357
  } else {
13811
- result = _objectSpread({}, node, {
14358
+ result = _objectSpread(_objectSpread({}, node), {}, {
13812
14359
  selections: [].concat((0, _toConsumableArray2["default"])(serverSelections), [// Group client fields under a single ClientExtension node
13813
14360
  {
13814
14361
  kind: 'ClientExtension',
@@ -13864,7 +14411,7 @@ module.exports = {
13864
14411
  };
13865
14412
 
13866
14413
  /***/ }),
13867
- /* 78 */
14414
+ /* 79 */
13868
14415
  /***/ (function(module, exports, __webpack_require__) {
13869
14416
 
13870
14417
  "use strict";
@@ -13905,7 +14452,7 @@ var _require = __webpack_require__(1),
13905
14452
  var _require2 = __webpack_require__(7),
13906
14453
  parse = _require2.parse;
13907
14454
 
13908
- var _require3 = __webpack_require__(11),
14455
+ var _require3 = __webpack_require__(10),
13909
14456
  ConnectionInterface = _require3.ConnectionInterface,
13910
14457
  RelayFeatureFlags = _require3.RelayFeatureFlags;
13911
14458
 
@@ -13952,8 +14499,8 @@ function visitFragmentOrRoot(node, options) {
13952
14499
  var connectionMetadata = options.connectionMetadata;
13953
14500
 
13954
14501
  if (connectionMetadata.length) {
13955
- return _objectSpread({}, transformedNode, {
13956
- metadata: _objectSpread({}, transformedNode.metadata, {
14502
+ return _objectSpread(_objectSpread({}, transformedNode), {}, {
14503
+ metadata: _objectSpread(_objectSpread({}, transformedNode.metadata), {}, {
13957
14504
  connection: connectionMetadata
13958
14505
  })
13959
14506
  });
@@ -13974,7 +14521,7 @@ function visitLinkedField(field, options) {
13974
14521
  var nullableType = schema.getNullableType(field.type);
13975
14522
  var isPlural = schema.isList(nullableType);
13976
14523
  var path = options.path.concat(isPlural ? null : field.alias || field.name);
13977
- var transformedField = this.traverse(field, _objectSpread({}, options, {
14524
+ var transformedField = this.traverse(field, _objectSpread(_objectSpread({}, options), {}, {
13978
14525
  path: path
13979
14526
  }));
13980
14527
  var connectionDirective = field.directives.find(function (directive) {
@@ -14004,12 +14551,12 @@ function visitLinkedField(field, options) {
14004
14551
 
14005
14552
  if (direction != null) {
14006
14553
  var selections = transformConnectionSelections(this.getContext(), transformedField, schema.assertCompositeType(nullableType), direction, connectionArguments, connectionDirective.loc, options.documentName);
14007
- transformedField = _objectSpread({}, transformedField, {
14554
+ transformedField = _objectSpread(_objectSpread({}, transformedField), {}, {
14008
14555
  selections: selections
14009
14556
  });
14010
14557
  }
14011
14558
 
14012
- return _objectSpread({}, transformedField, {
14559
+ return _objectSpread(_objectSpread({}, transformedField), {}, {
14013
14560
  directives: transformedField.directives.filter(function (directive) {
14014
14561
  return directive !== connectionDirective;
14015
14562
  }),
@@ -14098,8 +14645,7 @@ function buildConnectionArguments(field, connectionDirective) {
14098
14645
  useCustomizedBatch: useCustomizedBatchArg,
14099
14646
  label: key
14100
14647
  };
14101
- } // T45504512: new connection model
14102
-
14648
+ }
14103
14649
 
14104
14650
  var dynamicKeyArg = connectionDirective.args.find(function (arg) {
14105
14651
  return arg.name === 'dynamicKey_UNSTABLE';
@@ -14322,7 +14868,7 @@ function transformConnectionSelections(context, field, nullableType, direction,
14322
14868
  throw createCompilerError('ConnectionTransform: Expected generated pageInfo selection to be ' + 'a LinkedField', [field.loc]);
14323
14869
  }
14324
14870
 
14325
- transformedPageInfoSelection = _objectSpread({}, transformedPageInfoSelection, {
14871
+ transformedPageInfoSelection = _objectSpread(_objectSpread({}, transformedPageInfoSelection), {}, {
14326
14872
  selections: [].concat((0, _toConsumableArray2["default"])(transformedPageInfoSelection.selections), [{
14327
14873
  directives: [],
14328
14874
  kind: 'InlineFragment',
@@ -14351,7 +14897,7 @@ function transformConnectionSelections(context, field, nullableType, direction,
14351
14897
  var edgeAst = parse(edgeText);
14352
14898
  var edgeFragment = RelayParser.transform(schema, [edgeAst.definitions[0]])[0]; // When streaming the edges field needs @stream
14353
14899
 
14354
- transformedEdgesSelection = _objectSpread({}, transformedEdgesSelection, {
14900
+ transformedEdgesSelection = _objectSpread(_objectSpread({}, transformedEdgesSelection), {}, {
14355
14901
  directives: streamDirective != null ? [].concat((0, _toConsumableArray2["default"])(transformedEdgesSelection.directives), [streamDirective]) : transformedEdgesSelection.directives,
14356
14902
  selections: [].concat((0, _toConsumableArray2["default"])(transformedEdgesSelection.selections), [{
14357
14903
  directives: [],
@@ -14514,7 +15060,7 @@ module.exports = {
14514
15060
  };
14515
15061
 
14516
15062
  /***/ }),
14517
- /* 79 */
15063
+ /* 80 */
14518
15064
  /***/ (function(module, exports, __webpack_require__) {
14519
15065
 
14520
15066
  "use strict";
@@ -14536,9 +15082,9 @@ var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
14536
15082
 
14537
15083
  var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(4));
14538
15084
 
14539
- 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; } } }; }
15085
+ 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; } } }; }
14540
15086
 
14541
- 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); }
15087
+ 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); }
14542
15088
 
14543
15089
  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; }
14544
15090
 
@@ -14551,14 +15097,19 @@ var IRTransformer = __webpack_require__(3);
14551
15097
  var _require = __webpack_require__(1),
14552
15098
  createUserError = _require.createUserError;
14553
15099
 
14554
- var _require2 = __webpack_require__(11),
15100
+ var _require2 = __webpack_require__(10),
14555
15101
  ConnectionInterface = _require2.ConnectionInterface;
14556
15102
 
14557
15103
  var DELETE_RECORD = 'deleteRecord';
15104
+ var DELETE_EDGE = 'deleteEdge';
14558
15105
  var APPEND_EDGE = 'appendEdge';
14559
15106
  var PREPEND_EDGE = 'prependEdge';
14560
- var LINKED_FIELD_DIRECTIVES = [APPEND_EDGE, PREPEND_EDGE];
14561
- var SCHEMA_EXTENSION = "\n directive @".concat(DELETE_RECORD, " on FIELD\n directive @").concat(APPEND_EDGE, "(\n connections: [String!]!\n ) on FIELD\n directive @").concat(PREPEND_EDGE, "(\n connections: [String!]!\n ) on FIELD\n");
15107
+ var APPEND_NODE = 'appendNode';
15108
+ var PREPEND_NODE = 'prependNode';
15109
+ var EDGE_LINKED_FIELD_DIRECTIVES = [APPEND_EDGE, PREPEND_EDGE];
15110
+ var NODE_LINKED_FIELD_DIRECTIVES = [APPEND_NODE, PREPEND_NODE];
15111
+ var LINKED_FIELD_DIRECTIVES = [].concat(EDGE_LINKED_FIELD_DIRECTIVES, NODE_LINKED_FIELD_DIRECTIVES);
15112
+ var SCHEMA_EXTENSION = "\n directive @".concat(DELETE_RECORD, " on FIELD\n directive @").concat(DELETE_EDGE, "(\n connections: [ID!]!\n ) on FIELD\n directive @").concat(APPEND_EDGE, "(\n connections: [ID!]!\n ) on FIELD\n directive @").concat(PREPEND_EDGE, "(\n connections: [ID!]!\n ) on FIELD\n directive @").concat(APPEND_NODE, "(\n connections: [ID!]!\n edgeTypeName: String!\n ) on FIELD\n directive @").concat(PREPEND_NODE, "(\n connections: [ID!]!\n edgeTypeName: String!\n ) on FIELD\n");
14562
15113
 
14563
15114
  function transform(context) {
14564
15115
  return IRTransformer.transform(context, {
@@ -14582,29 +15133,42 @@ function visitScalarField(field) {
14582
15133
  throw createUserError("Invalid use of @".concat(linkedFieldDirective.name, " on scalar field '").concat(field.name, "'"), [linkedFieldDirective.loc]);
14583
15134
  }
14584
15135
 
14585
- var deleteDirective = field.directives.find(function (directive) {
15136
+ var deleteNodeDirective = field.directives.find(function (directive) {
14586
15137
  return directive.name === DELETE_RECORD;
14587
15138
  });
15139
+ var deleteEdgeDirective = field.directives.find(function (directive) {
15140
+ return directive.name === DELETE_EDGE;
15141
+ });
14588
15142
 
14589
- if (deleteDirective == null) {
15143
+ if (deleteNodeDirective != null && deleteEdgeDirective != null) {
15144
+ throw createUserError("Both @deleteNode and @deleteEdge are used on field '".concat(field.name, "'. Only one directive is supported for now."), [deleteNodeDirective.loc, deleteEdgeDirective.loc]);
15145
+ }
15146
+
15147
+ var targetDirective = deleteNodeDirective !== null && deleteNodeDirective !== void 0 ? deleteNodeDirective : deleteEdgeDirective;
15148
+
15149
+ if (targetDirective == null) {
14590
15150
  return field;
14591
15151
  }
14592
15152
 
14593
15153
  var schema = this.getContext().getSchema();
14594
15154
 
14595
- if (!schema.isId(field.type)) {
14596
- throw createUserError("Invalid use of @".concat(DELETE_RECORD, " on field '").concat(field.name, "'. Expected field type ID, got ").concat(schema.getTypeString(field.type), "."), [deleteDirective.loc]);
15155
+ if (!schema.isId(schema.getRawType(field.type))) {
15156
+ throw createUserError("Invalid use of @".concat(targetDirective.name, " on field '").concat(field.name, "'. Expected field to return an ID or list of ID values, got ").concat(schema.getTypeString(field.type), "."), [targetDirective.loc]);
14597
15157
  }
14598
15158
 
15159
+ var connectionsArg = targetDirective.args.find(function (arg) {
15160
+ return arg.name === 'connections';
15161
+ });
14599
15162
  var handle = {
14600
- name: DELETE_RECORD,
15163
+ name: targetDirective.name,
14601
15164
  key: '',
14602
15165
  dynamicKey: null,
14603
- filters: null
15166
+ filters: null,
15167
+ handleArgs: connectionsArg ? [connectionsArg] : undefined
14604
15168
  };
14605
- return _objectSpread({}, field, {
15169
+ return _objectSpread(_objectSpread({}, field), {}, {
14606
15170
  directives: field.directives.filter(function (directive) {
14607
- return directive !== deleteDirective;
15171
+ return directive !== targetDirective;
14608
15172
  }),
14609
15173
  handles: field.handles ? [].concat((0, _toConsumableArray2["default"])(field.handles), [handle]) : [handle]
14610
15174
  });
@@ -14621,64 +15185,104 @@ function visitLinkedField(field) {
14621
15185
  }
14622
15186
 
14623
15187
  var edgeDirective = transformedField.directives.find(function (directive) {
14624
- return LINKED_FIELD_DIRECTIVES.indexOf(directive.name) > -1;
15188
+ return EDGE_LINKED_FIELD_DIRECTIVES.indexOf(directive.name) > -1;
15189
+ });
15190
+ var nodeDirective = transformedField.directives.find(function (directive) {
15191
+ return NODE_LINKED_FIELD_DIRECTIVES.indexOf(directive.name) > -1;
14625
15192
  });
14626
15193
 
14627
- if (edgeDirective == null) {
15194
+ if (edgeDirective == null && nodeDirective == null) {
14628
15195
  return transformedField;
14629
15196
  }
14630
15197
 
14631
- var connectionsArg = edgeDirective.args.find(function (arg) {
15198
+ if (edgeDirective != null && nodeDirective != null) {
15199
+ throw createUserError("Invalid use of @".concat(edgeDirective.name, " and @").concat(nodeDirective.name, " on field '").concat(transformedField.name, "' - these directives cannot be used together."), [edgeDirective.loc]);
15200
+ }
15201
+
15202
+ var targetDirective = edgeDirective !== null && edgeDirective !== void 0 ? edgeDirective : nodeDirective;
15203
+ var connectionsArg = targetDirective.args.find(function (arg) {
14632
15204
  return arg.name === 'connections';
14633
15205
  });
14634
15206
 
14635
15207
  if (connectionsArg == null) {
14636
- throw createUserError("Expected the 'connections' argument to be defined on @".concat(edgeDirective.name, "."), [edgeDirective.loc]);
15208
+ throw createUserError("Expected the 'connections' argument to be defined on @".concat(targetDirective.name, "."), [targetDirective.loc]);
14637
15209
  }
14638
15210
 
14639
15211
  var schema = this.getContext().getSchema();
14640
- var fields = schema.getFields(transformedField.type);
14641
- var cursorFieldID;
14642
- var nodeFieldID;
14643
15212
 
14644
- var _iterator = _createForOfIteratorHelper(fields),
14645
- _step;
15213
+ if (edgeDirective) {
15214
+ var fields = schema.getFields(transformedField.type);
15215
+ var cursorFieldID;
15216
+ var nodeFieldID;
14646
15217
 
14647
- try {
14648
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
14649
- var fieldID = _step.value;
14650
- var fieldName = schema.getFieldName(fieldID);
15218
+ var _iterator = _createForOfIteratorHelper(fields),
15219
+ _step;
15220
+
15221
+ try {
15222
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
15223
+ var fieldID = _step.value;
15224
+ var fieldName = schema.getFieldName(fieldID);
15225
+
15226
+ if (fieldName === ConnectionInterface.get().CURSOR) {
15227
+ cursorFieldID = fieldID;
15228
+ } else if (fieldName === ConnectionInterface.get().NODE) {
15229
+ nodeFieldID = fieldID;
15230
+ }
15231
+ } // Edge
15232
+
15233
+ } catch (err) {
15234
+ _iterator.e(err);
15235
+ } finally {
15236
+ _iterator.f();
15237
+ }
15238
+
15239
+ if (cursorFieldID != null && nodeFieldID != null) {
15240
+ var handle = {
15241
+ name: edgeDirective.name,
15242
+ key: '',
15243
+ dynamicKey: null,
15244
+ filters: null,
15245
+ handleArgs: [connectionsArg]
15246
+ };
15247
+ return _objectSpread(_objectSpread({}, transformedField), {}, {
15248
+ directives: transformedField.directives.filter(function (directive) {
15249
+ return directive !== edgeDirective;
15250
+ }),
15251
+ handles: transformedField.handles ? [].concat((0, _toConsumableArray2["default"])(transformedField.handles), [handle]) : [handle]
15252
+ });
15253
+ }
15254
+
15255
+ throw createUserError("Unsupported use of @".concat(edgeDirective.name, " on field '").concat(transformedField.name, "', expected an edge field (a field with 'cursor' and 'node' selection)."), [targetDirective.loc]);
15256
+ } else {
15257
+ // Node
15258
+ var edgeTypeNameArg = nodeDirective.args.find(function (arg) {
15259
+ return arg.name === 'edgeTypeName';
15260
+ });
15261
+
15262
+ if (!edgeTypeNameArg) {
15263
+ throw createUserError("Unsupported use of @".concat(nodeDirective.name, " on field '").concat(transformedField.name, "', 'edgeTypeName' argument must be provided."), [targetDirective.loc]);
15264
+ }
14651
15265
 
14652
- if (fieldName === ConnectionInterface.get().CURSOR) {
14653
- cursorFieldID = fieldID;
14654
- } else if (fieldName === ConnectionInterface.get().NODE) {
14655
- nodeFieldID = fieldID;
14656
- }
14657
- } // Edge
15266
+ var rawType = schema.getRawType(transformedField.type);
14658
15267
 
14659
- } catch (err) {
14660
- _iterator.e(err);
14661
- } finally {
14662
- _iterator.f();
14663
- }
15268
+ if (schema.canHaveSelections(rawType)) {
15269
+ var _handle = {
15270
+ name: nodeDirective.name,
15271
+ key: '',
15272
+ dynamicKey: null,
15273
+ filters: null,
15274
+ handleArgs: [connectionsArg, edgeTypeNameArg]
15275
+ };
15276
+ return _objectSpread(_objectSpread({}, transformedField), {}, {
15277
+ directives: transformedField.directives.filter(function (directive) {
15278
+ return directive !== nodeDirective;
15279
+ }),
15280
+ handles: transformedField.handles ? [].concat((0, _toConsumableArray2["default"])(transformedField.handles), [_handle]) : [_handle]
15281
+ });
15282
+ }
14664
15283
 
14665
- if (cursorFieldID != null && nodeFieldID != null) {
14666
- var handle = {
14667
- name: edgeDirective.name,
14668
- key: '',
14669
- dynamicKey: null,
14670
- filters: null,
14671
- handleArgs: [connectionsArg]
14672
- };
14673
- return _objectSpread({}, transformedField, {
14674
- directives: transformedField.directives.filter(function (directive) {
14675
- return directive !== edgeDirective;
14676
- }),
14677
- handles: transformedField.handles ? [].concat((0, _toConsumableArray2["default"])(transformedField.handles), [handle]) : [handle]
14678
- });
15284
+ throw createUserError("Unsupported use of @".concat(nodeDirective.name, " on field '").concat(transformedField.name, "'. Expected an object, union or interface, but got '").concat(schema.getTypeString(transformedField.type), "'."), [nodeDirective.loc]);
14679
15285
  }
14680
-
14681
- throw createUserError("Unsupported use of @".concat(edgeDirective.name, " on field '").concat(transformedField.name, "', expected an edge field (a field with 'cursor' and 'node' selection)."), [edgeDirective.loc]);
14682
15286
  }
14683
15287
 
14684
15288
  module.exports = {
@@ -14687,7 +15291,7 @@ module.exports = {
14687
15291
  };
14688
15292
 
14689
15293
  /***/ }),
14690
- /* 80 */
15294
+ /* 81 */
14691
15295
  /***/ (function(module, exports, __webpack_require__) {
14692
15296
 
14693
15297
  "use strict";
@@ -14788,7 +15392,7 @@ function visitLinkedField(field, state) {
14788
15392
  throw createUserError("Invalid use of @stream on non-plural field '".concat(field.name, "'"), [streamDirective.loc]);
14789
15393
  }
14790
15394
 
14791
- transformedField = _objectSpread({}, transformedField, {
15395
+ transformedField = _objectSpread(_objectSpread({}, transformedField), {}, {
14792
15396
  directives: transformedField.directives.filter(function (directive) {
14793
15397
  return directive.name !== 'stream';
14794
15398
  })
@@ -14866,7 +15470,7 @@ function visitFragmentSpread(spread, state) {
14866
15470
  return transformedSpread;
14867
15471
  }
14868
15472
 
14869
- transformedSpread = _objectSpread({}, transformedSpread, {
15473
+ transformedSpread = _objectSpread(_objectSpread({}, transformedSpread), {}, {
14870
15474
  directives: transformedSpread.directives.filter(function (directive) {
14871
15475
  return directive.name !== 'defer';
14872
15476
  })
@@ -14943,7 +15547,7 @@ module.exports = {
14943
15547
  };
14944
15548
 
14945
15549
  /***/ }),
14946
- /* 81 */
15550
+ /* 82 */
14947
15551
  /***/ (function(module, exports, __webpack_require__) {
14948
15552
 
14949
15553
  "use strict";
@@ -14989,7 +15593,7 @@ module.exports = {
14989
15593
  };
14990
15594
 
14991
15595
  /***/ }),
14992
- /* 82 */
15596
+ /* 83 */
14993
15597
  /***/ (function(module, exports, __webpack_require__) {
14994
15598
 
14995
15599
  "use strict";
@@ -15005,9 +15609,9 @@ module.exports = {
15005
15609
  // flowlint ambiguous-object-type:error
15006
15610
 
15007
15611
 
15008
- 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; } } }; }
15612
+ 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; } } }; }
15009
15613
 
15010
- 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); }
15614
+ 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); }
15011
15615
 
15012
15616
  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; }
15013
15617
 
@@ -15050,7 +15654,7 @@ module.exports = {
15050
15654
  };
15051
15655
 
15052
15656
  /***/ }),
15053
- /* 83 */
15657
+ /* 84 */
15054
15658
  /***/ (function(module, exports, __webpack_require__) {
15055
15659
 
15056
15660
  "use strict";
@@ -15080,9 +15684,9 @@ var SchemaUtils = __webpack_require__(9);
15080
15684
 
15081
15685
  var invariant = __webpack_require__(5);
15082
15686
 
15083
- var nullthrows = __webpack_require__(15);
15687
+ var nullthrows = __webpack_require__(16);
15084
15688
 
15085
- var _require = __webpack_require__(11),
15689
+ var _require = __webpack_require__(10),
15086
15690
  getRelayHandleKey = _require.getRelayHandleKey;
15087
15691
 
15088
15692
  function fieldHandleTransform(context) {
@@ -15114,7 +15718,7 @@ function visitField(field) {
15114
15718
  var filters = handle.filters;
15115
15719
  var args = filters ? nextField.args.filter(function (arg) {
15116
15720
  return filters.indexOf(arg.name) !== -1;
15117
- }) : []; // T45504512: new connection model
15721
+ }) : [];
15118
15722
 
15119
15723
  if (handle.dynamicKey != null) {
15120
15724
  args.push({
@@ -15126,7 +15730,7 @@ function visitField(field) {
15126
15730
  });
15127
15731
  }
15128
15732
 
15129
- return _objectSpread({}, nextField, {
15733
+ return _objectSpread(_objectSpread({}, nextField), {}, {
15130
15734
  args: args,
15131
15735
  alias: alias,
15132
15736
  name: name,
@@ -15139,7 +15743,42 @@ module.exports = {
15139
15743
  };
15140
15744
 
15141
15745
  /***/ }),
15142
- /* 84 */
15746
+ /* 85 */
15747
+ /***/ (function(module, exports, __webpack_require__) {
15748
+
15749
+ "use strict";
15750
+ /**
15751
+ * Copyright (c) Facebook, Inc. and its affiliates.
15752
+ *
15753
+ * This source code is licensed under the MIT license found in the
15754
+ * LICENSE file in the root directory of this source tree.
15755
+ *
15756
+ *
15757
+ * @format
15758
+ */
15759
+
15760
+
15761
+ var IRTransformer = __webpack_require__(3);
15762
+
15763
+ var COMPILE_TIME_DIRECTIVES = new Set(['required']);
15764
+ /**
15765
+ * A transform that removes any directives that are only interpreted by the Relay compiler.
15766
+ */
15767
+
15768
+ function filterDirectivesTransform(context) {
15769
+ return IRTransformer.transform(context, {
15770
+ Directive: function Directive(directive) {
15771
+ return COMPILE_TIME_DIRECTIVES.has(directive.name) ? null : directive;
15772
+ }
15773
+ });
15774
+ }
15775
+
15776
+ module.exports = {
15777
+ transform: filterDirectivesTransform
15778
+ };
15779
+
15780
+ /***/ }),
15781
+ /* 86 */
15143
15782
  /***/ (function(module, exports, __webpack_require__) {
15144
15783
 
15145
15784
  "use strict";
@@ -15186,7 +15825,7 @@ module.exports = {
15186
15825
  };
15187
15826
 
15188
15827
  /***/ }),
15189
- /* 85 */
15828
+ /* 87 */
15190
15829
  /***/ (function(module, exports, __webpack_require__) {
15191
15830
 
15192
15831
  "use strict";
@@ -15325,7 +15964,7 @@ function eq(a, b, aStack, bStack) {
15325
15964
  module.exports = areEqual;
15326
15965
 
15327
15966
  /***/ }),
15328
- /* 86 */
15967
+ /* 88 */
15329
15968
  /***/ (function(module, exports, __webpack_require__) {
15330
15969
 
15331
15970
  "use strict";
@@ -15426,7 +16065,7 @@ function visitLinkedField(field, state) {
15426
16065
  var unmodifiedType = schema.assertCompositeType(schema.getRawType(field.type)); // If the field type has an `id` subfield add an `id` selection
15427
16066
 
15428
16067
  if (schema.canHaveSelections(unmodifiedType) && schema.hasId(unmodifiedType)) {
15429
- return _objectSpread({}, transformedNode, {
16068
+ return _objectSpread(_objectSpread({}, transformedNode), {}, {
15430
16069
  selections: [].concat((0, _toConsumableArray2["default"])(transformedNode.selections), [state.idFieldForType(unmodifiedType)])
15431
16070
  });
15432
16071
  } // If the field type is abstract, then generate a `... on Node { id }`
@@ -15457,7 +16096,7 @@ function visitLinkedField(field, state) {
15457
16096
  }).forEach(function (concreteType) {
15458
16097
  selections.push(state.idFragmentForType(concreteType));
15459
16098
  });
15460
- return _objectSpread({}, transformedNode, {
16099
+ return _objectSpread(_objectSpread({}, transformedNode), {}, {
15461
16100
  selections: selections
15462
16101
  });
15463
16102
  }
@@ -15470,7 +16109,7 @@ module.exports = {
15470
16109
  };
15471
16110
 
15472
16111
  /***/ }),
15473
- /* 87 */
16112
+ /* 89 */
15474
16113
  /***/ (function(module, exports, __webpack_require__) {
15475
16114
 
15476
16115
  "use strict";
@@ -15545,7 +16184,7 @@ function visitFragment(fragment, state) {
15545
16184
 
15546
16185
  if (!isClientType && schema.isAbstractType(rawType)) {
15547
16186
  var abstractKey = generateAbstractTypeRefinementKey(schema, rawType);
15548
- transformedNode = _objectSpread({}, transformedNode, {
16187
+ transformedNode = _objectSpread(_objectSpread({}, transformedNode), {}, {
15549
16188
  selections: [{
15550
16189
  kind: 'ScalarField',
15551
16190
  alias: abstractKey,
@@ -15581,7 +16220,7 @@ function visitInlineFragment(fragment, state) {
15581
16220
 
15582
16221
  if (!isClientType && schema.isAbstractType(rawType)) {
15583
16222
  var abstractKey = generateAbstractTypeRefinementKey(schema, rawType);
15584
- transformedNode = _objectSpread({}, transformedNode, {
16223
+ transformedNode = _objectSpread(_objectSpread({}, transformedNode), {}, {
15585
16224
  selections: [{
15586
16225
  kind: 'ScalarField',
15587
16226
  alias: abstractKey,
@@ -15615,7 +16254,7 @@ function visitLinkedField(field, state) {
15615
16254
  transformedNode = this.traverse(field, state);
15616
16255
 
15617
16256
  if (schema.isAbstractType(schema.getRawType(transformedNode.type)) && !hasUnaliasedSelection(transformedNode, TYPENAME_KEY)) {
15618
- transformedNode = _objectSpread({}, transformedNode, {
16257
+ transformedNode = _objectSpread(_objectSpread({}, transformedNode), {}, {
15619
16258
  selections: [state.typenameField].concat((0, _toConsumableArray2["default"])(transformedNode.selections))
15620
16259
  });
15621
16260
  }
@@ -15629,7 +16268,7 @@ module.exports = {
15629
16268
  };
15630
16269
 
15631
16270
  /***/ }),
15632
- /* 88 */
16271
+ /* 90 */
15633
16272
  /***/ (function(module, exports, __webpack_require__) {
15634
16273
 
15635
16274
  "use strict";
@@ -15684,11 +16323,11 @@ function visitFragment(fragment) {
15684
16323
  return transformedFragment;
15685
16324
  }
15686
16325
 
15687
- return _objectSpread({}, transformedFragment, {
16326
+ return _objectSpread(_objectSpread({}, transformedFragment), {}, {
15688
16327
  directives: transformedFragment.directives.filter(function (directive) {
15689
16328
  return directive !== inlineDirective;
15690
16329
  }),
15691
- metadata: _objectSpread({}, transformedFragment.metadata || {}, {
16330
+ metadata: _objectSpread(_objectSpread({}, transformedFragment.metadata || {}), {}, {
15692
16331
  inlineData: true
15693
16332
  })
15694
16333
  });
@@ -15739,7 +16378,7 @@ module.exports = {
15739
16378
  };
15740
16379
 
15741
16380
  /***/ }),
15742
- /* 89 */
16381
+ /* 91 */
15743
16382
  /***/ (function(module, exports, __webpack_require__) {
15744
16383
 
15745
16384
  "use strict";
@@ -15806,7 +16445,7 @@ module.exports = {
15806
16445
  };
15807
16446
 
15808
16447
  /***/ }),
15809
- /* 90 */
16448
+ /* 92 */
15810
16449
  /***/ (function(module, exports, __webpack_require__) {
15811
16450
 
15812
16451
  "use strict";
@@ -15878,7 +16517,175 @@ function joinArgumentDefinition(schema, prevArgDef, nextArgDef, directiveName) {
15878
16517
  module.exports = joinArgumentDefinitions;
15879
16518
 
15880
16519
  /***/ }),
15881
- /* 91 */
16520
+ /* 93 */
16521
+ /***/ (function(module, exports, __webpack_require__) {
16522
+
16523
+ "use strict";
16524
+ /**
16525
+ * Copyright (c) Facebook, Inc. and its affiliates.
16526
+ *
16527
+ * This source code is licensed under the MIT license found in the
16528
+ * LICENSE file in the root directory of this source tree.
16529
+ *
16530
+ *
16531
+ * @format
16532
+ * @emails oncall+relay
16533
+ */
16534
+
16535
+
16536
+ var _interopRequireDefault = __webpack_require__(0);
16537
+
16538
+ var _defineProperty2 = _interopRequireDefault(__webpack_require__(2));
16539
+
16540
+ 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; }
16541
+
16542
+ 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; }
16543
+
16544
+ var IRTransformer = __webpack_require__(3);
16545
+
16546
+ var _require = __webpack_require__(1),
16547
+ createUserError = _require.createUserError,
16548
+ createCompilerError = _require.createCompilerError;
16549
+
16550
+ var _require2 = __webpack_require__(10),
16551
+ RelayFeatureFlags = _require2.RelayFeatureFlags;
16552
+
16553
+ var FLIGHT_FIELD_COMPONENT_ARGUMENT_TYPE = 'String';
16554
+ var FLIGHT_FIELD_COMPONENT_ARGUMENT_NAME = 'component';
16555
+ var FLIGHT_FIELD_PROPS_ARGUMENT_NAME = 'props';
16556
+ var FLIGHT_FIELD_PROPS_TYPE = 'ReactFlightProps';
16557
+ var FLIGHT_FIELD_RETURN_TYPE = 'ReactFlightComponent';
16558
+
16559
+ /**
16560
+ * Experimental transform for React Flight.
16561
+ */
16562
+ function reactFlightComponentTransform(context) {
16563
+ var schema = context.getSchema();
16564
+ var propsType = schema.getTypeFromString(FLIGHT_FIELD_PROPS_TYPE);
16565
+ propsType = propsType ? schema.asInputType(propsType) : null;
16566
+ var componentType = schema.getTypeFromString(FLIGHT_FIELD_RETURN_TYPE);
16567
+ componentType = componentType ? schema.asScalarFieldType(componentType) : null;
16568
+
16569
+ if (!RelayFeatureFlags.ENABLE_REACT_FLIGHT_COMPONENT_FIELD || propsType == null || componentType == null) {
16570
+ return context;
16571
+ }
16572
+
16573
+ var types = {
16574
+ propsType: propsType,
16575
+ componentType: componentType
16576
+ };
16577
+ return IRTransformer.transform(context, {
16578
+ ScalarField: visitScalarField,
16579
+ LinkedField: visitLinkedField,
16580
+ InlineFragment: visitInlineFragment
16581
+ }, function (node) {
16582
+ return {
16583
+ parentType: node.type,
16584
+ types: types
16585
+ };
16586
+ });
16587
+ }
16588
+
16589
+ function visitInlineFragment(fragment, state) {
16590
+ var _fragment$typeConditi;
16591
+
16592
+ return this.traverse(fragment, {
16593
+ parentType: (_fragment$typeConditi = fragment.typeCondition) !== null && _fragment$typeConditi !== void 0 ? _fragment$typeConditi : state.parentType,
16594
+ types: state.types
16595
+ });
16596
+ }
16597
+
16598
+ function visitLinkedField(field, state) {
16599
+ return this.traverse(field, {
16600
+ parentType: field.type,
16601
+ types: state.types
16602
+ });
16603
+ }
16604
+
16605
+ function visitScalarField(field, state) {
16606
+ // use the return type to quickly determine if this is a flight field
16607
+ var schema = this.getContext().getSchema();
16608
+
16609
+ if (schema.getRawType(field.type) !== state.types.componentType) {
16610
+ return field;
16611
+ } // get the name of the component that provides this field
16612
+
16613
+
16614
+ var clientField = schema.getFieldByName(state.parentType, field.name);
16615
+
16616
+ if (clientField == null) {
16617
+ throw createCompilerError("Definition not found for field '".concat(schema.getTypeString(state.parentType), ".").concat(field.name, "'"), [field.loc]);
16618
+ }
16619
+
16620
+ var componentDirective = clientField.directives.find(function (directive) {
16621
+ return directive.name === 'react_flight_component';
16622
+ });
16623
+ var componentNameArg = componentDirective === null || componentDirective === void 0 ? void 0 : componentDirective.args.find(function (arg) {
16624
+ return arg.name === 'name';
16625
+ });
16626
+
16627
+ if (componentNameArg == null || componentNameArg.value.kind !== 'StringValue' || typeof componentNameArg.value.value !== 'string') {
16628
+ throw createUserError('Invalid Flight field, expected the schema extension to specify ' + "the component's module name with the '@react_flight_component' directive", [field.loc]);
16629
+ }
16630
+
16631
+ var componentName = componentNameArg.value.value; // validate that the parent type has a `flight(component, props)` field
16632
+
16633
+ var flightField = schema.getFieldByName(state.parentType, 'flight');
16634
+
16635
+ if (flightField == null) {
16636
+ throw createUserError("Invalid Flight field, expected the parent type '".concat(schema.getTypeString(state.parentType), "' ") + "to define a 'flight(component: String, props: ReactFlightProps): ReactFlightComponent' field", [field.loc]);
16637
+ }
16638
+
16639
+ var componentArg = flightField.args.get(FLIGHT_FIELD_COMPONENT_ARGUMENT_NAME);
16640
+ var propsArg = flightField.args.get(FLIGHT_FIELD_PROPS_ARGUMENT_NAME);
16641
+
16642
+ if (componentArg == null || propsArg == null || schema.getRawType(componentArg.type) !== schema.getTypeFromString(FLIGHT_FIELD_COMPONENT_ARGUMENT_TYPE) || schema.getRawType(propsArg.type) !== state.types.propsType || schema.getRawType(flightField.type) !== state.types.componentType) {
16643
+ throw createUserError("Invalid Flight field, expected the parent type '".concat(schema.getTypeString(state.parentType), "' ") + "to define a 'flight(component: String, props: ReactFlightProps): ReactFlightComponent' field", [field.loc]);
16644
+ }
16645
+
16646
+ return _objectSpread(_objectSpread({}, field), {}, {
16647
+ name: 'flight',
16648
+ args: [{
16649
+ kind: 'Argument',
16650
+ loc: field.loc,
16651
+ name: FLIGHT_FIELD_COMPONENT_ARGUMENT_NAME,
16652
+ type: schema.getTypeFromString(FLIGHT_FIELD_COMPONENT_ARGUMENT_TYPE),
16653
+ value: {
16654
+ kind: 'Literal',
16655
+ value: componentName,
16656
+ loc: field.loc
16657
+ }
16658
+ }, {
16659
+ kind: 'Argument',
16660
+ loc: field.loc,
16661
+ name: FLIGHT_FIELD_PROPS_ARGUMENT_NAME,
16662
+ type: state.types.propsType,
16663
+ value: {
16664
+ kind: 'ObjectValue',
16665
+ fields: field.args.map(function (arg) {
16666
+ return {
16667
+ kind: 'ObjectFieldValue',
16668
+ loc: arg.loc,
16669
+ name: arg.name,
16670
+ value: arg.value
16671
+ };
16672
+ }),
16673
+ loc: field.loc
16674
+ }
16675
+ }],
16676
+ metadata: _objectSpread(_objectSpread({}, field.metadata || {}), {}, {
16677
+ flight: true
16678
+ }),
16679
+ type: state.types.componentType
16680
+ });
16681
+ }
16682
+
16683
+ module.exports = {
16684
+ transform: reactFlightComponentTransform
16685
+ };
16686
+
16687
+ /***/ }),
16688
+ /* 94 */
15882
16689
  /***/ (function(module, exports, __webpack_require__) {
15883
16690
 
15884
16691
  "use strict";
@@ -15894,19 +16701,19 @@ module.exports = joinArgumentDefinitions;
15894
16701
  // flowlint ambiguous-object-type:error
15895
16702
 
15896
16703
 
15897
- 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; } } }; }
16704
+ 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; } } }; }
15898
16705
 
15899
- 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); }
16706
+ 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); }
15900
16707
 
15901
16708
  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; }
15902
16709
 
15903
- var FetchableQueryGenerator = __webpack_require__(92);
16710
+ var FetchableQueryGenerator = __webpack_require__(95);
15904
16711
 
15905
- var NodeQueryGenerator = __webpack_require__(93);
16712
+ var NodeQueryGenerator = __webpack_require__(96);
15906
16713
 
15907
- var QueryQueryGenerator = __webpack_require__(94);
16714
+ var QueryQueryGenerator = __webpack_require__(97);
15908
16715
 
15909
- var ViewerQueryGenerator = __webpack_require__(95);
16716
+ var ViewerQueryGenerator = __webpack_require__(98);
15910
16717
 
15911
16718
  var _require = __webpack_require__(1),
15912
16719
  createUserError = _require.createUserError;
@@ -15946,7 +16753,7 @@ module.exports = {
15946
16753
  };
15947
16754
 
15948
16755
  /***/ }),
15949
- /* 92 */
16756
+ /* 95 */
15950
16757
  /***/ (function(module, exports, __webpack_require__) {
15951
16758
 
15952
16759
  "use strict";
@@ -16102,7 +16909,7 @@ function enforceIDField(schema, fragment, fetchableIdentifierField) {
16102
16909
  idField.alias = fetchableIdentifierField; // idField is uniquely owned here, safe to mutate
16103
16910
 
16104
16911
  idField.name = fetchableIdentifierField;
16105
- return _objectSpread({}, fragment, {
16912
+ return _objectSpread(_objectSpread({}, fragment), {}, {
16106
16913
  selections: [].concat((0, _toConsumableArray2["default"])(fragment.selections), [idField])
16107
16914
  });
16108
16915
  }
@@ -16113,7 +16920,7 @@ module.exports = {
16113
16920
  };
16114
16921
 
16115
16922
  /***/ }),
16116
- /* 93 */
16923
+ /* 96 */
16117
16924
  /***/ (function(module, exports, __webpack_require__) {
16118
16925
 
16119
16926
  "use strict";
@@ -16141,7 +16948,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
16141
16948
 
16142
16949
  var SchemaUtils = __webpack_require__(9);
16143
16950
 
16144
- var nullthrows = __webpack_require__(15);
16951
+ var nullthrows = __webpack_require__(16);
16145
16952
 
16146
16953
  var _require = __webpack_require__(1),
16147
16954
  createUserError = _require.createUserError;
@@ -16278,7 +17085,7 @@ function enforceIDField(schema, fragment) {
16278
17085
  selections: [SchemaUtils.generateIDField(schema, nodeType)],
16279
17086
  typeCondition: nodeType
16280
17087
  };
16281
- return _objectSpread({}, fragment, {
17088
+ return _objectSpread(_objectSpread({}, fragment), {}, {
16282
17089
  selections: [].concat((0, _toConsumableArray2["default"])(fragment.selections), [generatedIDSelection])
16283
17090
  });
16284
17091
  }
@@ -16289,7 +17096,7 @@ module.exports = {
16289
17096
  };
16290
17097
 
16291
17098
  /***/ }),
16292
- /* 94 */
17099
+ /* 97 */
16293
17100
  /***/ (function(module, exports, __webpack_require__) {
16294
17101
 
16295
17102
  "use strict";
@@ -16343,7 +17150,7 @@ module.exports = {
16343
17150
  };
16344
17151
 
16345
17152
  /***/ }),
16346
- /* 95 */
17153
+ /* 98 */
16347
17154
  /***/ (function(module, exports, __webpack_require__) {
16348
17155
 
16349
17156
  "use strict";
@@ -16426,7 +17233,7 @@ module.exports = {
16426
17233
  };
16427
17234
 
16428
17235
  /***/ }),
16429
- /* 96 */
17236
+ /* 99 */
16430
17237
  /***/ (function(module, exports, __webpack_require__) {
16431
17238
 
16432
17239
  "use strict";
@@ -16444,7 +17251,7 @@ module.exports = {
16444
17251
 
16445
17252
  var t = __webpack_require__(25);
16446
17253
 
16447
- var _require = __webpack_require__(47),
17254
+ var _require = __webpack_require__(48),
16448
17255
  exactObjectTypeAnnotation = _require.exactObjectTypeAnnotation,
16449
17256
  readOnlyArrayOfType = _require.readOnlyArrayOfType;
16450
17257
 
@@ -16551,13 +17358,13 @@ module.exports = {
16551
17358
  };
16552
17359
 
16553
17360
  /***/ }),
16554
- /* 97 */
17361
+ /* 100 */
16555
17362
  /***/ (function(module, exports) {
16556
17363
 
16557
17364
  module.exports = require("@babel/generator");
16558
17365
 
16559
17366
  /***/ }),
16560
- /* 98 */
17367
+ /* 101 */
16561
17368
  /***/ (function(module, exports, __webpack_require__) {
16562
17369
 
16563
17370
  "use strict";
@@ -16609,7 +17416,7 @@ module.exports = {
16609
17416
  };
16610
17417
 
16611
17418
  /***/ }),
16612
- /* 99 */
17419
+ /* 102 */
16613
17420
  /***/ (function(module, exports, __webpack_require__) {
16614
17421
 
16615
17422
  "use strict";
@@ -16650,7 +17457,7 @@ function visitField(field) {
16650
17457
  var transformedNode = this.traverse(field);
16651
17458
 
16652
17459
  if (transformedNode.handles) {
16653
- return _objectSpread({}, transformedNode, {
17460
+ return _objectSpread(_objectSpread({}, transformedNode), {}, {
16654
17461
  handles: null
16655
17462
  });
16656
17463
  }
@@ -16663,7 +17470,7 @@ module.exports = {
16663
17470
  };
16664
17471
 
16665
17472
  /***/ }),
16666
- /* 100 */
17473
+ /* 103 */
16667
17474
  /***/ (function(module, exports, __webpack_require__) {
16668
17475
 
16669
17476
  "use strict";
@@ -16693,7 +17500,7 @@ var IRTransformer = __webpack_require__(3);
16693
17500
 
16694
17501
  var IMap = __webpack_require__(14).Map;
16695
17502
 
16696
- var partitionArray = __webpack_require__(16);
17503
+ var partitionArray = __webpack_require__(15);
16697
17504
 
16698
17505
  var getIdentifierForSelection = __webpack_require__(39);
16699
17506
 
@@ -16828,6 +17635,7 @@ function transformNode(schema, node, selectionMap) {
16828
17635
  var result;
16829
17636
 
16830
17637
  if (isEmptySelectionMap) {
17638
+ // $FlowFixMe[escaped-generic]
16831
17639
  result = cache.get(node);
16832
17640
 
16833
17641
  if (result != null) {
@@ -16888,7 +17696,7 @@ function transformNode(schema, node, selectionMap) {
16888
17696
  true ? true ? invariant(false, 'SkipRedundantNodesTransform: Unexpected node kind `%s`.', selection.kind) : undefined : undefined;
16889
17697
  }
16890
17698
  });
16891
- var nextNode = selections.length ? _objectSpread({}, node, {
17699
+ var nextNode = selections.length ? _objectSpread(_objectSpread({}, node), {}, {
16892
17700
  selections: selections
16893
17701
  }) : null;
16894
17702
  result = {
@@ -16897,6 +17705,7 @@ function transformNode(schema, node, selectionMap) {
16897
17705
  };
16898
17706
 
16899
17707
  if (isEmptySelectionMap) {
17708
+ // $FlowFixMe[escaped-generic]
16900
17709
  cache.set(node, result);
16901
17710
  }
16902
17711
 
@@ -16924,7 +17733,7 @@ module.exports = {
16924
17733
  };
16925
17734
 
16926
17735
  /***/ }),
16927
- /* 101 */
17736
+ /* 104 */
16928
17737
  /***/ (function(module, exports, __webpack_require__) {
16929
17738
 
16930
17739
  "use strict";
@@ -16962,7 +17771,7 @@ module.exports = {
16962
17771
  };
16963
17772
 
16964
17773
  /***/ }),
16965
- /* 102 */
17774
+ /* 105 */
16966
17775
  /***/ (function(module, exports, __webpack_require__) {
16967
17776
 
16968
17777
  "use strict";
@@ -17104,7 +17913,7 @@ function transformNode(context, fragments, node) {
17104
17913
  }
17105
17914
 
17106
17915
  if (selections) {
17107
- return _objectSpread({}, node, {
17916
+ return _objectSpread(_objectSpread({}, node), {}, {
17108
17917
  selections: selections
17109
17918
  });
17110
17919
  }
@@ -17130,7 +17939,7 @@ module.exports = {
17130
17939
  };
17131
17940
 
17132
17941
  /***/ }),
17133
- /* 103 */
17942
+ /* 106 */
17134
17943
  /***/ (function(module, exports, __webpack_require__) {
17135
17944
 
17136
17945
  "use strict";
@@ -17154,9 +17963,9 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
17154
17963
 
17155
17964
  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; }
17156
17965
 
17157
- 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; } } }; }
17966
+ 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; } } }; }
17158
17967
 
17159
- 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); }
17968
+ 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); }
17160
17969
 
17161
17970
  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; }
17162
17971
 
@@ -17192,7 +18001,7 @@ function skipUnusedVariablesTransform(context) {
17192
18001
  });
17193
18002
 
17194
18003
  if (usedArgumentDefinitions.length !== node.argumentDefinitions.length) {
17195
- nextContext = nextContext.replace(_objectSpread({}, node, {
18004
+ nextContext = nextContext.replace(_objectSpread(_objectSpread({}, node), {}, {
17196
18005
  argumentDefinitions: usedArgumentDefinitions
17197
18006
  }));
17198
18007
  }
@@ -17218,7 +18027,7 @@ module.exports = {
17218
18027
  };
17219
18028
 
17220
18029
  /***/ }),
17221
- /* 104 */
18030
+ /* 107 */
17222
18031
  /***/ (function(module, exports, __webpack_require__) {
17223
18032
 
17224
18033
  "use strict";
@@ -17306,7 +18115,7 @@ module.exports = {
17306
18115
  };
17307
18116
 
17308
18117
  /***/ }),
17309
- /* 105 */
18118
+ /* 108 */
17310
18119
  /***/ (function(module, exports, __webpack_require__) {
17311
18120
 
17312
18121
  "use strict";
@@ -17444,11 +18253,11 @@ function visitRoot(node) {
17444
18253
  keys.forEach(function (key) {
17445
18254
  sortedSelectionsTypeInfo[key] = selectionsTypeInfo[key];
17446
18255
  });
17447
- return _objectSpread({}, node, {
18256
+ return _objectSpread(_objectSpread({}, node), {}, {
17448
18257
  directives: node.directives.filter(function (directive) {
17449
18258
  return directive !== testDirective;
17450
18259
  }),
17451
- metadata: _objectSpread({}, node.metadata || {}, {
18260
+ metadata: _objectSpread(_objectSpread({}, node.metadata || {}), {}, {
17452
18261
  relayTestingSelectionTypeInfo: sortedSelectionsTypeInfo
17453
18262
  })
17454
18263
  });
@@ -17460,7 +18269,7 @@ module.exports = {
17460
18269
  };
17461
18270
 
17462
18271
  /***/ }),
17463
- /* 106 */
18272
+ /* 109 */
17464
18273
  /***/ (function(module, exports, __webpack_require__) {
17465
18274
 
17466
18275
  "use strict";
@@ -17476,9 +18285,9 @@ module.exports = {
17476
18285
  // flowlint ambiguous-object-type:error
17477
18286
 
17478
18287
 
17479
- 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; } } }; }
18288
+ 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; } } }; }
17480
18289
 
17481
- 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); }
18290
+ 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); }
17482
18291
 
17483
18292
  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; }
17484
18293
 
@@ -17559,7 +18368,7 @@ module.exports = {
17559
18368
  };
17560
18369
 
17561
18370
  /***/ }),
17562
- /* 107 */
18371
+ /* 110 */
17563
18372
  /***/ (function(module, exports, __webpack_require__) {
17564
18373
 
17565
18374
  "use strict";
@@ -17575,9 +18384,9 @@ module.exports = {
17575
18384
  // flowlint ambiguous-object-type:error
17576
18385
 
17577
18386
 
17578
- 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; } } }; }
18387
+ 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; } } }; }
17579
18388
 
17580
- 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); }
18389
+ 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); }
17581
18390
 
17582
18391
  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; }
17583
18392
 
@@ -17681,7 +18490,7 @@ module.exports = {
17681
18490
  };
17682
18491
 
17683
18492
  /***/ }),
17684
- /* 108 */
18493
+ /* 111 */
17685
18494
  /***/ (function(module, exports, __webpack_require__) {
17686
18495
 
17687
18496
  "use strict";
@@ -17697,9 +18506,9 @@ module.exports = {
17697
18506
  // flowlint ambiguous-object-type:error
17698
18507
 
17699
18508
 
17700
- 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; } } }; }
18509
+ 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; } } }; }
17701
18510
 
17702
- 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); }
18511
+ 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); }
17703
18512
 
17704
18513
  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; }
17705
18514
 
@@ -17785,7 +18594,7 @@ module.exports = {
17785
18594
  };
17786
18595
 
17787
18596
  /***/ }),
17788
- /* 109 */
18597
+ /* 112 */
17789
18598
  /***/ (function(module, exports, __webpack_require__) {
17790
18599
 
17791
18600
  "use strict";
@@ -17803,10 +18612,10 @@ module.exports = {
17803
18612
 
17804
18613
  var RelayFlowGenerator = __webpack_require__(46);
17805
18614
 
17806
- var _require = __webpack_require__(110),
18615
+ var _require = __webpack_require__(113),
17807
18616
  find = _require.find;
17808
18617
 
17809
- var _require2 = __webpack_require__(112),
18618
+ var _require2 = __webpack_require__(115),
17810
18619
  formatGeneratedCommonjsModule = _require2.formatGeneratedCommonjsModule,
17811
18620
  formatGeneratedESModule = _require2.formatGeneratedESModule;
17812
18621
 
@@ -17821,7 +18630,7 @@ module.exports = function (options) {
17821
18630
  };
17822
18631
 
17823
18632
  /***/ }),
17824
- /* 110 */
18633
+ /* 113 */
17825
18634
  /***/ (function(module, exports, __webpack_require__) {
17826
18635
 
17827
18636
  "use strict";
@@ -17839,9 +18648,9 @@ module.exports = function (options) {
17839
18648
 
17840
18649
  var Profiler = __webpack_require__(6);
17841
18650
 
17842
- var babylon = __webpack_require__(111);
18651
+ var babylon = __webpack_require__(114);
17843
18652
 
17844
- var util = __webpack_require__(48);
18653
+ var util = __webpack_require__(49);
17845
18654
 
17846
18655
  // Attempt to be as inclusive as possible of source text.
17847
18656
  var BABYLON_OPTIONS = {
@@ -17858,47 +18667,10 @@ var BABYLON_OPTIONS = {
17858
18667
  };
17859
18668
 
17860
18669
  function find(text) {
17861
- var result = [];
18670
+ var result = []; // $FlowFixMe Discovered when typing babel/parser
18671
+
17862
18672
  var ast = babylon.parse(text, BABYLON_OPTIONS);
17863
18673
  var visitors = {
17864
- CallExpression: function CallExpression(node) {
17865
- var callee = node.callee;
17866
-
17867
- if (!(callee.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.name] || callee.kind === 'MemberExpression' && callee.object.type === 'Identifier' && callee.object.value === 'Relay' && callee.property.type === 'Identifier' && CREATE_CONTAINER_FUNCTIONS[callee.property.name])) {
17868
- traverse(node, visitors);
17869
- return;
17870
- }
17871
-
17872
- var fragments = node.arguments[1];
17873
-
17874
- if (fragments.type === 'ObjectExpression') {
17875
- fragments.properties.forEach(function (property) {
17876
- !(property.type === 'ObjectProperty' && property.key.type === 'Identifier' && property.value.type === 'TaggedTemplateExpression') ? true ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be ' + '`key: graphql`.', node.callee.name) : undefined : void 0;
17877
- !isGraphQLModernOrDeprecatedTag(property.value.tag) ? true ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, property.value.tag.loc)) : undefined : void 0;
17878
-
17879
- if (isGraphQLTag(property.value.tag)) {
17880
- result.push({
17881
- keyName: property.key.name,
17882
- template: getGraphQLText(property.value.quasi),
17883
- sourceLocationOffset: getSourceLocationOffset(property.value.quasi)
17884
- });
17885
- }
17886
- });
17887
- } else {
17888
- !(fragments && fragments.type === 'TaggedTemplateExpression') ? true ? invariant(false, 'FindGraphQLTags: `%s` expects a second argument of fragment ' + 'definitions.', node.callee.name) : undefined : void 0;
17889
- !isGraphQLModernOrDeprecatedTag(fragments.tag) ? true ? invariant(false, 'FindGraphQLTags: `%s` expects fragment definitions to be tagged ' + 'with `graphql`, got `%s`.', node.callee.name, getSourceTextForLocation(text, fragments.tag.loc)) : undefined : void 0;
17890
- result.push({
17891
- keyName: null,
17892
- template: getGraphQLText(fragments.quasi),
17893
- sourceLocationOffset: getSourceLocationOffset(fragments.quasi)
17894
- });
17895
- } // Visit remaining arguments
17896
-
17897
-
17898
- for (var ii = 2; ii < node.arguments.length; ii++) {
17899
- visit(node.arguments[ii], visitors);
17900
- }
17901
- },
17902
18674
  TaggedTemplateExpression: function TaggedTemplateExpression(node) {
17903
18675
  if (isGraphQLTag(node.tag)) {
17904
18676
  result.push({
@@ -17913,17 +18685,6 @@ function find(text) {
17913
18685
  return result;
17914
18686
  }
17915
18687
 
17916
- var CREATE_CONTAINER_FUNCTIONS = Object.create(null, {
17917
- createFragmentContainer: {
17918
- value: true
17919
- },
17920
- createPaginationContainer: {
17921
- value: true
17922
- },
17923
- createRefetchContainer: {
17924
- value: true
17925
- }
17926
- });
17927
18688
  var IGNORED_KEYS = {
17928
18689
  comments: true,
17929
18690
  end: true,
@@ -17939,20 +18700,12 @@ function isGraphQLTag(tag) {
17939
18700
  return tag.type === 'Identifier' && tag.name === 'graphql';
17940
18701
  }
17941
18702
 
17942
- function isGraphQLModernOrDeprecatedTag(tag) {
17943
- return tag.type === 'Identifier' && (tag.name === 'graphql' || tag.name === 'graphql_DEPRECATED');
17944
- }
17945
-
17946
18703
  function getTemplateNode(quasi) {
17947
18704
  var quasis = quasi.quasis;
17948
18705
  !(quasis && quasis.length === 1) ? true ? invariant(false, 'FindGraphQLTags: Substitutions are not allowed in graphql tags.') : undefined : void 0;
17949
18706
  return quasis[0];
17950
18707
  }
17951
18708
 
17952
- function getGraphQLText(quasi) {
17953
- return getTemplateNode(quasi).value.raw;
17954
- }
17955
-
17956
18709
  function getSourceLocationOffset(quasi) {
17957
18710
  var loc = getTemplateNode(quasi).loc.start;
17958
18711
  return {
@@ -17962,17 +18715,6 @@ function getSourceLocationOffset(quasi) {
17962
18715
  };
17963
18716
  }
17964
18717
 
17965
- function getSourceTextForLocation(text, loc) {
17966
- if (loc == null) {
17967
- return '(source unavailable)';
17968
- }
17969
-
17970
- var lines = text.split('\n').slice(loc.start.line - 1, loc.end.line);
17971
- lines[0] = lines[0].slice(loc.start.column);
17972
- lines[lines.length - 1] = lines[lines.length - 1].slice(0, loc.end.column);
17973
- return lines.join('\n');
17974
- }
17975
-
17976
18718
  function invariant(condition, msg) {
17977
18719
  if (!condition) {
17978
18720
  for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
@@ -17984,6 +18726,7 @@ function invariant(condition, msg) {
17984
18726
  }
17985
18727
 
17986
18728
  function visit(node, visitors) {
18729
+ // $FlowFixMe Discovered when typing babel
17987
18730
  var fn = visitors[node.type];
17988
18731
 
17989
18732
  if (fn != null) {
@@ -18019,13 +18762,13 @@ module.exports = {
18019
18762
  };
18020
18763
 
18021
18764
  /***/ }),
18022
- /* 111 */
18765
+ /* 114 */
18023
18766
  /***/ (function(module, exports) {
18024
18767
 
18025
18768
  module.exports = require("@babel/parser");
18026
18769
 
18027
18770
  /***/ }),
18028
- /* 112 */
18771
+ /* 115 */
18029
18772
  /***/ (function(module, exports, __webpack_require__) {
18030
18773
 
18031
18774
  "use strict";
@@ -18067,7 +18810,7 @@ exports.formatGeneratedCommonjsModule = formatGeneratedCommonjsModule;
18067
18810
  exports.formatGeneratedESModule = formatGeneratedESModule;
18068
18811
 
18069
18812
  /***/ }),
18070
- /* 113 */
18813
+ /* 116 */
18071
18814
  /***/ (function(module, exports, __webpack_require__) {
18072
18815
 
18073
18816
  "use strict";
@@ -18099,7 +18842,7 @@ var invariant = __webpack_require__(5);
18099
18842
 
18100
18843
  var path = __webpack_require__(8);
18101
18844
 
18102
- var _require = __webpack_require__(114),
18845
+ var _require = __webpack_require__(117),
18103
18846
  memoizedFind = _require.memoizedFind;
18104
18847
 
18105
18848
  var parseGraphQL = Profiler.instrument(GraphQL.parse, 'GraphQL.parse');
@@ -18177,7 +18920,7 @@ module.exports = function (tagFinder, getFileFilter) {
18177
18920
  };
18178
18921
 
18179
18922
  /***/ }),
18180
- /* 114 */
18923
+ /* 117 */
18181
18924
  /***/ (function(module, exports, __webpack_require__) {
18182
18925
 
18183
18926
  "use strict";
@@ -18193,15 +18936,15 @@ module.exports = function (tagFinder, getFileFilter) {
18193
18936
  // flowlint ambiguous-object-type:error
18194
18937
 
18195
18938
 
18196
- var RelayCompilerCache = __webpack_require__(115);
18939
+ var RelayCompilerCache = __webpack_require__(118);
18197
18940
 
18198
- var getModuleName = __webpack_require__(117);
18941
+ var getModuleName = __webpack_require__(120);
18199
18942
 
18200
18943
  var graphql = __webpack_require__(7);
18201
18944
 
18202
18945
  var path = __webpack_require__(8);
18203
18946
 
18204
- var util = __webpack_require__(48);
18947
+ var util = __webpack_require__(49);
18205
18948
 
18206
18949
  var cache = new RelayCompilerCache('RelayFindGraphQLTags', 'v1');
18207
18950
 
@@ -18262,7 +19005,7 @@ module.exports = {
18262
19005
  };
18263
19006
 
18264
19007
  /***/ }),
18265
- /* 115 */
19008
+ /* 118 */
18266
19009
  /***/ (function(module, exports, __webpack_require__) {
18267
19010
 
18268
19011
  "use strict";
@@ -18288,7 +19031,7 @@ var crypto = __webpack_require__(13);
18288
19031
 
18289
19032
  var fs = __webpack_require__(12);
18290
19033
 
18291
- var os = __webpack_require__(116);
19034
+ var os = __webpack_require__(119);
18292
19035
 
18293
19036
  var path = __webpack_require__(8);
18294
19037
  /**
@@ -18366,13 +19109,13 @@ var RelayCompilerCache = /*#__PURE__*/function () {
18366
19109
  module.exports = RelayCompilerCache;
18367
19110
 
18368
19111
  /***/ }),
18369
- /* 116 */
19112
+ /* 119 */
18370
19113
  /***/ (function(module, exports) {
18371
19114
 
18372
19115
  module.exports = require("os");
18373
19116
 
18374
19117
  /***/ }),
18375
- /* 117 */
19118
+ /* 120 */
18376
19119
  /***/ (function(module, exports, __webpack_require__) {
18377
19120
 
18378
19121
  "use strict";
@@ -18410,7 +19153,7 @@ function getModuleName(filePath) {
18410
19153
  module.exports = getModuleName;
18411
19154
 
18412
19155
  /***/ }),
18413
- /* 118 */
19156
+ /* 121 */
18414
19157
  /***/ (function(module, exports) {
18415
19158
 
18416
19159
  module.exports = require("glob");