relay-compiler 1.3.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. package/LICENSE +16 -26
  2. package/bin/relay-compiler +7348 -5939
  3. package/index.js +3 -6
  4. package/lib/{FileParser.js → ASTCache.js} +17 -14
  5. package/lib/ASTConvert.js +84 -70
  6. package/lib/CodegenDirectory.js +122 -28
  7. package/lib/{RelayCodegenRunner.js → CodegenRunner.js} +110 -186
  8. package/lib/CodegenTypes.js +12 -0
  9. package/lib/{RelayCodegenWatcher.js → CodegenWatcher.js} +53 -43
  10. package/lib/DefaultHandleKey.js +2 -4
  11. package/lib/DotGraphQLParser.js +27 -0
  12. package/lib/FilterDirectivesTransform.js +11 -11
  13. package/lib/FindGraphQLTags.js +33 -52
  14. package/lib/FlattenTransform.js +197 -0
  15. package/lib/GraphQLCompilerContext.js +158 -0
  16. package/lib/GraphQLCompilerProfiler.js +271 -0
  17. package/lib/GraphQLCompilerPublic.js +27 -22
  18. package/lib/GraphQLCompilerUserError.js +26 -0
  19. package/lib/GraphQLConsoleReporter.js +58 -0
  20. package/lib/GraphQLIR.js +12 -0
  21. package/lib/{RelayPrinter.js → GraphQLIRPrinter.js} +42 -38
  22. package/lib/{RelayIRTransformer.js → GraphQLIRTransformer.js} +47 -38
  23. package/lib/GraphQLIRTransforms.js +6 -15
  24. package/lib/{RelayIRVisitor.js → GraphQLIRVisitor.js} +7 -6
  25. package/lib/GraphQLMultiReporter.js +50 -0
  26. package/lib/GraphQLParser.js +743 -0
  27. package/lib/GraphQLReporter.js +12 -0
  28. package/lib/GraphQLSchemaUtils.js +10 -36
  29. package/lib/GraphQLValidator.js +13 -15
  30. package/lib/{RelayWatchmanClient.js → GraphQLWatchmanClient.js} +15 -17
  31. package/lib/InlineFragmentsTransform.js +48 -0
  32. package/lib/PatchedBabelGenerator.js +58 -0
  33. package/lib/RelayApplyFragmentArgumentTransform.js +37 -18
  34. package/lib/RelayCodeGenerator.js +130 -60
  35. package/lib/RelayCompilerBin.js +80 -35
  36. package/lib/RelayCompilerCache.js +18 -11
  37. package/lib/RelayCompilerPublic.js +24 -10
  38. package/lib/RelayCompilerScope.js +2 -4
  39. package/lib/RelayConcreteNode.js +31 -14
  40. package/lib/RelayConnectionConstants.js +2 -4
  41. package/lib/RelayConnectionTransform.js +34 -38
  42. package/lib/RelayDefaultHandleKey.js +2 -4
  43. package/lib/RelayDeferrableFragmentTransform.js +464 -0
  44. package/lib/RelayError.js +2 -6
  45. package/lib/RelayFieldHandleTransform.js +15 -11
  46. package/lib/RelayFileWriter.js +119 -98
  47. package/lib/RelayFlowBabelFactories.js +113 -0
  48. package/lib/RelayFlowGenerator.js +180 -200
  49. package/lib/RelayFlowTypeTransformers.js +109 -0
  50. package/lib/RelayGenerateIDFieldTransform.js +131 -0
  51. package/lib/RelayGenerateTypeNameTransform.js +75 -0
  52. package/lib/RelayGraphQLEnumsGenerator.js +65 -0
  53. package/lib/RelayIRTransforms.js +19 -23
  54. package/lib/RelayInternalTypes.js +2 -5
  55. package/lib/RelayInternals.js +2 -5
  56. package/lib/RelayJSModuleParser.js +64 -0
  57. package/lib/RelayMaskTransform.js +129 -0
  58. package/lib/RelayMetricsRecorder.js +9 -9
  59. package/lib/RelayMockRenderer.js +3 -8
  60. package/lib/RelayNetworkDebug.js +4 -7
  61. package/lib/RelayParser.js +28 -645
  62. package/lib/RelayProfiler.js +7 -7
  63. package/lib/RelayQueryCaching.js +2 -5
  64. package/lib/RelayRelayDirectiveTransform.js +47 -33
  65. package/lib/RelayRuntimeTypes.js +22 -0
  66. package/lib/RelayShallowMock.js +4 -7
  67. package/lib/RelaySkipHandleFieldTransform.js +13 -11
  68. package/lib/RelayTaskQueue.js +2 -5
  69. package/lib/RelayTransformUtils.js +20 -0
  70. package/lib/RelayTypes.js +2 -5
  71. package/lib/RelayValidator.js +9 -8
  72. package/lib/RelayViewerHandleTransform.js +22 -18
  73. package/lib/SkipClientFieldTransform.js +36 -53
  74. package/lib/SkipRedundantNodesTransform.js +22 -29
  75. package/lib/SkipUnreachableNodeTransform.js +57 -36
  76. package/lib/SourceControl.js +61 -0
  77. package/lib/StripUnusedVariablesTransform.js +86 -41
  78. package/lib/areEqualOSS.js +2 -4
  79. package/lib/compileRelayArtifacts.js +72 -0
  80. package/lib/dedent.js +2 -5
  81. package/lib/dedupeJSONStringify.js +132 -0
  82. package/lib/deepFreeze.js +3 -5
  83. package/lib/deepMergeAssignments.js +68 -0
  84. package/lib/filterContextForNode.js +5 -7
  85. package/lib/formatGeneratedModule.js +5 -9
  86. package/lib/{getIdentifierForRelayArgumentValue.js → getIdentifierForArgumentValue.js} +8 -10
  87. package/lib/getIdentifierForSelection.js +37 -0
  88. package/lib/getLiteralArgumentValues.js +26 -0
  89. package/lib/getModuleName.js +2 -4
  90. package/lib/getRelayHandleKey.js +2 -4
  91. package/lib/isCompatibleRelayFragmentType.js +2 -5
  92. package/lib/isEquivalentType.js +55 -0
  93. package/lib/isPromise.js +2 -5
  94. package/lib/isScalarAndEqual.js +3 -5
  95. package/lib/murmurHash.js +2 -4
  96. package/lib/nullthrowsOSS.js +7 -5
  97. package/lib/recycleNodesInto.js +2 -4
  98. package/lib/relayUnstableBatchedUpdates.js +2 -5
  99. package/lib/relayUnstableBatchedUpdates.native.js +2 -5
  100. package/lib/requestsForOperation.js +75 -0
  101. package/lib/simpleClone.js +2 -4
  102. package/lib/stableCopy.js +35 -0
  103. package/lib/testEditDistance.js +2 -5
  104. package/lib/throwFailedPromise.js +2 -5
  105. package/lib/writeRelayGeneratedFile.js +84 -50
  106. package/package.json +16 -15
  107. package/relay-compiler.js +7208 -5872
  108. package/relay-compiler.min.js +7200 -5867
  109. package/ARCHITECTURE.md +0 -94
  110. package/PATENTS +0 -33
  111. package/lib/AutoAliasTransform.js +0 -80
  112. package/lib/GraphQLFileParser.js +0 -27
  113. package/lib/GraphQLTextParser.js +0 -46
  114. package/lib/RelayCodegenTypes.js +0 -14
  115. package/lib/RelayCompiledTypes.js +0 -13
  116. package/lib/RelayCompiler.js +0 -144
  117. package/lib/RelayCompilerContext.js +0 -133
  118. package/lib/RelayCompilerUserError.js +0 -30
  119. package/lib/RelayConsoleReporter.js +0 -40
  120. package/lib/RelayFileIRParser.js +0 -66
  121. package/lib/RelayFlattenTransform.js +0 -278
  122. package/lib/RelayFlowParser.js +0 -188
  123. package/lib/RelayGenerateRequisiteFieldsTransform.js +0 -189
  124. package/lib/RelayIR.js +0 -14
  125. package/lib/RelayMultiReporter.js +0 -40
  126. package/lib/RelayReporter.js +0 -14
  127. package/lib/RelayTestSchema.js +0 -21
  128. package/lib/formatStorageKey.js +0 -37
  129. package/lib/getIdentifierForRelaySelection.js +0 -54
  130. package/lib/getRelayLiteralArgumentValues.js +0 -28
  131. package/lib/parseGraphQLText.js +0 -33
  132. package/lib/prettyStringify.js +0 -35
  133. package/lib/printFlowTypes.js +0 -282
  134. package/lib/stableJSONStringify.js +0 -45
  135. package/lib/stableJSONStringifyOSS.js +0 -44
  136. package/lib/transformInputObjectToIR.js +0 -85
  137. package/lib/writeLegacyFlowFile.js +0 -24
