relay-compiler 1.5.0-rc.1 → 1.5.0

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