relay-compiler 1.5.0-rc.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v1.5.0-rc.1
2
+ * Relay v1.5.0
3
3
  *
4
4
  * Copyright (c) 2013-present, Facebook, Inc.
5
5
  *
@@ -74,20 +74,20 @@ module.exports =
74
74
 
75
75
  module.exports = {
76
76
  ConsoleReporter: ConsoleReporter,
77
- Parser: __webpack_require__(22),
78
- CodeGenerator: __webpack_require__(33),
77
+ Parser: __webpack_require__(23),
78
+ CodeGenerator: __webpack_require__(34),
79
79
 
80
- GraphQLCompilerContext: __webpack_require__(24),
80
+ GraphQLCompilerContext: __webpack_require__(25),
81
81
 
82
82
  /** @deprecated Use JSModuleParser. */
83
- FileIRParser: __webpack_require__(41),
83
+ FileIRParser: __webpack_require__(42),
84
84
 
85
- FileWriter: __webpack_require__(66),
86
- IRTransforms: __webpack_require__(69),
87
- JSModuleParser: __webpack_require__(41),
85
+ FileWriter: __webpack_require__(65),
86
+ IRTransforms: __webpack_require__(68),
87
+ JSModuleParser: __webpack_require__(42),
88
88
  MultiReporter: MultiReporter,
89
89
  Runner: CodegenRunner,
90
- compileRelayArtifacts: __webpack_require__(45),
90
+ compileRelayArtifacts: __webpack_require__(46),
91
91
  formatGeneratedModule: __webpack_require__(80),
92
92
  convertASTDocuments: ASTConvert.convertASTDocuments,
93
93
  transformASTSchema: ASTConvert.transformASTSchema
@@ -128,41 +128,41 @@ module.exports =
128
128
 
129
129
  'use strict';
130
130
 
131
- var _require = __webpack_require__(75),
131
+ var _require = __webpack_require__(74),
132
132
  SourceControlMercurial = _require.SourceControlMercurial;
133
133
 
134
134
  module.exports = {
135
- ASTConvert: __webpack_require__(51),
136
- CodegenDirectory: __webpack_require__(19),
137
- CodegenRunner: __webpack_require__(52),
138
- CodegenWatcher: __webpack_require__(20),
139
- CompilerContext: __webpack_require__(24),
140
- ConsoleReporter: __webpack_require__(57),
141
- DotGraphQLParser: __webpack_require__(53),
142
- ASTCache: __webpack_require__(28),
135
+ ASTConvert: __webpack_require__(50),
136
+ CodegenDirectory: __webpack_require__(20),
137
+ CodegenRunner: __webpack_require__(51),
138
+ CodegenWatcher: __webpack_require__(21),
139
+ CompilerContext: __webpack_require__(25),
140
+ ConsoleReporter: __webpack_require__(56),
141
+ DotGraphQLParser: __webpack_require__(52),
142
+ ASTCache: __webpack_require__(30),
143
143
  IRTransformer: __webpack_require__(12),
144
- IRVisitor: __webpack_require__(31),
145
- MultiReporter: __webpack_require__(58),
146
- Parser: __webpack_require__(59),
147
- Printer: __webpack_require__(25),
144
+ IRVisitor: __webpack_require__(27),
145
+ MultiReporter: __webpack_require__(57),
146
+ Parser: __webpack_require__(58),
147
+ Printer: __webpack_require__(26),
148
148
  Profiler: __webpack_require__(5),
149
149
  SchemaUtils: __webpack_require__(14),
150
150
  SourceControlMercurial: SourceControlMercurial,
151
- Validator: __webpack_require__(32),
152
- WatchmanClient: __webpack_require__(21),
153
- filterContextForNode: __webpack_require__(46),
151
+ Validator: __webpack_require__(33),
152
+ WatchmanClient: __webpack_require__(22),
153
+ filterContextForNode: __webpack_require__(79),
154
154
  getIdentifierForArgumentValue: __webpack_require__(81),
155
155
  getLiteralArgumentValues: __webpack_require__(82),
156
156
  isEquivalentType: __webpack_require__(85),
157
- nullthrows: __webpack_require__(48),
158
-
159
- FilterDirectivesTransform: __webpack_require__(54),
160
- FlattenTransform: __webpack_require__(56),
161
- InlineFragmentsTransform: __webpack_require__(60),
162
- SkipClientFieldTransform: __webpack_require__(72),
163
- SkipRedundantNodesTransform: __webpack_require__(73),
164
- SkipUnreachableNodeTransform: __webpack_require__(74),
165
- StripUnusedVariablesTransform: __webpack_require__(76)
157
+ nullthrows: __webpack_require__(15),
158
+
159
+ FilterDirectivesTransform: __webpack_require__(53),
160
+ FlattenTransform: __webpack_require__(55),
161
+ InlineFragmentsTransform: __webpack_require__(59),
162
+ SkipClientFieldTransform: __webpack_require__(71),
163
+ SkipRedundantNodesTransform: __webpack_require__(72),
164
+ SkipUnreachableNodeTransform: __webpack_require__(73),
165
+ StripUnusedVariablesTransform: __webpack_require__(75)
166
166
  };
167
167
 
168
168
  /***/ }),
@@ -445,7 +445,7 @@ module.exports =
445
445
  /* 6 */
446
446
  /***/ (function(module, exports) {
447
447
 
448
- module.exports = require("babel-runtime/helpers/extends");
448
+ module.exports = require("path");
449
449
 
450
450
  /***/ }),
451
451
  /* 7 */
@@ -457,7 +457,7 @@ module.exports =
457
457
  /* 8 */
458
458
  /***/ (function(module, exports) {
459
459
 
460
- module.exports = require("path");
460
+ module.exports = require("babel-runtime/helpers/extends");
461
461
 
462
462
  /***/ }),
463
463
  /* 9 */
@@ -554,7 +554,7 @@ module.exports =
554
554
 
555
555
  'use strict';
556
556
 
557
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
557
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
558
558
 
559
559
  var _classCallCheck3 = _interopRequireDefault(__webpack_require__(10));
560
560
 
@@ -737,12 +737,20 @@ module.exports =
737
737
  nextNode = this._traverseChildren(prevNode, ['fields']);
738
738
  break;
739
739
  case 'Condition':
740
+ nextNode = this._traverseChildren(prevNode, ['directives', 'selections'], ['condition']);
741
+ if (!nextNode.selections.length) {
742
+ nextNode = null;
743
+ }
744
+ break;
740
745
  case 'InlineFragment':
741
746
  nextNode = this._traverseChildren(prevNode, ['directives', 'selections']);
742
747
  if (!nextNode.selections.length) {
743
748
  nextNode = null;
744
749
  }
745
750
  break;
751
+ case 'DeferrableFragmentSpread':
752
+ nextNode = this._traverseChildren(prevNode, ['args', 'fragmentArgs', 'directives']);
753
+ break;
746
754
  case 'Fragment':
747
755
  case 'Root':
748
756
  nextNode = this._traverseChildren(prevNode, ['argumentDefinitions', 'directives', 'selections']);
@@ -902,7 +910,7 @@ module.exports =
902
910
  * Get the unmodified type, with list/null wrappers removed.
903
911
  */
904
912
  function getRawType(type) {
905
- return __webpack_require__(48)(getNamedType(type));
913
+ return __webpack_require__(15)(getNamedType(type));
906
914
  }
907
915
 
908
916
  /**
@@ -956,7 +964,7 @@ module.exports =
956
964
  *
957
965
  * Determine if an AST node contains a fragment/operation definition.
958
966
  */
959
- function isOperationDefinitionAST(ast) {
967
+ function isExecutableDefinitionAST(ast) {
960
968
  return ast.kind === 'FragmentDefinition' || ast.kind === 'OperationDefinition';
961
969
  }
962
970
 
@@ -996,7 +1004,7 @@ module.exports =
996
1004
  implementsInterface: implementsInterface,
997
1005
  isAbstractType: isAbstractType,
998
1006
  isUnionType: isUnionType,
999
- isOperationDefinitionAST: isOperationDefinitionAST,
1007
+ isExecutableDefinitionAST: isExecutableDefinitionAST,
1000
1008
  isSchemaDefinitionAST: isSchemaDefinitionAST,
1001
1009
  mayImplement: mayImplement
1002
1010
  };
@@ -1005,28 +1013,57 @@ module.exports =
1005
1013
  /* 15 */
1006
1014
  /***/ (function(module, exports) {
1007
1015
 
1008
- module.exports = require("babel-generator/lib/printer");
1016
+ /**
1017
+ * Copyright (c) 2013-present, Facebook, Inc.
1018
+ *
1019
+ * This source code is licensed under the MIT license found in the
1020
+ * LICENSE file in the root directory of this source tree.
1021
+ *
1022
+ * @providesModule nullthrowsOSS
1023
+ *
1024
+ * @format
1025
+ */
1026
+ 'use strict';
1027
+
1028
+ var nullthrows = function nullthrows(x) {
1029
+ var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Got unexpected null or undefined';
1030
+
1031
+ if (x != null) {
1032
+ return x;
1033
+ }
1034
+ var error = new Error(message);
1035
+ error.framesToPop = 1; // Skip nullthrows own stack frame.
1036
+ throw error;
1037
+ };
1038
+
1039
+ module.exports = nullthrows;
1009
1040
 
1010
1041
  /***/ }),
1011
1042
  /* 16 */
1012
1043
  /***/ (function(module, exports) {
1013
1044
 
1014
- module.exports = require("chalk");
1045
+ module.exports = require("babel-generator/lib/printer");
1015
1046
 
1016
1047
  /***/ }),
1017
1048
  /* 17 */
1018
1049
  /***/ (function(module, exports) {
1019
1050
 
1020
- module.exports = require("fbjs/lib/nullthrows");
1051
+ module.exports = require("chalk");
1021
1052
 
1022
1053
  /***/ }),
1023
1054
  /* 18 */
1024
1055
  /***/ (function(module, exports) {
1025
1056
 
1026
- module.exports = require("immutable");
1057
+ module.exports = require("fbjs/lib/nullthrows");
1027
1058
 
1028
1059
  /***/ }),
1029
1060
  /* 19 */
1061
+ /***/ (function(module, exports) {
1062
+
1063
+ module.exports = require("immutable");
1064
+
1065
+ /***/ }),
1066
+ /* 20 */
1030
1067
  /***/ (function(module, exports, __webpack_require__) {
1031
1068
 
1032
1069
  /**
@@ -1087,7 +1124,15 @@ module.exports =
1087
1124
  if (__webpack_require__(7).existsSync(dir)) {
1088
1125
  __webpack_require__(1)(__webpack_require__(7).statSync(dir).isDirectory(), 'Expected `%s` to be a directory.', dir);
1089
1126
  } else if (!this.onlyValidate) {
1090
- __webpack_require__(7).mkdirSync(dir);
1127
+ var dirs = [dir];
1128
+ var parent = __webpack_require__(6).dirname(dir);
1129
+ while (!__webpack_require__(7).existsSync(parent)) {
1130
+ dirs.unshift(parent);
1131
+ parent = __webpack_require__(6).dirname(parent);
1132
+ }
1133
+ dirs.forEach(function (d) {
1134
+ return __webpack_require__(7).mkdirSync(d);
1135
+ });
1091
1136
  }
1092
1137
  this._files = new Set();
1093
1138
  this.changes = {
@@ -1176,7 +1221,7 @@ module.exports =
1176
1221
  };
1177
1222
 
1178
1223
  CodegenDirectory.prototype.read = function read(filename) {
1179
- var filePath = __webpack_require__(8).join(this._dir, filename);
1224
+ var filePath = __webpack_require__(6).join(this._dir, filename);
1180
1225
  if (__webpack_require__(7).existsSync(filePath)) {
1181
1226
  return __webpack_require__(7).readFileSync(filePath, 'utf8');
1182
1227
  }
@@ -1205,7 +1250,7 @@ module.exports =
1205
1250
 
1206
1251
  __webpack_require__(5).run('CodegenDirectory.writeFile', function () {
1207
1252
  _this._addGenerated(filename);
1208
- var filePath = __webpack_require__(8).join(_this._dir, filename);
1253
+ var filePath = __webpack_require__(6).join(_this._dir, filename);
1209
1254
  if (__webpack_require__(7).existsSync(filePath)) {
1210
1255
  var existingContent = __webpack_require__(7).readFileSync(filePath, 'utf8');
1211
1256
  if (existingContent === content) {
@@ -1241,7 +1286,7 @@ module.exports =
1241
1286
  if (!_this2._files.has(actualFile) && !/^\./.test(actualFile)) {
1242
1287
  if (!_this2.onlyValidate) {
1243
1288
  try {
1244
- __webpack_require__(7).unlinkSync(__webpack_require__(8).join(_this2._dir, actualFile));
1289
+ __webpack_require__(7).unlinkSync(__webpack_require__(6).join(_this2._dir, actualFile));
1245
1290
  } catch (e) {
1246
1291
  throw new Error('CodegenDirectory: Failed to delete `' + actualFile + '` in `' + _this2._dir + '`.');
1247
1292
  }
@@ -1253,7 +1298,7 @@ module.exports =
1253
1298
  };
1254
1299
 
1255
1300
  CodegenDirectory.prototype.getPath = function getPath(filename) {
1256
- return __webpack_require__(8).join(this._dir, filename);
1301
+ return __webpack_require__(6).join(this._dir, filename);
1257
1302
  };
1258
1303
 
1259
1304
  CodegenDirectory.prototype._addGenerated = function _addGenerated(filename) {
@@ -1267,7 +1312,7 @@ module.exports =
1267
1312
  module.exports = CodegenDirectory;
1268
1313
 
1269
1314
  /***/ }),
