From a26d3c43ef66213d82dafe17e28d7a9794a40345 Mon Sep 17 00:00:00 2001 From: Christoph Pojer Date: Fri, 24 Feb 2017 11:13:10 -0800 Subject: [PATCH] Fix a bunch of flow annotations Reviewed By: jeanlauliac Differential Revision: D4611846 fbshipit-source-id: c2fe468e34a3b1eba7fcd2596020aad136285363 --- packages/metro-bundler/src/Bundler/Bundle.js | 8 +- .../metro-bundler/src/Bundler/BundleBase.js | 2 +- .../src/Bundler/__tests__/Bundle-test.js | 4 +- .../src/Bundler/__tests__/Bundler-test.js | 2 +- packages/metro-bundler/src/Bundler/index.js | 83 ++++++++++++++----- .../src/Bundler/source-map/B64Builder.js | 2 +- .../src/ModuleGraph/node-haste/HasteFS.js | 6 ++ .../src/ModuleGraph/node-haste/node-haste.js | 1 - .../DependencyGraph/ResolutionRequest.js | 14 ++-- .../metro-bundler/src/node-haste/index.js | 2 +- 10 files changed, 83 insertions(+), 41 deletions(-) diff --git a/packages/metro-bundler/src/Bundler/Bundle.js b/packages/metro-bundler/src/Bundler/Bundle.js index 04a3d934..fcf55bf4 100644 --- a/packages/metro-bundler/src/Bundler/Bundle.js +++ b/packages/metro-bundler/src/Bundler/Bundle.js @@ -116,9 +116,9 @@ class Bundle extends BundleBase { finalize(options: FinalizeOptions) { options = options || {}; - if (options.runMainModule) { + if (options.runModule) { /* $FlowFixMe: this is unsound, as nothing enforces runBeforeMainModule - * to be available if `runMainModule` is true. Refactor. */ + * to be available if `runModule` is true. Refactor. */ options.runBeforeMainModule.forEach(this._addRequireCall, this); /* $FlowFixMe: this is unsound, as nothing enforces the module ID to have * been set beforehand. */ @@ -143,7 +143,7 @@ class Bundle extends BundleBase { this._numRequireCalls += 1; } - _getInlineSourceMap(dev) { + _getInlineSourceMap(dev: ?boolean) { if (this._inlineSourceMap == null) { const sourceMap = this.getSourceMapString({excludeSource: true, dev}); /*eslint-env node*/ @@ -206,7 +206,7 @@ class Bundle extends BundleBase { * that makes use of of the `sections` field to combine sourcemaps by adding * an offset. This is supported only by Chrome for now. */ - _getCombinedSourceMaps(options): CombinedSourceMap { + _getCombinedSourceMaps(options: {excludeSource?: boolean}): CombinedSourceMap { const result = { version: 3, file: this._getSourceMapFile(), diff --git a/packages/metro-bundler/src/Bundler/BundleBase.js b/packages/metro-bundler/src/Bundler/BundleBase.js index 60a7d3be..8dbaae63 100644 --- a/packages/metro-bundler/src/Bundler/BundleBase.js +++ b/packages/metro-bundler/src/Bundler/BundleBase.js @@ -15,7 +15,7 @@ const ModuleTransport = require('../lib/ModuleTransport'); export type FinalizeOptions = { allowUpdates?: boolean, runBeforeMainModule?: Array, - runMainModule?: boolean, + runModule?: boolean, }; export type GetSourceOptions = { diff --git a/packages/metro-bundler/src/Bundler/__tests__/Bundle-test.js b/packages/metro-bundler/src/Bundler/__tests__/Bundle-test.js index 57db9133..c2a880ee 100644 --- a/packages/metro-bundler/src/Bundler/__tests__/Bundle-test.js +++ b/packages/metro-bundler/src/Bundler/__tests__/Bundle-test.js @@ -95,7 +95,7 @@ describe('Bundle', () => { bundle.setMainModuleId('foo'); bundle.finalize({ runBeforeMainModule: ['bar'], - runMainModule: true, + runModule: true, }); expect(bundle.getSource({dev: true})).toBe([ 'transformed foo;', @@ -172,7 +172,7 @@ describe('Bundle', () => { otherBundle.setMainModuleId('foo'); otherBundle.finalize({ runBeforeMainModule: ['InitializeCore'], - runMainModule: true, + runModule: true, }); const sourceMap = otherBundle.getSourceMap({dev: true}); diff --git a/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js b/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js index a1158c8b..aa519350 100644 --- a/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js +++ b/packages/metro-bundler/src/Bundler/__tests__/Bundler-test.js @@ -173,7 +173,7 @@ describe('Bundler', function() { expect(ithAddedModule(3)).toEqual('/root/file.json'); expect(bundle.finalize.mock.calls[0]).toEqual([{ - runMainModule: true, + runModule: true, runBeforeMainModule: [], allowUpdates: false, }]); diff --git a/packages/metro-bundler/src/Bundler/index.js b/packages/metro-bundler/src/Bundler/index.js index b496eaae..cce95a30 100644 --- a/packages/metro-bundler/src/Bundler/index.js +++ b/packages/metro-bundler/src/Bundler/index.js @@ -47,6 +47,19 @@ export type GetTransformOptions = ( getDependencies: string => Promise>, ) => {} | Promise<{}>; +type Asset = { + __packager_asset: boolean, + fileSystemLocation: string, + httpServerLocation: string, + width: ?number, + height: ?number, + scales: number, + files: Array, + hash: string, + name: string, + type: string, +}; + const sizeOf = denodeify(imageSize); const noop = () => {}; @@ -205,7 +218,7 @@ class Bundler { }); } - _sourceHMRURL(platform, hmrpath) { + _sourceHMRURL(platform: ?string, hmrpath: string) { return this._hmrURL( '', platform, @@ -214,7 +227,7 @@ class Bundler { ); } - _sourceMappingHMRURL(platform, hmrpath) { + _sourceMappingHMRURL(platform: ?string, hmrpath: string) { // Chrome expects `sourceURL` when eval'ing code return this._hmrURL( '\/\/# sourceURL=', @@ -224,7 +237,7 @@ class Bundler { ); } - _hmrURL(prefix, platform, extensionOverride, filePath) { + _hmrURL(prefix: string, platform: ?string, extensionOverride: string, filePath: string) { const matchingRoot = this._projectRoots.find(root => filePath.startsWith(root)); if (!matchingRoot) { @@ -245,7 +258,7 @@ class Bundler { return ( prefix + resource + '.' + extensionOverride + '?' + - 'platform=' + platform + '&runModule=false&entryModuleOnly=true&hot=true' + 'platform=' + (platform || '') + '&runModule=false&entryModuleOnly=true&hot=true' ); } @@ -265,30 +278,47 @@ class Bundler { } _bundle({ - bundle, - entryFile, - runModule: runMainModule, - runBeforeMainModule, - dev, - minify, - platform, - moduleSystemDeps = [], - hot, - unbundle, - entryModuleOnly, - resolutionResponse, - isolateModuleIDs, - generateSourceMaps, assetPlugins, + bundle, + dev, + entryFile, + entryModuleOnly, + generateSourceMaps, + hot, + isolateModuleIDs, + minify, + moduleSystemDeps = [], onProgress, + platform, + resolutionResponse, + runBeforeMainModule, + runModule, + unbundle, + }: { + assetPlugins?: Array, + bundle: Bundle, + dev: boolean, + entryFile?: string, + entryModuleOnly?: boolean, + generateSourceMaps?: boolean, + hot?: boolean, + isolateModuleIDs?: boolean, + minify?: boolean, + moduleSystemDeps?: Array, + onProgress?: () => void, + platform?: ?string, + resolutionResponse?: ResolutionResponse, + runBeforeMainModule?: boolean, + runModule?: boolean, + unbundle?: boolean, }) { const onResolutionResponse = (response: ResolutionResponse) => { /* $FlowFixMe: looks like ResolutionResponse is monkey-patched * with `getModuleId`. */ bundle.setMainModuleId(response.getModuleId(getMainModule(response))); - if (entryModuleOnly) { + if (entryModuleOnly && entryFile) { response.dependencies = response.dependencies.filter(module => - module.path.endsWith(entryFile) + module.path.endsWith(entryFile || '') ); } else { response.dependencies = moduleSystemDeps.concat(response.dependencies); @@ -313,7 +343,7 @@ class Bundler { : undefined; finalBundle.finalize({ - runMainModule, + runModule, runBeforeMainModule: runBeforeMainModuleIds, allowUpdates: this._opts.allowBundleUpdates, }); @@ -608,7 +638,11 @@ class Bundler { }); } - _generateAssetObjAndCode(module, assetPlugins, platform: ?string = null) { + _generateAssetObjAndCode( + module: Module, + assetPlugins: Array, + platform: ?string = null, + ) { const relPath = getPathRelativeToRoot(this._projectRoots, module.path); var assetUrlPath = joinPath('/assets', pathDirname(relPath)); @@ -659,7 +693,10 @@ class Bundler { }); } - _applyAssetPlugins(assetPlugins, asset) { + _applyAssetPlugins( + assetPlugins: Array, + asset: Asset, + ) { if (!assetPlugins.length) { return asset; } diff --git a/packages/metro-bundler/src/Bundler/source-map/B64Builder.js b/packages/metro-bundler/src/Bundler/source-map/B64Builder.js index f8de0870..a4d31f9d 100644 --- a/packages/metro-bundler/src/Bundler/source-map/B64Builder.js +++ b/packages/metro-bundler/src/Bundler/source-map/B64Builder.js @@ -91,7 +91,7 @@ class B64Builder { return this.buffer.toString('ascii', 0, this.pos); } - _writeByte(byte) { + _writeByte(byte: number) { if (this.pos === this.buffer.length) { this._realloc(); } diff --git a/packages/metro-bundler/src/ModuleGraph/node-haste/HasteFS.js b/packages/metro-bundler/src/ModuleGraph/node-haste/HasteFS.js index 7d31413c..11717926 100644 --- a/packages/metro-bundler/src/ModuleGraph/node-haste/HasteFS.js +++ b/packages/metro-bundler/src/ModuleGraph/node-haste/HasteFS.js @@ -48,6 +48,12 @@ module.exports = class HasteFS { return Array.from(this.files.keys()); } + matchFiles() { + throw new Error( + 'HasteFS.matchFiles is not implemented yet.' + ); + } + matches(directory: string, pattern: RegExp) { const entries = this.directoryEntries.get(directory); return entries ? entries.filter(pattern.test, pattern) : []; diff --git a/packages/metro-bundler/src/ModuleGraph/node-haste/node-haste.js b/packages/metro-bundler/src/ModuleGraph/node-haste/node-haste.js index fef59e3b..57427353 100644 --- a/packages/metro-bundler/src/ModuleGraph/node-haste/node-haste.js +++ b/packages/metro-bundler/src/ModuleGraph/node-haste/node-haste.js @@ -78,7 +78,6 @@ exports.createResolveFn = function(options: ResolveOptions): ResolveFn { dirExists: filePath => hasteFS.dirExists(filePath), entryPath: '', extraNodeModules, - /* $FlowFixMe: object is missing matchFiles method */ hasteFS, hasteMap, helpers, diff --git a/packages/metro-bundler/src/node-haste/DependencyGraph/ResolutionRequest.js b/packages/metro-bundler/src/node-haste/DependencyGraph/ResolutionRequest.js index f8b690e6..878018c4 100644 --- a/packages/metro-bundler/src/node-haste/DependencyGraph/ResolutionRequest.js +++ b/packages/metro-bundler/src/node-haste/DependencyGraph/ResolutionRequest.js @@ -82,7 +82,7 @@ class ResolutionRequest { this._resetResolutionCache(); } - _tryResolve(action, secondaryAction) { + _tryResolve(action: () => Promise, secondaryAction: () => ?Promise) { return action().catch((error) => { if (error.type !== 'UnableToResolveError') { throw error; @@ -219,7 +219,7 @@ class ResolutionRequest { }); } - _resolveHasteDependency(fromModule, toModuleName) { + _resolveHasteDependency(fromModule: Module, toModuleName: string) { toModuleName = normalizePath(toModuleName); let p = fromModule.getPackage(); @@ -267,7 +267,7 @@ class ResolutionRequest { }); } - _redirectRequire(fromModule, modulePath) { + _redirectRequire(fromModule: Module, modulePath: string) { return Promise.resolve(fromModule.getPackage()).then(p => { if (p) { return p.redirectRequire(modulePath); @@ -276,7 +276,7 @@ class ResolutionRequest { }); } - _resolveFileOrDir(fromModule, toModuleName) { + _resolveFileOrDir(fromModule: Module, toModuleName: string) { const potentialModulePath = isAbsolutePath(toModuleName) ? toModuleName : path.join(path.dirname(fromModule.path), toModuleName); @@ -299,7 +299,7 @@ class ResolutionRequest { ); } - _resolveNodeDependency(fromModule, toModuleName) { + _resolveNodeDependency(fromModule: Module, toModuleName: string) { if (isRelativeImport(toModuleName) || isAbsolutePath(toModuleName)) { return this._resolveFileOrDir(fromModule, toModuleName); } else { @@ -379,7 +379,7 @@ class ResolutionRequest { } } - _loadAsFile(potentialModulePath, fromModule, toModule) { + _loadAsFile(potentialModulePath: string, fromModule: Module, toModule: string) { return Promise.resolve().then(() => { if (this._helpers.isAssetFile(potentialModulePath)) { let dirname = path.dirname(potentialModulePath); @@ -439,7 +439,7 @@ class ResolutionRequest { }); } - _loadAsDir(potentialDirPath, fromModule, toModule) { + _loadAsDir(potentialDirPath: string, fromModule: Module, toModule: string) { return Promise.resolve().then(() => { if (!this._dirExists(potentialDirPath)) { throw new UnableToResolveError( diff --git a/packages/metro-bundler/src/node-haste/index.js b/packages/metro-bundler/src/node-haste/index.js index c182ead5..6b86d72f 100644 --- a/packages/metro-bundler/src/node-haste/index.js +++ b/packages/metro-bundler/src/node-haste/index.js @@ -264,7 +264,7 @@ class DependencyGraph { return platform; } - _getAbsolutePath(filePath) { + _getAbsolutePath(filePath: string) { if (isAbsolutePath(filePath)) { return path.resolve(filePath); }