@expo/metro-config 0.16.1 → 0.17.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.
Files changed (35) hide show
  1. package/build/ExpoMetroConfig.js.map +1 -1
  2. package/build/babel-transformer.js.map +1 -1
  3. package/build/customizeFrame.js.map +1 -1
  4. package/build/env.js.map +1 -1
  5. package/build/getWatchFolders.js.map +1 -1
  6. package/build/loadBabelConfig.js.map +1 -1
  7. package/build/rewriteRequestUrl.js.map +1 -1
  8. package/build/serializer/debugId.d.ts +12 -0
  9. package/build/serializer/debugId.js +37 -0
  10. package/build/serializer/debugId.js.map +1 -0
  11. package/build/serializer/environmentVariableSerializerPlugin.js.map +1 -1
  12. package/build/serializer/exportHermes.js.map +1 -1
  13. package/build/serializer/exportPath.js.map +1 -1
  14. package/build/serializer/fork/baseJSBundle.d.ts +2 -0
  15. package/build/serializer/fork/baseJSBundle.js +40 -3
  16. package/build/serializer/fork/baseJSBundle.js.map +1 -1
  17. package/build/serializer/fork/js.js.map +1 -1
  18. package/build/serializer/getCssDeps.js.map +1 -1
  19. package/build/serializer/serializeChunks.d.ts +33 -2
  20. package/build/serializer/serializeChunks.js +56 -16
  21. package/build/serializer/serializeChunks.js.map +1 -1
  22. package/build/serializer/withExpoSerializers.d.ts +1 -0
  23. package/build/serializer/withExpoSerializers.js +96 -5
  24. package/build/serializer/withExpoSerializers.js.map +1 -1
  25. package/build/transform-worker/asset-transformer.js.map +1 -1
  26. package/build/transform-worker/css-modules.js.map +1 -1
  27. package/build/transform-worker/getAssets.js.map +1 -1
  28. package/build/transform-worker/metro-transform-worker.js.map +1 -1
  29. package/build/transform-worker/postcss.js.map +1 -1
  30. package/build/transform-worker/sass.js.map +1 -1
  31. package/build/transform-worker/transform-worker.js.map +1 -1
  32. package/build/transformSync.js.map +1 -1
  33. package/build/transformer/generateFunctionMap.js.map +1 -1
  34. package/build/transformer/getBabelConfig.js.map +1 -1
  35. package/package.json +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ExpoMetroConfig.js","names":["_config","data","require","_paths","runtimeEnv","_interopRequireWildcard","_jsonFile","_interopRequireDefault","_chalk","_metroCache","_metroConfig","_os","_path","_resolveFrom","_customizeFrame","_env2","_fileStore","_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","patchMetroGraphToSupportUncachedModules","Graph","original_traverseDependencies","traverseDependencies","__patched","paths","options","dependencies","forEach","dependency","output","find","file","_file$data$css","css","skipCache","includes","path","unstable_transformResultKey","push","getDefaultConfig","mode","isCSSEnabled","getDefaultMetroConfig","mergeConfig","importMetroConfig","isExotic","env","EXPO_USE_EXOTIC","console","log","chalk","gray","bold","reactNativePath","dirname","babelPresetFbjsPath","process","EXPO_METRO_CACHE_KEY_VERSION","String","version","sourceExtsConfig","isTS","isReact","isModern","sourceExts","getBareExtensions","reanimatedVersion","getPkgVersion","sassVersion","envFiles","getFiles","NODE_ENV","pkg","getPackageJson","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","EXPO_DEBUG","join","reporter","metroDefaultValues","getDefaultValues","cacheStore","FileStore","root","os","tmpdir","metroConfig","resolver","unstable_conditionsByPlatform","ios","android","web","unstable_conditionNames","resolverMainFields","platforms","assetExts","concat","filter","assetExt","cacheStores","watcher","additionalExts","map","replace","serializer","getModulesRunBeforeMainModule","preModules","resolve","stdRuntime","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","asyncRequireModulePath","assetRegistryPath","assetPlugins","getTransformOptions","transform","experimentalImportSupport","inlineRequires","withExpoSerializers","exports","pkgName","targetPkg","targetPkgJson","findUpPackageJson","JsonFile","read","pkgVersion","cwd","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 os from 'os';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { getDefaultCustomizeFrame, INTERNAL_CALLSITES_REGEX } from './customizeFrame';\nimport { env } from './env';\nimport { FileStore } from './file-store';\nimport { getModulesPaths, getServerRoot } from './getModulesPaths';\nimport { getWatchFolders } from './getWatchFolders';\nimport { getRewriteRequestUrl } from './rewriteRequestUrl';\nimport { JSModule } from './serializer/getCssDeps';\nimport { withExpoSerializers } from './serializer/withExpoSerializers';\nimport { getPostcssConfigHash } from './transform-worker/postcss';\nimport { importMetroConfig } from './traveling/metro-config';\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 /** @deprecated */\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\n// Patch Metro's graph to support always parsing certain modules. This enables\n// things like Tailwind CSS which update based on their own heuristics.\nfunction patchMetroGraphToSupportUncachedModules() {\n const { Graph } = require('metro/src/DeltaBundler/Graph');\n\n const original_traverseDependencies = Graph.prototype.traverseDependencies;\n if (!original_traverseDependencies.__patched) {\n original_traverseDependencies.__patched = true;\n\n Graph.prototype.traverseDependencies = function (paths: string[], options: unknown) {\n this.dependencies.forEach((dependency: JSModule) => {\n // Find any dependencies that have been marked as `skipCache` and ensure they are invalidated.\n // `skipCache` is set when a CSS module is found by PostCSS.\n if (\n dependency.output.find((file) => file.data.css?.skipCache) &&\n !paths.includes(dependency.path)\n ) {\n // Ensure we invalidate the `unstable_transformResultKey` (input hash) so the module isn't removed in\n // the Graph._processModule method.\n dependency.unstable_transformResultKey = dependency.unstable_transformResultKey + '.';\n\n // Add the path to the list of modified paths so it gets run through the transformer again,\n // this will ensure it is passed to PostCSS -> Tailwind.\n paths.push(dependency.path);\n }\n });\n // Invoke the original method with the new paths to ensure the standard behavior is preserved.\n return original_traverseDependencies.call(this, paths, options);\n };\n // Ensure we don't patch the method twice.\n Graph.prototype.traverseDependencies.__patched = true;\n }\n}\n\nexport function getDefaultConfig(\n projectRoot: string,\n { mode, isCSSEnabled = true }: DefaultConfigOptions = {}\n): InputConfigT {\n const { getDefaultConfig: getDefaultMetroConfig, mergeConfig } = importMetroConfig(projectRoot);\n\n if (isCSSEnabled) {\n patchMetroGraphToSupportUncachedModules();\n }\n\n const isExotic = mode === 'exotic' || env.EXPO_USE_EXOTIC;\n\n if (isExotic && !hasWarnedAboutExotic) {\n hasWarnedAboutExotic = true;\n console.log(\n chalk.gray(`\\u203A Feature ${chalk.bold`EXPO_USE_EXOTIC`} is no longer supported.`)\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 (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 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(`- Env Files: ${envFiles}`);\n console.log(`- Sass: ${sassVersion}`);\n console.log(`- Reanimated: ${reanimatedVersion}`);\n console.log();\n }\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 const cacheStore = new FileStore<any>({\n root: path.join(os.tmpdir(), 'metro-cache'),\n });\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: {\n ios: ['react-native'],\n android: ['react-native'],\n // This is removed for server platforms.\n web: ['browser'],\n },\n unstable_conditionNames: ['require', 'import'],\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 cacheStores: [cacheStore],\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 const stdRuntime = resolveFrom.silent(projectRoot, 'expo/build/winter');\n if (stdRuntime) {\n preModules.push(stdRuntime);\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('@react-native/js-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: require.resolve('./transform-worker/transform-worker'),\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: require.resolve('./babel-transformer'),\n // See: https://github.com/facebook/react-native/blob/v0.73.0/packages/metro-config/index.js#L72-L74\n asyncRequireModulePath: resolveFrom(\n reactNativePath,\n metroDefaultValues.transformer.asyncRequireModulePath\n ),\n assetRegistryPath: '@react-native/assets-registry/registry',\n assetPlugins: getAssetPlugins(projectRoot),\n getTransformOptions: async () => ({\n transform: {\n experimentalImportSupport: false,\n inlineRequires: false,\n },\n }),\n },\n });\n\n return withExpoSerializers(metroConfig);\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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"}
