UNPKG

7.51 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/tools/loadMetroConfig.ts"],"names":["INTERNAL_CALLSITES_REGEX","RegExp","join","getDefaultConfig","ctx","outOfTreePlatforms","Object","keys","platforms","filter","platform","npmPackageName","resolver","resolveRequest","length","undefined","reduce","result","resolverMainFields","serializer","getModulesRunBeforeMainModule","require","resolve","path","reactNativePath","map","getPolyfills","server","port","Number","process","env","RCT_METRO_PORT","symbolicator","customizeFrame","frame","collapse","Boolean","file","test","transformer","allowOptionalDependencies","babelTransformerPath","assetRegistryPath","asyncRequireModulePath","watchFolders","load","options","defaultConfig","reporter","cwd","root"],"mappings":"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","sourcesContent":["/**\n * Configuration file of Metro.\n */\nimport path from 'path';\n// @ts-ignore - no typed definition for the package\nimport {loadConfig} from 'metro-config';\nimport {Config} from '@react-native-community/cli-types';\nimport {reactNativePlatformResolver} from './metroPlatformResolver';\n\nconst INTERNAL_CALLSITES_REGEX = new RegExp(\n [\n '/Libraries/Renderer/implementations/.+\\\\.js$',\n '/Libraries/BatchedBridge/MessageQueue\\\\.js$',\n '/Libraries/YellowBox/.+\\\\.js$',\n '/Libraries/LogBox/.+\\\\.js$',\n '/Libraries/Core/Timers/.+\\\\.js$',\n '/node_modules/react-devtools-core/.+\\\\.js$',\n '/node_modules/react-refresh/.+\\\\.js$',\n '/node_modules/scheduler/.+\\\\.js$',\n ].join('|'),\n);\n\ntype ConfigLoadingContext = Pick<\n Config,\n 'root' | 'reactNativePath' | 'platforms'\n>;\n\nexport interface MetroConfig {\n resolver: {\n resolveRequest?: (\n context: any,\n realModuleName: string,\n platform: string,\n moduleName: string,\n ) => any;\n resolverMainFields: string[];\n platforms: string[];\n };\n serializer: {\n getModulesRunBeforeMainModule: () => string[];\n getPolyfills: () => any;\n };\n server: {\n port: number;\n enhanceMiddleware?: Function;\n };\n symbolicator: {\n customizeFrame: (frame: {file: string | null}) => {collapse: boolean};\n };\n transformer: {\n allowOptionalDependencies?: boolean;\n babelTransformerPath: string;\n assetRegistryPath: string;\n assetPlugins?: Array<string>;\n asyncRequireModulePath?: string;\n };\n watchFolders: ReadonlyArray<string>;\n reporter?: any;\n}\n\n/**\n * Default configuration\n */\nexport const getDefaultConfig = (ctx: ConfigLoadingContext): MetroConfig => {\n const outOfTreePlatforms = Object.keys(ctx.platforms).filter(\n (platform) => ctx.platforms[platform].npmPackageName,\n );\n\n return {\n resolver: {\n resolveRequest:\n outOfTreePlatforms.length === 0\n ? undefined\n : reactNativePlatformResolver(\n outOfTreePlatforms.reduce<{[platform: string]: string}>(\n (result, platform) => {\n result[platform] = ctx.platforms[platform].npmPackageName!;\n return result;\n },\n {},\n ),\n ),\n resolverMainFields: ['react-native', 'browser', 'main'],\n platforms: [...Object.keys(ctx.platforms), 'native'],\n },\n serializer: {\n // We can include multiple copies of InitializeCore here because metro will\n // only add ones that are already part of the bundle\n getModulesRunBeforeMainModule: () => [\n require.resolve(\n path.join(ctx.reactNativePath, 'Libraries/Core/InitializeCore'),\n ),\n ...outOfTreePlatforms.map((platform) =>\n require.resolve(\n `${ctx.platforms[platform]\n .npmPackageName!}/Libraries/Core/InitializeCore`,\n ),\n ),\n ],\n getPolyfills: () =>\n require(path.join(ctx.reactNativePath, 'rn-get-polyfills'))(),\n },\n server: {\n port: Number(process.env.RCT_METRO_PORT) || 8081,\n },\n symbolicator: {\n customizeFrame: (frame: {file: string | null}) => {\n const collapse = Boolean(\n frame.file && INTERNAL_CALLSITES_REGEX.test(frame.file),\n );\n return {collapse};\n },\n },\n transformer: {\n allowOptionalDependencies: true,\n babelTransformerPath: require.resolve(\n 'metro-react-native-babel-transformer',\n ),\n assetRegistryPath: 'react-native/Libraries/Image/AssetRegistry',\n asyncRequireModulePath: require.resolve(\n 'metro-runtime/src/modules/asyncRequire',\n ),\n },\n watchFolders: [],\n };\n};\n\nexport interface ConfigOptionsT {\n maxWorkers?: number;\n port?: number;\n projectRoot?: string;\n resetCache?: boolean;\n watchFolders?: string[];\n sourceExts?: string[];\n reporter?: any;\n config?: string;\n}\n\n/**\n * Loads Metro Config and applies `options` on top of the resolved config.\n *\n * This allows the CLI to always overwrite the file settings.\n */\nexport default function load(\n ctx: ConfigLoadingContext,\n options?: ConfigOptionsT,\n): Promise<MetroConfig> {\n const defaultConfig = getDefaultConfig(ctx);\n if (options && options.reporter) {\n defaultConfig.reporter = options.reporter;\n }\n return loadConfig({cwd: ctx.root, ...options}, defaultConfig);\n}\n"]}
\No newline at end of file