1d42dd5d4SCedric van Puttenimport { ExpoConfig } from '@expo/config-types'; 2d42dd5d4SCedric van Putten 3d42dd5d4SCedric van Puttenimport { resolveMetroVersionFromProject } from '../../start/server/metro/resolveFromProject'; 4d42dd5d4SCedric van Putten 5d42dd5d4SCedric van Putten/** 6d42dd5d4SCedric van Putten * Get the unstable / experimental properties used within the Metro config. 7d42dd5d4SCedric van Putten * Note that this should match `metro-config`, but uses newer features that are not yet typed. 8d42dd5d4SCedric van Putten * 9d42dd5d4SCedric van Putten * @see https://github.com/facebook/metro/blob/1d51ffd33f54dba25c54b49ff059543dac519f21/packages/metro-config/src/configTypes.flow.js 10d42dd5d4SCedric van Putten */ 11d42dd5d4SCedric van Puttenexport function getMetroProperties( 12d42dd5d4SCedric van Putten projectRoot: string, 13d42dd5d4SCedric van Putten exp: ExpoConfig, 14d42dd5d4SCedric van Putten metroConfig: Record<string, any> = {} 15d42dd5d4SCedric van Putten) { 16d42dd5d4SCedric van Putten return { 17d42dd5d4SCedric van Putten sdkVersion: exp.sdkVersion, 18d42dd5d4SCedric van Putten metroVersion: resolveMetroVersionFromProject(projectRoot), 19d42dd5d4SCedric van Putten 20d42dd5d4SCedric van Putten fileMapCacheManagerFactory: 21d42dd5d4SCedric van Putten Boolean(metroConfig.unstable_fileMapCacheManagerFactory) || undefined, // CacheManagerFactory 22d42dd5d4SCedric van Putten perfLogger: Boolean(metroConfig.unstable_perfLogger) || undefined, // PerfLoggerFactory 23d42dd5d4SCedric van Putten 24d42dd5d4SCedric van Putten resolverEnableSymlinks: metroConfig.resolver?.unstable_enableSymlinks, // boolean 25d42dd5d4SCedric van Putten resolverConditionNames: metroConfig.resolver?.unstable_conditionNames, // string[] 26d42dd5d4SCedric van Putten resolverConditionsByPlatform: metroConfig.resolver?.unstable_conditionsByPlatform, // { [platform: string]: string[] } 27d42dd5d4SCedric van Putten resolverEnablePackageExports: metroConfig.resolver?.unstable_enablePackageExports, // boolean 28d42dd5d4SCedric van Putten 29d42dd5d4SCedric van Putten serverImportBundleSupport: metroConfig.server?.experimentalImportBundleSupport, // boolean 30*dffcc472SCedric van Putten serverServerRoot: Boolean(metroConfig.server?.unstable_serverRoot) || undefined, // string | null 31d42dd5d4SCedric van Putten 32d42dd5d4SCedric van Putten transformerCollectDependenciesPath: metroConfig.transformer?.unstable_collectDependenciesPath, // string 33d42dd5d4SCedric van Putten transformerDependencyMapReservedName: 34d42dd5d4SCedric van Putten metroConfig.transformer?.unstable_dependencyMapReservedName, // string | null 35d42dd5d4SCedric van Putten transformerDisableModuleWrapping: metroConfig.transformer?.unstable_disableModuleWrapping, // boolean 36d42dd5d4SCedric van Putten transformerDisableNormalizePseudoGlobals: 37d42dd5d4SCedric van Putten metroConfig.transformer?.unstable_disableNormalizePseudoGlobals, // boolean 38d42dd5d4SCedric van Putten transformerCompactOutput: metroConfig.transformer?.unstable_compactOutput, // boolean 39d42dd5d4SCedric van Putten transformerAllowRequireContext: metroConfig.transformer?.unstable_allowRequireContext, // boolean 40d42dd5d4SCedric van Putten }; 41d42dd5d4SCedric van Putten} 42