1*82ade864SWill Schurmanimport { getConfig } from '@expo/config'; 2082815dcSEvan Baconimport { ModPlatform } from '@expo/config-plugins'; 3082815dcSEvan Bacon 4082815dcSEvan Baconimport { getAutolinkedPackagesAsync } from './getAutolinkedPackages'; 5082815dcSEvan Baconimport { 6082815dcSEvan Bacon withAndroidExpoPlugins, 7082815dcSEvan Bacon withIosExpoPlugins, 8082815dcSEvan Bacon withLegacyExpoPlugins, 9082815dcSEvan Bacon withVersionedExpoSDKPlugins, 10082815dcSEvan Bacon} from './plugins/withDefaultPlugins'; 11082815dcSEvan Bacon 12082815dcSEvan Baconexport async function getPrebuildConfigAsync( 13082815dcSEvan Bacon projectRoot: string, 14082815dcSEvan Bacon props: { 15082815dcSEvan Bacon bundleIdentifier?: string; 16082815dcSEvan Bacon packageName?: string; 17082815dcSEvan Bacon platforms: ModPlatform[]; 18082815dcSEvan Bacon } 19082815dcSEvan Bacon): Promise<ReturnType<typeof getConfig>> { 20082815dcSEvan Bacon const autolinkedModules = await getAutolinkedPackagesAsync(projectRoot, props.platforms); 21082815dcSEvan Bacon 22082815dcSEvan Bacon return getPrebuildConfig(projectRoot, { 23082815dcSEvan Bacon ...props, 24082815dcSEvan Bacon autolinkedModules, 25082815dcSEvan Bacon }); 26082815dcSEvan Bacon} 27082815dcSEvan Bacon 28082815dcSEvan Baconfunction getPrebuildConfig( 29082815dcSEvan Bacon projectRoot: string, 30082815dcSEvan Bacon { 31082815dcSEvan Bacon platforms, 32082815dcSEvan Bacon bundleIdentifier, 33082815dcSEvan Bacon packageName, 34082815dcSEvan Bacon autolinkedModules, 35082815dcSEvan Bacon }: { 36082815dcSEvan Bacon bundleIdentifier?: string; 37082815dcSEvan Bacon packageName?: string; 38082815dcSEvan Bacon platforms: ModPlatform[]; 39082815dcSEvan Bacon autolinkedModules?: string[]; 40082815dcSEvan Bacon } 41082815dcSEvan Bacon) { 42082815dcSEvan Bacon // let config: ExpoConfig; 43082815dcSEvan Bacon let { exp: config, ...rest } = getConfig(projectRoot, { 44082815dcSEvan Bacon skipSDKVersionRequirement: true, 45082815dcSEvan Bacon isModdedConfig: true, 46082815dcSEvan Bacon }); 47082815dcSEvan Bacon 48082815dcSEvan Bacon if (autolinkedModules) { 49082815dcSEvan Bacon if (!config._internal) { 50082815dcSEvan Bacon config._internal = {}; 51082815dcSEvan Bacon } 52082815dcSEvan Bacon config._internal.autolinkedModules = autolinkedModules; 53082815dcSEvan Bacon } 54082815dcSEvan Bacon 55082815dcSEvan Bacon // Add all built-in plugins first because they should take 56082815dcSEvan Bacon // priority over the unversioned plugins. 57*82ade864SWill Schurman config = withVersionedExpoSDKPlugins(config); 58082815dcSEvan Bacon config = withLegacyExpoPlugins(config); 59082815dcSEvan Bacon 60082815dcSEvan Bacon if (platforms.includes('ios')) { 61082815dcSEvan Bacon if (!config.ios) config.ios = {}; 62082815dcSEvan Bacon config.ios.bundleIdentifier = 63082815dcSEvan Bacon bundleIdentifier ?? config.ios.bundleIdentifier ?? `com.placeholder.appid`; 64082815dcSEvan Bacon 65082815dcSEvan Bacon // Add all built-in plugins 66082815dcSEvan Bacon config = withIosExpoPlugins(config, { 67082815dcSEvan Bacon bundleIdentifier: config.ios.bundleIdentifier, 68082815dcSEvan Bacon }); 69082815dcSEvan Bacon } 70082815dcSEvan Bacon 71082815dcSEvan Bacon if (platforms.includes('android')) { 72082815dcSEvan Bacon if (!config.android) config.android = {}; 73082815dcSEvan Bacon config.android.package = packageName ?? config.android.package ?? `com.placeholder.appid`; 74082815dcSEvan Bacon 75082815dcSEvan Bacon // Add all built-in plugins 76082815dcSEvan Bacon config = withAndroidExpoPlugins(config, { 77082815dcSEvan Bacon package: config.android.package, 78082815dcSEvan Bacon }); 79082815dcSEvan Bacon } 80082815dcSEvan Bacon 81082815dcSEvan Bacon return { exp: config, ...rest }; 82082815dcSEvan Bacon} 83