relay-compiler 1.5.0-rc.1 → 1.5.0

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