Skip to content

Commit eeb0bf1

Browse files
committed
Updates from Sun Feb 15
- [react-packager][streamline oss] Injectable transformer | Amjad Masad
1 parent ef842c2 commit eeb0bf1

5 files changed

Lines changed: 34 additions & 23 deletions

File tree

jestSupport/scriptPreprocess.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use strict';
22

3-
var transformer = require('../packager/react-packager/src/JSTransformer/transformer.js');
3+
var transformer = require('../packager/transformer.js');
44

55
function transformSource(src) {
66
return transformer.transform(null, src).code;

packager/packager.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,7 @@ function getAppMiddleware(options) {
8484
projectRoots: options.projectRoots,
8585
blacklistRE: blacklist(false),
8686
cacheVersion: '2',
87-
polyfillModuleNames: [
88-
path.resolve(__dirname, 'polyfill/console.js'),
89-
path.resolve(__dirname, 'polyfill/error-guard.js'),
90-
]
87+
transformModulePath: require.resolve('./transformer.js'),
9188
});
9289
}
9390

packager/react-packager/src/JSTransformer/index.js

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,21 @@ var Cache = require('./Cache');
88
var _ = require('underscore');
99
var workerFarm = require('worker-farm');
1010

11-
var workers = workerFarm(require.resolve('./worker'));
12-
warmupWorkers();
13-
1411
var readFile = q.nfbind(fs.readFile);
1512

1613
module.exports = Transformer;
1714
Transformer.TransformError = TransformError;
1815

1916
function Transformer(projectConfig) {
2017
this._cache = new Cache(projectConfig);
18+
this._workers = workerFarm(
19+
{autoStart: true},
20+
projectConfig.transformModulePath
21+
);
2122
}
2223

2324
Transformer.prototype.kill = function() {
24-
workerFarm.end(workers);
25+
workerFarm.end(this._workers);
2526
return this._cache.end();
2627
};
2728

@@ -36,6 +37,7 @@ Transformer.prototype.loadFileAndTransform = function(
3637
filePath,
3738
options
3839
) {
40+
var workers = this._workers;
3941
return this._cache.get(filePath, function() {
4042
return readFile(filePath)
4143
.then(function(buffer) {
@@ -62,19 +64,6 @@ Transformer.prototype.loadFileAndTransform = function(
6264
});
6365
};
6466

65-
// worker-farm module starts workers lazily. But we want them to take time
66-
// to initialize so we send a dummy request.
67-
// see https://github.com/rvagg/node-worker-farm/issues/23
68-
function warmupWorkers() {
69-
os.cpus().forEach(function() {
70-
workers({
71-
transformSets: ['es6'],
72-
sourceCode: '\n',
73-
options: {}
74-
}, function() {});
75-
});
76-
}
77-
7867
function TransformError() {}
7968
TransformError.__proto__ = SyntaxError.prototype;
8069

packager/react-packager/src/Server/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ function Server(options) {
1818
cacheVersion: options.cacheVersion,
1919
resetCache: options.resetCache,
2020
dev: options.dev,
21+
transformModulePath: options.transformModulePath
2122
});
2223

2324
this._fileWatcher = new FileWatcher(options.projectRoots);

packager/react-packager/src/JSTransformer/transformer.js renamed to packager/transformer.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,28 @@ function transform(transformSets, srcTxt, options) {
3030
return jstransform(visitorList, staticTypeSyntaxResult.code);
3131
}
3232

33-
exports.transform = transform;
33+
module.exports = function(data, callback) {
34+
var result;
35+
try {
36+
result = transform(
37+
data.transformSets,
38+
data.sourceCode,
39+
data.options
40+
);
41+
} catch (e) {
42+
return callback(null, {
43+
error: {
44+
lineNumber: e.lineNumber,
45+
column: e.column,
46+
message: e.message,
47+
stack: e.stack,
48+
description: e.description
49+
}
50+
});
51+
}
52+
53+
callback(null, result);
54+
};
55+
56+
// export for use in jest
57+
module.exports.transform = transform;

0 commit comments

Comments
 (0)