diff --git a/packages/metro/src/DeltaBundler/Serializers/__tests__/baseJSBundle-test.js b/packages/metro/src/DeltaBundler/Serializers/__tests__/baseJSBundle-test.js index 51c1cbb54d..8f8e34f147 100644 --- a/packages/metro/src/DeltaBundler/Serializers/__tests__/baseJSBundle-test.js +++ b/packages/metro/src/DeltaBundler/Serializers/__tests__/baseJSBundle-test.js @@ -424,6 +424,49 @@ test('should add an inline source map to a very simple bundle', () => { }); }); +test('applies processModuleFilter to the inline source map', () => { + const bundle = baseJSBundle( + '/root/foo', + [polyfill], + { + dependencies: new Map([ + ['/root/foo', fooModule], + ['/root/bar', barModule], + ]), + entryPoints: new Set(['/root/foo']), + transformOptions, + }, + { + asyncRequireModulePath: '', + createModuleId: createModuleIdFactory(), + dev: true, + getRunModuleStatement, + globalPrefix: '', + includeAsyncPaths: false, + inlineSourceMap: true, + modulesOnly: false, + processModuleFilter: module => module.path !== '/polyfill', + projectRoot: '/root', + runBeforeMainModule: [], + runModule: true, + serverRoot: '/root', + shouldAddToIgnoreList: () => false, + sourceMapUrl: null, + sourceUrl: null, + getSourceUrl: null, + }, + ); + // Without the polyfill, foo and bar are the first two lines of the bundle. + const base64 = bundle.post.slice(bundle.post.lastIndexOf('base64') + 7); + const map = JSON.parse(Buffer.from(base64, 'base64').toString()); + expect( + map.sections.map(section => [section.offset.line, section.map.sources[0]]), + ).toEqual([ + [0, '/root/foo'], + [1, '/root/bar'], + ]); +}); + test('emits x_google_ignoreList based on shouldAddToIgnoreList', () => { const bundle = baseJSBundle( '/root/foo', diff --git a/packages/metro/src/DeltaBundler/Serializers/baseJSBundle.js b/packages/metro/src/DeltaBundler/Serializers/baseJSBundle.js index b21a8ee184..7bae6fa6d1 100644 --- a/packages/metro/src/DeltaBundler/Serializers/baseJSBundle.js +++ b/packages/metro/src/DeltaBundler/Serializers/baseJSBundle.js @@ -64,6 +64,7 @@ export default function baseJSBundle( getRunModuleStatement: options.getRunModuleStatement, globalPrefix: options.globalPrefix, inlineSourceMap: options.inlineSourceMap, + processModuleFilter: options.processModuleFilter, runBeforeMainModule: options.runBeforeMainModule, runModule: options.runModule, shouldAddToIgnoreList: options.shouldAddToIgnoreList, diff --git a/packages/metro/src/DeltaBundler/Serializers/baseJSBundleWithLazyModuleDefinition.js b/packages/metro/src/DeltaBundler/Serializers/baseJSBundleWithLazyModuleDefinition.js index 7365f1ec1b..7d81ed53d7 100644 --- a/packages/metro/src/DeltaBundler/Serializers/baseJSBundleWithLazyModuleDefinition.js +++ b/packages/metro/src/DeltaBundler/Serializers/baseJSBundleWithLazyModuleDefinition.js @@ -132,6 +132,7 @@ export default function baseJSBundleWithLazyModuleDefinition( getRunModuleStatement: options.getRunModuleStatement, globalPrefix: options.globalPrefix, inlineSourceMap: options.inlineSourceMap, + processModuleFilter: options.processModuleFilter, runBeforeMainModule: options.runBeforeMainModule, runModule: options.runModule, shouldAddToIgnoreList: options.shouldAddToIgnoreList, diff --git a/packages/metro/src/lib/getAppendScripts.js b/packages/metro/src/lib/getAppendScripts.js index d04a9fe35a..6d5ebd1540 100644 --- a/packages/metro/src/lib/getAppendScripts.js +++ b/packages/metro/src/lib/getAppendScripts.js @@ -24,6 +24,7 @@ type Options = Readonly<{ getRunModuleStatement: (moduleId: T, globalPrefix: string) => string, globalPrefix: string, inlineSourceMap: ?boolean, + processModuleFilter: (module: Module<>) => boolean, runBeforeMainModule: ReadonlyArray, runModule: boolean, shouldAddToIgnoreList: (Module<>) => boolean, @@ -73,7 +74,7 @@ export default function getAppendScripts( const sourceMappingURL = options.inlineSourceMap ? getInlineSourceMappingURL( sourceMapString(modules, { - processModuleFilter: (): boolean => true, + processModuleFilter: options.processModuleFilter, excludeSource: false, shouldAddToIgnoreList: options.shouldAddToIgnoreList, getSourceUrl: options.getSourceUrl,