@@ -1,12 +1,10 @@
1
1
  /**
2
2
  * Copyright (c) 2013-present, Facebook, Inc.
3
- * All rights reserved.
4
3
  *
5
- * This source code is licensed under the BSD-style license found in the
6
- * LICENSE file in the root directory of this source tree. An additional grant
7
- * of patent rights can be found in the PATENTS file in the same directory.
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
8
6
  *
9
- * @providesModule RelayCodegenRunner
7
+ * @providesModule CodegenRunner
10
8
  *
11
9
  * @format
12
10
  */
@@ -26,20 +24,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'd
26
24
  var _require = require('immutable'),
27
25
  ImmutableMap = _require.Map;
28
26
 
29
- /* eslint-disable no-console-disallow */
30
-
31
- var RelayCodegenRunner = function () {
32
- // parser => writers that are affected by it
33
- function RelayCodegenRunner(options) {
27
+ var CodegenRunner = function () {
28
+ function CodegenRunner(options) {
34
29
  var _this = this;
35
30
 
36
- (0, _classCallCheck3['default'])(this, RelayCodegenRunner);
37
- this.parsers = {};
31
+ (0, _classCallCheck3['default'])(this, CodegenRunner);
38
32
 
33
+ this.parsers = {};
39
34
  this.parserConfigs = options.parserConfigs;
40
35
  this.writerConfigs = options.writerConfigs;
41
36
  this.onlyValidate = options.onlyValidate;
42
37
  this._reporter = options.reporter;
38
+ this._sourceControl = options.sourceControl;
43
39
 
44
40
  this.parserWriters = {};
45
41
  for (var _parser in options.parserConfigs) {
@@ -58,8 +54,10 @@ var RelayCodegenRunner = function () {
58
54
  _loop(_writer);
59
55
  }
60
56
  }
57
+ // parser => writers that are affected by it
58
+
61
59
 
62
- RelayCodegenRunner.prototype.compileAll = (() => {
60
+ CodegenRunner.prototype.compileAll = (() => {
63
61
  var _ref = (0, _asyncToGenerator3.default)(function* () {
64
62
  // reset the parsers
65
63
  this.parsers = {};
@@ -67,7 +65,7 @@ var RelayCodegenRunner = function () {
67
65
  try {
68
66
  yield this.parseEverything(parserName);
69
67
  } catch (e) {
70
- this._reporter.reportError('RelayCodegenRunner.compileAll', e);
68
+ this._reporter.reportError('CodegenRunner.compileAll', e);
71
69
  return 'ERROR';
72
70
  }
73
71
  }
@@ -92,7 +90,7 @@ var RelayCodegenRunner = function () {
92
90
  return compileAll;
93
91
  })();
94
92
 
95
- RelayCodegenRunner.prototype.compile = (() => {
93
+ CodegenRunner.prototype.compile = (() => {
96
94
  var _ref2 = (0, _asyncToGenerator3.default)(function* (writerName) {
97
95
  var _this2 = this;
98
96
 
@@ -105,9 +103,11 @@ var RelayCodegenRunner = function () {
105
103
  });
106
104
  }
107
105
  // Don't bother resetting the parsers
108
- yield Promise.all(parsers.map(function (parser) {
109
- return _this2.parseEverything(parser);
110
- }));
106
+ yield require('./GraphQLCompilerProfiler').asyncContext('CodegenRunner:parseEverything', function () {
107
+ return Promise.all(parsers.map(function (parser) {
108
+ return _this2.parseEverything(parser);
109
+ }));
110
+ });
111
111
 
112
112
  return yield this.write(writerName);
113
113
  });
@@ -119,15 +119,15 @@ var RelayCodegenRunner = function () {
119
119
  return compile;
120
120
  })();
121
121
 
122
- RelayCodegenRunner.prototype.getDirtyWriters = (() => {
123
- var _ref3 = (0, _asyncToGenerator3.default)(function* (filePaths) {
124
- var _this3 = this;
122
+ CodegenRunner.prototype.getDirtyWriters = function getDirtyWriters(filePaths) {
123
+ var _this3 = this;
125
124
 
125
+ return require('./GraphQLCompilerProfiler').asyncContext('CodegenRunner:getDirtyWriters', (0, _asyncToGenerator3.default)(function* () {
126
126
  var dirtyWriters = new Set();
127
127
 
128
128
  // Check if any files are in the output
129
- for (var configName in this.writerConfigs) {
130
- var config = this.writerConfigs[configName];
129
+ for (var configName in _this3.writerConfigs) {
130
+ var config = _this3.writerConfigs[configName];
131
131
  var _iteratorNormalCompletion = true;
132
132
  var _didIteratorError = false;
133
133
  var _iteratorError = undefined;
@@ -156,11 +156,10 @@ var RelayCodegenRunner = function () {
156
156
  }
157
157
  }
158
158
 
159
- var client = new (require('./RelayWatchmanClient'))();
160
-
161
159
  // Check for files in the input
162
- yield Promise.all(Object.keys(this.parserConfigs).map((() => {
163
- var _ref4 = (0, _asyncToGenerator3.default)(function* (parserConfigName) {
160
+ yield Promise.all(Object.keys(_this3.parserConfigs).map(function (parserConfigName) {
161
+ return require('./GraphQLCompilerProfiler').waitFor('Watchman:query', (0, _asyncToGenerator3.default)(function* () {
162
+ var client = new (require('./GraphQLWatchmanClient'))();
164
163
  var config = _this3.parserConfigs[parserConfigName];
165
164
  var dirs = yield client.watchProject(config.baseDir);
166
165
 
@@ -175,30 +174,21 @@ var RelayCodegenRunner = function () {
175
174
  };
176
175
 
177
176
  var result = yield client.command('query', dirs.root, query);
177
+ client.end();
178
+
178
179
  if (result.files.length > 0) {
179
180
  _this3.parserWriters[parserConfigName].forEach(function (writerName) {
180
181
  return dirtyWriters.add(writerName);
181
182
  });
182
183
  }
183
- });
184
-
185
- return function (_x3) {
186
- return _ref4.apply(this, arguments);
187
- };
188
- })()));
184
+ }));
185
+ }));
189
186
 
190
- client.end();
191
187
  return dirtyWriters;
192
- });
193
-
194
- function getDirtyWriters(_x2) {
195
- return _ref3.apply(this, arguments);
196
- }
197
-
198
- return getDirtyWriters;
199
- })();
188
+ }));
189
+ };
200
190
 
201
- RelayCodegenRunner.prototype.parseEverything = (() => {
191
+ CodegenRunner.prototype.parseEverything = (() => {
202
192
  var _ref5 = (0, _asyncToGenerator3.default)(function* (parserName) {
203
193
  if (this.parsers[parserName]) {
204
194
  // no need to parse
@@ -215,74 +205,43 @@ var RelayCodegenRunner = function () {
215
205
 
216
206
  var files = void 0;
217
207
  if (parserConfig.watchmanExpression) {
218
- files = yield require('./RelayCodegenWatcher').queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
208
+ files = yield require('./CodegenWatcher').queryFiles(parserConfig.baseDir, parserConfig.watchmanExpression, filter);
219
209
  } else if (parserConfig.filepaths) {
220
- files = yield require('./RelayCodegenWatcher').queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
210
+ files = yield require('./CodegenWatcher').queryFilepaths(parserConfig.baseDir, parserConfig.filepaths, filter);
221
211
  } else {
222
212
  throw new Error('Either `watchmanExpression` or `filepaths` is required to query files');
223
213
  }
224
214
  this.parseFileChanges(parserName, files);
225
215
  });
226
216
 
227
- function parseEverything(_x4) {
217
+ function parseEverything(_x2) {
228
218
  return _ref5.apply(this, arguments);
229
219
  }
230
220
 
231
221
  return parseEverything;
232
222
  })();
233
223
 
234
- RelayCodegenRunner.prototype.parseFileChanges = function parseFileChanges(parserName, files) {
235
- var tStart = Date.now();
236
- var parser = this.parsers[parserName];
237
- // this maybe should be await parser.parseFiles(files);
238
- parser.parseFiles(files);
239
- var tEnd = Date.now();
240
- console.log('Parsed %s in %s', parserName, toSeconds(tStart, tEnd));
224
+ CodegenRunner.prototype.parseFileChanges = function parseFileChanges(parserName, files) {
225
+ var _this4 = this;
226
+
227
+ return require('./GraphQLCompilerProfiler').run('CodegenRunner.parseFileChanges', function () {
228
+ var parser = _this4.parsers[parserName];
229
+ // this maybe should be await parser.parseFiles(files);
230
+ parser.parseFiles(files);
231
+ });
241
232
  };
242
233
 
243
234
  // We cannot do incremental writes right now.
244
235
  // When we can, this could be writeChanges(writerName, parserName, parsedDefinitions)
245
236
 
246
237
 
247
- RelayCodegenRunner.prototype.write = (() => {
248
- var _ref6 = (0, _asyncToGenerator3.default)(function* (writerName) {
249
- var _this4 = this;
238
+ CodegenRunner.prototype.write = function write(writerName) {
239
+ var _this5 = this;
250
240
 
241
+ return require('./GraphQLCompilerProfiler').asyncContext('CodegenRunner.write', (0, _asyncToGenerator3.default)(function* () {
251
242
  try {
252
- var combineChanges = function combineChanges(accessor) {
253
- var combined = [];
254
- require('fbjs/lib/invariant')(outputDirectories, 'RelayCodegenRunner: Expected outputDirectories to be set');
255
- var _iteratorNormalCompletion2 = true;
256
- var _didIteratorError2 = false;
257
- var _iteratorError2 = undefined;
258
-
259
- try {
260
- for (var _iterator2 = outputDirectories.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
261
- var dir = _step2.value;
262
-
263
- combined.push.apply(combined, (0, _toConsumableArray3['default'])(accessor(dir.changes)));
264
- }
265
- } catch (err) {
266
- _didIteratorError2 = true;
267
- _iteratorError2 = err;
268
- } finally {
269
- try {
270
- if (!_iteratorNormalCompletion2 && _iterator2['return']) {
271
- _iterator2['return']();
272
- }
273
- } finally {
274
- if (_didIteratorError2) {
275
- throw _iteratorError2;
276
- }
277
- }
278
- }
279
-
280
- return combined;
281
- };
282
-
283
- console.log('\nWriting %s', writerName);
284
- var tStart = Date.now();
285
- var _writerConfigs$writer = this.writerConfigs[writerName],
243
+ _this5._reporter.reportMessage('\nWriting ' + writerName);
244
+ var _writerConfigs$writer = _this5.writerConfigs[writerName],
286
245
  _getWriter = _writerConfigs$writer.getWriter,
287
246
  _parser2 = _writerConfigs$writer.parser,
288
247
  _baseParsers = _writerConfigs$writer.baseParsers,
@@ -292,111 +251,89 @@ var RelayCodegenRunner = function () {
292
251
  var _baseDocuments = ImmutableMap();
293
252
  if (_baseParsers) {
294
253
  _baseParsers.forEach(function (baseParserName) {
295
- _baseDocuments = _baseDocuments.merge(_this4.parsers[baseParserName].documents());
254
+ _baseDocuments = _baseDocuments.merge(_this5.parsers[baseParserName].documents());
296
255
  });
297
256
  }
298
257
 
299
258
  // always create a new writer: we have to write everything anyways
300
- var _documents = this.parsers[_parser2].documents();
301
- var _schema = this.parserConfigs[_parser2].getSchema();
302
- var _writer2 = _getWriter(this.onlyValidate, _schema, _documents, _baseDocuments);
303
-
304
- var outputDirectories = yield _writer2.writeAll();
305
-
306
- var tWritten = Date.now();
307
-
308
- var created = combineChanges(function (_) {
309
- return _.created;
310
- });
311
- var updated = combineChanges(function (_) {
312
- return _.updated;
259
+ var _documents = _this5.parsers[_parser2].documents();
260
+ var _schema = require('./GraphQLCompilerProfiler').run('getSchema', function () {
261
+ return _this5.parserConfigs[_parser2].getSchema();
313
262
  });
314
- var deleted = combineChanges(function (_) {
315
- return _.deleted;
316
- });
317
- var unchanged = combineChanges(function (_) {
318
- return _.unchanged;
263
+ var _writer2 = _getWriter({
264
+ onlyValidate: _this5.onlyValidate,
265
+ schema: _schema,
266
+ documents: _documents,
267
+ baseDocuments: _baseDocuments,
268
+ sourceControl: _this5._sourceControl,
269
+ reporter: _this5._reporter
319
270
  });
320
271
 
321
- var _iteratorNormalCompletion3 = true;
322
- var _didIteratorError3 = false;
323
- var _iteratorError3 = undefined;
272
+ var outputDirectories = yield _writer2.writeAll();
273
+
274
+ var _iteratorNormalCompletion2 = true;
275
+ var _didIteratorError2 = false;
276
+ var _iteratorError2 = undefined;
324
277
 
325
278
  try {
326
- for (var _iterator3 = outputDirectories.values()[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
327
- var dir = _step3.value;
279
+ for (var _iterator2 = outputDirectories.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
280
+ var dir = _step2.value;
328
281
 
329
282
  var all = [].concat((0, _toConsumableArray3['default'])(dir.changes.created), (0, _toConsumableArray3['default'])(dir.changes.updated), (0, _toConsumableArray3['default'])(dir.changes.deleted), (0, _toConsumableArray3['default'])(dir.changes.unchanged));
330
-
331
- var _iteratorNormalCompletion4 = true;
332
- var _didIteratorError4 = false;
333
- var _iteratorError4 = undefined;
283
+ var _iteratorNormalCompletion3 = true;
284
+ var _didIteratorError3 = false;
285
+ var _iteratorError3 = undefined;
334
286
 
335
287
  try {
336
- for (var _iterator4 = all[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
337
- var filename = _step4.value;
288
+ for (var _iterator3 = all[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
289
+ var filename = _step3.value;
338
290
 
339
291
  var _filePath2 = dir.getPath(filename);
340
- require('fbjs/lib/invariant')(_isGeneratedFile(_filePath2), 'RelayCodegenRunner: %s returned false for isGeneratedFile, ' + 'but was in generated directory', _filePath2);
292
+ require('fbjs/lib/invariant')(_isGeneratedFile(_filePath2), 'CodegenRunner: %s returned false for isGeneratedFile, ' + 'but was in generated directory', _filePath2);
341
293
  }
342
294
  } catch (err) {
343
- _didIteratorError4 = true;
344
- _iteratorError4 = err;
295
+ _didIteratorError3 = true;
296
+ _iteratorError3 = err;
345
297
  } finally {
346
298
  try {
347
- if (!_iteratorNormalCompletion4 && _iterator4['return']) {
348
- _iterator4['return']();
299
+ if (!_iteratorNormalCompletion3 && _iterator3['return']) {
300
+ _iterator3['return']();
349
301
  }
350
302
  } finally {
351
- if (_didIteratorError4) {
352
- throw _iteratorError4;
303
+ if (_didIteratorError3) {
304
+ throw _iteratorError3;
353
305
  }
354
306
  }
355
307
  }
356
308
  }
357
309
  } catch (err) {
358
- _didIteratorError3 = true;
359
- _iteratorError3 = err;
310
+ _didIteratorError2 = true;
311
+ _iteratorError2 = err;
360
312
  } finally {
361
313
  try {
362
- if (!_iteratorNormalCompletion3 && _iterator3['return']) {
363
- _iterator3['return']();
314
+ if (!_iteratorNormalCompletion2 && _iterator2['return']) {
315
+ _iterator2['return']();
364
316
  }
365
317
  } finally {
366
- if (_didIteratorError3) {
367
- throw _iteratorError3;
318
+ if (_didIteratorError2) {
319
+ throw _iteratorError2;
368
320
  }
369
321
  }
370
322
  }
371
323
 
372
- if (this.onlyValidate) {
373
- printFiles('Missing', created);
374
- printFiles('Out of date', updated);
375
- printFiles('Extra', deleted);
376
- } else {
377
- printFiles('Created', created);
378
- printFiles('Updated', updated);
379
- printFiles('Deleted', deleted);
380
- console.log('Unchanged: %s files', unchanged.length);
381
- }
382
-
383
- console.log('Written %s in %s', writerName, toSeconds(tStart, tWritten));
384
-
385
- return created.length + updated.length + deleted.length > 0 ? 'HAS_CHANGES' : 'NO_CHANGES';
324
+ var combinedChanges = require('./CodegenDirectory').combineChanges(Array.from(outputDirectories.values()));
325
+ require('./CodegenDirectory').printChanges(combinedChanges, {
326
+ onlyValidate: _this5.onlyValidate
327
+ });
328
+ return require('./CodegenDirectory').hasChanges(combinedChanges) ? 'HAS_CHANGES' : 'NO_CHANGES';
386
329
  } catch (e) {
387
- this._reporter.reportError('RelayCodegenRunner.write', e);
330
+ _this5._reporter.reportError('CodegenRunner.write', e);
388
331
  return 'ERROR';
389
332
  }
390
- });
391
-
392
- function write(_x5) {
393
- return _ref6.apply(this, arguments);
394
- }
395
-
396
- return write;
397
- })();
333
+ }));
334
+ };
398
335
 
399
- RelayCodegenRunner.prototype.watchAll = (() => {
336
+ CodegenRunner.prototype.watchAll = (() => {
400
337
  var _ref7 = (0, _asyncToGenerator3.default)(function* () {
401
338
  // get everything set up for watching
402
339
  yield this.compileAll();
@@ -413,9 +350,9 @@ var RelayCodegenRunner = function () {
413
350
  return watchAll;
414
351
  })();
415
352
 
416
- RelayCodegenRunner.prototype.watch = (() => {
353
+ CodegenRunner.prototype.watch = (() => {
417
354
  var _ref8 = (0, _asyncToGenerator3.default)(function* (parserName) {
418
- var _this5 = this;
355
+ var _this6 = this;
419
356
 
420
357
  var parserConfig = this.parserConfigs[parserName];
421
358
 
@@ -428,66 +365,53 @@ var RelayCodegenRunner = function () {
428
365
  // we should prevent the first watch callback from doing anything.
429
366
  var firstChange = true;
430
367
 
431
- yield require('./RelayCodegenWatcher').watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
368
+ yield require('./CodegenWatcher').watchCompile(parserConfig.baseDir, parserConfig.watchmanExpression, parserConfig.getFileFilter ? parserConfig.getFileFilter(parserConfig.baseDir) : anyFileFilter, (() => {
432
369
  var _ref9 = (0, _asyncToGenerator3.default)(function* (files) {
433
- require('fbjs/lib/invariant')(_this5.parsers[parserName], 'Trying to watch an uncompiled parser config: %s', parserName);
370
+ require('fbjs/lib/invariant')(_this6.parsers[parserName], 'Trying to watch an uncompiled parser config: %s', parserName);
434
371
  if (firstChange) {
435
372
  firstChange = false;
436
373
  return;
437
374
  }
438
375
  var dependentWriters = [];
439
- _this5.parserWriters[parserName].forEach(function (writer) {
376
+ _this6.parserWriters[parserName].forEach(function (writer) {
440
377
  return dependentWriters.push(writer);
441
378
  });
442
379
 
443
380
  try {
444
- if (!_this5.parsers[parserName]) {
381
+ if (!_this6.parsers[parserName]) {
445
382
  // have to load the parser and make sure all of its dependents are set
446
- yield _this5.parseEverything(parserName);
383
+ yield _this6.parseEverything(parserName);
447
384
  } else {
448
- _this5.parseFileChanges(parserName, files);
385
+ _this6.parseFileChanges(parserName, files);
449
386
  }
450
387
  yield Promise.all(dependentWriters.map(function (writer) {
451
- return _this5.write(writer);
388
+ return _this6.write(writer);
452
389
  }));
453
390
  } catch (error) {
454
- _this5._reporter.reportError('RelayCodegenRunner.watch', error);
391
+ _this6._reporter.reportError('CodegenRunner.watch', error);
455
392
  }
456
- console.log('Watching for changes to %s...', parserName);
393
+ _this6._reporter.reportMessage('Watching for changes to ' + parserName + '...');
457
394
  });
458
395
 
459
- return function (_x7) {
396
+ return function (_x4) {
460
397
  return _ref9.apply(this, arguments);
461
398
  };
462
399
  })());
463
- console.log('Watching for changes to %s...', parserName);
400
+ this._reporter.reportMessage('Watching for changes to ' + parserName + '...');
464
401
  });
465
402
 
466
- function watch(_x6) {
403
+ function watch(_x3) {
467
404
  return _ref8.apply(this, arguments);
468
405
  }
469
406
 
470
407
  return watch;
471
408
  })();
472
409
 
473
- return RelayCodegenRunner;
410
+ return CodegenRunner;
474
411
  }();
475
412
 
476
413
  function anyFileFilter(file) {
477
414
  return true;
478
415
  }
479
416
 
480
- function toSeconds(t0, t1) {
481
- return ((t1 - t0) / 1000).toFixed(2) + 's';
482
- }
483
-
484
- function printFiles(label, files) {
485
- if (files.length > 0) {
486
- console.log(label + ':');
487
- files.forEach(function (file) {
488
- console.log(' - ' + file);
489
- });
490
- }
491
- }
492
-
493
- module.exports = RelayCodegenRunner;
417
+ module.exports = CodegenRunner;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2013-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @providesModule CodegenTypes
8
+ *
9
+ * @format
10
+ */
11
+
12
+ 'use strict';