@expo/metro-config 0.11.0 → 0.12.0
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.
- package/build/ExpoMetroConfig.js +19 -22
- package/build/ExpoMetroConfig.js.map +1 -1
- package/build/customizeFrame.js +5 -3
- package/build/customizeFrame.js.map +1 -1
- package/build/serializer/getCssDeps.js +3 -2
- package/build/serializer/getCssDeps.js.map +1 -1
- package/build/serializer/serializerAssets.d.ts +1 -1
- package/build/serializer/serializerAssets.js.map +1 -1
- package/build/serializer/withExpoSerializers.js +77 -13
- package/build/serializer/withExpoSerializers.js.map +1 -1
- package/package.json +3 -3
package/build/ExpoMetroConfig.js
CHANGED
|
@@ -174,15 +174,16 @@ function getDefaultConfig(projectRoot, options = {}) {
|
|
|
174
174
|
const sourceExtsConfig = {
|
|
175
175
|
isTS: true,
|
|
176
176
|
isReact: true,
|
|
177
|
-
isModern:
|
|
177
|
+
isModern: true
|
|
178
178
|
};
|
|
179
179
|
const sourceExts = (0, _paths().getBareExtensions)([], sourceExtsConfig);
|
|
180
180
|
|
|
181
181
|
// Add support for cjs (without platform extensions).
|
|
182
182
|
sourceExts.push('cjs');
|
|
183
|
+
const reanimatedVersion = getPkgVersion(projectRoot, 'react-native-reanimated');
|
|
183
184
|
let sassVersion = null;
|
|
184
185
|
if (options.isCSSEnabled) {
|
|
185
|
-
sassVersion =
|
|
186
|
+
sassVersion = getPkgVersion(projectRoot, 'sass');
|
|
186
187
|
// Enable SCSS by default so we can provide a better error message
|
|
187
188
|
// when sass isn't installed.
|
|
188
189
|
sourceExts.push('scss', 'sass', 'css');
|
|
@@ -190,14 +191,6 @@ function getDefaultConfig(projectRoot, options = {}) {
|
|
|
190
191
|
const envFiles = runtimeEnv().getFiles(process.env.NODE_ENV, {
|
|
191
192
|
silent: true
|
|
192
193
|
});
|
|
193
|
-
const resolverMainFields = [];
|
|
194
|
-
|
|
195
|
-
// Disable `react-native` in exotic mode, since library authors
|
|
196
|
-
// use it to ship raw application code to the project.
|
|
197
|
-
if (!isExotic) {
|
|
198
|
-
resolverMainFields.push('react-native');
|
|
199
|
-
}
|
|
200
|
-
resolverMainFields.push('browser', 'main');
|
|
201
194
|
const pkg = (0, _config().getPackageJson)(projectRoot);
|
|
202
195
|
const watchFolders = (0, _getWatchFolders().getWatchFolders)(projectRoot);
|
|
203
196
|
// TODO: nodeModulesPaths does not work with the new Node.js package.json exports API, this causes packages like uuid to fail. Disabling for now.
|
|
@@ -210,12 +203,12 @@ function getDefaultConfig(projectRoot, options = {}) {
|
|
|
210
203
|
} catch {}
|
|
211
204
|
console.log(`- Extensions: ${sourceExts.join(', ')}`);
|
|
212
205
|
console.log(`- React Native: ${reactNativePath}`);
|
|
213
|
-
console.log(`- Resolver Fields: ${resolverMainFields.join(', ')}`);
|
|
214
206
|
console.log(`- Watch Folders: ${watchFolders.join(', ')}`);
|
|
215
207
|
console.log(`- Node Module Paths: ${nodeModulesPaths.join(', ')}`);
|
|
216
208
|
console.log(`- Exotic: ${isExotic}`);
|
|
217
209
|
console.log(`- Env Files: ${envFiles}`);
|
|
218
210
|
console.log(`- Sass: ${sassVersion}`);
|
|
211
|
+
console.log(`- Reanimated: ${reanimatedVersion}`);
|
|
219
212
|
console.log();
|
|
220
213
|
}
|
|
221
214
|
const {
|
|
@@ -230,7 +223,9 @@ function getDefaultConfig(projectRoot, options = {}) {
|
|
|
230
223
|
const metroConfig = mergeConfig(metroDefaultValues, {
|
|
231
224
|
watchFolders,
|
|
232
225
|
resolver: {
|
|
233
|
-
|
|
226
|
+
// unstable_conditionsByPlatform: { web: ['browser'] },
|
|
227
|
+
unstable_conditionNames: ['require', 'import', 'react-native'],
|
|
228
|
+
resolverMainFields: ['react-native', 'browser', 'main'],
|
|
234
229
|
platforms: ['ios', 'android'],
|
|
235
230
|
assetExts: metroDefaultValues.resolver.assetExts.concat(
|
|
236
231
|
// Add default support for `expo-image` file types.
|
|
@@ -277,6 +272,8 @@ function getDefaultConfig(projectRoot, options = {}) {
|
|
|
277
272
|
postcssHash: (0, _postcss().getPostcssConfigHash)(projectRoot),
|
|
278
273
|
browserslistHash: pkg.browserslist ? (0, _metroCache().stableHash)(JSON.stringify(pkg.browserslist)).toString('hex') : null,
|
|
279
274
|
sassVersion,
|
|
275
|
+
// Ensure invalidation when the version changes due to the Babel plugin.
|
|
276
|
+
reanimatedVersion,
|
|
280
277
|
// `require.context` support
|
|
281
278
|
unstable_allowRequireContext: true,
|
|
282
279
|
allowOptionalDependencies: true,
|
|
@@ -315,16 +312,16 @@ async function loadAsync(projectRoot, {
|
|
|
315
312
|
// re-export for legacy cases.
|
|
316
313
|
const EXPO_DEBUG = _env2().env.EXPO_DEBUG;
|
|
317
314
|
exports.EXPO_DEBUG = EXPO_DEBUG;
|
|
318
|
-
function
|
|
319
|
-
const
|
|
320
|
-
if (!
|
|
321
|
-
const
|
|
322
|
-
if (!
|
|
323
|
-
const pkg = _jsonFile().default.read(
|
|
324
|
-
debug(
|
|
325
|
-
const
|
|
326
|
-
if (typeof
|
|
327
|
-
return
|
|
315
|
+
function getPkgVersion(projectRoot, pkgName) {
|
|
316
|
+
const targetPkg = _resolveFrom().default.silent(projectRoot, pkgName);
|
|
317
|
+
if (!targetPkg) return null;
|
|
318
|
+
const targetPkgJson = findUpPackageJson(targetPkg);
|
|
319
|
+
if (!targetPkgJson) return null;
|
|
320
|
+
const pkg = _jsonFile().default.read(targetPkgJson);
|
|
321
|
+
debug(`${pkgName} package.json:`, targetPkgJson);
|
|
322
|
+
const pkgVersion = pkg.version;
|
|
323
|
+
if (typeof pkgVersion === 'string') {
|
|
324
|
+
return pkgVersion;
|
|
328
325
|
}
|
|
329
326
|
return null;
|
|
330
327
|
}
|
|
@@ -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","getAssetPlugins","projectRoot","hashAssetFilesPath","resolveFrom","silent","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","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 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, { silent: true });\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(`- 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 ? // TODO: Combine these into one transformer.\n require.resolve('./transformer/metro-expo-exotic-babel-transformer')\n : require.resolve('./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","getAssetPlugins","projectRoot","hashAssetFilesPath","resolveFrom","silent","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","reanimatedVersion","getPkgVersion","sassVersion","isCSSEnabled","envFiles","getFiles","NODE_ENV","pkg","getPackageJson","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","EXPO_DEBUG","join","reporter","metroDefaultValues","getDefaultValues","metroConfig","resolver","unstable_conditionNames","resolverMainFields","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","pkgName","targetPkg","targetPkgJson","findUpPackageJson","JsonFile","read","pkgVersion","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 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: true };\n const sourceExts = getBareExtensions([], sourceExtsConfig);\n\n // Add support for cjs (without platform extensions).\n sourceExts.push('cjs');\n\n const reanimatedVersion = getPkgVersion(projectRoot, 'react-native-reanimated');\n\n let sassVersion: string | null = null;\n if (options.isCSSEnabled) {\n sassVersion = getPkgVersion(projectRoot, 'sass');\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, { silent: true });\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(`- 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(`- Reanimated: ${reanimatedVersion}`);\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 // unstable_conditionsByPlatform: { web: ['browser'] },\n unstable_conditionNames: ['require', 'import', 'react-native'],\n resolverMainFields: ['react-native', 'browser', 'main'],\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 // Ensure invalidation when the version changes due to the Babel plugin.\n reanimatedVersion,\n\n // `require.context` support\n unstable_allowRequireContext: true,\n allowOptionalDependencies: true,\n babelTransformerPath: isExotic\n ? // TODO: Combine these into one transformer.\n require.resolve('./transformer/metro-expo-exotic-babel-transformer')\n : require.resolve('./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 getPkgVersion(projectRoot: string, pkgName: string): string | null {\n const targetPkg = resolveFrom.silent(projectRoot, pkgName);\n if (!targetPkg) return null;\n const targetPkgJson = findUpPackageJson(targetPkg);\n if (!targetPkgJson) return null;\n const pkg = JsonFile.read(targetPkgJson);\n\n debug(`${pkgName} package.json:`, targetPkgJson);\n const pkgVersion = pkg.version;\n if (typeof pkgVersion === 'string') {\n return pkgVersion;\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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"}
|
package/build/customizeFrame.js
CHANGED
|
@@ -22,8 +22,6 @@ const INTERNAL_CALLSITES_REGEX = new RegExp(['/Libraries/Renderer/implementation
|
|
|
22
22
|
'/metro/.*/polyfills/require.js$',
|
|
23
23
|
// Hide frames related to a fast refresh.
|
|
24
24
|
'/metro/.*/lib/bundle-modules/.+\\.js$', 'node_modules/react-native/Libraries/Utilities/HMRClient.js$', 'node_modules/eventemitter3/index.js', 'node_modules/event-target-shim/dist/.+\\.js$',
|
|
25
|
-
// Ignore the log forwarder used in the expo package.
|
|
26
|
-
'/expo/build/logs/RemoteConsole.js$',
|
|
27
25
|
// Improve errors thrown by invariant (ex: `Invariant Violation: "main" has not been registered`).
|
|
28
26
|
'node_modules/invariant/.+\\.js$',
|
|
29
27
|
// Remove babel runtime additions
|
|
@@ -37,7 +35,11 @@ const INTERNAL_CALLSITES_REGEX = new RegExp(['/Libraries/Renderer/implementation
|
|
|
37
35
|
// Block native code invocations
|
|
38
36
|
`\\[native code\\]`,
|
|
39
37
|
// Hide react-dom (web)
|
|
40
|
-
'node_modules/react-dom/.+\\.js$',
|
|
38
|
+
'node_modules/react-dom/.+\\.js$',
|
|
39
|
+
// Block expo's metro-runtime
|
|
40
|
+
'@expo/metro-runtime/build/.+\\.js$',
|
|
41
|
+
// Block upstream metro-runtime
|
|
42
|
+
'/metro-runtime/.+\\.js$'].join('|'));
|
|
41
43
|
exports.INTERNAL_CALLSITES_REGEX = INTERNAL_CALLSITES_REGEX;
|
|
42
44
|
function isUrl(value) {
|
|
43
45
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customizeFrame.js","names":["_url","data","require","INTERNAL_CALLSITES_REGEX","RegExp","join","exports","isUrl","value","URL","getDefaultCustomizeFrame","frame","file","lineNumber","column","collapse","Boolean","test","_frame$file","methodName","match"],"sources":["../src/customizeFrame.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { SymbolicatorConfigT } from 'metro-config';\nimport { URL } from 'url';\n\ntype CustomizeFrameFunc = SymbolicatorConfigT['customizeFrame'];\n\n// Import only the types here, the values will be imported from the project, at runtime.\nexport const 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 // Metro replaces `require()` with a different method,\n // we want to omit this method from the stack trace.\n // This is akin to most React tooling.\n '/metro/.*/polyfills/require.js$',\n // Hide frames related to a fast refresh.\n '/metro/.*/lib/bundle-modules/.+\\\\.js$',\n 'node_modules/react-native/Libraries/Utilities/HMRClient.js$',\n 'node_modules/eventemitter3/index.js',\n 'node_modules/event-target-shim/dist/.+\\\\.js$',\n //
|
|
1
|
+
{"version":3,"file":"customizeFrame.js","names":["_url","data","require","INTERNAL_CALLSITES_REGEX","RegExp","join","exports","isUrl","value","URL","getDefaultCustomizeFrame","frame","file","lineNumber","column","collapse","Boolean","test","_frame$file","methodName","match"],"sources":["../src/customizeFrame.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { SymbolicatorConfigT } from 'metro-config';\nimport { URL } from 'url';\n\ntype CustomizeFrameFunc = SymbolicatorConfigT['customizeFrame'];\n\n// Import only the types here, the values will be imported from the project, at runtime.\nexport const 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 // Metro replaces `require()` with a different method,\n // we want to omit this method from the stack trace.\n // This is akin to most React tooling.\n '/metro/.*/polyfills/require.js$',\n // Hide frames related to a fast refresh.\n '/metro/.*/lib/bundle-modules/.+\\\\.js$',\n 'node_modules/react-native/Libraries/Utilities/HMRClient.js$',\n 'node_modules/eventemitter3/index.js',\n 'node_modules/event-target-shim/dist/.+\\\\.js$',\n // Improve errors thrown by invariant (ex: `Invariant Violation: \"main\" has not been registered`).\n 'node_modules/invariant/.+\\\\.js$',\n // Remove babel runtime additions\n 'node_modules/regenerator-runtime/.+\\\\.js$',\n // Remove react native setImmediate ponyfill\n 'node_modules/promise/setimmediate/.+\\\\.js$',\n // Babel helpers that implement language features\n 'node_modules/@babel/runtime/.+\\\\.js$',\n // Hide Hermes internal bytecode\n '/InternalBytecode/InternalBytecode\\\\.js$',\n // Block native code invocations\n `\\\\[native code\\\\]`,\n // Hide react-dom (web)\n 'node_modules/react-dom/.+\\\\.js$',\n // Block expo's metro-runtime\n '@expo/metro-runtime/build/.+\\\\.js$',\n // Block upstream metro-runtime\n '/metro-runtime/.+\\\\.js$',\n ].join('|')\n);\n\nfunction isUrl(value: string): boolean {\n try {\n // eslint-disable-next-line no-new\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * The default frame processor. This is used to modify the stack traces.\n * This method attempts to collapse all frames that aren't relevant to\n * the user by default.\n */\nexport function getDefaultCustomizeFrame(): CustomizeFrameFunc {\n return (frame: Parameters<CustomizeFrameFunc>[0]) => {\n if (frame.file && isUrl(frame.file)) {\n return {\n ...frame,\n // HACK: This prevents Metro from attempting to read the invalid file URL it sent us.\n lineNumber: null,\n column: null,\n // This prevents the invalid frame from being shown by default.\n collapse: true,\n };\n }\n let collapse = Boolean(frame.file && INTERNAL_CALLSITES_REGEX.test(frame.file));\n\n if (!collapse) {\n // This represents the first frame of the stacktrace.\n // Often this looks like: `__r(0);`.\n // The URL will also be unactionable in the app and therefore not very useful to the developer.\n if (\n frame.column === 3 &&\n frame.methodName === 'global code' &&\n frame.file?.match(/^https?:\\/\\//g)\n ) {\n collapse = true;\n }\n }\n\n return { ...(frame || {}), collapse };\n };\n}\n"],"mappings":";;;;;;;AAEA,SAAAA,KAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,IAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAFA;;AAMA;AACO,MAAME,wBAAwB,GAAG,IAAIC,MAAM,CAChD,CACE,8CAA8C,EAC9C,6CAA6C,EAC7C,+BAA+B,EAC/B,4BAA4B,EAC5B,iCAAiC,EACjC,2CAA2C,EAC3C,qCAAqC,EACrC,iCAAiC;AACjC;AACA;AACA;AACA,iCAAiC;AACjC;AACA,uCAAuC,EACvC,6DAA6D,EAC7D,qCAAqC,EACrC,8CAA8C;AAC9C;AACA,iCAAiC;AACjC;AACA,2CAA2C;AAC3C;AACA,4CAA4C;AAC5C;AACA,sCAAsC;AACtC;AACA,0CAA0C;AAC1C;AACC,mBAAkB;AACnB;AACA,iCAAiC;AACjC;AACA,oCAAoC;AACpC;AACA,yBAAyB,CAC1B,CAACC,IAAI,CAAC,GAAG,CAAC,CACZ;AAACC,OAAA,CAAAH,wBAAA,GAAAA,wBAAA;AAEF,SAASI,KAAKA,CAACC,KAAa,EAAW;EACrC,IAAI;IACF;IACA,KAAIC,UAAG,EAACD,KAAK,CAAC;IACd,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASE,wBAAwBA,CAAA,EAAuB;EAC7D,OAAQC,KAAwC,IAAK;IACnD,IAAIA,KAAK,CAACC,IAAI,IAAIL,KAAK,CAACI,KAAK,CAACC,IAAI,CAAC,EAAE;MACnC,OAAO;QACL,GAAGD,KAAK;QACR;QACAE,UAAU,EAAE,IAAI;QAChBC,MAAM,EAAE,IAAI;QACZ;QACAC,QAAQ,EAAE;MACZ,CAAC;IACH;IACA,IAAIA,QAAQ,GAAGC,OAAO,CAACL,KAAK,CAACC,IAAI,IAAIT,wBAAwB,CAACc,IAAI,CAACN,KAAK,CAACC,IAAI,CAAC,CAAC;IAE/E,IAAI,CAACG,QAAQ,EAAE;MAAA,IAAAG,WAAA;MACb;MACA;MACA;MACA,IACEP,KAAK,CAACG,MAAM,KAAK,CAAC,IAClBH,KAAK,CAACQ,UAAU,KAAK,aAAa,KAAAD,WAAA,GAClCP,KAAK,CAACC,IAAI,cAAAM,WAAA,eAAVA,WAAA,CAAYE,KAAK,CAAC,eAAe,CAAC,EAClC;QACAL,QAAQ,GAAG,IAAI;MACjB;IACF;IAEA,OAAO;MAAE,IAAIJ,KAAK,IAAI,CAAC,CAAC,CAAC;MAAEI;IAAS,CAAC;EACvC,CAAC;AACH"}
|
|
@@ -62,15 +62,16 @@ function getCssSerialAssets(dependencies, {
|
|
|
62
62
|
const cssMetadata = getCssMetadata(module);
|
|
63
63
|
if (cssMetadata) {
|
|
64
64
|
const contents = cssMetadata.code;
|
|
65
|
+
const originFilename = _path().default.relative(projectRoot, module.path);
|
|
65
66
|
const filename = _path().default.join(
|
|
66
67
|
// Consistent location
|
|
67
68
|
STATIC_EXPORT_DIRECTORY,
|
|
68
69
|
// Hashed file contents + name for caching
|
|
69
70
|
fileNameFromContents({
|
|
70
|
-
|
|
71
|
+
// Stable filename for hashing in CI.
|
|
72
|
+
filepath: originFilename,
|
|
71
73
|
src: contents
|
|
72
74
|
}) + '.css');
|
|
73
|
-
const originFilename = _path().default.relative(projectRoot, module.path);
|
|
74
75
|
assets.push({
|
|
75
76
|
type: 'css',
|
|
76
77
|
originFilename,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCssDeps.js","names":["_js","data","require","_path","_interopRequireDefault","_css","_hash","obj","__esModule","default","STATIC_EXPORT_DIRECTORY","filterJsModules","dependencies","processModuleFilter","projectRoot","assets","module","values","isJsModule","getJsOutput","type","path","relative","push","getCssSerialAssets","cssMetadata","getCssMetadata","contents","code","filename","join","fileNameFromContents","filepath","src","
|
|
1
|
+
{"version":3,"file":"getCssDeps.js","names":["_js","data","require","_path","_interopRequireDefault","_css","_hash","obj","__esModule","default","STATIC_EXPORT_DIRECTORY","filterJsModules","dependencies","processModuleFilter","projectRoot","assets","module","values","isJsModule","getJsOutput","type","path","relative","push","getCssSerialAssets","cssMetadata","getCssMetadata","contents","code","originFilename","filename","join","fileNameFromContents","filepath","src","source","metadata","hmrId","pathToHtmlSafeName","_module$output$","output","css","Error","JSON","stringify","getFileName","hashString","basename","replace"],"sources":["../../src/serializer/getCssDeps.ts"],"sourcesContent":["import type { Module } from 'metro';\nimport { getJsOutput, isJsModule } from 'metro/src/DeltaBundler/Serializers/helpers/js';\nimport path from 'path';\n\nimport { SerialAsset } from './serializerAssets';\nimport { pathToHtmlSafeName } from '../transform-worker/css';\nimport { hashString } from '../utils/hash';\n\nexport type ReadOnlyDependencies<T = any> = ReadonlyMap<string, Module<T>>;\n\ntype Options = {\n processModuleFilter: (modules: Module) => boolean;\n assetPlugins: readonly string[];\n platform?: string | null;\n projectRoot: string;\n publicPath: string;\n};\n\ntype MetroModuleCSSMetadata = {\n code: string;\n lineCount: number;\n map: any[];\n};\n\n// s = static\nconst STATIC_EXPORT_DIRECTORY = '_expo/static/css';\n\nexport type JSModule = Module<{\n data: {\n code: string;\n map: unknown;\n lineCount: number;\n css?: {\n code: string;\n map: unknown;\n lineCount: number;\n };\n };\n type: 'js/module';\n}>;\n\nexport function filterJsModules(\n dependencies: ReadOnlyDependencies,\n { processModuleFilter, projectRoot }: Pick<Options, 'projectRoot' | 'processModuleFilter'>\n) {\n const assets: JSModule[] = [];\n\n for (const module of dependencies.values()) {\n if (\n isJsModule(module) &&\n processModuleFilter(module) &&\n getJsOutput(module).type === 'js/module' &&\n path.relative(projectRoot, module.path) !== 'package.json'\n ) {\n assets.push(module as JSModule);\n }\n }\n return assets;\n}\n\nexport function getCssSerialAssets<T extends any>(\n dependencies: ReadOnlyDependencies<T>,\n { processModuleFilter, projectRoot }: Pick<Options, 'projectRoot' | 'processModuleFilter'>\n): SerialAsset[] {\n const assets: SerialAsset[] = [];\n\n for (const module of filterJsModules(dependencies, { processModuleFilter, projectRoot })) {\n const cssMetadata = getCssMetadata(module);\n if (cssMetadata) {\n const contents = cssMetadata.code;\n const originFilename = path.relative(projectRoot, module.path);\n\n const filename = path.join(\n // Consistent location\n STATIC_EXPORT_DIRECTORY,\n // Hashed file contents + name for caching\n fileNameFromContents({\n // Stable filename for hashing in CI.\n filepath: originFilename,\n src: contents,\n }) + '.css'\n );\n assets.push({\n type: 'css',\n originFilename,\n filename,\n source: contents,\n metadata: {\n hmrId: pathToHtmlSafeName(originFilename),\n },\n });\n }\n }\n\n return assets;\n}\n\nfunction getCssMetadata(module: JSModule): MetroModuleCSSMetadata | null {\n const data = module.output[0]?.data;\n if (data && typeof data === 'object' && 'css' in data) {\n if (typeof data.css !== 'object' || !('code' in (data as any).css)) {\n throw new Error(\n `Unexpected CSS metadata in Metro module (${module.path}): ${JSON.stringify(data.css)}`\n );\n }\n return data.css as MetroModuleCSSMetadata;\n }\n return null;\n}\n\nexport function fileNameFromContents({ filepath, src }: { filepath: string; src: string }): string {\n return getFileName(filepath) + '-' + hashString(filepath + src);\n}\n\nexport function getFileName(module: string) {\n return path.basename(module).replace(/\\.[^.]+$/, '');\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializerAssets.js","names":[],"sources":["../../src/serializer/serializerAssets.ts"],"sourcesContent":["export type SerialAsset = {\n // 'styles.css'\n originFilename: string;\n // '_expo/static/css/bc6aa0a69dcebf8e8cac1faa76705756.css'\n filename: string;\n // '\\ndiv {\\n background: cyan;\\n}\\n\\n'\n source: string;\n type: 'css' | 'js';\n\n metadata: Record<string, string>;\n};\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"serializerAssets.js","names":[],"sources":["../../src/serializer/serializerAssets.ts"],"sourcesContent":["export type SerialAsset = {\n // 'styles.css'\n originFilename: string;\n // '_expo/static/css/bc6aa0a69dcebf8e8cac1faa76705756.css'\n filename: string;\n // '\\ndiv {\\n background: cyan;\\n}\\n\\n'\n source: string;\n type: 'css' | 'js' | 'map';\n\n metadata: Record<string, string>;\n};\n"],"mappings":""}
|
|
@@ -26,6 +26,13 @@ function _baseJSBundle() {
|
|
|
26
26
|
};
|
|
27
27
|
return data;
|
|
28
28
|
}
|
|
29
|
+
function _sourceMapString() {
|
|
30
|
+
const data = _interopRequireDefault(require("metro/src/DeltaBundler/Serializers/sourceMapString"));
|
|
31
|
+
_sourceMapString = function () {
|
|
32
|
+
return data;
|
|
33
|
+
};
|
|
34
|
+
return data;
|
|
35
|
+
}
|
|
29
36
|
function _bundleToString() {
|
|
30
37
|
const data = _interopRequireDefault(require("metro/src/lib/bundleToString"));
|
|
31
38
|
_bundleToString = function () {
|
|
@@ -33,9 +40,9 @@ function _bundleToString() {
|
|
|
33
40
|
};
|
|
34
41
|
return data;
|
|
35
42
|
}
|
|
36
|
-
function
|
|
37
|
-
const data = require("
|
|
38
|
-
|
|
43
|
+
function _path() {
|
|
44
|
+
const data = _interopRequireDefault(require("path"));
|
|
45
|
+
_path = function () {
|
|
39
46
|
return data;
|
|
40
47
|
};
|
|
41
48
|
return data;
|
|
@@ -61,6 +68,13 @@ function _serializerAssets() {
|
|
|
61
68
|
};
|
|
62
69
|
return data;
|
|
63
70
|
}
|
|
71
|
+
function _env() {
|
|
72
|
+
const data = require("../env");
|
|
73
|
+
_env = function () {
|
|
74
|
+
return data;
|
|
75
|
+
};
|
|
76
|
+
return data;
|
|
77
|
+
}
|
|
64
78
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
65
79
|
/**
|
|
66
80
|
* Copyright © 2022 650 Industries.
|
|
@@ -69,6 +83,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
69
83
|
* LICENSE file in the root directory of this source tree.
|
|
70
84
|
*/
|
|
71
85
|
|
|
86
|
+
// @ts-expect-error
|
|
87
|
+
|
|
72
88
|
function withExpoSerializers(config) {
|
|
73
89
|
const processors = [];
|
|
74
90
|
if (!_env().env.EXPO_NO_CLIENT_ENV_VARS) {
|
|
@@ -97,8 +113,8 @@ function getDefaultSerializer(fallbackSerializer) {
|
|
|
97
113
|
return outputCode;
|
|
98
114
|
};
|
|
99
115
|
return async (...props) => {
|
|
100
|
-
const [
|
|
101
|
-
const jsCode = await defaultSerializer(
|
|
116
|
+
const [entryPoint, preModules, graph, options] = props;
|
|
117
|
+
const jsCode = await defaultSerializer(entryPoint, preModules, graph, options);
|
|
102
118
|
if (!options.sourceUrl) {
|
|
103
119
|
return jsCode;
|
|
104
120
|
}
|
|
@@ -108,27 +124,75 @@ function getDefaultSerializer(fallbackSerializer) {
|
|
|
108
124
|
// Default behavior if `serializer.output=static` is not present in the URL.
|
|
109
125
|
return jsCode;
|
|
110
126
|
}
|
|
127
|
+
const includeSourceMaps = url.searchParams.get('serializer.map') === 'true';
|
|
111
128
|
const cssDeps = (0, _getCssDeps().getCssSerialAssets)(graph.dependencies, {
|
|
112
129
|
projectRoot: options.projectRoot,
|
|
113
130
|
processModuleFilter: options.processModuleFilter
|
|
114
131
|
});
|
|
115
|
-
|
|
132
|
+
const jsAssets = [];
|
|
116
133
|
if (jsCode) {
|
|
117
134
|
const stringContents = typeof jsCode === 'string' ? jsCode : jsCode.code;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
135
|
+
const jsFilename = (0, _getCssDeps().fileNameFromContents)({
|
|
136
|
+
filepath: url.pathname,
|
|
137
|
+
src: stringContents
|
|
138
|
+
});
|
|
139
|
+
jsAssets.push({
|
|
140
|
+
filename: options.dev ? 'index.js' : `_expo/static/js/web/${jsFilename}.js`,
|
|
123
141
|
originFilename: 'index.js',
|
|
124
142
|
type: 'js',
|
|
125
143
|
metadata: {},
|
|
126
144
|
source: stringContents
|
|
127
|
-
};
|
|
145
|
+
});
|
|
146
|
+
if (
|
|
147
|
+
// Only include the source map if the `options.sourceMapUrl` option is provided and we are exporting a static build.
|
|
148
|
+
includeSourceMaps && options.sourceMapUrl) {
|
|
149
|
+
const sourceMap = typeof jsCode === 'string' ? serializeToSourceMap(...props) : jsCode.map;
|
|
150
|
+
|
|
151
|
+
// Make all paths relative to the server root to prevent the entire user filesystem from being exposed.
|
|
152
|
+
const parsed = JSON.parse(sourceMap);
|
|
153
|
+
// TODO: Maybe we can do this earlier.
|
|
154
|
+
parsed.sources = parsed.sources.map(
|
|
155
|
+
// TODO: Maybe basePath support
|
|
156
|
+
value => {
|
|
157
|
+
if (value.startsWith('/')) {
|
|
158
|
+
var _options$serverRoot;
|
|
159
|
+
return '/' + _path().default.relative((_options$serverRoot = options.serverRoot) !== null && _options$serverRoot !== void 0 ? _options$serverRoot : options.projectRoot, value);
|
|
160
|
+
}
|
|
161
|
+
// Prevent `__prelude__` from being relative.
|
|
162
|
+
return value;
|
|
163
|
+
});
|
|
164
|
+
jsAssets.push({
|
|
165
|
+
filename: options.dev ? 'index.map' : `_expo/static/js/web/${jsFilename}.js.map`,
|
|
166
|
+
originFilename: 'index.map',
|
|
167
|
+
type: 'map',
|
|
168
|
+
metadata: {},
|
|
169
|
+
source: JSON.stringify(parsed)
|
|
170
|
+
});
|
|
171
|
+
}
|
|
128
172
|
}
|
|
129
|
-
return JSON.stringify([
|
|
173
|
+
return JSON.stringify([...jsAssets, ...cssDeps]);
|
|
130
174
|
};
|
|
131
175
|
}
|
|
176
|
+
function getSortedModules(graph, {
|
|
177
|
+
createModuleId
|
|
178
|
+
}) {
|
|
179
|
+
const modules = [...graph.dependencies.values()];
|
|
180
|
+
// Assign IDs to modules in a consistent order
|
|
181
|
+
for (const module of modules) {
|
|
182
|
+
createModuleId(module.path);
|
|
183
|
+
}
|
|
184
|
+
// Sort by IDs
|
|
185
|
+
return modules.sort((a, b) => createModuleId(a.path) - createModuleId(b.path));
|
|
186
|
+
}
|
|
187
|
+
function serializeToSourceMap(...props) {
|
|
188
|
+
const [, prepend, graph, options] = props;
|
|
189
|
+
const modules = [...prepend, ...getSortedModules(graph, {
|
|
190
|
+
createModuleId: options.createModuleId
|
|
191
|
+
})];
|
|
192
|
+
return (0, _sourceMapString().default)(modules, {
|
|
193
|
+
...options
|
|
194
|
+
});
|
|
195
|
+
}
|
|
132
196
|
function createSerializerFromSerialProcessors(processors, originalSerializer) {
|
|
133
197
|
const finalSerializer = getDefaultSerializer(originalSerializer);
|
|
134
198
|
return (...props) => {
|
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
1
|
+
{"version":3,"file":"withExpoSerializers.js","names":["_jscSafeUrl","data","require","_baseJSBundle","_interopRequireDefault","_sourceMapString","_bundleToString","_path","_environmentVariableSerializerPlugin","_getCssDeps","_serializerAssets","_env","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","entryPoint","preModules","graph","options","jsCode","sourceUrl","isJscSafeUrl","toNormalUrl","url","URL","searchParams","get","includeSourceMaps","cssDeps","getCssSerialAssets","dependencies","projectRoot","processModuleFilter","jsAssets","stringContents","jsFilename","fileNameFromContents","filepath","pathname","src","filename","dev","originFilename","type","metadata","source","sourceMapUrl","sourceMap","serializeToSourceMap","map","parsed","JSON","parse","sources","value","startsWith","_options$serverRoot","path","relative","serverRoot","stringify","getSortedModules","createModuleId","modules","values","module","sort","a","b","prepend","sourceMapString","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 { Module, MixedOutput } from 'metro';\nimport baseJSBundle from 'metro/src/DeltaBundler/Serializers/baseJSBundle';\n// @ts-expect-error\nimport sourceMapString from 'metro/src/DeltaBundler/Serializers/sourceMapString';\nimport bundleToString from 'metro/src/lib/bundleToString';\nimport { InputConfigT, SerializerConfigT } from 'metro-config';\nimport path from 'path';\n\nimport { environmentVariableSerializerPlugin } from './environmentVariableSerializerPlugin';\nimport { fileNameFromContents, getCssSerialAssets } from './getCssDeps';\nimport { SerialAsset } from './serializerAssets';\nimport { env } from '../env';\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 [entryPoint, preModules, graph, options] = props;\n\n const jsCode = await defaultSerializer(entryPoint, preModules, graph, options);\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 includeSourceMaps = url.searchParams.get('serializer.map') === 'true';\n\n const cssDeps = getCssSerialAssets<MixedOutput>(graph.dependencies, {\n projectRoot: options.projectRoot,\n processModuleFilter: options.processModuleFilter,\n });\n\n const jsAssets: SerialAsset[] = [];\n\n if (jsCode) {\n const stringContents = typeof jsCode === 'string' ? jsCode : jsCode.code;\n const jsFilename = fileNameFromContents({\n filepath: url.pathname,\n src: stringContents,\n });\n jsAssets.push({\n filename: options.dev ? 'index.js' : `_expo/static/js/web/${jsFilename}.js`,\n originFilename: 'index.js',\n type: 'js',\n metadata: {},\n source: stringContents,\n });\n\n if (\n // Only include the source map if the `options.sourceMapUrl` option is provided and we are exporting a static build.\n includeSourceMaps &&\n options.sourceMapUrl\n ) {\n const sourceMap = typeof jsCode === 'string' ? serializeToSourceMap(...props) : jsCode.map;\n\n // Make all paths relative to the server root to prevent the entire user filesystem from being exposed.\n const parsed = JSON.parse(sourceMap);\n // TODO: Maybe we can do this earlier.\n parsed.sources = parsed.sources.map(\n // TODO: Maybe basePath support\n (value: string) => {\n if (value.startsWith('/')) {\n return '/' + path.relative(options.serverRoot ?? options.projectRoot, value);\n }\n // Prevent `__prelude__` from being relative.\n return value;\n }\n );\n\n jsAssets.push({\n filename: options.dev ? 'index.map' : `_expo/static/js/web/${jsFilename}.js.map`,\n originFilename: 'index.map',\n type: 'map',\n metadata: {},\n source: JSON.stringify(parsed),\n });\n }\n }\n\n return JSON.stringify([...jsAssets, ...cssDeps]);\n };\n}\n\nfunction getSortedModules(\n graph: SerializerParameters[2],\n {\n createModuleId,\n }: {\n createModuleId: (path: string) => number;\n }\n): readonly Module<any>[] {\n const modules = [...graph.dependencies.values()];\n // Assign IDs to modules in a consistent order\n for (const module of modules) {\n createModuleId(module.path);\n }\n // Sort by IDs\n return modules.sort(\n (a: Module<any>, b: Module<any>) => createModuleId(a.path) - createModuleId(b.path)\n );\n}\n\nfunction serializeToSourceMap(...props: SerializerParameters): string {\n const [, prepend, graph, options] = props;\n\n const modules = [\n ...prepend,\n ...getSortedModules(graph, {\n createModuleId: options.createModuleId,\n }),\n ];\n\n return sourceMapString(modules, {\n ...options,\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/metro-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "A Metro config for running React Native projects with the Metro bundler",
|
|
5
5
|
"main": "build/ExpoMetroConfig.js",
|
|
6
6
|
"scripts": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
],
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"babel-preset-fbjs": "^3.4.0",
|
|
35
|
-
"@expo/config": "~8.
|
|
35
|
+
"@expo/config": "~8.3.0",
|
|
36
36
|
"@expo/env": "~0.1.0",
|
|
37
37
|
"@expo/json-file": "~8.2.37",
|
|
38
38
|
"chalk": "^4.1.0",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"publishConfig": {
|
|
57
57
|
"access": "public"
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "79607a7325f47aa17c36d266100d09a4ff2cc544"
|
|
60
60
|
}
|