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