1270
- /* 20 */
1315
+ /* 21 */
1271
1316
  /***/ (function(module, exports, __webpack_require__) {
1272
1317
 
1273
1318
  /**
@@ -1289,7 +1334,7 @@ module.exports =
1289
1334
  let queryFiles = (() => {
1290
1335
  var _ref3 = (0, _asyncToGenerator3.default)(function* (baseDir, expression, filter) {
1291
1336
  return yield __webpack_require__(5).waitFor('Watchman:query', (0, _asyncToGenerator3.default)(function* () {
1292
- var client = new (__webpack_require__(21))();
1337
+ var client = new (__webpack_require__(22))();
1293
1338
 
1294
1339
  var _ref = yield Promise.all([client.watchProject(baseDir), getFields(client)]),
1295
1340
  watchResp = _ref[0],
@@ -1356,7 +1401,7 @@ module.exports =
1356
1401
  let watch = (() => {
1357
1402
  var _ref7 = (0, _asyncToGenerator3.default)(function* (baseDir, expression, callback) {
1358
1403
  return yield __webpack_require__(5).waitFor('Watchman:subscribe', (0, _asyncToGenerator3.default)(function* () {
1359
- var client = new (__webpack_require__(21))();
1404
+ var client = new (__webpack_require__(22))();
1360
1405
  var watchResp = yield client.watchProject(baseDir);
1361
1406
 
1362
1407
  yield makeSubscription(client, watchResp.root, watchResp.relativePath, expression, callback);
@@ -1463,7 +1508,7 @@ module.exports =
1463
1508
  function updateFiles(files, baseDir, filter, fileChanges) {
1464
1509
  var fileMap = new Map();
1465
1510
  files.forEach(function (file) {
1466
- fileMap.set(file.relPath, file);
1511
+ file.exists && fileMap.set(file.relPath, file);
1467
1512
  });
1468
1513
 
1469
1514
  fileChanges.forEach(function (_ref2) {
@@ -1471,22 +1516,30 @@ module.exports =
1471
1516
  exists = _ref2.exists,
1472
1517
  hash = _ref2['content.sha1hex'];
1473
1518
 
1474
- var file = {
1475
- relPath: name,
1476
- hash: hash || hashFile(__webpack_require__(8).join(baseDir, name))
1477
- };
1478
- if (exists && filter(file)) {
1479
- fileMap.set(name, file);
1480
- } else {
1481
- fileMap['delete'](name);
1519
+ var shouldRemove = !exists;
1520
+ if (!shouldRemove) {
1521
+ var _file = {
1522
+ exists: true,
1523
+ relPath: name,
1524
+ hash: hash || hashFile(__webpack_require__(6).join(baseDir, name))
1525
+ };
1526
+ if (filter(_file)) {
1527
+ fileMap.set(name, _file);
1528
+ } else {
1529
+ shouldRemove = true;
1530
+ }
1482
1531
  }
1532
+ shouldRemove && fileMap.set(name, {
1533
+ exists: false,
1534
+ relPath: name
1535
+ });
1483
1536
  });
1484
1537
  return new Set(fileMap.values());
1485
1538
  }
1486
1539
 
1487
1540
  function hashFile(filename) {
1488
1541
  var content = __webpack_require__(7).readFileSync(filename);
1489
- return __webpack_require__(23).createHash('sha1').update(content).digest('hex');
1542
+ return __webpack_require__(24).createHash('sha1').update(content).digest('hex');
1490
1543
  }
1491
1544
 
1492
1545
  module.exports = {
@@ -1498,7 +1551,7 @@ module.exports =
1498
1551
  };
1499
1552
 
1500
1553
  /***/ }),
1501
- /* 21 */
1554
+ /* 22 */
1502
1555
  /***/ (function(module, exports, __webpack_require__) {
1503
1556
 
1504
1557
  /**
@@ -1609,7 +1662,7 @@ module.exports =
1609
1662
  module.exports = GraphQLWatchmanClient;
1610
1663
 
1611
1664
  /***/ }),
1612
- /* 22 */
1665
+ /* 23 */
1613
1666
  /***/ (function(module, exports, __webpack_require__) {
1614
1667
 
1615
1668
  /**
@@ -1718,13 +1771,13 @@ module.exports =
1718
1771
  module.exports = RelayParser;
1719
1772
 
1720
1773
  /***/ }),
1721
- /* 23 */
1774
+ /* 24 */
1722
1775
  /***/ (function(module, exports) {
1723
1776
 
1724
1777
  module.exports = require("crypto");
1725
1778
 
1726
1779
  /***/ }),
1727
- /* 24 */
1780
+ /* 25 */
1728
1781
  /***/ (function(module, exports, __webpack_require__) {
1729
1782
 
1730
1783
  /**
@@ -1744,10 +1797,10 @@ module.exports =
1744
1797
 
1745
1798
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1746
1799
 
1747
- var _require = __webpack_require__(30),
1800
+ var _require = __webpack_require__(32),
1748
1801
  createUserError = _require.createUserError;
1749
1802
 
1750
- var _require2 = __webpack_require__(18),
1803
+ var _require2 = __webpack_require__(19),
1751
1804
  ImmutableOrderedMap = _require2.OrderedMap;
1752
1805
 
1753
1806
  /**
@@ -1887,7 +1940,7 @@ module.exports =
1887
1940
  module.exports = GraphQLCompilerContext;
1888
1941
 
1889
1942
  /***/ }),
1890
- /* 25 */
1943
+ /* 26 */
1891
1944
  /***/ (function(module, exports, __webpack_require__) {
1892
1945
 
1893
1946
  /**
@@ -1903,7 +1956,7 @@ module.exports =
1903
1956
 
1904
1957
  'use strict';
1905
1958
 
1906
- var _require = __webpack_require__(29),
1959
+ var _require = __webpack_require__(31),
1907
1960
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
1908
1961
 
1909
1962
  var _require2 = __webpack_require__(3),
@@ -1968,6 +2021,8 @@ module.exports =
1968
2021
  str += parentCondition;
1969
2022
  str += printFragmentArguments(selection.args);
1970
2023
  str += printDirectives(selection.directives);
2024
+ } else if (selection.kind === 'DeferrableFragmentSpread') {
2025
+ str = selection.alias + ': ' + selection.storageKey;
1971
2026
  } else if (selection.kind === 'Condition') {
1972
2027
  var value = printValue(selection.condition);
1973
2028
  // For Flow
@@ -2118,7 +2173,50 @@ module.exports =
2118
2173
  module.exports = { print: print, printField: printField, printArguments: printArguments, printDirectives: printDirectives };
2119
2174
 
2120
2175
  /***/ }),
2121
- /* 26 */
2176
+ /* 27 */
2177
+ /***/ (function(module, exports, __webpack_require__) {
2178
+
2179
+ /**
2180
+ * Copyright (c) 2013-present, Facebook, Inc.
2181
+ *
2182
+ * This source code is licensed under the MIT license found in the
2183
+ * LICENSE file in the root directory of this source tree.
2184
+ *
2185
+ * @providesModule GraphQLIRVisitor
2186
+ *
2187
+ * @format
2188
+ */
2189
+ 'use strict';
2190
+
2191
+ var visit = __webpack_require__(3).visit;
2192
+
2193
+ var NodeKeys = {
2194
+ Argument: ['value'],
2195
+ Batch: ['requests', 'fragment'],
2196
+ Condition: ['condition', 'selections'],
2197
+ Directive: ['args'],
2198
+ Fragment: ['argumentDefinitions', 'directives', 'selections'],
2199
+ FragmentSpread: ['args', 'directives'],
2200
+ InlineFragment: ['directives', 'selections'],
2201
+ LinkedField: ['args', 'directives', 'selections'],
2202
+ Literal: [],
2203
+ LocalArgumentDefinition: [],
2204
+ Request: ['root'],
2205
+ Root: ['argumentDefinitions', 'directives', 'selections'],
2206
+ RootArgumentDefinition: [],
2207
+ ScalarField: ['args', 'directives'],
2208
+ Variable: [],
2209
+ DeferrableFragmentSpread: ['args', 'directives', 'fragmentArgs']
2210
+ };
2211
+
2212
+ function visitIR(root, visitor) {
2213
+ return visit(root, visitor, NodeKeys);
2214
+ }
2215
+
2216
+ module.exports = { visit: visitIR };
2217
+
2218
+ /***/ }),
2219
+ /* 28 */
2122
2220
  /***/ (function(module, exports, __webpack_require__) {
2123
2221
 
2124
2222
  /**
@@ -2134,7 +2232,7 @@ module.exports =
2134
2232
 
2135
2233
  'use strict';
2136
2234
 
2137
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
2235
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
2138
2236
 
2139
2237
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2140
2238
 
@@ -2201,13 +2299,13 @@ module.exports =
2201
2299
  };
2202
2300
 
2203
2301
  /***/ }),
2204
- /* 27 */
2302
+ /* 29 */
2205
2303
  /***/ (function(module, exports) {
2206
2304
 
2207
2305
  module.exports = require("util");
2208
2306
 
2209
2307
  /***/ }),
2210
- /* 28 */
2308
+ /* 30 */
2211
2309
  /***/ (function(module, exports, __webpack_require__) {
2212
2310
 
2213
2311
  /**
@@ -2227,7 +2325,7 @@ module.exports =
2227
2325
 
2228
2326
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2229
2327
 
2230
- var _require = __webpack_require__(18),
2328
+ var _require = __webpack_require__(19),
2231
2329
  ImmutableMap = _require.Map;
2232
2330
 
2233
2331
  var ASTCache = function () {
@@ -2255,6 +2353,11 @@ module.exports =
2255
2353
  var documents = ImmutableMap();
2256
2354
 
2257
2355
  files.forEach(function (file) {
2356
+ if (!file.exists) {
2357
+ _this._documents['delete'](file.relPath);
2358
+ return;
2359
+ }
2360
+
2258
2361
  var doc = function () {
2259
2362
  try {
2260
2363
  return _this._parse(_this._baseDir, file);
@@ -2281,7 +2384,7 @@ module.exports =
2281
2384
  module.exports = ASTCache;
2282
2385
 
2283
2386
  /***/ }),
2284
- /* 29 */
2387
+ /* 31 */
2285
2388
  /***/ (function(module, exports) {
2286
2389
 
2287
2390
  /**
@@ -2302,7 +2405,7 @@ module.exports =
2302
2405
  };
2303
2406
 
2304
2407
  /***/ }),
2305
- /* 30 */
2408
+ /* 32 */
2306
2409
  /***/ (function(module, exports) {
2307
2410
 
2308
2411
  /**
@@ -2333,50 +2436,7 @@ module.exports =
2333
2436
  module.exports = { createUserError: createUserError };
2334
2437
 
2335
2438
  /***/ }),
2336
- /* 31 */
2337
- /***/ (function(module, exports, __webpack_require__) {
2338
-
2339
- /**
2340
- * Copyright (c) 2013-present, Facebook, Inc.
2341
- *
2342
- * This source code is licensed under the MIT license found in the
2343
- * LICENSE file in the root directory of this source tree.
2344
- *
2345
- * @providesModule GraphQLIRVisitor
2346
- *
2347
- * @format
2348
- */
2349
- 'use strict';
2350
-
2351
- var visit = __webpack_require__(3).visit;
2352
-
2353
- var NodeKeys = {
2354
- Argument: ['value'],
2355
- Batch: ['requests', 'fragment'],
2356
- Condition: ['condition', 'selections'],
2357
- Directive: ['args'],
2358
- Fragment: ['argumentDefinitions', 'directives', 'selections'],
2359
- FragmentSpread: ['args', 'directives'],
2360
- InlineFragment: ['directives', 'selections'],
2361
- LinkedField: ['args', 'directives', 'selections'],
2362
- Literal: [],
2363
- LocalArgumentDefinition: [],
2364
- Request: ['root'],
2365
- Root: ['argumentDefinitions', 'directives', 'selections'],
2366
- RootArgumentDefinition: [],
2367
- ScalarField: ['args', 'directives'],
2368
- Variable: [],
2369
- DeferrableFragmentSpread: ['args']
2370
- };
2371
-
2372
- function visitIR(root, visitor) {
2373
- return visit(root, visitor, NodeKeys);
2374
- }
2375
-
2376
- module.exports = { visit: visitIR };
2377
-
2378
- /***/ }),
2379
- /* 32 */
2439
+ /* 33 */
2380
2440
  /***/ (function(module, exports, __webpack_require__) {
2381
2441
 
2382
2442
  /**
@@ -2398,7 +2458,6 @@ module.exports =
2398
2458
  KnownArgumentNamesRule = _require.KnownArgumentNamesRule,
2399
2459
  KnownTypeNamesRule = _require.KnownTypeNamesRule,
2400
2460
  LoneAnonymousOperationRule = _require.LoneAnonymousOperationRule,
2401
- NoFragmentCyclesRule = _require.NoFragmentCyclesRule,
2402
2461
  NoUnusedVariablesRule = _require.NoUnusedVariablesRule,
2403
2462
  PossibleFragmentSpreadsRule = _require.PossibleFragmentSpreadsRule,
2404
2463
  ProvidedNonNullArgumentsRule = _require.ProvidedNonNullArgumentsRule,
@@ -2422,7 +2481,7 @@ module.exports =
2422
2481
  return e.source ? e.source.name + ': ' + e.message : e.message;
2423
2482
  });
2424
2483
 
2425
- var error = new Error(__webpack_require__(27).format('You supplied a GraphQL document with validation errors:\n%s', errorMessages.join('\n')));
2484
+ var error = new Error(__webpack_require__(29).format('You supplied a GraphQL document with validation errors:\n%s', errorMessages.join('\n')));
2426
2485
  error.validationErrors = formattedErrors;
2427
2486
  throw error;
2428
2487
  }
@@ -2432,8 +2491,10 @@ module.exports =
2432
2491
  GLOBAL_RULES: [KnownArgumentNamesRule,
2433
2492
  // TODO #19327202 Relay Classic generates some fragments in runtime, so Relay
2434
2493
  // Modern queries might reference fragments unknown in build time
2435
- //KnownFragmentNamesRule,
2436
- NoFragmentCyclesRule,
2494
+ // KnownFragmentNamesRule,
2495
+ // TODO: #25618795 Because of @argumentDefinitions, this validation
2496
+ // incorrectly flags a subset of fragments using @include/@skip as recursive.
2497
+ // NoFragmentCyclesRule,
2437
2498
  // TODO #19327144 Because of @argumentDefinitions, this validation
2438
2499
  // incorrectly marks some fragment variables as undefined.
2439
2500
  // NoUndefinedVariablesRule,
@@ -2456,7 +2517,7 @@ module.exports =
2456
2517
  };
2457
2518
 
2458
2519
  /***/ }),
