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