diff --git a/jest/preprocessor.js b/jest/preprocessor.js index 88eb66680..d0c0582be 100644 --- a/jest/preprocessor.js +++ b/jest/preprocessor.js @@ -34,11 +34,15 @@ module.exports = { ).code; } - return transformer.transform(src, file, { - dev: true, - inlineRequires: true, - platform: '', - projectRoot: '', + return transformer.transform({ + filename: file, + options: { + dev: true, + inlineRequires: true, + platform: '', + projectRoot: '', + }, + src, }).code; }, diff --git a/packager/package.json b/packager/package.json index e6386cc91..e04a905ad 100644 --- a/packager/package.json +++ b/packager/package.json @@ -1,5 +1,5 @@ { - "version": "0.5.1", + "version": "0.6.0", "name": "react-native-packager", "description": "Build native apps with React!", "repository": { diff --git a/packager/src/JSTransformer/worker/__tests__/worker-test.js b/packager/src/JSTransformer/worker/__tests__/worker-test.js index d3512e43d..262deeac8 100644 --- a/packager/src/JSTransformer/worker/__tests__/worker-test.js +++ b/packager/src/JSTransformer/worker/__tests__/worker-test.js @@ -26,7 +26,7 @@ describe('code transformation worker:', () => { extractDependencies = require('../extract-dependencies').mockReturnValue({}); transformer = { - transform: jest.fn((src, filename, options) => ({ + transform: jest.fn(({filename, options, src}) => ({ code: src, map: {}, })), @@ -38,22 +38,22 @@ describe('code transformation worker:', () => { const sourceCode = 'arbitrary(code)'; const transformOptions = {arbitrary: 'options'}; transformCode(transformer, filename, sourceCode, {transform: transformOptions}, () => {}); - expect(transformer.transform).toBeCalledWith( - sourceCode, + expect(transformer.transform).toBeCalledWith({ filename, - transformOptions, - ); + options: transformOptions, + src: sourceCode, + }); }); it('prefixes JSON files with an assignment to module.exports to make the code valid', function() { const filename = 'arbitrary/file.json'; const sourceCode = '{"arbitrary":"property"}'; transformCode(transformer, filename, sourceCode, {}, () => {}); - expect(transformer.transform).toBeCalledWith( - `module.exports=${sourceCode}`, + expect(transformer.transform).toBeCalledWith({ filename, - undefined, - ); + options: undefined, + src: `module.exports=${sourceCode}`, + }); }); it('calls back with the result of the transform in the cache', done => { diff --git a/packager/src/JSTransformer/worker/worker.js b/packager/src/JSTransformer/worker/worker.js index c674a1bed..f1890c954 100644 --- a/packager/src/JSTransformer/worker/worker.js +++ b/packager/src/JSTransformer/worker/worker.js @@ -29,13 +29,13 @@ export type TransformedCode = { }; export type Transformer = { - transform: ( + transform: ({| filename: string, - sourceCode: string, options: ExtraOptions & TransformOptions, plugins?: BabelPlugins, - ) => {ast: ?Ast, code: string, map: ?MappingsMap}, - getCacheKey: TransformOptionsStrict => string, + src: string, + |}) => {ast: ?Ast, code: string, map: ?MappingsMap}, + getCacheKey: () => string, }; @@ -102,7 +102,11 @@ function transformCode( let transformed; try { - transformed = transformer.transform(sourceCode, filename, options.transform); + transformed = transformer.transform({ + filename, + options: options.transform, + src: sourceCode, + }); } catch (error) { callback(error); return; diff --git a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js index bb4af0f72..ef45c1738 100644 --- a/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js +++ b/packager/src/ModuleGraph/worker/__tests__/transform-module-test.js @@ -95,10 +95,16 @@ describe('transforming JS modules:', () => { const variants = {dev: {dev: true}, prod: {dev: false}}; transformModule(sourceCode, options(variants), () => { - expect(transformer.transform) - .toBeCalledWith(sourceCode, filename, {...defaults, ...variants.dev}); - expect(transformer.transform) - .toBeCalledWith(sourceCode, filename, {...defaults, ...variants.prod}); + expect(transformer.transform).toBeCalledWith({ + filename, + options: {...defaults, ...variants.dev}, + src: sourceCode, + }); + expect(transformer.transform).toBeCalledWith({ + filename, + options: {...defaults, ...variants.prod}, + src: sourceCode, + }); done(); }); }, diff --git a/packager/src/ModuleGraph/worker/transform-module.js b/packager/src/ModuleGraph/worker/transform-module.js index 47dcd0a27..38e5a6007 100644 --- a/packager/src/ModuleGraph/worker/transform-module.js +++ b/packager/src/ModuleGraph/worker/transform-module.js @@ -70,11 +70,11 @@ function transformModule( const {filename, transformer, variants = defaultVariants} = options; const tasks = {}; Object.keys(variants).forEach(name => { - tasks[name] = asyncify(() => transformer.transform( - code, + tasks[name] = asyncify(() => transformer.transform({ filename, - {...defaultTransformOptions, ...variants[name]}, - ) + options: {...defaultTransformOptions, ...variants[name]}, + src: code, + }) ); }); diff --git a/packager/transformer.js b/packager/transformer.js index 55447ee43..1aefd50e6 100644 --- a/packager/transformer.js +++ b/packager/transformer.js @@ -112,11 +112,14 @@ function buildBabelConfig(filename, options) { return Object.assign({}, babelRC, config); } -function transform( - src: string, +type Params = { filename: string, - options, -) { + options: TransformOptions, + plugins?: BabelPlugins, + src: string, +}; + +function transform({filename, options, src}: Params) { options = options || {}; const OLD_BABEL_ENV = process.env.BABEL_ENV; @@ -154,7 +157,7 @@ function transform( } } -function getCacheKey(options: TransformOptions) { +function getCacheKey() { var key = crypto.createHash('md5'); cacheKeyParts.forEach(part => key.update(part)); return key.digest('hex');