relay-compiler 1.5.0-rc.1 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Relay v1.5.0-rc.1
3
+ * Relay v1.5.0
4
4
  *
5
5
  * Copyright (c) 2013-present, Facebook, Inc.
6
6
  *
@@ -67,7 +67,7 @@ module.exports =
67
67
 
68
68
  'use strict';
69
69
 
70
- var _asyncToGenerator2 = __webpack_require__(13);
70
+ var _asyncToGenerator2 = __webpack_require__(12);
71
71
 
72
72
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
73
73
 
@@ -75,12 +75,12 @@ module.exports =
75
75
 
76
76
  let run = (() => {
77
77
  var _ref2 = (0, _asyncToGenerator3.default)(function* (options) {
78
- var schemaPath = __webpack_require__(4).resolve(process.cwd(), options.schema);
79
- if (!__webpack_require__(6).existsSync(schemaPath)) {
78
+ var schemaPath = __webpack_require__(3).resolve(process.cwd(), options.schema);
79
+ if (!__webpack_require__(5).existsSync(schemaPath)) {
80
80
  throw new Error('--schema path does not exist: ' + schemaPath + '.');
81
81
  }
82
- var srcDir = __webpack_require__(4).resolve(process.cwd(), options.src);
83
- if (!__webpack_require__(6).existsSync(srcDir)) {
82
+ var srcDir = __webpack_require__(3).resolve(process.cwd(), options.src);
83
+ if (!__webpack_require__(5).existsSync(srcDir)) {
84
84
  throw new Error('--source path does not exist: ' + srcDir + '.');
85
85
  }
86
86
  if (options.watch && !options.watchman) {
@@ -89,30 +89,55 @@ module.exports =
89
89
  if (options.watch && !hasWatchmanRootFile(srcDir)) {
90
90
  throw new Error(('\n--watch requires that the src directory have a valid watchman "root" file.\n\nRoot files can include:\n- A .git/ Git folder\n- A .hg/ Mercurial folder\n- A .watchmanconfig file\n\nEnsure that one such file exists in ' + srcDir + ' or its parents.\n ').trim());
91
91
  }
92
+ if (options.verbose && options.quiet) {
93
+ throw new Error("I can't be quiet and verbose at the same time");
94
+ }
92
95
 
93
- var reporter = new ConsoleReporter({ verbose: options.verbose });
96
+ var reporter = new ConsoleReporter({
97
+ verbose: options.verbose,
98
+ quiet: options.quiet
99
+ });
94
100
 
95
101
  var useWatchman = options.watchman && (yield WatchmanClient.isAvailable());
96
102
 
103
+ var schema = getSchema(schemaPath);
97
104
  var parserConfigs = {
98
- 'default': {
105
+ js: {
99
106
  baseDir: srcDir,
100
- getFileFilter: __webpack_require__(41).getFileFilter,
101
- getParser: __webpack_require__(41).getParser,
107
+ getFileFilter: __webpack_require__(42).getFileFilter,
108
+ getParser: __webpack_require__(42).getParser,
102
109
  getSchema: function getSchema() {
103
- return _getSchema(schemaPath);
110
+ return schema;
104
111
  },
105
112
  watchmanExpression: useWatchman ? buildWatchExpression(options) : null,
106
113
  filepaths: useWatchman ? null : getFilepathsFromGlob(srcDir, options)
114
+ },
115
+ graphql: {
116
+ baseDir: srcDir,
117
+ getParser: DotGraphQLParser.getParser,
118
+ getSchema: function getSchema() {
119
+ return schema;
120
+ },
121
+ watchmanExpression: useWatchman ? buildWatchExpression({
122
+ extensions: ['graphql'],
123
+ include: options.include,
124
+ exclude: options.exclude
125
+ }) : null,
126
+ filepaths: useWatchman ? null : getFilepathsFromGlob(srcDir, {
127
+ extensions: ['graphql'],
128
+ include: options.include,
129
+ exclude: options.exclude
130
+ })
107
131
  }
108
132
  };
109
133
  var writerConfigs = {
110
- 'default': {
134
+ js: {
111
135
  getWriter: getRelayFileWriter(srcDir),
112
136
  isGeneratedFile: function isGeneratedFile(filePath) {
113
137
  return filePath.endsWith('.js') && filePath.includes('__generated__');
114
138
  },
115
- parser: 'default'
139
+ parser: 'js',
140
+ baseParsers: ['graphql']
116
141
  }
117
142
  };
118
143
  var codegenRunner = new CodegenRunner({
@@ -146,12 +171,13 @@ module.exports =
146
171
 
147
172
  __webpack_require__(91);
148
173
 
149
- var _require = __webpack_require__(5),
174
+ var _require = __webpack_require__(6),
150
175
  CodegenRunner = _require.CodegenRunner,
151
176
  ConsoleReporter = _require.ConsoleReporter,
152
- WatchmanClient = _require.WatchmanClient;
177
+ WatchmanClient = _require.WatchmanClient,
178
+ DotGraphQLParser = _require.DotGraphQLParser;
153
179
 
154
- var _require2 = __webpack_require__(3),
180
+ var _require2 = __webpack_require__(4),
155
181
  buildASTSchema = _require2.buildASTSchema,
156
182
  buildClientSchema = _require2.buildClientSchema,
157
183
  parse = _require2.parse,
@@ -186,8 +212,6 @@ module.exports =
186
212
  var glob = __webpack_require__(96);
187
213
  return glob.sync(patterns, {
188
214
  cwd: baseDir,
189
- bashNative: [],
190
- onlyFiles: true,
191
215
  ignore: exclude
192
216
  });
193
217
  }
@@ -200,7 +224,7 @@ module.exports =
200
224
  baseDocuments = _ref.baseDocuments,
201
225
  sourceControl = _ref.sourceControl,
202
226
  reporter = _ref.reporter;
203
- return new (__webpack_require__(66))({
227
+ return new (__webpack_require__(65))({
204
228
  config: {
205
229
  baseDir: baseDir,
206
230
  compilerTransforms: {
@@ -226,10 +250,10 @@ module.exports =
226
250
  };
227
251
  }
228
252
 
229
- function _getSchema(schemaPath) {
253
+ function getSchema(schemaPath) {
230
254
  try {
231
- var source = __webpack_require__(6).readFileSync(schemaPath, 'utf8');
232
- if (__webpack_require__(4).extname(schemaPath) === '.json') {
255
+ var source = __webpack_require__(5).readFileSync(schemaPath, 'utf8');
256
+ if (__webpack_require__(3).extname(schemaPath) === '.json') {
233
257
  source = printSchema(buildClientSchema(JSON.parse(source).data));
234
258
  }
235
259
  source = '\n directive @include(if: Boolean) on FRAGMENT_SPREAD | FIELD\n directive @skip(if: Boolean) on FRAGMENT_SPREAD | FIELD\n\n ' + source + '\n ';
@@ -243,13 +267,13 @@ module.exports =
243
267
  // or a parent so that it can be watched
244
268
  var WATCHMAN_ROOT_FILES = ['.git', '.hg', '.watchmanconfig'];
245
269
  function hasWatchmanRootFile(testPath) {
246
- while (__webpack_require__(4).dirname(testPath) !== testPath) {
270
+ while (__webpack_require__(3).dirname(testPath) !== testPath) {
247
271
  if (WATCHMAN_ROOT_FILES.some(function (file) {
248
- return __webpack_require__(6).existsSync(__webpack_require__(4).join(testPath, file));
272
+ return __webpack_require__(5).existsSync(__webpack_require__(3).join(testPath, file));
249
273
  })) {
250
274
  return true;
251
275
  }
252
- testPath = __webpack_require__(4).dirname(testPath);
276
+ testPath = __webpack_require__(3).dirname(testPath);
253
277
  }
254
278
  return false;
255
279
  }
@@ -288,6 +312,10 @@ module.exports =
288
312
  describe: 'More verbose logging',
289
313
  type: 'boolean'
290
314
  },
315
+ quiet: {
316
+ describe: 'No output to stdout',
317
+ type: 'boolean'
318
+ },
291
319
  watchman: {
292
320
  describe: 'Use watchman when not in watch mode',
293
321
  type: 'boolean',
@@ -327,16 +355,22 @@ module.exports =
327
355
  /* 3 */
328
356
  /***/ (function(module, exports) {
329
357
 
330
- module.exports = require("graphql");
358
+ module.exports = require("path");
331
359
 
332
360
  /***/ }),
333
361
  /* 4 */
334
362
  /***/ (function(module, exports) {
335
363
 
336
- module.exports = require("path");
364
+ module.exports = require("graphql");
337
365
 
338
366
  /***/ }),
339
367
  /* 5 */
368
+ /***/ (function(module, exports) {
369
+
370
+ module.exports = require("fs");
371
+
372
+ /***/ }),
373
+ /* 6 */
340
374
  /***/ (function(module, exports, __webpack_require__) {
341
375
 
342
376
  /**
@@ -352,49 +386,43 @@ module.exports =
352
386
 
353
387
  'use strict';
354
388
 
355
- var _require = __webpack_require__(74),
389
+ var _require = __webpack_require__(73),
356
390
  SourceControlMercurial = _require.SourceControlMercurial;
357
391
 
358
392
  module.exports = {
359
- ASTConvert: __webpack_require__(50),
360
- CodegenDirectory: __webpack_require__(20),
361
- CodegenRunner: __webpack_require__(51),
362
- CodegenWatcher: __webpack_require__(21),
363
- CompilerContext: __webpack_require__(30),
364
- ConsoleReporter: __webpack_require__(56),
365
- DotGraphQLParser: __webpack_require__(52),
366
- ASTCache: __webpack_require__(28),
367
- IRTransformer: __webpack_require__(12),
368
- IRVisitor: __webpack_require__(32),
369
- MultiReporter: __webpack_require__(57),
370
- Parser: __webpack_require__(58),
371
- Printer: __webpack_require__(24),
393
+ ASTConvert: __webpack_require__(49),
394
+ CodegenDirectory: __webpack_require__(21),
395
+ CodegenRunner: __webpack_require__(50),
396
+ CodegenWatcher: __webpack_require__(22),
397
+ CompilerContext: __webpack_require__(32),
398
+ ConsoleReporter: __webpack_require__(55),
399
+ DotGraphQLParser: __webpack_require__(51),
400
+ ASTCache: __webpack_require__(30),
401
+ IRTransformer: __webpack_require__(13),
402
+ IRVisitor: __webpack_require__(26),
403
+ MultiReporter: __webpack_require__(56),
404
+ Parser: __webpack_require__(57),
405
+ Printer: __webpack_require__(25),
372
406
  Profiler: __webpack_require__(7),
373
407
  SchemaUtils: __webpack_require__(14),
374
408
  SourceControlMercurial: SourceControlMercurial,
375
- Validator: __webpack_require__(33),
376
- WatchmanClient: __webpack_require__(22),
377
- filterContextForNode: __webpack_require__(45),
409
+ Validator: __webpack_require__(34),
410
+ WatchmanClient: __webpack_require__(23),
411
+ filterContextForNode: __webpack_require__(79),
378
412
  getIdentifierForArgumentValue: __webpack_require__(81),
379
413
  getLiteralArgumentValues: __webpack_require__(82),
380
414
  isEquivalentType: __webpack_require__(85),
381
- nullthrows: __webpack_require__(47),
382
-
383
- FilterDirectivesTransform: __webpack_require__(53),
384
- FlattenTransform: __webpack_require__(55),
385
- InlineFragmentsTransform: __webpack_require__(59),
386
- SkipClientFieldTransform: __webpack_require__(71),
387
- SkipRedundantNodesTransform: __webpack_require__(72),
388
- SkipUnreachableNodeTransform: __webpack_require__(73),
389
- StripUnusedVariablesTransform: __webpack_require__(75)
415
+ nullthrows: __webpack_require__(16),
416
+
417
+ FilterDirectivesTransform: __webpack_require__(52),
418
+ FlattenTransform: __webpack_require__(54),
419
+ InlineFragmentsTransform: __webpack_require__(58),
420
+ SkipClientFieldTransform: __webpack_require__(70),
421
+ SkipRedundantNodesTransform: __webpack_require__(71),
422
+ SkipUnreachableNodeTransform: __webpack_require__(72),
423
+ StripUnusedVariablesTransform: __webpack_require__(74)
390
424
  };
391
425
 
392
- /***/ }),
393
- /* 6 */
394
- /***/ (function(module, exports) {
395
-
396
- module.exports = require("fs");
397
-
398
426
  /***/ }),
399
427
  /* 7 */
400
428
  /***/ (function(module, exports, __webpack_require__) {
@@ -411,7 +439,7 @@ module.exports =
411
439
 
412
440
  'use strict';
413
441
 
414
- var _asyncToGenerator2 = __webpack_require__(13);
442
+ var _asyncToGenerator2 = __webpack_require__(12);
415
443
 
416
444
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
417
445
 
@@ -757,6 +785,12 @@ module.exports =
757
785
 
758
786
  /***/ }),
759
787
  /* 12 */
788
+ /***/ (function(module, exports) {
789
+
790
+ module.exports = require("babel-runtime/helpers/asyncToGenerator");
791
+
792
+ /***/ }),
793
+ /* 13 */
760
794
  /***/ (function(module, exports, __webpack_require__) {
761
795
 
762
796
  /**
@@ -955,12 +989,20 @@ module.exports =
955
989
  nextNode = this._traverseChildren(prevNode, ['fields']);
956
990
  break;
957
991
  case 'Condition':
992
+ nextNode = this._traverseChildren(prevNode, ['directives', 'selections'], ['condition']);
993
+ if (!nextNode.selections.length) {
994
+ nextNode = null;
995
+ }
996
+ break;
958
997
  case 'InlineFragment':
959
998
  nextNode = this._traverseChildren(prevNode, ['directives', 'selections']);
960
999
  if (!nextNode.selections.length) {
961
1000
  nextNode = null;
962
1001
  }
963
1002
  break;
1003
+ case 'DeferrableFragmentSpread':
1004
+ nextNode = this._traverseChildren(prevNode, ['args', 'fragmentArgs', 'directives']);
1005
+ break;
964
1006
  case 'Fragment':
965
1007
  case 'Root':
966
1008
  nextNode = this._traverseChildren(prevNode, ['argumentDefinitions', 'directives', 'selections']);
@@ -1030,12 +1072,6 @@ module.exports =
1030
1072
 
1031
1073
  module.exports = { transform: transform };
1032
1074
 
1033
- /***/ }),
1034
- /* 13 */
1035
- /***/ (function(module, exports) {
1036
-
1037
- module.exports = require("babel-runtime/helpers/asyncToGenerator");
1038
-
1039
1075
  /***/ }),
1040
1076
  /* 14 */
1041
1077
  /***/ (function(module, exports, __webpack_require__) {
@@ -1053,7 +1089,7 @@ module.exports =
1053
1089
 
1054
1090
  'use strict';
1055
1091
 
1056
- var _require = __webpack_require__(3),
1092
+ var _require = __webpack_require__(4),
1057
1093
  assertAbstractType = _require.assertAbstractType,
1058
1094
  getNamedType = _require.getNamedType,
1059
1095
  getNullableType = _require.getNullableType,
@@ -1120,7 +1156,7 @@ module.exports =
1120
1156
  * Get the unmodified type, with list/null wrappers removed.
1121
1157
  */
1122
1158
  function getRawType(type) {
1123
- return __webpack_require__(47)(getNamedType(type));
1159
+ return __webpack_require__(16)(getNamedType(type));
1124
1160
  }
1125
1161
 
1126
1162
  /**
@@ -1174,7 +1210,7 @@ module.exports =
1174
1210
  *
1175
1211
  * Determine if an AST node contains a fragment/operation definition.
1176
1212
  */
1177
- function isOperationDefinitionAST(ast) {
1213
+ function isExecutableDefinitionAST(ast) {
1178
1214
  return ast.kind === 'FragmentDefinition' || ast.kind === 'OperationDefinition';
1179
1215
  }
1180
1216
 
@@ -1214,7 +1250,7 @@ module.exports =
1214
1250
  implementsInterface: implementsInterface,
1215
1251
  isAbstractType: isAbstractType,
1216
1252
  isUnionType: isUnionType,
1217
- isOperationDefinitionAST: isOperationDefinitionAST,
1253
+ isExecutableDefinitionAST: isExecutableDefinitionAST,
1218
1254
  isSchemaDefinitionAST: isSchemaDefinitionAST,
1219
1255
  mayImplement: mayImplement
1220
1256
  };
@@ -1236,33 +1272,34 @@ module.exports =
1236
1272
 
1237
1273
  'use strict';
1238
1274
 
1239
- var _require = __webpack_require__(5),
1275
+ var _require = __webpack_require__(6),
1240
1276
  FilterDirectivesTransform = _require.FilterDirectivesTransform,
1241
1277
  FlattenTransform = _require.FlattenTransform,
1242
1278
  InlineFragmentsTransform = _require.InlineFragmentsTransform,
1243
1279
  SkipClientFieldTransform = _require.SkipClientFieldTransform,
1244
1280
  SkipRedundantNodesTransform = _require.SkipRedundantNodesTransform,
1245
- SkipUnreachableNodeTransform = _require.SkipUnreachableNodeTransform;
1281
+ SkipUnreachableNodeTransform = _require.SkipUnreachableNodeTransform,
1282
+ StripUnusedVariablesTransform = _require.StripUnusedVariablesTransform;
1246
1283
 
1247
1284
  // Transforms applied to the code used to process a query response.
1248
- var relaySchemaExtensions = [__webpack_require__(35).SCHEMA_EXTENSION, __webpack_require__(26).SCHEMA_EXTENSION];
1285
+ var relaySchemaExtensions = [__webpack_require__(36).SCHEMA_EXTENSION, __webpack_require__(28).SCHEMA_EXTENSION];
1249
1286
 
1250
1287
  // Transforms applied to both operations and fragments for both reading and
1251
1288
  // writing from the store.
1252
- var relayCommonTransforms = [__webpack_require__(35).transform, __webpack_require__(70).transform, __webpack_require__(26).transform, __webpack_require__(42).transform, __webpack_require__(37).transformOperations];
1289
+ var relayCommonTransforms = [__webpack_require__(36).transform, __webpack_require__(69).transform, __webpack_require__(28).transform, __webpack_require__(43).transform, __webpack_require__(38).transformOperations];
1253
1290
 
1254
1291
  // Transforms applied to fragments used for reading data from a store
1255
- var relayFragmentTransforms = [__webpack_require__(65).transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform];
1292
+ var relayFragmentTransforms = [__webpack_require__(64).transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform];
1256
1293
 
1257
1294
  // Transforms applied to queries/mutations/subscriptions that are used for
1258
1295
  // fetching data from the server and parsing those responses.
1259
- var relayQueryTransforms = [__webpack_require__(37).transformSpreads, __webpack_require__(61).transform, SkipClientFieldTransform.transform, SkipUnreachableNodeTransform.transform, __webpack_require__(68).transform];
1296
+ var relayQueryTransforms = [__webpack_require__(38).transformSpreads, __webpack_require__(60).transform, SkipClientFieldTransform.transform, SkipUnreachableNodeTransform.transform, __webpack_require__(67).transform];
1260
1297
 
1261
1298
  // Transforms applied to the code used to process a query response.
1262
- var relayCodegenTransforms = [InlineFragmentsTransform.transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform, __webpack_require__(40).transform, FilterDirectivesTransform.transform];
1299
+ var relayCodegenTransforms = [InlineFragmentsTransform.transform, FlattenTransform.transformWithOptions({ flattenAbstractTypes: true }), SkipRedundantNodesTransform.transform, __webpack_require__(41).transform, FilterDirectivesTransform.transform];
1263
1300
 
1264
1301
  // Transforms applied before printing the query sent to the server.
1265
- var relayPrintTransforms = [FlattenTransform.transformWithOptions({}), __webpack_require__(40).transform, __webpack_require__(69).transform, FilterDirectivesTransform.transform];
1302
+ var relayPrintTransforms = [FlattenTransform.transformWithOptions({}), __webpack_require__(41).transform, __webpack_require__(68).transform, FilterDirectivesTransform.transform, StripUnusedVariablesTransform.transform];
1266
1303
 
1267
1304
  module.exports = {
1268
1305
  commonTransforms: relayCommonTransforms,
@@ -1277,28 +1314,57 @@ module.exports =
1277
1314
  /* 16 */
1278
1315
  /***/ (function(module, exports) {
1279
1316
 
1280
- module.exports = require("babel-generator/lib/printer");
1317
+ /**
1318
+ * Copyright (c) 2013-present, Facebook, Inc.
1319
+ *
1320
+ * This source code is licensed under the MIT license found in the
1321
+ * LICENSE file in the root directory of this source tree.
1322
+ *
1323
+ * @providesModule nullthrowsOSS
1324
+ *
1325
+ * @format
1326
+ */
1327
+ 'use strict';
1328
+
1329
+ var nullthrows = function nullthrows(x) {
1330
+ var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Got unexpected null or undefined';
1331
+
1332
+ if (x != null) {
1333
+ return x;
1334
+ }
1335
+ var error = new Error(message);
1336
+ error.framesToPop = 1; // Skip nullthrows own stack frame.
1337
+ throw error;
1338
+ };
1339
+
1340
+ module.exports = nullthrows;
1281
1341
 
1282
1342
  /***/ }),
1283
1343
  /* 17 */
1284
1344
  /***/ (function(module, exports) {
1285
1345
 
1286
- module.exports = require("chalk");
1346
+ module.exports = require("babel-generator/lib/printer");
1287
1347
 
1288
1348
  /***/ }),
1289
1349
  /* 18 */
1290
1350
  /***/ (function(module, exports) {
1291
1351
 
1292
- module.exports = require("fbjs/lib/nullthrows");
1352
+ module.exports = require("chalk");
1293
1353
 
1294
1354
  /***/ }),
1295
1355
  /* 19 */
1296
1356
  /***/ (function(module, exports) {
1297
1357
 
1298
- module.exports = require("immutable");
1358
+ module.exports = require("fbjs/lib/nullthrows");
1299
1359
 
1300
1360
  /***/ }),
1301
1361
  /* 20 */
1362
+ /***/ (function(module, exports) {
1363
+
1364
+ module.exports = require("immutable");
1365
+
1366
+ /***/ }),
1367
+ /* 21 */
1302
1368
  /***/ (function(module, exports, __webpack_require__) {
1303
1369
 
1304
1370
  /**
@@ -1314,7 +1380,7 @@ module.exports =
1314
1380
 
1315
1381
  'use strict';
1316
1382
 
1317
- var _asyncToGenerator2 = __webpack_require__(13);
1383
+ var _asyncToGenerator2 = __webpack_require__(12);
1318
1384
 
1319
1385
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
1320
1386
 
@@ -1356,10 +1422,18 @@ module.exports =
1356
1422
  (0, _classCallCheck3['default'])(this, CodegenDirectory);
1357
1423
 
1358
1424
  this.onlyValidate = !!options.onlyValidate;
1359
- if (__webpack_require__(6).existsSync(dir)) {
1360
- __webpack_require__(1)(__webpack_require__(6).statSync(dir).isDirectory(), 'Expected `%s` to be a directory.', dir);
1425
+ if (__webpack_require__(5).existsSync(dir)) {
1426
+ __webpack_require__(1)(__webpack_require__(5).statSync(dir).isDirectory(), 'Expected `%s` to be a directory.', dir);
1361
1427
  } else if (!this.onlyValidate) {
1362
- __webpack_require__(6).mkdirSync(dir);
1428
+ var dirs = [dir];
1429
+ var parent = __webpack_require__(3).dirname(dir);
1430
+ while (!__webpack_require__(5).existsSync(parent)) {
1431
+ dirs.unshift(parent);
1432
+ parent = __webpack_require__(3).dirname(parent);
1433
+ }
1434
+ dirs.forEach(function (d) {
1435
+ return __webpack_require__(5).mkdirSync(d);
1436
+ });
1363
1437
  }
1364
1438
  this._files = new Set();
1365
1439
  this.changes = {
@@ -1448,9 +1522,9 @@ module.exports =
1448
1522
  };
1449
1523
 
1450
1524
  CodegenDirectory.prototype.read = function read(filename) {
1451
- var filePath = __webpack_require__(4).join(this._dir, filename);
1452
- if (__webpack_require__(6).existsSync(filePath)) {
1453
- return __webpack_require__(6).readFileSync(filePath, 'utf8');
1525
+ var filePath = __webpack_require__(3).join(this._dir, filename);
1526
+ if (__webpack_require__(5).existsSync(filePath)) {
1527
+ return __webpack_require__(5).readFileSync(filePath, 'utf8');
1454
1528
  }
1455
1529
  return null;
1456
1530
  };
@@ -1477,9 +1551,9 @@ module.exports =
1477
1551
 
1478
1552
  __webpack_require__(7).run('CodegenDirectory.writeFile', function () {
1479
1553
  _this._addGenerated(filename);
1480
- var filePath = __webpack_require__(4).join(_this._dir, filename);
1481
- if (__webpack_require__(6).existsSync(filePath)) {
1482
- var existingContent = __webpack_require__(6).readFileSync(filePath, 'utf8');
1554
+ var filePath = __webpack_require__(3).join(_this._dir, filename);
1555
+ if (__webpack_require__(5).existsSync(filePath)) {
1556
+ var existingContent = __webpack_require__(5).readFileSync(filePath, 'utf8');
1483
1557
  if (existingContent === content) {
1484
1558
  _this.changes.unchanged.push(filename);
1485
1559
  } else {
@@ -1495,7 +1569,7 @@ module.exports =
1495
1569
 
1496
1570
  CodegenDirectory.prototype._writeFile = function _writeFile(filePath, content) {
1497
1571
  if (!this.onlyValidate) {
1498
- __webpack_require__(6).writeFileSync(filePath, content, 'utf8');
1572
+ __webpack_require__(5).writeFileSync(filePath, content, 'utf8');
1499
1573
  }
1500
1574
  };
1501
1575
 
@@ -1509,11 +1583,11 @@ module.exports =
1509
1583
  var _this2 = this;
1510
1584
 
1511
1585
  __webpack_require__(7).run('CodegenDirectory.deleteExtraFiles', function () {
1512
- __webpack_require__(6).readdirSync(_this2._dir).forEach(function (actualFile) {
1586
+ __webpack_require__(5).readdirSync(_this2._dir).forEach(function (actualFile) {
1513
1587
  if (!_this2._files.has(actualFile) && !/^\./.test(actualFile)) {
1514
1588
  if (!_this2.onlyValidate) {
1515
1589
  try {
1516
- __webpack_require__(6).unlinkSync(__webpack_require__(4).join(_this2._dir, actualFile));
1590
+ __webpack_require__(5).unlinkSync(__webpack_require__(3).join(_this2._dir, actualFile));
1517
1591
  } catch (e) {
1518
1592
  throw new Error('CodegenDirectory: Failed to delete `' + actualFile + '` in `' + _this2._dir + '`.');
1519
1593
  }
@@ -1525,7 +1599,7 @@ module.exports =
1525
1599
  };
1526
1600
 
1527
1601
  CodegenDirectory.prototype.getPath = function getPath(filename) {
1528
- return __webpack_require__(4).join(this._dir, filename);
1602
+ return __webpack_require__(3).join(this._dir, filename);
1529
1603
  };
1530
1604
 
1531
1605
  CodegenDirectory.prototype._addGenerated = function _addGenerated(filename) {
@@ -1539,7 +1613,7 @@ module.exports =
1539
1613
  module.exports = CodegenDirectory;
1540
1614
 
1541
1615
  /***/ }),
1542
- /* 21 */
1616
+ /* 22 */
1543
1617
  /***/ (function(module, exports, __webpack_require__) {
1544
1618
 
1545
1619
  /**
@@ -1554,14 +1628,14 @@ module.exports =
1554
1628
  */
1555
1629
  'use strict';
1556
1630
 
1557
- var _asyncToGenerator2 = __webpack_require__(13);
1631
+ var _asyncToGenerator2 = __webpack_require__(12);
1558
1632
 
1559
1633
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
1560
1634
 
1561
1635
  let queryFiles = (() => {
1562
1636
  var _ref3 = (0, _asyncToGenerator3.default)(function* (baseDir, expression, filter) {
1563
1637
  return yield __webpack_require__(7).waitFor('Watchman:query', (0, _asyncToGenerator3.default)(function* () {
1564
- var client = new (__webpack_require__(22))();
1638
+ var client = new (__webpack_require__(23))();
1565
1639
 
1566
1640
  var _ref = yield Promise.all([client.watchProject(baseDir), getFields(client)]),
1567
1641
  watchResp = _ref[0],
@@ -1628,7 +1702,7 @@ module.exports =
1628
1702
  let watch = (() => {
1629
1703
  var _ref7 = (0, _asyncToGenerator3.default)(function* (baseDir, expression, callback) {
1630
1704
  return yield __webpack_require__(7).waitFor('Watchman:subscribe', (0, _asyncToGenerator3.default)(function* () {
1631
- var client = new (__webpack_require__(22))();
1705
+ var client = new (__webpack_require__(23))();
1632
1706
  var watchResp = yield client.watchProject(baseDir);
1633
1707
 
1634
1708
  yield makeSubscription(client, watchResp.root, watchResp.relativePath, expression, callback);
@@ -1735,7 +1809,7 @@ module.exports =
1735
1809
  function updateFiles(files, baseDir, filter, fileChanges) {
1736
1810
  var fileMap = new Map();
1737
1811
  files.forEach(function (file) {
1738
- fileMap.set(file.relPath, file);
1812
+ file.exists && fileMap.set(file.relPath, file);
1739
1813
  });
1740
1814
 
1741
1815
  fileChanges.forEach(function (_ref2) {
@@ -1743,22 +1817,30 @@ module.exports =
1743
1817
  exists = _ref2.exists,
1744
1818
  hash = _ref2['content.sha1hex'];
1745
1819
 
1746
- var file = {
1747
- relPath: name,
1748
- hash: hash || hashFile(__webpack_require__(4).join(baseDir, name))
1749
- };
1750
- if (exists && filter(file)) {
1751
- fileMap.set(name, file);
1752
- } else {
1753
- fileMap['delete'](name);
1820
+ var shouldRemove = !exists;
1821
+ if (!shouldRemove) {
1822
+ var _file = {
1823
+ exists: true,
1824
+ relPath: name,
1825
+ hash: hash || hashFile(__webpack_require__(3).join(baseDir, name))
1826
+ };
1827
+ if (filter(_file)) {
1828
+ fileMap.set(name, _file);
1829
+ } else {
1830
+ shouldRemove = true;
1831
+ }
1754
1832
  }
1833
+ shouldRemove && fileMap.set(name, {
1834
+ exists: false,
1835
+ relPath: name
1836
+ });
1755
1837
  });
1756
1838
  return new Set(fileMap.values());
1757
1839
  }
1758
1840
 
1759
1841
  function hashFile(filename) {
1760
- var content = __webpack_require__(6).readFileSync(filename);
1761
- return __webpack_require__(23).createHash('sha1').update(content).digest('hex');
1842
+ var content = __webpack_require__(5).readFileSync(filename);
1843
+ return __webpack_require__(24).createHash('sha1').update(content).digest('hex');
1762
1844
  }
1763
1845
 
1764
1846
  module.exports = {
@@ -1770,7 +1852,7 @@ module.exports =
1770
1852
  };
1771
1853
 
1772
1854
  /***/ }),
1773
- /* 22 */
1855
+ /* 23 */
1774
1856
  /***/ (function(module, exports, __webpack_require__) {
1775
1857
 
1776
1858
  /**
@@ -1785,7 +1867,7 @@ module.exports =
1785
1867
  */
1786
1868
  'use strict';
1787
1869
 
1788
- var _asyncToGenerator2 = __webpack_require__(13);
1870
+ var _asyncToGenerator2 = __webpack_require__(12);
1789
1871
 
1790
1872
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
1791
1873
 
@@ -1881,13 +1963,13 @@ module.exports =
1881
1963
  module.exports = GraphQLWatchmanClient;
1882
1964
 
1883
1965
  /***/ }),
1884
- /* 23 */
1966
+ /* 24 */
1885
1967
  /***/ (function(module, exports) {
1886
1968
 
1887
1969
  module.exports = require("crypto");
1888
1970
 
1889
1971
  /***/ }),
1890
- /* 24 */
1972
+ /* 25 */
1891
1973
  /***/ (function(module, exports, __webpack_require__) {
1892
1974
 
1893
1975
  /**
@@ -1903,10 +1985,10 @@ module.exports =
1903
1985
 
1904
1986
  'use strict';
1905
1987
 
1906
- var _require = __webpack_require__(29),
1988
+ var _require = __webpack_require__(31),
1907
1989
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
1908
1990
 
1909
- var _require2 = __webpack_require__(3),
1991
+ var _require2 = __webpack_require__(4),
1910
1992
  GraphQLEnumType = _require2.GraphQLEnumType,
1911
1993
  GraphQLInputObjectType = _require2.GraphQLInputObjectType,
1912
1994
  GraphQLList = _require2.GraphQLList,
@@ -1968,6 +2050,8 @@ module.exports =
1968
2050
  str += parentCondition;
1969
2051
  str += printFragmentArguments(selection.args);
1970
2052
  str += printDirectives(selection.directives);
2053
+ } else if (selection.kind === 'DeferrableFragmentSpread') {
2054
+ str = selection.alias + ': ' + selection.storageKey;
1971
2055
  } else if (selection.kind === 'Condition') {
1972
2056
  var value = printValue(selection.condition);
1973
2057
  // For Flow
@@ -2118,7 +2202,50 @@ module.exports =
2118
2202
  module.exports = { print: print, printField: printField, printArguments: printArguments, printDirectives: printDirectives };
2119
2203
 
2120
2204
  /***/ }),
2121
- /* 25 */
2205
+ /* 26 */
2206
+ /***/ (function(module, exports, __webpack_require__) {
2207
+
2208
+ /**
2209
+ * Copyright (c) 2013-present, Facebook, Inc.
2210
+ *
2211
+ * This source code is licensed under the MIT license found in the
2212
+ * LICENSE file in the root directory of this source tree.
2213
+ *
2214
+ * @providesModule GraphQLIRVisitor
2215
+ *
2216
+ * @format
2217
+ */
2218
+ 'use strict';
2219
+
2220
+ var visit = __webpack_require__(4).visit;
2221
+
2222
+ var NodeKeys = {
2223
+ Argument: ['value'],
2224
+ Batch: ['requests', 'fragment'],
2225
+ Condition: ['condition', 'selections'],
2226
+ Directive: ['args'],
2227
+ Fragment: ['argumentDefinitions', 'directives', 'selections'],
2228
+ FragmentSpread: ['args', 'directives'],
2229
+ InlineFragment: ['directives', 'selections'],
2230
+ LinkedField: ['args', 'directives', 'selections'],
2231
+ Literal: [],
2232
+ LocalArgumentDefinition: [],
2233
+ Request: ['root'],
2234
+ Root: ['argumentDefinitions', 'directives', 'selections'],
2235
+ RootArgumentDefinition: [],
2236
+ ScalarField: ['args', 'directives'],
2237
+ Variable: [],
2238
+ DeferrableFragmentSpread: ['args', 'directives', 'fragmentArgs']
2239
+ };
2240
+
2241
+ function visitIR(root, visitor) {
2242
+ return visit(root, visitor, NodeKeys);
2243
+ }
2244
+
2245
+ module.exports = { visit: visitIR };
2246
+
2247
+ /***/ }),
2248
+ /* 27 */
2122
2249
  /***/ (function(module, exports, __webpack_require__) {
2123
2250
 
2124
2251
  /**
@@ -2142,11 +2269,11 @@ module.exports =
2142
2269
 
2143
2270
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2144
2271
 
2145
- var _require = __webpack_require__(3),
2272
+ var _require = __webpack_require__(4),
2146
2273
  assertAbstractType = _require.assertAbstractType,
2147
2274
  isAbstractType = _require.isAbstractType;
2148
2275
 
2149
- var _require2 = __webpack_require__(5),
2276
+ var _require2 = __webpack_require__(6),
2150
2277
  Parser = _require2.Parser,
2151
2278
  SchemaUtils = _require2.SchemaUtils;
2152
2279
 
@@ -2227,7 +2354,7 @@ module.exports =
2227
2354
  module.exports = RelayParser;
2228
2355
 
2229
2356
  /***/ }),
2230
- /* 26 */
2357
+ /* 28 */
2231
2358
  /***/ (function(module, exports, __webpack_require__) {
2232
2359
 
2233
2360
  /**
@@ -2247,7 +2374,7 @@ module.exports =
2247
2374
 
2248
2375
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2249
2376
 
2250
- var _require = __webpack_require__(5),
2377
+ var _require = __webpack_require__(6),
2251
2378
  CompilerContext = _require.CompilerContext,
2252
2379
  IRTransformer = _require.IRTransformer,
2253
2380
  getLiteralArgumentValues = _require.getLiteralArgumentValues;
@@ -2310,13 +2437,13 @@ module.exports =
2310
2437
  };
2311
2438
 
2312
2439
  /***/ }),
2313
- /* 27 */
2440
+ /* 29 */
2314
2441
  /***/ (function(module, exports) {
2315
2442
 
2316
2443
  module.exports = require("util");
2317
2444
 
2318
2445
  /***/ }),
2319
- /* 28 */
2446
+ /* 30 */
2320
2447
  /***/ (function(module, exports, __webpack_require__) {
2321
2448
 
2322
2449
  /**
@@ -2336,7 +2463,7 @@ module.exports =
2336
2463
 
2337
2464
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2338
2465
 
2339
- var _require = __webpack_require__(19),
2466
+ var _require = __webpack_require__(20),
2340
2467
  ImmutableMap = _require.Map;
2341
2468
 
2342
2469
  var ASTCache = function () {
@@ -2364,6 +2491,11 @@ module.exports =
2364
2491
  var documents = ImmutableMap();
2365
2492
 
2366
2493
  files.forEach(function (file) {
2494
+ if (!file.exists) {
2495
+ _this._documents['delete'](file.relPath);
2496
+ return;
2497
+ }
2498
+
2367
2499
  var doc = function () {
2368
2500
  try {
2369
2501
  return _this._parse(_this._baseDir, file);
@@ -2390,7 +2522,7 @@ module.exports =
2390
2522
  module.exports = ASTCache;
2391
2523
 
2392
2524
  /***/ }),
2393
- /* 29 */
2525
+ /* 31 */
2394
2526
  /***/ (function(module, exports) {
2395
2527
 
2396
2528
  /**
@@ -2411,7 +2543,7 @@ module.exports =
2411
2543
  };
2412
2544
 
2413
2545
  /***/ }),
2414
- /* 30 */
2546
+ /* 32 */
2415
2547
  /***/ (function(module, exports, __webpack_require__) {
2416
2548
 
2417
2549
  /**
@@ -2431,10 +2563,10 @@ module.exports =
2431
2563
 
2432
2564
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2433
2565
 
2434
- var _require = __webpack_require__(31),
2566
+ var _require = __webpack_require__(33),
2435
2567
  createUserError = _require.createUserError;
2436
2568
 
2437
- var _require2 = __webpack_require__(19),
2569
+ var _require2 = __webpack_require__(20),
2438
2570
  ImmutableOrderedMap = _require2.OrderedMap;
2439
2571
 
2440
2572
  /**
@@ -2574,7 +2706,7 @@ module.exports =
2574
2706
  module.exports = GraphQLCompilerContext;
2575
2707
 
2576
2708
  /***/ }),
2577
- /* 31 */
2709
+ /* 33 */
2578
2710
  /***/ (function(module, exports) {
2579
2711
 
2580
2712
  /**
@@ -2605,50 +2737,7 @@ module.exports =
2605
2737
  module.exports = { createUserError: createUserError };
2606
2738
 
2607
2739
  /***/ }),
2608
- /* 32 */
2609
- /***/ (function(module, exports, __webpack_require__) {
2610
-
2611
- /**
2612
- * Copyright (c) 2013-present, Facebook, Inc.
2613
- *
2614
- * This source code is licensed under the MIT license found in the
2615
- * LICENSE file in the root directory of this source tree.
2616
- *
2617
- * @providesModule GraphQLIRVisitor
2618
- *
2619
- * @format
2620
- */
2621
- 'use strict';
2622
-
2623
- var visit = __webpack_require__(3).visit;
2624
-
2625
- var NodeKeys = {
2626
- Argument: ['value'],
2627
- Batch: ['requests', 'fragment'],
2628
- Condition: ['condition', 'selections'],
2629
- Directive: ['args'],
2630
- Fragment: ['argumentDefinitions', 'directives', 'selections'],
2631
- FragmentSpread: ['args', 'directives'],
2632
- InlineFragment: ['directives', 'selections'],
2633
- LinkedField: ['args', 'directives', 'selections'],
2634
- Literal: [],
2635
- LocalArgumentDefinition: [],
2636
- Request: ['root'],
2637
- Root: ['argumentDefinitions', 'directives', 'selections'],
2638
- RootArgumentDefinition: [],
2639
- ScalarField: ['args', 'directives'],
2640
- Variable: [],
2641
- DeferrableFragmentSpread: ['args']
2642
- };
2643
-
2644
- function visitIR(root, visitor) {
2645
- return visit(root, visitor, NodeKeys);
2646
- }
2647
-
2648
- module.exports = { visit: visitIR };
2649
-
2650
- /***/ }),
2651
- /* 33 */
2740
+ /* 34 */
2652
2741
  /***/ (function(module, exports, __webpack_require__) {
2653
2742
 
2654
2743
  /**
@@ -2664,13 +2753,12 @@ module.exports =
2664
2753
 
2665
2754
  'use strict';
2666
2755
 
2667
- var _require = __webpack_require__(3),
2756
+ var _require = __webpack_require__(4),
2668
2757
  formatError = _require.formatError,
2669
2758
  FragmentsOnCompositeTypesRule = _require.FragmentsOnCompositeTypesRule,
2670
2759
  KnownArgumentNamesRule = _require.KnownArgumentNamesRule,
2671
2760
  KnownTypeNamesRule = _require.KnownTypeNamesRule,
2672
2761
  LoneAnonymousOperationRule = _require.LoneAnonymousOperationRule,
2673
- NoFragmentCyclesRule = _require.NoFragmentCyclesRule,
2674
2762
  NoUnusedVariablesRule = _require.NoUnusedVariablesRule,
2675
2763
  PossibleFragmentSpreadsRule = _require.PossibleFragmentSpreadsRule,
2676
2764
  ProvidedNonNullArgumentsRule = _require.ProvidedNonNullArgumentsRule,
@@ -2694,7 +2782,7 @@ module.exports =
2694
2782
  return e.source ? e.source.name + ': ' + e.message : e.message;
2695
2783
  });
2696
2784
 
2697
- var error = new Error(__webpack_require__(27).format('You supplied a GraphQL document with validation errors:\n%s', errorMessages.join('\n')));
2785
+ var error = new Error(__webpack_require__(29).format('You supplied a GraphQL document with validation errors:\n%s', errorMessages.join('\n')));
2698
2786
  error.validationErrors = formattedErrors;
2699
2787
  throw error;
2700
2788
  }
@@ -2704,8 +2792,10 @@ module.exports =
2704
2792
  GLOBAL_RULES: [KnownArgumentNamesRule,
2705
2793
  // TODO #19327202 Relay Classic generates some fragments in runtime, so Relay
2706
2794
  // Modern queries might reference fragments unknown in build time
2707
- //KnownFragmentNamesRule,
2708
- NoFragmentCyclesRule,
2795
+ // KnownFragmentNamesRule,
2796
+ // TODO: #25618795 Because of @argumentDefinitions, this validation
2797
+ // incorrectly flags a subset of fragments using @include/@skip as recursive.
2798
+ // NoFragmentCyclesRule,
2709
2799
  // TODO #19327144 Because of @argumentDefinitions, this validation
2710
2800
  // incorrectly marks some fragment variables as undefined.
2711
2801
  // NoUndefinedVariablesRule,
@@ -2728,7 +2818,7 @@ module.exports =
2728
2818
  };
2729
2819
 
2730
2820
  /***/ }),
2731
- /* 34 */
2821
+ /* 35 */
2732
2822
  /***/ (function(module, exports, __webpack_require__) {
2733
2823
 
2734
2824
  /**
@@ -2744,7 +2834,7 @@ module.exports =
2744
2834
 
2745
2835
  'use strict';
2746
2836
 
2747
- var _require = __webpack_require__(3),
2837
+ var _require = __webpack_require__(4),
2748
2838
  GraphQLNonNull = _require.GraphQLNonNull;
2749
2839
 
2750
2840
  /**
@@ -2892,7 +2982,7 @@ module.exports =
2892
2982
  module.exports = { getFragmentScope: getFragmentScope, getRootScope: getRootScope };
2893
2983
 
2894
2984
  /***/ }),
2895
- /* 35 */
2985
+ /* 36 */
2896
2986
  /***/ (function(module, exports, __webpack_require__) {
2897
2987
 
2898
2988
  /**
@@ -2914,7 +3004,7 @@ module.exports =
2914
3004
 
2915
3005
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
2916
3006
 
2917
- var _require = __webpack_require__(64),
3007
+ var _require = __webpack_require__(63),
2918
3008
  AFTER = _require.AFTER,
2919
3009
  BEFORE = _require.BEFORE,
2920
3010
  FIRST = _require.FIRST,
@@ -2923,10 +3013,10 @@ module.exports =
2923
3013
  // TODO T21875029 ../../../relay-runtime/RelayRuntime
2924
3014
 
2925
3015
 
2926
- var _require2 = __webpack_require__(49),
3016
+ var _require2 = __webpack_require__(48),
2927
3017
  ConnectionInterface = _require2.ConnectionInterface;
2928
3018
 
2929
- var _require3 = __webpack_require__(3),
3019
+ var _require3 = __webpack_require__(4),
2930
3020
  assertCompositeType = _require3.assertCompositeType,
2931
3021
  GraphQLInterfaceType = _require3.GraphQLInterfaceType,
2932
3022
  GraphQLList = _require3.GraphQLList,
@@ -2935,7 +3025,7 @@ module.exports =
2935
3025
  GraphQLUnionType = _require3.GraphQLUnionType,
2936
3026
  parse = _require3.parse;
2937
3027
 
2938
- var _require4 = __webpack_require__(5),
3028
+ var _require4 = __webpack_require__(6),
2939
3029
  getLiteralArgumentValues = _require4.getLiteralArgumentValues,
2940
3030
  IRTransformer = _require4.IRTransformer,
2941
3031
  SchemaUtils = _require4.SchemaUtils;
@@ -3102,7 +3192,7 @@ module.exports =
3102
3192
  var ast = parse(fragmentString);
3103
3193
  var fragmentAST = ast.definitions[0];
3104
3194
  __webpack_require__(1)(fragmentAST && fragmentAST.kind === 'FragmentDefinition', 'RelayConnectionTransform: Expected a fragment definition AST.');
3105
- var fragment = __webpack_require__(25).transform(context.clientSchema, fragmentAST);
3195
+ var fragment = __webpack_require__(27).transform(context.clientSchema, fragmentAST);
3106
3196
  __webpack_require__(1)(fragment && fragment.kind === 'Fragment', 'RelayConnectionTransform: Expected a connection fragment.');
3107
3197
  return {
3108
3198
  directives: [],
@@ -3199,7 +3289,7 @@ module.exports =
3199
3289
  };
3200
3290
 
3201
3291
  /***/ }),
3202
- /* 36 */
3292
+ /* 37 */
3203
3293
  /***/ (function(module, exports) {
3204
3294
 
3205
3295
  /**
@@ -3220,7 +3310,7 @@ module.exports =
3220
3310
  };
3221
3311
 
3222
3312
  /***/ }),
3223
- /* 37 */
3313
+ /* 38 */
3224
3314
  /***/ (function(module, exports, __webpack_require__) {
3225
3315
 
3226
3316
  /**
@@ -3242,15 +3332,15 @@ module.exports =
3242
3332
 
3243
3333
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3244
3334
 
3245
- var _require = __webpack_require__(3),
3335
+ var _require = __webpack_require__(4),
3246
3336
  doTypesOverlap = _require.doTypesOverlap,
3247
3337
  getNamedType = _require.getNamedType,
3248
3338
  isInputType = _require.isInputType,
3249
3339
  GraphQLInterfaceType = _require.GraphQLInterfaceType,
3250
3340
  GraphQLList = _require.GraphQLList,
3251
- GraphQLScalarType = _require.GraphQLScalarType;
3341
+ GraphQLInputType = _require.GraphQLInputType;
3252
3342
 
3253
- var _require2 = __webpack_require__(5),
3343
+ var _require2 = __webpack_require__(6),
3254
3344
  IRTransformer = _require2.IRTransformer,
3255
3345
  IRVisitor = _require2.IRVisitor;
3256
3346
 
@@ -3314,8 +3404,6 @@ module.exports =
3314
3404
  return context;
3315
3405
  }
3316
3406
 
3317
- var idType = getIdType(context.clientSchema);
3318
-
3319
3407
  // Next, transform any existing root operations to include references to
3320
3408
  // their dependent requests.
3321
3409
  var transformedContext = IRTransformer.transform(context, {
@@ -3346,18 +3434,8 @@ module.exports =
3346
3434
  });
3347
3435
  return completeDeferrableOperation;
3348
3436
  });
3349
- var transformedContextPostFragments = IRTransformer.transform(transformedContext, {
3350
- FragmentSpread: function FragmentSpread(spread) {
3351
- if (isDeferrable(spread)) {
3352
- return (0, _extends3['default'])({}, spread, {
3353
- metadata: (0, _extends3['default'])({}, spread.metadata, deferrableFragmentSpreadMetadata(spread.name, idType))
3354
- });
3355
- }
3356
- return spread;
3357
- }
3358
- });
3359
3437
 
3360
- return transformedContextPostFragments.addAll(deferrableOperations);
3438
+ return transformedContext.addAll(deferrableOperations);
3361
3439
  }
3362
3440
 
3363
3441
  /**
@@ -3393,7 +3471,7 @@ module.exports =
3393
3471
  var includedFragments = new Set([fragment]);
3394
3472
  var nodesToVisit = [fragment];
3395
3473
  while (nodesToVisit.length !== 0) {
3396
- var spreadUses = __webpack_require__(18)(spreadUsesWithin.get(nodesToVisit.pop()));
3474
+ var spreadUses = __webpack_require__(19)(spreadUsesWithin.get(nodesToVisit.pop()));
3397
3475
  for (var i = 0; i < spreadUses.length; i++) {
3398
3476
  var includedFragment = context.getFragment(spreadUses[i].spread.name);
3399
3477
  if (!includedFragments.has(includedFragment)) {
@@ -3504,7 +3582,7 @@ module.exports =
3504
3582
  var _iteratorError3 = undefined;
3505
3583
 
3506
3584
  try {
3507
- for (var _iterator3 = __webpack_require__(18)(spreadUsesWithin.get(node))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
3585
+ for (var _iterator3 = __webpack_require__(19)(spreadUsesWithin.get(node))[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
3508
3586
  var spreadUse = _step3.value;
3509
3587
 
3510
3588
  if (isDeferrable(spreadUse.spread)) {
@@ -3589,16 +3667,7 @@ module.exports =
3589
3667
  metadata: null,
3590
3668
  typeCondition: nodeType,
3591
3669
  directives: [],
3592
- selections: [{
3593
- kind: 'ScalarField',
3594
- name: 'id',
3595
- alias: deferrableAlias(spread.name),
3596
- args: [],
3597
- handles: null,
3598
- directives: spread.directives,
3599
- metadata: (0, _extends3['default'])({}, spread.metadata, deferrableFragmentSpreadMetadata(spread.name, idType)),
3600
- type: idType
3601
- }]
3670
+ selections: [deferrableFragmentSpread(spread, idType)]
3602
3671
  }]
3603
3672
  };
3604
3673
  }
@@ -3652,7 +3721,7 @@ module.exports =
3652
3721
  kind: 'FragmentSpread',
3653
3722
  args: [],
3654
3723
  name: fragment.name,
3655
- metadata: deferrableFragmentSpreadMetadata(fragment.name, idType),
3724
+ metadata: null,
3656
3725
  directives: []
3657
3726
  }],
3658
3727
  type: nodeField.type
@@ -3661,20 +3730,34 @@ module.exports =
3661
3730
  };
3662
3731
  }
3663
3732
 
3664
- function deferrableFragmentSpreadMetadata(name, idType) {
3665
- return {
3666
- deferred: true,
3667
- deferredFragmentName: name,
3668
- deferredArgumentName: DEFERRABLE_ARGUMENT_NAME,
3669
- deferredArgumentStorageKey: 'id',
3670
- idType: idType
3671
- };
3672
- }
3673
-
3674
3733
  function deferrableAlias(name) {
3675
3734
  return name + '_' + DEFERRABLE_ARGUMENT_NAME;
3676
3735
  }
3677
3736
 
3737
+ function deferrableFragmentSpread(spread, idType) {
3738
+ return {
3739
+ kind: 'DeferrableFragmentSpread',
3740
+ name: spread.name,
3741
+ directives: [],
3742
+ fragmentArgs: spread.args,
3743
+ args: [{
3744
+ kind: 'Argument',
3745
+ name: DEFERRABLE_ARGUMENT_NAME,
3746
+ metadata: null,
3747
+ value: {
3748
+ kind: 'Variable',
3749
+ variableName: DEFERRABLE_ARGUMENT_NAME,
3750
+ metadata: null,
3751
+ type: idType
3752
+ },
3753
+ type: idType
3754
+ }],
3755
+ rootFieldVariable: DEFERRABLE_ARGUMENT_NAME,
3756
+ storageKey: 'id',
3757
+ alias: deferrableAlias(spread.name)
3758
+ };
3759
+ }
3760
+
3678
3761
  function getNodeType(schema) {
3679
3762
  var nodeType = schema.getType('Node');
3680
3763
  __webpack_require__(1)(nodeType instanceof GraphQLInterfaceType, 'RelayDeferrableFragmentTransform: Schema must define the interface "Node".');
@@ -3686,7 +3769,7 @@ module.exports =
3686
3769
  var idField = nodeType.getFields().id;
3687
3770
  __webpack_require__(1)(idField, 'RelayDeferrableFragmentTransform: "Node" must define the field "id"');
3688
3771
  var idType = getNamedType(idField.type);
3689
- __webpack_require__(1)(idType instanceof GraphQLScalarType, 'RelayDeferrableFragmentTransform: "Node" must define the scalar field "id"');
3772
+ __webpack_require__(1)(isInputType(idType), 'RelayDeferrableFragmentTransform: "Node" must define the scalar field "id"');
3690
3773
  return idType;
3691
3774
  }
3692
3775
 
@@ -3696,7 +3779,7 @@ module.exports =
3696
3779
  };
3697
3780
 
3698
3781
  /***/ }),
3699
- /* 38 */
3782
+ /* 39 */
3700
3783
  /***/ (function(module, exports, __webpack_require__) {
3701
3784
 
3702
3785
  /**
@@ -3814,7 +3897,7 @@ module.exports =
3814
3897
  };
3815
3898
 
3816
3899
  /***/ }),
3817
- /* 39 */
3900
+ /* 40 */
3818
3901
  /***/ (function(module, exports, __webpack_require__) {
3819
3902
 
3820
3903
  /**
@@ -3836,7 +3919,7 @@ module.exports =
3836
3919
 
3837
3920
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
3838
3921
 
3839
- var _require = __webpack_require__(38),
3922
+ var _require = __webpack_require__(39),
3840
3923
  anyTypeAlias = _require.anyTypeAlias,
3841
3924
  exactObjectTypeAnnotation = _require.exactObjectTypeAnnotation,
3842
3925
  exportType = _require.exportType,
@@ -3848,14 +3931,14 @@ module.exports =
3848
3931
  stringLiteralTypeAnnotation = _require.stringLiteralTypeAnnotation,
3849
3932
  unionTypeAnnotation = _require.unionTypeAnnotation;
3850
3933
 
3851
- var _require2 = __webpack_require__(67),
3934
+ var _require2 = __webpack_require__(66),
3852
3935
  transformScalarType = _require2.transformScalarType,
3853
3936
  transformInputType = _require2.transformInputType;
3854
3937
 
3855
- var _require3 = __webpack_require__(3),
3938
+ var _require3 = __webpack_require__(4),
3856
3939
  GraphQLNonNull = _require3.GraphQLNonNull;
3857
3940
 
3858
- var _require4 = __webpack_require__(5),
3941
+ var _require4 = __webpack_require__(6),
3859
3942
  FlattenTransform = _require4.FlattenTransform,
3860
3943
  IRVisitor = _require4.IRVisitor,
3861
3944
  Profiler = _require4.Profiler,
@@ -3866,7 +3949,7 @@ module.exports =
3866
3949
 
3867
3950
  function generate(node, options) {
3868
3951
  var ast = IRVisitor.visit(node, createVisitor(options));
3869
- return __webpack_require__(60).generate(ast);
3952
+ return __webpack_require__(59).generate(ast);
3870
3953
  }
3871
3954
 
3872
3955
  function makeProp(_ref, state, concreteType) {
@@ -3878,7 +3961,7 @@ module.exports =
3878
3961
  nodeSelections = _ref.nodeSelections;
3879
3962
 
3880
3963
  if (nodeType) {
3881
- value = transformScalarType(nodeType, state, selectionsToBabel([Array.from(__webpack_require__(18)(nodeSelections).values())], state));
3964
+ value = transformScalarType(nodeType, state, selectionsToBabel([Array.from(__webpack_require__(19)(nodeSelections).values())], state));
3882
3965
  }
3883
3966
  if (schemaName === '__typename' && concreteType) {
3884
3967
  value = stringLiteralTypeAnnotation(concreteType);
@@ -3967,7 +4050,7 @@ module.exports =
3967
4050
  });
3968
4051
  }
3969
4052
  return (0, _extends3['default'])({}, a, {
3970
- nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, __webpack_require__(18)(b.nodeSelections)) : null,
4053
+ nodeSelections: a.nodeSelections ? mergeSelections(a.nodeSelections, __webpack_require__(19)(b.nodeSelections)) : null,
3971
4054
  conditional: a.conditional && b.conditional
3972
4055
  });
3973
4056
  }
@@ -4040,6 +4123,7 @@ module.exports =
4040
4123
  customScalars: options.customScalars,
4041
4124
  enumsHasteModule: options.enumsHasteModule,
4042
4125
  existingFragmentNames: options.existingFragmentNames,
4126
+ generatedFragments: new Set(),
4043
4127
  inputFieldWhiteList: options.inputFieldWhiteList,
4044
4128
  relayRuntimeModule: options.relayRuntimeModule,
4045
4129
  usedEnums: {},
@@ -4067,8 +4151,9 @@ module.exports =
4067
4151
  }
4068
4152
  return [selection];
4069
4153
  });
4154
+ state.generatedFragments.add(node.name);
4070
4155
  var refTypeName = getRefTypeName(node.name);
4071
- var refType = __webpack_require__(2).expressionStatement(__webpack_require__(2).identifier('export opaque type ' + refTypeName + ': FragmentReference = FragmentReference'));
4156
+ var refType = __webpack_require__(2).expressionStatement(__webpack_require__(2).identifier('declare export opaque type ' + refTypeName + ': FragmentReference'));
4072
4157
  var baseType = selectionsToBabel(selections, state, refTypeName);
4073
4158
  var type = isPlural(node) ? readOnlyArrayOfType(baseType) : baseType;
4074
4159
  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)]));
@@ -4158,7 +4243,7 @@ module.exports =
4158
4243
  return __webpack_require__(2).identifier(getRefTypeName(ref));
4159
4244
  }));
4160
4245
  result.push({
4161
- key: '__fragments',
4246
+ key: '$fragmentRefs',
4162
4247
  conditional: false,
4163
4248
  value: _value3
4164
4249
  });
@@ -4179,12 +4264,14 @@ module.exports =
4179
4264
  var usedFragment = _step3.value;
4180
4265
 
4181
4266
  var refTypeName = getRefTypeName(usedFragment);
4182
- if (state.useHaste && state.existingFragmentNames.has(usedFragment)) {
4183
- // TODO(T22653277) support non-haste environments when importing
4184
- // fragments
4185
- imports.push(importTypes([refTypeName], usedFragment + '.graphql'));
4186
- } else {
4187
- imports.push(anyTypeAlias(refTypeName));
4267
+ if (!state.generatedFragments.has(usedFragment)) {
4268
+ if (state.useHaste && state.existingFragmentNames.has(usedFragment)) {
4269
+ // TODO(T22653277) support non-haste environments when importing
4270
+ // fragments
4271
+ imports.push(importTypes([refTypeName], usedFragment + '.graphql'));
4272
+ } else {
4273
+ imports.push(anyTypeAlias(refTypeName));
4274
+ }
4188
4275
  }
4189
4276
  }
4190
4277
  } catch (err) {
@@ -4233,7 +4320,7 @@ module.exports =
4233
4320
  return name + '$ref';
4234
4321
  }
4235
4322
 
4236
- var FLOW_TRANSFORMS = [__webpack_require__(26).transform, __webpack_require__(42).transform, FlattenTransform.transformWithOptions({})];
4323
+ var FLOW_TRANSFORMS = [__webpack_require__(28).transform, __webpack_require__(43).transform, FlattenTransform.transformWithOptions({})];
4237
4324
 
4238
4325
  module.exports = {
4239
4326
  generate: Profiler.instrument(generate, 'RelayFlowGenerator.generate'),
@@ -4241,7 +4328,7 @@ module.exports =
4241
4328
  };
4242
4329
 
4243
4330
  /***/ }),
4244
- /* 40 */
4331
+ /* 41 */
4245
4332
  /***/ (function(module, exports, __webpack_require__) {
4246
4333
 
4247
4334
  /**
@@ -4263,13 +4350,13 @@ module.exports =
4263
4350
 
4264
4351
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4265
4352
 
4266
- var _require = __webpack_require__(43),
4353
+ var _require = __webpack_require__(44),
4267
4354
  hasUnaliasedSelection = _require.hasUnaliasedSelection;
4268
4355
 
4269
- var _require2 = __webpack_require__(3),
4356
+ var _require2 = __webpack_require__(4),
4270
4357
  assertLeafType = _require2.assertLeafType;
4271
4358
 
4272
- var _require3 = __webpack_require__(5),
4359
+ var _require3 = __webpack_require__(6),
4273
4360
  CompilerContext = _require3.CompilerContext,
4274
4361
  IRTransformer = _require3.IRTransformer,
4275
4362
  SchemaUtils = _require3.SchemaUtils;
@@ -4321,7 +4408,7 @@ module.exports =
4321
4408
  };
4322
4409
 
4323
4410
  /***/ }),
4324
- /* 41 */
4411
+ /* 42 */
4325
4412
  /***/ (function(module, exports, __webpack_require__) {
4326
4413
 
4327
4414
  /**
@@ -4341,11 +4428,11 @@ module.exports =
4341
4428
 
4342
4429
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4343
4430
 
4344
- var _require = __webpack_require__(5),
4431
+ var _require = __webpack_require__(6),
4345
4432
  ASTCache = _require.ASTCache,
4346
4433
  Profiler = _require.Profiler;
4347
4434
 
4348
- var parseGraphQL = Profiler.instrument(__webpack_require__(3).parse, 'GraphQL.parse');
4435
+ var parseGraphQL = Profiler.instrument(__webpack_require__(4).parse, 'GraphQL.parse');
4349
4436
 
4350
4437
  var FIND_OPTIONS = {
4351
4438
  validateNames: true
@@ -4353,13 +4440,13 @@ module.exports =
4353
4440
 
4354
4441
  // Throws an error if parsing the file fails
4355
4442
  function parseFile(baseDir, file) {
4356
- var text = __webpack_require__(6).readFileSync(__webpack_require__(4).join(baseDir, file.relPath), 'utf8');
4443
+ var text = __webpack_require__(5).readFileSync(__webpack_require__(3).join(baseDir, file.relPath), 'utf8');
4357
4444
 
4358
4445
  __webpack_require__(1)(text.indexOf('graphql') >= 0, 'RelayJSModuleParser: Files should be filtered before passed to the ' + 'parser, got unfiltered file `%s`.', file);
4359
4446
 
4360
4447
  var astDefinitions = [];
4361
- __webpack_require__(54).memoizedFind(text, baseDir, file, FIND_OPTIONS).forEach(function (template) {
4362
- var ast = parseGraphQL(new (__webpack_require__(3).Source)(template, file.relPath));
4448
+ __webpack_require__(53).memoizedFind(text, baseDir, file, FIND_OPTIONS).forEach(function (template) {
4449
+ var ast = parseGraphQL(new (__webpack_require__(4).Source)(template, file.relPath));
4363
4450
  __webpack_require__(1)(ast.definitions.length, 'RelayJSModuleParser: Expected GraphQL text to contain at least one ' + 'definition (fragment, mutation, query, subscription), got `%s`.', template);
4364
4451
  astDefinitions.push.apply(astDefinitions, (0, _toConsumableArray3['default'])(ast.definitions));
4365
4452
  });
@@ -4379,7 +4466,7 @@ module.exports =
4379
4466
 
4380
4467
  function getFileFilter(baseDir) {
4381
4468
  return function (file) {
4382
- var text = __webpack_require__(6).readFileSync(__webpack_require__(4).join(baseDir, file.relPath), 'utf8');
4469
+ var text = __webpack_require__(5).readFileSync(__webpack_require__(3).join(baseDir, file.relPath), 'utf8');
4383
4470
  return text.indexOf('graphql') >= 0;
4384
4471
  };
4385
4472
  }
@@ -4390,7 +4477,7 @@ module.exports =
4390
4477
  };
4391
4478
 
4392
4479
  /***/ }),
4393
- /* 42 */
4480
+ /* 43 */
4394
4481
  /***/ (function(module, exports, __webpack_require__) {
4395
4482
 
4396
4483
  /**
@@ -4412,7 +4499,7 @@ module.exports =
4412
4499
 
4413
4500
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4414
4501
 
4415
- var _require = __webpack_require__(5),
4502
+ var _require = __webpack_require__(6),
4416
4503
  CompilerContext = _require.CompilerContext,
4417
4504
  IRTransformer = _require.IRTransformer,
4418
4505
  isEquivalentType = _require.isEquivalentType;
@@ -4524,7 +4611,7 @@ module.exports =
4524
4611
  };
4525
4612
 
4526
4613
  /***/ }),
4527
- /* 43 */
4614
+ /* 44 */
4528
4615
  /***/ (function(module, exports) {
4529
4616
 
4530
4617
  /**
@@ -4549,7 +4636,7 @@ module.exports =
4549
4636
  module.exports = { hasUnaliasedSelection: hasUnaliasedSelection };
4550
4637
 
4551
4638
  /***/ }),
4552
- /* 44 */
4639
+ /* 45 */
4553
4640
  /***/ (function(module, exports, __webpack_require__) {
4554
4641
 
4555
4642
  /**
@@ -4569,79 +4656,33 @@ module.exports =
4569
4656
 
4570
4657
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4571
4658
 
4572
- var _require = __webpack_require__(5),
4659
+ var _require = __webpack_require__(6),
4573
4660
  Validator = _require.Validator;
4574
4661
 
4575
- var GLOBAL_RULES = Validator.GLOBAL_RULES,
4576
- LOCAL_RULES = Validator.LOCAL_RULES,
4577
- validate = Validator.validate;
4578
-
4579
-
4580
- function DisallowIdAsAliasValidationRule(context) {
4581
- return {
4582
- Field: function Field(field) {
4583
- if (field.alias && field.alias.value === 'id' && field.name.value !== 'id') {
4584
- throw new Error('RelayValidator: Relay does not allow aliasing fields to `id`. ' + 'This name is reserved for the globally unique `id` field on ' + '`Node`.');
4585
- }
4586
- }
4587
- };
4588
- }
4589
-
4590
- var relayGlobalRules = GLOBAL_RULES;
4591
-
4592
- var relayLocalRules = [].concat((0, _toConsumableArray3['default'])(LOCAL_RULES), [DisallowIdAsAliasValidationRule]);
4593
-
4594
- module.exports = {
4595
- GLOBAL_RULES: relayGlobalRules,
4596
- LOCAL_RULES: relayLocalRules,
4597
- validate: validate
4598
- };
4599
-
4600
- /***/ }),
4601
- /* 45 */
4602
- /***/ (function(module, exports, __webpack_require__) {
4603
-
4604
- /**
4605
- * Copyright (c) 2013-present, Facebook, Inc.
4606
- *
4607
- * This source code is licensed under the MIT license found in the
4608
- * LICENSE file in the root directory of this source tree.
4609
- *
4610
- * @providesModule filterContextForNode
4611
- *
4612
- * @format
4613
- */
4614
-
4615
- 'use strict';
4616
-
4617
- var _require = __webpack_require__(32),
4618
- visit = _require.visit;
4662
+ var GLOBAL_RULES = Validator.GLOBAL_RULES,
4663
+ LOCAL_RULES = Validator.LOCAL_RULES,
4664
+ validate = Validator.validate;
4619
4665
 
4620
- /**
4621
- * Returns a GraphQLCompilerContext containing only the documents referenced
4622
- * by and including the provided node.
4623
- */
4624
- function filterContextForNode(node, context) {
4625
- var queue = [node];
4626
- var filteredContext = new (__webpack_require__(30))(context.serverSchema, context.clientSchema).add(node);
4627
- var visitorConfig = {
4628
- FragmentSpread: function FragmentSpread(fragmentSpread) {
4629
- var name = fragmentSpread.name;
4630
4666
 
4631
- if (!filteredContext.get(name)) {
4632
- var fragment = context.getFragment(name);
4633
- filteredContext = filteredContext.add(fragment);
4634
- queue.push(fragment);
4667
+ function DisallowIdAsAliasValidationRule(context) {
4668
+ return {
4669
+ Field: function Field(field) {
4670
+ if (field.alias && field.alias.value === 'id' && field.name.value !== 'id') {
4671
+ throw new Error('RelayValidator: Relay does not allow aliasing fields to `id`. ' + 'This name is reserved for the globally unique `id` field on ' + '`Node`.');
4635
4672
  }
4636
4673
  }
4637
4674
  };
4638
- while (queue.length) {
4639
- visit(queue.pop(), visitorConfig);
4640
- }
4641
- return filteredContext;
4642
4675
  }
4643
4676
 
4644
- module.exports = filterContextForNode;
4677
+ var relayGlobalRules = GLOBAL_RULES;
4678
+
4679
+ var relayLocalRules = [].concat((0, _toConsumableArray3['default'])(LOCAL_RULES), [DisallowIdAsAliasValidationRule]);
4680
+
4681
+ module.exports = {
4682
+ GLOBAL_RULES: relayGlobalRules,
4683
+ LOCAL_RULES: relayLocalRules,
4684
+ validate: validate
4685
+ };
4645
4686
 
4646
4687
  /***/ }),
4647
4688
  /* 46 */
@@ -4660,7 +4701,7 @@ module.exports =
4660
4701
 
4661
4702
  'use strict';
4662
4703
 
4663
- var _require = __webpack_require__(24),
4704
+ var _require = __webpack_require__(25),
4664
4705
  printArguments = _require.printArguments,
4665
4706
  printDirectives = _require.printDirectives;
4666
4707
 
@@ -4672,7 +4713,7 @@ module.exports =
4672
4713
  function getIdentifierForSelection(node) {
4673
4714
  if (node.kind === 'LinkedField' || node.kind === 'ScalarField') {
4674
4715
  return node.directives.length === 0 ? node.alias || node.name : (node.alias || node.name) + printDirectives(node.directives);
4675
- } else if (node.kind === 'FragmentSpread') {
4716
+ } else if (node.kind === 'FragmentSpread' || node.kind === 'DeferrableFragmentSpread') {
4676
4717
  return node.args.length === 0 ? '...' + node.name : '...' + node.name + printArguments(node.args);
4677
4718
  } else if (node.kind === 'InlineFragment') {
4678
4719
  return 'I:' + node.typeCondition.name;
@@ -4687,47 +4728,18 @@ module.exports =
4687
4728
 
4688
4729
  /***/ }),
4689
4730
  /* 47 */
4690
- /***/ (function(module, exports) {
4691
-
4692
- /**
4693
- * Copyright (c) 2013-present, Facebook, Inc.
4694
- *
4695
- * This source code is licensed under the MIT license found in the
4696
- * LICENSE file in the root directory of this source tree.
4697
- *
4698
- * @providesModule nullthrowsOSS
4699
- *
4700
- * @format
4701
- */
4702
- 'use strict';
4703
-
4704
- var nullthrows = function nullthrows(x) {
4705
- var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Got unexpected null or undefined';
4706
-
4707
- if (x != null) {
4708
- return x;
4709
- }
4710
- var error = new Error(message);
4711
- error.framesToPop = 1; // Skip nullthrows own stack frame.
4712
- throw error;
4713
- };
4714
-
4715
- module.exports = nullthrows;
4716
-
4717
- /***/ }),
4718
- /* 48 */
4719
4731
  /***/ (function(module, exports) {
4720
4732
 
4721
4733
  module.exports = require("os");
4722
4734
 
4723
4735
  /***/ }),
4724
- /* 49 */
4736
+ /* 48 */
4725
4737
  /***/ (function(module, exports) {
4726
4738
 
4727
4739
  module.exports = require("relay-runtime");
4728
4740
 
4729
4741
  /***/ }),
4730
- /* 50 */
4742
+ /* 49 */
4731
4743
  /***/ (function(module, exports, __webpack_require__) {
4732
4744
 
4733
4745
  /**
@@ -4748,10 +4760,10 @@ module.exports =
4748
4760
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4749
4761
 
4750
4762
  var _require = __webpack_require__(14),
4751
- isOperationDefinitionAST = _require.isOperationDefinitionAST,
4763
+ isExecutableDefinitionAST = _require.isExecutableDefinitionAST,
4752
4764
  isSchemaDefinitionAST = _require.isSchemaDefinitionAST;
4753
4765
 
4754
- var _require2 = __webpack_require__(3),
4766
+ var _require2 = __webpack_require__(4),
4755
4767
  extendSchema = _require2.extendSchema,
4756
4768
  parse = _require2.parse,
4757
4769
  visit = _require2.visit;
@@ -4763,7 +4775,7 @@ module.exports =
4763
4775
  var astDefinitions = [];
4764
4776
  documents.forEach(function (doc) {
4765
4777
  doc.definitions.forEach(function (definition) {
4766
- if (isOperationDefinitionAST(definition)) {
4778
+ if (isExecutableDefinitionAST(definition)) {
4767
4779
  astDefinitions.push(definition);
4768
4780
  }
4769
4781
  });
@@ -4781,7 +4793,7 @@ module.exports =
4781
4793
  var requiredDefinitions = new Map();
4782
4794
  var baseMap = new Map();
4783
4795
  baseDefinitions.forEach(function (definition) {
4784
- if (isOperationDefinitionAST(definition)) {
4796
+ if (isExecutableDefinitionAST(definition)) {
4785
4797
  var definitionName = definition.name && definition.name.value;
4786
4798
  // If there's no name, no reason to put in the map
4787
4799
  if (definitionName) {
@@ -4795,7 +4807,7 @@ module.exports =
4795
4807
 
4796
4808
  var definitionsToVisit = [];
4797
4809
  definitions.forEach(function (definition) {
4798
- if (isOperationDefinitionAST(definition)) {
4810
+ if (isExecutableDefinitionAST(definition)) {
4799
4811
  definitionsToVisit.push(definition);
4800
4812
  }
4801
4813
  });
@@ -4835,7 +4847,7 @@ module.exports =
4835
4847
  function convertASTDefinitions(schema, definitions, validationRules, transform) {
4836
4848
  var operationDefinitions = [];
4837
4849
  definitions.forEach(function (definition) {
4838
- if (isOperationDefinitionAST(definition)) {
4850
+ if (isExecutableDefinitionAST(definition)) {
4839
4851
  operationDefinitions.push(definition);
4840
4852
  }
4841
4853
  });
@@ -4847,7 +4859,7 @@ module.exports =
4847
4859
  definitions: operationDefinitions
4848
4860
  };
4849
4861
  // Will throw an error if there are validation issues
4850
- __webpack_require__(33).validate(validationAST, schema, validationRules);
4862
+ __webpack_require__(34).validate(validationAST, schema, validationRules);
4851
4863
  return operationDefinitions.map(function (definition) {
4852
4864
  return transform(schema, definition);
4853
4865
  });
@@ -4897,7 +4909,7 @@ module.exports =
4897
4909
  };
4898
4910
 
4899
4911
  /***/ }),
4900
- /* 51 */
4912
+ /* 50 */
4901
4913
  /***/ (function(module, exports, __webpack_require__) {
4902
4914
 
4903
4915
  /**
@@ -4913,7 +4925,7 @@ module.exports =
4913
4925
 
4914
4926
  'use strict';
4915
4927
 
4916
- var _asyncToGenerator2 = __webpack_require__(13);
4928
+ var _asyncToGenerator2 = __webpack_require__(12);
4917
4929
 
4918
4930
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
4919
4931
 
@@ -4923,7 +4935,7 @@ module.exports =
4923
4935
 
4924
4936
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
4925
4937
 
4926
- var _require = __webpack_require__(19),
4938
+ var _require = __webpack_require__(20),
4927
4939
  ImmutableMap = _require.Map;
4928
4940
 
4929
4941
  var CodegenRunner = function () {
@@ -5061,12 +5073,12 @@ module.exports =
5061
5073
  // Check for files in the input
5062
5074
  yield Promise.all(Object.keys(_this3.parserConfigs).map(function (parserConfigName) {
5063
5075
  return __webpack_require__(7).waitFor('Watchman:query', (0, _asyncToGenerator3.default)(function* () {
5064
- var client = new (__webpack_require__(22))();
5076
+ var client = new (__webpack_require__(23))();
5065
5077
  var config = _this3.parserConfigs[parserConfigName];
5066
5078
  var dirs = yield client.watchProject(config.baseDir);
5067
5079
 
5068
5080
  var relativeFilePaths = filePaths.map(function (filePath) {
5069
- return __webpack_require__(4).relative(config.baseDir, filePath);
5081
+ return __webpack_require__(3).relative(config.baseDir, filePath);
5070
5082
  });
5071
5083
 
5072
5084
  var query = {
@@ -5107,9 +5119,9 @@ module.exports =
5107
5119
 
5108
5120
  var files = void 0;
5109
5121
  if (parserConfig.watchmanExpression) {
5110
- files = yield __webpack_require__(21).queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
5122
+ files = yield __webpack_require__(22).queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
5111
5123
  } else if (parserConfig.filepaths) {
5112
- files = yield __webpack_require__(21).queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
5124
+ files = yield __webpack_require__(22).queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
5113
5125
  } else {
5114
5126
  throw new Error('Either `watchmanExpression` or `filepaths` is required to query files');
5115
5127
  }
@@ -5142,8 +5154,7 @@ module.exports =
5142
5154
 
5143
5155
  return __webpack_require__(7).asyncContext('CodegenRunner.write', (0, _asyncToGenerator3.default)(function* () {
5144
5156
  try {
5145
- // eslint-disable-next-line no-console
5146
- console.log('\nWriting %s', writerName);
5157
+ _this5._reporter.reportMessage('\nWriting ' + writerName);
5147
5158
  var _writerConfigs$writer = _this5.writerConfigs[writerName],
5148
5159
  _getWriter = _writerConfigs$writer.getWriter,
5149
5160
  _parser2 = _writerConfigs$writer.parser,
@@ -5224,11 +5235,11 @@ module.exports =
5224
5235
  }
5225
5236
  }
5226
5237
 
5227
- var combinedChanges = __webpack_require__(20).combineChanges(Array.from(outputDirectories.values()));
5228
- __webpack_require__(20).printChanges(combinedChanges, {
5238
+ var combinedChanges = __webpack_require__(21).combineChanges(Array.from(outputDirectories.values()));
5239
+ __webpack_require__(21).printChanges(combinedChanges, {
5229
5240
  onlyValidate: _this5.onlyValidate
5230
5241
  });
5231
- return __webpack_require__(20).hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES';
5242
+ return __webpack_require__(21).hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES';
5232
5243
  } catch (e) {
5233
5244
  _this5._reporter.reportError('CodegenRunner.write', e);
5234
5245
  return 'ERROR';
@@ -5268,7 +5279,7 @@ module.exports =
5268
5279
  // we should prevent the first watch callback from doing anything.
5269
5280
  var firstChange = true;
5270
5281
 
5271
- yield __webpack_require__(21).watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
5282
+ yield __webpack_require__(22).watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
5272
5283
  var _ref9 = (0, _asyncToGenerator3.default)(function* (files) {
5273
5284
  __webpack_require__(1)(_this6.parsers[parserName], 'Trying to watch an uncompiled parser config: %s', parserName);
5274
5285
  if (firstChange) {
@@ -5293,16 +5304,14 @@ module.exports =
5293
5304
  } catch (error) {
5294
5305
  _this6._reporter.reportError('CodegenRunner.watch', error);
5295
5306
  }
5296
- // eslint-disable-next-line no-console
5297
- console.log('Watching for changes to %s...', parserName);
5307
+ _this6._reporter.reportMessage('Watching for changes to ' + parserName + '...');
5298
5308
  });
5299
5309
 
5300
5310
  return function (_x4) {
5301
5311
  return _ref9.apply(this, arguments);
5302
5312
  };
5303
5313
  })());
5304
- // eslint-disable-next-line no-console
5305
- console.log('Watching for changes to %s...', parserName);
5314
+ this._reporter.reportMessage('Watching for changes to ' + parserName + '...');
5306
5315
  });
5307
5316
 
5308
5317
  function watch(_x3) {
@@ -5322,7 +5331,7 @@ module.exports =
5322
5331
  module.exports = CodegenRunner;
5323
5332
 
5324
5333
  /***/ }),
5325
- /* 52 */
5334
+ /* 51 */
5326
5335
  /***/ (function(module, exports, __webpack_require__) {
5327
5336
 
5328
5337
  /**
@@ -5338,21 +5347,23 @@ module.exports =
5338
5347
 
5339
5348
  'use strict';
5340
5349
 
5341
- var _require = __webpack_require__(3),
5350
+ var _require = __webpack_require__(4),
5342
5351
  parse = _require.parse,
5343
5352
  Source = _require.Source;
5344
5353
 
5345
5354
  function parseFile(baseDir, file) {
5346
- var text = __webpack_require__(6).readFileSync(__webpack_require__(4).join(baseDir, file.relPath), 'utf8');
5347
- return parse(new Source(text, file.relPath));
5355
+ var text = __webpack_require__(5).readFileSync(__webpack_require__(3).join(baseDir, file.relPath), 'utf8');
5356
+ return parse(new Source(text, file.relPath), {
5357
+ experimentalFragmentVariables: true
5358
+ });
5348
5359
  }
5349
5360
 
5350
5361
  exports.getParser = function getParser(baseDir) {
5351
- return new (__webpack_require__(28))({ baseDir: baseDir, parse: parseFile });
5362
+ return new (__webpack_require__(30))({ baseDir: baseDir, parse: parseFile });
5352
5363
  };
5353
5364
 
5354
5365
  /***/ }),
5355
- /* 53 */
5366
+ /* 52 */
5356
5367
  /***/ (function(module, exports, __webpack_require__) {
5357
5368
 
5358
5369
  /**
@@ -5373,7 +5384,7 @@ module.exports =
5373
5384
  * server schema.
5374
5385
  */
5375
5386
  function filterDirectivesTransform(context) {
5376
- return __webpack_require__(12).transform(context, {
5387
+ return __webpack_require__(13).transform(context, {
5377
5388
  Directive: visitDirective
5378
5389
  });
5379
5390
  }
@@ -5397,7 +5408,7 @@ module.exports =
5397
5408
  };
5398
5409
 
5399
5410
  /***/ }),
5400
- /* 54 */
5411
+ /* 53 */
5401
5412
  /***/ (function(module, exports, __webpack_require__) {
5402
5413
 
5403
5414
  /**
@@ -5413,7 +5424,7 @@ module.exports =
5413
5424
 
5414
5425
  'use strict';
5415
5426
 
5416
- var _require = __webpack_require__(5),
5427
+ var _require = __webpack_require__(6),
5417
5428
  Profiler = _require.Profiler;
5418
5429
 
5419
5430
  // Attempt to be as inclusive as possible of source text.
@@ -5483,20 +5494,21 @@ module.exports =
5483
5494
  return result;
5484
5495
  }
5485
5496
 
5486
- var cache = new (__webpack_require__(63))('FindGraphQLTags', 'v1');
5497
+ var cache = new (__webpack_require__(62))('FindGraphQLTags', 'v1');
5487
5498
 
5488
5499
  function memoizedFind(text, baseDir, file, options) {
5500
+ !file.exists ? true ? invariant(false, 'FindGraphQLTags: Called with non-existent file `%s`', file.relPath) : invariant(false) : void 0;
5489
5501
  return cache.getOrCompute(file.hash + (options.validateNames ? '1' : '0'), function () {
5490
- var absPath = __webpack_require__(4).join(baseDir, file.relPath);
5502
+ var absPath = __webpack_require__(3).join(baseDir, file.relPath);
5491
5503
  return find(text, absPath, options);
5492
5504
  });
5493
5505
  }
5494
5506
 
5495
- var CREATE_CONTAINER_FUNCTIONS = {
5496
- createFragmentContainer: true,
5497
- createPaginationContainer: true,
5498
- createRefetchContainer: true
5499
- };
5507
+ var CREATE_CONTAINER_FUNCTIONS = Object.create(null, {
5508
+ createFragmentContainer: { value: true },
5509
+ createPaginationContainer: { value: true },
5510
+ createRefetchContainer: { value: true }
5511
+ });
5500
5512
 
5501
5513
  var IGNORED_KEYS = {
5502
5514
  comments: true,
@@ -5542,7 +5554,7 @@ module.exports =
5542
5554
  }
5543
5555
 
5544
5556
  function validateTemplate(template, moduleName, keyName, filePath, loc) {
5545
- var ast = __webpack_require__(3).parse(new (__webpack_require__(3).Source)(template, filePath, loc));
5557
+ var ast = __webpack_require__(4).parse(new (__webpack_require__(4).Source)(template, filePath, loc));
5546
5558
  ast.definitions.forEach(function (def) {
5547
5559
  !def.name ? true ? invariant(false, 'FindGraphQLTags: In module `%s`, a definition of kind `%s` requires a name.', moduleName, def.kind) : invariant(false) : void 0;
5548
5560
  var definitionName = def.name.value;
@@ -5565,7 +5577,7 @@ module.exports =
5565
5577
  args[_key - 2] = arguments[_key];
5566
5578
  }
5567
5579
 
5568
- throw new Error(__webpack_require__(27).format.apply(__webpack_require__(27), [msg].concat(args)));
5580
+ throw new Error(__webpack_require__(29).format.apply(__webpack_require__(29), [msg].concat(args)));
5569
5581
  }
5570
5582
  }
5571
5583
 
@@ -5602,7 +5614,7 @@ module.exports =
5602
5614
  };
5603
5615
 
5604
5616
  /***/ }),
5605
- /* 55 */
5617
+ /* 54 */
5606
5618
  /***/ (function(module, exports, __webpack_require__) {
5607
5619
 
5608
5620
  /**
@@ -5622,10 +5634,10 @@ module.exports =
5622
5634
 
5623
5635
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
5624
5636
 
5625
- var _require = __webpack_require__(31),
5637
+ var _require = __webpack_require__(33),
5626
5638
  createUserError = _require.createUserError;
5627
5639
 
5628
- var _require2 = __webpack_require__(24),
5640
+ var _require2 = __webpack_require__(25),
5629
5641
  printField = _require2.printField;
5630
5642
 
5631
5643
  var getRawType = __webpack_require__(14).getRawType,
@@ -5647,7 +5659,7 @@ module.exports =
5647
5659
  parentType: null
5648
5660
  };
5649
5661
 
5650
- return __webpack_require__(12).transform(context, {
5662
+ return __webpack_require__(13).transform(context, {
5651
5663
  Root: flattenSelections,
5652
5664
  Fragment: flattenSelections,
5653
5665
  Condition: flattenSelections,
@@ -5709,7 +5721,7 @@ module.exports =
5709
5721
  flattenedSelections.set(nodeIdentifier, (0, _extends3['default'])({}, flattenedSelection, {
5710
5722
  selections: mergeSelections(flattenedSelection, selection, state, type)
5711
5723
  }));
5712
- } else if (flattenedSelection.kind === 'FragmentSpread') {
5724
+ } else if (flattenedSelection.kind === 'FragmentSpread' || flattenedSelection.kind === 'DeferrableFragmentSpread') {
5713
5725
  // Ignore duplicate fragment spreads.
5714
5726
  } else if (flattenedSelection.kind === 'LinkedField') {
5715
5727
  __webpack_require__(1)(selection.kind === 'LinkedField', 'FlattenTransform: Expected a LinkedField, got a %s', selection.kind);
@@ -5773,7 +5785,7 @@ module.exports =
5773
5785
  * selections.
5774
5786
  */
5775
5787
  function areEqualFields(thisField, thatField) {
5776
- return thisField.kind === thatField.kind && thisField.name === thatField.name && thisField.alias === thatField.alias && __webpack_require__(76)(thisField.args, thatField.args);
5788
+ return thisField.kind === thatField.kind && thisField.name === thatField.name && thisField.alias === thatField.alias && __webpack_require__(75)(thisField.args, thatField.args);
5777
5789
  }
5778
5790
 
5779
5791
  /**
@@ -5804,7 +5816,7 @@ module.exports =
5804
5816
  };
5805
5817
 
5806
5818
  /***/ }),
5807
- /* 56 */
5819
+ /* 55 */
5808
5820
  /***/ (function(module, exports, __webpack_require__) {
5809
5821
 
5810
5822
  /**
@@ -5829,21 +5841,30 @@ module.exports =
5829
5841
  (0, _classCallCheck3['default'])(this, GraphQLConsoleReporter);
5830
5842
 
5831
5843
  this._verbose = options.verbose;
5844
+ this._quiet = options.quiet;
5832
5845
  }
5833
5846
 
5847
+ GraphQLConsoleReporter.prototype.reportMessage = function reportMessage(message) {
5848
+ if (!this._quiet) {
5849
+ process.stdout.write(message + '\n');
5850
+ }
5851
+ };
5852
+
5834
5853
  GraphQLConsoleReporter.prototype.reportTime = function reportTime(name, ms) {
5835
- if (this._verbose) {
5836
- 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');
5837
- process.stdout.write(' ' + time + ' ' + __webpack_require__(17).gray(name) + '\n');
5854
+ if (this._verbose && !this.quiet) {
5855
+ var time = ms === 0 ? __webpack_require__(18).gray(' <1ms') : ms < 1000 ? __webpack_require__(18).blue(leftPad(5, ms + 'ms')) : __webpack_require__(18).red(Math.floor(ms / 10) / 100 + 's');
5856
+ process.stdout.write(' ' + time + ' ' + __webpack_require__(18).gray(name) + '\n');
5838
5857
  }
5839
5858
  };
5840
5859
 
5841
5860
  GraphQLConsoleReporter.prototype.reportError = function reportError(caughtLocation, error) {
5842
- process.stdout.write(__webpack_require__(17).red('ERROR:\n' + error.message + '\n'));
5843
- if (this._verbose) {
5844
- var frames = error.stack.match(/^ {4}at .*$/gm);
5845
- if (frames) {
5846
- process.stdout.write(__webpack_require__(17).gray('From: ' + caughtLocation + '\n' + frames.join('\n') + '\n'));
5861
+ if (!this._quiet) {
5862
+ process.stdout.write(__webpack_require__(18).red('ERROR:\n' + error.message + '\n'));
5863
+ if (this._verbose) {
5864
+ var frames = error.stack.match(/^ {4}at .*$/gm);
5865
+ if (frames) {
5866
+ process.stdout.write(__webpack_require__(18).gray('From: ' + caughtLocation + '\n' + frames.join('\n') + '\n'));
5867
+ }
5847
5868
  }
5848
5869
  }
5849
5870
  };
@@ -5858,7 +5879,7 @@ module.exports =
5858
5879
  module.exports = GraphQLConsoleReporter;
5859
5880
 
5860
5881
  /***/ }),
5861
- /* 57 */
5882
+ /* 56 */
5862
5883
  /***/ (function(module, exports, __webpack_require__) {
5863
5884
 
5864
5885
  /**
@@ -5889,6 +5910,12 @@ module.exports =
5889
5910
  this._reporters = reporters;
5890
5911
  }
5891
5912
 
5913
+ GraphQLMultiReporter.prototype.reportMessage = function reportMessage(message) {
5914
+ this._reporters.forEach(function (reporter) {
5915
+ reporter.reportMessage(message);
5916
+ });
5917
+ };
5918
+
5892
5919
  GraphQLMultiReporter.prototype.reportTime = function reportTime(name, ms) {
5893
5920
  this._reporters.forEach(function (reporter) {
5894
5921
  reporter.reportTime(name, ms);
@@ -5907,7 +5934,7 @@ module.exports =
5907
5934
  module.exports = GraphQLMultiReporter;
5908
5935
 
5909
5936
  /***/ }),
5910
- /* 58 */
5937
+ /* 57 */
5911
5938
  /***/ (function(module, exports, __webpack_require__) {
5912
5939
 
5913
5940
  /**
@@ -5929,16 +5956,16 @@ module.exports =
5929
5956
 
5930
5957
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
5931
5958
 
5932
- var _require = __webpack_require__(29),
5959
+ var _require = __webpack_require__(31),
5933
5960
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
5934
5961
 
5935
5962
  var _require2 = __webpack_require__(14),
5936
5963
  getNullableType = _require2.getNullableType,
5937
5964
  getRawType = _require2.getRawType,
5938
5965
  getTypeFromAST = _require2.getTypeFromAST,
5939
- isOperationDefinitionAST = _require2.isOperationDefinitionAST;
5966
+ isExecutableDefinitionAST = _require2.isExecutableDefinitionAST;
5940
5967
 
5941
- var _require3 = __webpack_require__(3),
5968
+ var _require3 = __webpack_require__(4),
5942
5969
  assertCompositeType = _require3.assertCompositeType,
5943
5970
  assertInputType = _require3.assertInputType,
5944
5971
  assertOutputType = _require3.assertOutputType,
@@ -5987,7 +6014,7 @@ module.exports =
5987
6014
  // TODO T24511737 figure out if this is dangerous
5988
6015
  schema = extendSchema(schema, ast, { assumeValid: true });
5989
6016
  ast.definitions.forEach(function (definition) {
5990
- if (isOperationDefinitionAST(definition)) {
6017
+ if (isExecutableDefinitionAST(definition)) {
5991
6018
  nodes.push(_this.transform(schema, definition));
5992
6019
  }
5993
6020
  }, this);
@@ -6655,7 +6682,7 @@ module.exports =
6655
6682
  module.exports = GraphQLParser;
6656
6683
 
6657
6684
  /***/ }),
6658
- /* 59 */
6685
+ /* 58 */
6659
6686
  /***/ (function(module, exports, __webpack_require__) {
6660
6687
 
6661
6688
  /**
@@ -6677,7 +6704,7 @@ module.exports =
6677
6704
  * A transform that inlines all fragments and removes them.
6678
6705
  */
6679
6706
  function inlineFragmentsTransform(context) {
6680
- return __webpack_require__(12).transform(context, {
6707
+ return __webpack_require__(13).transform(context, {
6681
6708
  Fragment: visitFragment,
6682
6709
  FragmentSpread: visitFragmentSpread
6683
6710
  }, function () {
@@ -6708,7 +6735,7 @@ module.exports =
6708
6735
  };
6709
6736
 
6710
6737
  /***/ }),
6711
- /* 60 */
6738
+ /* 59 */
6712
6739
  /***/ (function(module, exports, __webpack_require__) {
6713
6740
 
6714
6741
  /**
@@ -6733,9 +6760,9 @@ module.exports =
6733
6760
  * https://github.com/babel/babel/issues/6333
6734
6761
  */
6735
6762
  function generate(ast) {
6736
- var originalUnionTypeAnnotation = __webpack_require__(16).prototype.UnionTypeAnnotation;
6737
- var originalIntersectionTypeAnnotation = __webpack_require__(16).prototype.IntersectionTypeAnnotation;
6738
- __webpack_require__(16).prototype.UnionTypeAnnotation = function (node) {
6763
+ var originalUnionTypeAnnotation = __webpack_require__(17).prototype.UnionTypeAnnotation;
6764
+ var originalIntersectionTypeAnnotation = __webpack_require__(17).prototype.IntersectionTypeAnnotation;
6765
+ __webpack_require__(17).prototype.UnionTypeAnnotation = function (node) {
6739
6766
  var needsParens = node.types.length > 1;
6740
6767
  if (needsParens) {
6741
6768
  this.token('(');
@@ -6745,7 +6772,7 @@ module.exports =
6745
6772
  this.token(')');
6746
6773
  }
6747
6774
  };
6748
- __webpack_require__(16).prototype.IntersectionTypeAnnotation = function (node) {
6775
+ __webpack_require__(17).prototype.IntersectionTypeAnnotation = function (node) {
6749
6776
  var needsParens = node.types.length > 1;
6750
6777
  if (needsParens) {
6751
6778
  this.token('(');
@@ -6761,8 +6788,8 @@ module.exports =
6761
6788
  quotes: 'single'
6762
6789
  }).code;
6763
6790
  } finally {
6764
- __webpack_require__(16).prototype.UnionTypeAnnotation = originalUnionTypeAnnotation;
6765
- __webpack_require__(16).prototype.IntersectionTypeAnnotation = originalIntersectionTypeAnnotation;
6791
+ __webpack_require__(17).prototype.UnionTypeAnnotation = originalUnionTypeAnnotation;
6792
+ __webpack_require__(17).prototype.IntersectionTypeAnnotation = originalIntersectionTypeAnnotation;
6766
6793
  }
6767
6794
  }
6768
6795
 
@@ -6771,7 +6798,7 @@ module.exports =
6771
6798
  };
6772
6799
 
6773
6800
  /***/ }),
6774
- /* 61 */
6801
+ /* 60 */
6775
6802
  /***/ (function(module, exports, __webpack_require__) {
6776
6803
 
6777
6804
  /**
@@ -6793,12 +6820,12 @@ module.exports =
6793
6820
 
6794
6821
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
6795
6822
 
6796
- var _require = __webpack_require__(5),
6823
+ var _require = __webpack_require__(6),
6797
6824
  getIdentifierForArgumentValue = _require.getIdentifierForArgumentValue,
6798
6825
  IRTransformer = _require.IRTransformer;
6799
6826
 
6800
- var getFragmentScope = __webpack_require__(34).getFragmentScope,
6801
- getRootScope = __webpack_require__(34).getRootScope;
6827
+ var getFragmentScope = __webpack_require__(35).getFragmentScope,
6828
+ getRootScope = __webpack_require__(35).getRootScope;
6802
6829
 
6803
6830
  /**
6804
6831
  * A tranform that converts a set of documents containing fragments/fragment
@@ -6875,6 +6902,20 @@ module.exports =
6875
6902
  });
6876
6903
  }
6877
6904
 
6905
+ function transformDeferrableFragmentSpread(context, fragments, scope, spread) {
6906
+ var directives = transformDirectives(scope, spread.directives);
6907
+ var fragment = context.getFragment(spread.name);
6908
+ var appliedFragment = transformFragment(context, fragments, scope, fragment, spread.fragmentArgs);
6909
+ if (!appliedFragment) {
6910
+ return null;
6911
+ }
6912
+ return (0, _extends3['default'])({}, spread, {
6913
+ fragmentArgs: [],
6914
+ directives: directives,
6915
+ name: appliedFragment.name
6916
+ });
6917
+ }
6918
+
6878
6919
  function transformField(context, fragments, scope, field) {
6879
6920
  var args = transformArguments(scope, field.args);
6880
6921
  var directives = transformDirectives(scope, field.directives);
@@ -6926,6 +6967,8 @@ module.exports =
6926
6967
  nextSelection = transformNode(context, fragments, scope, selection);
6927
6968
  } else if (selection.kind === 'FragmentSpread') {
6928
6969
  nextSelection = transformFragmentSpread(context, fragments, scope, selection);
6970
+ } else if (selection.kind === 'DeferrableFragmentSpread') {
6971
+ nextSelection = transformDeferrableFragmentSpread(context, fragments, scope, selection);
6929
6972
  } else if (selection.kind === 'Condition') {
6930
6973
  var conditionSelections = transformCondition(context, fragments, scope, selection);
6931
6974
  if (conditionSelections) {
@@ -7039,7 +7082,7 @@ module.exports =
7039
7082
  };
7040
7083
 
7041
7084
  /***/ }),
7042
- /* 62 */
7085
+ /* 61 */
7043
7086
  /***/ (function(module, exports, __webpack_require__) {
7044
7087
 
7045
7088
  /**
@@ -7055,15 +7098,15 @@ module.exports =
7055
7098
 
7056
7099
  'use strict';
7057
7100
 
7058
- var _require = __webpack_require__(49),
7101
+ var _require = __webpack_require__(48),
7059
7102
  getStorageKey = _require.getStorageKey;
7060
7103
  // TODO T21875029 ../../relay-runtime/util/stableCopy
7061
7104
 
7062
7105
 
7063
- var _require2 = __webpack_require__(3),
7106
+ var _require2 = __webpack_require__(4),
7064
7107
  GraphQLList = _require2.GraphQLList;
7065
7108
 
7066
- var _require3 = __webpack_require__(5),
7109
+ var _require3 = __webpack_require__(6),
7067
7110
  IRVisitor = _require3.IRVisitor,
7068
7111
  SchemaUtils = _require3.SchemaUtils;
7069
7112
 
@@ -7087,13 +7130,6 @@ module.exports =
7087
7130
  }
7088
7131
 
7089
7132
  var RelayCodeGenVisitor = {
7090
- enter: function enter(node) {
7091
- if ((node.kind === 'FragmentSpread' || node.kind === 'ScalarField') && node.metadata && node.metadata.deferred) {
7092
- return deferrableFragmentSpread(node.metadata.deferredFragmentName, node.metadata.deferredArgumentName, node.metadata.deferredArgumentStorageKey, node.metadata.idType);
7093
- }
7094
- return node;
7095
- },
7096
-
7097
7133
  leave: {
7098
7134
  Batch: function Batch(node) {
7099
7135
  __webpack_require__(1)(node.requests.length !== 0, 'Batch must contain Requests.');
@@ -7338,31 +7374,10 @@ module.exports =
7338
7374
  return getStorageKey(field, {});
7339
7375
  }
7340
7376
 
7341
- function deferrableFragmentSpread(fragmentName, argumentName, storageKey, idType) {
7342
- return {
7343
- kind: 'DeferrableFragmentSpread',
7344
- name: fragmentName,
7345
- args: [{
7346
- kind: 'Argument',
7347
- name: argumentName,
7348
- metadata: null,
7349
- value: {
7350
- kind: 'Variable',
7351
- variableName: argumentName,
7352
- metadata: null,
7353
- type: idType
7354
- },
7355
- type: idType
7356
- }],
7357
- rootFieldVariable: argumentName,
7358
- storageKey: storageKey
7359
- };
7360
- }
7361
-
7362
7377
  module.exports = { generate: generate };
7363
7378
 
7364
7379
  /***/ }),
7365
- /* 63 */
7380
+ /* 62 */
7366
7381
  /***/ (function(module, exports, __webpack_require__) {
7367
7382
 
7368
7383
  /**
@@ -7382,7 +7397,7 @@ module.exports =
7382
7397
 
7383
7398
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7384
7399
 
7385
- var _require = __webpack_require__(5),
7400
+ var _require = __webpack_require__(6),
7386
7401
  Profiler = _require.Profiler;
7387
7402
 
7388
7403
  /**
@@ -7403,11 +7418,11 @@ module.exports =
7403
7418
 
7404
7419
  // Include username in the cache dir to avoid issues with directories being
7405
7420
  // owned by a different user.
7406
- var username = __webpack_require__(48).userInfo().username;
7407
- var cacheID = __webpack_require__(23).createHash('md5').update(cacheBreaker).update(username).digest('hex');
7408
- this._dir = __webpack_require__(4).join(__webpack_require__(48).tmpdir(), name + '-' + cacheID);
7409
- if (!__webpack_require__(6).existsSync(this._dir)) {
7410
- __webpack_require__(6).mkdirSync(this._dir);
7421
+ var username = __webpack_require__(47).userInfo().username;
7422
+ var cacheID = __webpack_require__(24).createHash('md5').update(cacheBreaker).update(username).digest('hex');
7423
+ this._dir = __webpack_require__(3).join(__webpack_require__(47).tmpdir(), name + '-' + cacheID);
7424
+ if (!__webpack_require__(5).existsSync(this._dir)) {
7425
+ __webpack_require__(5).mkdirSync(this._dir);
7411
7426
  }
7412
7427
  }
7413
7428
 
@@ -7415,12 +7430,12 @@ module.exports =
7415
7430
  var _this = this;
7416
7431
 
7417
7432
  return Profiler.run('RelayCompilerCache.getOrCompute', function () {
7418
- var cacheFile = __webpack_require__(4).join(_this._dir, key);
7419
- if (__webpack_require__(6).existsSync(cacheFile)) {
7420
- return JSON.parse(__webpack_require__(6).readFileSync(cacheFile, 'utf8'));
7433
+ var cacheFile = __webpack_require__(3).join(_this._dir, key);
7434
+ if (__webpack_require__(5).existsSync(cacheFile)) {
7435
+ return JSON.parse(__webpack_require__(5).readFileSync(cacheFile, 'utf8'));
7421
7436
  }
7422
7437
  var value = compute();
7423
- __webpack_require__(6).writeFileSync(cacheFile, JSON.stringify(value), 'utf8');
7438
+ __webpack_require__(5).writeFileSync(cacheFile, JSON.stringify(value), 'utf8');
7424
7439
  return value;
7425
7440
  });
7426
7441
  };
@@ -7431,7 +7446,7 @@ module.exports =
7431
7446
  module.exports = RelayCompilerCache;
7432
7447
 
7433
7448
  /***/ }),
7434
- /* 64 */
7449
+ /* 63 */
7435
7450
  /***/ (function(module, exports) {
7436
7451
 
7437
7452
  /**
@@ -7462,7 +7477,7 @@ module.exports =
7462
7477
  };
7463
7478
 
7464
7479
  /***/ }),
7465
- /* 65 */
7480
+ /* 64 */
7466
7481
  /***/ (function(module, exports, __webpack_require__) {
7467
7482
 
7468
7483
  /**
@@ -7484,7 +7499,7 @@ module.exports =
7484
7499
 
7485
7500
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7486
7501
 
7487
- var _require = __webpack_require__(5),
7502
+ var _require = __webpack_require__(6),
7488
7503
  CompilerContext = _require.CompilerContext,
7489
7504
  IRTransformer = _require.IRTransformer;
7490
7505
 
@@ -7529,7 +7544,7 @@ module.exports =
7529
7544
  };
7530
7545
 
7531
7546
  /***/ }),
7532
- /* 66 */
7547
+ /* 65 */
7533
7548
  /***/ (function(module, exports, __webpack_require__) {
7534
7549
 
7535
7550
  /**
@@ -7545,7 +7560,7 @@ module.exports =
7545
7560
 
7546
7561
  'use strict';
7547
7562
 
7548
- var _asyncToGenerator2 = __webpack_require__(13);
7563
+ var _asyncToGenerator2 = __webpack_require__(12);
7549
7564
 
7550
7565
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
7551
7566
 
@@ -7555,17 +7570,17 @@ module.exports =
7555
7570
 
7556
7571
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7557
7572
 
7558
- var _require = __webpack_require__(5),
7573
+ var _require = __webpack_require__(6),
7559
7574
  ASTConvert = _require.ASTConvert,
7560
7575
  CodegenDirectory = _require.CodegenDirectory,
7561
7576
  CompilerContext = _require.CompilerContext,
7562
7577
  Profiler = _require.Profiler,
7563
7578
  SchemaUtils = _require.SchemaUtils;
7564
7579
 
7565
- var _require2 = __webpack_require__(19),
7580
+ var _require2 = __webpack_require__(20),
7566
7581
  ImmutableMap = _require2.Map;
7567
7582
 
7568
- var isOperationDefinitionAST = SchemaUtils.isOperationDefinitionAST;
7583
+ var isExecutableDefinitionAST = SchemaUtils.isExecutableDefinitionAST;
7569
7584
 
7570
7585
  var RelayFileWriter = function () {
7571
7586
  function RelayFileWriter(_ref) {
@@ -7601,7 +7616,7 @@ module.exports =
7601
7616
  var baseDefinitionNames = new Set();
7602
7617
  _this._baseDocuments.forEach(function (doc) {
7603
7618
  doc.definitions.forEach(function (def) {
7604
- if (isOperationDefinitionAST(def) && def.name) {
7619
+ if (isExecutableDefinitionAST(def) && def.name) {
7605
7620
  baseDefinitionNames.add(def.name.value);
7606
7621
  }
7607
7622
  });
@@ -7630,7 +7645,7 @@ module.exports =
7630
7645
  doc.definitions.forEach(function (def) {
7631
7646
  if (def.name) {
7632
7647
  definitionsMeta.set(def.name.value, {
7633
- dir: __webpack_require__(4).join(_this._config.baseDir, __webpack_require__(4).dirname(filePath)),
7648
+ dir: __webpack_require__(3).join(_this._config.baseDir, __webpack_require__(3).dirname(filePath)),
7634
7649
  ast: def
7635
7650
  });
7636
7651
  }
@@ -7639,13 +7654,13 @@ module.exports =
7639
7654
 
7640
7655
  // Verify using local and global rules, can run global verifications here
7641
7656
  // because all files are processed together
7642
- var validationRules = [].concat((0, _toConsumableArray3['default'])(__webpack_require__(44).LOCAL_RULES), (0, _toConsumableArray3['default'])(__webpack_require__(44).GLOBAL_RULES));
7657
+ var validationRules = [].concat((0, _toConsumableArray3['default'])(__webpack_require__(45).LOCAL_RULES), (0, _toConsumableArray3['default'])(__webpack_require__(45).GLOBAL_RULES));
7643
7658
  var customizedValidationRules = _this._config.validationRules;
7644
7659
  if (customizedValidationRules) {
7645
7660
  validationRules = [].concat((0, _toConsumableArray3['default'])(validationRules), (0, _toConsumableArray3['default'])(customizedValidationRules.LOCAL_RULES || []), (0, _toConsumableArray3['default'])(customizedValidationRules.GLOBAL_RULES || []));
7646
7661
  }
7647
7662
 
7648
- var definitions = ASTConvert.convertASTDocumentsWithBase(extendedSchema, _this._baseDocuments.valueSeq().toArray(), _this._documents.valueSeq().toArray(), validationRules, __webpack_require__(25).transform.bind(__webpack_require__(25)));
7663
+ var definitions = ASTConvert.convertASTDocumentsWithBase(extendedSchema, _this._baseDocuments.valueSeq().toArray(), _this._documents.valueSeq().toArray(), validationRules, __webpack_require__(27).transform.bind(__webpack_require__(27)));
7649
7664
 
7650
7665
  var compilerContext = new CompilerContext(_this._baseSchema, extendedSchema).addAll(definitions);
7651
7666
 
@@ -7653,7 +7668,7 @@ module.exports =
7653
7668
  if (configOutputDirectory) {
7654
7669
  return configOutputDirectory;
7655
7670
  }
7656
- var generatedPath = __webpack_require__(4).join(getDefinitionMeta(definitionName).dir, '__generated__');
7671
+ var generatedPath = __webpack_require__(3).join(getDefinitionMeta(definitionName).dir, '__generated__');
7657
7672
  var cachedDir = allOutputDirectories.get(generatedPath);
7658
7673
  if (!cachedDir) {
7659
7674
  cachedDir = addCodegenDir(generatedPath);
@@ -7661,9 +7676,9 @@ module.exports =
7661
7676
  return cachedDir;
7662
7677
  };
7663
7678
 
7664
- var transformedFlowContext = compilerContext.applyTransforms(__webpack_require__(39).flowTransforms, _this._reporter);
7679
+ var transformedFlowContext = compilerContext.applyTransforms(__webpack_require__(40).flowTransforms, _this._reporter);
7665
7680
  var transformedQueryContext = compilerContext.applyTransforms([].concat((0, _toConsumableArray3['default'])(_this._config.compilerTransforms.commonTransforms), (0, _toConsumableArray3['default'])(_this._config.compilerTransforms.queryTransforms)), _this._reporter);
7666
- var artifacts = __webpack_require__(77)(compilerContext, _this._config.compilerTransforms, _this._reporter);
7681
+ var artifacts = __webpack_require__(76)(compilerContext, _this._config.compilerTransforms, _this._reporter);
7667
7682
 
7668
7683
  var existingFragmentNames = new Set(definitions.map(function (definition) {
7669
7684
  return definition.name;
@@ -7696,7 +7711,7 @@ module.exports =
7696
7711
  var flowNode = transformedFlowContext.get(node.name);
7697
7712
  __webpack_require__(1)(flowNode, 'RelayFileWriter: did not compile flow types for: %s', node.name);
7698
7713
 
7699
- var flowTypes = __webpack_require__(39).generate(flowNode, {
7714
+ var flowTypes = __webpack_require__(40).generate(flowNode, {
7700
7715
  customScalars: _this._config.customScalars,
7701
7716
  enumsHasteModule: _this._config.enumsHasteModule,
7702
7717
  existingFragmentNames: existingFragmentNames,
@@ -7706,7 +7721,7 @@ module.exports =
7706
7721
  });
7707
7722
 
7708
7723
  var sourceHash = Profiler.run('hashGraphQL', function () {
7709
- return md5(__webpack_require__(3).print(getDefinitionMeta(node.name).ast));
7724
+ return md5(__webpack_require__(4).print(getDefinitionMeta(node.name).ast));
7710
7725
  });
7711
7726
 
7712
7727
  yield __webpack_require__(89)(getGeneratedDirectory(node.name), node, formatModule, flowTypes, persistQuery, _this._config.platform, relayRuntimeModule, sourceHash);
@@ -7759,7 +7774,7 @@ module.exports =
7759
7774
  }();
7760
7775
 
7761
7776
  function md5(x) {
7762
- return __webpack_require__(23).createHash('md5').update(x, 'utf8').digest('hex');
7777
+ return __webpack_require__(24).createHash('md5').update(x, 'utf8').digest('hex');
7763
7778
  }
7764
7779
 
7765
7780
  function validateConfig(config) {
@@ -7771,7 +7786,7 @@ module.exports =
7771
7786
  module.exports = RelayFileWriter;
7772
7787
 
7773
7788
  /***/ }),
7774
- /* 67 */
7789
+ /* 66 */
7775
7790
  /***/ (function(module, exports, __webpack_require__) {
7776
7791
 
7777
7792
  /**
@@ -7787,10 +7802,10 @@ module.exports =
7787
7802
 
7788
7803
  'use strict';
7789
7804
 
7790
- var _require = __webpack_require__(38),
7805
+ var _require = __webpack_require__(39),
7791
7806
  readOnlyArrayOfType = _require.readOnlyArrayOfType;
7792
7807
 
7793
- var _require2 = __webpack_require__(3),
7808
+ var _require2 = __webpack_require__(4),
7794
7809
  GraphQLEnumType = _require2.GraphQLEnumType,
7795
7810
  GraphQLInputType = _require2.GraphQLInputType,
7796
7811
  GraphQLInputObjectType = _require2.GraphQLInputObjectType,
@@ -7885,7 +7900,7 @@ module.exports =
7885
7900
  };
7886
7901
 
7887
7902
  /***/ }),
7888
- /* 68 */
7903
+ /* 67 */
7889
7904
  /***/ (function(module, exports, __webpack_require__) {
7890
7905
 
7891
7906
  /**
@@ -7907,15 +7922,15 @@ module.exports =
7907
7922
 
7908
7923
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
7909
7924
 
7910
- var _require = __webpack_require__(43),
7925
+ var _require = __webpack_require__(44),
7911
7926
  hasUnaliasedSelection = _require.hasUnaliasedSelection;
7912
7927
 
7913
- var _require2 = __webpack_require__(3),
7928
+ var _require2 = __webpack_require__(4),
7914
7929
  assertAbstractType = _require2.assertAbstractType,
7915
7930
  assertCompositeType = _require2.assertCompositeType,
7916
7931
  assertLeafType = _require2.assertLeafType;
7917
7932
 
7918
- var _require3 = __webpack_require__(5),
7933
+ var _require3 = __webpack_require__(6),
7919
7934
  CompilerContext = _require3.CompilerContext,
7920
7935
  SchemaUtils = _require3.SchemaUtils,
7921
7936
  IRTransformer = _require3.IRTransformer;
@@ -8021,7 +8036,7 @@ module.exports =
8021
8036
  };
8022
8037
 
8023
8038
  /***/ }),
8024
- /* 69 */
8039
+ /* 68 */
8025
8040
  /***/ (function(module, exports, __webpack_require__) {
8026
8041
 
8027
8042
  /**
@@ -8041,7 +8056,7 @@ module.exports =
8041
8056
 
8042
8057
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8043
8058
 
8044
- var _require = __webpack_require__(5),
8059
+ var _require = __webpack_require__(6),
8045
8060
  CompilerContext = _require.CompilerContext,
8046
8061
  IRTransformer = _require.IRTransformer;
8047
8062
 
@@ -8071,7 +8086,7 @@ module.exports =
8071
8086
  };
8072
8087
 
8073
8088
  /***/ }),
8074
- /* 70 */
8089
+ /* 69 */
8075
8090
  /***/ (function(module, exports, __webpack_require__) {
8076
8091
 
8077
8092
  /**
@@ -8095,13 +8110,13 @@ module.exports =
8095
8110
 
8096
8111
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8097
8112
 
8098
- var _require = __webpack_require__(36),
8113
+ var _require = __webpack_require__(37),
8099
8114
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
8100
8115
 
8101
- var _require2 = __webpack_require__(3),
8116
+ var _require2 = __webpack_require__(4),
8102
8117
  GraphQLObjectType = _require2.GraphQLObjectType;
8103
8118
 
8104
- var _require3 = __webpack_require__(5),
8119
+ var _require3 = __webpack_require__(6),
8105
8120
  IRTransformer = _require3.IRTransformer,
8106
8121
  SchemaUtils = _require3.SchemaUtils;
8107
8122
 
@@ -8152,7 +8167,7 @@ module.exports =
8152
8167
  };
8153
8168
 
8154
8169
  /***/ }),
8155
- /* 71 */
8170
+ /* 70 */
8156
8171
  /***/ (function(module, exports, __webpack_require__) {
8157
8172
 
8158
8173
  /**
@@ -8173,7 +8188,7 @@ module.exports =
8173
8188
  canHaveSelections = _require.canHaveSelections,
8174
8189
  getRawType = _require.getRawType;
8175
8190
 
8176
- var _require2 = __webpack_require__(3),
8191
+ var _require2 = __webpack_require__(4),
8177
8192
  SchemaMetaFieldDef = _require2.SchemaMetaFieldDef,
8178
8193
  TypeMetaFieldDef = _require2.TypeMetaFieldDef,
8179
8194
  TypeNameMetaFieldDef = _require2.TypeNameMetaFieldDef;
@@ -8230,7 +8245,7 @@ module.exports =
8230
8245
  * base schema.
8231
8246
  */
8232
8247
  function skipClientFieldTransform(context) {
8233
- return __webpack_require__(12).transform(context, {
8248
+ return __webpack_require__(13).transform(context, {
8234
8249
  FragmentSpread: visitFragmentSpread,
8235
8250
  InlineFragment: visitInlineFragment,
8236
8251
  LinkedField: visitField,
@@ -8318,7 +8333,7 @@ module.exports =
8318
8333
  };
8319
8334
 
8320
8335
  /***/ }),
8321
- /* 72 */
8336
+ /* 71 */
8322
8337
  /***/ (function(module, exports, __webpack_require__) {
8323
8338
 
8324
8339
  /**
@@ -8340,7 +8355,7 @@ module.exports =
8340
8355
 
8341
8356
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8342
8357
 
8343
- var IMap = __webpack_require__(19).Map;
8358
+ var IMap = __webpack_require__(20).Map;
8344
8359
 
8345
8360
  /**
8346
8361
  * A transform that removes redundant fields and fragment spreads. Redundancy is
@@ -8442,7 +8457,7 @@ module.exports =
8442
8457
  * etc).
8443
8458
  */
8444
8459
  function skipRedundantNodesTransform(context) {
8445
- return __webpack_require__(12).transform(context, {
8460
+ return __webpack_require__(13).transform(context, {
8446
8461
  Root: visitNode,
8447
8462
  Fragment: visitNode
8448
8463
  });
@@ -8471,6 +8486,7 @@ module.exports =
8471
8486
  var identifier = __webpack_require__(46)(selection);
8472
8487
  switch (selection.kind) {
8473
8488
  case 'ScalarField':
8489
+ case 'DeferrableFragmentSpread':
8474
8490
  case 'FragmentSpread':
8475
8491
  {
8476
8492
  if (!selectionMap.has(identifier)) {
@@ -8522,7 +8538,7 @@ module.exports =
8522
8538
  };
8523
8539
 
8524
8540
  /***/ }),
8525
- /* 73 */
8541
+ /* 72 */
8526
8542
  /***/ (function(module, exports, __webpack_require__) {
8527
8543
 
8528
8544
  /**
@@ -8557,7 +8573,7 @@ module.exports =
8557
8573
  */
8558
8574
  function skipUnreachableNodeTransform(context) {
8559
8575
  var fragments = new Map();
8560
- var nextContext = __webpack_require__(12).transform(context, {
8576
+ var nextContext = __webpack_require__(13).transform(context, {
8561
8577
  Root: function Root(node) {
8562
8578
  return transformNode(context, fragments, node);
8563
8579
  },
@@ -8587,8 +8603,8 @@ module.exports =
8587
8603
  nextSelection = transformNode(context, fragments, selection);
8588
8604
  }
8589
8605
  break;
8590
- case 'FragmentSpread':
8591
- // Skip fragment spreads if the referenced fragment is empty
8606
+ case 'DeferrableFragmentSpread':
8607
+ // Skip deferred fragment spreads if the referenced fragment is empty
8592
8608
  if (!fragments.has(selection.name)) {
8593
8609
  var fragment = context.getFragment(selection.name);
8594
8610
  var nextFragment = transformNode(context, fragments, fragment);
@@ -8598,6 +8614,17 @@ module.exports =
8598
8614
  nextSelection = selection;
8599
8615
  }
8600
8616
  break;
8617
+ case 'FragmentSpread':
8618
+ // Skip fragment spreads if the referenced fragment is empty
8619
+ if (!fragments.has(selection.name)) {
8620
+ var _fragment = context.getFragment(selection.name);
8621
+ var _nextFragment = transformNode(context, fragments, _fragment);
8622
+ fragments.set(selection.name, _nextFragment);
8623
+ }
8624
+ if (fragments.get(selection.name)) {
8625
+ nextSelection = selection;
8626
+ }
8627
+ break;
8601
8628
  case 'LinkedField':
8602
8629
  nextSelection = transformNode(context, fragments, selection);
8603
8630
  break;
@@ -8641,7 +8668,7 @@ module.exports =
8641
8668
  };
8642
8669
 
8643
8670
  /***/ }),
8644
- /* 74 */
8671
+ /* 73 */
8645
8672
  /***/ (function(module, exports, __webpack_require__) {
8646
8673
 
8647
8674
  /**
@@ -8656,7 +8683,7 @@ module.exports =
8656
8683
 
8657
8684
  'use strict';
8658
8685
 
8659
- var _asyncToGenerator2 = __webpack_require__(13);
8686
+ var _asyncToGenerator2 = __webpack_require__(12);
8660
8687
 
8661
8688
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
8662
8689
 
@@ -8707,7 +8734,7 @@ module.exports =
8707
8734
  };
8708
8735
 
8709
8736
  /***/ }),
8710
- /* 75 */
8737
+ /* 74 */
8711
8738
  /***/ (function(module, exports, __webpack_require__) {
8712
8739
 
8713
8740
  /**
@@ -8732,9 +8759,59 @@ module.exports =
8732
8759
  * by the query itself.
8733
8760
  */
8734
8761
  function stripUnusedVariablesTransform(context) {
8735
- return __webpack_require__(12).transform(context, {
8762
+ var fragmentToVariables = new Map();
8763
+ var fragmentToFragmentSpreads = new Map();
8764
+ var rootToVariables = new Map();
8765
+ var rootToFragmentSpreads = new Map();
8766
+ context.forEachDocument(function (document) {
8767
+ var fragmentVariables = void 0;
8768
+ var fragmentFragmentSpreads = void 0;
8769
+ var rootVariables = void 0;
8770
+ var rootFragmentSpreads = void 0;
8771
+ __webpack_require__(26).visit(document, {
8772
+ Root: {
8773
+ enter: function enter(root) {
8774
+ rootVariables = new Set();
8775
+ rootToVariables.set(root.name, rootVariables);
8776
+ rootFragmentSpreads = new Set();
8777
+ rootToFragmentSpreads.set(root.name, rootFragmentSpreads);
8778
+ },
8779
+ leave: function leave(root) {
8780
+ rootVariables = null;
8781
+ rootFragmentSpreads = null;
8782
+ }
8783
+ },
8784
+ Fragment: {
8785
+ enter: function enter(fragment) {
8786
+ fragmentVariables = new Set();
8787
+ fragmentToVariables.set(fragment.name, fragmentVariables);
8788
+ fragmentFragmentSpreads = new Set();
8789
+ fragmentToFragmentSpreads.set(fragment.name, fragmentFragmentSpreads);
8790
+ },
8791
+ leave: function leave(fragment) {
8792
+ fragmentVariables = null;
8793
+ fragmentFragmentSpreads = null;
8794
+ }
8795
+ },
8796
+ Variable: function Variable(variable) {
8797
+ fragmentVariables && fragmentVariables.add(variable.variableName);
8798
+ rootVariables && rootVariables.add(variable.variableName);
8799
+ },
8800
+ FragmentSpread: function FragmentSpread(spread) {
8801
+ fragmentFragmentSpreads && fragmentFragmentSpreads.add(spread.name);
8802
+ rootFragmentSpreads && rootFragmentSpreads.add(spread.name);
8803
+ }
8804
+ });
8805
+ });
8806
+ var variablesMemo = new Map();
8807
+ rootToVariables.forEach(function (variables, root) {
8808
+ Array.from(__webpack_require__(16)(rootToFragmentSpreads.get(root), 'root ' + root + ' wasn\'t found in StripUnusedVariablesTransform')).forEach(function (spread) {
8809
+ return into(variables, allVariablesReferencedInFragment(variablesMemo, spread, fragmentToVariables, fragmentToFragmentSpreads));
8810
+ });
8811
+ });
8812
+ return __webpack_require__(13).transform(context, {
8736
8813
  Root: function Root(root) {
8737
- return transformRoot(context, root);
8814
+ return transformRoot(context, root, __webpack_require__(16)(rootToVariables.get(root.name), 'root ' + root.name + ' wasn\'t found in StripUnusedVariablesTransform'));
8738
8815
  },
8739
8816
  // Include fragments, but do not traverse into them.
8740
8817
  Fragment: function Fragment(id) {
@@ -8743,43 +8820,32 @@ module.exports =
8743
8820
  });
8744
8821
  }
8745
8822
 
8746
- function transformRoot(context, root) {
8747
- var state = {
8748
- referencedVariables: new Set()
8749
- };
8750
- var newContext = __webpack_require__(12).transform(__webpack_require__(45)(root, context), {
8751
- Argument: visitArgument,
8752
- Condition: visitCondition
8753
- }, function () {
8754
- return state;
8755
- });
8756
- var transformedNode = newContext.getRoot(root.name);
8757
- /**
8758
- * Remove the extraneous arguments *after* transform returns, since fragments
8759
- * could be transformed after the root query.
8760
- */
8761
- return (0, _extends3['default'])({}, transformedNode, {
8762
- argumentDefinitions: transformedNode.argumentDefinitions.filter(function (arg) {
8763
- return state.referencedVariables.has(arg.name);
8764
- })
8765
- });
8823
+ function allVariablesReferencedInFragment(variablesMemo, fragment, fragmentToVariables, fragmentToFragmentSpreads) {
8824
+ var variables = variablesMemo.get(fragment);
8825
+ if (!variables) {
8826
+ var directVariables = __webpack_require__(16)(fragmentToVariables.get(fragment), 'fragment ' + fragment + ' wasn\'t found in StripUnusedVariablesTransform');
8827
+ variables = Array.from(__webpack_require__(16)(fragmentToFragmentSpreads.get(fragment), 'fragment ' + fragment + ' wasn\'t found in StripUnusedVariablesTransform')).reduce(function (allVariables, fragmentSpread) {
8828
+ return into(allVariables, allVariablesReferencedInFragment(variablesMemo, fragmentSpread, fragmentToVariables, fragmentToFragmentSpreads));
8829
+ }, directVariables);
8830
+ variablesMemo.set(fragment, variables);
8831
+ }
8832
+ return variables;
8766
8833
  }
8767
8834
 
8768
- function visitArgument(argument, state) {
8769
- var value = argument.value;
8770
-
8771
- if (value.kind === 'Variable') {
8772
- state.referencedVariables.add(value.variableName);
8773
- }
8774
- return argument;
8835
+ function transformRoot(context, root, variables) {
8836
+ return (0, _extends3['default'])({}, root, {
8837
+ argumentDefinitions: root.argumentDefinitions.filter(function (arg) {
8838
+ return variables.has(arg.name);
8839
+ })
8840
+ });
8775
8841
  }
8776
8842
 
8777
- function visitCondition(condition, state) {
8778
- var innerCondition = condition.condition;
8779
- if (innerCondition.kind === 'Variable') {
8780
- state.referencedVariables.add(innerCondition.variableName);
8781
- }
8782
- return condition;
8843
+ // Returns the union of setA and setB. Modifies setA!
8844
+ function into(setA, setB) {
8845
+ setB.forEach(function (item) {
8846
+ return setA.add(item);
8847
+ });
8848
+ return setA;
8783
8849
  }
8784
8850
 
8785
8851
  module.exports = {
@@ -8787,7 +8853,7 @@ module.exports =
8787
8853
  };
8788
8854
 
8789
8855
  /***/ }),
8790
- /* 76 */
8856
+ /* 75 */
8791
8857
  /***/ (function(module, exports) {
8792
8858
 
8793
8859
  /**
@@ -8906,7 +8972,7 @@ module.exports =
8906
8972
  module.exports = areEqual;
8907
8973
 
8908
8974
  /***/ }),
8909
- /* 77 */
8975
+ /* 76 */
8910
8976
  /***/ (function(module, exports, __webpack_require__) {
8911
8977
 
8912
8978
  /**
@@ -8925,7 +8991,7 @@ module.exports =
8925
8991
 
8926
8992
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
8927
8993
 
8928
- var _require = __webpack_require__(5),
8994
+ var _require = __webpack_require__(6),
8929
8995
  Profiler = _require.Profiler;
8930
8996
 
8931
8997
  // TODO T21875029 relay-runtime
@@ -8961,7 +9027,7 @@ module.exports =
8961
9027
  var codeGenContext = context.applyTransforms([].concat((0, _toConsumableArray3['default'])(transforms.commonTransforms), (0, _toConsumableArray3['default'])(transforms.queryTransforms), (0, _toConsumableArray3['default'])(transforms.codegenTransforms)), reporter);
8962
9028
 
8963
9029
  return fragmentContext.documents().map(function (node) {
8964
- return __webpack_require__(62).generate(node.kind === 'Fragment' ? node : {
9030
+ return __webpack_require__(61).generate(node.kind === 'Fragment' ? node : {
8965
9031
  kind: 'Batch',
8966
9032
  metadata: codeGenContext.getRoot(node.name).metadata || {},
8967
9033
  name: node.name,
@@ -8983,7 +9049,7 @@ module.exports =
8983
9049
  module.exports = compileRelayArtifacts;
8984
9050
 
8985
9051
  /***/ }),
8986
- /* 78 */
9052
+ /* 77 */
8987
9053
  /***/ (function(module, exports) {
8988
9054
 
8989
9055
  /**
@@ -9120,7 +9186,7 @@ module.exports =
9120
9186
  module.exports = dedupeJSONStringify;
9121
9187
 
9122
9188
  /***/ }),
9123
- /* 79 */
9189
+ /* 78 */
9124
9190
  /***/ (function(module, exports) {
9125
9191
 
9126
9192
  /**
@@ -9192,6 +9258,52 @@ module.exports =
9192
9258
 
9193
9259
  module.exports = deepMergeAssignments;
9194
9260
 
9261
+ /***/ }),
9262
+ /* 79 */
9263
+ /***/ (function(module, exports, __webpack_require__) {
9264
+
9265
+ /**
9266
+ * Copyright (c) 2013-present, Facebook, Inc.
9267
+ *
9268
+ * This source code is licensed under the MIT license found in the
9269
+ * LICENSE file in the root directory of this source tree.
9270
+ *
9271
+ * @providesModule filterContextForNode
9272
+ *
9273
+ * @format
9274
+ */
9275
+
9276
+ 'use strict';
9277
+
9278
+ var _require = __webpack_require__(26),
9279
+ visit = _require.visit;
9280
+
9281
+ /**
9282
+ * Returns a GraphQLCompilerContext containing only the documents referenced
9283
+ * by and including the provided node.
9284
+ */
9285
+ function filterContextForNode(node, context) {
9286
+ var queue = [node];
9287
+ var filteredContext = new (__webpack_require__(32))(context.serverSchema, context.clientSchema).add(node);
9288
+ var visitorConfig = {
9289
+ FragmentSpread: function FragmentSpread(fragmentSpread) {
9290
+ var name = fragmentSpread.name;
9291
+
9292
+ if (!filteredContext.get(name)) {
9293
+ var fragment = context.getFragment(name);
9294
+ filteredContext = filteredContext.add(fragment);
9295
+ queue.push(fragment);
9296
+ }
9297
+ }
9298
+ };
9299
+ while (queue.length) {
9300
+ visit(queue.pop(), visitorConfig);
9301
+ }
9302
+ return filteredContext;
9303
+ }
9304
+
9305
+ module.exports = filterContextForNode;
9306
+
9195
9307
  /***/ }),
9196
9308
  /* 80 */
9197
9309
  /***/ (function(module, exports) {
@@ -9326,13 +9438,13 @@ module.exports =
9326
9438
  function getModuleName(filePath) {
9327
9439
  // index.js -> index
9328
9440
  // index.js.flow -> index.js
9329
- var filename = __webpack_require__(4).basename(filePath, __webpack_require__(4).extname(filePath));
9441
+ var filename = __webpack_require__(3).basename(filePath, __webpack_require__(3).extname(filePath));
9330
9442
 
9331
9443
  // index.js -> index (when extension has multiple segments)
9332
9444
  filename = filename.replace(/(?:\.\w+)+/, '');
9333
9445
 
9334
9446
  // /path/to/button/index.js -> button
9335
- var moduleName = filename === 'index' ? __webpack_require__(4).basename(__webpack_require__(4).dirname(filePath)) : filename;
9447
+ var moduleName = filename === 'index' ? __webpack_require__(3).basename(__webpack_require__(3).dirname(filePath)) : filename;
9336
9448
 
9337
9449
  // Example.ios -> Example
9338
9450
  // Example.product.android -> Example
@@ -9366,7 +9478,7 @@ module.exports =
9366
9478
 
9367
9479
  'use strict';
9368
9480
 
9369
- var _require = __webpack_require__(36),
9481
+ var _require = __webpack_require__(37),
9370
9482
  DEFAULT_HANDLE_KEY = _require.DEFAULT_HANDLE_KEY;
9371
9483
 
9372
9484
  /**
@@ -9407,7 +9519,7 @@ module.exports =
9407
9519
  var _require = __webpack_require__(14),
9408
9520
  getRawType = _require.getRawType;
9409
9521
 
9410
- var _require2 = __webpack_require__(3),
9522
+ var _require2 = __webpack_require__(4),
9411
9523
  GraphQLNonNull = _require2.GraphQLNonNull,
9412
9524
  GraphQLList = _require2.GraphQLList;
9413
9525
 
@@ -9558,7 +9670,7 @@ module.exports =
9558
9670
 
9559
9671
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
9560
9672
 
9561
- var _require = __webpack_require__(5),
9673
+ var _require = __webpack_require__(6),
9562
9674
  filterContextForNode = _require.filterContextForNode,
9563
9675
  Printer = _require.Printer;
9564
9676
 
@@ -9677,7 +9789,7 @@ module.exports =
9677
9789
 
9678
9790
  // TODO T21875029 ../../relay-runtime/util/RelayConcreteNode
9679
9791
 
9680
- var _asyncToGenerator2 = __webpack_require__(13);
9792
+ var _asyncToGenerator2 = __webpack_require__(12);
9681
9793
 
9682
9794
  var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
9683
9795
 
@@ -9707,7 +9819,7 @@ module.exports =
9707
9819
  var oldHash = Profiler.run('RelayFileWriter:compareHash', function () {
9708
9820
  var oldContent = codegenDir.read(filename);
9709
9821
  // Hash the concrete node including the query text.
9710
- var hasher = __webpack_require__(23).createHash('md5');
9822
+ var hasher = __webpack_require__(24).createHash('md5');
9711
9823
  hasher.update('cache-breaker-6');
9712
9824
  hasher.update(JSON.stringify(generatedNode));
9713
9825
  if (flowText) {
@@ -9733,7 +9845,7 @@ module.exports =
9733
9845
  devOnlyProperties.text = generatedNode.text;
9734
9846
  generatedNode = (0, _extends3['default'])({}, generatedNode, {
9735
9847
  text: null,
9736
- id: yield persistQuery(__webpack_require__(18)(generatedNode.text))
9848
+ id: yield persistQuery(__webpack_require__(19)(generatedNode.text))
9737
9849
  });
9738
9850
  break;
9739
9851
  case __webpack_require__(11).BATCH_REQUEST:
@@ -9747,7 +9859,7 @@ module.exports =
9747
9859
  var _ref2 = (0, _asyncToGenerator3.default)(function* (request) {
9748
9860
  return (0, _extends3['default'])({}, request, {
9749
9861
  text: null,
9750
- id: yield persistQuery(__webpack_require__(18)(request.text))
9862
+ id: yield persistQuery(__webpack_require__(19)(request.text))
9751
9863
  });
9752
9864
  });
9753
9865
 
@@ -9766,7 +9878,7 @@ module.exports =
9766
9878
  }
9767
9879
  }
9768
9880
 
9769
- var devOnlyAssignments = __webpack_require__(79)('node', devOnlyProperties);
9881
+ var devOnlyAssignments = __webpack_require__(78)('node', devOnlyProperties);
9770
9882
 
9771
9883
  var moduleText = formatModule({
9772
9884
  moduleName: moduleName,
@@ -9774,7 +9886,7 @@ module.exports =
9774
9886
  docText: docText,
9775
9887
  flowText: flowText,
9776
9888
  hash: hash ? '@relayHash ' + hash : null,
9777
- concreteText: __webpack_require__(78)(generatedNode),
9889
+ concreteText: __webpack_require__(77)(generatedNode),
9778
9890
  devOnlyAssignments: devOnlyAssignments,
9779
9891
  relayRuntimeModule: relayRuntimeModule,
9780
9892
  sourceHash: sourceHash
@@ -9791,7 +9903,7 @@ module.exports =
9791
9903
 
9792
9904
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
9793
9905
 
9794
- var _require = __webpack_require__(5),
9906
+ var _require = __webpack_require__(6),
9795
9907
  Profiler = _require.Profiler;
9796
9908
 
9797
9909
  // TODO T21875029 ../../relay-runtime/util/RelayConcreteNode