2459
- /* 33 */
2520
+ /* 34 */
2460
2521
  /***/ (function(module, exports, __webpack_require__) {
2461
2522
 
2462
2523
  /**
@@ -2472,7 +2533,7 @@ module.exports =
2472
2533
 
2473
2534
  'use strict';
2474
2535
 
2475
- var _require = __webpack_require__(50),
2536
+ var _require = __webpack_require__(49),
2476
2537
  getStorageKey = _require.getStorageKey;
2477
2538
  // TODO T21875029 ../../relay-runtime/util/stableCopy
2478
2539
 
@@ -2504,13 +2565,6 @@ module.exports =
2504
2565
  }
2505
2566
 
2506
2567
  var RelayCodeGenVisitor = {
2507
- enter: function enter(node) {
2508
- if ((node.kind === 'FragmentSpread' || node.kind === 'ScalarField') && node.metadata && node.metadata.deferred) {
2509
- return deferrableFragmentSpread(node.metadata.deferredFragmentName, node.metadata.deferredArgumentName, node.metadata.deferredArgumentStorageKey, node.metadata.idType);
2510
- }
2511
- return node;
2512
- },
2513
-
2514
2568
  leave: {
2515
2569
  Batch: function Batch(node) {
2516
2570
  __webpack_require__(1)(node.requests.length !== 0, 'Batch must contain Requests.');
@@ -2755,31 +2809,10 @@ module.exports =
2755
2809
  return getStorageKey(field, {});
2756
2810
  }
2757
2811
 
2758
- function deferrableFragmentSpread(fragmentName, argumentName, storageKey, idType) {
2759
- return {
2760
- kind: 'DeferrableFragmentSpread',
2761
- name: fragmentName,
2762
- args: [{
2763
- kind: 'Argument',
2764
- name: argumentName,
2765
- metadata: null,
2766
- value: {
2767
- kind: 'Variable',
2768
- variableName: argumentName,
2769
- metadata: null,
2770
- type: idType
2771
- },
2772
- type: idType
2773
- }],
2774
- rootFieldVariable: argumentName,
2775
- storageKey: storageKey
2776
- };
2777
- }
2778
-
2779
2812
  module.exports = { generate: generate };
2780
2813
 
2781
2814
  /***/ }),
2782
- /* 34 */
2815
+ /* 35 */
2783
2816
  /***/ (function(module, exports, __webpack_require__) {
2784
2817
 
2785
2818
  /**
@@ -2943,7 +2976,7 @@ module.exports =
2943
2976
  module.exports = { getFragmentScope: getFragmentScope, getRootScope: getRootScope };
2944
2977
 
2945
2978
  /***/ }),
2946
- /* 35 */
2979
+ /* 36 */
2947
2980
  /***/ (function(module, exports, __webpack_require__) {
2948
2981
 
2949
2982
  /**
@@ -2959,13 +2992,13 @@ module.exports =
2959
2992
 
2960
2993
  'use strict';
2961
2994
 
2962
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
2995
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
2963
2996
 
2964
2997
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
2965
2998
 
2966
2999
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2967
3000
 
2968
- var _require = __webpack_require__(64),
3001
+ var _require = __webpack_require__(63),
2969
3002
  AFTER = _require.AFTER,
2970
3003
  BEFORE = _require.BEFORE,
2971
3004
  FIRST = _require.FIRST,
@@ -2974,7 +3007,7 @@ module.exports =
2974
3007
  // TODO T21875029 ../../../relay-runtime/RelayRuntime
2975
3008
 
2976
3009
 
2977
- var _require2 = __webpack_require__(50),
3010
+ var _require2 = __webpack_require__(49),
2978
3011
  ConnectionInterface = _require2.ConnectionInterface;
2979
3012
 
2980
3013
  var _require3 = __webpack_require__(3),
@@ -3153,7 +3186,7 @@ module.exports =
3153
3186
  var ast = parse(fragmentString);
3154
3187
  var fragmentAST = ast.definitions[0];
3155
3188
  __webpack_require__(1)(fragmentAST && fragmentAST.kind === 'FragmentDefinition', 'RelayConnectionTransform: Expected a fragment definition AST.');
3156
- var fragment = __webpack_require__(22).transform(context.clientSchema, fragmentAST);
3189
+ var fragment = __webpack_require__(23).transform(context.clientSchema, fragmentAST);
3157
3190
  __webpack_require__(1)(fragment && fragment.kind === 'Fragment', 'RelayConnectionTransform: Expected a connection fragment.');
3158
3191
  return {
3159
3192
  directives: [],
@@ -3250,7 +3283,7 @@ module.exports =
3250
3283
  };
3251
3284
 
3252
3285
  /***/ }),
3253
- /* 36 */
3286
+ /* 37 */
3254
3287
  /***/ (function(module, exports) {
3255
3288
 
3256
3289
  /**
@@ -3271,7 +3304,7 @@ module.exports =
3271
3304
  };
3272
3305
 
3273
3306
  /***/ }),
3274
- /* 37 */
3307
+ /* 38 */
3275
3308
  /***/ (function(module, exports, __webpack_require__) {
3276
3309
 
3277
3310
  /**
@@ -3287,7 +3320,7 @@ module.exports =
3287
3320
 
3288
3321
  'use strict';
3289
3322
 
3290
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
3323
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
3291
3324
 
3292
3325
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
3293
3326
 
@@ -3299,7 +3332,7 @@ module.exports =
3299
3332
  isInputType = _require.isInputType,
3300
3333
  GraphQLInterfaceType = _require.GraphQLInterfaceType,
3301
3334
  GraphQLList = _require.GraphQLList,
3302
- GraphQLScalarType = _require.GraphQLScalarType;
3335
+ GraphQLInputType = _require.GraphQLInputType;
3303
3336
 
3304
3337
  var _require2 = __webpack_require__(4),
3305
3338
  IRTransformer = _require2.IRTransformer,
@@ -3365,8 +3398,6 @@ module.exports =
3365
3398
  return context;
3366
3399
  }
3367
3400
 
3368
- var idType = getIdType(context.clientSchema);
3369
-
3370
3401
  // Next, transform any existing root operations to include references to
3371
3402
  // their dependent requests.
3372
3403
  var transformedContext = IRTransformer.transform(context, {
@@ -3397,18 +3428,8 @@ module.exports =
3397
3428
  });
3398
3429
  return completeDeferrableOperation;
3399
3430
  });
3400
- var transformedContextPostFragments = IRTransformer.transform(transformedContext, {
3401
- FragmentSpread: function FragmentSpread(spread) {
3402
- if (isDeferrable(spread)) {
3403
- return (0, _extends3['default'])({}, spread, {
3404
- metadata: (0, _extends3['default'])({}, spread.metadata, deferrableFragmentSpreadMetadata(spread.name, idType))
3405
- });
3406
- }
3407
- return spread;
3408
- }
3409
- });
3410
3431
 
3411
- return transformedContextPostFragments.addAll(deferrableOperations);
3432
+ return transformedContext.addAll(deferrableOperations);
3412
3433
  }
3413
3434
 
3414
3435
  /**
@@ -3444,7 +3465,7 @@ module.exports =
3444
3465
  var includedFragments = new Set([fragment]);
3445
3466
  var nodesToVisit = [fragment];
3446
3467
  while (nodesToVisit.length !== 0) {
3447
- var spreadUses = __webpack_require__(17)(spreadUsesWithin.get(nodesToVisit.pop()));
3468
+ var spreadUses = __webpack_require__(18)(spreadUsesWithin.get(nodesToVisit.pop()));
3448
3469
  for (var i = 0; i < spreadUses.length; i++) {
3449
3470
  var includedFragment = context.getFragment(spreadUses[i].spread.name);
3450
3471
  if (!includedFragments.has(includedFragment)) {
@@ -3555,7 +3576,7 @@ module.exports =
3555
3576
  var _iteratorError3 = undefined;
3556
3577
 
3557
3578
  try {
3558
- for (var _iterator3 = __webpack_require__(17)(spreadUsesWithin.get(node))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
3579
+ for (var _iterator3 = __webpack_require__(18)(spreadUsesWithin.get(node))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
3559
3580
  var spreadUse = _step3.value;
3560
3581
 
3561
3582
  if (isDeferrable(spreadUse.spread)) {
@@ -3640,16 +3661,7 @@ module.exports =
3640
3661
  metadata: null,
3641
3662
  typeCondition: nodeType,
3642
3663
  directives: [],
3643
- selections: [{
3644
- kind: 'ScalarField',
3645
- name: 'id',
3646
- alias: deferrableAlias(spread.name),
3647
- args: [],
3648
- handles: null,
3649
- directives: spread.directives,
3650
- metadata: (0, _extends3['default'])({}, spread.metadata, deferrableFragmentSpreadMetadata(spread.name, idType)),
3651
- type: idType
3652
- }]
3664
+ selections: [deferrableFragmentSpread(spread, idType)]
3653
3665
  }]
3654
3666
  };
3655
3667
  }
@@ -3703,7 +3715,7 @@ module.exports =
3703
3715
  kind: 'FragmentSpread',
3704
3716
  args: [],
3705
3717
  name: fragment.name,
3706
- metadata: deferrableFragmentSpreadMetadata(fragment.name, idType),
3718
+ metadata: null,
3707
3719
  directives: []
3708
3720
  }],
3709
3721
  type: nodeField.type
@@ -3712,20 +3724,34 @@ module.exports =
3712
3724
  };
3713
3725
  }
3714
3726
 
3715
- function deferrableFragmentSpreadMetadata(name, idType) {
3716
- return {
3717
- deferred: true,
3718
- deferredFragmentName: name,
3719
- deferredArgumentName: DEFERRABLE_ARGUMENT_NAME,
3720
- deferredArgumentStorageKey: 'id',
3721
- idType: idType
3722
- };
3723
- }
3724
-
3725
3727
  function deferrableAlias(name) {
3726
3728
  return name + '_' + DEFERRABLE_ARGUMENT_NAME;
3727
3729
  }
3728
3730
 
3731
+ function deferrableFragmentSpread(spread, idType) {
3732
+ return {
3733
+ kind: 'DeferrableFragmentSpread',
3734
+ name: spread.name,
3735
+ directives: [],
3736
+ fragmentArgs: spread.args,
3737
+ args: [{
3738
+ kind: 'Argument',
3739
+ name: DEFERRABLE_ARGUMENT_NAME,
3740
+ metadata: null,
3741
+ value: {
3742
+ kind: 'Variable',
3743
+ variableName: DEFERRABLE_ARGUMENT_NAME,
3744
+ metadata: null,
3745
+ type: idType
3746
+ },
3747
+ type: idType
3748
+ }],
3749
+ rootFieldVariable: DEFERRABLE_ARGUMENT_NAME,
3750
+ storageKey: 'id',
3751
+ alias: deferrableAlias(spread.name)
3752
+ };
3753
+ }
3754
+
3729
3755
  function getNodeType(schema) {
3730
3756
  var nodeType = schema.getType('Node');
3731
3757
  __webpack_require__(1)(nodeType instanceof GraphQLInterfaceType, 'RelayDeferrableFragmentTransform: Schema must define the interface "Node".');
@@ -3737,7 +3763,7 @@ module.exports =
3737
3763
  var idField = nodeType.getFields().id;
3738
3764
  __webpack_require__(1)(idField, 'RelayDeferrableFragmentTransform: "Node" must define the field "id"');
3739
3765
  var idType = getNamedType(idField.type);
3740
- __webpack_require__(1)(idType instanceof GraphQLScalarType, 'RelayDeferrableFragmentTransform: "Node" must define the scalar field "id"');
3766
+ __webpack_require__(1)(isInputType(idType), 'RelayDeferrableFragmentTransform: "Node" must define the scalar field "id"');
3741
3767
  return idType;
3742
3768
  }
3743
3769
 
@@ -3747,7 +3773,7 @@ module.exports =
3747
3773
  };
3748
3774
 
3749
3775
  /***/ }),
3750
- /* 38 */
3776
+ /* 39 */
3751
3777
  /***/ (function(module, exports, __webpack_require__) {
3752
3778
 
3753
3779
  /**
@@ -3865,7 +3891,7 @@ module.exports =
3865
3891
  };
3866
3892
 
3867
3893
  /***/ }),
