relay-compiler 10.0.1 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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");