1"use strict"; 2 3Object.defineProperty(exports, "__esModule", { 4 value: true 5}); 6exports.getAutoPlugins = getAutoPlugins; 7exports.getLegacyExpoPlugins = getLegacyExpoPlugins; 8exports.withIosExpoPlugins = exports.withAndroidExpoPlugins = void 0; 9exports.withLegacyExpoPlugins = withLegacyExpoPlugins; 10exports.withVersionedExpoSDKPlugins = void 0; 11function _configPlugins() { 12 const data = require("@expo/config-plugins"); 13 _configPlugins = function () { 14 return data; 15 }; 16 return data; 17} 18function _debug() { 19 const data = _interopRequireDefault(require("debug")); 20 _debug = function () { 21 return data; 22 }; 23 return data; 24} 25function _getAutolinkedPackages() { 26 const data = require("../getAutolinkedPackages"); 27 _getAutolinkedPackages = function () { 28 return data; 29 }; 30 return data; 31} 32function _withAndroidIcons() { 33 const data = require("./icons/withAndroidIcons"); 34 _withAndroidIcons = function () { 35 return data; 36 }; 37 return data; 38} 39function _withIosIcons() { 40 const data = require("./icons/withIosIcons"); 41 _withIosIcons = function () { 42 return data; 43 }; 44 return data; 45} 46function _expoAdsAdmob() { 47 const data = _interopRequireDefault(require("./unversioned/expo-ads-admob/expo-ads-admob")); 48 _expoAdsAdmob = function () { 49 return data; 50 }; 51 return data; 52} 53function _expoAppleAuthentication() { 54 const data = _interopRequireDefault(require("./unversioned/expo-apple-authentication")); 55 _expoAppleAuthentication = function () { 56 return data; 57 }; 58 return data; 59} 60function _expoBranch() { 61 const data = _interopRequireDefault(require("./unversioned/expo-branch/expo-branch")); 62 _expoBranch = function () { 63 return data; 64 }; 65 return data; 66} 67function _expoContacts() { 68 const data = _interopRequireDefault(require("./unversioned/expo-contacts")); 69 _expoContacts = function () { 70 return data; 71 }; 72 return data; 73} 74function _expoDocumentPicker() { 75 const data = _interopRequireDefault(require("./unversioned/expo-document-picker")); 76 _expoDocumentPicker = function () { 77 return data; 78 }; 79 return data; 80} 81function _expoFacebook() { 82 const data = _interopRequireDefault(require("./unversioned/expo-facebook/expo-facebook")); 83 _expoFacebook = function () { 84 return data; 85 }; 86 return data; 87} 88function _expoNavigationBar() { 89 const data = _interopRequireDefault(require("./unversioned/expo-navigation-bar/expo-navigation-bar")); 90 _expoNavigationBar = function () { 91 return data; 92 }; 93 return data; 94} 95function _expoNotifications() { 96 const data = _interopRequireDefault(require("./unversioned/expo-notifications/expo-notifications")); 97 _expoNotifications = function () { 98 return data; 99 }; 100 return data; 101} 102function _expoSplashScreen() { 103 const data = _interopRequireDefault(require("./unversioned/expo-splash-screen/expo-splash-screen")); 104 _expoSplashScreen = function () { 105 return data; 106 }; 107 return data; 108} 109function _expoSystemUi() { 110 const data = _interopRequireDefault(require("./unversioned/expo-system-ui/expo-system-ui")); 111 _expoSystemUi = function () { 112 return data; 113 }; 114 return data; 115} 116function _expoUpdates() { 117 const data = _interopRequireDefault(require("./unversioned/expo-updates")); 118 _expoUpdates = function () { 119 return data; 120 }; 121 return data; 122} 123function _reactNativeMaps() { 124 const data = _interopRequireDefault(require("./unversioned/react-native-maps")); 125 _reactNativeMaps = function () { 126 return data; 127 }; 128 return data; 129} 130function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 131/** 132 * These are the versioned first-party plugins with some of the future third-party plugins mixed in for legacy support. 133 */ 134 135const debug = (0, _debug().default)('expo:prebuild-config'); 136 137/** 138 * Config plugin to apply all of the custom Expo iOS config plugins we support by default. 139 * TODO: In the future most of this should go into versioned packages like expo-facebook, expo-updates, etc... 140 */ 141const withIosExpoPlugins = (config, { 142 bundleIdentifier 143}) => { 144 // Set the bundle ID ahead of time. 145 if (!config.ios) config.ios = {}; 146 config.ios.bundleIdentifier = bundleIdentifier; 147 return (0, _configPlugins().withPlugins)(config, [[_configPlugins().IOSConfig.BundleIdentifier.withBundleIdentifier, { 148 bundleIdentifier 149 }], _configPlugins().IOSConfig.Swift.withSwiftBridgingHeader, _configPlugins().IOSConfig.Swift.withNoopSwiftFile, _configPlugins().IOSConfig.Google.withGoogle, _configPlugins().IOSConfig.Name.withDisplayName, _configPlugins().IOSConfig.Name.withProductName, _configPlugins().IOSConfig.Orientation.withOrientation, _configPlugins().IOSConfig.RequiresFullScreen.withRequiresFullScreen, _configPlugins().IOSConfig.Scheme.withScheme, _configPlugins().IOSConfig.UsesNonExemptEncryption.withUsesNonExemptEncryption, _configPlugins().IOSConfig.Version.withBuildNumber, _configPlugins().IOSConfig.Version.withVersion, _configPlugins().IOSConfig.Google.withGoogleServicesFile, _configPlugins().IOSConfig.BuildProperties.withJsEnginePodfileProps, 150 // Entitlements 151 _configPlugins().IOSConfig.Entitlements.withAssociatedDomains, 152 // XcodeProject 153 _configPlugins().IOSConfig.DeviceFamily.withDeviceFamily, _configPlugins().IOSConfig.Bitcode.withBitcode, _configPlugins().IOSConfig.Locales.withLocales, 154 // Dangerous 155 _withIosIcons().withIosIcons]); 156}; 157 158/** 159 * Config plugin to apply all of the custom Expo Android config plugins we support by default. 160 * TODO: In the future most of this should go into versioned packages like expo-facebook, expo-updates, etc... 161 */ 162exports.withIosExpoPlugins = withIosExpoPlugins; 163const withAndroidExpoPlugins = (config, props) => { 164 // Set the package name ahead of time. 165 if (!config.android) config.android = {}; 166 config.android.package = props.package; 167 return (0, _configPlugins().withPlugins)(config, [ 168 // gradle.properties 169 _configPlugins().AndroidConfig.BuildProperties.withJsEngineGradleProps, 170 // settings.gradle 171 _configPlugins().AndroidConfig.Name.withNameSettingsGradle, 172 // project build.gradle 173 _configPlugins().AndroidConfig.GoogleServices.withClassPath, 174 // app/build.gradle 175 _configPlugins().AndroidConfig.GoogleServices.withApplyPlugin, _configPlugins().AndroidConfig.Package.withPackageGradle, _configPlugins().AndroidConfig.Version.withVersion, 176 // AndroidManifest.xml 177 _configPlugins().AndroidConfig.Package.withPackageManifest, _configPlugins().AndroidConfig.AllowBackup.withAllowBackup, _configPlugins().AndroidConfig.WindowSoftInputMode.withWindowSoftInputMode, 178 // Note: The withAndroidIntentFilters plugin must appear before the withScheme 179 // plugin or withScheme will override the output of withAndroidIntentFilters. 180 _configPlugins().AndroidConfig.IntentFilters.withAndroidIntentFilters, _configPlugins().AndroidConfig.Scheme.withScheme, _configPlugins().AndroidConfig.Orientation.withOrientation, _configPlugins().AndroidConfig.Permissions.withInternalBlockedPermissions, _configPlugins().AndroidConfig.Permissions.withPermissions, 181 // strings.xml 182 _configPlugins().AndroidConfig.Name.withName, 183 // Dangerous -- these plugins run in reverse order. 184 _configPlugins().AndroidConfig.GoogleServices.withGoogleServicesFile, 185 // Modify colors.xml and styles.xml 186 _configPlugins().AndroidConfig.StatusBar.withStatusBar, _configPlugins().AndroidConfig.PrimaryColor.withPrimaryColor, _withAndroidIcons().withAndroidIcons, 187 // If we renamed the package, we should also move it around and rename it in source files 188 // Added last to ensure this plugin runs first. Out of tree solutions will mistakenly resolve the package incorrectly otherwise. 189 _configPlugins().AndroidConfig.Package.withPackageRefactor]); 190}; 191 192// Must keep in sync with `withVersionedExpoSDKPlugins` 193exports.withAndroidExpoPlugins = withAndroidExpoPlugins; 194const versionedExpoSDKPackages = ['react-native-maps', 'expo-ads-admob', 'expo-apple-authentication', 'expo-contacts', 'expo-notifications', 'expo-updates', 'expo-branch', 'expo-navigation-bar', 'expo-document-picker', 'expo-facebook', 'expo-splash-screen', 'expo-system-ui']; 195const withVersionedExpoSDKPlugins = (config, { 196 expoUsername 197}) => { 198 return (0, _configPlugins().withPlugins)(config, [_reactNativeMaps().default, _expoAdsAdmob().default, _expoAppleAuthentication().default, _expoContacts().default, _expoNotifications().default, [_expoUpdates().default, { 199 expoUsername 200 }], _expoBranch().default, _expoDocumentPicker().default, _expoFacebook().default, 201 // System UI must come before splash screen as they overlap 202 // and splash screen will warn about conflicting rules. 203 _expoSystemUi().default, _expoSplashScreen().default, _expoNavigationBar().default]); 204}; 205exports.withVersionedExpoSDKPlugins = withVersionedExpoSDKPlugins; 206function getAutoPlugins() { 207 return versionedExpoSDKPackages.concat(legacyExpoPlugins).concat(expoManagedVersionedPlugins); 208} 209function getLegacyExpoPlugins() { 210 return legacyExpoPlugins; 211} 212 213// Expo managed packages that require extra update. 214// These get applied automatically to create parity with expo build in eas build. 215const legacyExpoPlugins = ['expo-app-auth', 'expo-av', 'expo-background-fetch', 'expo-barcode-scanner', 'expo-brightness', 'expo-calendar', 'expo-camera', 'expo-cellular', 'expo-dev-menu', 'expo-dev-launcher', 'expo-dev-client', 'expo-image-picker', 'expo-file-system', 'expo-ads-facebook', 'expo-location', 'expo-media-library', 'expo-screen-orientation', 'expo-sensors', 'expo-task-manager', 'expo-local-authentication']; 216 217// Plugins that need to be automatically applied, but also get applied by expo-cli if the versioned plugin isn't available. 218// These are split up because the user doesn't need to be prompted to setup these packages. 219const expoManagedVersionedPlugins = ['expo-firebase-analytics', 'expo-firebase-core', 'expo-google-sign-in']; 220const withOptionalLegacyPlugins = (config, plugins) => { 221 return plugins.reduce((prev, plugin) => { 222 if ((0, _getAutolinkedPackages().shouldSkipAutoPlugin)(config, plugin)) { 223 debug('Skipping unlinked auto plugin:', plugin); 224 return prev; 225 } 226 return (0, _configPlugins().withStaticPlugin)(prev, { 227 // hide errors 228 _isLegacyPlugin: true, 229 plugin, 230 // If a plugin doesn't exist, do nothing. 231 fallback: config => config 232 }); 233 }, config); 234}; 235function withLegacyExpoPlugins(config) { 236 return withOptionalLegacyPlugins(config, [...new Set(expoManagedVersionedPlugins.concat(legacyExpoPlugins))]); 237} 238//# sourceMappingURL=withDefaultPlugins.js.map