@expo/metro-config 0.9.0 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -248,7 +248,9 @@ function getDefaultConfig(projectRoot, options = {}) {
248
248
  },
249
249
  serializer: {
250
250
  getModulesRunBeforeMainModule: () => {
251
- const preModules = [];
251
+ const preModules = [
252
+ // MUST be first
253
+ require.resolve(_path().default.join(reactNativePath, 'Libraries/Core/InitializeCore'))];
252
254
 
253
255
  // We need to shift this to be the first module so web Fast Refresh works as expected.
254
256
  // This will only be applied if the module is installed and imported somewhere in the bundle already.
@@ -256,7 +258,6 @@ function getDefaultConfig(projectRoot, options = {}) {
256
258
  if (metroRuntime) {
257
259
  preModules.push(metroRuntime);
258
260
  }
259
- preModules.push(require.resolve(_path().default.join(reactNativePath, 'Libraries/Core/InitializeCore')));
260
261
  return preModules;
261
262
  },
262
263
  getPolyfills: () => require(_path().default.join(reactNativePath, 'rn-get-polyfills'))()
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoMetroConfig.js","names":["_config","data","require","_paths","runtimeEnv","_interopRequireWildcard","_jsonFile","_interopRequireDefault","_chalk","_metroCache","_metroConfig","_path","_resolveFrom","_customizeFrame","_env2","_getModulesPaths","_getWatchFolders","_rewriteRequestUrl","_withExpoSerializers","_postcss","_metroConfig2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","debug","getProjectBabelConfigFile","projectRoot","resolveFrom","silent","getAssetPlugins","hashAssetFilesPath","Error","hasWarnedAboutExotic","getDefaultConfig","options","getDefaultMetroConfig","mergeConfig","importMetroConfig","isExotic","mode","env","EXPO_USE_EXOTIC","console","log","chalk","gray","bold","reactNativePath","path","dirname","babelPresetFbjsPath","process","EXPO_METRO_CACHE_KEY_VERSION","String","version","sourceExtsConfig","isTS","isReact","isModern","sourceExts","getBareExtensions","push","sassVersion","isCSSEnabled","getSassVersion","envFiles","getFiles","NODE_ENV","babelConfigPath","isCustomBabelConfigDefined","resolverMainFields","pkg","getPackageJson","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","EXPO_DEBUG","join","reporter","metroDefaultValues","getDefaultValues","metroConfig","resolver","platforms","assetExts","concat","filter","assetExt","includes","watcher","additionalExts","map","file","replace","serializer","getModulesRunBeforeMainModule","preModules","metroRuntime","resolve","getPolyfills","server","rewriteRequestUrl","getRewriteRequestUrl","port","Number","RCT_METRO_PORT","unstable_serverRoot","getServerRoot","symbolicator","customizeFrame","getDefaultCustomizeFrame","transformerPath","transformer","postcssHash","getPostcssConfigHash","browserslistHash","browserslist","stableHash","JSON","stringify","toString","unstable_allowRequireContext","allowOptionalDependencies","babelTransformerPath","assetRegistryPath","assetPlugins","withExpoSerializers","loadAsync","metroOptions","defaultConfig","loadConfig","cwd","exports","sassPkg","sassPkgJson","findUpPackageJson","JsonFile","read","sep","found"],"sources":["../src/ExpoMetroConfig.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { getPackageJson } from '@expo/config';\nimport { getBareExtensions } from '@expo/config/paths';\nimport * as runtimeEnv from '@expo/env';\nimport JsonFile from '@expo/json-file';\nimport chalk from 'chalk';\nimport { Reporter } from 'metro';\nimport { stableHash } from 'metro-cache';\nimport { ConfigT as MetroConfig, InputConfigT } from 'metro-config';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { getDefaultCustomizeFrame, INTERNAL_CALLSITES_REGEX } from './customizeFrame';\nimport { env } from './env';\nimport { getModulesPaths, getServerRoot } from './getModulesPaths';\nimport { getWatchFolders } from './getWatchFolders';\nimport { getRewriteRequestUrl } from './rewriteRequestUrl';\nimport { withExpoSerializers } from './serializer/withExpoSerializers';\nimport { getPostcssConfigHash } from './transform-worker/postcss';\nimport { importMetroConfig } from './traveling/metro-config';\n\nconst debug = require('debug')('expo:metro:config') as typeof console.log;\n\nexport interface LoadOptions {\n config?: string;\n maxWorkers?: number;\n port?: number;\n reporter?: Reporter;\n resetCache?: boolean;\n}\n\nexport interface DefaultConfigOptions {\n mode?: 'exotic';\n /**\n * **Experimental:** Enable CSS support for Metro web, and shim on native.\n *\n * This is an experimental feature and may change in the future. The underlying implementation\n * is subject to change, and native support for CSS Modules may be added in the future during a non-major SDK release.\n */\n isCSSEnabled?: boolean;\n}\n\nfunction getProjectBabelConfigFile(projectRoot: string): string | undefined {\n return (\n resolveFrom.silent(projectRoot, './babel.config.js') ||\n resolveFrom.silent(projectRoot, './.babelrc') ||\n resolveFrom.silent(projectRoot, './.babelrc.js')\n );\n}\n\nfunction getAssetPlugins(projectRoot: string): string[] {\n const hashAssetFilesPath = resolveFrom.silent(projectRoot, 'expo-asset/tools/hashAssetFiles');\n\n if (!hashAssetFilesPath) {\n throw new Error(`The required package \\`expo-asset\\` cannot be found`);\n }\n\n return [hashAssetFilesPath];\n}\n\nlet hasWarnedAboutExotic = false;\n\nexport function getDefaultConfig(\n projectRoot: string,\n options: DefaultConfigOptions = {}\n): InputConfigT {\n const { getDefaultConfig: getDefaultMetroConfig, mergeConfig } = importMetroConfig(projectRoot);\n\n const isExotic = options.mode === 'exotic' || env.EXPO_USE_EXOTIC;\n\n if (isExotic && !hasWarnedAboutExotic) {\n hasWarnedAboutExotic = true;\n console.log(\n chalk.gray(\n `\\u203A Unstable feature ${chalk.bold`EXPO_USE_EXOTIC`} is enabled. Bundling may not work as expected, and is subject to breaking changes.`\n )\n );\n }\n\n const reactNativePath = path.dirname(resolveFrom(projectRoot, 'react-native/package.json'));\n\n try {\n // Set the `EXPO_METRO_CACHE_KEY_VERSION` variable for use in the custom babel transformer.\n // This hack is used because there doesn't appear to be anyway to resolve\n // `babel-preset-fbjs` relative to the project root later (in `metro-expo-babel-transformer`).\n const babelPresetFbjsPath = resolveFrom(projectRoot, 'babel-preset-fbjs/package.json');\n process.env.EXPO_METRO_CACHE_KEY_VERSION = String(require(babelPresetFbjsPath).version);\n } catch {\n // noop -- falls back to a hardcoded value.\n }\n\n const sourceExtsConfig = { isTS: true, isReact: true, isModern: false };\n const sourceExts = getBareExtensions([], sourceExtsConfig);\n\n // Add support for cjs (without platform extensions).\n sourceExts.push('cjs');\n\n let sassVersion: string | null = null;\n if (options.isCSSEnabled) {\n sassVersion = getSassVersion(projectRoot);\n // Enable SCSS by default so we can provide a better error message\n // when sass isn't installed.\n sourceExts.push('scss', 'sass', 'css');\n }\n\n const envFiles = runtimeEnv.getFiles(process.env.NODE_ENV);\n\n const babelConfigPath = getProjectBabelConfigFile(projectRoot);\n const isCustomBabelConfigDefined = !!babelConfigPath;\n\n const resolverMainFields: string[] = [];\n\n // Disable `react-native` in exotic mode, since library authors\n // use it to ship raw application code to the project.\n if (!isExotic) {\n resolverMainFields.push('react-native');\n }\n resolverMainFields.push('browser', 'main');\n\n const pkg = getPackageJson(projectRoot);\n const watchFolders = getWatchFolders(projectRoot);\n // TODO: nodeModulesPaths does not work with the new Node.js package.json exports API, this causes packages like uuid to fail. Disabling for now.\n const nodeModulesPaths = getModulesPaths(projectRoot);\n if (env.EXPO_DEBUG) {\n console.log();\n console.log(`Expo Metro config:`);\n try {\n console.log(`- Version: ${require('../package.json').version}`);\n } catch {}\n console.log(`- Extensions: ${sourceExts.join(', ')}`);\n console.log(`- React Native: ${reactNativePath}`);\n console.log(`- Babel config: ${babelConfigPath || 'babel-preset-expo (default)'}`);\n console.log(`- Resolver Fields: ${resolverMainFields.join(', ')}`);\n console.log(`- Watch Folders: ${watchFolders.join(', ')}`);\n console.log(`- Node Module Paths: ${nodeModulesPaths.join(', ')}`);\n console.log(`- Exotic: ${isExotic}`);\n console.log(`- Env Files: ${envFiles}`);\n console.log(`- Sass: ${sassVersion}`);\n console.log();\n }\n const {\n // Remove the default reporter which metro always resolves to be the react-native-community/cli reporter.\n // This prints a giant React logo which is less accessible to users on smaller terminals.\n reporter,\n ...metroDefaultValues\n } = getDefaultMetroConfig.getDefaultValues(projectRoot);\n\n // Merge in the default config from Metro here, even though loadConfig uses it as defaults.\n // This is a convenience for getDefaultConfig use in metro.config.js, e.g. to modify assetExts.\n const metroConfig: Partial<MetroConfig> = mergeConfig(metroDefaultValues, {\n watchFolders,\n resolver: {\n resolverMainFields,\n platforms: ['ios', 'android'],\n assetExts: metroDefaultValues.resolver.assetExts\n .concat(\n // Add default support for `expo-image` file types.\n ['heic', 'avif']\n )\n .filter((assetExt) => !sourceExts.includes(assetExt)),\n sourceExts,\n nodeModulesPaths,\n },\n watcher: {\n // strip starting dot from env files\n additionalExts: envFiles.map((file: string) => file.replace(/^\\./, '')),\n },\n serializer: {\n getModulesRunBeforeMainModule: () => {\n const preModules: string[] = [];\n\n // We need to shift this to be the first module so web Fast Refresh works as expected.\n // This will only be applied if the module is installed and imported somewhere in the bundle already.\n const metroRuntime = resolveFrom.silent(projectRoot, '@expo/metro-runtime');\n if (metroRuntime) {\n preModules.push(metroRuntime);\n }\n\n preModules.push(\n require.resolve(path.join(reactNativePath, 'Libraries/Core/InitializeCore'))\n );\n return preModules;\n },\n getPolyfills: () => require(path.join(reactNativePath, 'rn-get-polyfills'))(),\n },\n server: {\n rewriteRequestUrl: getRewriteRequestUrl(projectRoot),\n port: Number(env.RCT_METRO_PORT) || 8081,\n // NOTE(EvanBacon): Moves the server root down to the monorepo root.\n // This enables proper monorepo support for web.\n unstable_serverRoot: getServerRoot(projectRoot),\n },\n symbolicator: {\n customizeFrame: getDefaultCustomizeFrame(),\n },\n transformerPath: options.isCSSEnabled\n ? // Custom worker that adds CSS support for Metro web.\n require.resolve('./transform-worker/transform-worker')\n : metroDefaultValues.transformerPath,\n\n transformer: {\n // Custom: These are passed to `getCacheKey` and ensure invalidation when the version changes.\n // @ts-expect-error: not on type.\n postcssHash: getPostcssConfigHash(projectRoot),\n browserslistHash: pkg.browserslist\n ? stableHash(JSON.stringify(pkg.browserslist)).toString('hex')\n : null,\n sassVersion,\n\n // `require.context` support\n unstable_allowRequireContext: true,\n allowOptionalDependencies: true,\n babelTransformerPath: isExotic\n ? require.resolve('./transformer/metro-expo-exotic-babel-transformer')\n : isCustomBabelConfigDefined\n ? // If the user defined a babel config file in their project,\n // then use the default transformer.\n // Try to use the project copy before falling back on the global version\n resolveFrom.silent(projectRoot, 'metro-react-native-babel-transformer')\n : // Otherwise, use a custom transformer that uses `babel-preset-expo` by default for projects.\n require.resolve('./transformer/metro-expo-babel-transformer'),\n assetRegistryPath: 'react-native/Libraries/Image/AssetRegistry',\n assetPlugins: getAssetPlugins(projectRoot),\n },\n });\n\n return withExpoSerializers(metroConfig);\n}\n\nexport async function loadAsync(\n projectRoot: string,\n { reporter, ...metroOptions }: LoadOptions = {}\n): Promise<MetroConfig> {\n let defaultConfig = getDefaultConfig(projectRoot);\n if (reporter) {\n defaultConfig = { ...defaultConfig, reporter };\n }\n\n const { loadConfig } = importMetroConfig(projectRoot);\n\n return await loadConfig({ cwd: projectRoot, projectRoot, ...metroOptions }, defaultConfig);\n}\n\n// re-export for use in config files.\nexport { MetroConfig, INTERNAL_CALLSITES_REGEX };\n\n// re-export for legacy cases.\nexport const EXPO_DEBUG = env.EXPO_DEBUG;\n\nfunction getSassVersion(projectRoot: string): string | null {\n const sassPkg = resolveFrom.silent(projectRoot, 'sass');\n if (!sassPkg) return null;\n const sassPkgJson = findUpPackageJson(sassPkg);\n if (!sassPkgJson) return null;\n const pkg = JsonFile.read(sassPkgJson);\n\n debug('sass package.json:', sassPkgJson);\n const sassVersion = pkg.version;\n if (typeof sassVersion === 'string') {\n return sassVersion;\n }\n\n return null;\n}\n\nfunction findUpPackageJson(cwd: string): string | null {\n if (['.', path.sep].includes(cwd)) return null;\n\n const found = resolveFrom.silent(cwd, './package.json');\n if (found) {\n return found;\n }\n return findUpPackageJson(path.dirname(cwd));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExpoMetroConfig.js","names":["_config","data","require","_paths","runtimeEnv","_interopRequireWildcard","_jsonFile","_interopRequireDefault","_chalk","_metroCache","_metroConfig","_path","_resolveFrom","_customizeFrame","_env2","_getModulesPaths","_getWatchFolders","_rewriteRequestUrl","_withExpoSerializers","_postcss","_metroConfig2","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","debug","getProjectBabelConfigFile","projectRoot","resolveFrom","silent","getAssetPlugins","hashAssetFilesPath","Error","hasWarnedAboutExotic","getDefaultConfig","options","getDefaultMetroConfig","mergeConfig","importMetroConfig","isExotic","mode","env","EXPO_USE_EXOTIC","console","log","chalk","gray","bold","reactNativePath","path","dirname","babelPresetFbjsPath","process","EXPO_METRO_CACHE_KEY_VERSION","String","version","sourceExtsConfig","isTS","isReact","isModern","sourceExts","getBareExtensions","push","sassVersion","isCSSEnabled","getSassVersion","envFiles","getFiles","NODE_ENV","babelConfigPath","isCustomBabelConfigDefined","resolverMainFields","pkg","getPackageJson","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","EXPO_DEBUG","join","reporter","metroDefaultValues","getDefaultValues","metroConfig","resolver","platforms","assetExts","concat","filter","assetExt","includes","watcher","additionalExts","map","file","replace","serializer","getModulesRunBeforeMainModule","preModules","resolve","metroRuntime","getPolyfills","server","rewriteRequestUrl","getRewriteRequestUrl","port","Number","RCT_METRO_PORT","unstable_serverRoot","getServerRoot","symbolicator","customizeFrame","getDefaultCustomizeFrame","transformerPath","transformer","postcssHash","getPostcssConfigHash","browserslistHash","browserslist","stableHash","JSON","stringify","toString","unstable_allowRequireContext","allowOptionalDependencies","babelTransformerPath","assetRegistryPath","assetPlugins","withExpoSerializers","loadAsync","metroOptions","defaultConfig","loadConfig","cwd","exports","sassPkg","sassPkgJson","findUpPackageJson","JsonFile","read","sep","found"],"sources":["../src/ExpoMetroConfig.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { getPackageJson } from '@expo/config';\nimport { getBareExtensions } from '@expo/config/paths';\nimport * as runtimeEnv from '@expo/env';\nimport JsonFile from '@expo/json-file';\nimport chalk from 'chalk';\nimport { Reporter } from 'metro';\nimport { stableHash } from 'metro-cache';\nimport { ConfigT as MetroConfig, InputConfigT } from 'metro-config';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { getDefaultCustomizeFrame, INTERNAL_CALLSITES_REGEX } from './customizeFrame';\nimport { env } from './env';\nimport { getModulesPaths, getServerRoot } from './getModulesPaths';\nimport { getWatchFolders } from './getWatchFolders';\nimport { getRewriteRequestUrl } from './rewriteRequestUrl';\nimport { withExpoSerializers } from './serializer/withExpoSerializers';\nimport { getPostcssConfigHash } from './transform-worker/postcss';\nimport { importMetroConfig } from './traveling/metro-config';\n\nconst debug = require('debug')('expo:metro:config') as typeof console.log;\n\nexport interface LoadOptions {\n config?: string;\n maxWorkers?: number;\n port?: number;\n reporter?: Reporter;\n resetCache?: boolean;\n}\n\nexport interface DefaultConfigOptions {\n mode?: 'exotic';\n /**\n * **Experimental:** Enable CSS support for Metro web, and shim on native.\n *\n * This is an experimental feature and may change in the future. The underlying implementation\n * is subject to change, and native support for CSS Modules may be added in the future during a non-major SDK release.\n */\n isCSSEnabled?: boolean;\n}\n\nfunction getProjectBabelConfigFile(projectRoot: string): string | undefined {\n return (\n resolveFrom.silent(projectRoot, './babel.config.js') ||\n resolveFrom.silent(projectRoot, './.babelrc') ||\n resolveFrom.silent(projectRoot, './.babelrc.js')\n );\n}\n\nfunction getAssetPlugins(projectRoot: string): string[] {\n const hashAssetFilesPath = resolveFrom.silent(projectRoot, 'expo-asset/tools/hashAssetFiles');\n\n if (!hashAssetFilesPath) {\n throw new Error(`The required package \\`expo-asset\\` cannot be found`);\n }\n\n return [hashAssetFilesPath];\n}\n\nlet hasWarnedAboutExotic = false;\n\nexport function getDefaultConfig(\n projectRoot: string,\n options: DefaultConfigOptions = {}\n): InputConfigT {\n const { getDefaultConfig: getDefaultMetroConfig, mergeConfig } = importMetroConfig(projectRoot);\n\n const isExotic = options.mode === 'exotic' || env.EXPO_USE_EXOTIC;\n\n if (isExotic && !hasWarnedAboutExotic) {\n hasWarnedAboutExotic = true;\n console.log(\n chalk.gray(\n `\\u203A Unstable feature ${chalk.bold`EXPO_USE_EXOTIC`} is enabled. Bundling may not work as expected, and is subject to breaking changes.`\n )\n );\n }\n\n const reactNativePath = path.dirname(resolveFrom(projectRoot, 'react-native/package.json'));\n\n try {\n // Set the `EXPO_METRO_CACHE_KEY_VERSION` variable for use in the custom babel transformer.\n // This hack is used because there doesn't appear to be anyway to resolve\n // `babel-preset-fbjs` relative to the project root later (in `metro-expo-babel-transformer`).\n const babelPresetFbjsPath = resolveFrom(projectRoot, 'babel-preset-fbjs/package.json');\n process.env.EXPO_METRO_CACHE_KEY_VERSION = String(require(babelPresetFbjsPath).version);\n } catch {\n // noop -- falls back to a hardcoded value.\n }\n\n const sourceExtsConfig = { isTS: true, isReact: true, isModern: false };\n const sourceExts = getBareExtensions([], sourceExtsConfig);\n\n // Add support for cjs (without platform extensions).\n sourceExts.push('cjs');\n\n let sassVersion: string | null = null;\n if (options.isCSSEnabled) {\n sassVersion = getSassVersion(projectRoot);\n // Enable SCSS by default so we can provide a better error message\n // when sass isn't installed.\n sourceExts.push('scss', 'sass', 'css');\n }\n\n const envFiles = runtimeEnv.getFiles(process.env.NODE_ENV);\n\n const babelConfigPath = getProjectBabelConfigFile(projectRoot);\n const isCustomBabelConfigDefined = !!babelConfigPath;\n\n const resolverMainFields: string[] = [];\n\n // Disable `react-native` in exotic mode, since library authors\n // use it to ship raw application code to the project.\n if (!isExotic) {\n resolverMainFields.push('react-native');\n }\n resolverMainFields.push('browser', 'main');\n\n const pkg = getPackageJson(projectRoot);\n const watchFolders = getWatchFolders(projectRoot);\n // TODO: nodeModulesPaths does not work with the new Node.js package.json exports API, this causes packages like uuid to fail. Disabling for now.\n const nodeModulesPaths = getModulesPaths(projectRoot);\n if (env.EXPO_DEBUG) {\n console.log();\n console.log(`Expo Metro config:`);\n try {\n console.log(`- Version: ${require('../package.json').version}`);\n } catch {}\n console.log(`- Extensions: ${sourceExts.join(', ')}`);\n console.log(`- React Native: ${reactNativePath}`);\n console.log(`- Babel config: ${babelConfigPath || 'babel-preset-expo (default)'}`);\n console.log(`- Resolver Fields: ${resolverMainFields.join(', ')}`);\n console.log(`- Watch Folders: ${watchFolders.join(', ')}`);\n console.log(`- Node Module Paths: ${nodeModulesPaths.join(', ')}`);\n console.log(`- Exotic: ${isExotic}`);\n console.log(`- Env Files: ${envFiles}`);\n console.log(`- Sass: ${sassVersion}`);\n console.log();\n }\n const {\n // Remove the default reporter which metro always resolves to be the react-native-community/cli reporter.\n // This prints a giant React logo which is less accessible to users on smaller terminals.\n reporter,\n ...metroDefaultValues\n } = getDefaultMetroConfig.getDefaultValues(projectRoot);\n\n // Merge in the default config from Metro here, even though loadConfig uses it as defaults.\n // This is a convenience for getDefaultConfig use in metro.config.js, e.g. to modify assetExts.\n const metroConfig: Partial<MetroConfig> = mergeConfig(metroDefaultValues, {\n watchFolders,\n resolver: {\n resolverMainFields,\n platforms: ['ios', 'android'],\n assetExts: metroDefaultValues.resolver.assetExts\n .concat(\n // Add default support for `expo-image` file types.\n ['heic', 'avif']\n )\n .filter((assetExt) => !sourceExts.includes(assetExt)),\n sourceExts,\n nodeModulesPaths,\n },\n watcher: {\n // strip starting dot from env files\n additionalExts: envFiles.map((file: string) => file.replace(/^\\./, '')),\n },\n serializer: {\n getModulesRunBeforeMainModule: () => {\n const preModules: string[] = [\n // MUST be first\n require.resolve(path.join(reactNativePath, 'Libraries/Core/InitializeCore')),\n ];\n\n // We need to shift this to be the first module so web Fast Refresh works as expected.\n // This will only be applied if the module is installed and imported somewhere in the bundle already.\n const metroRuntime = resolveFrom.silent(projectRoot, '@expo/metro-runtime');\n if (metroRuntime) {\n preModules.push(metroRuntime);\n }\n\n return preModules;\n },\n getPolyfills: () => require(path.join(reactNativePath, 'rn-get-polyfills'))(),\n },\n server: {\n rewriteRequestUrl: getRewriteRequestUrl(projectRoot),\n port: Number(env.RCT_METRO_PORT) || 8081,\n // NOTE(EvanBacon): Moves the server root down to the monorepo root.\n // This enables proper monorepo support for web.\n unstable_serverRoot: getServerRoot(projectRoot),\n },\n symbolicator: {\n customizeFrame: getDefaultCustomizeFrame(),\n },\n transformerPath: options.isCSSEnabled\n ? // Custom worker that adds CSS support for Metro web.\n require.resolve('./transform-worker/transform-worker')\n : metroDefaultValues.transformerPath,\n\n transformer: {\n // Custom: These are passed to `getCacheKey` and ensure invalidation when the version changes.\n // @ts-expect-error: not on type.\n postcssHash: getPostcssConfigHash(projectRoot),\n browserslistHash: pkg.browserslist\n ? stableHash(JSON.stringify(pkg.browserslist)).toString('hex')\n : null,\n sassVersion,\n\n // `require.context` support\n unstable_allowRequireContext: true,\n allowOptionalDependencies: true,\n babelTransformerPath: isExotic\n ? require.resolve('./transformer/metro-expo-exotic-babel-transformer')\n : isCustomBabelConfigDefined\n ? // If the user defined a babel config file in their project,\n // then use the default transformer.\n // Try to use the project copy before falling back on the global version\n resolveFrom.silent(projectRoot, 'metro-react-native-babel-transformer')\n : // Otherwise, use a custom transformer that uses `babel-preset-expo` by default for projects.\n require.resolve('./transformer/metro-expo-babel-transformer'),\n assetRegistryPath: 'react-native/Libraries/Image/AssetRegistry',\n assetPlugins: getAssetPlugins(projectRoot),\n },\n });\n\n return withExpoSerializers(metroConfig);\n}\n\nexport async function loadAsync(\n projectRoot: string,\n { reporter, ...metroOptions }: LoadOptions = {}\n): Promise<MetroConfig> {\n let defaultConfig = getDefaultConfig(projectRoot);\n if (reporter) {\n defaultConfig = { ...defaultConfig, reporter };\n }\n\n const { loadConfig } = importMetroConfig(projectRoot);\n\n return await loadConfig({ cwd: projectRoot, projectRoot, ...metroOptions }, defaultConfig);\n}\n\n// re-export for use in config files.\nexport { MetroConfig, INTERNAL_CALLSITES_REGEX };\n\n// re-export for legacy cases.\nexport const EXPO_DEBUG = env.EXPO_DEBUG;\n\nfunction getSassVersion(projectRoot: string): string | null {\n const sassPkg = resolveFrom.silent(projectRoot, 'sass');\n if (!sassPkg) return null;\n const sassPkgJson = findUpPackageJson(sassPkg);\n if (!sassPkgJson) return null;\n const pkg = JsonFile.read(sassPkgJson);\n\n debug('sass package.json:', sassPkgJson);\n const sassVersion = pkg.version;\n if (typeof sassVersion === 'string') {\n return sassVersion;\n }\n\n return null;\n}\n\nfunction findUpPackageJson(cwd: string): string | null {\n if (['.', path.sep].includes(cwd)) return null;\n\n const found = resolveFrom.silent(cwd, './package.json');\n if (found) {\n return found;\n }\n return findUpPackageJson(path.dirname(cwd));\n}\n"],"mappings":"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"}
@@ -12,6 +12,13 @@ Object.defineProperty(exports, "SerialAsset", {
12
12
  exports.createSerializerFromSerialProcessors = createSerializerFromSerialProcessors;
13
13
  exports.withExpoSerializers = withExpoSerializers;
14
14
  exports.withSerializerPlugins = withSerializerPlugins;
15
+ function _jscSafeUrl() {
16
+ const data = require("jsc-safe-url");
17
+ _jscSafeUrl = function () {
18
+ return data;
19
+ };
20
+ return data;
21
+ }
15
22
  function _baseJSBundle() {
16
23
  const data = _interopRequireDefault(require("metro/src/DeltaBundler/Serializers/baseJSBundle"));
17
24
  _baseJSBundle = function () {
@@ -95,7 +102,8 @@ function getDefaultSerializer(fallbackSerializer) {
95
102
  if (!options.sourceUrl) {
96
103
  return jsCode;
97
104
  }
98
- const url = new URL(options.sourceUrl, 'https://expo.dev');
105
+ const sourceUrl = (0, _jscSafeUrl().isJscSafeUrl)(options.sourceUrl) ? (0, _jscSafeUrl().toNormalUrl)(options.sourceUrl) : options.sourceUrl;
106
+ const url = new URL(sourceUrl, 'https://expo.dev');
99
107
  if (url.searchParams.get('platform') !== 'web' || url.searchParams.get('serializer.output') !== 'static') {
100
108
  // Default behavior if `serializer.output=static` is not present in the URL.
101
109
  return jsCode;
@@ -1 +1 @@
1
- {"version":3,"file":"withExpoSerializers.js","names":["_baseJSBundle","data","_interopRequireDefault","require","_bundleToString","_env","_environmentVariableSerializerPlugin","_getCssDeps","_serializerAssets","obj","__esModule","default","withExpoSerializers","config","processors","env","EXPO_NO_CLIENT_ENV_VARS","push","environmentVariableSerializerPlugin","withSerializerPlugins","_config$serializer","originalSerializer","serializer","customSerializer","createSerializerFromSerialProcessors","getDefaultSerializer","fallbackSerializer","defaultSerializer","params","bundle","baseJSBundle","outputCode","bundleToString","code","props","graph","options","jsCode","sourceUrl","url","URL","searchParams","get","cssDeps","getCssSerialAssets","dependencies","projectRoot","processModuleFilter","jsAsset","stringContents","filename","dev","fileNameFromContents","filepath","pathname","src","originFilename","type","metadata","source","JSON","stringify","finalSerializer","processor"],"sources":["../../src/serializer/withExpoSerializers.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { MixedOutput } from 'metro';\nimport { InputConfigT, SerializerConfigT } from 'metro-config';\nimport baseJSBundle from 'metro/src/DeltaBundler/Serializers/baseJSBundle';\nimport bundleToString from 'metro/src/lib/bundleToString';\n\nimport { env } from '../env';\nimport { environmentVariableSerializerPlugin } from './environmentVariableSerializerPlugin';\nimport { fileNameFromContents, getCssSerialAssets } from './getCssDeps';\nimport { SerialAsset } from './serializerAssets';\n\nexport type Serializer = NonNullable<SerializerConfigT['customSerializer']>;\n\nexport type SerializerParameters = Parameters<Serializer>;\n\n// A serializer that processes the input and returns a modified version.\n// Unlike a serializer, these can be chained together.\nexport type SerializerPlugin = (...props: SerializerParameters) => SerializerParameters;\n\nexport function withExpoSerializers(config: InputConfigT): InputConfigT {\n const processors: SerializerPlugin[] = [];\n if (!env.EXPO_NO_CLIENT_ENV_VARS) {\n processors.push(environmentVariableSerializerPlugin);\n }\n\n return withSerializerPlugins(config, processors);\n}\n\n// There can only be one custom serializer as the input doesn't match the output.\n// Here we simply run\nexport function withSerializerPlugins(\n config: InputConfigT,\n processors: SerializerPlugin[]\n): InputConfigT {\n const originalSerializer = config.serializer?.customSerializer;\n\n return {\n ...config,\n serializer: {\n ...config.serializer,\n customSerializer: createSerializerFromSerialProcessors(processors, originalSerializer),\n },\n };\n}\n\nfunction getDefaultSerializer(fallbackSerializer?: Serializer | null): Serializer {\n const defaultSerializer =\n fallbackSerializer ??\n (async (...params: SerializerParameters) => {\n const bundle = baseJSBundle(...params);\n const outputCode = bundleToString(bundle).code;\n return outputCode;\n });\n return async (\n ...props: SerializerParameters\n ): Promise<string | { code: string; map: string }> => {\n const [, , graph, options] = props;\n const jsCode = await defaultSerializer(...props);\n\n if (!options.sourceUrl) {\n return jsCode;\n }\n const url = new URL(options.sourceUrl, 'https://expo.dev');\n if (\n url.searchParams.get('platform') !== 'web' ||\n url.searchParams.get('serializer.output') !== 'static'\n ) {\n // Default behavior if `serializer.output=static` is not present in the URL.\n return jsCode;\n }\n\n const cssDeps = getCssSerialAssets<MixedOutput>(graph.dependencies, {\n projectRoot: options.projectRoot,\n processModuleFilter: options.processModuleFilter,\n });\n\n let jsAsset: SerialAsset | undefined;\n\n if (jsCode) {\n const stringContents = typeof jsCode === 'string' ? jsCode : jsCode.code;\n jsAsset = {\n filename: options.dev\n ? 'index.js'\n : `_expo/static/js/web/${fileNameFromContents({\n filepath: url.pathname,\n src: stringContents,\n })}.js`,\n originFilename: 'index.js',\n type: 'js',\n metadata: {},\n source: stringContents,\n };\n }\n\n return JSON.stringify([jsAsset, ...cssDeps]);\n };\n}\n\nexport function createSerializerFromSerialProcessors(\n processors: (SerializerPlugin | undefined)[],\n originalSerializer?: Serializer | null\n): Serializer {\n const finalSerializer = getDefaultSerializer(originalSerializer);\n return (...props: SerializerParameters): ReturnType<Serializer> => {\n for (const processor of processors) {\n if (processor) {\n props = processor(...props);\n }\n }\n\n return finalSerializer(...props);\n };\n}\n\nexport { SerialAsset };\n"],"mappings":"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"}
1
+ {"version":3,"file":"withExpoSerializers.js","names":["_jscSafeUrl","data","require","_baseJSBundle","_interopRequireDefault","_bundleToString","_env","_environmentVariableSerializerPlugin","_getCssDeps","_serializerAssets","obj","__esModule","default","withExpoSerializers","config","processors","env","EXPO_NO_CLIENT_ENV_VARS","push","environmentVariableSerializerPlugin","withSerializerPlugins","_config$serializer","originalSerializer","serializer","customSerializer","createSerializerFromSerialProcessors","getDefaultSerializer","fallbackSerializer","defaultSerializer","params","bundle","baseJSBundle","outputCode","bundleToString","code","props","graph","options","jsCode","sourceUrl","isJscSafeUrl","toNormalUrl","url","URL","searchParams","get","cssDeps","getCssSerialAssets","dependencies","projectRoot","processModuleFilter","jsAsset","stringContents","filename","dev","fileNameFromContents","filepath","pathname","src","originFilename","type","metadata","source","JSON","stringify","finalSerializer","processor"],"sources":["../../src/serializer/withExpoSerializers.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { isJscSafeUrl, toNormalUrl } from 'jsc-safe-url';\nimport { MixedOutput } from 'metro';\nimport { InputConfigT, SerializerConfigT } from 'metro-config';\nimport baseJSBundle from 'metro/src/DeltaBundler/Serializers/baseJSBundle';\nimport bundleToString from 'metro/src/lib/bundleToString';\n\nimport { env } from '../env';\nimport { environmentVariableSerializerPlugin } from './environmentVariableSerializerPlugin';\nimport { fileNameFromContents, getCssSerialAssets } from './getCssDeps';\nimport { SerialAsset } from './serializerAssets';\n\nexport type Serializer = NonNullable<SerializerConfigT['customSerializer']>;\n\nexport type SerializerParameters = Parameters<Serializer>;\n\n// A serializer that processes the input and returns a modified version.\n// Unlike a serializer, these can be chained together.\nexport type SerializerPlugin = (...props: SerializerParameters) => SerializerParameters;\n\nexport function withExpoSerializers(config: InputConfigT): InputConfigT {\n const processors: SerializerPlugin[] = [];\n if (!env.EXPO_NO_CLIENT_ENV_VARS) {\n processors.push(environmentVariableSerializerPlugin);\n }\n\n return withSerializerPlugins(config, processors);\n}\n\n// There can only be one custom serializer as the input doesn't match the output.\n// Here we simply run\nexport function withSerializerPlugins(\n config: InputConfigT,\n processors: SerializerPlugin[]\n): InputConfigT {\n const originalSerializer = config.serializer?.customSerializer;\n\n return {\n ...config,\n serializer: {\n ...config.serializer,\n customSerializer: createSerializerFromSerialProcessors(processors, originalSerializer),\n },\n };\n}\n\nfunction getDefaultSerializer(fallbackSerializer?: Serializer | null): Serializer {\n const defaultSerializer =\n fallbackSerializer ??\n (async (...params: SerializerParameters) => {\n const bundle = baseJSBundle(...params);\n const outputCode = bundleToString(bundle).code;\n return outputCode;\n });\n return async (\n ...props: SerializerParameters\n ): Promise<string | { code: string; map: string }> => {\n const [, , graph, options] = props;\n const jsCode = await defaultSerializer(...props);\n\n if (!options.sourceUrl) {\n return jsCode;\n }\n const sourceUrl = isJscSafeUrl(options.sourceUrl)\n ? toNormalUrl(options.sourceUrl)\n : options.sourceUrl;\n const url = new URL(sourceUrl, 'https://expo.dev');\n if (\n url.searchParams.get('platform') !== 'web' ||\n url.searchParams.get('serializer.output') !== 'static'\n ) {\n // Default behavior if `serializer.output=static` is not present in the URL.\n return jsCode;\n }\n\n const cssDeps = getCssSerialAssets<MixedOutput>(graph.dependencies, {\n projectRoot: options.projectRoot,\n processModuleFilter: options.processModuleFilter,\n });\n\n let jsAsset: SerialAsset | undefined;\n\n if (jsCode) {\n const stringContents = typeof jsCode === 'string' ? jsCode : jsCode.code;\n jsAsset = {\n filename: options.dev\n ? 'index.js'\n : `_expo/static/js/web/${fileNameFromContents({\n filepath: url.pathname,\n src: stringContents,\n })}.js`,\n originFilename: 'index.js',\n type: 'js',\n metadata: {},\n source: stringContents,\n };\n }\n\n return JSON.stringify([jsAsset, ...cssDeps]);\n };\n}\n\nexport function createSerializerFromSerialProcessors(\n processors: (SerializerPlugin | undefined)[],\n originalSerializer?: Serializer | null\n): Serializer {\n const finalSerializer = getDefaultSerializer(originalSerializer);\n return (...props: SerializerParameters): ReturnType<Serializer> => {\n for (const processor of processors) {\n if (processor) {\n props = processor(...props);\n }\n }\n\n return finalSerializer(...props);\n };\n}\n\nexport { SerialAsset };\n"],"mappings":"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"}
@@ -14,7 +14,8 @@ export declare function transformCssModuleWeb(props: {
14
14
  map: void | Buffer;
15
15
  }>;
16
16
  export declare function convertLightningCssToReactNativeWebStyleSheet(input: import('lightningcss').CSSModuleExports): {
17
- styles: Record<string, any>;
17
+ styles: Record<string, string>;
18
+ reactNativeWeb: Record<string, any>;
18
19
  variables: Record<string, string>;
19
20
  };
20
21
  export declare function matchCssModule(filePath: string): boolean;
@@ -40,9 +40,10 @@ async function transformCssModuleWeb(props) {
40
40
  const codeAsString = cssResults.code.toString();
41
41
  const {
42
42
  styles,
43
+ reactNativeWeb,
43
44
  variables
44
45
  } = convertLightningCssToReactNativeWebStyleSheet(cssResults.exports);
45
- let outputModule = `module.exports=Object.assign(${JSON.stringify(styles)},${JSON.stringify(variables)});`;
46
+ let outputModule = `module.exports=Object.assign(${JSON.stringify(styles)},{unstable_styles:${JSON.stringify(reactNativeWeb)}}${JSON.stringify(variables)});`;
46
47
  if (props.options.dev) {
47
48
  const runtimeCss = (0, _css().wrapDevelopmentCSS)({
48
49
  ...props,
@@ -58,6 +59,7 @@ async function transformCssModuleWeb(props) {
58
59
  }
59
60
  function convertLightningCssToReactNativeWebStyleSheet(input) {
60
61
  const styles = {};
62
+ const reactNativeWeb = {};
61
63
  const variables = {};
62
64
  // e.g. { container: { name: 'ahs8IW_container', composes: [], isReferenced: false }, }
63
65
  Object.entries(input).map(([key, value]) => {
@@ -71,7 +73,8 @@ function convertLightningCssToReactNativeWebStyleSheet(input) {
71
73
  if (key.startsWith('--')) {
72
74
  variables[key] = className;
73
75
  }
74
- styles[key] = {
76
+ styles[key] = className;
77
+ reactNativeWeb[key] = {
75
78
  $$css: true,
76
79
  [RNW_CSS_CLASS_ID]: className
77
80
  };
@@ -84,6 +87,7 @@ function convertLightningCssToReactNativeWebStyleSheet(input) {
84
87
  });
85
88
  return {
86
89
  styles,
90
+ reactNativeWeb,
87
91
  variables
88
92
  };
89
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"css-modules.js","names":["_css","data","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RNW_CSS_CLASS_ID","transformCssModuleWeb","props","transform","Promise","resolve","then","cssResults","filename","code","Buffer","from","src","sourceMap","options","cssModules","dashedIdents","projectRoot","minify","codeAsString","toString","styles","variables","convertLightningCssToReactNativeWebStyleSheet","exports","outputModule","JSON","stringify","dev","runtimeCss","wrapDevelopmentCSS","output","css","map","input","entries","value","className","name","composes","length","join","startsWith","$$css","matchCssModule","filePath","test"],"sources":["../../src/transform-worker/css-modules.ts"],"sourcesContent":["import { wrapDevelopmentCSS } from './css';\n\nconst RNW_CSS_CLASS_ID = '_';\n\nexport async function transformCssModuleWeb(props: {\n filename: string;\n src: string;\n options: { projectRoot: string; minify: boolean; dev: boolean; sourceMap: boolean };\n}) {\n const { transform } = await import('lightningcss');\n\n // TODO: Add bundling to resolve imports\n // https://lightningcss.dev/bundling.html#bundling-order\n\n const cssResults = transform({\n filename: props.filename,\n code: Buffer.from(props.src),\n sourceMap: props.options.sourceMap,\n cssModules: {\n // Prevent renaming CSS variables to ensure\n // variables created in global files are available.\n dashedIdents: false,\n },\n // cssModules: true,\n projectRoot: props.options.projectRoot,\n minify: props.options.minify,\n });\n const codeAsString = cssResults.code.toString();\n\n const { styles, variables } = convertLightningCssToReactNativeWebStyleSheet(cssResults.exports!);\n\n let outputModule = `module.exports=Object.assign(${JSON.stringify(styles)},${JSON.stringify(\n variables\n )});`;\n\n if (props.options.dev) {\n const runtimeCss = wrapDevelopmentCSS({\n ...props,\n src: codeAsString,\n });\n\n outputModule += '\\n' + runtimeCss;\n }\n\n return {\n output: outputModule,\n css: cssResults.code,\n map: cssResults.map,\n };\n}\n\nexport function convertLightningCssToReactNativeWebStyleSheet(\n input: import('lightningcss').CSSModuleExports\n) {\n const styles: Record<string, any> = {};\n const variables: Record<string, string> = {};\n // e.g. { container: { name: 'ahs8IW_container', composes: [], isReferenced: false }, }\n Object.entries(input).map(([key, value]) => {\n // order matters here\n let className = value.name;\n\n if (value.composes.length) {\n className += ' ' + value.composes.map((value) => value.name).join(' ');\n }\n\n // CSS Variables will be `{string: string}`\n if (key.startsWith('--')) {\n variables[key] = className;\n }\n\n styles[key] = { $$css: true, [RNW_CSS_CLASS_ID]: className };\n return {\n [key]: { $$css: true, [RNW_CSS_CLASS_ID]: className },\n };\n });\n\n return { styles, variables };\n}\n\nexport function matchCssModule(filePath: string): boolean {\n return !!/\\.module(\\.(native|ios|android|web))?\\.(css|s[ac]ss)$/.test(filePath);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"css-modules.js","names":["_css","data","require","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","RNW_CSS_CLASS_ID","transformCssModuleWeb","props","transform","Promise","resolve","then","cssResults","filename","code","Buffer","from","src","sourceMap","options","cssModules","dashedIdents","projectRoot","minify","codeAsString","toString","styles","reactNativeWeb","variables","convertLightningCssToReactNativeWebStyleSheet","exports","outputModule","JSON","stringify","dev","runtimeCss","wrapDevelopmentCSS","output","css","map","input","entries","value","className","name","composes","length","join","startsWith","$$css","matchCssModule","filePath","test"],"sources":["../../src/transform-worker/css-modules.ts"],"sourcesContent":["import { wrapDevelopmentCSS } from './css';\n\nconst RNW_CSS_CLASS_ID = '_';\n\nexport async function transformCssModuleWeb(props: {\n filename: string;\n src: string;\n options: { projectRoot: string; minify: boolean; dev: boolean; sourceMap: boolean };\n}) {\n const { transform } = await import('lightningcss');\n\n // TODO: Add bundling to resolve imports\n // https://lightningcss.dev/bundling.html#bundling-order\n\n const cssResults = transform({\n filename: props.filename,\n code: Buffer.from(props.src),\n sourceMap: props.options.sourceMap,\n cssModules: {\n // Prevent renaming CSS variables to ensure\n // variables created in global files are available.\n dashedIdents: false,\n },\n // cssModules: true,\n projectRoot: props.options.projectRoot,\n minify: props.options.minify,\n });\n const codeAsString = cssResults.code.toString();\n\n const { styles, reactNativeWeb, variables } = convertLightningCssToReactNativeWebStyleSheet(\n cssResults.exports!\n );\n\n let outputModule = `module.exports=Object.assign(${JSON.stringify(\n styles\n )},{unstable_styles:${JSON.stringify(reactNativeWeb)}}${JSON.stringify(variables)});`;\n\n if (props.options.dev) {\n const runtimeCss = wrapDevelopmentCSS({\n ...props,\n src: codeAsString,\n });\n\n outputModule += '\\n' + runtimeCss;\n }\n\n return {\n output: outputModule,\n css: cssResults.code,\n map: cssResults.map,\n };\n}\n\nexport function convertLightningCssToReactNativeWebStyleSheet(\n input: import('lightningcss').CSSModuleExports\n) {\n const styles: Record<string, string> = {};\n const reactNativeWeb: Record<string, any> = {};\n const variables: Record<string, string> = {};\n // e.g. { container: { name: 'ahs8IW_container', composes: [], isReferenced: false }, }\n Object.entries(input).map(([key, value]) => {\n // order matters here\n let className = value.name;\n\n if (value.composes.length) {\n className += ' ' + value.composes.map((value) => value.name).join(' ');\n }\n\n // CSS Variables will be `{string: string}`\n if (key.startsWith('--')) {\n variables[key] = className;\n }\n\n styles[key] = className;\n reactNativeWeb[key] = { $$css: true, [RNW_CSS_CLASS_ID]: className };\n return {\n [key]: { $$css: true, [RNW_CSS_CLASS_ID]: className },\n };\n });\n\n return { styles, reactNativeWeb, variables };\n}\n\nexport function matchCssModule(filePath: string): boolean {\n return !!/\\.module(\\.(native|ios|android|web))?\\.(css|s[ac]ss)$/.test(filePath);\n}\n"],"mappings":"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"}
@@ -48,6 +48,18 @@ async function transform(config, projectRoot, filename, data, options) {
48
48
  const isCss = options.type !== 'asset' && /\.(s?css|sass)$/.test(filename);
49
49
  // If the file is not CSS, then use the default behavior.
50
50
  if (!isCss) {
51
+ var _options$customTransf;
52
+ const environment = (_options$customTransf = options.customTransformOptions) === null || _options$customTransf === void 0 ? void 0 : _options$customTransf.environment;
53
+ if (environment === 'client' &&
54
+ // TODO: Ensure this works with windows.
55
+ // TODO: Add +api files.
56
+ filename.match(new RegExp(`^app/\\+html(\\.${options.platform})?\\.([tj]sx?|[cm]js)?$`))) {
57
+ // Remove the server-only +html file from the bundle when bundling for a client environment.
58
+ return _metroTransformWorker().default.transform(config, projectRoot, filename, !options.minify ? Buffer.from(
59
+ // Use a string so this notice is visible in the bundle if the user is
60
+ // looking for it.
61
+ '"> The server-only +html file was removed from the client JS bundle by Expo CLI."') : Buffer.from(''), options);
62
+ }
51
63
  return _metroTransformWorker().default.transform(config, projectRoot, filename, data, options);
52
64
  }
53
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"transform-worker.js","names":["_metroTransformWorker","data","_interopRequireDefault","require","_css","_cssModules","_postcss","_sass","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","countLines","transform","config","projectRoot","filename","options","_jsModuleResults$outp2","isCss","type","test","worker","platform","code","matchCssModule","Buffer","from","toString","transformPostCssModule","src","syntax","matchSass","compileSass","_jsModuleResults$outp","results","transformCssModuleWeb","dev","minify","sourceMap","jsModuleResults","output","cssCode","css","lineCount","map","functionMap","dependencies","Promise","resolve","then","cssResults","cssModules","wrapDevelopmentCSS","module","exports"],"sources":["../../src/transform-worker/transform-worker.ts"],"sourcesContent":["/**\n * Copyright 2023-present 650 Industries (Expo). All rights reserved.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FBSourceFunctionMap, MetroSourceMapSegmentTuple } from 'metro-source-map';\nimport worker, {\n JsTransformerConfig,\n JsTransformOptions,\n TransformResponse,\n} from 'metro-transform-worker';\n\nimport { wrapDevelopmentCSS } from './css';\nimport { matchCssModule, transformCssModuleWeb } from './css-modules';\nimport { transformPostCssModule } from './postcss';\nimport { compileSass, matchSass } from './sass';\n\nconst countLines = require('metro/src/lib/countLines') as (string: string) => number;\n\ntype JSFileType = 'js/script' | 'js/module' | 'js/module/asset';\n\ntype JsOutput = {\n data: {\n code: string;\n lineCount: number;\n map: MetroSourceMapSegmentTuple[];\n functionMap: FBSourceFunctionMap | null;\n };\n type: JSFileType;\n};\n\nexport async function transform(\n config: JsTransformerConfig,\n projectRoot: string,\n filename: string,\n data: Buffer,\n options: JsTransformOptions\n): Promise<TransformResponse> {\n const isCss = options.type !== 'asset' && /\\.(s?css|sass)$/.test(filename);\n // If the file is not CSS, then use the default behavior.\n if (!isCss) {\n return worker.transform(config, projectRoot, filename, data, options);\n }\n\n // If the platform is not web, then return an empty module.\n if (options.platform !== 'web') {\n const code = matchCssModule(filename) ? 'module.exports={};' : '';\n return worker.transform(\n config,\n projectRoot,\n filename,\n // TODO: Native CSS Modules\n Buffer.from(code),\n options\n );\n }\n\n let code = data.toString('utf8');\n\n // Apply postcss transforms\n code = await transformPostCssModule(projectRoot, {\n src: code,\n filename,\n });\n\n // TODO: When native has CSS support, this will need to move higher up.\n const syntax = matchSass(filename);\n if (syntax) {\n code = compileSass(projectRoot, { filename, src: code }, { syntax }).src;\n }\n\n // If the file is a CSS Module, then transform it to a JS module\n // in development and a static CSS file in production.\n if (matchCssModule(filename)) {\n const results = await transformCssModuleWeb({\n filename,\n src: code,\n options: {\n projectRoot,\n dev: options.dev,\n minify: options.minify,\n sourceMap: false,\n },\n });\n\n const jsModuleResults = await worker.transform(\n config,\n projectRoot,\n filename,\n Buffer.from(results.output),\n options\n );\n\n const cssCode = results.css.toString();\n const output: JsOutput[] = [\n {\n type: 'js/module',\n data: {\n // @ts-expect-error\n ...jsModuleResults.output[0]?.data,\n\n // Append additional css metadata for static extraction.\n css: {\n code: cssCode,\n lineCount: countLines(cssCode),\n map: [],\n functionMap: null,\n },\n },\n },\n ];\n\n return {\n dependencies: jsModuleResults.dependencies,\n output,\n };\n }\n\n // Global CSS:\n\n const { transform } = await import('lightningcss');\n\n // TODO: Add bundling to resolve imports\n // https://lightningcss.dev/bundling.html#bundling-order\n\n const cssResults = transform({\n filename,\n code: Buffer.from(code),\n sourceMap: false,\n cssModules: false,\n projectRoot,\n minify: options.minify,\n });\n\n // TODO: Warnings:\n // cssResults.warnings.forEach((warning) => {\n // });\n\n // Create a mock JS module that exports an empty object,\n // this ensures Metro dependency graph is correct.\n const jsModuleResults = await worker.transform(\n config,\n projectRoot,\n filename,\n options.dev ? Buffer.from(wrapDevelopmentCSS({ src: code, filename })) : Buffer.from(''),\n options\n );\n\n const cssCode = cssResults.code.toString();\n\n // In production, we export the CSS as a string and use a special type to prevent\n // it from being included in the JS bundle. We'll extract the CSS like an asset later\n // and append it to the HTML bundle.\n const output: JsOutput[] = [\n {\n type: 'js/module',\n data: {\n // @ts-expect-error\n ...jsModuleResults.output[0]?.data,\n\n // Append additional css metadata for static extraction.\n css: {\n code: cssCode,\n lineCount: countLines(cssCode),\n map: [],\n functionMap: null,\n },\n },\n },\n ];\n\n return {\n dependencies: jsModuleResults.dependencies,\n output,\n };\n}\n\n/**\n * A custom Metro transformer that adds support for processing Expo-specific bundler features.\n * - Global CSS files on web.\n * - CSS Modules on web.\n * - TODO: Tailwind CSS on web.\n */\nmodule.exports = {\n // Use defaults for everything that's not custom.\n ...worker,\n transform,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"transform-worker.js","names":["_metroTransformWorker","data","_interopRequireDefault","require","_css","_cssModules","_postcss","_sass","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","countLines","transform","config","projectRoot","filename","options","_jsModuleResults$outp2","isCss","type","test","_options$customTransf","environment","customTransformOptions","match","RegExp","platform","worker","minify","Buffer","from","code","matchCssModule","toString","transformPostCssModule","src","syntax","matchSass","compileSass","_jsModuleResults$outp","results","transformCssModuleWeb","dev","sourceMap","jsModuleResults","output","cssCode","css","lineCount","map","functionMap","dependencies","Promise","resolve","then","cssResults","cssModules","wrapDevelopmentCSS","module","exports"],"sources":["../../src/transform-worker/transform-worker.ts"],"sourcesContent":["/**\n * Copyright 2023-present 650 Industries (Expo). All rights reserved.\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { FBSourceFunctionMap, MetroSourceMapSegmentTuple } from 'metro-source-map';\nimport worker, {\n JsTransformerConfig,\n JsTransformOptions,\n TransformResponse,\n} from 'metro-transform-worker';\n\nimport { wrapDevelopmentCSS } from './css';\nimport { matchCssModule, transformCssModuleWeb } from './css-modules';\nimport { transformPostCssModule } from './postcss';\nimport { compileSass, matchSass } from './sass';\n\nconst countLines = require('metro/src/lib/countLines') as (string: string) => number;\n\ntype JSFileType = 'js/script' | 'js/module' | 'js/module/asset';\n\ntype JsOutput = {\n data: {\n code: string;\n lineCount: number;\n map: MetroSourceMapSegmentTuple[];\n functionMap: FBSourceFunctionMap | null;\n };\n type: JSFileType;\n};\n\nexport async function transform(\n config: JsTransformerConfig,\n projectRoot: string,\n filename: string,\n data: Buffer,\n options: JsTransformOptions\n): Promise<TransformResponse> {\n const isCss = options.type !== 'asset' && /\\.(s?css|sass)$/.test(filename);\n // If the file is not CSS, then use the default behavior.\n if (!isCss) {\n const environment = options.customTransformOptions?.environment;\n\n if (\n environment === 'client' &&\n // TODO: Ensure this works with windows.\n // TODO: Add +api files.\n filename.match(new RegExp(`^app/\\\\+html(\\\\.${options.platform})?\\\\.([tj]sx?|[cm]js)?$`))\n ) {\n // Remove the server-only +html file from the bundle when bundling for a client environment.\n return worker.transform(\n config,\n projectRoot,\n filename,\n !options.minify\n ? Buffer.from(\n // Use a string so this notice is visible in the bundle if the user is\n // looking for it.\n '\"> The server-only +html file was removed from the client JS bundle by Expo CLI.\"'\n )\n : Buffer.from(''),\n options\n );\n }\n\n return worker.transform(config, projectRoot, filename, data, options);\n }\n\n // If the platform is not web, then return an empty module.\n if (options.platform !== 'web') {\n const code = matchCssModule(filename) ? 'module.exports={};' : '';\n return worker.transform(\n config,\n projectRoot,\n filename,\n // TODO: Native CSS Modules\n Buffer.from(code),\n options\n );\n }\n\n let code = data.toString('utf8');\n\n // Apply postcss transforms\n code = await transformPostCssModule(projectRoot, {\n src: code,\n filename,\n });\n\n // TODO: When native has CSS support, this will need to move higher up.\n const syntax = matchSass(filename);\n if (syntax) {\n code = compileSass(projectRoot, { filename, src: code }, { syntax }).src;\n }\n\n // If the file is a CSS Module, then transform it to a JS module\n // in development and a static CSS file in production.\n if (matchCssModule(filename)) {\n const results = await transformCssModuleWeb({\n filename,\n src: code,\n options: {\n projectRoot,\n dev: options.dev,\n minify: options.minify,\n sourceMap: false,\n },\n });\n\n const jsModuleResults = await worker.transform(\n config,\n projectRoot,\n filename,\n Buffer.from(results.output),\n options\n );\n\n const cssCode = results.css.toString();\n const output: JsOutput[] = [\n {\n type: 'js/module',\n data: {\n // @ts-expect-error\n ...jsModuleResults.output[0]?.data,\n\n // Append additional css metadata for static extraction.\n css: {\n code: cssCode,\n lineCount: countLines(cssCode),\n map: [],\n functionMap: null,\n },\n },\n },\n ];\n\n return {\n dependencies: jsModuleResults.dependencies,\n output,\n };\n }\n\n // Global CSS:\n\n const { transform } = await import('lightningcss');\n\n // TODO: Add bundling to resolve imports\n // https://lightningcss.dev/bundling.html#bundling-order\n\n const cssResults = transform({\n filename,\n code: Buffer.from(code),\n sourceMap: false,\n cssModules: false,\n projectRoot,\n minify: options.minify,\n });\n\n // TODO: Warnings:\n // cssResults.warnings.forEach((warning) => {\n // });\n\n // Create a mock JS module that exports an empty object,\n // this ensures Metro dependency graph is correct.\n const jsModuleResults = await worker.transform(\n config,\n projectRoot,\n filename,\n options.dev ? Buffer.from(wrapDevelopmentCSS({ src: code, filename })) : Buffer.from(''),\n options\n );\n\n const cssCode = cssResults.code.toString();\n\n // In production, we export the CSS as a string and use a special type to prevent\n // it from being included in the JS bundle. We'll extract the CSS like an asset later\n // and append it to the HTML bundle.\n const output: JsOutput[] = [\n {\n type: 'js/module',\n data: {\n // @ts-expect-error\n ...jsModuleResults.output[0]?.data,\n\n // Append additional css metadata for static extraction.\n css: {\n code: cssCode,\n lineCount: countLines(cssCode),\n map: [],\n functionMap: null,\n },\n },\n },\n ];\n\n return {\n dependencies: jsModuleResults.dependencies,\n output,\n };\n}\n\n/**\n * A custom Metro transformer that adds support for processing Expo-specific bundler features.\n * - Global CSS files on web.\n * - CSS Modules on web.\n * - TODO: Tailwind CSS on web.\n */\nmodule.exports = {\n // Use defaults for everything that's not custom.\n ...worker,\n transform,\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/metro-config",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "description": "A Metro config for running React Native projects with the Metro bundler",
5
5
  "main": "build/ExpoMetroConfig.js",
6
6
  "scripts": {
@@ -30,13 +30,14 @@
30
30
  "transformer"
31
31
  ],
32
32
  "dependencies": {
33
- "@expo/config": "~8.0.0",
33
+ "@expo/config": "~8.1.0",
34
34
  "@expo/env": "~0.0.2",
35
35
  "@expo/json-file": "~8.2.37",
36
36
  "chalk": "^4.1.0",
37
37
  "debug": "^4.3.2",
38
38
  "find-yarn-workspace-root": "~2.0.0",
39
39
  "getenv": "^1.0.0",
40
+ "jsc-safe-url": "^0.2.4",
40
41
  "lightningcss": "~1.19.0",
41
42
  "postcss": "~8.4.21",
42
43
  "resolve-from": "^5.0.0",
@@ -49,5 +50,5 @@
49
50
  "publishConfig": {
50
51
  "access": "public"
51
52
  },
52
- "gitHead": "3ccd2edee9cbfed217557675cb50f0ba5e55a9e4"
53
+ "gitHead": "8f1b11dc4866465ba61334b9f93fa5b610c7d150"
53
54
  }