1
+ {"version":3,"file":"ExpoMetroConfig.js","names":["_config","data","require","_paths","runtimeEnv","_interopRequireWildcard","_jsonFile","_interopRequireDefault","_chalk","_metroCache","_metroConfig","_os","_path","_resolveFrom","_customizeFrame","_env2","_fileStore","_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","patchMetroGraphToSupportUncachedModules","Graph","original_traverseDependencies","traverseDependencies","__patched","paths","options","dependencies","forEach","dependency","output","find","file","_file$data$css","css","skipCache","includes","path","unstable_transformResultKey","push","getDefaultConfig","mode","isCSSEnabled","getDefaultMetroConfig","mergeConfig","importMetroConfig","isExotic","env","EXPO_USE_EXOTIC","console","log","chalk","gray","bold","reactNativePath","dirname","babelPresetFbjsPath","process","EXPO_METRO_CACHE_KEY_VERSION","String","version","sourceExtsConfig","isTS","isReact","isModern","sourceExts","getBareExtensions","reanimatedVersion","getPkgVersion","sassVersion","envFiles","getFiles","NODE_ENV","pkg","getPackageJson","watchFolders","getWatchFolders","nodeModulesPaths","getModulesPaths","EXPO_DEBUG","join","reporter","metroDefaultValues","getDefaultValues","cacheStore","FileStore","root","os","tmpdir","metroConfig","resolver","unstable_conditionsByPlatform","ios","android","web","unstable_conditionNames","resolverMainFields","platforms","assetExts","concat","filter","assetExt","cacheStores","watcher","additionalExts","map","replace","serializer","getModulesRunBeforeMainModule","preModules","resolve","stdRuntime","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","asyncRequireModulePath","assetRegistryPath","assetPlugins","getTransformOptions","transform","experimentalImportSupport","inlineRequires","withExpoSerializers","exports","pkgName","targetPkg","targetPkgJson","findUpPackageJson","JsonFile","read","pkgVersion","cwd","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 os from 'os';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { getDefaultCustomizeFrame, INTERNAL_CALLSITES_REGEX } from './customizeFrame';\nimport { env } from './env';\nimport { FileStore } from './file-store';\nimport { getModulesPaths, getServerRoot } from './getModulesPaths';\nimport { getWatchFolders } from './getWatchFolders';\nimport { getRewriteRequestUrl } from './rewriteRequestUrl';\nimport { JSModule } from './serializer/getCssDeps';\nimport { withExpoSerializers } from './serializer/withExpoSerializers';\nimport { getPostcssConfigHash } from './transform-worker/postcss';\nimport { importMetroConfig } from './traveling/metro-config';\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 /** @deprecated */\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\n// Patch Metro's graph to support always parsing certain modules. This enables\n// things like Tailwind CSS which update based on their own heuristics.\nfunction patchMetroGraphToSupportUncachedModules() {\n const { Graph } = require('metro/src/DeltaBundler/Graph');\n\n const original_traverseDependencies = Graph.prototype.traverseDependencies;\n if (!original_traverseDependencies.__patched) {\n original_traverseDependencies.__patched = true;\n\n Graph.prototype.traverseDependencies = function (paths: string[], options: unknown) {\n this.dependencies.forEach((dependency: JSModule) => {\n // Find any dependencies that have been marked as `skipCache` and ensure they are invalidated.\n // `skipCache` is set when a CSS module is found by PostCSS.\n if (\n dependency.output.find((file) => file.data.css?.skipCache) &&\n !paths.includes(dependency.path)\n ) {\n // Ensure we invalidate the `unstable_transformResultKey` (input hash) so the module isn't removed in\n // the Graph._processModule method.\n dependency.unstable_transformResultKey = dependency.unstable_transformResultKey + '.';\n\n // Add the path to the list of modified paths so it gets run through the transformer again,\n // this will ensure it is passed to PostCSS -> Tailwind.\n paths.push(dependency.path);\n }\n });\n // Invoke the original method with the new paths to ensure the standard behavior is preserved.\n return original_traverseDependencies.call(this, paths, options);\n };\n // Ensure we don't patch the method twice.\n Graph.prototype.traverseDependencies.__patched = true;\n }\n}\n\nexport function getDefaultConfig(\n projectRoot: string,\n { mode, isCSSEnabled = true }: DefaultConfigOptions = {}\n): InputConfigT {\n const { getDefaultConfig: getDefaultMetroConfig, mergeConfig } = importMetroConfig(projectRoot);\n\n if (isCSSEnabled) {\n patchMetroGraphToSupportUncachedModules();\n }\n\n const isExotic = mode === 'exotic' || env.EXPO_USE_EXOTIC;\n\n if (isExotic && !hasWarnedAboutExotic) {\n hasWarnedAboutExotic = true;\n console.log(\n chalk.gray(`\\u203A Feature ${chalk.bold`EXPO_USE_EXOTIC`} is no longer supported.`)\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 (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 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(`- Env Files: ${envFiles}`);\n console.log(`- Sass: ${sassVersion}`);\n console.log(`- Reanimated: ${reanimatedVersion}`);\n console.log();\n }\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 const cacheStore = new FileStore<any>({\n root: path.join(os.tmpdir(), 'metro-cache'),\n });\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: {\n ios: ['react-native'],\n android: ['react-native'],\n // This is removed for server platforms.\n web: ['browser'],\n },\n unstable_conditionNames: ['require', 'import'],\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 cacheStores: [cacheStore],\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 const stdRuntime = resolveFrom.silent(projectRoot, 'expo/build/winter');\n if (stdRuntime) {\n preModules.push(stdRuntime);\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('@react-native/js-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: require.resolve('./transform-worker/transform-worker'),\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: require.resolve('./babel-transformer'),\n // See: https://github.com/facebook/react-native/blob/v0.73.0/packages/metro-config/index.js#L72-L74\n asyncRequireModulePath: resolveFrom(\n reactNativePath,\n metroDefaultValues.transformer.asyncRequireModulePath\n ),\n assetRegistryPath: '@react-native/assets-registry/registry',\n assetPlugins: getAssetPlugins(projectRoot),\n getTransformOptions: async () => ({\n transform: {\n experimentalImportSupport: false,\n inlineRequires: false,\n },\n }),\n },\n });\n\n return withExpoSerializers(metroConfig);\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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"babel-transformer.js","names":["_nodeAssert","data","_interopRequireDefault","require","_nodeCrypto","_nodeFs","_loadBabelConfig","_transformSync","obj","__esModule","default","cacheKeyParts","fs","readFileSync","__filename","version","isCustomTruthy","value","memoize","fn","cache","Map","args","key","JSON","stringify","has","get","result","set","memoizeWarning","message","console","warn","getBabelCaller","filename","options","_options$customTransf","_options$customTransf2","_options$customTransf3","_options$customTransf4","_options$customTransf5","_options$customTransf6","isNodeModule","includes","isServer","customTransformOptions","environment","routerRoot","decodeURI","undefined","name","bundler","platform","baseUrl","isDev","dev","preserveEnvVars","asyncRoutes","engine","projectRoot","isHMREnabled","hot","supportsStaticESM","experimentalImportSupport","transform","src","plugins","OLD_BABEL_ENV","process","env","BABEL_ENV","babelConfig","sourceType","ast","code","cloneInputAst","cwd","highlightCode","loadBabelConfig","babelrc","enableBabelRCLookup","caller","transformSync","assert","metadata","getCacheKey","crypto","createHash","forEach","part","update","digest","babelTransformer","module","exports"],"sources":["../src/babel-transformer.ts"],"sourcesContent":["/**\n * Copyright (c) 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 */\n// A fork of the upstream babel-transformer that uses Expo-specific babel defaults\n// and adds support for web and Node.js environments via `isServer` on the Babel caller.\nimport type { BabelTransformer, BabelTransformerArgs } from 'metro-babel-transformer';\nimport assert from 'node:assert';\nimport crypto from 'node:crypto';\nimport fs from 'node:fs';\n\nimport { TransformOptions } from './babel-core';\nimport { loadBabelConfig } from './loadBabelConfig';\nimport { transformSync } from './transformSync';\n\nconst cacheKeyParts = [\n fs.readFileSync(__filename),\n require('babel-preset-fbjs/package.json').version,\n];\n\nfunction isCustomTruthy(value: any): boolean {\n return value === true || value === 'true';\n}\n\nfunction memoize<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n return ((...args: any[]) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n\nconst memoizeWarning = memoize((message: string) => {\n console.warn(message);\n});\n\nfunction getBabelCaller({ filename, options }: Pick<BabelTransformerArgs, 'filename' | 'options'>) {\n const isNodeModule = filename.includes('node_modules');\n const isServer = options.customTransformOptions?.environment === 'node';\n\n const routerRoot =\n typeof options.customTransformOptions?.routerRoot === 'string'\n ? decodeURI(options.customTransformOptions.routerRoot)\n : undefined;\n\n if (routerRoot == null) {\n memoizeWarning(\n 'Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.'\n );\n }\n\n return {\n name: 'metro',\n bundler: 'metro',\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl:\n typeof options.customTransformOptions?.baseUrl === 'string'\n ? decodeURI(options.customTransformOptions.baseUrl)\n : '',\n\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot ?? 'app',\n\n isDev: options.dev,\n\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy(options.customTransformOptions?.preserveEnvVars)\n ? true\n : undefined,\n asyncRoutes: isCustomTruthy(options.customTransformOptions?.asyncRoutes) ? true : undefined,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: options.customTransformOptions?.engine,\n\n // Provide the project root for accurately reading the Expo config.\n projectRoot: options.projectRoot,\n\n isNodeModule,\n\n isHMREnabled: options.hot,\n\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: options.experimentalImportSupport,\n };\n}\n\nconst transform: BabelTransformer['transform'] = ({\n filename,\n src,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`. Could make sense to move this to `babel-preset-expo` too.\n plugins,\n}: BabelTransformerArgs): ReturnType<BabelTransformer['transform']> => {\n const OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? 'development' : process.env.BABEL_ENV || 'production';\n\n try {\n const babelConfig: TransformOptions = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: 'unambiguous',\n\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n\n // Load the project babel config file.\n ...loadBabelConfig(options),\n\n babelrc:\n typeof options.enableBabelRCLookup === 'boolean' ? options.enableBabelRCLookup : true,\n\n plugins,\n\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // Additionally, by moving everything Babel-related to the Babel preset, it makes it easier for users to reason\n // about the requirements of an Expo project, making it easier to migrate to other transpilers in the future.\n caller: getBabelCaller({ filename, options }),\n };\n\n const result = transformSync(src, babelConfig, options);\n\n // The result from `transformFromAstSync` can be null (if the file is ignored)\n if (!result) {\n // BabelTransformer specifies that the `ast` can never be null but\n // the function returns here. Discovered when typing `BabelNode`.\n return { ast: null };\n }\n\n assert(result.ast);\n return { ast: result.ast, metadata: result.metadata };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\n\nfunction getCacheKey() {\n const key = crypto.createHash('md5');\n cacheKeyParts.forEach((part) => key.update(part));\n return key.digest('hex');\n}\n\nconst babelTransformer: BabelTransformer = {\n transform,\n getCacheKey,\n};\n\nmodule.exports = babelTransformer;\n"],"mappings":"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"}
1
+ {"version":3,"file":"babel-transformer.js","names":["_nodeAssert","data","_interopRequireDefault","require","_nodeCrypto","_nodeFs","_loadBabelConfig","_transformSync","obj","__esModule","default","cacheKeyParts","fs","readFileSync","__filename","version","isCustomTruthy","value","memoize","fn","cache","Map","args","key","JSON","stringify","has","get","result","set","memoizeWarning","message","console","warn","getBabelCaller","filename","options","_options$customTransf","_options$customTransf2","_options$customTransf3","_options$customTransf4","_options$customTransf5","_options$customTransf6","isNodeModule","includes","isServer","customTransformOptions","environment","routerRoot","decodeURI","undefined","name","bundler","platform","baseUrl","isDev","dev","preserveEnvVars","asyncRoutes","engine","projectRoot","isHMREnabled","hot","supportsStaticESM","experimentalImportSupport","transform","src","plugins","OLD_BABEL_ENV","process","env","BABEL_ENV","babelConfig","sourceType","ast","code","cloneInputAst","cwd","highlightCode","loadBabelConfig","babelrc","enableBabelRCLookup","caller","transformSync","assert","metadata","getCacheKey","crypto","createHash","forEach","part","update","digest","babelTransformer","module","exports"],"sources":["../src/babel-transformer.ts"],"sourcesContent":["/**\n * Copyright (c) 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 */\n// A fork of the upstream babel-transformer that uses Expo-specific babel defaults\n// and adds support for web and Node.js environments via `isServer` on the Babel caller.\nimport type { BabelTransformer, BabelTransformerArgs } from 'metro-babel-transformer';\nimport assert from 'node:assert';\nimport crypto from 'node:crypto';\nimport fs from 'node:fs';\n\nimport { TransformOptions } from './babel-core';\nimport { loadBabelConfig } from './loadBabelConfig';\nimport { transformSync } from './transformSync';\n\nconst cacheKeyParts = [\n fs.readFileSync(__filename),\n require('babel-preset-fbjs/package.json').version,\n];\n\nfunction isCustomTruthy(value: any): boolean {\n return value === true || value === 'true';\n}\n\nfunction memoize<T extends (...args: any[]) => any>(fn: T): T {\n const cache = new Map<string, ReturnType<T>>();\n return ((...args: any[]) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n }) as T;\n}\n\nconst memoizeWarning = memoize((message: string) => {\n console.warn(message);\n});\n\nfunction getBabelCaller({ filename, options }: Pick<BabelTransformerArgs, 'filename' | 'options'>) {\n const isNodeModule = filename.includes('node_modules');\n const isServer = options.customTransformOptions?.environment === 'node';\n\n const routerRoot =\n typeof options.customTransformOptions?.routerRoot === 'string'\n ? decodeURI(options.customTransformOptions.routerRoot)\n : undefined;\n\n if (routerRoot == null) {\n memoizeWarning(\n 'Missing transform.routerRoot option in Metro bundling request, falling back to `app` as routes directory.'\n );\n }\n\n return {\n name: 'metro',\n bundler: 'metro',\n platform: options.platform,\n // Empower the babel preset to know the env it's bundling for.\n // Metro automatically updates the cache to account for the custom transform options.\n isServer,\n\n // The base url to make requests from, used for hosting from non-standard locations.\n baseUrl:\n typeof options.customTransformOptions?.baseUrl === 'string'\n ? decodeURI(options.customTransformOptions.baseUrl)\n : '',\n\n // Ensure we always use a mostly-valid router root.\n routerRoot: routerRoot ?? 'app',\n\n isDev: options.dev,\n\n // This value indicates if the user has disabled the feature or not.\n // Other criteria may still cause the feature to be disabled, but all inputs used are\n // already considered in the cache key.\n preserveEnvVars: isCustomTruthy(options.customTransformOptions?.preserveEnvVars)\n ? true\n : undefined,\n asyncRoutes: isCustomTruthy(options.customTransformOptions?.asyncRoutes) ? true : undefined,\n // Pass the engine to babel so we can automatically transpile for the correct\n // target environment.\n engine: options.customTransformOptions?.engine,\n\n // Provide the project root for accurately reading the Expo config.\n projectRoot: options.projectRoot,\n\n isNodeModule,\n\n isHMREnabled: options.hot,\n\n // Set the standard Babel flag to disable ESM transformations.\n supportsStaticESM: options.experimentalImportSupport,\n };\n}\n\nconst transform: BabelTransformer['transform'] = ({\n filename,\n src,\n options,\n // `plugins` is used for `functionMapBabelPlugin` from `metro-source-map`. Could make sense to move this to `babel-preset-expo` too.\n plugins,\n}: BabelTransformerArgs): ReturnType<BabelTransformer['transform']> => {\n const OLD_BABEL_ENV = process.env.BABEL_ENV;\n process.env.BABEL_ENV = options.dev ? 'development' : process.env.BABEL_ENV || 'production';\n\n try {\n const babelConfig: TransformOptions = {\n // ES modules require sourceType='module' but OSS may not always want that\n sourceType: 'unambiguous',\n\n // The output we want from Babel methods\n ast: true,\n code: false,\n // NOTE(EvanBacon): We split the parse/transform steps up to accommodate\n // Hermes parsing, but this defaults to cloning the AST which increases\n // the transformation time by a fair amount.\n // You get this behavior by default when using Babel's `transform` method directly.\n cloneInputAst: false,\n\n // Options for debugging\n cwd: options.projectRoot,\n filename,\n highlightCode: true,\n\n // Load the project babel config file.\n ...loadBabelConfig(options),\n\n babelrc:\n typeof options.enableBabelRCLookup === 'boolean' ? options.enableBabelRCLookup : true,\n\n plugins,\n\n // NOTE(EvanBacon): We heavily leverage the caller functionality to mutate the babel config.\n // This compensates for the lack of a format plugin system in Metro. Users can modify the\n // all (most) of the transforms in their local Babel config.\n // This also helps us keep the transform layers small and focused on a single task. We can also use this to\n // ensure the Babel config caching is more accurate.\n // Additionally, by moving everything Babel-related to the Babel preset, it makes it easier for users to reason\n // about the requirements of an Expo project, making it easier to migrate to other transpilers in the future.\n caller: getBabelCaller({ filename, options }),\n };\n\n const result = transformSync(src, babelConfig, options);\n\n // The result from `transformFromAstSync` can be null (if the file is ignored)\n if (!result) {\n // BabelTransformer specifies that the `ast` can never be null but\n // the function returns here. Discovered when typing `BabelNode`.\n return { ast: null };\n }\n\n assert(result.ast);\n return { ast: result.ast, metadata: result.metadata };\n } finally {\n if (OLD_BABEL_ENV) {\n process.env.BABEL_ENV = OLD_BABEL_ENV;\n }\n }\n};\n\nfunction getCacheKey() {\n const key = crypto.createHash('md5');\n cacheKeyParts.forEach((part) => key.update(part));\n return key.digest('hex');\n}\n\nconst babelTransformer: BabelTransformer = {\n transform,\n getCacheKey,\n};\n\nmodule.exports = babelTransformer;\n"],"mappings":"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"}
@@ -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 // 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 // Hide node.js evaluation code\n 'node_modules/require-from-string/.+\\\\.js$',\n // Block expo's metro-runtime\n '@expo/metro-runtime/.+\\\\.ts',\n // Block upstream metro-runtime\n '/metro-runtime/.+\\\\.js$',\n\n // Block all whatwg polyfills\n 'node_modules/whatwg-.+\\\\.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,2CAA2C;AAC3C;AACA,6BAA6B;AAC7B;AACA,yBAAyB;AAEzB;AACA,8BAA8B,CAC/B,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"}
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 // Hide node.js evaluation code\n 'node_modules/require-from-string/.+\\\\.js$',\n // Block expo's metro-runtime\n '@expo/metro-runtime/.+\\\\.ts',\n // Block upstream metro-runtime\n '/metro-runtime/.+\\\\.js$',\n\n // Block all whatwg polyfills\n 'node_modules/whatwg-.+\\\\.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,2CAA2C;AAC3C;AACA,6BAA6B;AAC7B;AACA,yBAAyB;AAEzB;AACA,8BAA8B,CAC/B,CAACC,IAAI,CAAC,GAAG,CACZ,CAAC;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"}
package/build/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","names":["_getenv","data","require","Env","EXPO_DEBUG","boolish","EXPO_USE_EXOTIC","RCT_METRO_PORT","int","EXPO_USE_METRO_WORKSPACE_ROOT","EXPO_NO_CLIENT_ENV_VARS","env","exports"],"sources":["../src/env.ts"],"sourcesContent":["import { boolish, int } from 'getenv';\n\nclass Env {\n /** Enable debug logging */\n get EXPO_DEBUG() {\n return boolish('EXPO_DEBUG', false);\n }\n\n /** Enable the experimental \"exotic\" mode. [Learn more](https://blog.expo.dev/drastically-faster-bundling-in-react-native-a54f268e0ed1). */\n get EXPO_USE_EXOTIC() {\n return boolish('EXPO_USE_EXOTIC', false);\n }\n\n /** The React Metro port that's baked into react-native scripts and tools. */\n get RCT_METRO_PORT() {\n return int('RCT_METRO_PORT', 8081);\n }\n\n /** Enable auto server root detection for Metro. This will change the server root to the workspace root. */\n get EXPO_USE_METRO_WORKSPACE_ROOT(): boolean {\n return boolish('EXPO_USE_METRO_WORKSPACE_ROOT', false);\n }\n\n /** Disable Environment Variable injection in client bundles. */\n get EXPO_NO_CLIENT_ENV_VARS(): boolean {\n return boolish('EXPO_NO_CLIENT_ENV_VARS', false);\n }\n}\n\nexport const env = new Env();\n"],"mappings":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,MAAME,GAAG,CAAC;EACR;EACA,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAO,IAAAC,iBAAO,EAAC,YAAY,EAAE,KAAK,CAAC;EACrC;;EAEA;EACA,IAAIC,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAAD,iBAAO,EAAC,iBAAiB,EAAE,KAAK,CAAC;EAC1C;;EAEA;EACA,IAAIE,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAAC,aAAG,EAAC,gBAAgB,EAAE,IAAI,CAAC;EACpC;;EAEA;EACA,IAAIC,6BAA6BA,CAAA,EAAY;IAC3C,OAAO,IAAAJ,iBAAO,EAAC,+BAA+B,EAAE,KAAK,CAAC;EACxD;;EAEA;EACA,IAAIK,uBAAuBA,CAAA,EAAY;IACrC,OAAO,IAAAL,iBAAO,EAAC,yBAAyB,EAAE,KAAK,CAAC;EAClD;AACF;AAEO,MAAMM,GAAG,GAAG,IAAIR,GAAG,EAAE;AAACS,OAAA,CAAAD,GAAA,GAAAA,GAAA"}
1
+ {"version":3,"file":"env.js","names":["_getenv","data","require","Env","EXPO_DEBUG","boolish","EXPO_USE_EXOTIC","RCT_METRO_PORT","int","EXPO_USE_METRO_WORKSPACE_ROOT","EXPO_NO_CLIENT_ENV_VARS","env","exports"],"sources":["../src/env.ts"],"sourcesContent":["import { boolish, int } from 'getenv';\n\nclass Env {\n /** Enable debug logging */\n get EXPO_DEBUG() {\n return boolish('EXPO_DEBUG', false);\n }\n\n /** Enable the experimental \"exotic\" mode. [Learn more](https://blog.expo.dev/drastically-faster-bundling-in-react-native-a54f268e0ed1). */\n get EXPO_USE_EXOTIC() {\n return boolish('EXPO_USE_EXOTIC', false);\n }\n\n /** The React Metro port that's baked into react-native scripts and tools. */\n get RCT_METRO_PORT() {\n return int('RCT_METRO_PORT', 8081);\n }\n\n /** Enable auto server root detection for Metro. This will change the server root to the workspace root. */\n get EXPO_USE_METRO_WORKSPACE_ROOT(): boolean {\n return boolish('EXPO_USE_METRO_WORKSPACE_ROOT', false);\n }\n\n /** Disable Environment Variable injection in client bundles. */\n get EXPO_NO_CLIENT_ENV_VARS(): boolean {\n return boolish('EXPO_NO_CLIENT_ENV_VARS', false);\n }\n}\n\nexport const env = new Env();\n"],"mappings":";;;;;;AAAA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,MAAME,GAAG,CAAC;EACR;EACA,IAAIC,UAAUA,CAAA,EAAG;IACf,OAAO,IAAAC,iBAAO,EAAC,YAAY,EAAE,KAAK,CAAC;EACrC;;EAEA;EACA,IAAIC,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAAD,iBAAO,EAAC,iBAAiB,EAAE,KAAK,CAAC;EAC1C;;EAEA;EACA,IAAIE,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAAC,aAAG,EAAC,gBAAgB,EAAE,IAAI,CAAC;EACpC;;EAEA;EACA,IAAIC,6BAA6BA,CAAA,EAAY;IAC3C,OAAO,IAAAJ,iBAAO,EAAC,+BAA+B,EAAE,KAAK,CAAC;EACxD;;EAEA;EACA,IAAIK,uBAAuBA,CAAA,EAAY;IACrC,OAAO,IAAAL,iBAAO,EAAC,yBAAyB,EAAE,KAAK,CAAC;EAClD;AACF;AAEO,MAAMM,GAAG,GAAG,IAAIR,GAAG,CAAC,CAAC;AAACS,OAAA,CAAAD,GAAA,GAAAA,GAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getWatchFolders.js","names":["_assert","data","_interopRequireDefault","require","_fs","_glob","_path","_getModulesPaths","obj","__esModule","default","readJsonFile","filePath","file","fs","readFileSync","JSON","parse","isValidJsonFile","globAllPackageJsonPaths","workspaceProjectRoot","linkedPackages","map","glob","globSync","path","join","replace","cwd","absolute","ignore","pkgPath","flat","filter","Boolean","p","getWorkspacePackagesArray","workspaces","Array","isArray","assert","packages","resolveAllWorkspacePackageJsonPaths","rootPackageJsonFilePath","rootPackageJson","getWatchFolders","projectRoot","workspaceRoot","getWorkspaceRoot","resolve","length","uniqueItems","pkg","dirname","items","Set"],"sources":["../src/getWatchFolders.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport { sync as globSync } from 'glob';\nimport path from 'path';\n\nimport { getWorkspaceRoot } from './getModulesPaths';\n\nfunction readJsonFile(filePath: string) {\n // Read with fs\n const file = fs.readFileSync(filePath, 'utf8');\n // Parse with JSON.parse\n return JSON.parse(file);\n}\n\nfunction isValidJsonFile(filePath: string): boolean {\n try {\n // Throws if invalid or unable to read.\n readJsonFile(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * @param workspaceProjectRoot Root file path for the yarn workspace\n * @param linkedPackages List of folders that contain linked node modules, ex: `['packages/*', 'apps/*']`\n * @returns List of valid package.json file paths, ex: `['/Users/me/app/apps/my-app/package.json', '/Users/me/app/packages/my-package/package.json']`\n */\nexport function globAllPackageJsonPaths(\n workspaceProjectRoot: string,\n linkedPackages: string[]\n): string[] {\n return linkedPackages\n .map((glob) => {\n return globSync(path.join(glob, 'package.json').replace(/\\\\/g, '/'), {\n cwd: workspaceProjectRoot,\n absolute: true,\n ignore: ['**/@(Carthage|Pods|node_modules)/**'],\n }).map((pkgPath) => {\n return isValidJsonFile(pkgPath) ? pkgPath : null;\n });\n })\n .flat()\n .filter(Boolean)\n .map((p) => path.join(p as string));\n}\n\nfunction getWorkspacePackagesArray({ workspaces }: any): string[] {\n if (Array.isArray(workspaces)) {\n return workspaces;\n }\n\n assert(workspaces?.packages, 'Could not find a `workspaces` object in the root package.json');\n\n return workspaces.packages;\n}\n\n/**\n * @param workspaceProjectRoot root file path for a yarn workspace.\n * @returns list of package.json file paths that are linked to the yarn workspace.\n */\nexport function resolveAllWorkspacePackageJsonPaths(workspaceProjectRoot: string) {\n try {\n const rootPackageJsonFilePath = path.join(workspaceProjectRoot, 'package.json');\n // Could throw if package.json is invalid.\n const rootPackageJson = readJsonFile(rootPackageJsonFilePath);\n\n // Extract the \"packages\" array or use \"workspaces\" as packages array (yarn workspaces spec).\n const packages = getWorkspacePackagesArray(rootPackageJson);\n\n // Glob all package.json files and return valid paths.\n return globAllPackageJsonPaths(workspaceProjectRoot, packages);\n } catch {\n return [];\n }\n}\n\n/**\n * @param projectRoot file path to app's project root\n * @returns list of node module paths to watch in Metro bundler, ex: `['/Users/me/app/node_modules/', '/Users/me/app/apps/my-app/', '/Users/me/app/packages/my-package/']`\n */\nexport function getWatchFolders(projectRoot: string): string[] {\n const workspaceRoot = getWorkspaceRoot(path.resolve(projectRoot));\n // Rely on default behavior in standard projects.\n if (!workspaceRoot) {\n return [];\n }\n\n const packages = resolveAllWorkspacePackageJsonPaths(workspaceRoot);\n if (!packages.length) {\n return [];\n }\n\n return uniqueItems([\n path.join(workspaceRoot, 'node_modules'),\n ...packages.map((pkg) => path.dirname(pkg)),\n ]);\n}\n\nfunction uniqueItems(items: string[]): string[] {\n return [...new Set(items)];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"getWatchFolders.js","names":["_assert","data","_interopRequireDefault","require","_fs","_glob","_path","_getModulesPaths","obj","__esModule","default","readJsonFile","filePath","file","fs","readFileSync","JSON","parse","isValidJsonFile","globAllPackageJsonPaths","workspaceProjectRoot","linkedPackages","map","glob","globSync","path","join","replace","cwd","absolute","ignore","pkgPath","flat","filter","Boolean","p","getWorkspacePackagesArray","workspaces","Array","isArray","assert","packages","resolveAllWorkspacePackageJsonPaths","rootPackageJsonFilePath","rootPackageJson","getWatchFolders","projectRoot","workspaceRoot","getWorkspaceRoot","resolve","length","uniqueItems","pkg","dirname","items","Set"],"sources":["../src/getWatchFolders.ts"],"sourcesContent":["import assert from 'assert';\nimport fs from 'fs';\nimport { sync as globSync } from 'glob';\nimport path from 'path';\n\nimport { getWorkspaceRoot } from './getModulesPaths';\n\nfunction readJsonFile(filePath: string) {\n // Read with fs\n const file = fs.readFileSync(filePath, 'utf8');\n // Parse with JSON.parse\n return JSON.parse(file);\n}\n\nfunction isValidJsonFile(filePath: string): boolean {\n try {\n // Throws if invalid or unable to read.\n readJsonFile(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * @param workspaceProjectRoot Root file path for the yarn workspace\n * @param linkedPackages List of folders that contain linked node modules, ex: `['packages/*', 'apps/*']`\n * @returns List of valid package.json file paths, ex: `['/Users/me/app/apps/my-app/package.json', '/Users/me/app/packages/my-package/package.json']`\n */\nexport function globAllPackageJsonPaths(\n workspaceProjectRoot: string,\n linkedPackages: string[]\n): string[] {\n return linkedPackages\n .map((glob) => {\n return globSync(path.join(glob, 'package.json').replace(/\\\\/g, '/'), {\n cwd: workspaceProjectRoot,\n absolute: true,\n ignore: ['**/@(Carthage|Pods|node_modules)/**'],\n }).map((pkgPath) => {\n return isValidJsonFile(pkgPath) ? pkgPath : null;\n });\n })\n .flat()\n .filter(Boolean)\n .map((p) => path.join(p as string));\n}\n\nfunction getWorkspacePackagesArray({ workspaces }: any): string[] {\n if (Array.isArray(workspaces)) {\n return workspaces;\n }\n\n assert(workspaces?.packages, 'Could not find a `workspaces` object in the root package.json');\n\n return workspaces.packages;\n}\n\n/**\n * @param workspaceProjectRoot root file path for a yarn workspace.\n * @returns list of package.json file paths that are linked to the yarn workspace.\n */\nexport function resolveAllWorkspacePackageJsonPaths(workspaceProjectRoot: string) {\n try {\n const rootPackageJsonFilePath = path.join(workspaceProjectRoot, 'package.json');\n // Could throw if package.json is invalid.\n const rootPackageJson = readJsonFile(rootPackageJsonFilePath);\n\n // Extract the \"packages\" array or use \"workspaces\" as packages array (yarn workspaces spec).\n const packages = getWorkspacePackagesArray(rootPackageJson);\n\n // Glob all package.json files and return valid paths.\n return globAllPackageJsonPaths(workspaceProjectRoot, packages);\n } catch {\n return [];\n }\n}\n\n/**\n * @param projectRoot file path to app's project root\n * @returns list of node module paths to watch in Metro bundler, ex: `['/Users/me/app/node_modules/', '/Users/me/app/apps/my-app/', '/Users/me/app/packages/my-package/']`\n */\nexport function getWatchFolders(projectRoot: string): string[] {\n const workspaceRoot = getWorkspaceRoot(path.resolve(projectRoot));\n // Rely on default behavior in standard projects.\n if (!workspaceRoot) {\n return [];\n }\n\n const packages = resolveAllWorkspacePackageJsonPaths(workspaceRoot);\n if (!packages.length) {\n return [];\n }\n\n return uniqueItems([\n path.join(workspaceRoot, 'node_modules'),\n ...packages.map((pkg) => path.dirname(pkg)),\n ]);\n}\n\nfunction uniqueItems(items: string[]): string[] {\n return [...new Set(items)];\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadBabelConfig.js","names":["_nodeFs","data","_interopRequireDefault","require","_nodePath","obj","__esModule","default","loadBabelConfig","babelRC","_getBabelRC","projectRoot","possibleBabelRCPaths","foundBabelRCPath","find","configFileName","fs","existsSync","path","resolve","extends","presets","exports"],"sources":["../src/loadBabelConfig.ts"],"sourcesContent":["/**\n * Copyright (c) 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 fs from 'node:fs';\nimport path from 'node:path';\n\nimport { TransformOptions } from './babel-core';\n\n/**\n * Returns a memoized function that checks for the existence of a\n * project-level .babelrc file. If it doesn't exist, it reads the\n * default React Native babelrc file and uses that.\n */\nexport const loadBabelConfig = (function () {\n let babelRC: Pick<TransformOptions, 'extends' | 'presets'> | null = null;\n\n return function _getBabelRC({ projectRoot }: { projectRoot: string }) {\n if (babelRC !== null) {\n return babelRC;\n }\n\n babelRC = {};\n\n if (projectRoot) {\n // Check for various babel config files in the project root\n // TODO(EvanBacon): We might want to disable babelrc lookup when the user specifies `enableBabelRCLookup: false`.\n const possibleBabelRCPaths = ['.babelrc', '.babelrc.js', 'babel.config.js'];\n\n const foundBabelRCPath = possibleBabelRCPaths.find((configFileName) =>\n fs.existsSync(path.resolve(projectRoot, configFileName))\n );\n\n // Extend the config if a babel config file is found\n if (foundBabelRCPath) {\n babelRC.extends = path.resolve(projectRoot, foundBabelRCPath);\n }\n }\n\n // Use the default preset for react-native if no babel config file is found\n if (!babelRC.extends) {\n babelRC.presets = [require('babel-preset-expo')];\n }\n\n return babelRC;\n };\n})();\n"],"mappings":";;;;;;AAOA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6B,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAR7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACO,MAAMG,eAAe,GAAI,YAAY;EAC1C,IAAIC,OAA6D,GAAG,IAAI;EAExE,OAAO,SAASC,WAAWA,CAAC;IAAEC;EAAqC,CAAC,EAAE;IACpE,IAAIF,OAAO,KAAK,IAAI,EAAE;MACpB,OAAOA,OAAO;IAChB;IAEAA,OAAO,GAAG,CAAC,CAAC;IAEZ,IAAIE,WAAW,EAAE;MACf;MACA;MACA,MAAMC,oBAAoB,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,CAAC;MAE3E,MAAMC,gBAAgB,GAAGD,oBAAoB,CAACE,IAAI,CAAEC,cAAc,IAChEC,iBAAE,CAACC,UAAU,CAACC,mBAAI,CAACC,OAAO,CAACR,WAAW,EAAEI,cAAc,CAAC,CAAC,CACzD;;MAED;MACA,IAAIF,gBAAgB,EAAE;QACpBJ,OAAO,CAACW,OAAO,GAAGF,mBAAI,CAACC,OAAO,CAACR,WAAW,EAAEE,gBAAgB,CAAC;MAC/D;IACF;;IAEA;IACA,IAAI,CAACJ,OAAO,CAACW,OAAO,EAAE;MACpBX,OAAO,CAACY,OAAO,GAAG,CAAClB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClD;IAEA,OAAOM,OAAO;EAChB,CAAC;AACH,CAAC,EAAG;AAACa,OAAA,CAAAd,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"file":"loadBabelConfig.js","names":["_nodeFs","data","_interopRequireDefault","require","_nodePath","obj","__esModule","default","loadBabelConfig","babelRC","_getBabelRC","projectRoot","possibleBabelRCPaths","foundBabelRCPath","find","configFileName","fs","existsSync","path","resolve","extends","presets","exports"],"sources":["../src/loadBabelConfig.ts"],"sourcesContent":["/**\n * Copyright (c) 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 fs from 'node:fs';\nimport path from 'node:path';\n\nimport { TransformOptions } from './babel-core';\n\n/**\n * Returns a memoized function that checks for the existence of a\n * project-level .babelrc file. If it doesn't exist, it reads the\n * default React Native babelrc file and uses that.\n */\nexport const loadBabelConfig = (function () {\n let babelRC: Pick<TransformOptions, 'extends' | 'presets'> | null = null;\n\n return function _getBabelRC({ projectRoot }: { projectRoot: string }) {\n if (babelRC !== null) {\n return babelRC;\n }\n\n babelRC = {};\n\n if (projectRoot) {\n // Check for various babel config files in the project root\n // TODO(EvanBacon): We might want to disable babelrc lookup when the user specifies `enableBabelRCLookup: false`.\n const possibleBabelRCPaths = ['.babelrc', '.babelrc.js', 'babel.config.js'];\n\n const foundBabelRCPath = possibleBabelRCPaths.find((configFileName) =>\n fs.existsSync(path.resolve(projectRoot, configFileName))\n );\n\n // Extend the config if a babel config file is found\n if (foundBabelRCPath) {\n babelRC.extends = path.resolve(projectRoot, foundBabelRCPath);\n }\n }\n\n // Use the default preset for react-native if no babel config file is found\n if (!babelRC.extends) {\n babelRC.presets = [require('babel-preset-expo')];\n }\n\n return babelRC;\n };\n})();\n"],"mappings":";;;;;;AAOA,SAAAA,QAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,OAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA6B,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAR7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA;AACA;AACA;AACA;AACA;AACO,MAAMG,eAAe,GAAI,YAAY;EAC1C,IAAIC,OAA6D,GAAG,IAAI;EAExE,OAAO,SAASC,WAAWA,CAAC;IAAEC;EAAqC,CAAC,EAAE;IACpE,IAAIF,OAAO,KAAK,IAAI,EAAE;MACpB,OAAOA,OAAO;IAChB;IAEAA,OAAO,GAAG,CAAC,CAAC;IAEZ,IAAIE,WAAW,EAAE;MACf;MACA;MACA,MAAMC,oBAAoB,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,CAAC;MAE3E,MAAMC,gBAAgB,GAAGD,oBAAoB,CAACE,IAAI,CAAEC,cAAc,IAChEC,iBAAE,CAACC,UAAU,CAACC,mBAAI,CAACC,OAAO,CAACR,WAAW,EAAEI,cAAc,CAAC,CACzD,CAAC;;MAED;MACA,IAAIF,gBAAgB,EAAE;QACpBJ,OAAO,CAACW,OAAO,GAAGF,mBAAI,CAACC,OAAO,CAACR,WAAW,EAAEE,gBAAgB,CAAC;MAC/D;IACF;;IAEA;IACA,IAAI,CAACJ,OAAO,CAACW,OAAO,EAAE;MACpBX,OAAO,CAACY,OAAO,GAAG,CAAClB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAClD;IAEA,OAAOM,OAAO;EAChB,CAAC;AACH,CAAC,CAAE,CAAC;AAACa,OAAA,CAAAd,eAAA,GAAAA,eAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"rewriteRequestUrl.js","names":["_config","data","require","_paths","_chalk","_interopRequireDefault","_fs","_path","_getModulesPaths","obj","__esModule","default","debug","directoryExistsSync","file","_fs$statSync$isDirect","_fs$statSync","fs","statSync","isDirectory","isEnableHermesManaged","expoConfig","platform","_expoConfig$android$j","_expoConfig$android","android","jsEngine","_expoConfig$ios$jsEng","_expoConfig$ios","ios","getRouterDirectoryModuleIdWithManifest","projectRoot","exp","_exp$extra$router$roo","_exp$extra","_exp$extra$router","extra","router","root","getRouterDirectory","path","join","getRewriteRequestUrl","rewriteExpoRequestUrl","url","includes","_searchParams$get","pkg","getConfig","skipSDKVersionRequirement","ensured","startsWith","URL","searchParams","get","entry","resolveEntryPoint","Error","chalk","has","set","isHermesEnabled","serverRoot","getServerRoot","relativeEntry","relative","replace","toString","pathname","outputUrl"],"sources":["../src/rewriteRequestUrl.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { ExpoConfig, getConfig } from '@expo/config';\nimport { resolveEntryPoint } from '@expo/config/paths';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { getServerRoot } from './getModulesPaths';\n\nconst debug = require('debug')('expo:metro:config:rewriteRequestUrl');\n\nfunction directoryExistsSync(file: string): boolean {\n try {\n return fs.statSync(file)?.isDirectory() ?? false;\n } catch {\n return false;\n }\n}\n\nfunction isEnableHermesManaged(\n expoConfig: Partial<Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>>,\n platform: string\n): boolean {\n switch (platform) {\n case 'android': {\n return (expoConfig.android?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n case 'ios': {\n return (expoConfig.ios?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n default:\n return false;\n }\n}\n\nfunction getRouterDirectoryModuleIdWithManifest(projectRoot: string, exp: ExpoConfig): string {\n return exp.extra?.router?.root ?? getRouterDirectory(projectRoot);\n}\n\nexport function getRouterDirectory(projectRoot: string): string {\n // more specific directories first\n if (directoryExistsSync(path.join(projectRoot, 'src/app'))) {\n debug('Using src/app as the root directory for Expo Router.');\n return 'src/app';\n }\n\n debug('Using app as the root directory for Expo Router.');\n return 'app';\n}\n\nexport function getRewriteRequestUrl(projectRoot: string) {\n function rewriteExpoRequestUrl(url: string): string {\n // Like: `/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n // Sometimes a fully qualified URL is passed in, e.g. `http://localhost:19001/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n if (url.includes('/.expo/.virtual-metro-entry.bundle?')) {\n const { pkg, exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n const ensured = url.startsWith('/') ? new URL(url, 'https://acme.dev') : new URL(url);\n // TODO: Maybe this function could be memoized in some capacity?\n const { searchParams } = ensured;\n\n const platform = searchParams.get('platform') ?? 'web';\n\n debug('Rewriting magic request url to entry point', { url, platform });\n\n const entry = resolveEntryPoint(projectRoot, {\n platform,\n pkg,\n });\n\n if (!entry) {\n throw new Error(\n chalk`The project entry file could not be resolved (platform: ${platform}, root: ${projectRoot}). Define it in the {bold package.json} \"main\" field.`\n );\n }\n\n // Infer the missing transform properties to attempt to match the manifest request.\n // NOTE: Keep in sync with metroOptions.ts\n if (!ensured.searchParams.has('transform.routerRoot')) {\n ensured.searchParams.set(\n 'transform.routerRoot',\n getRouterDirectoryModuleIdWithManifest(projectRoot, exp)\n );\n }\n\n if (!ensured.searchParams.has('transform.engine')) {\n const isHermesEnabled = isEnableHermesManaged(exp, platform);\n if (isHermesEnabled) {\n debug('Enabling Hermes for managed project');\n ensured.searchParams.set('transform.engine', 'hermes');\n }\n }\n\n const serverRoot = getServerRoot(projectRoot);\n const relativeEntry = path.relative(serverRoot, entry).replace(/\\.[tj]sx?$/, '');\n debug('Resolved entry point', { entry, relativeEntry, serverRoot });\n\n // Only return the pathname when url is relative\n if (url.startsWith('/')) {\n // Like: `/index.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n return '/' + relativeEntry + '.bundle?' + searchParams.toString();\n }\n\n // Modify the pathname within the URL and return the full URL\n ensured.pathname = '/' + relativeEntry + '.bundle';\n\n const outputUrl = ensured.toString();\n debug('Redirected:', outputUrl);\n // Like: `http://localhost:19001/index.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n return outputUrl;\n }\n\n return url;\n }\n return rewriteExpoRequestUrl;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rewriteRequestUrl.js","names":["_config","data","require","_paths","_chalk","_interopRequireDefault","_fs","_path","_getModulesPaths","obj","__esModule","default","debug","directoryExistsSync","file","_fs$statSync$isDirect","_fs$statSync","fs","statSync","isDirectory","isEnableHermesManaged","expoConfig","platform","_expoConfig$android$j","_expoConfig$android","android","jsEngine","_expoConfig$ios$jsEng","_expoConfig$ios","ios","getRouterDirectoryModuleIdWithManifest","projectRoot","exp","_exp$extra$router$roo","_exp$extra","_exp$extra$router","extra","router","root","getRouterDirectory","path","join","getRewriteRequestUrl","rewriteExpoRequestUrl","url","includes","_searchParams$get","pkg","getConfig","skipSDKVersionRequirement","ensured","startsWith","URL","searchParams","get","entry","resolveEntryPoint","Error","chalk","has","set","isHermesEnabled","serverRoot","getServerRoot","relativeEntry","relative","replace","toString","pathname","outputUrl"],"sources":["../src/rewriteRequestUrl.ts"],"sourcesContent":["// Copyright 2023-present 650 Industries (Expo). All rights reserved.\nimport { ExpoConfig, getConfig } from '@expo/config';\nimport { resolveEntryPoint } from '@expo/config/paths';\nimport chalk from 'chalk';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { getServerRoot } from './getModulesPaths';\n\nconst debug = require('debug')('expo:metro:config:rewriteRequestUrl');\n\nfunction directoryExistsSync(file: string): boolean {\n try {\n return fs.statSync(file)?.isDirectory() ?? false;\n } catch {\n return false;\n }\n}\n\nfunction isEnableHermesManaged(\n expoConfig: Partial<Pick<ExpoConfig, 'ios' | 'android' | 'jsEngine'>>,\n platform: string\n): boolean {\n switch (platform) {\n case 'android': {\n return (expoConfig.android?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n case 'ios': {\n return (expoConfig.ios?.jsEngine ?? expoConfig.jsEngine) !== 'jsc';\n }\n default:\n return false;\n }\n}\n\nfunction getRouterDirectoryModuleIdWithManifest(projectRoot: string, exp: ExpoConfig): string {\n return exp.extra?.router?.root ?? getRouterDirectory(projectRoot);\n}\n\nexport function getRouterDirectory(projectRoot: string): string {\n // more specific directories first\n if (directoryExistsSync(path.join(projectRoot, 'src/app'))) {\n debug('Using src/app as the root directory for Expo Router.');\n return 'src/app';\n }\n\n debug('Using app as the root directory for Expo Router.');\n return 'app';\n}\n\nexport function getRewriteRequestUrl(projectRoot: string) {\n function rewriteExpoRequestUrl(url: string): string {\n // Like: `/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n // Sometimes a fully qualified URL is passed in, e.g. `http://localhost:19001/.expo/.virtual-metro-entry.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n if (url.includes('/.expo/.virtual-metro-entry.bundle?')) {\n const { pkg, exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true });\n const ensured = url.startsWith('/') ? new URL(url, 'https://acme.dev') : new URL(url);\n // TODO: Maybe this function could be memoized in some capacity?\n const { searchParams } = ensured;\n\n const platform = searchParams.get('platform') ?? 'web';\n\n debug('Rewriting magic request url to entry point', { url, platform });\n\n const entry = resolveEntryPoint(projectRoot, {\n platform,\n pkg,\n });\n\n if (!entry) {\n throw new Error(\n chalk`The project entry file could not be resolved (platform: ${platform}, root: ${projectRoot}). Define it in the {bold package.json} \"main\" field.`\n );\n }\n\n // Infer the missing transform properties to attempt to match the manifest request.\n // NOTE: Keep in sync with metroOptions.ts\n if (!ensured.searchParams.has('transform.routerRoot')) {\n ensured.searchParams.set(\n 'transform.routerRoot',\n getRouterDirectoryModuleIdWithManifest(projectRoot, exp)\n );\n }\n\n if (!ensured.searchParams.has('transform.engine')) {\n const isHermesEnabled = isEnableHermesManaged(exp, platform);\n if (isHermesEnabled) {\n debug('Enabling Hermes for managed project');\n ensured.searchParams.set('transform.engine', 'hermes');\n }\n }\n\n const serverRoot = getServerRoot(projectRoot);\n const relativeEntry = path.relative(serverRoot, entry).replace(/\\.[tj]sx?$/, '');\n debug('Resolved entry point', { entry, relativeEntry, serverRoot });\n\n // Only return the pathname when url is relative\n if (url.startsWith('/')) {\n // Like: `/index.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n return '/' + relativeEntry + '.bundle?' + searchParams.toString();\n }\n\n // Modify the pathname within the URL and return the full URL\n ensured.pathname = '/' + relativeEntry + '.bundle';\n\n const outputUrl = ensured.toString();\n debug('Redirected:', outputUrl);\n // Like: `http://localhost:19001/index.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=com.bacon.test-custom-entry`\n return outputUrl;\n }\n\n return url;\n }\n return rewriteExpoRequestUrl;\n}\n"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright © 2023 650 Industries.
3
+ * Copyright (c) 2022, Sentry.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ /**
9
+ * Deterministically hashes a string and turns the hash into a uuid.
10
+ * https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/58271f1af2ade6b3e64d393d70376ae53bc5bd2f/packages/bundler-plugin-core/src/utils.ts#L174
11
+ */
12
+ export declare function stringToUUID(str: string): string;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.stringToUUID = stringToUUID;
7
+ function _nodeCrypto() {
8
+ const data = _interopRequireDefault(require("node:crypto"));
9
+ _nodeCrypto = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ /**
16
+ * Copyright © 2023 650 Industries.
17
+ * Copyright (c) 2022, Sentry.
18
+ *
19
+ * This source code is licensed under the MIT license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
22
+
23
+ /**
24
+ * Deterministically hashes a string and turns the hash into a uuid.
25
+ * https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/58271f1af2ade6b3e64d393d70376ae53bc5bd2f/packages/bundler-plugin-core/src/utils.ts#L174
26
+ */
27
+ function stringToUUID(str) {
28
+ const md5sum = _nodeCrypto().default.createHash('md5');
29
+ md5sum.update(str);
30
+ const md5Hash = md5sum.digest('hex');
31
+
32
+ // Position 16 is fixed to either 8, 9, a, or b in the uuid v4 spec (10xx in binary)
33
+ // RFC 4122 section 4.4
34
+ const v4variant = ['8', '9', 'a', 'b'][md5Hash.substring(16, 17).charCodeAt(0) % 4];
35
+ return (md5Hash.substring(0, 8) + '-' + md5Hash.substring(8, 12) + '-4' + md5Hash.substring(13, 16) + '-' + v4variant + md5Hash.substring(17, 20) + '-' + md5Hash.substring(20)).toLowerCase();
36
+ }
37
+ //# sourceMappingURL=debugId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugId.js","names":["_nodeCrypto","data","_interopRequireDefault","require","obj","__esModule","default","stringToUUID","str","md5sum","crypto","createHash","update","md5Hash","digest","v4variant","substring","charCodeAt","toLowerCase"],"sources":["../../src/serializer/debugId.ts"],"sourcesContent":["import crypto from 'node:crypto';\n\n/**\n * Copyright © 2023 650 Industries.\n * Copyright (c) 2022, Sentry.\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 */\n\n/**\n * Deterministically hashes a string and turns the hash into a uuid.\n * https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/58271f1af2ade6b3e64d393d70376ae53bc5bd2f/packages/bundler-plugin-core/src/utils.ts#L174\n */\nexport function stringToUUID(str: string): string {\n const md5sum = crypto.createHash('md5');\n md5sum.update(str);\n const md5Hash = md5sum.digest('hex');\n\n // Position 16 is fixed to either 8, 9, a, or b in the uuid v4 spec (10xx in binary)\n // RFC 4122 section 4.4\n const v4variant = ['8', '9', 'a', 'b'][md5Hash.substring(16, 17).charCodeAt(0) % 4] as string;\n\n return (\n md5Hash.substring(0, 8) +\n '-' +\n md5Hash.substring(8, 12) +\n '-4' +\n md5Hash.substring(13, 16) +\n '-' +\n v4variant +\n md5Hash.substring(17, 20) +\n '-' +\n md5Hash.substring(20)\n ).toLowerCase();\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAiC,SAAAC,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACO,SAASG,YAAYA,CAACC,GAAW,EAAU;EAChD,MAAMC,MAAM,GAAGC,qBAAM,CAACC,UAAU,CAAC,KAAK,CAAC;EACvCF,MAAM,CAACG,MAAM,CAACJ,GAAG,CAAC;EAClB,MAAMK,OAAO,GAAGJ,MAAM,CAACK,MAAM,CAAC,KAAK,CAAC;;EAEpC;EACA;EACA,MAAMC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAACF,OAAO,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAACC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAW;EAE7F,OAAO,CACLJ,OAAO,CAACG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GACvB,GAAG,GACHH,OAAO,CAACG,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GACxB,IAAI,GACJH,OAAO,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,GACzB,GAAG,GACHD,SAAS,GACTF,OAAO,CAACG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,GACzB,GAAG,GACHH,OAAO,CAACG,SAAS,CAAC,EAAE,CAAC,EACrBE,WAAW,CAAC,CAAC;AACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"environmentVariableSerializerPlugin.js","names":["_CountingSet","data","_interopRequireDefault","require","_countLines","obj","__esModule","default","debug","getTransformEnvironment","url","match","getAllExpoPublicEnvVars","env","key","process","startsWith","isServerEnvironment","graph","options","transformOptions","customTransformOptions","sourceUrl","environment","serverPreludeSerializerPlugin","entryPoint","preModules","prelude","find","module","path","output","code","replace","environmentVariableSerializerPlugin","dev","str","Object","keys","map","JSON","stringify","join","firstModule","restModules","getEnvPrelude","contents","name","lineCount","countLines","dependencies","Map","getSource","Buffer","from","inverseDependencies","CountingSet","type"],"sources":["../../src/serializer/environmentVariableSerializerPlugin.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 { ReadOnlyGraph, MixedOutput, Module, SerializerOptions } from 'metro';\nimport CountingSet from 'metro/src/lib/CountingSet';\nimport countLines from 'metro/src/lib/countLines';\n\nimport { SerializerParameters } from './withExpoSerializers';\n\nconst debug = require('debug')('expo:metro-config:serializer:env-var') as typeof console.log;\n\nexport function getTransformEnvironment(url: string): string | null {\n const match = url.match(/[&?]transform\\.environment=([^&]+)/);\n return match ? match[1] : null;\n}\n\nfunction getAllExpoPublicEnvVars() {\n // Create an object containing all environment variables that start with EXPO_PUBLIC_\n const env = {};\n for (const key in process.env) {\n if (key.startsWith('EXPO_PUBLIC_')) {\n // @ts-ignore\n env[key] = process.env[key];\n }\n }\n return env;\n}\n\nfunction isServerEnvironment(graph: ReadOnlyGraph, options: SerializerOptions): boolean {\n // Requests from a dev server will use sourceUrl.\n if (!graph.transformOptions.customTransformOptions) {\n if (options.sourceUrl) {\n const env = getTransformEnvironment(options.sourceUrl);\n return env === 'node';\n }\n return false;\n }\n\n // Other requests will use customTransformOptions.environment.\n return graph.transformOptions.customTransformOptions.environment === 'node';\n}\n\n/** Strips the process.env polyfill in server environments to allow for accessing environment variables off the global. */\nexport function serverPreludeSerializerPlugin(\n entryPoint: string,\n preModules: readonly Module<MixedOutput>[],\n graph: ReadOnlyGraph,\n options: SerializerOptions\n): SerializerParameters {\n if (isServerEnvironment(graph, options)) {\n const prelude = preModules.find((module) => module.path === '__prelude__');\n if (prelude) {\n debug('Stripping environment variable polyfill in server environment.');\n prelude.output[0].data.code = prelude.output[0].data.code\n .replace(/process=this\\.process\\|\\|{},/, '')\n .replace(\n /process\\.env=process\\.env\\|\\|{};process\\.env\\.NODE_ENV=process\\.env\\.NODE_ENV\\|\\|\"\\w+\";/,\n ''\n );\n }\n }\n return [entryPoint, preModules, graph, options];\n}\n\nexport function environmentVariableSerializerPlugin(\n entryPoint: string,\n preModules: readonly Module<MixedOutput>[],\n graph: ReadOnlyGraph,\n options: SerializerOptions\n): SerializerParameters {\n // Skip replacement in Node.js environments.\n if (isServerEnvironment(graph, options)) {\n debug('Skipping environment variable inlining in Node.js environment.');\n return [entryPoint, preModules, graph, options];\n }\n\n // In development, we need to add the process.env object to ensure it\n // persists between Fast Refresh updates.\n if (!options.dev) {\n debug(\n 'Skipping environment variable inlining in production environment in favor of babel-preset-expo inlining with source maps.'\n );\n return [entryPoint, preModules, graph, options];\n }\n\n // Set the process.env object to the current environment variables object\n // ensuring they aren't iterable, settable, or enumerable.\n const str = `process.env=Object.defineProperties(process.env, {${Object.keys(\n getAllExpoPublicEnvVars()\n )\n .map((key) => `${JSON.stringify(key)}: { value: ${JSON.stringify(process.env[key])} }`)\n .join(',')}});`;\n\n const [firstModule, ...restModules] = preModules;\n // const envCode = `var process=this.process||{};${str}`;\n // process.env\n return [\n entryPoint,\n [\n // First module defines the process.env object.\n firstModule,\n // Second module modifies the process.env object.\n getEnvPrelude(str),\n // Now we add the rest\n ...restModules,\n ],\n graph,\n options,\n ];\n}\n\nfunction getEnvPrelude(contents: string): Module<MixedOutput> {\n const code = '// HMR env vars from Expo CLI (dev-only)\\n' + contents;\n const name = '__env__';\n const lineCount = countLines(code);\n\n return {\n dependencies: new Map(),\n getSource: (): Buffer => Buffer.from(code),\n inverseDependencies: new CountingSet(),\n path: name,\n output: [\n {\n type: 'js/script/virtual',\n data: {\n code,\n // @ts-expect-error: typed incorrectly upstream\n lineCount,\n map: [],\n },\n },\n ],\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"environmentVariableSerializerPlugin.js","names":["_CountingSet","data","_interopRequireDefault","require","_countLines","obj","__esModule","default","debug","getTransformEnvironment","url","match","getAllExpoPublicEnvVars","env","key","process","startsWith","isServerEnvironment","graph","options","transformOptions","customTransformOptions","sourceUrl","environment","serverPreludeSerializerPlugin","entryPoint","preModules","prelude","find","module","path","output","code","replace","environmentVariableSerializerPlugin","dev","str","Object","keys","map","JSON","stringify","join","firstModule","restModules","getEnvPrelude","contents","name","lineCount","countLines","dependencies","Map","getSource","Buffer","from","inverseDependencies","CountingSet","type"],"sources":["../../src/serializer/environmentVariableSerializerPlugin.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 { ReadOnlyGraph, MixedOutput, Module, SerializerOptions } from 'metro';\nimport CountingSet from 'metro/src/lib/CountingSet';\nimport countLines from 'metro/src/lib/countLines';\n\nimport { SerializerParameters } from './withExpoSerializers';\n\nconst debug = require('debug')('expo:metro-config:serializer:env-var') as typeof console.log;\n\nexport function getTransformEnvironment(url: string): string | null {\n const match = url.match(/[&?]transform\\.environment=([^&]+)/);\n return match ? match[1] : null;\n}\n\nfunction getAllExpoPublicEnvVars() {\n // Create an object containing all environment variables that start with EXPO_PUBLIC_\n const env = {};\n for (const key in process.env) {\n if (key.startsWith('EXPO_PUBLIC_')) {\n // @ts-ignore\n env[key] = process.env[key];\n }\n }\n return env;\n}\n\nfunction isServerEnvironment(graph: ReadOnlyGraph, options: SerializerOptions): boolean {\n // Requests from a dev server will use sourceUrl.\n if (!graph.transformOptions.customTransformOptions) {\n if (options.sourceUrl) {\n const env = getTransformEnvironment(options.sourceUrl);\n return env === 'node';\n }\n return false;\n }\n\n // Other requests will use customTransformOptions.environment.\n return graph.transformOptions.customTransformOptions.environment === 'node';\n}\n\n/** Strips the process.env polyfill in server environments to allow for accessing environment variables off the global. */\nexport function serverPreludeSerializerPlugin(\n entryPoint: string,\n preModules: readonly Module<MixedOutput>[],\n graph: ReadOnlyGraph,\n options: SerializerOptions\n): SerializerParameters {\n if (isServerEnvironment(graph, options)) {\n const prelude = preModules.find((module) => module.path === '__prelude__');\n if (prelude) {\n debug('Stripping environment variable polyfill in server environment.');\n prelude.output[0].data.code = prelude.output[0].data.code\n .replace(/process=this\\.process\\|\\|{},/, '')\n .replace(\n /process\\.env=process\\.env\\|\\|{};process\\.env\\.NODE_ENV=process\\.env\\.NODE_ENV\\|\\|\"\\w+\";/,\n ''\n );\n }\n }\n return [entryPoint, preModules, graph, options];\n}\n\nexport function environmentVariableSerializerPlugin(\n entryPoint: string,\n preModules: readonly Module<MixedOutput>[],\n graph: ReadOnlyGraph,\n options: SerializerOptions\n): SerializerParameters {\n // Skip replacement in Node.js environments.\n if (isServerEnvironment(graph, options)) {\n debug('Skipping environment variable inlining in Node.js environment.');\n return [entryPoint, preModules, graph, options];\n }\n\n // In development, we need to add the process.env object to ensure it\n // persists between Fast Refresh updates.\n if (!options.dev) {\n debug(\n 'Skipping environment variable inlining in production environment in favor of babel-preset-expo inlining with source maps.'\n );\n return [entryPoint, preModules, graph, options];\n }\n\n // Set the process.env object to the current environment variables object\n // ensuring they aren't iterable, settable, or enumerable.\n const str = `process.env=Object.defineProperties(process.env, {${Object.keys(\n getAllExpoPublicEnvVars()\n )\n .map((key) => `${JSON.stringify(key)}: { value: ${JSON.stringify(process.env[key])} }`)\n .join(',')}});`;\n\n const [firstModule, ...restModules] = preModules;\n // const envCode = `var process=this.process||{};${str}`;\n // process.env\n return [\n entryPoint,\n [\n // First module defines the process.env object.\n firstModule,\n // Second module modifies the process.env object.\n getEnvPrelude(str),\n // Now we add the rest\n ...restModules,\n ],\n graph,\n options,\n ];\n}\n\nfunction getEnvPrelude(contents: string): Module<MixedOutput> {\n const code = '// HMR env vars from Expo CLI (dev-only)\\n' + contents;\n const name = '__env__';\n const lineCount = countLines(code);\n\n return {\n dependencies: new Map(),\n getSource: (): Buffer => Buffer.from(code),\n inverseDependencies: new CountingSet(),\n path: name,\n output: [\n {\n type: 'js/script/virtual',\n data: {\n code,\n // @ts-expect-error: typed incorrectly upstream\n lineCount,\n map: [],\n },\n },\n ],\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exportHermes.js","names":["_spawnAsync","data","_interopRequireDefault","require","_chalk","_fsExtra","_metroSourceMap","_os","_path","_process","obj","__esModule","default","debug","importHermesCommandFromProject","platformExecutable","getHermesCommandPlatform","hermescLocations","process","env","location","resolve","Error","os","platform","currentHermesBuild","buildHermesBundleAsync","options","directlyBuildHermesBundleAsync","code","map","minify","filename","tempDir","path","join","tmpdir","Math","random","Date","now","fs","ensureDir","tempBundleFile","writeFile","tempSourcemapFile","tempHbcFile","hermesCommand","args","push","spawnAsync","hbc","sourcemap","readFile","Promise","all","createHermesSourcemapAsync","error","console","chalk","red","output","remove","hermesMapFile","bundlerSourcemap","JSON","parse","hermesSourcemap","readJSON","stringify","composeSourceMaps"],"sources":["../../src/serializer/exportHermes.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\nimport { composeSourceMaps } from 'metro-source-map';\nimport os from 'os';\nimport path from 'path';\nimport process from 'process';\n\nconst debug = require('debug')('expo:metro:hermes') as typeof console.log;\n\nfunction importHermesCommandFromProject(): string {\n const platformExecutable = getHermesCommandPlatform();\n const hermescLocations = [\n // Override hermesc dir by environment variables\n process.env['REACT_NATIVE_OVERRIDE_HERMES_DIR']\n ? `${process.env['REACT_NATIVE_OVERRIDE_HERMES_DIR']}/build/bin/hermesc`\n : '',\n\n // Building hermes from source\n 'react-native/ReactAndroid/hermes-engine/build/hermes/bin/hermesc',\n\n // Prebuilt hermesc in official react-native 0.69+\n `react-native/sdks/hermesc/${platformExecutable}`,\n\n // Legacy hermes-engine package\n `hermes-engine/${platformExecutable}`,\n ];\n\n for (const location of hermescLocations) {\n try {\n return require.resolve(location);\n } catch {}\n }\n throw new Error('Cannot find the hermesc executable.');\n}\n\nfunction getHermesCommandPlatform(): string {\n switch (os.platform()) {\n case 'darwin':\n return 'osx-bin/hermesc';\n case 'linux':\n return 'linux64-bin/hermesc';\n case 'win32':\n return 'win64-bin/hermesc.exe';\n default:\n throw new Error(`Unsupported host platform for Hermes compiler: ${os.platform()}`);\n }\n}\n\ninterface HermesBundleOutput {\n hbc: Uint8Array;\n sourcemap: string | null;\n}\n\ntype BuildHermesOptions = {\n filename: string;\n code: string;\n map: string | null;\n minify?: boolean;\n};\n\n// Only one hermes build at a time is supported.\nlet currentHermesBuild: Promise<HermesBundleOutput> | null = null;\n\nexport async function buildHermesBundleAsync(\n options: BuildHermesOptions\n): Promise<HermesBundleOutput> {\n if (currentHermesBuild) {\n debug(`Waiting for existing Hermes builds to finish`);\n await currentHermesBuild;\n }\n currentHermesBuild = directlyBuildHermesBundleAsync(options);\n return await currentHermesBuild;\n}\n\nasync function directlyBuildHermesBundleAsync({\n code,\n map,\n minify = false,\n filename,\n}: BuildHermesOptions): Promise<HermesBundleOutput> {\n const tempDir = path.join(os.tmpdir(), `expo-bundler-${Math.random()}-${Date.now()}`);\n await fs.ensureDir(tempDir);\n try {\n const tempBundleFile = path.join(tempDir, 'index.js');\n await fs.writeFile(tempBundleFile, code);\n\n if (map) {\n const tempSourcemapFile = path.join(tempDir, 'index.js.map');\n await fs.writeFile(tempSourcemapFile, map);\n }\n\n const tempHbcFile = path.join(tempDir, 'index.hbc');\n const hermesCommand = importHermesCommandFromProject();\n const args = ['-emit-binary', '-out', tempHbcFile, tempBundleFile];\n if (minify) {\n args.push('-O');\n }\n if (map) {\n args.push('-output-source-map');\n }\n\n debug(`Running hermesc: ${hermesCommand} ${args.join(' ')}`);\n await spawnAsync(hermesCommand, args);\n\n let hbc: Buffer;\n let sourcemap: string | null = null;\n\n if (!map) {\n hbc = await fs.readFile(tempHbcFile);\n } else {\n [hbc, sourcemap] = await Promise.all([\n fs.readFile(tempHbcFile),\n createHermesSourcemapAsync(map, `${tempHbcFile}.map`),\n ]);\n }\n return {\n hbc,\n sourcemap,\n };\n } catch (error: any) {\n console.error(chalk.red(`\\nFailed to generate Hermes bytecode for: ${filename}`));\n if ('status' in error) {\n console.error(error.output.join('\\n'));\n }\n throw error;\n } finally {\n await fs.remove(tempDir);\n }\n}\n\nasync function createHermesSourcemapAsync(\n sourcemap: string,\n hermesMapFile: string\n): Promise<string> {\n const bundlerSourcemap = JSON.parse(sourcemap);\n const hermesSourcemap = await fs.readJSON(hermesMapFile);\n return JSON.stringify(composeSourceMaps([bundlerSourcemap, hermesSourcemap]));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"exportHermes.js","names":["_spawnAsync","data","_interopRequireDefault","require","_chalk","_fsExtra","_metroSourceMap","_os","_path","_process","obj","__esModule","default","debug","importHermesCommandFromProject","platformExecutable","getHermesCommandPlatform","hermescLocations","process","env","location","resolve","Error","os","platform","currentHermesBuild","buildHermesBundleAsync","options","directlyBuildHermesBundleAsync","code","map","minify","filename","tempDir","path","join","tmpdir","Math","random","Date","now","fs","ensureDir","tempBundleFile","writeFile","tempSourcemapFile","tempHbcFile","hermesCommand","args","push","spawnAsync","hbc","sourcemap","readFile","Promise","all","createHermesSourcemapAsync","error","console","chalk","red","output","remove","hermesMapFile","bundlerSourcemap","JSON","parse","hermesSourcemap","readJSON","stringify","composeSourceMaps"],"sources":["../../src/serializer/exportHermes.ts"],"sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\nimport { composeSourceMaps } from 'metro-source-map';\nimport os from 'os';\nimport path from 'path';\nimport process from 'process';\n\nconst debug = require('debug')('expo:metro:hermes') as typeof console.log;\n\nfunction importHermesCommandFromProject(): string {\n const platformExecutable = getHermesCommandPlatform();\n const hermescLocations = [\n // Override hermesc dir by environment variables\n process.env['REACT_NATIVE_OVERRIDE_HERMES_DIR']\n ? `${process.env['REACT_NATIVE_OVERRIDE_HERMES_DIR']}/build/bin/hermesc`\n : '',\n\n // Building hermes from source\n 'react-native/ReactAndroid/hermes-engine/build/hermes/bin/hermesc',\n\n // Prebuilt hermesc in official react-native 0.69+\n `react-native/sdks/hermesc/${platformExecutable}`,\n\n // Legacy hermes-engine package\n `hermes-engine/${platformExecutable}`,\n ];\n\n for (const location of hermescLocations) {\n try {\n return require.resolve(location);\n } catch {}\n }\n throw new Error('Cannot find the hermesc executable.');\n}\n\nfunction getHermesCommandPlatform(): string {\n switch (os.platform()) {\n case 'darwin':\n return 'osx-bin/hermesc';\n case 'linux':\n return 'linux64-bin/hermesc';\n case 'win32':\n return 'win64-bin/hermesc.exe';\n default:\n throw new Error(`Unsupported host platform for Hermes compiler: ${os.platform()}`);\n }\n}\n\ninterface HermesBundleOutput {\n hbc: Uint8Array;\n sourcemap: string | null;\n}\n\ntype BuildHermesOptions = {\n filename: string;\n code: string;\n map: string | null;\n minify?: boolean;\n};\n\n// Only one hermes build at a time is supported.\nlet currentHermesBuild: Promise<HermesBundleOutput> | null = null;\n\nexport async function buildHermesBundleAsync(\n options: BuildHermesOptions\n): Promise<HermesBundleOutput> {\n if (currentHermesBuild) {\n debug(`Waiting for existing Hermes builds to finish`);\n await currentHermesBuild;\n }\n currentHermesBuild = directlyBuildHermesBundleAsync(options);\n return await currentHermesBuild;\n}\n\nasync function directlyBuildHermesBundleAsync({\n code,\n map,\n minify = false,\n filename,\n}: BuildHermesOptions): Promise<HermesBundleOutput> {\n const tempDir = path.join(os.tmpdir(), `expo-bundler-${Math.random()}-${Date.now()}`);\n await fs.ensureDir(tempDir);\n try {\n const tempBundleFile = path.join(tempDir, 'index.js');\n await fs.writeFile(tempBundleFile, code);\n\n if (map) {\n const tempSourcemapFile = path.join(tempDir, 'index.js.map');\n await fs.writeFile(tempSourcemapFile, map);\n }\n\n const tempHbcFile = path.join(tempDir, 'index.hbc');\n const hermesCommand = importHermesCommandFromProject();\n const args = ['-emit-binary', '-out', tempHbcFile, tempBundleFile];\n if (minify) {\n args.push('-O');\n }\n if (map) {\n args.push('-output-source-map');\n }\n\n debug(`Running hermesc: ${hermesCommand} ${args.join(' ')}`);\n await spawnAsync(hermesCommand, args);\n\n let hbc: Buffer;\n let sourcemap: string | null = null;\n\n if (!map) {\n hbc = await fs.readFile(tempHbcFile);\n } else {\n [hbc, sourcemap] = await Promise.all([\n fs.readFile(tempHbcFile),\n createHermesSourcemapAsync(map, `${tempHbcFile}.map`),\n ]);\n }\n return {\n hbc,\n sourcemap,\n };\n } catch (error: any) {\n console.error(chalk.red(`\\nFailed to generate Hermes bytecode for: ${filename}`));\n if ('status' in error) {\n console.error(error.output.join('\\n'));\n }\n throw error;\n } finally {\n await fs.remove(tempDir);\n }\n}\n\nasync function createHermesSourcemapAsync(\n sourcemap: string,\n hermesMapFile: string\n): Promise<string> {\n const bundlerSourcemap = JSON.parse(sourcemap);\n const hermesSourcemap = await fs.readJSON(hermesMapFile);\n return JSON.stringify(composeSourceMaps([bundlerSourcemap, hermesSourcemap]));\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exportPath.js","names":["_path","data","_interopRequireDefault","require","_getCssDeps","obj","__esModule","default","getExportPathForDependencyWithOptions","dependencyPath","platform","src","serverRoot","bundlePath","path","relative","relativePathname","join","dirname","basename","extname","name","fileNameFromContents","filepath"],"sources":["../../src/serializer/exportPath.ts"],"sourcesContent":["/**\n * Copyright © 2023 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 path from 'path';\n\nimport { fileNameFromContents } from './getCssDeps';\n\nexport function getExportPathForDependencyWithOptions(\n dependencyPath: string,\n { platform, src, serverRoot }: { platform: string; serverRoot: string; src: string }\n): string {\n const bundlePath = path.relative(serverRoot, dependencyPath);\n const relativePathname = path.join(\n path.dirname(bundlePath),\n // Strip the file extension\n path.basename(bundlePath, path.extname(bundlePath))\n );\n const name = fileNameFromContents({\n filepath: relativePathname,\n src,\n });\n return `_expo/static/js/${platform}/${name}.js`;\n}\n"],"mappings":";;;;;;AAMA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoD,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AARpD;AACA;AACA;AACA;AACA;AACA;;AAKO,SAASG,qCAAqCA,CACnDC,cAAsB,EACtB;EAAEC,QAAQ;EAAEC,GAAG;EAAEC;AAAkE,CAAC,EAC5E;EACR,MAAMC,UAAU,GAAGC,eAAI,CAACC,QAAQ,CAACH,UAAU,EAAEH,cAAc,CAAC;EAC5D,MAAMO,gBAAgB,GAAGF,eAAI,CAACG,IAAI,CAChCH,eAAI,CAACI,OAAO,CAACL,UAAU,CAAC;EACxB;EACAC,eAAI,CAACK,QAAQ,CAACN,UAAU,EAAEC,eAAI,CAACM,OAAO,CAACP,UAAU,CAAC,CAAC,CACpD;EACD,MAAMQ,IAAI,GAAG,IAAAC,kCAAoB,EAAC;IAChCC,QAAQ,EAAEP,gBAAgB;IAC1BL;EACF,CAAC,CAAC;EACF,OAAQ,mBAAkBD,QAAS,IAAGW,IAAK,KAAI;AACjD"}
1
+ {"version":3,"file":"exportPath.js","names":["_path","data","_interopRequireDefault","require","_getCssDeps","obj","__esModule","default","getExportPathForDependencyWithOptions","dependencyPath","platform","src","serverRoot","bundlePath","path","relative","relativePathname","join","dirname","basename","extname","name","fileNameFromContents","filepath"],"sources":["../../src/serializer/exportPath.ts"],"sourcesContent":["/**\n * Copyright © 2023 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 path from 'path';\n\nimport { fileNameFromContents } from './getCssDeps';\n\nexport function getExportPathForDependencyWithOptions(\n dependencyPath: string,\n { platform, src, serverRoot }: { platform: string; serverRoot: string; src: string }\n): string {\n const bundlePath = path.relative(serverRoot, dependencyPath);\n const relativePathname = path.join(\n path.dirname(bundlePath),\n // Strip the file extension\n path.basename(bundlePath, path.extname(bundlePath))\n );\n const name = fileNameFromContents({\n filepath: relativePathname,\n src,\n });\n return `_expo/static/js/${platform}/${name}.js`;\n}\n"],"mappings":";;;;;;AAMA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,YAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,WAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAoD,SAAAC,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AARpD;AACA;AACA;AACA;AACA;AACA;;AAKO,SAASG,qCAAqCA,CACnDC,cAAsB,EACtB;EAAEC,QAAQ;EAAEC,GAAG;EAAEC;AAAkE,CAAC,EAC5E;EACR,MAAMC,UAAU,GAAGC,eAAI,CAACC,QAAQ,CAACH,UAAU,EAAEH,cAAc,CAAC;EAC5D,MAAMO,gBAAgB,GAAGF,eAAI,CAACG,IAAI,CAChCH,eAAI,CAACI,OAAO,CAACL,UAAU,CAAC;EACxB;EACAC,eAAI,CAACK,QAAQ,CAACN,UAAU,EAAEC,eAAI,CAACM,OAAO,CAACP,UAAU,CAAC,CACpD,CAAC;EACD,MAAMQ,IAAI,GAAG,IAAAC,kCAAoB,EAAC;IAChCC,QAAQ,EAAEP,gBAAgB;IAC1BL;EACF,CAAC,CAAC;EACF,OAAQ,mBAAkBD,QAAS,IAAGW,IAAK,KAAI;AACjD"}
@@ -23,6 +23,7 @@ export type ExpoSerializerOptions = SerializerOptions & {
23
23
  includeBytecode?: boolean;
24
24
  includeSourceMaps?: boolean;
25
25
  };
26
+ debugId?: string;
26
27
  };
27
28
  export declare function getPlatformOption(graph: Pick<ReadOnlyGraph, 'transformOptions'>, options: Pick<SerializerOptions, 'sourceUrl'>): string | null;
28
29
  export declare function getSplitChunksOption(graph: Pick<ReadOnlyGraph, 'transformOptions'>, options: Pick<SerializerOptions, 'includeAsyncPaths' | 'sourceUrl'>): boolean;
@@ -34,4 +35,5 @@ export declare function baseJSBundleWithDependencies(entryPoint: string, preModu
34
35
  splitChunks: boolean;
35
36
  skipWrapping: boolean;
36
37
  computedAsyncModulePaths: Record<string, string> | null;
38
+ debugId?: string;
37
39
  }): Bundle;