relay-compiler 1.5.0-rc.1 → 1.5.0

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