relay-compiler 1.5.0-rc.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
package/relay-compiler.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v1.5.0-rc.1
2
+ * Relay v1.5.0
3
3
  */
4
4
  module.exports =
5
5
  /******/ (function(modules) { // webpackBootstrap
@@ -69,20 +69,20 @@ module.exports =
69
69
 
70
70
  module.exports = {
71
71
  ConsoleReporter: ConsoleReporter,
72
- Parser: __webpack_require__(22),
73
- CodeGenerator: __webpack_require__(33),
72
+ Parser: __webpack_require__(23),
73
+ CodeGenerator: __webpack_require__(34),
74
74
 
75
- GraphQLCompilerContext: __webpack_require__(24),
75
+ GraphQLCompilerContext: __webpack_require__(25),
76
76
 
77
77
  /** @deprecated Use JSModuleParser. */
78
- FileIRParser: __webpack_require__(41),
78
+ FileIRParser: __webpack_require__(42),
79
79
 
80
- FileWriter: __webpack_require__(66),
81
- IRTransforms: __webpack_require__(69),
82
- JSModuleParser: __webpack_require__(41),
80
+ FileWriter: __webpack_require__(65),
81
+ IRTransforms: __webpack_require__(68),
82
+ JSModuleParser: __webpack_require__(42),
83
83
  MultiReporter: MultiReporter,
84
84
  Runner: CodegenRunner,
85
- compileRelayArtifacts: __webpack_require__(45),
85
+ compileRelayArtifacts: __webpack_require__(46),
86
86
  formatGeneratedModule: __webpack_require__(80),
87
87
  convertASTDocuments: ASTConvert.convertASTDocuments,
88
88
  transformASTSchema: ASTConvert.transformASTSchema
@@ -123,41 +123,41 @@ module.exports =
123
123
 
124
124
  'use strict';
125
125
 
126
- var _require = __webpack_require__(75),
126
+ var _require = __webpack_require__(74),
127
127
  SourceControlMercurial = _require.SourceControlMercurial;
128
128
 
129
129
  module.exports = {
130
- ASTConvert: __webpack_require__(51),
131
- CodegenDirectory: __webpack_require__(19),
132
- CodegenRunner: __webpack_require__(52),
133
- CodegenWatcher: __webpack_require__(20),
134
- CompilerContext: __webpack_require__(24),
135
- ConsoleReporter: __webpack_require__(57),
136
- DotGraphQLParser: __webpack_require__(53),
137
- ASTCache: __webpack_require__(28),
130
+ ASTConvert: __webpack_require__(50),
131
+ CodegenDirectory: __webpack_require__(20),
132
+ CodegenRunner: __webpack_require__(51),
133
+ CodegenWatcher: __webpack_require__(21),
134
+ CompilerContext: __webpack_require__(25),
135
+ ConsoleReporter: __webpack_require__(56),
136
+ DotGraphQLParser: __webpack_require__(52),
137
+ ASTCache: __webpack_require__(30),
138
138
  IRTransformer: __webpack_require__(12),
139
- IRVisitor: __webpack_require__(31),
140
- MultiReporter: __webpack_require__(58),
141
- Parser: __webpack_require__(59),
142
- Printer: __webpack_require__(25),
139
+ IRVisitor: __webpack_require__(27),
140
+ MultiReporter: __webpack_require__(57),
141
+ Parser: __webpack_require__(58),
142
+ Printer: __webpack_require__(26),
143
143
  Profiler: __webpack_require__(5),
144
144
  SchemaUtils: __webpack_require__(14),
145
145
  SourceControlMercurial: SourceControlMercurial,
146
- Validator: __webpack_require__(32),
147
- WatchmanClient: __webpack_require__(21),
148
- filterContextForNode: __webpack_require__(46),
146
+ Validator: __webpack_require__(33),
147
+ WatchmanClient: __webpack_require__(22),
148
+ filterContextForNode: __webpack_require__(79),
149
149
  getIdentifierForArgumentValue: __webpack_require__(81),
150
150
  getLiteralArgumentValues: __webpack_require__(82),
151
151
  isEquivalentType: __webpack_require__(85),
152
- nullthrows: __webpack_require__(48),
153
-
154
- FilterDirectivesTransform: __webpack_require__(54),
155
- FlattenTransform: __webpack_require__(56),
156
- InlineFragmentsTransform: __webpack_require__(60),
157
- SkipClientFieldTransform: __webpack_require__(72),
158
- SkipRedundantNodesTransform: __webpack_require__(73),
159
- SkipUnreachableNodeTransform: __webpack_require__(74),
160
- StripUnusedVariablesTransform: __webpack_require__(76)
152
+ nullthrows: __webpack_require__(15),
153
+
154
+ FilterDirectivesTransform: __webpack_require__(53),
155
+ FlattenTransform: __webpack_require__(55),
156
+ InlineFragmentsTransform: __webpack_require__(59),
157
+ SkipClientFieldTransform: __webpack_require__(71),
158
+ SkipRedundantNodesTransform: __webpack_require__(72),
159
+ SkipUnreachableNodeTransform: __webpack_require__(73),
160
+ StripUnusedVariablesTransform: __webpack_require__(75)
161
161
  };
162
162
 
163
163
  /***/ }),
@@ -440,7 +440,7 @@ module.exports =
440
440
  /* 6 */
441
441
  /***/ (function(module, exports) {
442
442
 
443
- module.exports = require("babel-runtime/helpers/extends");
443
+ module.exports = require("path");
444
444
 
445
445
  /***/ }),
446
446
  /* 7 */
@@ -452,7 +452,7 @@ module.exports =
452
452
  /* 8 */
453
453
  /***/ (function(module, exports) {
454
454
 
455
- module.exports = require("path");
455
+ module.exports = require("babel-runtime/helpers/extends");
456
456
 
457
457
  /***/ }),
458
458
  /* 9 */
@@ -549,7 +549,7 @@ module.exports =
549
549
 
550
550
  'use strict';
551
551
 
552
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
552
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
553
553
 
554
554
  var _classCallCheck3 = _interopRequireDefault(__webpack_require__(10));
555
555
 
@@ -732,12 +732,20 @@ module.exports =
732
732
  nextNode = this._traverseChildren(prevNode, ['fields']);
733
733
  break;
734
734
  case 'Condition':
735
+ nextNode = this._traverseChildren(prevNode, ['directives', 'selections'], ['condition']);
736
+ if (!nextNode.selections.length) {
737
+ nextNode = null;
738
+ }
739
+ break;
735
740
  case 'InlineFragment':
736
741
  nextNode = this._traverseChildren(prevNode, ['directives', 'selections']);
737
742
  if (!nextNode.selections.length) {
738
743
  nextNode = null;
739
744
  }
740
745
  break;
746
+ case 'DeferrableFragmentSpread':
747
+ nextNode = this._traverseChildren(prevNode, ['args', 'fragmentArgs', 'directives']);
748
+ break;
741
749
  case 'Fragment':
742
750
  case 'Root':
743
751
  nextNode = this._traverseChildren(prevNode, ['argumentDefinitions', 'directives', 'selections']);
@@ -897,7 +905,7 @@ module.exports =
897
905
  * Get the unmodified type, with list/null wrappers removed.
898
906
  */
899
907
  function getRawType(type) {
900
- return __webpack_require__(48)(getNamedType(type));
908
+ return __webpack_require__(15)(getNamedType(type));
901
909
  }
902
910
 
903
911
  /**
@@ -951,7 +959,7 @@ module.exports =
951
959
  *
952
960
  * Determine if an AST node contains a fragment/operation definition.
953
961
  */
954
- function isOperationDefinitionAST(ast) {
962
+ function isExecutableDefinitionAST(ast) {
955
963
  return ast.kind === 'FragmentDefinition' || ast.kind === 'OperationDefinition';
956
964
  }
957
965
 
@@ -991,7 +999,7 @@ module.exports =
991
999
  implementsInterface: implementsInterface,
992
1000
  isAbstractType: isAbstractType,
993
1001
  isUnionType: isUnionType,
994
- isOperationDefinitionAST: isOperationDefinitionAST,
1002
+ isExecutableDefinitionAST: isExecutableDefinitionAST,
995
1003
  isSchemaDefinitionAST: isSchemaDefinitionAST,
996
1004
  mayImplement: mayImplement
997
1005
  };
@@ -1000,28 +1008,57 @@ module.exports =
1000
1008
  /* 15 */
1001
1009
  /***/ (function(module, exports) {
1002
1010
 
1003
- module.exports = require("babel-generator/lib/printer");
1011
+ /**
1012
+ * Copyright (c) 2013-present, Facebook, Inc.
1013
+ *
1014
+ * This source code is licensed under the MIT license found in the
1015
+ * LICENSE file in the root directory of this source tree.
1016
+ *
1017
+ * @providesModule nullthrowsOSS
1018
+ *
1019
+ * @format
1020
+ */
1021
+ 'use strict';
1022
+
1023
+ var nullthrows = function nullthrows(x) {
1024
+ var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Got unexpected null or undefined';
1025
+
1026
+ if (x != null) {
1027
+ return x;
1028
+ }
1029
+ var error = new Error(message);
1030
+ error.framesToPop = 1; // Skip nullthrows own stack frame.
1031
+ throw error;
1032
+ };
1033
+
1034
+ module.exports = nullthrows;
1004
1035
 
1005
1036
  /***/ }),
1006
1037
  /* 16 */
1007
1038
  /***/ (function(module, exports) {
1008
1039
 
1009
- module.exports = require("chalk");
1040
+ module.exports = require("babel-generator/lib/printer");
1010
1041
 
1011
1042
  /***/ }),
1012
1043
  /* 17 */
1013
1044
  /***/ (function(module, exports) {
1014
1045
 
1015
- module.exports = require("fbjs/lib/nullthrows");
1046
+ module.exports = require("chalk");
1016
1047
 
1017
1048
  /***/ }),
1018
1049
  /* 18 */
1019
1050
  /***/ (function(module, exports) {
1020
1051
 
1021
- module.exports = require("immutable");
1052
+ module.exports = require("fbjs/lib/nullthrows");
1022
1053
 
1023
1054
  /***/ }),
1024
1055
  /* 19 */
1056
+ /***/ (function(module, exports) {
1057
+
1058
+ module.exports = require("immutable");
1059
+
1060
+ /***/ }),
1061
+ /* 20 */
1025
1062
  /***/ (function(module, exports, __webpack_require__) {
1026
1063
 
1027
1064
  /**
@@ -1082,7 +1119,15 @@ module.exports =
1082
1119
  if (__webpack_require__(7).existsSync(dir)) {
1083
1120
  __webpack_require__(1)(__webpack_require__(7).statSync(dir).isDirectory(), 'Expected `%s` to be a directory.', dir);
1084
1121
  } else if (!this.onlyValidate) {
1085
- __webpack_require__(7).mkdirSync(dir);
1122
+ var dirs = [dir];
1123
+ var parent = __webpack_require__(6).dirname(dir);
1124
+ while (!__webpack_require__(7).existsSync(parent)) {
1125
+ dirs.unshift(parent);
1126
+ parent = __webpack_require__(6).dirname(parent);
1127
+ }
1128
+ dirs.forEach(function (d) {
1129
+ return __webpack_require__(7).mkdirSync(d);
1130
+ });
1086
1131
  }
1087
1132
  this._files = new Set();
1088
1133
  this.changes = {
@@ -1171,7 +1216,7 @@ module.exports =
1171
1216
  };
1172
1217
 
1173
1218
  CodegenDirectory.prototype.read = function read(filename) {
1174
- var filePath = __webpack_require__(8).join(this._dir, filename);
1219
+ var filePath = __webpack_require__(6).join(this._dir, filename);
1175
1220
  if (__webpack_require__(7).existsSync(filePath)) {
1176
1221
  return __webpack_require__(7).readFileSync(filePath, 'utf8');
1177
1222
  }
@@ -1200,7 +1245,7 @@ module.exports =
1200
1245
 
1201
1246
  __webpack_require__(5).run('CodegenDirectory.writeFile', function () {
1202
1247
  _this._addGenerated(filename);
1203
- var filePath = __webpack_require__(8).join(_this._dir, filename);
1248
+ var filePath = __webpack_require__(6).join(_this._dir, filename);
1204
1249
  if (__webpack_require__(7).existsSync(filePath)) {
1205
1250
  var existingContent = __webpack_require__(7).readFileSync(filePath, 'utf8');
1206
1251
  if (existingContent === content) {
@@ -1236,7 +1281,7 @@ module.exports =
1236
1281
  if (!_this2._files.has(actualFile) && !/^\./.test(actualFile)) {
1237
1282
  if (!_this2.onlyValidate) {
1238
1283
  try {
1239
- __webpack_require__(7).unlinkSync(__webpack_require__(8).join(_this2._dir, actualFile));
1284
+ __webpack_require__(7).unlinkSync(__webpack_require__(6).join(_this2._dir, actualFile));
1240
1285
  } catch (e) {
1241
1286
  throw new Error('CodegenDirectory: Failed to delete `' + actualFile + '` in `' + _this2._dir + '`.');
1242
1287
  }
@@ -1248,7 +1293,7 @@ module.exports =
1248
1293
  };
1249
1294
 
1250
1295
  CodegenDirectory.prototype.getPath = function getPath(filename) {
1251
- return __webpack_require__(8).join(this._dir, filename);
1296
+ return __webpack_require__(6).join(this._dir, filename);
1252
1297
  };
1253
1298
 
1254
1299
  CodegenDirectory.prototype._addGenerated = function _addGenerated(filename) {
@@ -1262,7 +1307,7 @@ module.exports =
1262
1307
  module.exports = CodegenDirectory;
1263
1308
 
1264
1309
  /***/ }),
1265
- /* 20 */
1310
+ /* 21 */
1266
1311
  /***/ (function(module, exports, __webpack_require__) {
1267
1312
 
1268
1313
  /**
@@ -1284,7 +1329,7 @@ module.exports =
1284
1329
  let queryFiles = (() => {
1285
1330
  var _ref3 = (0, _asyncToGenerator3.default)(function* (baseDir, expression, filter) {
1286
1331
  return yield __webpack_require__(5).waitFor('Watchman:query', (0, _asyncToGenerator3.default)(function* () {
1287
- var client = new (__webpack_require__(21))();
1332
+ var client = new (__webpack_require__(22))();
1288
1333
 
1289
1334
  var _ref = yield Promise.all([client.watchProject(baseDir), getFields(client)]),
1290
1335
  watchResp = _ref[0],
@@ -1351,7 +1396,7 @@ module.exports =
1351
1396
  let watch = (() => {
1352
1397
  var _ref7 = (0, _asyncToGenerator3.default)(function* (baseDir, expression, callback) {
1353
1398
  return yield __webpack_require__(5).waitFor('Watchman:subscribe', (0, _asyncToGenerator3.default)(function* () {
1354
- var client = new (__webpack_require__(21))();
1399
+ var client = new (__webpack_require__(22))();
1355
1400
  var watchResp = yield client.watchProject(baseDir);
1356
1401
 
1357
1402
  yield makeSubscription(client, watchResp.root, watchResp.relativePath, expression, callback);
@@ -1458,7 +1503,7 @@ module.exports =
1458
1503
  function updateFiles(files, baseDir, filter, fileChanges) {
1459
1504
  var fileMap = new Map();
1460
1505
  files.forEach(function (file) {
1461
- fileMap.set(file.relPath, file);
1506
+ file.exists && fileMap.set(file.relPath, file);
1462
1507
  });
1463
1508
 
1464
1509
  fileChanges.forEach(function (_ref2) {
@@ -1466,22 +1511,30 @@ module.exports =
1466
1511
  exists = _ref2.exists,
1467
1512
  hash = _ref2['content.sha1hex'];
1468
1513
 
1469
- var file = {
1470
- relPath: name,
1471
- hash: hash || hashFile(__webpack_require__(8).join(baseDir, name))
1472
- };
1473
- if (exists && filter(file)) {
1474
- fileMap.set(name, file);
1475
- } else {
1476
- fileMap['delete'](name);
1514
+ var shouldRemove = !exists;
1515
+ if (!shouldRemove) {
1516
+ var _file = {
1517
+ exists: true,
1518
+ relPath: name,
1519
+ hash: hash || hashFile(__webpack_require__(6).join(baseDir, name))
1520
+ };
1521
+ if (filter(_file)) {
1522
+ fileMap.set(name, _file);
1523
+ } else {
1524
+ shouldRemove = true;
1525
+ }
1477
1526
  }
1527
+ shouldRemove && fileMap.set(name, {
1528
+ exists: false,
1529
+ relPath: name
1530
+ });
1478
1531
  });
1479
1532
  return new Set(fileMap.values());
1480
1533
  }
1481
1534
 
1482
1535
  function hashFile(filename) {
1483
1536
  var content = __webpack_require__(7).readFileSync(filename);
1484
- return __webpack_require__(23).createHash('sha1').update(content).digest('hex');
1537
+ return __webpack_require__(24).createHash('sha1').update(content).digest('hex');
1485
1538
  }
1486
1539
 
1487
1540
  module.exports = {
@@ -1493,7 +1546,7 @@ module.exports =
1493
1546
  };
1494
1547
 
1495
1548
  /***/ }),
1496
- /* 21 */
1549
+ /* 22 */
1497
1550
  /***/ (function(module, exports, __webpack_require__) {
1498
1551
 
1499
1552
  /**
@@ -1604,7 +1657,7 @@ module.exports =
1604
1657
  module.exports = GraphQLWatchmanClient;
1605
1658
 
1606
1659
  /***/ }),
1607
- /* 22 */
1660
+ /* 23 */
1608
1661
  /***/ (function(module, exports, __webpack_require__) {
1609
1662
 
1610
1663
  /**
@@ -1713,13 +1766,13 @@ module.exports =
1713
1766
  module.exports = RelayParser;
1714
1767
 
1715
1768
  /***/ }),
1716
- /* 23 */
1769
+ /* 24 */
1717
1770
  /***/ (function(module, exports) {
1718
1771
 
1719
1772
  module.exports = require("crypto");
1720
1773
 
1721
1774
  /***/ }),
1722
- /* 24 */
1775
+ /* 25 */
1723
1776
  /***/ (function(module, exports, __webpack_require__) {
1724
1777
 
1725
1778
  /**
@@ -1739,10 +1792,10 @@ module.exports =
1739
1792
 
1740
1793
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
1741
1794
 
1742
- var _require = __webpack_require__(30),
1795
+ var _require = __webpack_require__(32),
1743
1796
  createUserError = _require.createUserError;
1744
1797
 
1745
- var _require2 = __webpack_require__(18),
1798
+ var _require2 = __webpack_require__(19),
1746
1799
  ImmutableOrderedMap = _require2.OrderedMap;
1747
1800
 
1748
1801
  /**
@@ -1882,7 +1935,7 @@ module.exports =
1882
1935
  module.exports = GraphQLCompilerContext;
1883
1936
 
1884
1937
  /***/ }),
1885
- /* 25 */
1938
+ /* 26 */
1886
1939
  /***/ (function(module, exports, __webpack_require__) {
1887
1940
 
1888
1941
  /**
@@ -1898,7 +1951,7 @@ module.exports =
1898
1951
 
1899
1952
  'use strict';
1900
1953
 
1901
- var _require = __webpack_require__(29),
1954
+ var _require = __webpack_require__(31),
1902
1955
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
1903
1956
 
1904
1957
  var _require2 = __webpack_require__(3),
@@ -1963,6 +2016,8 @@ module.exports =
1963
2016
  str += parentCondition;
1964
2017
  str += printFragmentArguments(selection.args);
1965
2018
  str += printDirectives(selection.directives);
2019
+ } else if (selection.kind === 'DeferrableFragmentSpread') {
2020
+ str = selection.alias + ': ' + selection.storageKey;
1966
2021
  } else if (selection.kind === 'Condition') {
1967
2022
  var value = printValue(selection.condition);
1968
2023
  // For Flow
@@ -2113,7 +2168,50 @@ module.exports =
2113
2168
  module.exports = { print: print, printField: printField, printArguments: printArguments, printDirectives: printDirectives };
2114
2169
 
2115
2170
  /***/ }),
2116
- /* 26 */
2171
+ /* 27 */
2172
+ /***/ (function(module, exports, __webpack_require__) {
2173
+
2174
+ /**
2175
+ * Copyright (c) 2013-present, Facebook, Inc.
2176
+ *
2177
+ * This source code is licensed under the MIT license found in the
2178
+ * LICENSE file in the root directory of this source tree.
2179
+ *
2180
+ * @providesModule GraphQLIRVisitor
2181
+ *
2182
+ * @format
2183
+ */
2184
+ 'use strict';
2185
+
2186
+ var visit = __webpack_require__(3).visit;
2187
+
2188
+ var NodeKeys = {
2189
+ Argument: ['value'],
2190
+ Batch: ['requests', 'fragment'],
2191
+ Condition: ['condition', 'selections'],
2192
+ Directive: ['args'],
2193
+ Fragment: ['argumentDefinitions', 'directives', 'selections'],
2194
+ FragmentSpread: ['args', 'directives'],
2195
+ InlineFragment: ['directives', 'selections'],
2196
+ LinkedField: ['args', 'directives', 'selections'],
2197
+ Literal: [],
2198
+ LocalArgumentDefinition: [],
2199
+ Request: ['root'],
2200
+ Root: ['argumentDefinitions', 'directives', 'selections'],
2201
+ RootArgumentDefinition: [],
2202
+ ScalarField: ['args', 'directives'],
2203
+ Variable: [],
2204
+ DeferrableFragmentSpread: ['args', 'directives', 'fragmentArgs']
2205
+ };
2206
+
2207
+ function visitIR(root, visitor) {
2208
+ return visit(root, visitor, NodeKeys);
2209
+ }
2210
+
2211
+ module.exports = { visit: visitIR };
2212
+
2213
+ /***/ }),
2214
+ /* 28 */
2117
2215
  /***/ (function(module, exports, __webpack_require__) {
2118
2216
 
2119
2217
  /**
@@ -2129,7 +2227,7 @@ module.exports =
2129
2227
 
2130
2228
  'use strict';
2131
2229
 
2132
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
2230
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
2133
2231
 
2134
2232
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2135
2233
 
@@ -2196,13 +2294,13 @@ module.exports =
2196
2294
  };
2197
2295
 
2198
2296
  /***/ }),
2199
- /* 27 */
2297
+ /* 29 */
2200
2298
  /***/ (function(module, exports) {
2201
2299
 
2202
2300
  module.exports = require("util");
2203
2301
 
2204
2302
  /***/ }),
2205
- /* 28 */
2303
+ /* 30 */
2206
2304
  /***/ (function(module, exports, __webpack_require__) {
2207
2305
 
2208
2306
  /**
@@ -2222,7 +2320,7 @@ module.exports =
2222
2320
 
2223
2321
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2224
2322
 
2225
- var _require = __webpack_require__(18),
2323
+ var _require = __webpack_require__(19),
2226
2324
  ImmutableMap = _require.Map;
2227
2325
 
2228
2326
  var ASTCache = function () {
@@ -2250,6 +2348,11 @@ module.exports =
2250
2348
  var documents = ImmutableMap();
2251
2349
 
2252
2350
  files.forEach(function (file) {
2351
+ if (!file.exists) {
2352
+ _this._documents['delete'](file.relPath);
2353
+ return;
2354
+ }
2355
+
2253
2356
  var doc = function () {
2254
2357
  try {
2255
2358
  return _this._parse(_this._baseDir, file);
@@ -2276,7 +2379,7 @@ module.exports =
2276
2379
  module.exports = ASTCache;
2277
2380
 
2278
2381
  /***/ }),
2279
- /* 29 */
2382
+ /* 31 */
2280
2383
  /***/ (function(module, exports) {
2281
2384
 
2282
2385
  /**
@@ -2297,7 +2400,7 @@ module.exports =
2297
2400
  };
2298
2401
 
2299
2402
  /***/ }),
2300
- /* 30 */
2403
+ /* 32 */
2301
2404
  /***/ (function(module, exports) {
2302
2405
 
2303
2406
  /**
@@ -2328,50 +2431,7 @@ module.exports =
2328
2431
  module.exports = { createUserError: createUserError };
2329
2432
 
2330
2433
  /***/ }),
2331
- /* 31 */
2332
- /***/ (function(module, exports, __webpack_require__) {
2333
-
2334
- /**
2335
- * Copyright (c) 2013-present, Facebook, Inc.
2336
- *
2337
- * This source code is licensed under the MIT license found in the
2338
- * LICENSE file in the root directory of this source tree.
2339
- *
2340
- * @providesModule GraphQLIRVisitor
2341
- *
2342
- * @format
2343
- */
2344
- 'use strict';
2345
-
2346
- var visit = __webpack_require__(3).visit;
2347
-
2348
- var NodeKeys = {
2349
- Argument: ['value'],
2350
- Batch: ['requests', 'fragment'],
2351
- Condition: ['condition', 'selections'],
2352
- Directive: ['args'],
2353
- Fragment: ['argumentDefinitions', 'directives', 'selections'],
2354
- FragmentSpread: ['args', 'directives'],
2355
- InlineFragment: ['directives', 'selections'],
2356
- LinkedField: ['args', 'directives', 'selections'],
2357
- Literal: [],
2358
- LocalArgumentDefinition: [],
2359
- Request: ['root'],
2360
- Root: ['argumentDefinitions', 'directives', 'selections'],
2361
- RootArgumentDefinition: [],
2362
- ScalarField: ['args', 'directives'],
2363
- Variable: [],
2364
- DeferrableFragmentSpread: ['args']
2365
- };
2366
-
2367
- function visitIR(root, visitor) {
2368
- return visit(root, visitor, NodeKeys);
2369
- }
2370
-
2371
- module.exports = { visit: visitIR };
2372
-
2373
- /***/ }),
2374
- /* 32 */
2434
+ /* 33 */
2375
2435
  /***/ (function(module, exports, __webpack_require__) {
2376
2436
 
2377
2437
  /**
@@ -2393,7 +2453,6 @@ module.exports =
2393
2453
  KnownArgumentNamesRule = _require.KnownArgumentNamesRule,
2394
2454
  KnownTypeNamesRule = _require.KnownTypeNamesRule,
2395
2455
  LoneAnonymousOperationRule = _require.LoneAnonymousOperationRule,
2396
- NoFragmentCyclesRule = _require.NoFragmentCyclesRule,
2397
2456
  NoUnusedVariablesRule = _require.NoUnusedVariablesRule,
2398
2457
  PossibleFragmentSpreadsRule = _require.PossibleFragmentSpreadsRule,
2399
2458
  ProvidedNonNullArgumentsRule = _require.ProvidedNonNullArgumentsRule,
@@ -2417,7 +2476,7 @@ module.exports =
2417
2476
  return e.source ? e.source.name + ': ' + e.message : e.message;
2418
2477
  });
2419
2478
 
2420
- var error = new Error(__webpack_require__(27).format('You supplied a GraphQL document with validation errors:\n%s', errorMessages.join('\n')));
2479
+ var error = new Error(__webpack_require__(29).format('You supplied a GraphQL document with validation errors:\n%s', errorMessages.join('\n')));
2421
2480
  error.validationErrors = formattedErrors;
2422
2481
  throw error;
2423
2482
  }
@@ -2427,8 +2486,10 @@ module.exports =
2427
2486
  GLOBAL_RULES: [KnownArgumentNamesRule,
2428
2487
  // TODO #19327202 Relay Classic generates some fragments in runtime, so Relay
2429
2488
  // Modern queries might reference fragments unknown in build time
2430
- //KnownFragmentNamesRule,
2431
- NoFragmentCyclesRule,
2489
+ // KnownFragmentNamesRule,
2490
+ // TODO: #25618795 Because of @argumentDefinitions, this validation
2491
+ // incorrectly flags a subset of fragments using @include/@skip as recursive.
2492
+ // NoFragmentCyclesRule,
2432
2493
  // TODO #19327144 Because of @argumentDefinitions, this validation
2433
2494
  // incorrectly marks some fragment variables as undefined.
2434
2495
  // NoUndefinedVariablesRule,
@@ -2451,7 +2512,7 @@ module.exports =
2451
2512
  };
2452
2513
 
2453
2514
  /***/ }),
2454
- /* 33 */
2515
+ /* 34 */
2455
2516
  /***/ (function(module, exports, __webpack_require__) {
2456
2517
 
2457
2518
  /**
@@ -2467,7 +2528,7 @@ module.exports =
2467
2528
 
2468
2529
  'use strict';
2469
2530
 
2470
- var _require = __webpack_require__(50),
2531
+ var _require = __webpack_require__(49),
2471
2532
  getStorageKey = _require.getStorageKey;
2472
2533
  // TODO T21875029 ../../relay-runtime/util/stableCopy
2473
2534
 
@@ -2499,13 +2560,6 @@ module.exports =
2499
2560
  }
2500
2561
 
2501
2562
  var RelayCodeGenVisitor = {
2502
- enter: function enter(node) {
2503
- if ((node.kind === 'FragmentSpread' || node.kind === 'ScalarField') && node.metadata && node.metadata.deferred) {
2504
- return deferrableFragmentSpread(node.metadata.deferredFragmentName, node.metadata.deferredArgumentName, node.metadata.deferredArgumentStorageKey, node.metadata.idType);
2505
- }
2506
- return node;
2507
- },
2508
-
2509
2563
  leave: {
2510
2564
  Batch: function Batch(node) {
2511
2565
  __webpack_require__(1)(node.requests.length !== 0, 'Batch must contain Requests.');
@@ -2750,31 +2804,10 @@ module.exports =
2750
2804
  return getStorageKey(field, {});
2751
2805
  }
2752
2806
 
2753
- function deferrableFragmentSpread(fragmentName, argumentName, storageKey, idType) {
2754
- return {
2755
- kind: 'DeferrableFragmentSpread',
2756
- name: fragmentName,
2757
- args: [{
2758
- kind: 'Argument',
2759
- name: argumentName,
2760
- metadata: null,
2761
- value: {
2762
- kind: 'Variable',
2763
- variableName: argumentName,
2764
- metadata: null,
2765
- type: idType
2766
- },
2767
- type: idType
2768
- }],
2769
- rootFieldVariable: argumentName,
2770
- storageKey: storageKey
2771
- };
2772
- }
2773
-
2774
2807
  module.exports = { generate: generate };
2775
2808
 
2776
2809
  /***/ }),
2777
- /* 34 */
2810
+ /* 35 */
2778
2811
  /***/ (function(module, exports, __webpack_require__) {
2779
2812
 
2780
2813
  /**
@@ -2938,7 +2971,7 @@ module.exports =
2938
2971
  module.exports = { getFragmentScope: getFragmentScope, getRootScope: getRootScope };
2939
2972
 
2940
2973
  /***/ }),
2941
- /* 35 */
2974
+ /* 36 */
2942
2975
  /***/ (function(module, exports, __webpack_require__) {
2943
2976
 
2944
2977
  /**
@@ -2954,13 +2987,13 @@ module.exports =
2954
2987
 
2955
2988
  'use strict';
2956
2989
 
2957
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
2990
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
2958
2991
 
2959
2992
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
2960
2993
 
2961
2994
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2962
2995
 
2963
- var _require = __webpack_require__(64),
2996
+ var _require = __webpack_require__(63),
2964
2997
  AFTER = _require.AFTER,
2965
2998
  BEFORE = _require.BEFORE,
2966
2999
  FIRST = _require.FIRST,
@@ -2969,7 +3002,7 @@ module.exports =
2969
3002
  // TODO T21875029 ../../../relay-runtime/RelayRuntime
2970
3003
 
2971
3004
 
2972
- var _require2 = __webpack_require__(50),
3005
+ var _require2 = __webpack_require__(49),
2973
3006
  ConnectionInterface = _require2.ConnectionInterface;
2974
3007
 
2975
3008
  var _require3 = __webpack_require__(3),
@@ -3148,7 +3181,7 @@ module.exports =
3148
3181
  var ast = parse(fragmentString);
3149
3182
  var fragmentAST = ast.definitions[0];
3150
3183
  __webpack_require__(1)(fragmentAST && fragmentAST.kind === 'FragmentDefinition', 'RelayConnectionTransform: Expected a fragment definition AST.');
3151
- var fragment = __webpack_require__(22).transform(context.clientSchema, fragmentAST);
3184
+ var fragment = __webpack_require__(23).transform(context.clientSchema, fragmentAST);
3152
3185
  __webpack_require__(1)(fragment && fragment.kind === 'Fragment', 'RelayConnectionTransform: Expected a connection fragment.');
3153
3186
  return {
3154
3187
  directives: [],
@@ -3245,7 +3278,7 @@ module.exports =
3245
3278
  };
3246
3279
 
3247
3280
  /***/ }),
3248
- /* 36 */
3281
+ /* 37 */
3249
3282
  /***/ (function(module, exports) {
3250
3283
 
3251
3284
  /**
@@ -3266,7 +3299,7 @@ module.exports =
3266
3299
  };
3267
3300
 
3268
3301
  /***/ }),
3269
- /* 37 */
3302
+ /* 38 */
3270
3303
  /***/ (function(module, exports, __webpack_require__) {
3271
3304
 
3272
3305
  /**
@@ -3282,7 +3315,7 @@ module.exports =
3282
3315
 
3283
3316
  'use strict';
3284
3317
 
3285
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
3318
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
3286
3319
 
3287
3320
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
3288
3321
 
@@ -3294,7 +3327,7 @@ module.exports =
3294
3327
  isInputType = _require.isInputType,
3295
3328
  GraphQLInterfaceType = _require.GraphQLInterfaceType,
3296
3329
  GraphQLList = _require.GraphQLList,
3297
- GraphQLScalarType = _require.GraphQLScalarType;
3330
+ GraphQLInputType = _require.GraphQLInputType;
3298
3331
 
3299
3332
  var _require2 = __webpack_require__(4),
3300
3333
  IRTransformer = _require2.IRTransformer,
@@ -3360,8 +3393,6 @@ module.exports =
3360
3393
  return context;
3361
3394
  }
3362
3395
 
3363
- var idType = getIdType(context.clientSchema);
3364
-
3365
3396
  // Next, transform any existing root operations to include references to
3366
3397
  // their dependent requests.
3367
3398
  var transformedContext = IRTransformer.transform(context, {
@@ -3392,18 +3423,8 @@ module.exports =
3392
3423
  });
3393
3424
  return completeDeferrableOperation;
3394
3425
  });
3395
- var transformedContextPostFragments = IRTransformer.transform(transformedContext, {
3396
- FragmentSpread: function FragmentSpread(spread) {
3397
- if (isDeferrable(spread)) {
3398
- return (0, _extends3['default'])({}, spread, {
3399
- metadata: (0, _extends3['default'])({}, spread.metadata, deferrableFragmentSpreadMetadata(spread.name, idType))
3400
- });
3401
- }
3402
- return spread;
3403
- }
3404
- });
3405
3426
 
3406
- return transformedContextPostFragments.addAll(deferrableOperations);
3427
+ return transformedContext.addAll(deferrableOperations);
3407
3428
  }
3408
3429
 
3409
3430
  /**
@@ -3439,7 +3460,7 @@ module.exports =
3439
3460
  var includedFragments = new Set([fragment]);
3440
3461
  var nodesToVisit = [fragment];
3441
3462
  while (nodesToVisit.length !== 0) {
3442
- var spreadUses = __webpack_require__(17)(spreadUsesWithin.get(nodesToVisit.pop()));
3463
+ var spreadUses = __webpack_require__(18)(spreadUsesWithin.get(nodesToVisit.pop()));
3443
3464
  for (var i = 0; i < spreadUses.length; i++) {
3444
3465
  var includedFragment = context.getFragment(spreadUses[i].spread.name);
3445
3466
  if (!includedFragments.has(includedFragment)) {
@@ -3550,7 +3571,7 @@ module.exports =
3550
3571
  var _iteratorError3 = undefined;
3551
3572
 
3552
3573
  try {
3553
- for (var _iterator3 = __webpack_require__(17)(spreadUsesWithin.get(node))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
3574
+ for (var _iterator3 = __webpack_require__(18)(spreadUsesWithin.get(node))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
3554
3575
  var spreadUse = _step3.value;
3555
3576
 
3556
3577
  if (isDeferrable(spreadUse.spread)) {
@@ -3635,16 +3656,7 @@ module.exports =
3635
3656
  metadata: null,
3636
3657
  typeCondition: nodeType,
3637
3658
  directives: [],
3638
- selections: [{
3639
- kind: 'ScalarField',
3640
- name: 'id',
3641
- alias: deferrableAlias(spread.name),
3642
- args: [],
3643
- handles: null,
3644
- directives: spread.directives,
3645
- metadata: (0, _extends3['default'])({}, spread.metadata, deferrableFragmentSpreadMetadata(spread.name, idType)),
3646
- type: idType
3647
- }]
3659
+ selections: [deferrableFragmentSpread(spread, idType)]
3648
3660
  }]
3649
3661
  };
3650
3662
  }
@@ -3698,7 +3710,7 @@ module.exports =
3698
3710
  kind: 'FragmentSpread',
3699
3711
  args: [],
3700
3712
  name: fragment.name,
3701
- metadata: deferrableFragmentSpreadMetadata(fragment.name, idType),
3713
+ metadata: null,
3702
3714
  directives: []
3703
3715
  }],
3704
3716
  type: nodeField.type
@@ -3707,20 +3719,34 @@ module.exports =
3707
3719
  };
3708
3720
  }
3709
3721
 
3710
- function deferrableFragmentSpreadMetadata(name, idType) {
3711
- return {
3712
- deferred: true,
3713
- deferredFragmentName: name,
3714
- deferredArgumentName: DEFERRABLE_ARGUMENT_NAME,
3715
- deferredArgumentStorageKey: 'id',
3716
- idType: idType
3717
- };
3718
- }
3719
-
3720
3722
  function deferrableAlias(name) {
3721
3723
  return name + '_' + DEFERRABLE_ARGUMENT_NAME;
3722
3724
  }
3723
3725
 
3726
+ function deferrableFragmentSpread(spread, idType) {
3727
+ return {
3728
+ kind: 'DeferrableFragmentSpread',
3729
+ name: spread.name,
3730
+ directives: [],
3731
+ fragmentArgs: spread.args,
3732
+ args: [{
3733
+ kind: 'Argument',
3734
+ name: DEFERRABLE_ARGUMENT_NAME,
3735
+ metadata: null,
3736
+ value: {
3737
+ kind: 'Variable',
3738
+ variableName: DEFERRABLE_ARGUMENT_NAME,
3739
+ metadata: null,
3740
+ type: idType
3741
+ },
3742
+ type: idType
3743
+ }],
3744
+ rootFieldVariable: DEFERRABLE_ARGUMENT_NAME,
3745
+ storageKey: 'id',
3746
+ alias: deferrableAlias(spread.name)
3747
+ };
3748
+ }
3749
+
3724
3750
  function getNodeType(schema) {
3725
3751
  var nodeType = schema.getType('Node');
3726
3752
  __webpack_require__(1)(nodeType instanceof GraphQLInterfaceType, 'RelayDeferrableFragmentTransform: Schema must define the interface "Node".');
@@ -3732,7 +3758,7 @@ module.exports =
3732
3758
  var idField = nodeType.getFields().id;
3733
3759
  __webpack_require__(1)(idField, 'RelayDeferrableFragmentTransform: "Node" must define the field "id"');
3734
3760
  var idType = getNamedType(idField.type);
3735
- __webpack_require__(1)(idType instanceof GraphQLScalarType, 'RelayDeferrableFragmentTransform: "Node" must define the scalar field "id"');
3761
+ __webpack_require__(1)(isInputType(idType), 'RelayDeferrableFragmentTransform: "Node" must define the scalar field "id"');
3736
3762
  return idType;
3737
3763
  }
3738
3764
 
@@ -3742,7 +3768,7 @@ module.exports =
3742
3768
  };
3743
3769
 
3744
3770
  /***/ }),
3745
- /* 38 */
3771
+ /* 39 */
3746
3772
  /***/ (function(module, exports, __webpack_require__) {
3747
3773
 
3748
3774
  /**
@@ -3860,7 +3886,7 @@ module.exports =
3860
3886
  };
3861
3887
 
3862
3888
  /***/ }),
3863
- /* 39 */
3889
+ /* 40 */
3864
3890
  /***/ (function(module, exports, __webpack_require__) {
3865
3891
 
3866
3892
  /**
@@ -3876,13 +3902,13 @@ module.exports =
3876
3902
 
3877
3903
  'use strict';
3878
3904
 
3879
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
3905
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
3880
3906
 
3881
3907
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
3882
3908
 
3883
3909
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3884
3910
 
3885
- var _require = __webpack_require__(38),
3911
+ var _require = __webpack_require__(39),
3886
3912
  anyTypeAlias = _require.anyTypeAlias,
3887
3913
  exactObjectTypeAnnotation = _require.exactObjectTypeAnnotation,
3888
3914
  exportType = _require.exportType,
@@ -3894,7 +3920,7 @@ module.exports =
3894
3920
  stringLiteralTypeAnnotation = _require.stringLiteralTypeAnnotation,
3895
3921
  unionTypeAnnotation = _require.unionTypeAnnotation;
3896
3922
 
3897
- var _require2 = __webpack_require__(67),
3923
+ var _require2 = __webpack_require__(66),
3898
3924
  transformScalarType = _require2.transformScalarType,
3899
3925
  transformInputType = _require2.transformInputType;
3900
3926
 
@@ -3912,7 +3938,7 @@ module.exports =
3912
3938
 
3913
3939
  function generate(node, options) {
3914
3940
  var ast = IRVisitor.visit(node, createVisitor(options));
3915
- return __webpack_require__(61).generate(ast);
3941
+ return __webpack_require__(60).generate(ast);
3916
3942
  }
3917
3943
 
3918
3944
  function makeProp(_ref, state, concreteType) {
@@ -3924,7 +3950,7 @@ module.exports =
3924
3950
  nodeSelections = _ref.nodeSelections;
3925
3951
 
3926
3952
  if (nodeType) {
3927
- value = transformScalarType(nodeType, state, selectionsToBabel([Array.from(__webpack_require__(17)(nodeSelections).values())], state));
3953
+ value = transformScalarType(nodeType, state, selectionsToBabel([Array.from(__webpack_require__(18)(nodeSelections).values())], state));
3928
3954
  }
3929
3955
  if (schemaName === '__typename' && concreteType) {
3930
3956
  value = stringLiteralTypeAnnotation(concreteType);
@@ -4013,7 +4039,7 @@ module.exports =
4013
4039
  });
4014
4040
  }
4015
4041
  return (0, _extends3['default'])({}, a, {
4016
- nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, __webpack_require__(17)(b.nodeSelections)) : null,
4042
+ nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, __webpack_require__(18)(b.nodeSelections)) : null,
4017
4043
  conditional: a.conditional && b.conditional
4018
4044
  });
4019
4045
  }
@@ -4086,6 +4112,7 @@ module.exports =
4086
4112
  customScalars: options.customScalars,
4087
4113
  enumsHasteModule: options.enumsHasteModule,
4088
4114
  existingFragmentNames: options.existingFragmentNames,
4115
+ generatedFragments: new Set(),
4089
4116
  inputFieldWhiteList: options.inputFieldWhiteList,
4090
4117
  relayRuntimeModule: options.relayRuntimeModule,
4091
4118
  usedEnums: {},
@@ -4113,8 +4140,9 @@ module.exports =
4113
4140
  }
4114
4141
  return [selection];
4115
4142
  });
4143
+ state.generatedFragments.add(node.name);
4116
4144
  var refTypeName = getRefTypeName(node.name);
4117
- var refType = __webpack_require__(2).expressionStatement(__webpack_require__(2).identifier('export opaque type ' + refTypeName + ': FragmentReference = FragmentReference'));
4145
+ var refType = __webpack_require__(2).expressionStatement(__webpack_require__(2).identifier('declare export opaque type ' + refTypeName + ': FragmentReference'));
4118
4146
  var baseType = selectionsToBabel(selections, state, refTypeName);
4119
4147
  var type = isPlural(node) ? readOnlyArrayOfType(baseType) : baseType;
4120
4148
  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)]));
@@ -4204,7 +4232,7 @@ module.exports =
4204
4232
  return __webpack_require__(2).identifier(getRefTypeName(ref));
4205
4233
  }));
4206
4234
  result.push({
4207
- key: '__fragments',
4235
+ key: '$fragmentRefs',
4208
4236
  conditional: false,
4209
4237
  value: _value3
4210
4238
  });
@@ -4225,12 +4253,14 @@ module.exports =
4225
4253
  var usedFragment = _step3.value;
4226
4254
 
4227
4255
  var refTypeName = getRefTypeName(usedFragment);
4228
- if (state.useHaste && state.existingFragmentNames.has(usedFragment)) {
4229
- // TODO(T22653277) support non-haste environments when importing
4230
- // fragments
4231
- imports.push(importTypes([refTypeName], usedFragment + '.graphql'));
4232
- } else {
4233
- imports.push(anyTypeAlias(refTypeName));
4256
+ if (!state.generatedFragments.has(usedFragment)) {
4257
+ if (state.useHaste && state.existingFragmentNames.has(usedFragment)) {
4258
+ // TODO(T22653277) support non-haste environments when importing
4259
+ // fragments
4260
+ imports.push(importTypes([refTypeName], usedFragment + '.graphql'));
4261
+ } else {
4262
+ imports.push(anyTypeAlias(refTypeName));
4263
+ }
4234
4264
  }
4235
4265
  }
4236
4266
  } catch (err) {
@@ -4279,7 +4309,7 @@ module.exports =
4279
4309
  return name + '$ref';
4280
4310
  }
4281
4311
 
4282
- var FLOW_TRANSFORMS = [__webpack_require__(26).transform, __webpack_require__(42).transform, FlattenTransform.transformWithOptions({})];
4312
+ var FLOW_TRANSFORMS = [__webpack_require__(28).transform, __webpack_require__(43).transform, FlattenTransform.transformWithOptions({})];
4283
4313
 
4284
4314
  module.exports = {
4285
4315
  generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'),
@@ -4287,7 +4317,7 @@ module.exports =
4287
4317
  };
4288
4318
 
4289
4319
  /***/ }),
4290
- /* 40 */
4320
+ /* 41 */
4291
4321
  /***/ (function(module, exports, __webpack_require__) {
4292
4322
 
4293
4323
  /**
@@ -4303,13 +4333,13 @@ module.exports =
4303
4333
 
4304
4334
  'use strict';
4305
4335
 
4306
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
4336
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
4307
4337
 
4308
4338
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
4309
4339
 
4310
4340
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4311
4341
 
4312
- var _require = __webpack_require__(43),
4342
+ var _require = __webpack_require__(44),
4313
4343
  hasUnaliasedSelection = _require.hasUnaliasedSelection;
4314
4344
 
4315
4345
  var _require2 = __webpack_require__(3),
@@ -4367,7 +4397,7 @@ module.exports =
4367
4397
  };
4368
4398
 
4369
4399
  /***/ }),
4370
- /* 41 */
4400
+ /* 42 */
4371
4401
  /***/ (function(module, exports, __webpack_require__) {
4372
4402
 
4373
4403
  /**
@@ -4399,12 +4429,12 @@ module.exports =
4399
4429
 
4400
4430
  // Throws an error if parsing the file fails
4401
4431
  function parseFile(baseDir, file) {
4402
- var text = __webpack_require__(7).readFileSync(__webpack_require__(8).join(baseDir, file.relPath), 'utf8');
4432
+ var text = __webpack_require__(7).readFileSync(__webpack_require__(6).join(baseDir, file.relPath), 'utf8');
4403
4433
 
4404
4434
  __webpack_require__(1)(text.indexOf('graphql') >= 0, 'RelayJSModuleParser: Files should be filtered before passed to the ' + 'parser, got unfiltered file `%s`.', file);
4405
4435
 
4406
4436
  var astDefinitions = [];
4407
- __webpack_require__(55).memoizedFind(text, baseDir, file, FIND_OPTIONS).forEach(function (template) {
4437
+ __webpack_require__(54).memoizedFind(text, baseDir, file, FIND_OPTIONS).forEach(function (template) {
4408
4438
  var ast = parseGraphQL(new (__webpack_require__(3).Source)(template, file.relPath));
4409
4439
  __webpack_require__(1)(ast.definitions.length, 'RelayJSModuleParser: Expected GraphQL text to contain at least one ' + 'definition (fragment, mutation, query, subscription), got `%s`.', template);
4410
4440
  astDefinitions.push.apply(astDefinitions, (0, _toConsumableArray3['default'])(ast.definitions));
@@ -4425,7 +4455,7 @@ module.exports =
4425
4455
 
4426
4456
  function getFileFilter(baseDir) {
4427
4457
  return function (file) {
4428
- var text = __webpack_require__(7).readFileSync(__webpack_require__(8).join(baseDir, file.relPath), 'utf8');
4458
+ var text = __webpack_require__(7).readFileSync(__webpack_require__(6).join(baseDir, file.relPath), 'utf8');
4429
4459
  return text.indexOf('graphql') >= 0;
4430
4460
  };
4431
4461
  }
@@ -4436,7 +4466,7 @@ module.exports =
4436
4466
  };
4437
4467
 
4438
4468
  /***/ }),
4439
- /* 42 */
4469
+ /* 43 */
4440
4470
  /***/ (function(module, exports, __webpack_require__) {
4441
4471
 
4442
4472
  /**
@@ -4454,7 +4484,7 @@ module.exports =
4454
4484
 
4455
4485
  'use strict';
4456
4486
 
4457
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
4487
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
4458
4488
 
4459
4489
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4460
4490
 
@@ -4570,7 +4600,7 @@ module.exports =
4570
4600
  };
4571
4601
 
4572
4602
  /***/ }),
4573
- /* 43 */
4603
+ /* 44 */
4574
4604
  /***/ (function(module, exports) {
4575
4605
 
4576
4606
  /**
@@ -4595,7 +4625,7 @@ module.exports =
4595
4625
  module.exports = { hasUnaliasedSelection: hasUnaliasedSelection };
4596
4626
 
4597
4627
  /***/ }),
4598
- /* 44 */
4628
+ /* 45 */
4599
4629
  /***/ (function(module, exports, __webpack_require__) {
4600
4630
 
4601
4631
  /**
@@ -4644,7 +4674,7 @@ module.exports =
4644
4674
  };
4645
4675
 
4646
4676
  /***/ }),
4647
- /* 45 */
4677
+ /* 46 */
4648
4678
  /***/ (function(module, exports, __webpack_require__) {
4649
4679
 
4650
4680
  /**
@@ -4699,7 +4729,7 @@ module.exports =
4699
4729
  var codeGenContext = context.applyTransforms([].concat((0, _toConsumableArray3['default'])(transforms.commonTransforms), (0, _toConsumableArray3['default'])(transforms.queryTransforms), (0, _toConsumableArray3['default'])(transforms.codegenTransforms)), reporter);
4700
4730
 
4701
4731
  return fragmentContext.documents().map(function (node) {
4702
- return __webpack_require__(33).generate(node.kind === 'Fragment' ? node : {
4732
+ return __webpack_require__(34).generate(node.kind === 'Fragment' ? node : {
4703
4733
  kind: 'Batch',
4704
4734
  metadata: codeGenContext.getRoot(node.name).metadata || {},
4705
4735
  name: node.name,
@@ -4720,52 +4750,6 @@ module.exports =
4720
4750
 
4721
4751
  module.exports = compileRelayArtifacts;
4722
4752
 
4723
- /***/ }),
4724
- /* 46 */
4725
- /***/ (function(module, exports, __webpack_require__) {
4726
-
4727
- /**
4728
- * Copyright (c) 2013-present, Facebook, Inc.
4729
- *
4730
- * This source code is licensed under the MIT license found in the
4731
- * LICENSE file in the root directory of this source tree.
4732
- *
4733
- * @providesModule filterContextForNode
4734
- *
4735
- * @format
4736
- */
4737
-
4738
- 'use strict';
4739
-
4740
- var _require = __webpack_require__(31),
4741
- visit = _require.visit;
4742
-
4743
- /**
4744
- * Returns a GraphQLCompilerContext containing only the documents referenced
4745
- * by and including the provided node.
4746
- */
4747
- function filterContextForNode(node, context) {
4748
- var queue = [node];
4749
- var filteredContext = new (__webpack_require__(24))(context.serverSchema, context.clientSchema).add(node);
4750
- var visitorConfig = {
4751
- FragmentSpread: function FragmentSpread(fragmentSpread) {
4752
- var name = fragmentSpread.name;
4753
-
4754
- if (!filteredContext.get(name)) {
4755
- var fragment = context.getFragment(name);
4756
- filteredContext = filteredContext.add(fragment);
4757
- queue.push(fragment);
4758
- }
4759
- }
4760
- };
4761
- while (queue.length) {
4762
- visit(queue.pop(), visitorConfig);
4763
- }
4764
- return filteredContext;
4765
- }
4766
-
4767
- module.exports = filterContextForNode;
4768
-
4769
4753
  /***/ }),
4770
4754
  /* 47 */
4771
4755
  /***/ (function(module, exports, __webpack_require__) {
@@ -4783,7 +4767,7 @@ module.exports =
4783
4767
 
4784
4768
  'use strict';
4785
4769
 
4786
- var _require = __webpack_require__(25),
4770
+ var _require = __webpack_require__(26),
4787
4771
  printArguments = _require.printArguments,
4788
4772
  printDirectives = _require.printDirectives;
4789
4773
 
@@ -4795,7 +4779,7 @@ module.exports =
4795
4779
  function getIdentifierForSelection(node) {
4796
4780
  if (node.kind === 'LinkedField' || node.kind === 'ScalarField') {
4797
4781
  return node.directives.length === 0 ? node.alias || node.name : (node.alias || node.name) + printDirectives(node.directives);
4798
- } else if (node.kind === 'FragmentSpread') {
4782
+ } else if (node.kind === 'FragmentSpread' || node.kind === 'DeferrableFragmentSpread') {
4799
4783
  return node.args.length === 0 ? '...' + node.name : '...' + node.name + printArguments(node.args);
4800
4784
  } else if (node.kind === 'InlineFragment') {
4801
4785
  return 'I:' + node.typeCondition.name;
@@ -4810,47 +4794,18 @@ module.exports =
4810
4794
 
4811
4795
  /***/ }),
4812
4796
  /* 48 */
4813
- /***/ (function(module, exports) {
4814
-
4815
- /**
4816
- * Copyright (c) 2013-present, Facebook, Inc.
4817
- *
4818
- * This source code is licensed under the MIT license found in the
4819
- * LICENSE file in the root directory of this source tree.
4820
- *
4821
- * @providesModule nullthrowsOSS
4822
- *
4823
- * @format
4824
- */
4825
- 'use strict';
4826
-
4827
- var nullthrows = function nullthrows(x) {
4828
- var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Got unexpected null or undefined';
4829
-
4830
- if (x != null) {
4831
- return x;
4832
- }
4833
- var error = new Error(message);
4834
- error.framesToPop = 1; // Skip nullthrows own stack frame.
4835
- throw error;
4836
- };
4837
-
4838
- module.exports = nullthrows;
4839
-
4840
- /***/ }),
4841
- /* 49 */
4842
4797
  /***/ (function(module, exports) {
4843
4798
 
4844
4799
  module.exports = require("os");
4845
4800
 
4846
4801
  /***/ }),
4847
- /* 50 */
4802
+ /* 49 */
4848
4803
  /***/ (function(module, exports) {
4849
4804
 
4850
4805
  module.exports = require("relay-runtime");
4851
4806
 
4852
4807
  /***/ }),
4853
- /* 51 */
4808
+ /* 50 */
4854
4809
  /***/ (function(module, exports, __webpack_require__) {
4855
4810
 
4856
4811
  /**
@@ -4871,7 +4826,7 @@ module.exports =
4871
4826
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4872
4827
 
4873
4828
  var _require = __webpack_require__(14),
4874
- isOperationDefinitionAST = _require.isOperationDefinitionAST,
4829
+ isExecutableDefinitionAST = _require.isExecutableDefinitionAST,
4875
4830
  isSchemaDefinitionAST = _require.isSchemaDefinitionAST;
4876
4831
 
4877
4832
  var _require2 = __webpack_require__(3),
@@ -4886,7 +4841,7 @@ module.exports =
4886
4841
  var astDefinitions = [];
4887
4842
  documents.forEach(function (doc) {
4888
4843
  doc.definitions.forEach(function (definition) {
4889
- if (isOperationDefinitionAST(definition)) {
4844
+ if (isExecutableDefinitionAST(definition)) {
4890
4845
  astDefinitions.push(definition);
4891
4846
  }
4892
4847
  });
@@ -4904,7 +4859,7 @@ module.exports =
4904
4859
  var requiredDefinitions = new Map();
4905
4860
  var baseMap = new Map();
4906
4861
  baseDefinitions.forEach(function (definition) {
4907
- if (isOperationDefinitionAST(definition)) {
4862
+ if (isExecutableDefinitionAST(definition)) {
4908
4863
  var definitionName = definition.name && definition.name.value;
4909
4864
  // If there's no name, no reason to put in the map
4910
4865
  if (definitionName) {
@@ -4918,7 +4873,7 @@ module.exports =
4918
4873
 
4919
4874
  var definitionsToVisit = [];
4920
4875
  definitions.forEach(function (definition) {
4921
- if (isOperationDefinitionAST(definition)) {
4876
+ if (isExecutableDefinitionAST(definition)) {
4922
4877
  definitionsToVisit.push(definition);
4923
4878
  }
4924
4879
  });
@@ -4958,7 +4913,7 @@ module.exports =
4958
4913
  function convertASTDefinitions(schema, definitions, validationRules, transform) {
4959
4914
  var operationDefinitions = [];
4960
4915
  definitions.forEach(function (definition) {
4961
- if (isOperationDefinitionAST(definition)) {
4916
+ if (isExecutableDefinitionAST(definition)) {
4962
4917
  operationDefinitions.push(definition);
4963
4918
  }
4964
4919
  });
@@ -4970,7 +4925,7 @@ module.exports =
4970
4925
  definitions: operationDefinitions
4971
4926
  };
4972
4927
  // Will throw an error if there are validation issues
4973
- __webpack_require__(32).validate(validationAST, schema, validationRules);
4928
+ __webpack_require__(33).validate(validationAST, schema, validationRules);
4974
4929
  return operationDefinitions.map(function (definition) {
4975
4930
  return transform(schema, definition);
4976
4931
  });
@@ -5020,7 +4975,7 @@ module.exports =
5020
4975
  };
5021
4976
 
5022
4977
  /***/ }),
5023
- /* 52 */
4978
+ /* 51 */
5024
4979
  /***/ (function(module, exports, __webpack_require__) {
5025
4980
 
5026
4981
  /**
@@ -5046,7 +5001,7 @@ module.exports =
5046
5001
 
5047
5002
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
5048
5003
 
5049
- var _require = __webpack_require__(18),
5004
+ var _require = __webpack_require__(19),
5050
5005
  ImmutableMap = _require.Map;
5051
5006
 
5052
5007
  var CodegenRunner = function () {
@@ -5184,12 +5139,12 @@ module.exports =
5184
5139
  // Check for files in the input
5185
5140
  yield Promise.all(Object.keys(_this3.parserConfigs).map(function (parserConfigName) {
5186
5141
  return __webpack_require__(5).waitFor('Watchman:query', (0, _asyncToGenerator3.default)(function* () {
5187
- var client = new (__webpack_require__(21))();
5142
+ var client = new (__webpack_require__(22))();
5188
5143
  var config = _this3.parserConfigs[parserConfigName];
5189
5144
  var dirs = yield client.watchProject(config.baseDir);
5190
5145
 
5191
5146
  var relativeFilePaths = filePaths.map(function (filePath) {
5192
- return __webpack_require__(8).relative(config.baseDir, filePath);
5147
+ return __webpack_require__(6).relative(config.baseDir, filePath);
5193
5148
  });
5194
5149
 
5195
5150
  var query = {
@@ -5230,9 +5185,9 @@ module.exports =
5230
5185
 
5231
5186
  var files = void 0;
5232
5187
  if (parserConfig.watchmanExpression) {
5233
- files = yield __webpack_require__(20).queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
5188
+ files = yield __webpack_require__(21).queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
5234
5189
  } else if (parserConfig.filepaths) {
5235
- files = yield __webpack_require__(20).queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
5190
+ files = yield __webpack_require__(21).queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
5236
5191
  } else {
5237
5192
  throw new Error('Either `watchmanExpression` or `filepaths` is required to query files');
5238
5193
  }
@@ -5265,8 +5220,7 @@ module.exports =
5265
5220
 
5266
5221
  return __webpack_require__(5).asyncContext('CodegenRunner.write', (0, _asyncToGenerator3.default)(function* () {
5267
5222
  try {
5268
- // eslint-disable-next-line no-console
5269
- console.log('\nWriting %s', writerName);
5223
+ _this5._reporter.reportMessage('\nWriting ' + writerName);
5270
5224
  var _writerConfigs$writer = _this5.writerConfigs[writerName],
5271
5225
  _getWriter = _writerConfigs$writer.getWriter,
5272
5226
  _parser2 = _writerConfigs$writer.parser,
@@ -5347,11 +5301,11 @@ module.exports =
5347
5301
  }
5348
5302
  }
5349
5303
 
5350
- var combinedChanges = __webpack_require__(19).combineChanges(Array.from(outputDirectories.values()));
5351
- __webpack_require__(19).printChanges(combinedChanges, {
5304
+ var combinedChanges = __webpack_require__(20).combineChanges(Array.from(outputDirectories.values()));
5305
+ __webpack_require__(20).printChanges(combinedChanges, {
5352
5306
  onlyValidate: _this5.onlyValidate
5353
5307
  });
5354
- return __webpack_require__(19).hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES';
5308
+ return __webpack_require__(20).hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES';
5355
5309
  } catch (e) {
5356
5310
  _this5._reporter.reportError('CodegenRunner.write', e);
5357
5311
  return 'ERROR';
@@ -5391,7 +5345,7 @@ module.exports =
5391
5345
  // we should prevent the first watch callback from doing anything.
5392
5346
  var firstChange = true;
5393
5347
 
5394
- yield __webpack_require__(20).watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
5348
+ yield __webpack_require__(21).watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
5395
5349
  var _ref9 = (0, _asyncToGenerator3.default)(function* (files) {
5396
5350
  __webpack_require__(1)(_this6.parsers[parserName], 'Trying to watch an uncompiled parser config: %s', parserName);
5397
5351
  if (firstChange) {
@@ -5416,16 +5370,14 @@ module.exports =
5416
5370
  } catch (error) {
5417
5371
  _this6._reporter.reportError('CodegenRunner.watch', error);
5418
5372
  }
5419
- // eslint-disable-next-line no-console
5420
- console.log('Watching for changes to %s...', parserName);
5373
+ _this6._reporter.reportMessage('Watching for changes to ' + parserName + '...');
5421
5374
  });
5422
5375
 
5423
5376
  return function (_x4) {
5424
5377
  return _ref9.apply(this, arguments);
5425
5378
  };
5426
5379
  })());
5427
- // eslint-disable-next-line no-console
5428
- console.log('Watching for changes to %s...', parserName);
5380
+ this._reporter.reportMessage('Watching for changes to ' + parserName + '...');
5429
5381
  });
5430
5382
 
5431
5383
  function watch(_x3) {
@@ -5445,7 +5397,7 @@ module.exports =
5445
5397
  module.exports = CodegenRunner;
5446
5398
 
5447
5399
  /***/ }),
5448
- /* 53 */
5400
+ /* 52 */
5449
5401
  /***/ (function(module, exports, __webpack_require__) {
5450
5402
 
5451
5403
  /**
@@ -5466,16 +5418,18 @@ module.exports =
5466
5418
  Source = _require.Source;
5467
5419
 
5468
5420
  function parseFile(baseDir, file) {
5469
- var text = __webpack_require__(7).readFileSync(__webpack_require__(8).join(baseDir, file.relPath), 'utf8');
5470
- return parse(new Source(text, file.relPath));
5421
+ var text = __webpack_require__(7).readFileSync(__webpack_require__(6).join(baseDir, file.relPath), 'utf8');
5422
+ return parse(new Source(text, file.relPath), {
5423
+ experimentalFragmentVariables: true
5424
+ });
5471
5425
  }
5472
5426
 
5473
5427
  exports.getParser = function getParser(baseDir) {
5474
- return new (__webpack_require__(28))({ baseDir: baseDir, parse: parseFile });
5428
+ return new (__webpack_require__(30))({ baseDir: baseDir, parse: parseFile });
5475
5429
  };
5476
5430
 
5477
5431
  /***/ }),
5478
- /* 54 */
5432
+ /* 53 */
5479
5433
  /***/ (function(module, exports, __webpack_require__) {
5480
5434
 
5481
5435
  /**
@@ -5520,7 +5474,7 @@ module.exports =
5520
5474
  };
5521
5475
 
5522
5476
  /***/ }),
5523
- /* 55 */
5477
+ /* 54 */
5524
5478
  /***/ (function(module, exports, __webpack_require__) {
5525
5479
 
5526
5480
  /**
@@ -5606,20 +5560,21 @@ module.exports =
5606
5560
  return result;
5607
5561
  }
5608
5562
 
5609
- var cache = new (__webpack_require__(63))('FindGraphQLTags', 'v1');
5563
+ var cache = new (__webpack_require__(62))('FindGraphQLTags', 'v1');
5610
5564
 
5611
5565
  function memoizedFind(text, baseDir, file, options) {
5566
+ !file.exists ? true ? invariant(false, 'FindGraphQLTags: Called with non-existent file `%s`', file.relPath) : invariant(false) : void 0;
5612
5567
  return cache.getOrCompute(file.hash + (options.validateNames ? '1' : '0'), function () {
5613
- var absPath = __webpack_require__(8).join(baseDir, file.relPath);
5568
+ var absPath = __webpack_require__(6).join(baseDir, file.relPath);
5614
5569
  return find(text, absPath, options);
5615
5570
  });
5616
5571
  }
5617
5572
 
5618
- var CREATE_CONTAINER_FUNCTIONS = {
5619
- createFragmentContainer: true,
5620
- createPaginationContainer: true,
5621
- createRefetchContainer: true
5622
- };
5573
+ var CREATE_CONTAINER_FUNCTIONS = Object.create(null, {
5574
+ createFragmentContainer: { value: true },
5575
+ createPaginationContainer: { value: true },
5576
+ createRefetchContainer: { value: true }
5577
+ });
5623
5578
 
5624
5579
  var IGNORED_KEYS = {
5625
5580
  comments: true,
@@ -5688,7 +5643,7 @@ module.exports =
5688
5643
  args[_key - 2] = arguments[_key];
5689
5644
  }
5690
5645
 
5691
- throw new Error(__webpack_require__(27).format.apply(__webpack_require__(27), [msg].concat(args)));
5646
+ throw new Error(__webpack_require__(29).format.apply(__webpack_require__(29), [msg].concat(args)));
5692
5647
  }
5693
5648
  }
5694
5649
 
@@ -5725,7 +5680,7 @@ module.exports =
5725
5680
  };
5726
5681
 
5727
5682
  /***/ }),
5728
- /* 56 */
5683
+ /* 55 */
5729
5684
  /***/ (function(module, exports, __webpack_require__) {
5730
5685
 
5731
5686
  /**
@@ -5741,14 +5696,14 @@ module.exports =
5741
5696
 
5742
5697
  'use strict';
5743
5698
 
5744
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
5699
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
5745
5700
 
5746
5701
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
5747
5702
 
5748
- var _require = __webpack_require__(30),
5703
+ var _require = __webpack_require__(32),
5749
5704
  createUserError = _require.createUserError;
5750
5705
 
5751
- var _require2 = __webpack_require__(25),
5706
+ var _require2 = __webpack_require__(26),
5752
5707
  printField = _require2.printField;
5753
5708
 
5754
5709
  var getRawType = __webpack_require__(14).getRawType,
@@ -5832,7 +5787,7 @@ module.exports =
5832
5787
  flattenedSelections.set(nodeIdentifier, (0, _extends3['default'])({}, flattenedSelection, {
5833
5788
  selections: mergeSelections(flattenedSelection, selection, state, type)
5834
5789
  }));
5835
- } else if (flattenedSelection.kind === 'FragmentSpread') {
5790
+ } else if (flattenedSelection.kind === 'FragmentSpread' || flattenedSelection.kind === 'DeferrableFragmentSpread') {
5836
5791
  // Ignore duplicate fragment spreads.
5837
5792
  } else if (flattenedSelection.kind === 'LinkedField') {
5838
5793
  __webpack_require__(1)(selection.kind === 'LinkedField', 'FlattenTransform: Expected a LinkedField, got a %s', selection.kind);
@@ -5896,7 +5851,7 @@ module.exports =
5896
5851
  * selections.
5897
5852
  */
5898
5853
  function areEqualFields(thisField, thatField) {
5899
- return thisField.kind === thatField.kind && thisField.name === thatField.name && thisField.alias === thatField.alias && __webpack_require__(77)(thisField.args, thatField.args);
5854
+ return thisField.kind === thatField.kind && thisField.name === thatField.name && thisField.alias === thatField.alias && __webpack_require__(76)(thisField.args, thatField.args);
5900
5855
  }
5901
5856
 
5902
5857
  /**
@@ -5927,7 +5882,7 @@ module.exports =
5927
5882
  };
5928
5883
 
5929
5884
  /***/ }),
5930
- /* 57 */
5885
+ /* 56 */
5931
5886
  /***/ (function(module, exports, __webpack_require__) {
5932
5887
 
5933
5888
  /**
@@ -5952,21 +5907,30 @@ module.exports =
5952
5907
  (0, _classCallCheck3['default'])(this, GraphQLConsoleReporter);
5953
5908
 
5954
5909
  this._verbose = options.verbose;
5910
+ this._quiet = options.quiet;
5955
5911
  }
5956
5912
 
5913
+ GraphQLConsoleReporter.prototype.reportMessage = function reportMessage(message) {
5914
+ if (!this._quiet) {
5915
+ process.stdout.write(message + '\n');
5916
+ }
5917
+ };
5918
+
5957
5919
  GraphQLConsoleReporter.prototype.reportTime = function reportTime(name, ms) {
5958
- if (this._verbose) {
5959
- 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');
5960
- process.stdout.write(' ' + time + ' ' + __webpack_require__(16).gray(name) + '\n');
5920
+ if (this._verbose && !this.quiet) {
5921
+ 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');
5922
+ process.stdout.write(' ' + time + ' ' + __webpack_require__(17).gray(name) + '\n');
5961
5923
  }
5962
5924
  };
5963
5925
 
5964
5926
  GraphQLConsoleReporter.prototype.reportError = function reportError(caughtLocation, error) {
5965
- process.stdout.write(__webpack_require__(16).red('ERROR:\n' + error.message + '\n'));
5966
- if (this._verbose) {
5967
- var frames = error.stack.match(/^ {4}at .*$/gm);
5968
- if (frames) {
5969
- process.stdout.write(__webpack_require__(16).gray('From: ' + caughtLocation + '\n' + frames.join('\n') + '\n'));
5927
+ if (!this._quiet) {
5928
+ process.stdout.write(__webpack_require__(17).red('ERROR:\n' + error.message + '\n'));
5929
+ if (this._verbose) {
5930
+ var frames = error.stack.match(/^ {4}at .*$/gm);
5931
+ if (frames) {
5932
+ process.stdout.write(__webpack_require__(17).gray('From: ' + caughtLocation + '\n' + frames.join('\n') + '\n'));
5933
+ }
5970
5934
  }
5971
5935
  }
5972
5936
  };
@@ -5981,7 +5945,7 @@ module.exports =
5981
5945
  module.exports = GraphQLConsoleReporter;
5982
5946
 
5983
5947
  /***/ }),
5984
- /* 58 */
5948
+ /* 57 */
5985
5949
  /***/ (function(module, exports, __webpack_require__) {
5986
5950
 
5987
5951
  /**
@@ -6012,6 +5976,12 @@ module.exports =
6012
5976
  this._reporters = reporters;
6013
5977
  }
6014
5978
 
5979
+ GraphQLMultiReporter.prototype.reportMessage = function reportMessage(message) {
5980
+ this._reporters.forEach(function (reporter) {
5981
+ reporter.reportMessage(message);
5982
+ });
5983
+ };
5984
+
6015
5985
  GraphQLMultiReporter.prototype.reportTime = function reportTime(name, ms) {
6016
5986
  this._reporters.forEach(function (reporter) {
6017
5987
  reporter.reportTime(name, ms);
@@ -6030,7 +6000,7 @@ module.exports =
6030
6000
  module.exports = GraphQLMultiReporter;
6031
6001
 
6032
6002
  /***/ }),
6033
- /* 59 */
6003
+ /* 58 */
6034
6004
  /***/ (function(module, exports, __webpack_require__) {
6035
6005
 
6036
6006
  /**
@@ -6046,20 +6016,20 @@ module.exports =
6046
6016
 
6047
6017
  'use strict';
6048
6018
 
6049
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
6019
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
6050
6020
 
6051
6021
  var _classCallCheck3 = _interopRequireDefault(__webpack_require__(10));
6052
6022
 
6053
6023
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
6054
6024
 
6055
- var _require = __webpack_require__(29),
6025
+ var _require = __webpack_require__(31),
6056
6026
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
6057
6027
 
6058
6028
  var _require2 = __webpack_require__(14),
6059
6029
  getNullableType = _require2.getNullableType,
6060
6030
  getRawType = _require2.getRawType,
6061
6031
  getTypeFromAST = _require2.getTypeFromAST,
6062
- isOperationDefinitionAST = _require2.isOperationDefinitionAST;
6032
+ isExecutableDefinitionAST = _require2.isExecutableDefinitionAST;
6063
6033
 
6064
6034
  var _require3 = __webpack_require__(3),
6065
6035
  assertCompositeType = _require3.assertCompositeType,
@@ -6110,7 +6080,7 @@ module.exports =
6110
6080
  // TODO T24511737 figure out if this is dangerous
6111
6081
  schema = extendSchema(schema, ast, { assumeValid: true });
6112
6082
  ast.definitions.forEach(function (definition) {
6113
- if (isOperationDefinitionAST(definition)) {
6083
+ if (isExecutableDefinitionAST(definition)) {
6114
6084
  nodes.push(_this.transform(schema, definition));
6115
6085
  }
6116
6086
  }, this);
@@ -6778,7 +6748,7 @@ module.exports =
6778
6748
  module.exports = GraphQLParser;
6779
6749
 
6780
6750
  /***/ }),
6781
- /* 60 */
6751
+ /* 59 */
6782
6752
  /***/ (function(module, exports, __webpack_require__) {
6783
6753
 
6784
6754
  /**
@@ -6831,7 +6801,7 @@ module.exports =
6831
6801
  };
6832
6802
 
6833
6803
  /***/ }),
6834
- /* 61 */
6804
+ /* 60 */
6835
6805
  /***/ (function(module, exports, __webpack_require__) {
6836
6806
 
6837
6807
  /**
@@ -6856,9 +6826,9 @@ module.exports =
6856
6826
  * https://github.com/babel/babel/issues/6333
6857
6827
  */
6858
6828
  function generate(ast) {
6859
- var originalUnionTypeAnnotation = __webpack_require__(15).prototype.UnionTypeAnnotation;
6860
- var originalIntersectionTypeAnnotation = __webpack_require__(15).prototype.IntersectionTypeAnnotation;
6861
- __webpack_require__(15).prototype.UnionTypeAnnotation = function (node) {
6829
+ var originalUnionTypeAnnotation = __webpack_require__(16).prototype.UnionTypeAnnotation;
6830
+ var originalIntersectionTypeAnnotation = __webpack_require__(16).prototype.IntersectionTypeAnnotation;
6831
+ __webpack_require__(16).prototype.UnionTypeAnnotation = function (node) {
6862
6832
  var needsParens = node.types.length > 1;
6863
6833
  if (needsParens) {
6864
6834
  this.token('(');
@@ -6868,7 +6838,7 @@ module.exports =
6868
6838
  this.token(')');
6869
6839
  }
6870
6840
  };
6871
- __webpack_require__(15).prototype.IntersectionTypeAnnotation = function (node) {
6841
+ __webpack_require__(16).prototype.IntersectionTypeAnnotation = function (node) {
6872
6842
  var needsParens = node.types.length > 1;
6873
6843
  if (needsParens) {
6874
6844
  this.token('(');
@@ -6884,8 +6854,8 @@ module.exports =
6884
6854
  quotes: 'single'
6885
6855
  }).code;
6886
6856
  } finally {
6887
- __webpack_require__(15).prototype.UnionTypeAnnotation = originalUnionTypeAnnotation;
6888
- __webpack_require__(15).prototype.IntersectionTypeAnnotation = originalIntersectionTypeAnnotation;
6857
+ __webpack_require__(16).prototype.UnionTypeAnnotation = originalUnionTypeAnnotation;
6858
+ __webpack_require__(16).prototype.IntersectionTypeAnnotation = originalIntersectionTypeAnnotation;
6889
6859
  }
6890
6860
  }
6891
6861
 
@@ -6894,7 +6864,7 @@ module.exports =
6894
6864
  };
6895
6865
 
6896
6866
  /***/ }),
6897
- /* 62 */
6867
+ /* 61 */
6898
6868
  /***/ (function(module, exports, __webpack_require__) {
6899
6869
 
6900
6870
  /**
@@ -6910,7 +6880,7 @@ module.exports =
6910
6880
 
6911
6881
  'use strict';
6912
6882
 
6913
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
6883
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
6914
6884
 
6915
6885
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
6916
6886
 
@@ -6920,8 +6890,8 @@ module.exports =
6920
6890
  getIdentifierForArgumentValue = _require.getIdentifierForArgumentValue,
6921
6891
  IRTransformer = _require.IRTransformer;
6922
6892
 
6923
- var getFragmentScope = __webpack_require__(34).getFragmentScope,
6924
- getRootScope = __webpack_require__(34).getRootScope;
6893
+ var getFragmentScope = __webpack_require__(35).getFragmentScope,
6894
+ getRootScope = __webpack_require__(35).getRootScope;
6925
6895
 
6926
6896
  /**
6927
6897
  * A tranform that converts a set of documents containing fragments/fragment
@@ -6998,6 +6968,20 @@ module.exports =
6998
6968
  });
6999
6969
  }
7000
6970
 
6971
+ function transformDeferrableFragmentSpread(context, fragments, scope, spread) {
6972
+ var directives = transformDirectives(scope, spread.directives);
6973
+ var fragment = context.getFragment(spread.name);
6974
+ var appliedFragment = transformFragment(context, fragments, scope, fragment, spread.fragmentArgs);
6975
+ if (!appliedFragment) {
6976
+ return null;
6977
+ }
6978
+ return (0, _extends3['default'])({}, spread, {
6979
+ fragmentArgs: [],
6980
+ directives: directives,
6981
+ name: appliedFragment.name
6982
+ });
6983
+ }
6984
+
7001
6985
  function transformField(context, fragments, scope, field) {
7002
6986
  var args = transformArguments(scope, field.args);
7003
6987
  var directives = transformDirectives(scope, field.directives);
@@ -7049,6 +7033,8 @@ module.exports =
7049
7033
  nextSelection = transformNode(context, fragments, scope, selection);
7050
7034
  } else if (selection.kind === 'FragmentSpread') {
7051
7035
  nextSelection = transformFragmentSpread(context, fragments, scope, selection);
7036
+ } else if (selection.kind === 'DeferrableFragmentSpread') {
7037
+ nextSelection = transformDeferrableFragmentSpread(context, fragments, scope, selection);
7052
7038
  } else if (selection.kind === 'Condition') {
7053
7039
  var conditionSelections = transformCondition(context, fragments, scope, selection);
7054
7040
  if (conditionSelections) {
@@ -7162,7 +7148,7 @@ module.exports =
7162
7148
  };
7163
7149
 
7164
7150
  /***/ }),
7165
- /* 63 */
7151
+ /* 62 */
7166
7152
  /***/ (function(module, exports, __webpack_require__) {
7167
7153
 
7168
7154
  /**
@@ -7203,9 +7189,9 @@ module.exports =
7203
7189
 
7204
7190
  // Include username in the cache dir to avoid issues with directories being
7205
7191
  // owned by a different user.
7206
- var username = __webpack_require__(49).userInfo().username;
7207
- var cacheID = __webpack_require__(23).createHash('md5').update(cacheBreaker).update(username).digest('hex');
7208
- this._dir = __webpack_require__(8).join(__webpack_require__(49).tmpdir(), name + '-' + cacheID);
7192
+ var username = __webpack_require__(48).userInfo().username;
7193
+ var cacheID = __webpack_require__(24).createHash('md5').update(cacheBreaker).update(username).digest('hex');
7194
+ this._dir = __webpack_require__(6).join(__webpack_require__(48).tmpdir(), name + '-' + cacheID);
7209
7195
  if (!__webpack_require__(7).existsSync(this._dir)) {
7210
7196
  __webpack_require__(7).mkdirSync(this._dir);
7211
7197
  }
@@ -7215,7 +7201,7 @@ module.exports =
7215
7201
  var _this = this;
7216
7202
 
7217
7203
  return Profiler.run('RelayCompilerCache.getOrCompute', function () {
7218
- var cacheFile = __webpack_require__(8).join(_this._dir, key);
7204
+ var cacheFile = __webpack_require__(6).join(_this._dir, key);
7219
7205
  if (__webpack_require__(7).existsSync(cacheFile)) {
7220
7206
  return JSON.parse(__webpack_require__(7).readFileSync(cacheFile, 'utf8'));
7221
7207
  }
@@ -7231,7 +7217,7 @@ module.exports =
7231
7217
  module.exports = RelayCompilerCache;
7232
7218
 
7233
7219
  /***/ }),
7234
- /* 64 */
7220
+ /* 63 */
7235
7221
  /***/ (function(module, exports) {
7236
7222
 
7237
7223
  /**
@@ -7262,7 +7248,7 @@ module.exports =
7262
7248
  };
7263
7249
 
7264
7250
  /***/ }),
7265
- /* 65 */
7251
+ /* 64 */
7266
7252
  /***/ (function(module, exports, __webpack_require__) {
7267
7253
 
7268
7254
  /**
@@ -7280,7 +7266,7 @@ module.exports =
7280
7266
 
7281
7267
  // TODO T21875029 ../../relay-runtime/util/getRelayHandleKey
7282
7268
 
7283
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7269
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7284
7270
 
7285
7271
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7286
7272
 
@@ -7329,7 +7315,7 @@ module.exports =
7329
7315
  };
7330
7316
 
7331
7317
  /***/ }),
7332
- /* 66 */
7318
+ /* 65 */
7333
7319
  /***/ (function(module, exports, __webpack_require__) {
7334
7320
 
7335
7321
  /**
@@ -7362,10 +7348,10 @@ module.exports =
7362
7348
  Profiler = _require.Profiler,
7363
7349
  SchemaUtils = _require.SchemaUtils;
7364
7350
 
7365
- var _require2 = __webpack_require__(18),
7351
+ var _require2 = __webpack_require__(19),
7366
7352
  ImmutableMap = _require2.Map;
7367
7353
 
7368
- var isOperationDefinitionAST = SchemaUtils.isOperationDefinitionAST;
7354
+ var isExecutableDefinitionAST = SchemaUtils.isExecutableDefinitionAST;
7369
7355
 
7370
7356
  var RelayFileWriter = function () {
7371
7357
  function RelayFileWriter(_ref) {
@@ -7401,7 +7387,7 @@ module.exports =
7401
7387
  var baseDefinitionNames = new Set();
7402
7388
  _this._baseDocuments.forEach(function (doc) {
7403
7389
  doc.definitions.forEach(function (def) {
7404
- if (isOperationDefinitionAST(def) && def.name) {
7390
+ if (isExecutableDefinitionAST(def) && def.name) {
7405
7391
  baseDefinitionNames.add(def.name.value);
7406
7392
  }
7407
7393
  });
@@ -7430,7 +7416,7 @@ module.exports =
7430
7416
  doc.definitions.forEach(function (def) {
7431
7417
  if (def.name) {
7432
7418
  definitionsMeta.set(def.name.value, {
7433
- dir: __webpack_require__(8).join(_this._config.baseDir, __webpack_require__(8).dirname(filePath)),
7419
+ dir: __webpack_require__(6).join(_this._config.baseDir, __webpack_require__(6).dirname(filePath)),
7434
7420
  ast: def
7435
7421
  });
7436
7422
  }
@@ -7439,13 +7425,13 @@ module.exports =
7439
7425
 
7440
7426
  // Verify using local and global rules, can run global verifications here
7441
7427
  // because all files are processed together
7442
- var validationRules = [].concat((0, _toConsumableArray3['default'])(__webpack_require__(44).LOCAL_RULES), (0, _toConsumableArray3['default'])(__webpack_require__(44).GLOBAL_RULES));
7428
+ var validationRules = [].concat((0, _toConsumableArray3['default'])(__webpack_require__(45).LOCAL_RULES), (0, _toConsumableArray3['default'])(__webpack_require__(45).GLOBAL_RULES));
7443
7429
  var customizedValidationRules = _this._config.validationRules;
7444
7430
  if (customizedValidationRules) {
7445
7431
  validationRules = [].concat((0, _toConsumableArray3['default'])(validationRules), (0, _toConsumableArray3['default'])(customizedValidationRules.LOCAL_RULES || []), (0, _toConsumableArray3['default'])(customizedValidationRules.GLOBAL_RULES || []));
7446
7432
  }
7447
7433
 
7448
- var definitions = ASTConvert.convertASTDocumentsWithBase(extendedSchema, _this._baseDocuments.valueSeq().toArray(), _this._documents.valueSeq().toArray(), validationRules, __webpack_require__(22).transform.bind(__webpack_require__(22)));
7434
+ var definitions = ASTConvert.convertASTDocumentsWithBase(extendedSchema, _this._baseDocuments.valueSeq().toArray(), _this._documents.valueSeq().toArray(), validationRules, __webpack_require__(23).transform.bind(__webpack_require__(23)));
7449
7435
 
7450
7436
  var compilerContext = new CompilerContext(_this._baseSchema, extendedSchema).addAll(definitions);
7451
7437
 
@@ -7453,7 +7439,7 @@ module.exports =
7453
7439
  if (configOutputDirectory) {
7454
7440
  return configOutputDirectory;
7455
7441
  }
7456
- var generatedPath = __webpack_require__(8).join(getDefinitionMeta(definitionName).dir, '__generated__');
7442
+ var generatedPath = __webpack_require__(6).join(getDefinitionMeta(definitionName).dir, '__generated__');
7457
7443
  var cachedDir = allOutputDirectories.get(generatedPath);
7458
7444
  if (!cachedDir) {
7459
7445
  cachedDir = addCodegenDir(generatedPath);
@@ -7461,9 +7447,9 @@ module.exports =
7461
7447
  return cachedDir;
7462
7448
  };
7463
7449
 
7464
- var transformedFlowContext = compilerContext.applyTransforms(__webpack_require__(39).flowTransforms, _this._reporter);
7450
+ var transformedFlowContext = compilerContext.applyTransforms(__webpack_require__(40).flowTransforms, _this._reporter);
7465
7451
  var transformedQueryContext = compilerContext.applyTransforms([].concat((0, _toConsumableArray3['default'])(_this._config.compilerTransforms.commonTransforms), (0, _toConsumableArray3['default'])(_this._config.compilerTransforms.queryTransforms)), _this._reporter);
7466
- var artifacts = __webpack_require__(45)(compilerContext, _this._config.compilerTransforms, _this._reporter);
7452
+ var artifacts = __webpack_require__(46)(compilerContext, _this._config.compilerTransforms, _this._reporter);
7467
7453
 
7468
7454
  var existingFragmentNames = new Set(definitions.map(function (definition) {
7469
7455
  return definition.name;
@@ -7496,7 +7482,7 @@ module.exports =
7496
7482
  var flowNode = transformedFlowContext.get(node.name);
7497
7483
  __webpack_require__(1)(flowNode, 'RelayFileWriter: did not compile flow types for: %s', node.name);
7498
7484
 
7499
- var flowTypes = __webpack_require__(39).generate(flowNode, {
7485
+ var flowTypes = __webpack_require__(40).generate(flowNode, {
7500
7486
  customScalars: _this._config.customScalars,
7501
7487
  enumsHasteModule: _this._config.enumsHasteModule,
7502
7488
  existingFragmentNames: existingFragmentNames,
@@ -7559,7 +7545,7 @@ module.exports =
7559
7545
  }();
7560
7546
 
7561
7547
  function md5(x) {
7562
- return __webpack_require__(23).createHash('md5').update(x, 'utf8').digest('hex');
7548
+ return __webpack_require__(24).createHash('md5').update(x, 'utf8').digest('hex');
7563
7549
  }
7564
7550
 
7565
7551
  function validateConfig(config) {
@@ -7571,7 +7557,7 @@ module.exports =
7571
7557
  module.exports = RelayFileWriter;
7572
7558
 
7573
7559
  /***/ }),
7574
- /* 67 */
7560
+ /* 66 */
7575
7561
  /***/ (function(module, exports, __webpack_require__) {
7576
7562
 
7577
7563
  /**
@@ -7587,7 +7573,7 @@ module.exports =
7587
7573
 
7588
7574
  'use strict';
7589
7575
 
7590
- var _require = __webpack_require__(38),
7576
+ var _require = __webpack_require__(39),
7591
7577
  readOnlyArrayOfType = _require.readOnlyArrayOfType;
7592
7578
 
7593
7579
  var _require2 = __webpack_require__(3),
@@ -7685,7 +7671,7 @@ module.exports =
7685
7671
  };
7686
7672
 
7687
7673
  /***/ }),
7688
- /* 68 */
7674
+ /* 67 */
7689
7675
  /***/ (function(module, exports, __webpack_require__) {
7690
7676
 
7691
7677
  /**
@@ -7701,13 +7687,13 @@ module.exports =
7701
7687
 
7702
7688
  'use strict';
7703
7689
 
7704
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7690
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7705
7691
 
7706
7692
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
7707
7693
 
7708
7694
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7709
7695
 
7710
- var _require = __webpack_require__(43),
7696
+ var _require = __webpack_require__(44),
7711
7697
  hasUnaliasedSelection = _require.hasUnaliasedSelection;
7712
7698
 
7713
7699
  var _require2 = __webpack_require__(3),
@@ -7821,7 +7807,7 @@ module.exports =
7821
7807
  };
7822
7808
 
7823
7809
  /***/ }),
7824
- /* 69 */
7810
+ /* 68 */
7825
7811
  /***/ (function(module, exports, __webpack_require__) {
7826
7812
 
7827
7813
  /**
@@ -7843,27 +7829,28 @@ module.exports =
7843
7829
  InlineFragmentsTransform = _require.InlineFragmentsTransform,
7844
7830
  SkipClientFieldTransform = _require.SkipClientFieldTransform,
7845
7831
  SkipRedundantNodesTransform = _require.SkipRedundantNodesTransform,
7846
- SkipUnreachableNodeTransform = _require.SkipUnreachableNodeTransform;
7832
+ SkipUnreachableNodeTransform = _require.SkipUnreachableNodeTransform,
7833
+ StripUnusedVariablesTransform = _require.StripUnusedVariablesTransform;
7847
7834
 
7848
7835
  // Transforms applied to the code used to process a query response.
7849
- var relaySchemaExtensions = [__webpack_require__(35).SCHEMA_EXTENSION, __webpack_require__(26).SCHEMA_EXTENSION];
7836
+ var relaySchemaExtensions = [__webpack_require__(36).SCHEMA_EXTENSION, __webpack_require__(28).SCHEMA_EXTENSION];
7850
7837
 
7851
7838
  // Transforms applied to both operations and fragments for both reading and
7852
7839
  // writing from the store.
7853
- var relayCommonTransforms = [__webpack_require__(35).transform, __webpack_require__(71).transform, __webpack_require__(26).transform, __webpack_require__(42).transform, __webpack_require__(37).transformOperations];
7840
+ var relayCommonTransforms = [__webpack_require__(36).transform, __webpack_require__(70).transform, __webpack_require__(28).transform, __webpack_require__(43).transform, __webpack_require__(38).transformOperations];
7854
7841
 
7855
7842
  // Transforms applied to fragments used for reading data from a store
7856
- var relayFragmentTransforms = [__webpack_require__(65).transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform];
7843
+ var relayFragmentTransforms = [__webpack_require__(64).transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform];
7857
7844
 
7858
7845
  // Transforms applied to queries/mutations/subscriptions that are used for
7859
7846
  // fetching data from the server and parsing those responses.
7860
- var relayQueryTransforms = [__webpack_require__(37).transformSpreads, __webpack_require__(62).transform, SkipClientFieldTransform.transform, SkipUnreachableNodeTransform.transform, __webpack_require__(68).transform];
7847
+ var relayQueryTransforms = [__webpack_require__(38).transformSpreads, __webpack_require__(61).transform, SkipClientFieldTransform.transform, SkipUnreachableNodeTransform.transform, __webpack_require__(67).transform];
7861
7848
 
7862
7849
  // Transforms applied to the code used to process a query response.
7863
- var relayCodegenTransforms = [InlineFragmentsTransform.transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform, __webpack_require__(40).transform, FilterDirectivesTransform.transform];
7850
+ var relayCodegenTransforms = [InlineFragmentsTransform.transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform, __webpack_require__(41).transform, FilterDirectivesTransform.transform];
7864
7851
 
7865
7852
  // Transforms applied before printing the query sent to the server.
7866
- var relayPrintTransforms = [FlattenTransform.transformWithOptions({}), __webpack_require__(40).transform, __webpack_require__(70).transform, FilterDirectivesTransform.transform];
7853
+ var relayPrintTransforms = [FlattenTransform.transformWithOptions({}), __webpack_require__(41).transform, __webpack_require__(69).transform, FilterDirectivesTransform.transform, StripUnusedVariablesTransform.transform];
7867
7854
 
7868
7855
  module.exports = {
7869
7856
  commonTransforms: relayCommonTransforms,
@@ -7875,7 +7862,7 @@ module.exports =
7875
7862
  };
7876
7863
 
7877
7864
  /***/ }),
7878
- /* 70 */
7865
+ /* 69 */
7879
7866
  /***/ (function(module, exports, __webpack_require__) {
7880
7867
 
7881
7868
  /**
@@ -7891,7 +7878,7 @@ module.exports =
7891
7878
 
7892
7879
  'use strict';
7893
7880
 
7894
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7881
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7895
7882
 
7896
7883
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7897
7884
 
@@ -7925,7 +7912,7 @@ module.exports =
7925
7912
  };
7926
7913
 
7927
7914
  /***/ }),
7928
- /* 71 */
7915
+ /* 70 */
7929
7916
  /***/ (function(module, exports, __webpack_require__) {
7930
7917
 
7931
7918
  /**
@@ -7943,13 +7930,13 @@ module.exports =
7943
7930
 
7944
7931
  // TODO T21875029 ../../../relay-runtime/util/RelayDefaultHandleKey
7945
7932
 
7946
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
7933
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
7947
7934
 
7948
7935
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
7949
7936
 
7950
7937
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7951
7938
 
7952
- var _require = __webpack_require__(36),
7939
+ var _require = __webpack_require__(37),
7953
7940
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
7954
7941
 
7955
7942
  var _require2 = __webpack_require__(3),
@@ -8006,7 +7993,7 @@ module.exports =
8006
7993
  };
8007
7994
 
8008
7995
  /***/ }),
8009
- /* 72 */
7996
+ /* 71 */
8010
7997
  /***/ (function(module, exports, __webpack_require__) {
8011
7998
 
8012
7999
  /**
@@ -8172,7 +8159,7 @@ module.exports =
8172
8159
  };
8173
8160
 
8174
8161
  /***/ }),
8175
- /* 73 */
8162
+ /* 72 */
8176
8163
  /***/ (function(module, exports, __webpack_require__) {
8177
8164
 
8178
8165
  /**
@@ -8188,13 +8175,13 @@ module.exports =
8188
8175
 
8189
8176
  'use strict';
8190
8177
 
8191
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
8178
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
8192
8179
 
8193
8180
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
8194
8181
 
8195
8182
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8196
8183
 
8197
- var IMap = __webpack_require__(18).Map;
8184
+ var IMap = __webpack_require__(19).Map;
8198
8185
 
8199
8186
  /**
8200
8187
  * A transform that removes redundant fields and fragment spreads. Redundancy is
@@ -8325,6 +8312,7 @@ module.exports =
8325
8312
  var identifier = __webpack_require__(47)(selection);
8326
8313
  switch (selection.kind) {
8327
8314
  case 'ScalarField':
8315
+ case 'DeferrableFragmentSpread':
8328
8316
  case 'FragmentSpread':
8329
8317
  {
8330
8318
  if (!selectionMap.has(identifier)) {
@@ -8376,7 +8364,7 @@ module.exports =
8376
8364
  };
8377
8365
 
8378
8366
  /***/ }),
8379
- /* 74 */
8367
+ /* 73 */
8380
8368
  /***/ (function(module, exports, __webpack_require__) {
8381
8369
 
8382
8370
  /**
@@ -8392,7 +8380,7 @@ module.exports =
8392
8380
 
8393
8381
  'use strict';
8394
8382
 
8395
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
8383
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
8396
8384
 
8397
8385
  var _toConsumableArray3 = _interopRequireDefault(__webpack_require__(9));
8398
8386
 
@@ -8441,8 +8429,8 @@ module.exports =
8441
8429
  nextSelection = transformNode(context, fragments, selection);
8442
8430
  }
8443
8431
  break;
8444
- case 'FragmentSpread':
8445
- // Skip fragment spreads if the referenced fragment is empty
8432
+ case 'DeferrableFragmentSpread':
8433
+ // Skip deferred fragment spreads if the referenced fragment is empty
8446
8434
  if (!fragments.has(selection.name)) {
8447
8435
  var fragment = context.getFragment(selection.name);
8448
8436
  var nextFragment = transformNode(context, fragments, fragment);
@@ -8452,6 +8440,17 @@ module.exports =
8452
8440
  nextSelection = selection;
8453
8441
  }
8454
8442
  break;
8443
+ case 'FragmentSpread':
8444
+ // Skip fragment spreads if the referenced fragment is empty
8445
+ if (!fragments.has(selection.name)) {
8446
+ var _fragment = context.getFragment(selection.name);
8447
+ var _nextFragment = transformNode(context, fragments, _fragment);
8448
+ fragments.set(selection.name, _nextFragment);
8449
+ }
8450
+ if (fragments.get(selection.name)) {
8451
+ nextSelection = selection;
8452
+ }
8453
+ break;
8455
8454
  case 'LinkedField':
8456
8455
  nextSelection = transformNode(context, fragments, selection);
8457
8456
  break;
@@ -8495,7 +8494,7 @@ module.exports =
8495
8494
  };
8496
8495
 
8497
8496
  /***/ }),
8498
- /* 75 */
8497
+ /* 74 */
8499
8498
  /***/ (function(module, exports, __webpack_require__) {
8500
8499
 
8501
8500
  /**
@@ -8561,7 +8560,7 @@ module.exports =
8561
8560
  };
8562
8561
 
8563
8562
  /***/ }),
8564
- /* 76 */
8563
+ /* 75 */
8565
8564
  /***/ (function(module, exports, __webpack_require__) {
8566
8565
 
8567
8566
  /**
@@ -8577,7 +8576,7 @@ module.exports =
8577
8576
 
8578
8577
  'use strict';
8579
8578
 
8580
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
8579
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
8581
8580
 
8582
8581
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8583
8582
 
@@ -8586,9 +8585,59 @@ module.exports =
8586
8585
  * by the query itself.
8587
8586
  */
8588
8587
  function stripUnusedVariablesTransform(context) {
8588
+ var fragmentToVariables = new Map();
8589
+ var fragmentToFragmentSpreads = new Map();
8590
+ var rootToVariables = new Map();
8591
+ var rootToFragmentSpreads = new Map();
8592
+ context.forEachDocument(function (document) {
8593
+ var fragmentVariables = void 0;
8594
+ var fragmentFragmentSpreads = void 0;
8595
+ var rootVariables = void 0;
8596
+ var rootFragmentSpreads = void 0;
8597
+ __webpack_require__(27).visit(document, {
8598
+ Root: {
8599
+ enter: function enter(root) {
8600
+ rootVariables = new Set();
8601
+ rootToVariables.set(root.name, rootVariables);
8602
+ rootFragmentSpreads = new Set();
8603
+ rootToFragmentSpreads.set(root.name, rootFragmentSpreads);
8604
+ },
8605
+ leave: function leave(root) {
8606
+ rootVariables = null;
8607
+ rootFragmentSpreads = null;
8608
+ }
8609
+ },
8610
+ Fragment: {
8611
+ enter: function enter(fragment) {
8612
+ fragmentVariables = new Set();
8613
+ fragmentToVariables.set(fragment.name, fragmentVariables);
8614
+ fragmentFragmentSpreads = new Set();
8615
+ fragmentToFragmentSpreads.set(fragment.name, fragmentFragmentSpreads);
8616
+ },
8617
+ leave: function leave(fragment) {
8618
+ fragmentVariables = null;
8619
+ fragmentFragmentSpreads = null;
8620
+ }
8621
+ },
8622
+ Variable: function Variable(variable) {
8623
+ fragmentVariables && fragmentVariables.add(variable.variableName);
8624
+ rootVariables && rootVariables.add(variable.variableName);
8625
+ },
8626
+ FragmentSpread: function FragmentSpread(spread) {
8627
+ fragmentFragmentSpreads && fragmentFragmentSpreads.add(spread.name);
8628
+ rootFragmentSpreads && rootFragmentSpreads.add(spread.name);
8629
+ }
8630
+ });
8631
+ });
8632
+ var variablesMemo = new Map();
8633
+ rootToVariables.forEach(function (variables, root) {
8634
+ Array.from(__webpack_require__(15)(rootToFragmentSpreads.get(root), 'root ' + root + ' wasn\'t found in StripUnusedVariablesTransform')).forEach(function (spread) {
8635
+ return into(variables, allVariablesReferencedInFragment(variablesMemo, spread, fragmentToVariables, fragmentToFragmentSpreads));
8636
+ });
8637
+ });
8589
8638
  return __webpack_require__(12).transform(context, {
8590
8639
  Root: function Root(root) {
8591
- return transformRoot(context, root);
8640
+ return transformRoot(context, root, __webpack_require__(15)(rootToVariables.get(root.name), 'root ' + root.name + ' wasn\'t found in StripUnusedVariablesTransform'));
8592
8641
  },
8593
8642
  // Include fragments, but do not traverse into them.
8594
8643
  Fragment: function Fragment(id) {
@@ -8597,43 +8646,32 @@ module.exports =
8597
8646
  });
8598
8647
  }
8599
8648
 
8600
- function transformRoot(context, root) {
8601
- var state = {
8602
- referencedVariables: new Set()
8603
- };
8604
- var newContext = __webpack_require__(12).transform(__webpack_require__(46)(root, context), {
8605
- Argument: visitArgument,
8606
- Condition: visitCondition
8607
- }, function () {
8608
- return state;
8609
- });
8610
- var transformedNode = newContext.getRoot(root.name);
8611
- /**
8612
- * Remove the extraneous arguments *after* transform returns, since fragments
8613
- * could be transformed after the root query.
8614
- */
8615
- return (0, _extends3['default'])({}, transformedNode, {
8616
- argumentDefinitions: transformedNode.argumentDefinitions.filter(function (arg) {
8617
- return state.referencedVariables.has(arg.name);
8618
- })
8619
- });
8649
+ function allVariablesReferencedInFragment(variablesMemo, fragment, fragmentToVariables, fragmentToFragmentSpreads) {
8650
+ var variables = variablesMemo.get(fragment);
8651
+ if (!variables) {
8652
+ var directVariables = __webpack_require__(15)(fragmentToVariables.get(fragment), 'fragment ' + fragment + ' wasn\'t found in StripUnusedVariablesTransform');
8653
+ variables = Array.from(__webpack_require__(15)(fragmentToFragmentSpreads.get(fragment), 'fragment ' + fragment + ' wasn\'t found in StripUnusedVariablesTransform')).reduce(function (allVariables, fragmentSpread) {
8654
+ return into(allVariables, allVariablesReferencedInFragment(variablesMemo, fragmentSpread, fragmentToVariables, fragmentToFragmentSpreads));
8655
+ }, directVariables);
8656
+ variablesMemo.set(fragment, variables);
8657
+ }
8658
+ return variables;
8620
8659
  }
8621
8660
 
8622
- function visitArgument(argument, state) {
8623
- var value = argument.value;
8624
-
8625
- if (value.kind === 'Variable') {
8626
- state.referencedVariables.add(value.variableName);
8627
- }
8628
- return argument;
8661
+ function transformRoot(context, root, variables) {
8662
+ return (0, _extends3['default'])({}, root, {
8663
+ argumentDefinitions: root.argumentDefinitions.filter(function (arg) {
8664
+ return variables.has(arg.name);
8665
+ })
8666
+ });
8629
8667
  }
8630
8668
 
8631
- function visitCondition(condition, state) {
8632
- var innerCondition = condition.condition;
8633
- if (innerCondition.kind === 'Variable') {
8634
- state.referencedVariables.add(innerCondition.variableName);
8635
- }
8636
- return condition;
8669
+ // Returns the union of setA and setB. Modifies setA!
8670
+ function into(setA, setB) {
8671
+ setB.forEach(function (item) {
8672
+ return setA.add(item);
8673
+ });
8674
+ return setA;
8637
8675
  }
8638
8676
 
8639
8677
  module.exports = {
@@ -8641,7 +8679,7 @@ module.exports =
8641
8679
  };
8642
8680
 
8643
8681
  /***/ }),
8644
- /* 77 */
8682
+ /* 76 */
8645
8683
  /***/ (function(module, exports) {
8646
8684
 
8647
8685
  /**
@@ -8760,7 +8798,7 @@ module.exports =
8760
8798
  module.exports = areEqual;
8761
8799
 
8762
8800
  /***/ }),
8763
- /* 78 */
8801
+ /* 77 */
8764
8802
  /***/ (function(module, exports) {
8765
8803
 
8766
8804
  /**
@@ -8897,7 +8935,7 @@ module.exports =
8897
8935
  module.exports = dedupeJSONStringify;
8898
8936
 
8899
8937
  /***/ }),
8900
- /* 79 */
8938
+ /* 78 */
8901
8939
  /***/ (function(module, exports) {
8902
8940
 
8903
8941
  /**
@@ -8969,6 +9007,52 @@ module.exports =
8969
9007
 
8970
9008
  module.exports = deepMergeAssignments;
8971
9009
 
9010
+ /***/ }),
9011
+ /* 79 */
9012
+ /***/ (function(module, exports, __webpack_require__) {
9013
+
9014
+ /**
9015
+ * Copyright (c) 2013-present, Facebook, Inc.
9016
+ *
9017
+ * This source code is licensed under the MIT license found in the
9018
+ * LICENSE file in the root directory of this source tree.
9019
+ *
9020
+ * @providesModule filterContextForNode
9021
+ *
9022
+ * @format
9023
+ */
9024
+
9025
+ 'use strict';
9026
+
9027
+ var _require = __webpack_require__(27),
9028
+ visit = _require.visit;
9029
+
9030
+ /**
9031
+ * Returns a GraphQLCompilerContext containing only the documents referenced
9032
+ * by and including the provided node.
9033
+ */
9034
+ function filterContextForNode(node, context) {
9035
+ var queue = [node];
9036
+ var filteredContext = new (__webpack_require__(25))(context.serverSchema, context.clientSchema).add(node);
9037
+ var visitorConfig = {
9038
+ FragmentSpread: function FragmentSpread(fragmentSpread) {
9039
+ var name = fragmentSpread.name;
9040
+
9041
+ if (!filteredContext.get(name)) {
9042
+ var fragment = context.getFragment(name);
9043
+ filteredContext = filteredContext.add(fragment);
9044
+ queue.push(fragment);
9045
+ }
9046
+ }
9047
+ };
9048
+ while (queue.length) {
9049
+ visit(queue.pop(), visitorConfig);
9050
+ }
9051
+ return filteredContext;
9052
+ }
9053
+
9054
+ module.exports = filterContextForNode;
9055
+
8972
9056
  /***/ }),
8973
9057
  /* 80 */
8974
9058
  /***/ (function(module, exports) {
@@ -9103,13 +9187,13 @@ module.exports =
9103
9187
  function getModuleName(filePath) {
9104
9188
  // index.js -> index
9105
9189
  // index.js.flow -> index.js
9106
- var filename = __webpack_require__(8).basename(filePath, __webpack_require__(8).extname(filePath));
9190
+ var filename = __webpack_require__(6).basename(filePath, __webpack_require__(6).extname(filePath));
9107
9191
 
9108
9192
  // index.js -> index (when extension has multiple segments)
9109
9193
  filename = filename.replace(/(?:\.\w+)+/, '');
9110
9194
 
9111
9195
  // /path/to/button/index.js -> button
9112
- var moduleName = filename === 'index' ? __webpack_require__(8).basename(__webpack_require__(8).dirname(filePath)) : filename;
9196
+ var moduleName = filename === 'index' ? __webpack_require__(6).basename(__webpack_require__(6).dirname(filePath)) : filename;
9113
9197
 
9114
9198
  // Example.ios -> Example
9115
9199
  // Example.product.android -> Example
@@ -9143,7 +9227,7 @@ module.exports =
9143
9227
 
9144
9228
  'use strict';
9145
9229
 
9146
- var _require = __webpack_require__(36),
9230
+ var _require = __webpack_require__(37),
9147
9231
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
9148
9232
 
9149
9233
  /**
@@ -9331,7 +9415,7 @@ module.exports =
9331
9415
 
9332
9416
  'use strict';
9333
9417
 
9334
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
9418
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
9335
9419
 
9336
9420
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
9337
9421
 
@@ -9458,7 +9542,7 @@ module.exports =
9458
9542
 
9459
9543
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
9460
9544
 
9461
- var _extends3 = _interopRequireDefault(__webpack_require__(6));
9545
+ var _extends3 = _interopRequireDefault(__webpack_require__(8));
9462
9546
 
9463
9547
  let writeRelayGeneratedFile = (() => {
9464
9548
  var _ref = (0, _asyncToGenerator3.default)(function* (codegenDir, generatedNode, formatModule, flowText, _persistQuery, platform, relayRuntimeModule, sourceHash) {
@@ -9484,7 +9568,7 @@ module.exports =
9484
9568
  var oldHash = Profiler.run('RelayFileWriter:compareHash', function () {
9485
9569
  var oldContent = codegenDir.read(filename);
9486
9570
  // Hash the concrete node including the query text.
9487
- var hasher = __webpack_require__(23).createHash('md5');
9571
+ var hasher = __webpack_require__(24).createHash('md5');
9488
9572
  hasher.update('cache-breaker-6');
9489
9573
  hasher.update(JSON.stringify(generatedNode));
9490
9574
  if (flowText) {
@@ -9510,7 +9594,7 @@ module.exports =
9510
9594
  devOnlyProperties.text = generatedNode.text;
9511
9595
  generatedNode = (0, _extends3['default'])({}, generatedNode, {
9512
9596
  text: null,
9513
- id: yield persistQuery(__webpack_require__(17)(generatedNode.text))
9597
+ id: yield persistQuery(__webpack_require__(18)(generatedNode.text))
9514
9598
  });
9515
9599
  break;
9516
9600
  case __webpack_require__(11).BATCH_REQUEST:
@@ -9524,7 +9608,7 @@ module.exports =
9524
9608
  var _ref2 = (0, _asyncToGenerator3.default)(function* (request) {
9525
9609
  return (0, _extends3['default'])({}, request, {
9526
9610
  text: null,
9527
- id: yield persistQuery(__webpack_require__(17)(request.text))
9611
+ id: yield persistQuery(__webpack_require__(18)(request.text))
9528
9612
  });
9529
9613
  });
9530
9614
 
@@ -9543,7 +9627,7 @@ module.exports =
9543
9627
  }
9544
9628
  }
9545
9629
 
9546
- var devOnlyAssignments = __webpack_require__(79)('node', devOnlyProperties);
9630
+ var devOnlyAssignments = __webpack_require__(78)('node', devOnlyProperties);
9547
9631
 
9548
9632
  var moduleText = formatModule({
9549
9633
  moduleName: moduleName,
@@ -9551,7 +9635,7 @@ module.exports =
9551
9635
  docText: docText,
9552
9636
  flowText: flowText,
9553
9637
  hash: hash ? '@relayHash ' + hash : null,
9554
- concreteText: __webpack_require__(78)(generatedNode),
9638
+ concreteText: __webpack_require__(77)(generatedNode),
9555
9639
  devOnlyAssignments: devOnlyAssignments,
9556
9640
  relayRuntimeModule: relayRuntimeModule,
9557
9641
  sourceHash: sourceHash