3868
- /* 39 */
3894
+ /* 40 */
3869
3895
  /***/ (function(module, exports, __webpack_require__) {
3870
3896
 
3871
3897
  /**
@@ -3881,13 +3907,13 @@ module.exports =
3881
3907
 
3882
3908
  'use strict';
3883
3909
 
3884
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
3910
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
3885
3911
 
3886
3912
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
3887
3913
 
3888
3914
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3889
3915
 
3890
- var _require = __webpack_require__(38),
3916
+ var _require = __webpack_require__(39),
3891
3917
  anyTypeAlias = _require.anyTypeAlias,
3892
3918
  exactObjectTypeAnnotation = _require.exactObjectTypeAnnotation,
3893
3919
  exportType = _require.exportType,
@@ -3899,7 +3925,7 @@ module.exports =
3899
3925
  stringLiteralTypeAnnotation = _require.stringLiteralTypeAnnotation,
3900
3926
  unionTypeAnnotation = _require.unionTypeAnnotation;
3901
3927
 
3902
- var _require2 = __webpack_require__(67),
3928
+ var _require2 = __webpack_require__(66),
3903
3929
  transformScalarType = _require2.transformScalarType,
3904
3930
  transformInputType = _require2.transformInputType;
3905
3931
 
@@ -3917,7 +3943,7 @@ module.exports =
3917
3943
 
3918
3944
  function generate(node, options) {
3919
3945
  var ast = IRVisitor.visit(node, createVisitor(options));
3920
- return __webpack_require__(61).generate(ast);
3946
+ return __webpack_require__(60).generate(ast);
3921
3947
  }
3922
3948
 
3923
3949
  function makeProp(_ref, state, concreteType) {
@@ -3929,7 +3955,7 @@ module.exports =
3929
3955
  nodeSelections = _ref.nodeSelections;
3930
3956
 
3931
3957
  if (nodeType) {
3932
- value = transformScalarType(nodeType, state, selectionsToBabel([Array.from(__webpack_require__(17)(nodeSelections).values())], state));
3958
+ value = transformScalarType(nodeType, state, selectionsToBabel([Array.from(__webpack_require__(18)(nodeSelections).values())], state));
3933
3959
  }
3934
3960
  if (schemaName === '__typename' && concreteType) {
3935
3961
  value = stringLiteralTypeAnnotation(concreteType);
@@ -4018,7 +4044,7 @@ module.exports =
4018
4044
  });
4019
4045
  }
4020
4046
  return (0, _extends3['default'])({}, a, {
4021
- nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, __webpack_require__(17)(b.nodeSelections)) : null,
4047
+ nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, __webpack_require__(18)(b.nodeSelections)) : null,
4022
4048
  conditional: a.conditional && b.conditional
4023
4049
  });
4024
4050
  }
@@ -4091,6 +4117,7 @@ module.exports =
4091
4117
  customScalars: options.customScalars,
4092
4118
  enumsHasteModule: options.enumsHasteModule,
4093
4119
  existingFragmentNames: options.existingFragmentNames,
4120
+ generatedFragments: new Set(),
4094
4121
  inputFieldWhiteList: options.inputFieldWhiteList,
4095
4122
  relayRuntimeModule: options.relayRuntimeModule,
4096
4123
  usedEnums: {},
@@ -4118,8 +4145,9 @@ module.exports =
4118
4145
  }
4119
4146
  return [selection];
4120
4147
  });
4148
+ state.generatedFragments.add(node.name);
4121
4149
  var refTypeName = getRefTypeName(node.name);
4122
- var refType = __webpack_require__(2).expressionStatement(__webpack_require__(2).identifier('export opaque type ' + refTypeName + ': FragmentReference = FragmentReference'));
4150
+ var refType = __webpack_require__(2).expressionStatement(__webpack_require__(2).identifier('declare export opaque type ' + refTypeName + ': FragmentReference'));
4123
4151
  var baseType = selectionsToBabel(selections, state, refTypeName);
4124
4152
  var type = isPlural(node) ? readOnlyArrayOfType(baseType) : baseType;
4125
4153
  return __webpack_require__(2).program([].concat((0, _toConsumableArray3['default'])(getFragmentImports(state)), (0, _toConsumableArray3['default'])(getEnumDefinitions(state)), [importTypes(['FragmentReference'], state.relayRuntimeModule), refType, exportType(node.name, type)]));
@@ -4209,7 +4237,7 @@ module.exports =
4209
4237
  return __webpack_require__(2).identifier(getRefTypeName(ref));
4210
4238
  }));
4211
4239
  result.push({
4212
- key: '__fragments',
4240
+ key: '$fragmentRefs',
4213
4241
  conditional: false,
4214
4242
  value: _value3
4215
4243
  });
@@ -4230,12 +4258,14 @@ module.exports =
4230
4258
  var usedFragment = _step3.value;
4231
4259
 
4232
4260
  var refTypeName = getRefTypeName(usedFragment);
4233
- if (state.useHaste && state.existingFragmentNames.has(usedFragment)) {
4234
- // TODO(T22653277) support non-haste environments when importing
4235
- // fragments
4236
- imports.push(importTypes([refTypeName], usedFragment + '.graphql'));
4237
- } else {
4238
- imports.push(anyTypeAlias(refTypeName));
4261
+ if (!state.generatedFragments.has(usedFragment)) {
4262
+ if (state.useHaste && state.existingFragmentNames.has(usedFragment)) {
4263
+ // TODO(T22653277) support non-haste environments when importing
4264
+ // fragments
4265
+ imports.push(importTypes([refTypeName], usedFragment + '.graphql'));
4266
+ } else {
4267
+ imports.push(anyTypeAlias(refTypeName));
4268
+ }
4239
4269
  }
4240
4270
  }
4241
4271
  } catch (err) {
@@ -4284,7 +4314,7 @@ module.exports =
4284
4314
  return name + '$ref';
4285
4315
  }
4286
4316
 
4287
- var FLOW_TRANSFORMS = [__webpack_require__(26).transform, __webpack_require__(42).transform, FlattenTransform.transformWithOptions({})];
4317
+ var FLOW_TRANSFORMS = [__webpack_require__(28).transform, __webpack_require__(43).transform, FlattenTransform.transformWithOptions({})];
4288
4318
 
4289
4319
  module.exports = {
4290
4320
  generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'),
@@ -4292,7 +4322,7 @@ module.exports =
4292
4322
  };
4293
4323
 
4294
4324
  /***/ }),
4295
- /* 40 */
4325
+ /* 41 */
4296
4326
  /***/ (function(module, exports, __webpack_require__) {
4297
4327
 
4298
4328
  /**
@@ -4308,13 +4338,13 @@ module.exports =
4308
4338
 
4309
4339
  'use strict';
4310
4340
 
4311
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
4341
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
4312
4342
 
4313
4343
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
4314
4344
 
4315
4345
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4316
4346
 
4317
- var _require = __webpack_require__(43),
4347
+ var _require = __webpack_require__(44),
4318
4348
  hasUnaliasedSelection = _require.hasUnaliasedSelection;
4319
4349
 
4320
4350
  var _require2 = __webpack_require__(3),
@@ -4372,7 +4402,7 @@ module.exports =
4372
4402
  };
4373
4403
 
4374
4404
  /***/ }),
4375
- /* 41 */
4405
+ /* 42 */
4376
4406
  /***/ (function(module, exports, __webpack_require__) {
4377
4407
 
4378
4408
  /**
@@ -4404,12 +4434,12 @@ module.exports =
4404
4434
 
4405
4435
  // Throws an error if parsing the file fails
4406
4436
  function parseFile(baseDir, file) {
4407
- var text = __webpack_require__(7).readFileSync(__webpack_require__(8).join(baseDir, file.relPath), 'utf8');
4437
+ var text = __webpack_require__(7).readFileSync(__webpack_require__(6).join(baseDir, file.relPath), 'utf8');
4408
4438
 
4409
4439
  __webpack_require__(1)(text.indexOf('graphql') >= 0, 'RelayJSModuleParser: Files should be filtered before passed to the ' + 'parser, got unfiltered file `%s`.', file);
4410
4440
 
4411
4441
  var astDefinitions = [];
4412
- __webpack_require__(55).memoizedFind(text, baseDir, file, FIND_OPTIONS).forEach(function (template) {
4442
+ __webpack_require__(54).memoizedFind(text, baseDir, file, FIND_OPTIONS).forEach(function (template) {
4413
4443
  var ast = parseGraphQL(new (__webpack_require__(3).Source)(template, file.relPath));
4414
4444
  __webpack_require__(1)(ast.definitions.length, 'RelayJSModuleParser: Expected GraphQL text to contain at least one ' + 'definition (fragment, mutation, query, subscription), got `%s`.', template);
4415
4445
  astDefinitions.push.apply(astDefinitions, (0, _toConsumableArray3['default'])(ast.definitions));
@@ -4430,7 +4460,7 @@ module.exports =
4430
4460
 
4431
4461
  function getFileFilter(baseDir) {
4432
4462
  return function (file) {
4433
- var text = __webpack_require__(7).readFileSync(__webpack_require__(8).join(baseDir, file.relPath), 'utf8');
4463
+ var text = __webpack_require__(7).readFileSync(__webpack_require__(6).join(baseDir, file.relPath), 'utf8');
4434
4464
  return text.indexOf('graphql') >= 0;
4435
4465
  };
4436
4466
  }
@@ -4441,7 +4471,7 @@ module.exports =
4441
4471
  };
4442
4472
 
4443
4473
  /***/ }),
4444
- /* 42 */
4474
+ /* 43 */
4445
4475
  /***/ (function(module, exports, __webpack_require__) {
4446
4476
 
4447
4477
  /**
@@ -4459,7 +4489,7 @@ module.exports =
4459
4489
 
4460
4490
  'use strict';
4461
4491
 
4462
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
4492
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
4463
4493
 
4464
4494
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4465
4495
 
@@ -4575,7 +4605,7 @@ module.exports =
4575
4605
  };
4576
4606
 
4577
4607
  /***/ }),
4578
- /* 43 */
4608
+ /* 44 */
4579
4609
  /***/ (function(module, exports) {
4580
4610
 
4581
4611
  /**
@@ -4600,7 +4630,7 @@ module.exports =
4600
4630
  module.exports = { hasUnaliasedSelection: hasUnaliasedSelection };
4601
4631
 
4602
4632
  /***/ }),
4603
- /* 44 */
4633
+ /* 45 */
4604
4634
  /***/ (function(module, exports, __webpack_require__) {
4605
4635
 
4606
4636
  /**
@@ -4649,7 +4679,7 @@ module.exports =
4649
4679
  };
4650
4680
 
4651
4681
  /***/ }),
4652
- /* 45 */
4682
+ /* 46 */
4653
4683
  /***/ (function(module, exports, __webpack_require__) {
4654
4684
 
4655
4685
  /**
@@ -4704,7 +4734,7 @@ module.exports =
4704
4734
  var codeGenContext = context.applyTransforms([].concat((0, _toConsumableArray3['default'])(transforms.commonTransforms), (0, _toConsumableArray3['default'])(transforms.queryTransforms), (0, _toConsumableArray3['default'])(transforms.codegenTransforms)), reporter);
4705
4735
 
4706
4736
  return fragmentContext.documents().map(function (node) {
4707
- return __webpack_require__(33).generate(node.kind === 'Fragment' ? node : {
4737
+ return __webpack_require__(34).generate(node.kind === 'Fragment' ? node : {
4708
4738
  kind: 'Batch',
4709
4739
  metadata: codeGenContext.getRoot(node.name).metadata || {},
4710
4740
  name: node.name,
@@ -4725,52 +4755,6 @@ module.exports =
4725
4755
 
4726
4756
  module.exports = compileRelayArtifacts;
4727
4757
 
4728
- /***/ }),
4729
- /* 46 */
4730
- /***/ (function(module, exports, __webpack_require__) {
4731
-
4732
- /**
4733
- * Copyright (c) 2013-present, Facebook, Inc.
4734
- *
4735
- * This source code is licensed under the MIT license found in the
4736
- * LICENSE file in the root directory of this source tree.
4737
- *
4738
- * @providesModule filterContextForNode
4739
- *
4740
- * @format
4741
- */
4742
-
4743
- 'use strict';
4744
-
4745
- var _require = __webpack_require__(31),
4746
- visit = _require.visit;
4747
-
4748
- /**
4749
- * Returns a GraphQLCompilerContext containing only the documents referenced
4750
- * by and including the provided node.
4751
- */
4752
- function filterContextForNode(node, context) {
4753
- var queue = [node];
4754
- var filteredContext = new (__webpack_require__(24))(context.serverSchema, context.clientSchema).add(node);
4755
- var visitorConfig = {
4756
- FragmentSpread: function FragmentSpread(fragmentSpread) {
4757
- var name = fragmentSpread.name;
4758
-
4759
- if (!filteredContext.get(name)) {
4760
- var fragment = context.getFragment(name);
4761
- filteredContext = filteredContext.add(fragment);
4762
- queue.push(fragment);
4763
- }
4764
- }
4765
- };
4766
- while (queue.length) {
4767
- visit(queue.pop(), visitorConfig);
4768
- }
4769
- return filteredContext;
4770
- }
4771
-
4772
- module.exports = filterContextForNode;
4773
-
4774
4758
  /***/ }),
4775
4759
  /* 47 */
