From f5abafd17b10fb56283a5826c5dcb4c5f89f66cd Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Thu, 11 May 2017 16:37:03 -0700 Subject: [PATCH] Require transformer options to be present throughout Summary: `transformModulePath` used to be an optional string, because `ConfigT` allowed for an optional `getTransformModulePath` method. Effectively, we required it to be present. This builds on top of the cleanups around `ConfigT` and gets rid of the flow error suppressions Reviewed By: jeanlauliac Differential Revision: D5037466 fbshipit-source-id: bc5c9cbc566e7aa74e7f6397e69fa87cdac7bc00 --- packages/metro-bundler/react-packager.js | 1 + .../src/Bundler/__tests__/Bundler-test.js | 7 +++++++ packages/metro-bundler/src/Bundler/index.js | 15 ++++----------- packages/metro-bundler/src/Server/index.js | 4 ++-- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/metro-bundler/react-packager.js b/packages/metro-bundler/react-packager.js index 24d001c1..457a877f 100644 --- a/packages/metro-bundler/react-packager.js +++ b/packages/metro-bundler/react-packager.js @@ -34,6 +34,7 @@ type Options = { projectRoots: Array, reporter?: Reporter, +sourceExts: ?Array, + +transformModulePath: string, watch?: boolean, }; diff --git a/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js b/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js index 5a171a80..bfcfa787 100644 --- a/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js +++ b/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js @@ -25,6 +25,7 @@ jest .mock('../Bundle') .mock('../HMRBundle') .mock('../../Logger') + .mock('/path/to/transformer.js', () => ({}), {virtual: true}) ; var Bundler = require('../'); @@ -36,6 +37,7 @@ const os = require('os'); const {any, objectContaining} = expect; + var commonOptions = { allowBundleUpdates: false, assetExts: defaults.assetExts, @@ -44,6 +46,7 @@ var commonOptions = { platforms: defaults.platforms, resetCache: false, sourceExts: defaults.sourceExts, + transformModulePath: '/path/to/transformer.js', watch: false, }; @@ -95,6 +98,10 @@ describe('Bundler', function() { }); Resolver.load = jest.fn().mockImplementation(opts => Promise.resolve(new Resolver(opts))); + fs.__setMockFilesystem({ + 'path': {'to': {'transformer.js': ''}}, + }); + fs.statSync.mockImplementation(function() { return { isDirectory: () => true, diff --git a/packages/metro-bundler/src/Bundler/index.js b/packages/metro-bundler/src/Bundler/index.js index d64820e9..bf88f784 100644 --- a/packages/metro-bundler/src/Bundler/index.js +++ b/packages/metro-bundler/src/Bundler/index.js @@ -133,7 +133,7 @@ type Options = {| +reporter: Reporter, +resetCache: boolean, +sourceExts: Array, - +transformModulePath?: string, + +transformModulePath: string, +transformTimeoutInterval: ?number, +watch: boolean, |}; @@ -155,15 +155,9 @@ class Bundler { opts.projectRoots.forEach(verifyRootExists); - let transformModuleHash; - try { - /* $FlowFixMe: if transformModulePath is null it'll just be caught */ - const transformModuleStr = fs.readFileSync(opts.transformModulePath); - transformModuleHash = - crypto.createHash('sha1').update(transformModuleStr).digest('hex'); - } catch (error) { - transformModuleHash = ''; - } + const transformModuleStr = fs.readFileSync(opts.transformModulePath); + const transformModuleHash = + crypto.createHash('sha1').update(transformModuleStr).digest('hex'); const stableProjectRoots = opts.projectRoots.map(p => { return path.relative(path.join(__dirname, '../../../..'), p); @@ -197,7 +191,6 @@ class Bundler { const maxWorkerCount = Bundler.getMaxWorkerCount(); this._transformer = new Transformer( - /* $FlowFixMe: in practice it's always here. */ opts.transformModulePath, maxWorkerCount, { diff --git a/packages/metro-bundler/src/Server/index.js b/packages/metro-bundler/src/Server/index.js index 9fb3fe80..0e0f5371 100644 --- a/packages/metro-bundler/src/Server/index.js +++ b/packages/metro-bundler/src/Server/index.js @@ -75,7 +75,7 @@ type Options = { resetCache?: boolean, silent?: boolean, +sourceExts: ?Array, - transformModulePath?: string, + +transformModulePath: string, transformTimeoutInterval?: number, watch?: boolean, }; @@ -131,7 +131,7 @@ class Server { resetCache: boolean, silent: boolean, +sourceExts: Array, - transformModulePath: void | string, + +transformModulePath: string, transformTimeoutInterval: ?number, watch: boolean, };