4776
4760
  /***/ (function(module, exports, __webpack_require__) {
@@ -4788,7 +4772,7 @@ module.exports =
4788
4772
 
4789
4773
  'use strict';
4790
4774
 
4791
- var _require = __webpack_require__(25),
4775
+ var _require = __webpack_require__(26),
4792
4776
  printArguments = _require.printArguments,
4793
4777
  printDirectives = _require.printDirectives;
4794
4778
 
@@ -4800,7 +4784,7 @@ module.exports =
4800
4784
  function getIdentifierForSelection(node) {
4801
4785
  if (node.kind === 'LinkedField' || node.kind === 'ScalarField') {
4802
4786
  return node.directives.length === 0 ? node.alias || node.name : (node.alias || node.name) + printDirectives(node.directives);
4803
- } else if (node.kind === 'FragmentSpread') {
4787
+ } else if (node.kind === 'FragmentSpread' || node.kind === 'DeferrableFragmentSpread') {
4804
4788
  return node.args.length === 0 ? '...' + node.name : '...' + node.name + printArguments(node.args);
4805
4789
  } else if (node.kind === 'InlineFragment') {
4806
4790
  return 'I:' + node.typeCondition.name;
@@ -4815,47 +4799,18 @@ module.exports =
4815
4799
 
4816
4800
  /***/ }),
4817
4801
  /* 48 */
4818
- /***/ (function(module, exports) {
4819
-
4820
- /**
4821
- * Copyright (c) 2013-present, Facebook, Inc.
4822
- *
4823
- * This source code is licensed under the MIT license found in the
4824
- * LICENSE file in the root directory of this source tree.
4825
- *
4826
- * @providesModule nullthrowsOSS
4827
- *
4828
- * @format
4829
- */
4830
- 'use strict';
4831
-
4832
- var nullthrows = function nullthrows(x) {
4833
- var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Got unexpected null or undefined';
4834
-
4835
- if (x != null) {
4836
- return x;
4837
- }
4838
- var error = new Error(message);
4839
- error.framesToPop = 1; // Skip nullthrows own stack frame.
4840
- throw error;
4841
- };
4842
-
4843
- module.exports = nullthrows;
4844
-
4845
- /***/ }),
4846
- /* 49 */
4847
4802
  /***/ (function(module, exports) {
4848
4803
 
4849
4804
  module.exports = require("os");
4850
4805
 
4851
4806
  /***/ }),
4852
- /* 50 */
4807
+ /* 49 */
4853
4808
  /***/ (function(module, exports) {
4854
4809
 
4855
4810
  module.exports = require("relay-runtime");
4856
4811
 
4857
4812
  /***/ }),
4858
- /* 51 */
4813
+ /* 50 */
4859
4814
  /***/ (function(module, exports, __webpack_require__) {
4860
4815
 
4861
4816
  /**
@@ -4876,7 +4831,7 @@ module.exports =
4876
4831
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4877
4832
 
4878
4833
  var _require = __webpack_require__(14),
4879
- isOperationDefinitionAST = _require.isOperationDefinitionAST,
4834
+ isExecutableDefinitionAST = _require.isExecutableDefinitionAST,
4880
4835
  isSchemaDefinitionAST = _require.isSchemaDefinitionAST;
4881
4836
 
4882
4837
  var _require2 = __webpack_require__(3),
@@ -4891,7 +4846,7 @@ module.exports =
4891
4846
  var astDefinitions = [];
4892
4847
  documents.forEach(function (doc) {
4893
4848
  doc.definitions.forEach(function (definition) {
4894
- if (isOperationDefinitionAST(definition)) {
4849
+ if (isExecutableDefinitionAST(definition)) {
4895
4850
  astDefinitions.push(definition);
4896
4851
  }
4897
4852
  });
@@ -4909,7 +4864,7 @@ module.exports =
4909
4864
  var requiredDefinitions = new Map();
4910
4865
  var baseMap = new Map();
4911
4866
  baseDefinitions.forEach(function (definition) {
4912
- if (isOperationDefinitionAST(definition)) {
4867
+ if (isExecutableDefinitionAST(definition)) {
4913
4868
  var definitionName = definition.name && definition.name.value;
4914
4869
  // If there's no name, no reason to put in the map
4915
4870
  if (definitionName) {
@@ -4923,7 +4878,7 @@ module.exports =
4923
4878
 
4924
4879
  var definitionsToVisit = [];
4925
4880
  definitions.forEach(function (definition) {
4926
- if (isOperationDefinitionAST(definition)) {
4881
+ if (isExecutableDefinitionAST(definition)) {
4927
4882
  definitionsToVisit.push(definition);
4928
4883
  }
4929
4884
  });
@@ -4963,7 +4918,7 @@ module.exports =
4963
4918
  function convertASTDefinitions(schema, definitions, validationRules, transform) {
4964
4919
  var operationDefinitions = [];
4965
4920
  definitions.forEach(function (definition) {
4966
- if (isOperationDefinitionAST(definition)) {
4921
+ if (isExecutableDefinitionAST(definition)) {
4967
4922
  operationDefinitions.push(definition);
4968
4923
  }
4969
4924
  });
@@ -4975,7 +4930,7 @@ module.exports =
4975
4930
  definitions: operationDefinitions
4976
4931
  };
4977
4932
  // Will throw an error if there are validation issues
4978
- __webpack_require__(32).validate(validationAST, schema, validationRules);
4933
+ __webpack_require__(33).validate(validationAST, schema, validationRules);
4979
4934
  return operationDefinitions.map(function (definition) {
4980
4935
  return transform(schema, definition);
4981
4936
  });
@@ -5025,7 +4980,7 @@ module.exports =
5025
4980
  };
5026
4981
 
5027
4982
  /***/ }),
5028
- /* 52 */
4983
+ /* 51 */
5029
4984
  /***/ (function(module, exports, __webpack_require__) {
5030
4985
 
5031
4986
  /**
@@ -5051,7 +5006,7 @@ module.exports =
5051
5006
 
5052
5007
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
5053
5008
 
5054
- var _require = __webpack_require__(18),
5009
+ var _require = __webpack_require__(19),
5055
5010
  ImmutableMap = _require.Map;
5056
5011
 
5057
5012
  var CodegenRunner = function () {
@@ -5189,12 +5144,12 @@ module.exports =
5189
5144
  // Check for files in the input
5190
5145
  yield Promise.all(Object.keys(_this3.parserConfigs).map(function (parserConfigName) {
5191
5146
  return __webpack_require__(5).waitFor('Watchman:query', (0, _asyncToGenerator3.default)(function* () {
5192
- var client = new (__webpack_require__(21))();
5147
+ var client = new (__webpack_require__(22))();
5193
5148
  var config = _this3.parserConfigs[parserConfigName];
5194
5149
  var dirs = yield client.watchProject(config.baseDir);
5195
5150
 
5196
5151
  var relativeFilePaths = filePaths.map(function (filePath) {
5197
- return __webpack_require__(8).relative(config.baseDir, filePath);
5152
+ return __webpack_require__(6).relative(config.baseDir, filePath);
5198
5153
  });
5199
5154
 
5200
5155
  var query = {
@@ -5235,9 +5190,9 @@ module.exports =
5235
5190
 
5236
5191
  var files = void 0;
5237
5192
  if (parserConfig.watchmanExpression) {
5238
- files = yield __webpack_require__(20).queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
5193
+ files = yield __webpack_require__(21).queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
5239
5194
  } else if (parserConfig.filepaths) {
5240
- files = yield __webpack_require__(20).queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
5195
+ files = yield __webpack_require__(21).queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
5241
5196
  } else {
5242
5197
  throw new Error('Either `watchmanExpression` or `filepaths` is required to query files');
5243
5198
  }
@@ -5270,8 +5225,7 @@ module.exports =
5270
5225
 
5271
5226
  return __webpack_require__(5).asyncContext('CodegenRunner.write', (0, _asyncToGenerator3.default)(function* () {
5272
5227
  try {
5273
- // eslint-disable-next-line no-console
5274
- console.log('\nWriting %s', writerName);
5228
+ _this5._reporter.reportMessage('\nWriting ' + writerName);
5275
5229
  var _writerConfigs$writer = _this5.writerConfigs[writerName],
5276
5230
  _getWriter = _writerConfigs$writer.getWriter,
5277
5231
  _parser2 = _writerConfigs$writer.parser,
@@ -5352,11 +5306,11 @@ module.exports =
5352
5306
  }
5353
5307
  }
5354
5308
 
5355
- var combinedChanges = __webpack_require__(19).combineChanges(Array.from(outputDirectories.values()));
5356
- __webpack_require__(19).printChanges(combinedChanges, {
5309
+ var combinedChanges = __webpack_require__(20).combineChanges(Array.from(outputDirectories.values()));
5310
+ __webpack_require__(20).printChanges(combinedChanges, {
5357
5311
  onlyValidate: _this5.onlyValidate
5358
5312
  });
5359
- return __webpack_require__(19).hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES';
5313
+ return __webpack_require__(20).hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES';
5360
5314
  } catch (e) {
5361
5315
  _this5._reporter.reportError('CodegenRunner.write', e);
5362
5316
  return 'ERROR';
@@ -5396,7 +5350,7 @@ module.exports =
5396
5350
  // we should prevent the first watch callback from doing anything.
5397
5351
  var firstChange = true;
5398
5352
 
5399
- yield __webpack_require__(20).watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
5353
+ yield __webpack_require__(21).watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
5400
5354
  var _ref9 = (0, _asyncToGenerator3.default)(function* (files) {
5401
5355
  __webpack_require__(1)(_this6.parsers[parserName], 'Trying to watch an uncompiled parser config: %s', parserName);
5402
5356
  if (firstChange) {
@@ -5421,16 +5375,14 @@ module.exports =
5421
5375
  } catch (error) {
5422
5376
  _this6._reporter.reportError('CodegenRunner.watch', error);
5423
5377
  }
5424
- // eslint-disable-next-line no-console
5425
- console.log('Watching for changes to %s...', parserName);
5378
+ _this6._reporter.reportMessage('Watching for changes to ' + parserName + '...');
5426
5379
  });
5427
5380
 
5428
5381
  return function (_x4) {
5429
5382
  return _ref9.apply(this, arguments);
5430
5383
  };
5431
5384
  })());
5432
- // eslint-disable-next-line no-console
5433
- console.log('Watching for changes to %s...', parserName);
5385
+ this._reporter.reportMessage('Watching for changes to ' + parserName + '...');
5434
5386
  });
5435
5387
 
5436
5388
  function watch(_x3) {
@@ -5450,7 +5402,7 @@ module.exports =
5450
5402
  module.exports = CodegenRunner;
5451
5403
 
5452
5404
  /***/ }),
5453
- /* 53 */
5405
+ /* 52 */
5454
5406
  /***/ (function(module, exports, __webpack_require__) {
5455
5407
 
5456
5408
  /**
@@ -5471,16 +5423,18 @@ module.exports =
5471
5423
  Source = _require.Source;
5472
5424
 
5473
5425
  function parseFile(baseDir, file) {
5474
- var text = __webpack_require__(7).readFileSync(__webpack_require__(8).join(baseDir, file.relPath), 'utf8');
5475
- return parse(new Source(text, file.relPath));
5426
+ var text = __webpack_require__(7).readFileSync(__webpack_require__(6).join(baseDir, file.relPath), 'utf8');
5427
+ return parse(new Source(text, file.relPath), {
5428
+ experimentalFragmentVariables: true
5429
+ });
5476
5430
  }
5477
5431
 
5478
5432
  exports.getParser = function getParser(baseDir) {
5479
- return new (__webpack_require__(28))({ baseDir: baseDir, parse: parseFile });
5433
+ return new (__webpack_require__(30))({ baseDir: baseDir, parse: parseFile });
5480
5434
  };
5481
5435
 
5482
5436
  /***/ }),
5483
- /* 54 */
5437
+ /* 53 */
5484
5438
  /***/ (function(module, exports, __webpack_require__) {
5485
5439
 
5486
5440
  /**
@@ -5525,7 +5479,7 @@ module.exports =
5525
5479
  };
5526
5480
 
5527
5481
  /***/ }),
5528
- /* 55 */
5482
+ /* 54 */
5529
5483
  /***/ (function(module, exports, __webpack_require__) {
5530
5484
 
5531
5485
  /**
@@ -5611,20 +5565,21 @@ module.exports =
5611
5565
  return result;
5612
5566
  }
5613
5567
 
5614
- var cache = new (__webpack_require__(63))('FindGraphQLTags', 'v1');
5568
+ var cache = new (__webpack_require__(62))('FindGraphQLTags', 'v1');
5615
5569
 
5616
5570
  function memoizedFind(text, baseDir, file, options) {
5571
+ !file.exists ? false ? invariant(false, 'FindGraphQLTags: Called with non-existent file `%s`', file.relPath) : invariant(false) : void 0;
5617
5572
  return cache.getOrCompute(file.hash + (options.validateNames ? '1' : '0'), function () {
5618
- var absPath = __webpack_require__(8).join(baseDir, file.relPath);
5573
+ var absPath = __webpack_require__(6).join(baseDir, file.relPath);
5619
5574
  return find(text, absPath, options);
5620
5575
  });
5621
5576
  }
5622
5577
 
5623
- var CREATE_CONTAINER_FUNCTIONS = {
5624
- createFragmentContainer: true,
5625
- createPaginationContainer: true,
5626
- createRefetchContainer: true
5627
- };
5578
+ var CREATE_CONTAINER_FUNCTIONS = Object.create(null, {
5579
+ createFragmentContainer: { value: true },
5580
+ createPaginationContainer: { value: true },
5581
+ createRefetchContainer: { value: true }
5582
+ });
5628
5583
 
5629
5584
  var IGNORED_KEYS = {
5630
5585
  comments: true,
@@ -5693,7 +5648,7 @@ module.exports =
5693
5648
  args[_key - 2] = arguments[_key];
5694
5649
  }
5695
5650
 
5696
- throw new Error(__webpack_require__(27).format.apply(__webpack_require__(27), [msg].concat(args)));
5651
+ throw new Error(__webpack_require__(29).format.apply(__webpack_require__(29), [msg].concat(args)));
5697
5652
  }
5698
5653
  }
5699
5654
 
@@ -5730,7 +5685,7 @@ module.exports =
5730
5685
  };
5731
5686
 
5732
5687
  /***/ }),
5733
- /* 56 */
5688
+ /* 55 */
5734
5689
  /***/ (function(module, exports, __webpack_require__) {
5735
5690
 
5736
5691
  /**
@@ -5746,14 +5701,14 @@ module.exports =
5746
5701
 
5747
5702
  'use strict';
5748
5703
 
5749
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
5704
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
5750
5705
 
5751
5706
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
5752
5707
 
5753
- var _require = __webpack_require__(30),
5708
+ var _require = __webpack_require__(32),
5754
5709
  createUserError = _require.createUserError;
5755
5710
 
5756
- var _require2 = __webpack_require__(25),
5711
+ var _require2 = __webpack_require__(26),
5757
5712
  printField = _require2.printField;
5758
5713
 
5759
5714
  var getRawType = __webpack_require__(14).getRawType,
@@ -5837,7 +5792,7 @@ module.exports =
5837
5792
  flattenedSelections.set(nodeIdentifier, (0, _extends3['default'])({}, flattenedSelection, {
5838
5793
  selections: mergeSelections(flattenedSelection, selection, state, type)
5839
5794
  }));
5840
- } else if (flattenedSelection.kind === 'FragmentSpread') {
5795
+ } else if (flattenedSelection.kind === 'FragmentSpread' || flattenedSelection.kind === 'DeferrableFragmentSpread') {
5841
5796
  // Ignore duplicate fragment spreads.
5842
5797
  } else if (flattenedSelection.kind === 'LinkedField') {
5843
5798
  __webpack_require__(1)(selection.kind === 'LinkedField', 'FlattenTransform: Expected a LinkedField, got a %s', selection.kind);
@@ -5901,7 +5856,7 @@ module.exports =
5901
5856
  * selections.
5902
5857
  */
5903
5858
  function areEqualFields(thisField, thatField) {
5904
- return thisField.kind === thatField.kind && thisField.name === thatField.name && thisField.alias === thatField.alias && __webpack_require__(77)(thisField.args, thatField.args);
5859
+ return thisField.kind === thatField.kind && thisField.name === thatField.name && thisField.alias === thatField.alias && __webpack_require__(76)(thisField.args, thatField.args);
5905
5860
  }
5906
5861
 
5907
5862
  /**
@@ -5932,7 +5887,7 @@ module.exports =
5932
5887
  };
5933
5888
 
5934
5889
  /***/ }),
5935
- /* 57 */
5890
+ /* 56 */
5936
5891
  /***/ (function(module, exports, __webpack_require__) {
5937
5892
 
5938
5893
  /**
@@ -5957,21 +5912,30 @@ module.exports =
5957
5912
  (0, _classCallCheck3['default'])(this, GraphQLConsoleReporter);
5958
5913
 
5959
5914
  this._verbose = options.verbose;
5915
+ this._quiet = options.quiet;
5960
5916
  }
5961
5917
 
5918
+ GraphQLConsoleReporter.prototype.reportMessage = function reportMessage(message) {
5919
+ if (!this._quiet) {
5920
+ process.stdout.write(message + '\n');
5921
+ }
5922
+ };
5923
+
5962
5924
  GraphQLConsoleReporter.prototype.reportTime = function reportTime(name, ms) {
5963
- if (this._verbose) {
5964
- var time = ms === 0 ? __webpack_require__(16).gray(' <1ms') : ms < 1000 ? __webpack_require__(16).blue(leftPad(5, ms + 'ms')) : __webpack_require__(16).red(Math.floor(ms / 10) / 100 + 's');
5965
- process.stdout.write(' ' + time + ' ' + __webpack_require__(16).gray(name) + '\n');
5925
+ if (this._verbose && !this.quiet) {
5926
+ var time = ms === 0 ? __webpack_require__(17).gray(' <1ms') : ms < 1000 ? __webpack_require__(17).blue(leftPad(5, ms + 'ms')) : __webpack_require__(17).red(Math.floor(ms / 10) / 100 + 's');
5927
+ process.stdout.write(' ' + time + ' ' + __webpack_require__(17).gray(name) + '\n');
5966
5928
  }
5967
5929
  };
5968
5930
 
5969
5931
  GraphQLConsoleReporter.prototype.reportError = function reportError(caughtLocation, error) {
5970
- process.stdout.write(__webpack_require__(16).red('ERROR:\n' + error.message + '\n'));
5971
- if (this._verbose) {
5972
- var frames = error.stack.match(/^ {4}at .*$/gm);
5973
- if (frames) {
5974
- process.stdout.write(__webpack_require__(16).gray('From: ' + caughtLocation + '\n' + frames.join('\n') + '\n'));
5932
+ if (!this._quiet) {
5933
+ process.stdout.write(__webpack_require__(17).red('ERROR:\n' + error.message + '\n'));
5934
+ if (this._verbose) {
5935
+ var frames = error.stack.match(/^ {4}at .*$/gm);
5936
+ if (frames) {
5937
+ process.stdout.write(__webpack_require__(17).gray('From: ' + caughtLocation + '\n' + frames.join('\n') + '\n'));
5938
+ }
5975
5939
  }
5976
5940
  }
5977
5941
  };
@@ -5986,7 +5950,7 @@ module.exports =
5986
5950
  module.exports = GraphQLConsoleReporter;
5987
5951
 
5988
5952
  /***/ }),
5989
- /* 58 */
5953
+ /* 57 */
5990
5954
  /***/ (function(module, exports, __webpack_require__) {
5991
5955
 
5992
5956
  /**
@@ -6017,6 +5981,12 @@ module.exports =
6017
5981
  this._reporters = reporters;
6018
5982
  }
6019
5983
 
5984
+ GraphQLMultiReporter.prototype.reportMessage = function reportMessage(message) {
5985
+ this._reporters.forEach(function (reporter) {
5986
+ reporter.reportMessage(message);
5987
+ });
5988
+ };
5989
+
6020
5990
  GraphQLMultiReporter.prototype.reportTime = function reportTime(name, ms) {
6021
5991
  this._reporters.forEach(function (reporter) {
6022
5992
  reporter.reportTime(name, ms);
@@ -6035,7 +6005,7 @@ module.exports =
6035
6005
  module.exports = GraphQLMultiReporter;
6036
6006
 
6037
6007
  /***/ }),
6038
- /* 59 */
6008
+ /* 58 */
6039
6009
  /***/ (function(module, exports, __webpack_require__) {
6040
6010
 
6041
6011
  /**
@@ -6051,20 +6021,20 @@ module.exports =
6051
6021
 
6052
6022
  'use strict';
6053
6023
 
6054
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
6024
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
6055
6025
 
6056
6026
  var _classCallCheck3 = _interopRequireDefault(__webpack_require__(10));
6057
6027
 
6058
6028
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
6059
6029
 
6060
- var _require = __webpack_require__(29),
6030
+ var _require = __webpack_require__(31),
6061
6031
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
6062
6032
 
6063
6033
  var _require2 = __webpack_require__(14),
6064
6034
  getNullableType = _require2.getNullableType,
6065
6035
  getRawType = _require2.getRawType,
6066
6036
  getTypeFromAST = _require2.getTypeFromAST,
6067
- isOperationDefinitionAST = _require2.isOperationDefinitionAST;
6037
+ isExecutableDefinitionAST = _require2.isExecutableDefinitionAST;
6068
6038
 
6069
6039
  var _require3 = __webpack_require__(3),
6070
6040
  assertCompositeType = _require3.assertCompositeType,
@@ -6115,7 +6085,7 @@ module.exports =
6115
6085
  // TODO T24511737 figure out if this is dangerous
6116
6086
  schema = extendSchema(schema, ast, { assumeValid: true });
6117
6087
  ast.definitions.forEach(function (definition) {
6118
- if (isOperationDefinitionAST(definition)) {
6088
+ if (isExecutableDefinitionAST(definition)) {
6119
6089
  nodes.push(_this.transform(schema, definition));
6120
6090
  }
6121
6091
  }, this);
@@ -6783,7 +6753,7 @@ module.exports =
6783
6753
  module.exports = GraphQLParser;
6784
6754
 
6785
6755
  /***/ }),
6786
- /* 60 */
6756
+ /* 59 */
6787
6757
  /***/ (function(module, exports, __webpack_require__) {
6788
6758
 
6789
6759
  /**
@@ -6836,7 +6806,7 @@ module.exports =
6836
6806
  };
6837
6807
 
6838
6808
  /***/ }),
6839
- /* 61 */
6809
+ /* 60 */
6840
6810
  /***/ (function(module, exports, __webpack_require__) {
6841
6811
 
6842
6812
  /**
@@ -6861,9 +6831,9 @@ module.exports =
6861
6831
  * https://github.com/babel/babel/issues/6333
6862
6832
  */
6863
6833
  function generate(ast) {
6864
- var originalUnionTypeAnnotation = __webpack_require__(15).prototype.UnionTypeAnnotation;
6865
- var originalIntersectionTypeAnnotation = __webpack_require__(15).prototype.IntersectionTypeAnnotation;
6866
- __webpack_require__(15).prototype.UnionTypeAnnotation = function (node) {
6834
+ var originalUnionTypeAnnotation = __webpack_require__(16).prototype.UnionTypeAnnotation;
6835
+ var originalIntersectionTypeAnnotation = __webpack_require__(16).prototype.IntersectionTypeAnnotation;
6836
+ __webpack_require__(16).prototype.UnionTypeAnnotation = function (node) {
6867
6837
  var needsParens = node.types.length > 1;
6868
6838
  if (needsParens) {
6869
6839
  this.token('(');
@@ -6873,7 +6843,7 @@ module.exports =
6873
6843
  this.token(')');
6874
6844
  }
6875
6845
  };
6876
- __webpack_require__(15).prototype.IntersectionTypeAnnotation = function (node) {
6846
+ __webpack_require__(16).prototype.IntersectionTypeAnnotation = function (node) {
6877
6847
  var needsParens = node.types.length > 1;
6878
6848
  if (needsParens) {
6879
6849
  this.token('(');
@@ -6889,8 +6859,8 @@ module.exports =
6889
6859
  quotes: 'single'
6890
6860
  }).code;
6891
6861
  } finally {
6892
- __webpack_require__(15).prototype.UnionTypeAnnotation = originalUnionTypeAnnotation;
6893
- __webpack_require__(15).prototype.IntersectionTypeAnnotation = originalIntersectionTypeAnnotation;
6862
+ __webpack_require__(16).prototype.UnionTypeAnnotation = originalUnionTypeAnnotation;
6863
+ __webpack_require__(16).prototype.IntersectionTypeAnnotation = originalIntersectionTypeAnnotation;
6894
6864
  }
6895
6865
  }
6896
6866
 
@@ -6899,7 +6869,7 @@ module.exports =
6899
6869
  };
6900
6870
 
6901
6871
  /***/ }),
6902
- /* 62 */
6872
+ /* 61 */
6903
6873
  /***/ (function(module, exports, __webpack_require__) {
6904
6874
 
6905
6875
  /**
@@ -6915,7 +6885,7 @@ module.exports =
6915
6885
 
6916
6886
  'use strict';
6917
6887
 
6918
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
6888
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
6919
6889
 
6920
6890
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
6921
6891
 
@@ -6925,8 +6895,8 @@ module.exports =
6925
6895
  getIdentifierForArgumentValue = _require.getIdentifierForArgumentValue,
6926
6896
  IRTransformer = _require.IRTransformer;
6927
6897
 
6928
- var getFragmentScope = __webpack_require__(34).getFragmentScope,
6929
- getRootScope = __webpack_require__(34).getRootScope;
6898
+ var getFragmentScope = __webpack_require__(35).getFragmentScope,
6899
+ getRootScope = __webpack_require__(35).getRootScope;
6930
6900
 
6931
6901
  /**
6932
6902
  * A tranform that converts a set of documents containing fragments/fragment
@@ -7003,6 +6973,20 @@ module.exports =
7003
6973
  });
7004
6974
  }
7005
6975
 
6976
+ function transformDeferrableFragmentSpread(context, fragments, scope, spread) {
6977
+ var directives = transformDirectives(scope, spread.directives);
6978
+ var fragment = context.getFragment(spread.name);
6979
+ var appliedFragment = transformFragment(context, fragments, scope, fragment, spread.fragmentArgs);
6980
+ if (!appliedFragment) {
6981
+ return null;
6982
+ }
6983
+ return (0, _extends3['default'])({}, spread, {
6984
+ fragmentArgs: [],
6985
+ directives: directives,
6986
+ name: appliedFragment.name
6987
+ });
6988
+ }
6989
+
7006
6990
  function transformField(context, fragments, scope, field) {
7007
6991
  var args = transformArguments(scope, field.args);
7008
6992
  var directives = transformDirectives(scope, field.directives);
@@ -7054,6 +7038,8 @@ module.exports =
7054
7038
  nextSelection = transformNode(context, fragments, scope, selection);
7055
7039
  } else if (selection.kind === 'FragmentSpread') {
7056
7040
  nextSelection = transformFragmentSpread(context, fragments, scope, selection);
7041
+ } else if (selection.kind === 'DeferrableFragmentSpread') {
7042
+ nextSelection = transformDeferrableFragmentSpread(context, fragments, scope, selection);
7057
7043
  } else if (selection.kind === 'Condition') {
7058
7044
  var conditionSelections = transformCondition(context, fragments, scope, selection);
7059
7045
  if (conditionSelections) {
@@ -7167,7 +7153,7 @@ module.exports =
7167
7153
  };
7168
7154
 
7169
7155
  /***/ }),
7170
- /* 63 */
7156
+ /* 62 */
7171
7157
  /***/ (function(module, exports, __webpack_require__) {
7172
7158
 
7173
7159
  /**
@@ -7208,9 +7194,9 @@ module.exports =
7208
7194
 
7209
7195
  // Include username in the cache dir to avoid issues with directories being
7210
7196
  // owned by a different user.
7211
- var username = __webpack_require__(49).userInfo().username;
7212
- var cacheID = __webpack_require__(23).createHash('md5').update(cacheBreaker).update(username).digest('hex');
7213
- this._dir = __webpack_require__(8).join(__webpack_require__(49).tmpdir(), name + '-' + cacheID);
7197
+ var username = __webpack_require__(48).userInfo().username;
7198
+ var cacheID = __webpack_require__(24).createHash('md5').update(cacheBreaker).update(username).digest('hex');
7199
+ this._dir = __webpack_require__(6).join(__webpack_require__(48).tmpdir(), name + '-' + cacheID);
7214
7200
  if (!__webpack_require__(7).existsSync(this._dir)) {
7215
7201
  __webpack_require__(7).mkdirSync(this._dir);
7216
7202
  }
@@ -7220,7 +7206,7 @@ module.exports =
7220
7206
  var _this = this;
7221
7207
 
7222
7208
  return Profiler.run('RelayCompilerCache.getOrCompute', function () {
7223
- var cacheFile = __webpack_require__(8).join(_this._dir, key);
7209
+ var cacheFile = __webpack_require__(6).join(_this._dir, key);
7224
7210
  if (__webpack_require__(7).existsSync(cacheFile)) {
7225
7211
  return JSON.parse(__webpack_require__(7).readFileSync(cacheFile, 'utf8'));
7226
7212
  }
@@ -7236,7 +7222,7 @@ module.exports =
7236
7222
  module.exports = RelayCompilerCache;
7237
7223
 
7238
7224
  /***/ }),
7239
- /* 64 */
7225
+ /* 63 */
7240
7226
  /***/ (function(module, exports) {
7241
7227
 
7242
7228
  /**
@@ -7267,7 +7253,7 @@ module.exports =
7267
7253
  };
7268
7254
 
7269
7255
  /***/ }),
7270
- /* 65 */
7256
+ /* 64 */
7271
7257
  /***/ (function(module, exports, __webpack_require__) {
7272
7258
 
7273
7259
  /**
@@ -7285,7 +7271,7 @@ module.exports =
7285
7271
 
7286
7272
  // TODO T21875029 ../../relay-runtime/util/getRelayHandleKey
7287
7273
 
7288
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7274
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7289
7275
 
7290
7276
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7291
7277
 
@@ -7334,7 +7320,7 @@ module.exports =
7334
7320
  };
7335
7321
 
7336
7322
  /***/ }),
7337
- /* 66 */
7323
+ /* 65 */
7338
7324
  /***/ (function(module, exports, __webpack_require__) {
7339
7325
 
7340
7326
  /**
@@ -7367,10 +7353,10 @@ module.exports =
7367
7353
  Profiler = _require.Profiler,
7368
7354
  SchemaUtils = _require.SchemaUtils;
7369
7355
 
7370
- var _require2 = __webpack_require__(18),
7356
+ var _require2 = __webpack_require__(19),
7371
7357
  ImmutableMap = _require2.Map;
7372
7358
 
7373
- var isOperationDefinitionAST = SchemaUtils.isOperationDefinitionAST;
7359
+ var isExecutableDefinitionAST = SchemaUtils.isExecutableDefinitionAST;
7374
7360
 
7375
7361
  var RelayFileWriter = function () {
7376
7362
  function RelayFileWriter(_ref) {
@@ -7406,7 +7392,7 @@ module.exports =
7406
7392
  var baseDefinitionNames = new Set();
7407
7393
  _this._baseDocuments.forEach(function (doc) {
7408
7394
  doc.definitions.forEach(function (def) {
7409
- if (isOperationDefinitionAST(def) && def.name) {
7395
+ if (isExecutableDefinitionAST(def) && def.name) {
7410
7396
  baseDefinitionNames.add(def.name.value);
7411
7397
  }
7412
7398
  });
@@ -7435,7 +7421,7 @@ module.exports =
7435
7421
  doc.definitions.forEach(function (def) {
7436
7422
  if (def.name) {
7437
7423
  definitionsMeta.set(def.name.value, {
7438
- dir: __webpack_require__(8).join(_this._config.baseDir, __webpack_require__(8).dirname(filePath)),
7424
+ dir: __webpack_require__(6).join(_this._config.baseDir, __webpack_require__(6).dirname(filePath)),
7439
7425
  ast: def
7440
7426
  });
7441
7427
  }
@@ -7444,13 +7430,13 @@ module.exports =
7444
7430
 
7445
7431
  // Verify using local and global rules, can run global verifications here
7446
7432
  // because all files are processed together
7447
- var validationRules = [].concat((0, _toConsumableArray3['default'])(__webpack_require__(44).LOCAL_RULES), (0, _toConsumableArray3['default'])(__webpack_require__(44).GLOBAL_RULES));
7433
+ var validationRules = [].concat((0, _toConsumableArray3['default'])(__webpack_require__(45).LOCAL_RULES), (0, _toConsumableArray3['default'])(__webpack_require__(45).GLOBAL_RULES));
7448
7434
  var customizedValidationRules = _this._config.validationRules;
7449
7435
  if (customizedValidationRules) {
7450
7436
  validationRules = [].concat((0, _toConsumableArray3['default'])(validationRules), (0, _toConsumableArray3['default'])(customizedValidationRules.LOCAL_RULES || []), (0, _toConsumableArray3['default'])(customizedValidationRules.GLOBAL_RULES || []));
7451
7437
  }
7452
7438
 
7453
- var definitions = ASTConvert.convertASTDocumentsWithBase(extendedSchema, _this._baseDocuments.valueSeq().toArray(), _this._documents.valueSeq().toArray(), validationRules, __webpack_require__(22).transform.bind(__webpack_require__(22)));
7439
+ var definitions = ASTConvert.convertASTDocumentsWithBase(extendedSchema, _this._baseDocuments.valueSeq().toArray(), _this._documents.valueSeq().toArray(), validationRules, __webpack_require__(23).transform.bind(__webpack_require__(23)));
7454
7440
 
7455
7441
  var compilerContext = new CompilerContext(_this._baseSchema, extendedSchema).addAll(definitions);
7456
7442
 
@@ -7458,7 +7444,7 @@ module.exports =
7458
7444
  if (configOutputDirectory) {
7459
7445
  return configOutputDirectory;
7460
7446
  }
7461
- var generatedPath = __webpack_require__(8).join(getDefinitionMeta(definitionName).dir, '__generated__');
7447
+ var generatedPath = __webpack_require__(6).join(getDefinitionMeta(definitionName).dir, '__generated__');
7462
7448
  var cachedDir = allOutputDirectories.get(generatedPath);
7463
7449
  if (!cachedDir) {
7464
7450
  cachedDir = addCodegenDir(generatedPath);
@@ -7466,9 +7452,9 @@ module.exports =
7466
7452
  return cachedDir;
7467
7453
  };
7468
7454
 
7469
- var transformedFlowContext = compilerContext.applyTransforms(__webpack_require__(39).flowTransforms, _this._reporter);
7455
+ var transformedFlowContext = compilerContext.applyTransforms(__webpack_require__(40).flowTransforms, _this._reporter);
7470
7456
  var transformedQueryContext = compilerContext.applyTransforms([].concat((0, _toConsumableArray3['default'])(_this._config.compilerTransforms.commonTransforms), (0, _toConsumableArray3['default'])(_this._config.compilerTransforms.queryTransforms)), _this._reporter);
7471
- var artifacts = __webpack_require__(45)(compilerContext, _this._config.compilerTransforms, _this._reporter);
7457
+ var artifacts = __webpack_require__(46)(compilerContext, _this._config.compilerTransforms, _this._reporter);
7472
7458
 
7473
7459
  var existingFragmentNames = new Set(definitions.map(function (definition) {
7474
7460
  return definition.name;
@@ -7501,7 +7487,7 @@ module.exports =
7501
7487
  var flowNode = transformedFlowContext.get(node.name);
7502
7488
  __webpack_require__(1)(flowNode, 'RelayFileWriter: did not compile flow types for: %s', node.name);
7503
7489
 
7504
- var flowTypes = __webpack_require__(39).generate(flowNode, {
7490
+ var flowTypes = __webpack_require__(40).generate(flowNode, {
7505
7491
  customScalars: _this._config.customScalars,
7506
7492
  enumsHasteModule: _this._config.enumsHasteModule,
7507
7493
  existingFragmentNames: existingFragmentNames,
@@ -7564,7 +7550,7 @@ module.exports =
7564
7550
  }();
7565
7551
 
7566
7552
  function md5(x) {
7567
- return __webpack_require__(23).createHash('md5').update(x, 'utf8').digest('hex');
7553
+ return __webpack_require__(24).createHash('md5').update(x, 'utf8').digest('hex');
7568
7554
  }
7569
7555
 
7570
7556
  function validateConfig(config) {
@@ -7576,7 +7562,7 @@ module.exports =
7576
7562
  module.exports = RelayFileWriter;
7577
7563
 
7578
7564
  /***/ }),
7579
- /* 67 */
7565
+ /* 66 */
7580
7566
  /***/ (function(module, exports, __webpack_require__) {
7581
7567
 
7582
7568
  /**
@@ -7592,7 +7578,7 @@ module.exports =
7592
7578
 
7593
7579
  'use strict';
7594
7580
 
7595
- var _require = __webpack_require__(38),
7581
+ var _require = __webpack_require__(39),
7596
7582
  readOnlyArrayOfType = _require.readOnlyArrayOfType;
7597
7583
 
7598
7584
  var _require2 = __webpack_require__(3),
@@ -7690,7 +7676,7 @@ module.exports =
7690
7676
  };
7691
7677
 
7692
7678
  /***/ }),
7693
- /* 68 */
7679
+ /* 67 */
7694
7680
  /***/ (function(module, exports, __webpack_require__) {
7695
7681
 
7696
7682
  /**
@@ -7706,13 +7692,13 @@ module.exports =
7706
7692
 
7707
7693
  'use strict';
7708
7694
 
7709
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7695
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7710
7696
 
7711
7697
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
7712
7698
 
7713
7699
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7714
7700
 
7715
- var _require = __webpack_require__(43),
7701
+ var _require = __webpack_require__(44),
7716
7702
  hasUnaliasedSelection = _require.hasUnaliasedSelection;
7717
7703
 
7718
7704
  var _require2 = __webpack_require__(3),
@@ -7826,7 +7812,7 @@ module.exports =
7826
7812
  };
7827
7813
 
7828
7814
  /***/ }),
7829
- /* 69 */
7815
+ /* 68 */
7830
7816
  /***/ (function(module, exports, __webpack_require__) {
7831
7817
 
7832
7818
  /**
@@ -7848,27 +7834,28 @@ module.exports =
7848
7834
  InlineFragmentsTransform = _require.InlineFragmentsTransform,
7849
7835
  SkipClientFieldTransform = _require.SkipClientFieldTransform,
7850
7836
  SkipRedundantNodesTransform = _require.SkipRedundantNodesTransform,
7851
- SkipUnreachableNodeTransform = _require.SkipUnreachableNodeTransform;
7837
+ SkipUnreachableNodeTransform = _require.SkipUnreachableNodeTransform,
7838
+ StripUnusedVariablesTransform = _require.StripUnusedVariablesTransform;
7852
7839
 
7853
7840
  // Transforms applied to the code used to process a query response.
7854
- var relaySchemaExtensions = [__webpack_require__(35).SCHEMA_EXTENSION, __webpack_require__(26).SCHEMA_EXTENSION];
7841
+ var relaySchemaExtensions = [__webpack_require__(36).SCHEMA_EXTENSION, __webpack_require__(28).SCHEMA_EXTENSION];
7855
7842
 
7856
7843
  // Transforms applied to both operations and fragments for both reading and
7857
7844
  // writing from the store.
7858
- var relayCommonTransforms = [__webpack_require__(35).transform, __webpack_require__(71).transform, __webpack_require__(26).transform, __webpack_require__(42).transform, __webpack_require__(37).transformOperations];
7845
+ var relayCommonTransforms = [__webpack_require__(36).transform, __webpack_require__(70).transform, __webpack_require__(28).transform, __webpack_require__(43).transform, __webpack_require__(38).transformOperations];
7859
7846
 
7860
7847
  // Transforms applied to fragments used for reading data from a store
7861
- var relayFragmentTransforms = [__webpack_require__(65).transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform];
7848
+ var relayFragmentTransforms = [__webpack_require__(64).transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform];
7862
7849
 
7863
7850
  // Transforms applied to queries/mutations/subscriptions that are used for
7864
7851
  // fetching data from the server and parsing those responses.
7865
- var relayQueryTransforms = [__webpack_require__(37).transformSpreads, __webpack_require__(62).transform, SkipClientFieldTransform.transform, SkipUnreachableNodeTransform.transform, __webpack_require__(68).transform];
7852
+ var relayQueryTransforms = [__webpack_require__(38).transformSpreads, __webpack_require__(61).transform, SkipClientFieldTransform.transform, SkipUnreachableNodeTransform.transform, __webpack_require__(67).transform];
7866
7853
 
7867
7854
  // Transforms applied to the code used to process a query response.
7868
- var relayCodegenTransforms = [InlineFragmentsTransform.transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform, __webpack_require__(40).transform, FilterDirectivesTransform.transform];
7855
+ var relayCodegenTransforms = [InlineFragmentsTransform.transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform, __webpack_require__(41).transform, FilterDirectivesTransform.transform];
7869
7856
 
7870
7857
  // Transforms applied before printing the query sent to the server.
7871
- var relayPrintTransforms = [FlattenTransform.transformWithOptions({}), __webpack_require__(40).transform, __webpack_require__(70).transform, FilterDirectivesTransform.transform];
7858
+ var relayPrintTransforms = [FlattenTransform.transformWithOptions({}), __webpack_require__(41).transform, __webpack_require__(69).transform, FilterDirectivesTransform.transform, StripUnusedVariablesTransform.transform];
7872
7859
 
7873
7860
  module.exports = {
7874
7861
  commonTransforms: relayCommonTransforms,
@@ -7880,7 +7867,7 @@ module.exports =
7880
7867
  };
7881
7868
 
7882
7869
  /***/ }),
7883
- /* 70 */
7870
+ /* 69 */
7884
7871
  /***/ (function(module, exports, __webpack_require__) {
7885
7872
 
7886
7873
  /**
@@ -7896,7 +7883,7 @@ module.exports =
7896
7883
 
7897
7884
  'use strict';
7898
7885
 
7899
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7886
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7900
7887
 
7901
7888
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7902
7889
 
@@ -7930,7 +7917,7 @@ module.exports =
7930
7917
  };
7931
7918
 
7932
7919
  /***/ }),
7933
- /* 71 */
7920
+ /* 70 */
7934
7921
  /***/ (function(module, exports, __webpack_require__) {
7935
7922
 
7936
7923
  /**
@@ -7948,13 +7935,13 @@ module.exports =
7948
7935
 
7949
7936
  // TODO T21875029 ../../../relay-runtime/util/RelayDefaultHandleKey
7950
7937
 
7951
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7938
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7952
7939
 
7953
7940
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
7954
7941
 
7955
7942
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7956
7943
 
7957
- var _require = __webpack_require__(36),
7944
+ var _require = __webpack_require__(37),
7958
7945
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
7959
7946
 
7960
7947
  var _require2 = __webpack_require__(3),
@@ -8011,7 +7998,7 @@ module.exports =
8011
7998
  };
8012
7999
 
8013
8000
  /***/ }),
8014
- /* 72 */
8001
+ /* 71 */
8015
8002
  /***/ (function(module, exports, __webpack_require__) {
8016
8003
 
8017
8004
  /**
@@ -8177,7 +8164,7 @@ module.exports =
8177
8164
  };
8178
8165
 
8179
8166
  /***/ }),
8180
- /* 73 */
8167
+ /* 72 */
8181
8168
  /***/ (function(module, exports, __webpack_require__) {
8182
8169
 
8183
8170
  /**
@@ -8193,13 +8180,13 @@ module.exports =
8193
8180
 
8194
8181
  'use strict';
8195
8182
 
8196
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
8183
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
8197
8184
 
8198
8185
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
8199
8186
 
8200
8187
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8201
8188
 
8202
- var IMap = __webpack_require__(18).Map;
8189
+ var IMap = __webpack_require__(19).Map;
8203
8190
 
8204
8191
  /**
8205
8192
  * A transform that removes redundant fields and fragment spreads. Redundancy is
@@ -8330,6 +8317,7 @@ module.exports =
8330
8317
  var identifier = __webpack_require__(47)(selection);
8331
8318
  switch (selection.kind) {
8332
8319
  case 'ScalarField':
8320
+ case 'DeferrableFragmentSpread':
8333
8321
  case 'FragmentSpread':
8334
8322
  {
8335
8323
  if (!selectionMap.has(identifier)) {
@@ -8381,7 +8369,7 @@ module.exports =
8381
8369
  };
8382
8370
 
8383
8371
  /***/ }),
8384
- /* 74 */
8372
+ /* 73 */
8385
8373
  /***/ (function(module, exports, __webpack_require__) {
8386
8374
 
8387
8375
  /**
@@ -8397,7 +8385,7 @@ module.exports =
8397
8385
 
8398
8386
  'use strict';
8399
8387
 
8400
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
8388
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
8401
8389
 
8402
8390
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
8403
8391
 
@@ -8446,8 +8434,8 @@ module.exports =
8446
8434
  nextSelection = transformNode(context, fragments, selection);
8447
8435
  }
8448
8436
  break;
8449
- case 'FragmentSpread':
8450
- // Skip fragment spreads if the referenced fragment is empty
8437
+ case 'DeferrableFragmentSpread':
8438
+ // Skip deferred fragment spreads if the referenced fragment is empty
8451
8439
  if (!fragments.has(selection.name)) {
8452
8440
  var fragment = context.getFragment(selection.name);
8453
8441
  var nextFragment = transformNode(context, fragments, fragment);
@@ -8457,6 +8445,17 @@ module.exports =
8457
8445
  nextSelection = selection;
8458
8446
  }
8459
8447
  break;
8448
+ case 'FragmentSpread':
8449
+ // Skip fragment spreads if the referenced fragment is empty
8450
+ if (!fragments.has(selection.name)) {
8451
+ var _fragment = context.getFragment(selection.name);
8452
+ var _nextFragment = transformNode(context, fragments, _fragment);
8453
+ fragments.set(selection.name, _nextFragment);
8454
+ }
8455
+ if (fragments.get(selection.name)) {
8456
+ nextSelection = selection;
8457
+ }
8458
+ break;
8460
8459
  case 'LinkedField':
8461
8460
  nextSelection = transformNode(context, fragments, selection);
8462
8461
  break;
@@ -8500,7 +8499,7 @@ module.exports =
8500
8499
  };
8501
8500
 
8502
8501
  /***/ }),
8503
- /* 75 */
8502
+ /* 74 */
8504
8503
  /***/ (function(module, exports, __webpack_require__) {
8505
8504
 
8506
8505
  /**
@@ -8566,7 +8565,7 @@ module.exports =
8566
8565
  };
8567
8566
 
8568
8567
  /***/ }),
8569
- /* 76 */
8568
+ /* 75 */
8570
8569
  /***/ (function(module, exports, __webpack_require__) {
8571
8570
 
8572
8571
  /**
@@ -8582,7 +8581,7 @@ module.exports =
8582
8581
 
8583
8582
  'use strict';
8584
8583
 
8585
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
8584
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
8586
8585
 
8587
8586
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8588
8587
 
@@ -8591,9 +8590,59 @@ module.exports =
8591
8590
  * by the query itself.
8592
8591
  */
8593
8592
  function stripUnusedVariablesTransform(context) {
8593
+ var fragmentToVariables = new Map();
8594
+ var fragmentToFragmentSpreads = new Map();
8595
+ var rootToVariables = new Map();
8596
+ var rootToFragmentSpreads = new Map();
8597
+ context.forEachDocument(function (document) {
8598
+ var fragmentVariables = void 0;
8599
+ var fragmentFragmentSpreads = void 0;
8600
+ var rootVariables = void 0;
8601
+ var rootFragmentSpreads = void 0;
8602
+ __webpack_require__(27).visit(document, {
8603
+ Root: {
8604
+ enter: function enter(root) {
8605
+ rootVariables = new Set();
8606
+ rootToVariables.set(root.name, rootVariables);
8607
+ rootFragmentSpreads = new Set();
8608
+ rootToFragmentSpreads.set(root.name, rootFragmentSpreads);
8609
+ },
8610
+ leave: function leave(root) {
8611
+ rootVariables = null;
8612
+ rootFragmentSpreads = null;
8613
+ }
8614
+ },
8615
+ Fragment: {
8616
+ enter: function enter(fragment) {
8617
+ fragmentVariables = new Set();
8618
+ fragmentToVariables.set(fragment.name, fragmentVariables);
8619
+ fragmentFragmentSpreads = new Set();
8620
+ fragmentToFragmentSpreads.set(fragment.name, fragmentFragmentSpreads);
8621
+ },
8622
+ leave: function leave(fragment) {
8623
+ fragmentVariables = null;
8624
+ fragmentFragmentSpreads = null;
8625
+ }
8626
+ },
8627
+ Variable: function Variable(variable) {
8628
+ fragmentVariables && fragmentVariables.add(variable.variableName);
8629
+ rootVariables && rootVariables.add(variable.variableName);
8630
+ },
8631
+ FragmentSpread: function FragmentSpread(spread) {
8632
+ fragmentFragmentSpreads && fragmentFragmentSpreads.add(spread.name);
8633
+ rootFragmentSpreads && rootFragmentSpreads.add(spread.name);
8634
+ }
8635
+ });
8636
+ });
8637
+ var variablesMemo = new Map();
8638
+ rootToVariables.forEach(function (variables, root) {
8639
+ Array.from(__webpack_require__(15)(rootToFragmentSpreads.get(root), 'root ' + root + ' wasn\'t found in StripUnusedVariablesTransform')).forEach(function (spread) {
8640
+ return into(variables, allVariablesReferencedInFragment(variablesMemo, spread, fragmentToVariables, fragmentToFragmentSpreads));
8641
+ });
8642
+ });
8594
8643
  return __webpack_require__(12).transform(context, {
8595
8644
  Root: function Root(root) {
8596
- return transformRoot(context, root);
8645
+ return transformRoot(context, root, __webpack_require__(15)(rootToVariables.get(root.name), 'root ' + root.name + ' wasn\'t found in StripUnusedVariablesTransform'));
8597
8646
  },
8598
8647
  // Include fragments, but do not traverse into them.
8599
8648
  Fragment: function Fragment(id) {
@@ -8602,43 +8651,32 @@ module.exports =
8602
8651
  });
8603
8652
  }
8604
8653
 
8605
- function transformRoot(context, root) {
8606
- var state = {
8607
- referencedVariables: new Set()
8608
- };
8609
- var newContext = __webpack_require__(12).transform(__webpack_require__(46)(root, context), {
8610
- Argument: visitArgument,
8611
- Condition: visitCondition
8612
- }, function () {
8613
- return state;
8614
- });
8615
- var transformedNode = newContext.getRoot(root.name);
8616
- /**
8617
- * Remove the extraneous arguments *after* transform returns, since fragments
8618
- * could be transformed after the root query.
8619
- */
8620
- return (0, _extends3['default'])({}, transformedNode, {
8621
- argumentDefinitions: transformedNode.argumentDefinitions.filter(function (arg) {
8622
- return state.referencedVariables.has(arg.name);
8623
- })
8624
- });
8654
+ function allVariablesReferencedInFragment(variablesMemo, fragment, fragmentToVariables, fragmentToFragmentSpreads) {
8655
+ var variables = variablesMemo.get(fragment);
8656
+ if (!variables) {
8657
+ var directVariables = __webpack_require__(15)(fragmentToVariables.get(fragment), 'fragment ' + fragment + ' wasn\'t found in StripUnusedVariablesTransform');
8658
+ variables = Array.from(__webpack_require__(15)(fragmentToFragmentSpreads.get(fragment), 'fragment ' + fragment + ' wasn\'t found in StripUnusedVariablesTransform')).reduce(function (allVariables, fragmentSpread) {
8659
+ return into(allVariables, allVariablesReferencedInFragment(variablesMemo, fragmentSpread, fragmentToVariables, fragmentToFragmentSpreads));
8660
+ }, directVariables);
8661
+ variablesMemo.set(fragment, variables);
8662
+ }
8663
+ return variables;
8625
8664
  }
8626
8665
 
8627
- function visitArgument(argument, state) {
8628
- var value = argument.value;
8629
-
8630
- if (value.kind === 'Variable') {
8631
- state.referencedVariables.add(value.variableName);
8632
- }
8633
- return argument;
8666
+ function transformRoot(context, root, variables) {
8667
+ return (0, _extends3['default'])({}, root, {
8668
+ argumentDefinitions: root.argumentDefinitions.filter(function (arg) {
8669
+ return variables.has(arg.name);
8670
+ })
8671
+ });
8634
8672
  }
8635
8673
 
8636
- function visitCondition(condition, state) {
8637
- var innerCondition = condition.condition;
8638
- if (innerCondition.kind === 'Variable') {
8639
- state.referencedVariables.add(innerCondition.variableName);
8640
- }
8641
- return condition;
8674
+ // Returns the union of setA and setB. Modifies setA!
8675
+ function into(setA, setB) {
8676
+ setB.forEach(function (item) {
8677
+ return setA.add(item);
8678
+ });
8679
+ return setA;
8642
8680
  }
8643
8681
 
8644
8682
  module.exports = {
@@ -8646,7 +8684,7 @@ module.exports =
8646
8684
  };
8647
8685
 
8648
8686
  /***/ }),
8649
- /* 77 */
8687
+ /* 76 */
8650
8688
  /***/ (function(module, exports) {
8651
8689
 
8652
8690
  /**
@@ -8765,7 +8803,7 @@ module.exports =
8765
8803
  module.exports = areEqual;
8766
8804
 
8767
8805
  /***/ }),
8768
- /* 78 */
8806
+ /* 77 */
8769
8807
  /***/ (function(module, exports) {
8770
8808
 
8771
8809
  /**
@@ -8902,7 +8940,7 @@ module.exports =
8902
8940
  module.exports = dedupeJSONStringify;
8903
8941
 
8904
8942
  /***/ }),
8905
- /* 79 */
8943
+ /* 78 */
8906
8944
  /***/ (function(module, exports) {
8907
8945
 
8908
8946
  /**
@@ -8974,6 +9012,52 @@ module.exports =
8974
9012
 
8975
9013
  module.exports = deepMergeAssignments;
8976
9014
 
9015
+ /***/ }),
9016
+ /* 79 */
9017
+ /***/ (function(module, exports, __webpack_require__) {
9018
+
9019
+ /**
9020
+ * Copyright (c) 2013-present, Facebook, Inc.
9021
+ *
9022
+ * This source code is licensed under the MIT license found in the
9023
+ * LICENSE file in the root directory of this source tree.
9024
+ *
9025
+ * @providesModule filterContextForNode
9026
+ *
9027
+ * @format
9028
+ */
9029
+
9030
+ 'use strict';
9031
+
9032
+ var _require = __webpack_require__(27),
9033
+ visit = _require.visit;
9034
+
9035
+ /**
9036
+ * Returns a GraphQLCompilerContext containing only the documents referenced
9037
+ * by and including the provided node.
9038
+ */
9039
+ function filterContextForNode(node, context) {
9040
+ var queue = [node];
9041
+ var filteredContext = new (__webpack_require__(25))(context.serverSchema, context.clientSchema).add(node);
9042
+ var visitorConfig = {
9043
+ FragmentSpread: function FragmentSpread(fragmentSpread) {
9044
+ var name = fragmentSpread.name;
9045
+
9046
+ if (!filteredContext.get(name)) {
9047
+ var fragment = context.getFragment(name);
9048
+ filteredContext = filteredContext.add(fragment);
9049
+ queue.push(fragment);
9050
+ }
9051
+ }
9052
+ };
9053
+ while (queue.length) {
9054
+ visit(queue.pop(), visitorConfig);
9055
+ }
9056
+ return filteredContext;
9057
+ }
9058
+
9059
+ module.exports = filterContextForNode;
9060
+
8977
9061
  /***/ }),
8978
9062
  /* 80 */
8979
9063
  /***/ (function(module, exports) {
@@ -9108,13 +9192,13 @@ module.exports =
9108
9192
  function getModuleName(filePath) {
9109
9193
  // index.js -> index
9110
9194
  // index.js.flow -> index.js
9111
- var filename = __webpack_require__(8).basename(filePath, __webpack_require__(8).extname(filePath));
9195
+ var filename = __webpack_require__(6).basename(filePath, __webpack_require__(6).extname(filePath));
9112
9196
 
9113
9197
  // index.js -> index (when extension has multiple segments)
9114
9198
  filename = filename.replace(/(?:\.\w+)+/, '');
9115
9199
 
9116
9200
  // /path/to/button/index.js -> button
9117
- var moduleName = filename === 'index' ? __webpack_require__(8).basename(__webpack_require__(8).dirname(filePath)) : filename;
9201
+ var moduleName = filename === 'index' ? __webpack_require__(6).basename(__webpack_require__(6).dirname(filePath)) : filename;
9118
9202
 
9119
9203
  // Example.ios -> Example
9120
9204
  // Example.product.android -> Example
@@ -9148,7 +9232,7 @@ module.exports =
9148
9232
 
9149
9233
  'use strict';
9150
9234
 
9151
- var _require = __webpack_require__(36),
9235
+ var _require = __webpack_require__(37),
9152
9236
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
9153
9237
 
9154
9238
  /**
@@ -9336,7 +9420,7 @@ module.exports =
9336
9420
 
9337
9421
  'use strict';
9338
9422
 
9339
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
9423
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
9340
9424
 
9341
9425
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
9342
9426
 
@@ -9463,7 +9547,7 @@ module.exports =
9463
9547
 
9464
9548
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
9465
9549
 
9466
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
9550
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
9467
9551
 
9468
9552
  let writeRelayGeneratedFile = (() => {
9469
9553
  var _ref = (0, _asyncToGenerator3.default)(function* (codegenDir, generatedNode, formatModule, flowText, _persistQuery, platform, relayRuntimeModule, sourceHash) {
@@ -9489,7 +9573,7 @@ module.exports =
9489
9573
  var oldHash = Profiler.run('RelayFileWriter:compareHash', function () {
9490
9574
  var oldContent = codegenDir.read(filename);
9491
9575
  // Hash the concrete node including the query text.
9492
- var hasher = __webpack_require__(23).createHash('md5');
9576
+ var hasher = __webpack_require__(24).createHash('md5');
9493
9577
  hasher.update('cache-breaker-6');
9494
9578
  hasher.update(JSON.stringify(generatedNode));
9495
9579
  if (flowText) {
@@ -9515,7 +9599,7 @@ module.exports =
9515
9599
  devOnlyProperties.text = generatedNode.text;
9516
9600
  generatedNode = (0, _extends3['default'])({}, generatedNode, {
9517
9601
  text: null,
9518
- id: yield persistQuery(__webpack_require__(17)(generatedNode.text))
9602
+ id: yield persistQuery(__webpack_require__(18)(generatedNode.text))
9519
9603
  });
9520
9604
  break;
9521
9605
  case __webpack_require__(11).BATCH_REQUEST:
@@ -9529,7 +9613,7 @@ module.exports =
9529
9613
  var _ref2 = (0, _asyncToGenerator3.default)(function* (request) {
9530
9614
  return (0, _extends3['default'])({}, request, {
9531
9615
  text: null,
9532
- id: yield persistQuery(__webpack_require__(17)(request.text))
9616
+ id: yield persistQuery(__webpack_require__(18)(request.text))
9533
9617
  });
9534
9618
  });
9535
9619
 
@@ -9548,7 +9632,7 @@ module.exports =
9548
9632
  }
9549
9633
  }
9550
9634
 
9551
- var devOnlyAssignments = __webpack_require__(79)('node', devOnlyProperties);
9635
+ var devOnlyAssignments = __webpack_require__(78)('node', devOnlyProperties);
9552
9636
 
9553
9637
  var moduleText = formatModule({
9554
9638
  moduleName: moduleName,
@@ -9556,7 +9640,7 @@ module.exports =
9556
9640
  docText: docText,
9557
9641
  flowText: flowText,
9558
9642
  hash: hash ? '@relayHash ' + hash : null,
9559
- concreteText: __webpack_require__(78)(generatedNode),
9643
+ concreteText: __webpack_require__(77)(generatedNode),
9560
9644
  devOnlyAssignments: devOnlyAssignments,
9561
9645
  relayRuntimeModule: relayRuntimeModule,
9562
9646
  sourceHash: sourceHash