@expo/prebuild-config 3.0.7 → 3.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/build/getPrebuildConfig.d.ts +3 -10
  2. package/build/getPrebuildConfig.js +6 -1
  3. package/build/getPrebuildConfig.js.map +1 -1
  4. package/build/index.d.ts +1 -1
  5. package/build/index.js +3 -3
  6. package/build/index.js.map +1 -1
  7. package/build/plugins/icons/withAndroidIcons.js +5 -3
  8. package/build/plugins/icons/withAndroidIcons.js.map +1 -1
  9. package/build/plugins/icons/withIosIcons.js +2 -1
  10. package/build/plugins/icons/withIosIcons.js.map +1 -1
  11. package/build/plugins/unversioned/createLegacyPlugin.js +13 -2
  12. package/build/plugins/unversioned/createLegacyPlugin.js.map +1 -1
  13. package/build/plugins/unversioned/expo-facebook/withAndroidFacebook.js +3 -3
  14. package/build/plugins/unversioned/expo-facebook/withIosFacebook.js +8 -8
  15. package/build/plugins/unversioned/expo-navigation-bar/withAndroidNavigationBar.js +3 -3
  16. package/build/plugins/unversioned/expo-notifications/expo-notifications.d.ts +1 -2
  17. package/build/plugins/unversioned/expo-notifications/expo-notifications.js +1 -19
  18. package/build/plugins/unversioned/expo-notifications/expo-notifications.js.map +1 -1
  19. package/build/plugins/unversioned/expo-notifications/withAndroidNotifications.js +4 -3
  20. package/build/plugins/unversioned/expo-notifications/withAndroidNotifications.js.map +1 -1
  21. package/build/plugins/unversioned/expo-splash-screen/getAndroidSplashConfig.js +1 -1
  22. package/build/plugins/unversioned/expo-splash-screen/withAndroidSplashStyles.js +2 -2
  23. package/build/plugins/unversioned/expo-system-ui/withIosRootViewBackgroundColor.d.ts +3 -0
  24. package/build/plugins/unversioned/expo-system-ui/withIosRootViewBackgroundColor.js +38 -2
  25. package/build/plugins/unversioned/expo-system-ui/withIosRootViewBackgroundColor.js.map +1 -1
  26. package/build/plugins/unversioned/expo-updates.js +1 -1
  27. package/build/plugins/unversioned/react-native-maps.js +8 -5
  28. package/build/plugins/unversioned/react-native-maps.js.map +1 -1
  29. package/build/plugins/withDefaultPlugins.js +3 -2
  30. package/build/plugins/withDefaultPlugins.js.map +1 -1
  31. package/package.json +10 -8
@@ -1,16 +1,9 @@
1
+ import { getConfig } from '@expo/config';
1
2
  import { ModPlatform } from '@expo/config-plugins';
2
3
  import { ExpoConfig } from '@expo/config-types';
3
- export declare function getPrebuildConfig(projectRoot: string, { platforms, bundleIdentifier, packageName, expoUsername, }: {
4
+ export declare function getPrebuildConfigAsync(projectRoot: string, props: {
4
5
  bundleIdentifier?: string;
5
6
  packageName?: string;
6
7
  platforms: ModPlatform[];
7
8
  expoUsername?: string | ((config: ExpoConfig) => string | null);
8
- }): {
9
- mods?: import("@expo/config-plugins").ModConfig | null | undefined;
10
- pkg: import("@expo/config").PackageJSONConfig;
11
- rootConfig: import("@expo/config").AppJSONConfig;
12
- staticConfigPath: string | null;
13
- dynamicConfigPath: string | null;
14
- dynamicConfigObjectType: string | null;
15
- exp: ExpoConfig;
16
- };
9
+ }): Promise<ReturnType<typeof getConfig>>;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getPrebuildConfig = getPrebuildConfig;
6
+ exports.getPrebuildConfigAsync = getPrebuildConfigAsync;
7
7
 
8
8
  function _config() {
9
9
  const data = require("@expo/config");
@@ -25,6 +25,11 @@ function _withDefaultPlugins() {
25
25
  return data;
26
26
  }
27
27
 
28
+ async function getPrebuildConfigAsync(projectRoot, props) {
29
+ return getPrebuildConfig(projectRoot, { ...props
30
+ });
31
+ }
32
+
28
33
  function getPrebuildConfig(projectRoot, {
29
34
  platforms,
30
35
  bundleIdentifier,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/getPrebuildConfig.ts"],"names":["getPrebuildConfig","projectRoot","platforms","bundleIdentifier","packageName","expoUsername","exp","config","rest","skipSDKVersionRequirement","isModdedConfig","resolvedExpoUsername","includes","ios","android","package"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAOO,SAASA,iBAAT,CACLC,WADK,EAEL;AACEC,EAAAA,SADF;AAEEC,EAAAA,gBAFF;AAGEC,EAAAA,WAHF;AAIEC,EAAAA;AAJF,CAFK,EAaL;AACA;AACA,MAAI;AAAEC,IAAAA,GAAG,EAAEC,MAAP;AAAe,OAAGC;AAAlB,MAA2B,yBAAUP,WAAV,EAAuB;AACpDQ,IAAAA,yBAAyB,EAAE,IADyB;AAEpDC,IAAAA,cAAc,EAAE;AAFoC,GAAvB,CAA/B;AAKA,QAAMC,oBAAoB,GACxB,OAAON,YAAP,KAAwB,UAAxB,GACIA,YAAY,CAACE,MAAD,CADhB,GAEI;AACAF,EAAAA,YAHJ,aAGIA,YAHJ,cAGIA,YAHJ,GAGoB,kCAAmBE,MAAnB,CAJtB,CAPA,CAaA;AACA;;AACAA,EAAAA,MAAM,GAAG,uDAA4BA,MAA5B,EAAoC;AAC3CF,IAAAA,YAAY,EAAEM;AAD6B,GAApC,CAAT;AAGAJ,EAAAA,MAAM,GAAG,iDAAsBA,MAAtB,CAAT;;AAEA,MAAIL,SAAS,CAACU,QAAV,CAAmB,KAAnB,CAAJ,EAA+B;AAAA;;AAC7B,QAAI,CAACL,MAAM,CAACM,GAAZ,EAAiBN,MAAM,CAACM,GAAP,GAAa,EAAb;AACjBN,IAAAA,MAAM,CAACM,GAAP,CAAWV,gBAAX,WACEA,gBADF,aACEA,gBADF,cACEA,gBADF,GACsBI,MAAM,CAACM,GAAP,CAAWV,gBADjC,uCACsD,uBADtD,CAF6B,CAK7B;;AACAI,IAAAA,MAAM,GAAG,8CAAmBA,MAAnB,EAA2B;AAClCJ,MAAAA,gBAAgB,EAAEI,MAAM,CAACM,GAAP,CAAWV;AADK,KAA3B,CAAT;AAGD;;AAED,MAAID,SAAS,CAACU,QAAV,CAAmB,SAAnB,CAAJ,EAAmC;AAAA;;AACjC,QAAI,CAACL,MAAM,CAACO,OAAZ,EAAqBP,MAAM,CAACO,OAAP,GAAiB,EAAjB;AACrBP,IAAAA,MAAM,CAACO,OAAP,CAAeC,OAAf,YAAyBX,WAAzB,aAAyBA,WAAzB,cAAyBA,WAAzB,GAAwCG,MAAM,CAACO,OAAP,CAAeC,OAAvD,yCAAmE,uBAAnE,CAFiC,CAIjC;;AACAR,IAAAA,MAAM,GAAG,kDAAuBA,MAAvB,EAA+B;AACtCQ,MAAAA,OAAO,EAAER,MAAM,CAACO,OAAP,CAAeC;AADc,KAA/B,CAAT;AAGD;;AAED,SAAO;AAAET,IAAAA,GAAG,EAAEC,MAAP;AAAe,OAAGC;AAAlB,GAAP;AACD","sourcesContent":["import { getAccountUsername, getConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\n\nimport {\n withAndroidExpoPlugins,\n withIosExpoPlugins,\n withLegacyExpoPlugins,\n withVersionedExpoSDKPlugins,\n} from './plugins/withDefaultPlugins';\n\nexport function getPrebuildConfig(\n projectRoot: string,\n {\n platforms,\n bundleIdentifier,\n packageName,\n expoUsername,\n }: {\n bundleIdentifier?: string;\n packageName?: string;\n platforms: ModPlatform[];\n expoUsername?: string | ((config: ExpoConfig) => string | null);\n }\n) {\n // let config: ExpoConfig;\n let { exp: config, ...rest } = getConfig(projectRoot, {\n skipSDKVersionRequirement: true,\n isModdedConfig: true,\n });\n\n const resolvedExpoUsername =\n typeof expoUsername === 'function'\n ? expoUsername(config)\n : // If the user didn't pass a username then fallback on the static cached username.\n expoUsername ?? getAccountUsername(config);\n\n // Add all built-in plugins first because they should take\n // priority over the unversioned plugins.\n config = withVersionedExpoSDKPlugins(config, {\n expoUsername: resolvedExpoUsername,\n });\n config = withLegacyExpoPlugins(config);\n\n if (platforms.includes('ios')) {\n if (!config.ios) config.ios = {};\n config.ios.bundleIdentifier =\n bundleIdentifier ?? config.ios.bundleIdentifier ?? `com.placeholder.appid`;\n\n // Add all built-in plugins\n config = withIosExpoPlugins(config, {\n bundleIdentifier: config.ios.bundleIdentifier,\n });\n }\n\n if (platforms.includes('android')) {\n if (!config.android) config.android = {};\n config.android.package = packageName ?? config.android.package ?? `com.placeholder.appid`;\n\n // Add all built-in plugins\n config = withAndroidExpoPlugins(config, {\n package: config.android.package,\n });\n }\n\n return { exp: config, ...rest };\n}\n"],"file":"getPrebuildConfig.js"}
1
+ {"version":3,"sources":["../src/getPrebuildConfig.ts"],"names":["getPrebuildConfigAsync","projectRoot","props","getPrebuildConfig","platforms","bundleIdentifier","packageName","expoUsername","exp","config","rest","skipSDKVersionRequirement","isModdedConfig","resolvedExpoUsername","includes","ios","android","package"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAOO,eAAeA,sBAAf,CACLC,WADK,EAELC,KAFK,EAQkC;AACvC,SAAOC,iBAAiB,CAACF,WAAD,EAAc,EACpC,GAAGC;AADiC,GAAd,CAAxB;AAGD;;AAED,SAASC,iBAAT,CACEF,WADF,EAEE;AACEG,EAAAA,SADF;AAEEC,EAAAA,gBAFF;AAGEC,EAAAA,WAHF;AAIEC,EAAAA;AAJF,CAFF,EAaE;AACA;AACA,MAAI;AAAEC,IAAAA,GAAG,EAAEC,MAAP;AAAe,OAAGC;AAAlB,MAA2B,yBAAUT,WAAV,EAAuB;AACpDU,IAAAA,yBAAyB,EAAE,IADyB;AAEpDC,IAAAA,cAAc,EAAE;AAFoC,GAAvB,CAA/B;AAKA,QAAMC,oBAAoB,GACxB,OAAON,YAAP,KAAwB,UAAxB,GACIA,YAAY,CAACE,MAAD,CADhB,GAEI;AACAF,EAAAA,YAHJ,aAGIA,YAHJ,cAGIA,YAHJ,GAGoB,kCAAmBE,MAAnB,CAJtB,CAPA,CAaA;AACA;;AACAA,EAAAA,MAAM,GAAG,uDAA4BA,MAA5B,EAAoC;AAC3CF,IAAAA,YAAY,EAAEM;AAD6B,GAApC,CAAT;AAGAJ,EAAAA,MAAM,GAAG,iDAAsBA,MAAtB,CAAT;;AAEA,MAAIL,SAAS,CAACU,QAAV,CAAmB,KAAnB,CAAJ,EAA+B;AAAA;;AAC7B,QAAI,CAACL,MAAM,CAACM,GAAZ,EAAiBN,MAAM,CAACM,GAAP,GAAa,EAAb;AACjBN,IAAAA,MAAM,CAACM,GAAP,CAAWV,gBAAX,WACEA,gBADF,aACEA,gBADF,cACEA,gBADF,GACsBI,MAAM,CAACM,GAAP,CAAWV,gBADjC,uCACsD,uBADtD,CAF6B,CAK7B;;AACAI,IAAAA,MAAM,GAAG,8CAAmBA,MAAnB,EAA2B;AAClCJ,MAAAA,gBAAgB,EAAEI,MAAM,CAACM,GAAP,CAAWV;AADK,KAA3B,CAAT;AAGD;;AAED,MAAID,SAAS,CAACU,QAAV,CAAmB,SAAnB,CAAJ,EAAmC;AAAA;;AACjC,QAAI,CAACL,MAAM,CAACO,OAAZ,EAAqBP,MAAM,CAACO,OAAP,GAAiB,EAAjB;AACrBP,IAAAA,MAAM,CAACO,OAAP,CAAeC,OAAf,YAAyBX,WAAzB,aAAyBA,WAAzB,cAAyBA,WAAzB,GAAwCG,MAAM,CAACO,OAAP,CAAeC,OAAvD,yCAAmE,uBAAnE,CAFiC,CAIjC;;AACAR,IAAAA,MAAM,GAAG,kDAAuBA,MAAvB,EAA+B;AACtCQ,MAAAA,OAAO,EAAER,MAAM,CAACO,OAAP,CAAeC;AADc,KAA/B,CAAT;AAGD;;AAED,SAAO;AAAET,IAAAA,GAAG,EAAEC,MAAP;AAAe,OAAGC;AAAlB,GAAP;AACD","sourcesContent":["import { getAccountUsername, getConfig } from '@expo/config';\nimport { ModPlatform } from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\n\nimport {\n withAndroidExpoPlugins,\n withIosExpoPlugins,\n withLegacyExpoPlugins,\n withVersionedExpoSDKPlugins,\n} from './plugins/withDefaultPlugins';\n\nexport async function getPrebuildConfigAsync(\n projectRoot: string,\n props: {\n bundleIdentifier?: string;\n packageName?: string;\n platforms: ModPlatform[];\n expoUsername?: string | ((config: ExpoConfig) => string | null);\n }\n): Promise<ReturnType<typeof getConfig>> {\n return getPrebuildConfig(projectRoot, {\n ...props,\n });\n}\n\nfunction getPrebuildConfig(\n projectRoot: string,\n {\n platforms,\n bundleIdentifier,\n packageName,\n expoUsername,\n }: {\n bundleIdentifier?: string;\n packageName?: string;\n platforms: ModPlatform[];\n expoUsername?: string | ((config: ExpoConfig) => string | null);\n }\n) {\n // let config: ExpoConfig;\n let { exp: config, ...rest } = getConfig(projectRoot, {\n skipSDKVersionRequirement: true,\n isModdedConfig: true,\n });\n\n const resolvedExpoUsername =\n typeof expoUsername === 'function'\n ? expoUsername(config)\n : // If the user didn't pass a username then fallback on the static cached username.\n expoUsername ?? getAccountUsername(config);\n\n // Add all built-in plugins first because they should take\n // priority over the unversioned plugins.\n config = withVersionedExpoSDKPlugins(config, {\n expoUsername: resolvedExpoUsername,\n });\n config = withLegacyExpoPlugins(config);\n\n if (platforms.includes('ios')) {\n if (!config.ios) config.ios = {};\n config.ios.bundleIdentifier =\n bundleIdentifier ?? config.ios.bundleIdentifier ?? `com.placeholder.appid`;\n\n // Add all built-in plugins\n config = withIosExpoPlugins(config, {\n bundleIdentifier: config.ios.bundleIdentifier,\n });\n }\n\n if (platforms.includes('android')) {\n if (!config.android) config.android = {};\n config.android.package = packageName ?? config.android.package ?? `com.placeholder.appid`;\n\n // Add all built-in plugins\n config = withAndroidExpoPlugins(config, {\n package: config.android.package,\n });\n }\n\n return { exp: config, ...rest };\n}\n"],"file":"getPrebuildConfig.js"}
package/build/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { getPrebuildConfig } from './getPrebuildConfig';
1
+ export { getPrebuildConfigAsync } from './getPrebuildConfig';
2
2
  export * from './plugins/withDefaultPlugins';
package/build/index.js CHANGED
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
- getPrebuildConfig: true
7
+ getPrebuildConfigAsync: true
8
8
  };
9
- Object.defineProperty(exports, "getPrebuildConfig", {
9
+ Object.defineProperty(exports, "getPrebuildConfigAsync", {
10
10
  enumerable: true,
11
11
  get: function () {
12
- return _getPrebuildConfig().getPrebuildConfig;
12
+ return _getPrebuildConfig().getPrebuildConfigAsync;
13
13
  }
14
14
  });
15
15
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/* eslint-disable import/export */\n\nexport { getPrebuildConfig } from './getPrebuildConfig';\nexport * from './plugins/withDefaultPlugins';\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["/* eslint-disable import/export */\n\nexport { getPrebuildConfigAsync } from './getPrebuildConfig';\nexport * from './plugins/withDefaultPlugins';\n"],"file":"index.js"}
@@ -3,11 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getIcon = getIcon;
6
+ exports.ANDROID_RES_PATH = void 0;
7
+ exports.configureAdaptiveIconAsync = configureAdaptiveIconAsync;
8
+ exports.dpiValues = exports.createAdaptiveIconXmlString = void 0;
7
9
  exports.getAdaptiveIcon = getAdaptiveIcon;
10
+ exports.getIcon = getIcon;
8
11
  exports.setIconAsync = setIconAsync;
9
- exports.configureAdaptiveIconAsync = configureAdaptiveIconAsync;
10
- exports.createAdaptiveIconXmlString = exports.withAndroidIcons = exports.ANDROID_RES_PATH = exports.dpiValues = void 0;
12
+ exports.withAndroidIcons = void 0;
11
13
 
12
14
  function _configPlugins() {
13
15
  const data = require("@expo/config-plugins");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/icons/withAndroidIcons.ts"],"names":["Colors","AndroidConfig","dpiValues","mdpi","folderName","scale","hdpi","xhdpi","xxhdpi","xxxhdpi","BASELINE_PIXEL_SIZE","ANDROID_RES_PATH","MIPMAP_ANYDPI_V26","ICON_BACKGROUND","IC_LAUNCHER_PNG","IC_LAUNCHER_ROUND_PNG","IC_LAUNCHER_BACKGROUND_PNG","IC_LAUNCHER_FOREGROUND_PNG","IC_LAUNCHER_XML","IC_LAUNCHER_ROUND_XML","withAndroidIcons","config","foregroundImage","backgroundColor","backgroundImage","getAdaptiveIcon","icon","getIcon","withAndroidAdaptiveIconColors","setIconAsync","modRequest","projectRoot","isAdaptive","android","adaptiveIcon","modResults","setBackgroundColor","configureLegacyIconAsync","configureAdaptiveIconAsync","Promise","all","Object","values","map","dpiFolderPath","path","resolve","iconSizePx","squareIconImage","cacheType","src","width","height","resizeMode","source","roundIconImage","borderRadius","squareBackgroundLayer","roundBackgroundLayer","foreground","background","fs","ensureDir","writeFile","adpativeIconForeground","adpativeIconBackground","removeBackgroundImageFilesAsync","e","Error","icLauncherXmlString","createAdaptiveIconXmlString","createAdaptiveIconXmlFiles","colors","assignColorValue","value","name","add","anyDpiV26Directory","launcherPath","launcherRoundPath","existsSync","remove"],"mappings":"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","sourcesContent":["import {\n AndroidConfig,\n ConfigPlugin,\n withAndroidColors,\n withDangerousMod,\n} from '@expo/config-plugins';\nimport { ResourceXML } from '@expo/config-plugins/build/android/Resources';\nimport { ExpoConfig } from '@expo/config-types';\nimport { compositeImagesAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nconst { Colors } = AndroidConfig;\n\ntype DPIString = 'mdpi' | 'hdpi' | 'xhdpi' | 'xxhdpi' | 'xxxhdpi';\ntype dpiMap = Record<DPIString, { folderName: string; scale: number }>;\n\nexport const dpiValues: dpiMap = {\n mdpi: { folderName: 'mipmap-mdpi', scale: 1 },\n hdpi: { folderName: 'mipmap-hdpi', scale: 1.5 },\n xhdpi: { folderName: 'mipmap-xhdpi', scale: 2 },\n xxhdpi: { folderName: 'mipmap-xxhdpi', scale: 3 },\n xxxhdpi: { folderName: 'mipmap-xxxhdpi', scale: 4 },\n};\nconst BASELINE_PIXEL_SIZE = 48;\nexport const ANDROID_RES_PATH = 'android/app/src/main/res/';\nconst MIPMAP_ANYDPI_V26 = 'mipmap-anydpi-v26';\nconst ICON_BACKGROUND = 'iconBackground';\nconst IC_LAUNCHER_PNG = 'ic_launcher.png';\nconst IC_LAUNCHER_ROUND_PNG = 'ic_launcher_round.png';\nconst IC_LAUNCHER_BACKGROUND_PNG = 'ic_launcher_background.png';\nconst IC_LAUNCHER_FOREGROUND_PNG = 'ic_launcher_foreground.png';\nconst IC_LAUNCHER_XML = 'ic_launcher.xml';\nconst IC_LAUNCHER_ROUND_XML = 'ic_launcher_round.xml';\n\nexport const withAndroidIcons: ConfigPlugin = config => {\n const { foregroundImage, backgroundColor, backgroundImage } = getAdaptiveIcon(config);\n const icon = foregroundImage ?? getIcon(config);\n\n if (!icon) {\n return config;\n }\n\n // Apply colors.xml changes\n config = withAndroidAdaptiveIconColors(config, backgroundColor);\n return withDangerousMod(config, [\n 'android',\n async config => {\n await setIconAsync(config.modRequest.projectRoot, {\n icon,\n backgroundColor,\n backgroundImage,\n isAdaptive: !!config.android?.adaptiveIcon,\n });\n return config;\n },\n ]);\n};\n\nconst withAndroidAdaptiveIconColors: ConfigPlugin<string | null> = (config, backgroundColor) => {\n return withAndroidColors(config, config => {\n config.modResults = setBackgroundColor(backgroundColor ?? '#FFFFFF', config.modResults);\n return config;\n });\n};\n\nexport function getIcon(config: ExpoConfig) {\n return config.icon || config.android?.icon || null;\n}\n\nexport function getAdaptiveIcon(config: ExpoConfig) {\n return {\n foregroundImage: config.android?.adaptiveIcon?.foregroundImage ?? null,\n backgroundColor: config.android?.adaptiveIcon?.backgroundColor ?? null,\n backgroundImage: config.android?.adaptiveIcon?.backgroundImage ?? null,\n };\n}\n\n/**\n * Resizes the user-provided icon to create a set of legacy icon files in\n * their respective \"mipmap\" directories for <= Android 7, and creates a set of adaptive\n * icon files for > Android 7 from the adaptive icon files (if provided).\n */\nexport async function setIconAsync(\n projectRoot: string,\n {\n icon,\n backgroundColor,\n backgroundImage,\n isAdaptive,\n }: {\n icon: string | null;\n backgroundColor: string | null;\n backgroundImage: string | null;\n isAdaptive: boolean;\n }\n) {\n if (!icon) {\n return null;\n }\n\n await configureLegacyIconAsync(projectRoot, icon, backgroundImage, backgroundColor);\n\n await configureAdaptiveIconAsync(projectRoot, icon, backgroundImage, isAdaptive);\n\n return true;\n}\n\n/**\n * Configures legacy icon files to be used on Android 7 and earlier. If adaptive icon configuration\n * was provided, we create a pseudo-adaptive icon by layering the provided files (or background\n * color if no backgroundImage is provided. If no backgroundImage and no backgroundColor are provided,\n * the background is set to transparent.)\n */\nasync function configureLegacyIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName, scale }) => {\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, folderName);\n const iconSizePx = BASELINE_PIXEL_SIZE * scale;\n\n // backgroundImage overrides backgroundColor\n backgroundColor = backgroundImage ? 'transparent' : backgroundColor ?? 'transparent';\n\n let squareIconImage: Buffer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-square' },\n {\n src: icon,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor,\n }\n )\n ).source;\n let roundIconImage: Buffer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-circle' },\n {\n src: icon,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor,\n borderRadius: iconSizePx / 2,\n }\n )\n ).source;\n\n if (backgroundImage) {\n // Layer the buffers we just created on top of the background image that's provided\n const squareBackgroundLayer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-square-background' },\n {\n src: backgroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n const roundBackgroundLayer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-round-background' },\n {\n src: backgroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n borderRadius: iconSizePx / 2,\n }\n )\n ).source;\n squareIconImage = await compositeImagesAsync({\n foreground: squareIconImage,\n background: squareBackgroundLayer,\n });\n roundIconImage = await compositeImagesAsync({\n foreground: roundIconImage,\n background: roundBackgroundLayer,\n });\n }\n\n await fs.ensureDir(dpiFolderPath);\n await fs.writeFile(path.resolve(dpiFolderPath, IC_LAUNCHER_PNG), squareIconImage);\n await fs.writeFile(path.resolve(dpiFolderPath, IC_LAUNCHER_ROUND_PNG), roundIconImage);\n })\n );\n}\n\n/**\n * Configures adaptive icon files to be used on Android 8 and up. A foreground image must be provided,\n * and will have a transparent background unless:\n * - A backgroundImage is provided, or\n * - A backgroundColor was specified\n */\nexport async function configureAdaptiveIconAsync(\n projectRoot: string,\n foregroundImage: string,\n backgroundImage: string | null,\n isAdaptive: boolean\n) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName, scale }) => {\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, folderName);\n const iconSizePx = BASELINE_PIXEL_SIZE * scale;\n\n try {\n const adpativeIconForeground = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-adaptive-foreground' },\n {\n src: foregroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n await fs.writeFile(\n path.resolve(dpiFolderPath, IC_LAUNCHER_FOREGROUND_PNG),\n adpativeIconForeground\n );\n\n if (backgroundImage) {\n const adpativeIconBackground = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-adaptive-background' },\n {\n src: backgroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n await fs.writeFile(\n path.resolve(dpiFolderPath, IC_LAUNCHER_BACKGROUND_PNG),\n adpativeIconBackground\n );\n } else {\n // Remove any instances of ic_launcher_background.png that are there from previous icons\n await removeBackgroundImageFilesAsync(projectRoot);\n }\n } catch (e) {\n throw new Error('Encountered an issue resizing adaptive app icon: ' + e);\n }\n })\n );\n\n // create ic_launcher.xml and ic_launcher_round.xml\n const icLauncherXmlString = createAdaptiveIconXmlString(backgroundImage);\n await createAdaptiveIconXmlFiles(\n projectRoot,\n icLauncherXmlString,\n // If the user only defined icon and not android.adaptiveIcon, then skip enabling the layering system\n // this will scale the image down and present it uncropped.\n isAdaptive\n );\n}\n\nfunction setBackgroundColor(backgroundColor: string | null, colors: ResourceXML) {\n return Colors.assignColorValue(colors, {\n value: backgroundColor,\n name: ICON_BACKGROUND,\n });\n}\n\nexport const createAdaptiveIconXmlString = (backgroundImage: string | null) => {\n let background = `<background android:drawable=\"@color/iconBackground\"/>`;\n if (backgroundImage) {\n background = `<background android:drawable=\"@mipmap/ic_launcher_background\"/>`;\n }\n\n return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n ${background}\n <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n</adaptive-icon>`;\n};\n\nasync function createAdaptiveIconXmlFiles(\n projectRoot: string,\n icLauncherXmlString: string,\n add: boolean\n) {\n const anyDpiV26Directory = path.resolve(projectRoot, ANDROID_RES_PATH, MIPMAP_ANYDPI_V26);\n await fs.ensureDir(anyDpiV26Directory);\n const launcherPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_XML);\n const launcherRoundPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_ROUND_XML);\n if (add) {\n await fs.writeFile(launcherPath, icLauncherXmlString);\n await fs.writeFile(launcherRoundPath, icLauncherXmlString);\n } else {\n // Remove the xml if the icon switches from adaptive to standard.\n await Promise.all(\n [launcherPath, launcherRoundPath].map(async path => {\n if (fs.existsSync(path)) {\n return await fs.remove(path);\n }\n })\n );\n }\n}\n\nasync function removeBackgroundImageFilesAsync(projectRoot: string) {\n return await Promise.all(\n Object.values(dpiValues).map(async ({ folderName }) => {\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, folderName);\n await fs.remove(path.resolve(dpiFolderPath, IC_LAUNCHER_BACKGROUND_PNG));\n })\n );\n}\n"],"file":"withAndroidIcons.js"}
1
+ {"version":3,"sources":["../../../src/plugins/icons/withAndroidIcons.ts"],"names":["Colors","AndroidConfig","dpiValues","mdpi","folderName","scale","hdpi","xhdpi","xxhdpi","xxxhdpi","BASELINE_PIXEL_SIZE","ANDROID_RES_PATH","MIPMAP_ANYDPI_V26","ICON_BACKGROUND","IC_LAUNCHER_PNG","IC_LAUNCHER_ROUND_PNG","IC_LAUNCHER_BACKGROUND_PNG","IC_LAUNCHER_FOREGROUND_PNG","IC_LAUNCHER_XML","IC_LAUNCHER_ROUND_XML","withAndroidIcons","config","foregroundImage","backgroundColor","backgroundImage","getAdaptiveIcon","icon","getIcon","withAndroidAdaptiveIconColors","setIconAsync","modRequest","projectRoot","isAdaptive","android","adaptiveIcon","modResults","setBackgroundColor","configureLegacyIconAsync","configureAdaptiveIconAsync","Promise","all","Object","values","map","dpiFolderPath","path","resolve","iconSizePx","squareIconImage","cacheType","src","width","height","resizeMode","source","roundIconImage","borderRadius","squareBackgroundLayer","roundBackgroundLayer","foreground","background","fs","ensureDir","writeFile","adpativeIconForeground","adpativeIconBackground","removeBackgroundImageFilesAsync","e","Error","icLauncherXmlString","createAdaptiveIconXmlString","createAdaptiveIconXmlFiles","colors","assignColorValue","value","name","add","anyDpiV26Directory","launcherPath","launcherRoundPath","existsSync","remove"],"mappings":"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","sourcesContent":["import {\n AndroidConfig,\n ConfigPlugin,\n withAndroidColors,\n withDangerousMod,\n} from '@expo/config-plugins';\nimport { ResourceXML } from '@expo/config-plugins/build/android/Resources';\nimport { ExpoConfig } from '@expo/config-types';\nimport { compositeImagesAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nconst { Colors } = AndroidConfig;\n\ntype DPIString = 'mdpi' | 'hdpi' | 'xhdpi' | 'xxhdpi' | 'xxxhdpi';\ntype dpiMap = Record<DPIString, { folderName: string; scale: number }>;\n\nexport const dpiValues: dpiMap = {\n mdpi: { folderName: 'mipmap-mdpi', scale: 1 },\n hdpi: { folderName: 'mipmap-hdpi', scale: 1.5 },\n xhdpi: { folderName: 'mipmap-xhdpi', scale: 2 },\n xxhdpi: { folderName: 'mipmap-xxhdpi', scale: 3 },\n xxxhdpi: { folderName: 'mipmap-xxxhdpi', scale: 4 },\n};\nconst BASELINE_PIXEL_SIZE = 48;\nexport const ANDROID_RES_PATH = 'android/app/src/main/res/';\nconst MIPMAP_ANYDPI_V26 = 'mipmap-anydpi-v26';\nconst ICON_BACKGROUND = 'iconBackground';\nconst IC_LAUNCHER_PNG = 'ic_launcher.png';\nconst IC_LAUNCHER_ROUND_PNG = 'ic_launcher_round.png';\nconst IC_LAUNCHER_BACKGROUND_PNG = 'ic_launcher_background.png';\nconst IC_LAUNCHER_FOREGROUND_PNG = 'ic_launcher_foreground.png';\nconst IC_LAUNCHER_XML = 'ic_launcher.xml';\nconst IC_LAUNCHER_ROUND_XML = 'ic_launcher_round.xml';\n\nexport const withAndroidIcons: ConfigPlugin = config => {\n const { foregroundImage, backgroundColor, backgroundImage } = getAdaptiveIcon(config);\n const icon = foregroundImage ?? getIcon(config);\n\n if (!icon) {\n return config;\n }\n\n // Apply colors.xml changes\n config = withAndroidAdaptiveIconColors(config, backgroundColor);\n return withDangerousMod(config, [\n 'android',\n async config => {\n await setIconAsync(config.modRequest.projectRoot, {\n icon,\n backgroundColor,\n backgroundImage,\n isAdaptive: !!config.android?.adaptiveIcon,\n });\n return config;\n },\n ]);\n};\n\nconst withAndroidAdaptiveIconColors: ConfigPlugin<string | null> = (config, backgroundColor) => {\n return withAndroidColors(config, config => {\n config.modResults = setBackgroundColor(backgroundColor ?? '#FFFFFF', config.modResults);\n return config;\n });\n};\n\nexport function getIcon(config: ExpoConfig) {\n return config.icon || config.android?.icon || null;\n}\n\nexport function getAdaptiveIcon(config: ExpoConfig) {\n return {\n foregroundImage: config.android?.adaptiveIcon?.foregroundImage ?? null,\n backgroundColor: config.android?.adaptiveIcon?.backgroundColor ?? null,\n backgroundImage: config.android?.adaptiveIcon?.backgroundImage ?? null,\n };\n}\n\n/**\n * Resizes the user-provided icon to create a set of legacy icon files in\n * their respective \"mipmap\" directories for <= Android 7, and creates a set of adaptive\n * icon files for > Android 7 from the adaptive icon files (if provided).\n */\nexport async function setIconAsync(\n projectRoot: string,\n {\n icon,\n backgroundColor,\n backgroundImage,\n isAdaptive,\n }: {\n icon: string | null;\n backgroundColor: string | null;\n backgroundImage: string | null;\n isAdaptive: boolean;\n }\n) {\n if (!icon) {\n return null;\n }\n\n await configureLegacyIconAsync(projectRoot, icon, backgroundImage, backgroundColor);\n\n await configureAdaptiveIconAsync(projectRoot, icon, backgroundImage, isAdaptive);\n\n return true;\n}\n\n/**\n * Configures legacy icon files to be used on Android 7 and earlier. If adaptive icon configuration\n * was provided, we create a pseudo-adaptive icon by layering the provided files (or background\n * color if no backgroundImage is provided. If no backgroundImage and no backgroundColor are provided,\n * the background is set to transparent.)\n */\nasync function configureLegacyIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName, scale }) => {\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, folderName);\n const iconSizePx = BASELINE_PIXEL_SIZE * scale;\n\n // backgroundImage overrides backgroundColor\n backgroundColor = backgroundImage ? 'transparent' : backgroundColor ?? 'transparent';\n\n let squareIconImage: Buffer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-square' },\n {\n src: icon,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor,\n }\n )\n ).source;\n let roundIconImage: Buffer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-circle' },\n {\n src: icon,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor,\n borderRadius: iconSizePx / 2,\n }\n )\n ).source;\n\n if (backgroundImage) {\n // Layer the buffers we just created on top of the background image that's provided\n const squareBackgroundLayer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-square-background' },\n {\n src: backgroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n const roundBackgroundLayer = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-standard-round-background' },\n {\n src: backgroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n borderRadius: iconSizePx / 2,\n }\n )\n ).source;\n squareIconImage = await compositeImagesAsync({\n foreground: squareIconImage,\n background: squareBackgroundLayer,\n });\n roundIconImage = await compositeImagesAsync({\n foreground: roundIconImage,\n background: roundBackgroundLayer,\n });\n }\n\n await fs.ensureDir(dpiFolderPath);\n await fs.writeFile(path.resolve(dpiFolderPath, IC_LAUNCHER_PNG), squareIconImage);\n await fs.writeFile(path.resolve(dpiFolderPath, IC_LAUNCHER_ROUND_PNG), roundIconImage);\n })\n );\n}\n\n/**\n * Configures adaptive icon files to be used on Android 8 and up. A foreground image must be provided,\n * and will have a transparent background unless:\n * - A backgroundImage is provided, or\n * - A backgroundColor was specified\n */\nexport async function configureAdaptiveIconAsync(\n projectRoot: string,\n foregroundImage: string,\n backgroundImage: string | null,\n isAdaptive: boolean\n) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName, scale }) => {\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, folderName);\n const iconSizePx = BASELINE_PIXEL_SIZE * scale;\n\n try {\n const adpativeIconForeground = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-adaptive-foreground' },\n {\n src: foregroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n await fs.writeFile(\n path.resolve(dpiFolderPath, IC_LAUNCHER_FOREGROUND_PNG),\n adpativeIconForeground\n );\n\n if (backgroundImage) {\n const adpativeIconBackground = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-adaptive-background' },\n {\n src: backgroundImage,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n await fs.writeFile(\n path.resolve(dpiFolderPath, IC_LAUNCHER_BACKGROUND_PNG),\n adpativeIconBackground\n );\n } else {\n // Remove any instances of ic_launcher_background.png that are there from previous icons\n await removeBackgroundImageFilesAsync(projectRoot);\n }\n } catch (e) {\n throw new Error('Encountered an issue resizing adaptive app icon: ' + e);\n }\n })\n );\n\n // create ic_launcher.xml and ic_launcher_round.xml\n const icLauncherXmlString = createAdaptiveIconXmlString(backgroundImage);\n await createAdaptiveIconXmlFiles(\n projectRoot,\n icLauncherXmlString,\n // If the user only defined icon and not android.adaptiveIcon, then skip enabling the layering system\n // this will scale the image down and present it uncropped.\n isAdaptive\n );\n}\n\nfunction setBackgroundColor(backgroundColor: string | null, colors: ResourceXML) {\n return Colors.assignColorValue(colors, {\n value: backgroundColor,\n name: ICON_BACKGROUND,\n });\n}\n\nexport const createAdaptiveIconXmlString = (backgroundImage: string | null) => {\n let background = `<background android:drawable=\"@color/iconBackground\"/>`;\n if (backgroundImage) {\n background = `<background android:drawable=\"@mipmap/ic_launcher_background\"/>`;\n }\n\n return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n ${background}\n <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n</adaptive-icon>`;\n};\n\nasync function createAdaptiveIconXmlFiles(\n projectRoot: string,\n icLauncherXmlString: string,\n add: boolean\n) {\n const anyDpiV26Directory = path.resolve(projectRoot, ANDROID_RES_PATH, MIPMAP_ANYDPI_V26);\n await fs.ensureDir(anyDpiV26Directory);\n const launcherPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_XML);\n const launcherRoundPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_ROUND_XML);\n if (add) {\n await fs.writeFile(launcherPath, icLauncherXmlString);\n await fs.writeFile(launcherRoundPath, icLauncherXmlString);\n } else {\n // Remove the xml if the icon switches from adaptive to standard.\n await Promise.all(\n [launcherPath, launcherRoundPath].map(async path => {\n if (fs.existsSync(path)) {\n return await fs.remove(path);\n }\n })\n );\n }\n}\n\nasync function removeBackgroundImageFilesAsync(projectRoot: string) {\n return await Promise.all(\n Object.values(dpiValues).map(async ({ folderName }) => {\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, folderName);\n await fs.remove(path.resolve(dpiFolderPath, IC_LAUNCHER_BACKGROUND_PNG));\n })\n );\n}\n"],"file":"withAndroidIcons.js"}
@@ -3,9 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.ICON_CONTENTS = void 0;
6
7
  exports.getIcons = getIcons;
7
8
  exports.setIconsAsync = setIconsAsync;
8
- exports.ICON_CONTENTS = exports.withIosIcons = void 0;
9
+ exports.withIosIcons = void 0;
9
10
 
10
11
  function _configPlugins() {
11
12
  const data = require("@expo/config-plugins");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/icons/withIosIcons.ts"],"names":["getProjectName","IOSConfig","XcodeUtils","withIosIcons","config","setIconsAsync","modRequest","projectRoot","IMAGE_CACHE_NAME","IMAGESET_PATH","ICON_CONTENTS","idiom","sizes","size","scales","getIcons","ios","icon","WarningAggregator","addWarningIOS","iosNamedProjectRoot","getIosNamedProjectPath","fs","ensureDir","imagesJson","generatedIcons","platform","isMarketing","scale","filename","getAppleIconName","iconSizePx","source","cacheType","src","name","width","height","removeTransparency","resizeMode","backgroundColor","assetPath","writeFile","push","images","projectName"],"mappings":"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","sourcesContent":["import { ConfigPlugin, IOSConfig, WarningAggregator, withDangerousMod } from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\nimport { generateImageAsync } from '@expo/image-utils';\nimport * as fs from 'fs-extra';\nimport { join } from 'path';\n\nimport { ContentsJson, ContentsJsonImageIdiom, writeContentsJsonAsync } from './AssetContents';\n\nconst { getProjectName } = IOSConfig.XcodeUtils;\n\nexport const withIosIcons: ConfigPlugin = config => {\n return withDangerousMod(config, [\n 'ios',\n async config => {\n await setIconsAsync(config, config.modRequest.projectRoot);\n return config;\n },\n ]);\n};\n\nconst IMAGE_CACHE_NAME = 'icons';\nconst IMAGESET_PATH = 'Images.xcassets/AppIcon.appiconset';\n\n// Hard-coding seemed like the clearest and safest way to implement the sizes.\nexport const ICON_CONTENTS: {\n idiom: ContentsJsonImageIdiom;\n sizes: { size: number; scales: (1 | 2 | 3)[] }[];\n}[] = [\n {\n idiom: 'iphone',\n sizes: [\n {\n size: 20,\n scales: [2, 3],\n },\n {\n size: 29,\n scales: [1, 2, 3],\n },\n {\n size: 40,\n scales: [2, 3],\n },\n {\n size: 60,\n scales: [2, 3],\n },\n // TODO: 76x76@2x seems unused now\n // {\n // size: 76,\n // scales: [2],\n // },\n ],\n },\n {\n idiom: 'ipad',\n sizes: [\n {\n size: 20,\n scales: [1, 2],\n },\n {\n size: 29,\n scales: [1, 2],\n },\n {\n size: 40,\n scales: [1, 2],\n },\n {\n size: 76,\n scales: [1, 2],\n },\n {\n size: 83.5,\n scales: [2],\n },\n ],\n },\n {\n idiom: 'ios-marketing',\n sizes: [\n {\n size: 1024,\n scales: [1],\n },\n ],\n },\n];\n\nexport function getIcons(config: Pick<ExpoConfig, 'icon' | 'ios'>): string | null {\n // No support for empty strings.\n return config.ios?.icon || config.icon || null;\n}\n\nexport async function setIconsAsync(config: ExpoConfig, projectRoot: string) {\n const icon = getIcons(config);\n if (!icon) {\n WarningAggregator.addWarningIOS(\n 'icon',\n 'This is the image that your app uses on your home screen, you will need to configure it manually.'\n );\n return;\n }\n\n // Something like projectRoot/ios/MyApp/\n const iosNamedProjectRoot = getIosNamedProjectPath(projectRoot);\n\n // Ensure the Images.xcassets/AppIcon.appiconset path exists\n await fs.ensureDir(join(iosNamedProjectRoot, IMAGESET_PATH));\n\n // Store the image JSON data for assigning via the Contents.json\n const imagesJson: ContentsJson['images'] = [];\n\n // keep track of icons that have been generated so we can reuse them in the Contents.json\n const generatedIcons: Record<string, boolean> = {};\n\n for (const platform of ICON_CONTENTS) {\n const isMarketing = platform.idiom === 'ios-marketing';\n for (const { size, scales } of platform.sizes) {\n for (const scale of scales) {\n // The marketing icon is special because it makes no sense.\n const filename = isMarketing ? 'ItunesArtwork@2x.png' : getAppleIconName(size, scale);\n // Only create an image that hasn't already been generated.\n if (!(filename in generatedIcons)) {\n const iconSizePx = size * scale;\n\n // Using this method will cache the images in `.expo` based on the properties used to generate them.\n // this method also supports remote URLs and using the global sharp instance.\n const { source } = await generateImageAsync(\n { projectRoot, cacheType: IMAGE_CACHE_NAME },\n {\n src: icon,\n name: filename,\n width: iconSizePx,\n height: iconSizePx,\n removeTransparency: true,\n // The icon should be square, but if it's not then it will be cropped.\n resizeMode: 'cover',\n // Force the background color to solid white to prevent any transparency.\n // TODO: Maybe use a more adaptive option based on the icon color?\n backgroundColor: '#ffffff',\n }\n );\n // Write image buffer to the file system.\n const assetPath = join(iosNamedProjectRoot, IMAGESET_PATH, filename);\n await fs.writeFile(assetPath, source);\n // Save a reference to the generated image so we don't create a duplicate.\n generatedIcons[filename] = true;\n }\n imagesJson.push({\n idiom: platform.idiom,\n size: `${size}x${size}`,\n // @ts-ignore: template types not supported in TS yet\n scale: `${scale}x`,\n filename,\n });\n }\n }\n }\n\n // Finally, write the Config.json\n await writeContentsJsonAsync(join(iosNamedProjectRoot, IMAGESET_PATH), { images: imagesJson });\n}\n\n/**\n * Return the project's named iOS path: ios/MyProject/\n *\n * @param projectRoot Expo project root path.\n */\nfunction getIosNamedProjectPath(projectRoot: string): string {\n const projectName = getProjectName(projectRoot);\n return join(projectRoot, 'ios', projectName);\n}\n\nfunction getAppleIconName(size: number, scale: number): string {\n return `App-Icon-${size}x${size}@${scale}x.png`;\n}\n"],"file":"withIosIcons.js"}
1
+ {"version":3,"sources":["../../../src/plugins/icons/withIosIcons.ts"],"names":["getProjectName","IOSConfig","XcodeUtils","withIosIcons","config","setIconsAsync","modRequest","projectRoot","IMAGE_CACHE_NAME","IMAGESET_PATH","ICON_CONTENTS","idiom","sizes","size","scales","getIcons","ios","icon","WarningAggregator","addWarningIOS","iosNamedProjectRoot","getIosNamedProjectPath","fs","ensureDir","imagesJson","generatedIcons","platform","isMarketing","scale","filename","getAppleIconName","iconSizePx","source","cacheType","src","name","width","height","removeTransparency","resizeMode","backgroundColor","assetPath","writeFile","push","images","projectName"],"mappings":"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","sourcesContent":["import { ConfigPlugin, IOSConfig, WarningAggregator, withDangerousMod } from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\nimport { generateImageAsync } from '@expo/image-utils';\nimport * as fs from 'fs-extra';\nimport { join } from 'path';\n\nimport { ContentsJson, ContentsJsonImageIdiom, writeContentsJsonAsync } from './AssetContents';\n\nconst { getProjectName } = IOSConfig.XcodeUtils;\n\nexport const withIosIcons: ConfigPlugin = config => {\n return withDangerousMod(config, [\n 'ios',\n async config => {\n await setIconsAsync(config, config.modRequest.projectRoot);\n return config;\n },\n ]);\n};\n\nconst IMAGE_CACHE_NAME = 'icons';\nconst IMAGESET_PATH = 'Images.xcassets/AppIcon.appiconset';\n\n// Hard-coding seemed like the clearest and safest way to implement the sizes.\nexport const ICON_CONTENTS: {\n idiom: ContentsJsonImageIdiom;\n sizes: { size: number; scales: (1 | 2 | 3)[] }[];\n}[] = [\n {\n idiom: 'iphone',\n sizes: [\n {\n size: 20,\n scales: [2, 3],\n },\n {\n size: 29,\n scales: [1, 2, 3],\n },\n {\n size: 40,\n scales: [2, 3],\n },\n {\n size: 60,\n scales: [2, 3],\n },\n // TODO: 76x76@2x seems unused now\n // {\n // size: 76,\n // scales: [2],\n // },\n ],\n },\n {\n idiom: 'ipad',\n sizes: [\n {\n size: 20,\n scales: [1, 2],\n },\n {\n size: 29,\n scales: [1, 2],\n },\n {\n size: 40,\n scales: [1, 2],\n },\n {\n size: 76,\n scales: [1, 2],\n },\n {\n size: 83.5,\n scales: [2],\n },\n ],\n },\n {\n idiom: 'ios-marketing',\n sizes: [\n {\n size: 1024,\n scales: [1],\n },\n ],\n },\n];\n\nexport function getIcons(config: Pick<ExpoConfig, 'icon' | 'ios'>): string | null {\n // No support for empty strings.\n return config.ios?.icon || config.icon || null;\n}\n\nexport async function setIconsAsync(config: ExpoConfig, projectRoot: string) {\n const icon = getIcons(config);\n if (!icon) {\n WarningAggregator.addWarningIOS(\n 'icon',\n 'This is the image that your app uses on your home screen, you will need to configure it manually.'\n );\n return;\n }\n\n // Something like projectRoot/ios/MyApp/\n const iosNamedProjectRoot = getIosNamedProjectPath(projectRoot);\n\n // Ensure the Images.xcassets/AppIcon.appiconset path exists\n await fs.ensureDir(join(iosNamedProjectRoot, IMAGESET_PATH));\n\n // Store the image JSON data for assigning via the Contents.json\n const imagesJson: ContentsJson['images'] = [];\n\n // keep track of icons that have been generated so we can reuse them in the Contents.json\n const generatedIcons: Record<string, boolean> = {};\n\n for (const platform of ICON_CONTENTS) {\n const isMarketing = platform.idiom === 'ios-marketing';\n for (const { size, scales } of platform.sizes) {\n for (const scale of scales) {\n // The marketing icon is special because it makes no sense.\n const filename = isMarketing ? 'ItunesArtwork@2x.png' : getAppleIconName(size, scale);\n // Only create an image that hasn't already been generated.\n if (!(filename in generatedIcons)) {\n const iconSizePx = size * scale;\n\n // Using this method will cache the images in `.expo` based on the properties used to generate them.\n // this method also supports remote URLs and using the global sharp instance.\n const { source } = await generateImageAsync(\n { projectRoot, cacheType: IMAGE_CACHE_NAME },\n {\n src: icon,\n name: filename,\n width: iconSizePx,\n height: iconSizePx,\n removeTransparency: true,\n // The icon should be square, but if it's not then it will be cropped.\n resizeMode: 'cover',\n // Force the background color to solid white to prevent any transparency.\n // TODO: Maybe use a more adaptive option based on the icon color?\n backgroundColor: '#ffffff',\n }\n );\n // Write image buffer to the file system.\n const assetPath = join(iosNamedProjectRoot, IMAGESET_PATH, filename);\n await fs.writeFile(assetPath, source);\n // Save a reference to the generated image so we don't create a duplicate.\n generatedIcons[filename] = true;\n }\n imagesJson.push({\n idiom: platform.idiom,\n size: `${size}x${size}`,\n // @ts-ignore: template types not supported in TS yet\n scale: `${scale}x`,\n filename,\n });\n }\n }\n }\n\n // Finally, write the Config.json\n await writeContentsJsonAsync(join(iosNamedProjectRoot, IMAGESET_PATH), { images: imagesJson });\n}\n\n/**\n * Return the project's named iOS path: ios/MyProject/\n *\n * @param projectRoot Expo project root path.\n */\nfunction getIosNamedProjectPath(projectRoot: string): string {\n const projectName = getProjectName(projectRoot);\n return join(projectRoot, 'ios', projectName);\n}\n\nfunction getAppleIconName(size: number, scale: number): string {\n return `App-Icon-${size}x${size}@${scale}x.png`;\n}\n"],"file":"withIosIcons.js"}
@@ -15,7 +15,12 @@ function _configPlugins() {
15
15
  return data;
16
16
  }
17
17
 
18
- const camelize = s => s.replace(/-./g, x => x.toUpperCase()[1]);
18
+ const toCamelCase = s => s.replace(/-./g, x => x.toUpperCase()[1]);
19
+
20
+ function isModuleExcluded(config, packageName) {
21
+ // TODO: Autolinking
22
+ return false;
23
+ }
19
24
 
20
25
  function createLegacyPlugin({
21
26
  packageName,
@@ -30,6 +35,12 @@ function createLegacyPlugin({
30
35
  }
31
36
 
32
37
  const withUnknown = config => {
38
+ // Skip using the versioned plugin when autolinking is enabled
39
+ // and doesn't link the native module.
40
+ if (!isModuleExcluded(config, packageName)) {
41
+ return (0, _configPlugins().createRunOncePlugin)(withFallback, packageName)(config);
42
+ }
43
+
33
44
  return (0, _configPlugins().withStaticPlugin)(config, {
34
45
  _isLegacyPlugin: true,
35
46
  plugin: packageName,
@@ -38,7 +49,7 @@ function createLegacyPlugin({
38
49
  });
39
50
  };
40
51
 
41
- const methodName = camelize(`with-${packageName}`);
52
+ const methodName = toCamelCase(`with-${packageName}`);
42
53
 
43
54
  if (methodName) {
44
55
  Object.defineProperty(withUnknown, 'name', {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/unversioned/createLegacyPlugin.ts"],"names":["camelize","s","replace","x","toUpperCase","createLegacyPlugin","packageName","fallback","withFallback","Array","isArray","config","withUnknown","_isLegacyPlugin","plugin","methodName","Object","defineProperty","value"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAQA,MAAMA,QAAQ,GAAIC,CAAD,IAAeA,CAAC,CAACC,OAAF,CAAU,KAAV,EAAiBC,CAAC,IAAIA,CAAC,CAACC,WAAF,GAAgB,CAAhB,CAAtB,CAAhC;;AAEO,SAASC,kBAAT,CAA4B;AACjCC,EAAAA,WADiC;AAEjCC,EAAAA;AAFiC,CAA5B,EAMU;AACf,MAAIC,YAAJ;;AAEA,MAAIC,KAAK,CAACC,OAAN,CAAcH,QAAd,CAAJ,EAA6B;AAC3BC,IAAAA,YAAY,GAAGG,MAAM,IAAI,kCAAYA,MAAZ,EAAoBJ,QAApB,CAAzB;AACD,GAFD,MAEO;AACLC,IAAAA,YAAY,GAAGD,QAAf;AACD;;AAED,QAAMK,WAAyB,GAAGD,MAAM,IAAI;AAC1C,WAAO,uCAAiBA,MAAjB,EAAyB;AAC9BE,MAAAA,eAAe,EAAE,IADa;AAE9BC,MAAAA,MAAM,EAAER,WAFsB;AAG9B;AACAC,MAAAA,QAAQ,EAAE,0CAAoBC,YAApB,EAAkCF,WAAlC;AAJoB,KAAzB,CAAP;AAMD,GAPD;;AASA,QAAMS,UAAU,GAAGf,QAAQ,CAAE,QAAOM,WAAY,EAArB,CAA3B;;AAEA,MAAIS,UAAJ,EAAgB;AACdC,IAAAA,MAAM,CAACC,cAAP,CAAsBL,WAAtB,EAAmC,MAAnC,EAA2C;AACzCM,MAAAA,KAAK,EAAEH;AADkC,KAA3C;AAGD;;AAED,SAAOH,WAAP;AACD","sourcesContent":["import {\n ConfigPlugin,\n createRunOncePlugin,\n PluginParameters,\n withPlugins,\n withStaticPlugin,\n} from '@expo/config-plugins';\n\nconst camelize = (s: string) => s.replace(/-./g, x => x.toUpperCase()[1]);\n\nexport function createLegacyPlugin({\n packageName,\n fallback,\n}: {\n packageName: string;\n fallback: ConfigPlugin | PluginParameters<typeof withPlugins>;\n}): ConfigPlugin {\n let withFallback: ConfigPlugin;\n\n if (Array.isArray(fallback)) {\n withFallback = config => withPlugins(config, fallback);\n } else {\n withFallback = fallback;\n }\n\n const withUnknown: ConfigPlugin = config => {\n return withStaticPlugin(config, {\n _isLegacyPlugin: true,\n plugin: packageName,\n // If the static plugin isn't found, use the unversioned one.\n fallback: createRunOncePlugin(withFallback, packageName),\n });\n };\n\n const methodName = camelize(`with-${packageName}`);\n\n if (methodName) {\n Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n }\n\n return withUnknown;\n}\n"],"file":"createLegacyPlugin.js"}
1
+ {"version":3,"sources":["../../../src/plugins/unversioned/createLegacyPlugin.ts"],"names":["toCamelCase","s","replace","x","toUpperCase","isModuleExcluded","config","packageName","createLegacyPlugin","fallback","withFallback","Array","isArray","withUnknown","_isLegacyPlugin","plugin","methodName","Object","defineProperty","value"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AASA,MAAMA,WAAW,GAAIC,CAAD,IAAeA,CAAC,CAACC,OAAF,CAAU,KAAV,EAAiBC,CAAC,IAAIA,CAAC,CAACC,WAAF,GAAgB,CAAhB,CAAtB,CAAnC;;AAEA,SAASC,gBAAT,CAA0BC,MAA1B,EAAiEC,WAAjE,EAA+F;AAC7F;AACA,SAAO,KAAP;AACD;;AAEM,SAASC,kBAAT,CAA4B;AACjCD,EAAAA,WADiC;AAEjCE,EAAAA;AAFiC,CAA5B,EAMU;AACf,MAAIC,YAAJ;;AAEA,MAAIC,KAAK,CAACC,OAAN,CAAcH,QAAd,CAAJ,EAA6B;AAC3BC,IAAAA,YAAY,GAAGJ,MAAM,IAAI,kCAAYA,MAAZ,EAAoBG,QAApB,CAAzB;AACD,GAFD,MAEO;AACLC,IAAAA,YAAY,GAAGD,QAAf;AACD;;AAED,QAAMI,WAAyB,GAAGP,MAAM,IAAI;AAC1C;AACA;AACA,QAAI,CAACD,gBAAgB,CAACC,MAAD,EAASC,WAAT,CAArB,EAA4C;AAC1C,aAAO,0CAAoBG,YAApB,EAAkCH,WAAlC,EAA+CD,MAA/C,CAAP;AACD;;AAED,WAAO,uCAAiBA,MAAjB,EAAyB;AAC9BQ,MAAAA,eAAe,EAAE,IADa;AAE9BC,MAAAA,MAAM,EAAER,WAFsB;AAG9B;AACAE,MAAAA,QAAQ,EAAE,0CAAoBC,YAApB,EAAkCH,WAAlC;AAJoB,KAAzB,CAAP;AAMD,GAbD;;AAeA,QAAMS,UAAU,GAAGhB,WAAW,CAAE,QAAOO,WAAY,EAArB,CAA9B;;AAEA,MAAIS,UAAJ,EAAgB;AACdC,IAAAA,MAAM,CAACC,cAAP,CAAsBL,WAAtB,EAAmC,MAAnC,EAA2C;AACzCM,MAAAA,KAAK,EAAEH;AADkC,KAA3C;AAGD;;AAED,SAAOH,WAAP;AACD","sourcesContent":["import {\n ConfigPlugin,\n createRunOncePlugin,\n PluginParameters,\n withPlugins,\n withStaticPlugin,\n} from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\n\nconst toCamelCase = (s: string) => s.replace(/-./g, x => x.toUpperCase()[1]);\n\nfunction isModuleExcluded(config: Pick<ExpoConfig, '_internal'>, packageName: string): boolean {\n // TODO: Autolinking\n return false;\n}\n\nexport function createLegacyPlugin({\n packageName,\n fallback,\n}: {\n packageName: string;\n fallback: ConfigPlugin | PluginParameters<typeof withPlugins>;\n}): ConfigPlugin {\n let withFallback: ConfigPlugin;\n\n if (Array.isArray(fallback)) {\n withFallback = config => withPlugins(config, fallback);\n } else {\n withFallback = fallback;\n }\n\n const withUnknown: ConfigPlugin = config => {\n // Skip using the versioned plugin when autolinking is enabled\n // and doesn't link the native module.\n if (!isModuleExcluded(config, packageName)) {\n return createRunOncePlugin(withFallback, packageName)(config);\n }\n\n return withStaticPlugin(config, {\n _isLegacyPlugin: true,\n plugin: packageName,\n // If the static plugin isn't found, use the unversioned one.\n fallback: createRunOncePlugin(withFallback, packageName),\n });\n };\n\n const methodName = toCamelCase(`with-${packageName}`);\n\n if (methodName) {\n Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n }\n\n return withUnknown;\n}\n"],"file":"createLegacyPlugin.js"}
@@ -3,12 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getFacebookScheme = getFacebookScheme;
6
+ exports.getFacebookAdvertiserIDCollection = getFacebookAdvertiserIDCollection;
7
7
  exports.getFacebookAppId = getFacebookAppId;
8
- exports.getFacebookDisplayName = getFacebookDisplayName;
9
8
  exports.getFacebookAutoInitEnabled = getFacebookAutoInitEnabled;
10
9
  exports.getFacebookAutoLogAppEvents = getFacebookAutoLogAppEvents;
11
- exports.getFacebookAdvertiserIDCollection = getFacebookAdvertiserIDCollection;
10
+ exports.getFacebookDisplayName = getFacebookDisplayName;
11
+ exports.getFacebookScheme = getFacebookScheme;
12
12
  exports.setFacebookConfig = setFacebookConfig;
13
13
  exports.withFacebookManifest = exports.withFacebookAppIdString = void 0;
14
14
 
@@ -3,20 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getFacebookScheme = getFacebookScheme;
6
+ exports.getFacebookAdvertiserIDCollection = getFacebookAdvertiserIDCollection;
7
7
  exports.getFacebookAppId = getFacebookAppId;
8
- exports.getFacebookDisplayName = getFacebookDisplayName;
9
8
  exports.getFacebookAutoInitEnabled = getFacebookAutoInitEnabled;
10
9
  exports.getFacebookAutoLogAppEvents = getFacebookAutoLogAppEvents;
11
- exports.getFacebookAdvertiserIDCollection = getFacebookAdvertiserIDCollection;
12
- exports.setFacebookConfig = setFacebookConfig;
13
- exports.setFacebookScheme = setFacebookScheme;
14
- exports.setFacebookAutoInitEnabled = setFacebookAutoInitEnabled;
15
- exports.setFacebookAutoLogAppEventsEnabled = setFacebookAutoLogAppEventsEnabled;
10
+ exports.getFacebookDisplayName = getFacebookDisplayName;
11
+ exports.getFacebookScheme = getFacebookScheme;
16
12
  exports.setFacebookAdvertiserIDCollectionEnabled = setFacebookAdvertiserIDCollectionEnabled;
17
13
  exports.setFacebookAppId = setFacebookAppId;
18
- exports.setFacebookDisplayName = setFacebookDisplayName;
19
14
  exports.setFacebookApplicationQuerySchemes = setFacebookApplicationQuerySchemes;
15
+ exports.setFacebookAutoInitEnabled = setFacebookAutoInitEnabled;
16
+ exports.setFacebookAutoLogAppEventsEnabled = setFacebookAutoLogAppEventsEnabled;
17
+ exports.setFacebookConfig = setFacebookConfig;
18
+ exports.setFacebookDisplayName = setFacebookDisplayName;
19
+ exports.setFacebookScheme = setFacebookScheme;
20
20
  exports.withIosFacebook = void 0;
21
21
 
22
22
  function _configPlugins() {
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setNavigationBarColors = setNavigationBarColors;
7
- exports.setNavigationBarStyles = setNavigationBarStyles;
8
- exports.getNavigationBarImmersiveMode = getNavigationBarImmersiveMode;
9
6
  exports.getNavigationBarColor = getNavigationBarColor;
7
+ exports.getNavigationBarImmersiveMode = getNavigationBarImmersiveMode;
10
8
  exports.getNavigationBarStyle = getNavigationBarStyle;
9
+ exports.setNavigationBarColors = setNavigationBarColors;
10
+ exports.setNavigationBarStyles = setNavigationBarStyles;
11
11
  exports.withNavigationBar = void 0;
12
12
 
13
13
  function _configPlugins() {
@@ -1,3 +1,2 @@
1
- import { ConfigPlugin } from '@expo/config-plugins';
2
- declare const _default: ConfigPlugin<void>;
1
+ declare const _default: import("@expo/config-plugins").ConfigPlugin<void>;
3
2
  export default _default;
@@ -5,16 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- function _configPlugins() {
9
- const data = require("@expo/config-plugins");
10
-
11
- _configPlugins = function () {
12
- return data;
13
- };
14
-
15
- return data;
16
- }
17
-
18
8
  function _createLegacyPlugin() {
19
9
  const data = require("../createLegacyPlugin");
20
10
 
@@ -35,18 +25,10 @@ function _withAndroidNotifications() {
35
25
  return data;
36
26
  }
37
27
 
38
- const withNotificationsEntitlement = (config, mode) => {
39
- return (0, _configPlugins().withEntitlementsPlist)(config, config => {
40
- config.modResults['aps-environment'] = mode;
41
- return config;
42
- });
43
- };
44
-
45
28
  var _default = (0, _createLegacyPlugin().createLegacyPlugin)({
46
29
  packageName: 'expo-notifications',
47
30
  fallback: [// Android
48
- _withAndroidNotifications().withNotificationManifest, _withAndroidNotifications().withNotificationIconColor, _withAndroidNotifications().withNotificationIcons, // iOS
49
- [withNotificationsEntitlement, 'development']]
31
+ _withAndroidNotifications().withNotificationManifest, _withAndroidNotifications().withNotificationIconColor, _withAndroidNotifications().withNotificationIcons]
50
32
  });
51
33
 
52
34
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/plugins/unversioned/expo-notifications/expo-notifications.ts"],"names":["withNotificationsEntitlement","config","mode","modResults","packageName","fallback","withNotificationManifest","withNotificationIconColor","withNotificationIcons"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMA,MAAMA,4BAAwE,GAAG,CAACC,MAAD,EAASC,IAAT,KAAkB;AACjG,SAAO,4CAAsBD,MAAtB,EAA8BA,MAAM,IAAI;AAC7CA,IAAAA,MAAM,CAACE,UAAP,CAAkB,iBAAlB,IAAuCD,IAAvC;AACA,WAAOD,MAAP;AACD,GAHM,CAAP;AAID,CALD;;eAOe,8CAAmB;AAChCG,EAAAA,WAAW,EAAE,oBADmB;AAEhCC,EAAAA,QAAQ,EAAE,CACR;AACAC,sDAFQ,EAGRC,qDAHQ,EAIRC,iDAJQ,EAKR;AACA,GAACR,4BAAD,EAA+B,aAA/B,CANQ;AAFsB,CAAnB,C","sourcesContent":["import { ConfigPlugin, withEntitlementsPlist } from '@expo/config-plugins';\n\nimport { createLegacyPlugin } from '../createLegacyPlugin';\nimport {\n withNotificationIconColor,\n withNotificationIcons,\n withNotificationManifest,\n} from './withAndroidNotifications';\n\nconst withNotificationsEntitlement: ConfigPlugin<'production' | 'development'> = (config, mode) => {\n return withEntitlementsPlist(config, config => {\n config.modResults['aps-environment'] = mode;\n return config;\n });\n};\n\nexport default createLegacyPlugin({\n packageName: 'expo-notifications',\n fallback: [\n // Android\n withNotificationManifest,\n withNotificationIconColor,\n withNotificationIcons,\n // iOS\n [withNotificationsEntitlement, 'development'],\n ],\n});\n"],"file":"expo-notifications.js"}
1
+ {"version":3,"sources":["../../../../src/plugins/unversioned/expo-notifications/expo-notifications.ts"],"names":["packageName","fallback","withNotificationManifest","withNotificationIconColor","withNotificationIcons"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;eAMe,8CAAmB;AAChCA,EAAAA,WAAW,EAAE,oBADmB;AAEhCC,EAAAA,QAAQ,EAAE,CACR;AACAC,sDAFQ,EAGRC,qDAHQ,EAIRC,iDAJQ;AAFsB,CAAnB,C","sourcesContent":["import { createLegacyPlugin } from '../createLegacyPlugin';\nimport {\n withNotificationIconColor,\n withNotificationIcons,\n withNotificationManifest,\n} from './withAndroidNotifications';\n\nexport default createLegacyPlugin({\n packageName: 'expo-notifications',\n fallback: [\n // Android\n withNotificationManifest,\n withNotificationIconColor,\n withNotificationIcons,\n ],\n});\n"],"file":"expo-notifications.js"}
@@ -3,12 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getNotificationIcon = getNotificationIcon;
6
+ exports.NOTIFICATION_ICON_RESOURCE = exports.NOTIFICATION_ICON_COLOR_RESOURCE = exports.NOTIFICATION_ICON_COLOR = exports.NOTIFICATION_ICON = exports.META_DATA_NOTIFICATION_ICON_COLOR = exports.META_DATA_NOTIFICATION_ICON = void 0;
7
7
  exports.getNotificationColor = getNotificationColor;
8
- exports.setNotificationIconAsync = setNotificationIconAsync;
8
+ exports.getNotificationIcon = getNotificationIcon;
9
9
  exports.setNotificationConfig = setNotificationConfig;
10
+ exports.setNotificationIconAsync = setNotificationIconAsync;
10
11
  exports.setNotificationIconColor = setNotificationIconColor;
11
- exports.withNotificationManifest = exports.withNotificationIconColor = exports.withNotificationIcons = exports.NOTIFICATION_ICON_COLOR_RESOURCE = exports.NOTIFICATION_ICON_COLOR = exports.NOTIFICATION_ICON_RESOURCE = exports.NOTIFICATION_ICON = exports.META_DATA_NOTIFICATION_ICON_COLOR = exports.META_DATA_NOTIFICATION_ICON = void 0;
12
+ exports.withNotificationManifest = exports.withNotificationIcons = exports.withNotificationIconColor = void 0;
12
13
 
13
14
  function _configPlugins() {
14
15
  const data = require("@expo/config-plugins");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/plugins/unversioned/expo-notifications/withAndroidNotifications.ts"],"names":["Colors","AndroidConfig","addMetaDataItemToMainApplication","getMainApplicationOrThrow","removeMetaDataItemFromMainApplication","Manifest","BASELINE_PIXEL_SIZE","META_DATA_NOTIFICATION_ICON","META_DATA_NOTIFICATION_ICON_COLOR","NOTIFICATION_ICON","NOTIFICATION_ICON_RESOURCE","NOTIFICATION_ICON_COLOR","NOTIFICATION_ICON_COLOR_RESOURCE","withNotificationIcons","config","setNotificationIconAsync","modRequest","projectRoot","withNotificationIconColor","modResults","setNotificationIconColor","withNotificationManifest","setNotificationConfig","getNotificationIcon","notification","icon","getNotificationColor","color","writeNotificationIconImageFilesAsync","removeNotificationIconImageFilesAsync","manifest","mainApplication","colors","assignColorValue","name","value","Promise","all","Object","values","dpiValues","map","folderName","scale","drawableFolderName","replace","dpiFolderPath","path","resolve","ANDROID_RES_PATH","fs","ensureDir","iconSizePx","resizedIcon","cacheType","src","width","height","resizeMode","backgroundColor","source","writeFile","e","Error","remove"],"mappings":"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","sourcesContent":["import {\n AndroidConfig,\n ConfigPlugin,\n withAndroidColors,\n withAndroidManifest,\n withDangerousMod,\n} from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\nimport { generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { ANDROID_RES_PATH, dpiValues } from '../../icons/withAndroidIcons';\n\nconst { Colors } = AndroidConfig;\nconst {\n addMetaDataItemToMainApplication,\n getMainApplicationOrThrow,\n removeMetaDataItemFromMainApplication,\n} = AndroidConfig.Manifest;\n\ntype AndroidManifest = AndroidConfig.Manifest.AndroidManifest;\nconst BASELINE_PIXEL_SIZE = 24;\nexport const META_DATA_NOTIFICATION_ICON = 'expo.modules.notifications.default_notification_icon';\nexport const META_DATA_NOTIFICATION_ICON_COLOR =\n 'expo.modules.notifications.default_notification_color';\nexport const NOTIFICATION_ICON = 'notification_icon';\nexport const NOTIFICATION_ICON_RESOURCE = `@drawable/${NOTIFICATION_ICON}`;\nexport const NOTIFICATION_ICON_COLOR = 'notification_icon_color';\nexport const NOTIFICATION_ICON_COLOR_RESOURCE = `@color/${NOTIFICATION_ICON_COLOR}`;\n\nexport const withNotificationIcons: ConfigPlugin = config => {\n return withDangerousMod(config, [\n 'android',\n async config => {\n await setNotificationIconAsync(config, config.modRequest.projectRoot);\n return config;\n },\n ]);\n};\n\nexport const withNotificationIconColor: ConfigPlugin = config => {\n return withAndroidColors(config, config => {\n config.modResults = setNotificationIconColor(config, config.modResults);\n return config;\n });\n};\n\nexport const withNotificationManifest: ConfigPlugin = config => {\n return withAndroidManifest(config, config => {\n config.modResults = setNotificationConfig(config, config.modResults);\n return config;\n });\n};\n\nexport function getNotificationIcon(config: ExpoConfig) {\n return config.notification?.icon || null;\n}\n\nexport function getNotificationColor(config: ExpoConfig) {\n return config.notification?.color || null;\n}\n\n/**\n * Applies configuration for expo-notifications, including\n * the notification icon and notification color.\n */\nexport async function setNotificationIconAsync(config: ExpoConfig, projectRoot: string) {\n const icon = getNotificationIcon(config);\n if (icon) {\n await writeNotificationIconImageFilesAsync(icon, projectRoot);\n } else {\n await removeNotificationIconImageFilesAsync(projectRoot);\n }\n}\n\nexport function setNotificationConfig(config: ExpoConfig, manifest: AndroidManifest) {\n const icon = getNotificationIcon(config);\n const color = getNotificationColor(config);\n const mainApplication = getMainApplicationOrThrow(manifest);\n if (icon) {\n addMetaDataItemToMainApplication(\n mainApplication,\n META_DATA_NOTIFICATION_ICON,\n NOTIFICATION_ICON_RESOURCE,\n 'resource'\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, META_DATA_NOTIFICATION_ICON);\n }\n if (color) {\n addMetaDataItemToMainApplication(\n mainApplication,\n META_DATA_NOTIFICATION_ICON_COLOR,\n NOTIFICATION_ICON_COLOR_RESOURCE,\n 'resource'\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, META_DATA_NOTIFICATION_ICON_COLOR);\n }\n return manifest;\n}\n\nexport function setNotificationIconColor(\n config: ExpoConfig,\n colors: AndroidConfig.Resources.ResourceXML\n) {\n return Colors.assignColorValue(colors, {\n name: NOTIFICATION_ICON_COLOR,\n value: getNotificationColor(config),\n });\n}\n\nasync function writeNotificationIconImageFilesAsync(icon: string, projectRoot: string) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName, scale }) => {\n const drawableFolderName = folderName.replace('mipmap', 'drawable');\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, drawableFolderName);\n await fs.ensureDir(dpiFolderPath);\n const iconSizePx = BASELINE_PIXEL_SIZE * scale;\n\n try {\n const resizedIcon = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-notification' },\n {\n src: icon,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n await fs.writeFile(path.resolve(dpiFolderPath, NOTIFICATION_ICON + '.png'), resizedIcon);\n } catch (e) {\n throw new Error('Encountered an issue resizing Android notification icon: ' + e);\n }\n })\n );\n}\n\nasync function removeNotificationIconImageFilesAsync(projectRoot: string) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName }) => {\n const drawableFolderName = folderName.replace('mipmap', 'drawable');\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, drawableFolderName);\n await fs.remove(path.resolve(dpiFolderPath, NOTIFICATION_ICON + '.png'));\n })\n );\n}\n"],"file":"withAndroidNotifications.js"}
1
+ {"version":3,"sources":["../../../../src/plugins/unversioned/expo-notifications/withAndroidNotifications.ts"],"names":["Colors","AndroidConfig","addMetaDataItemToMainApplication","getMainApplicationOrThrow","removeMetaDataItemFromMainApplication","Manifest","BASELINE_PIXEL_SIZE","META_DATA_NOTIFICATION_ICON","META_DATA_NOTIFICATION_ICON_COLOR","NOTIFICATION_ICON","NOTIFICATION_ICON_RESOURCE","NOTIFICATION_ICON_COLOR","NOTIFICATION_ICON_COLOR_RESOURCE","withNotificationIcons","config","setNotificationIconAsync","modRequest","projectRoot","withNotificationIconColor","modResults","setNotificationIconColor","withNotificationManifest","setNotificationConfig","getNotificationIcon","notification","icon","getNotificationColor","color","writeNotificationIconImageFilesAsync","removeNotificationIconImageFilesAsync","manifest","mainApplication","colors","assignColorValue","name","value","Promise","all","Object","values","dpiValues","map","folderName","scale","drawableFolderName","replace","dpiFolderPath","path","resolve","ANDROID_RES_PATH","fs","ensureDir","iconSizePx","resizedIcon","cacheType","src","width","height","resizeMode","backgroundColor","source","writeFile","e","Error","remove"],"mappings":"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","sourcesContent":["import {\n AndroidConfig,\n ConfigPlugin,\n withAndroidColors,\n withAndroidManifest,\n withDangerousMod,\n} from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\nimport { generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { ANDROID_RES_PATH, dpiValues } from '../../icons/withAndroidIcons';\n\nconst { Colors } = AndroidConfig;\nconst {\n addMetaDataItemToMainApplication,\n getMainApplicationOrThrow,\n removeMetaDataItemFromMainApplication,\n} = AndroidConfig.Manifest;\n\ntype AndroidManifest = AndroidConfig.Manifest.AndroidManifest;\nconst BASELINE_PIXEL_SIZE = 24;\nexport const META_DATA_NOTIFICATION_ICON = 'expo.modules.notifications.default_notification_icon';\nexport const META_DATA_NOTIFICATION_ICON_COLOR =\n 'expo.modules.notifications.default_notification_color';\nexport const NOTIFICATION_ICON = 'notification_icon';\nexport const NOTIFICATION_ICON_RESOURCE = `@drawable/${NOTIFICATION_ICON}`;\nexport const NOTIFICATION_ICON_COLOR = 'notification_icon_color';\nexport const NOTIFICATION_ICON_COLOR_RESOURCE = `@color/${NOTIFICATION_ICON_COLOR}`;\n\nexport const withNotificationIcons: ConfigPlugin = config => {\n return withDangerousMod(config, [\n 'android',\n async config => {\n await setNotificationIconAsync(config, config.modRequest.projectRoot);\n return config;\n },\n ]);\n};\n\nexport const withNotificationIconColor: ConfigPlugin = config => {\n return withAndroidColors(config, config => {\n config.modResults = setNotificationIconColor(config, config.modResults);\n return config;\n });\n};\n\nexport const withNotificationManifest: ConfigPlugin = config => {\n return withAndroidManifest(config, config => {\n config.modResults = setNotificationConfig(config, config.modResults);\n return config;\n });\n};\n\nexport function getNotificationIcon(config: ExpoConfig) {\n return config.notification?.icon || null;\n}\n\nexport function getNotificationColor(config: ExpoConfig) {\n return config.notification?.color || null;\n}\n\n/**\n * Applies configuration for expo-notifications, including\n * the notification icon and notification color.\n */\nexport async function setNotificationIconAsync(config: ExpoConfig, projectRoot: string) {\n const icon = getNotificationIcon(config);\n if (icon) {\n await writeNotificationIconImageFilesAsync(icon, projectRoot);\n } else {\n await removeNotificationIconImageFilesAsync(projectRoot);\n }\n}\n\nexport function setNotificationConfig(config: ExpoConfig, manifest: AndroidManifest) {\n const icon = getNotificationIcon(config);\n const color = getNotificationColor(config);\n const mainApplication = getMainApplicationOrThrow(manifest);\n if (icon) {\n addMetaDataItemToMainApplication(\n mainApplication,\n META_DATA_NOTIFICATION_ICON,\n NOTIFICATION_ICON_RESOURCE,\n 'resource'\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, META_DATA_NOTIFICATION_ICON);\n }\n if (color) {\n addMetaDataItemToMainApplication(\n mainApplication,\n META_DATA_NOTIFICATION_ICON_COLOR,\n NOTIFICATION_ICON_COLOR_RESOURCE,\n 'resource'\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, META_DATA_NOTIFICATION_ICON_COLOR);\n }\n return manifest;\n}\n\nexport function setNotificationIconColor(\n config: ExpoConfig,\n colors: AndroidConfig.Resources.ResourceXML\n) {\n return Colors.assignColorValue(colors, {\n name: NOTIFICATION_ICON_COLOR,\n value: getNotificationColor(config),\n });\n}\n\nasync function writeNotificationIconImageFilesAsync(icon: string, projectRoot: string) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName, scale }) => {\n const drawableFolderName = folderName.replace('mipmap', 'drawable');\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, drawableFolderName);\n await fs.ensureDir(dpiFolderPath);\n const iconSizePx = BASELINE_PIXEL_SIZE * scale;\n\n try {\n const resizedIcon = (\n await generateImageAsync(\n { projectRoot, cacheType: 'android-notification' },\n {\n src: icon,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor: 'transparent',\n }\n )\n ).source;\n await fs.writeFile(path.resolve(dpiFolderPath, NOTIFICATION_ICON + '.png'), resizedIcon);\n } catch (e) {\n throw new Error('Encountered an issue resizing Android notification icon: ' + e);\n }\n })\n );\n}\n\nasync function removeNotificationIconImageFilesAsync(projectRoot: string) {\n await Promise.all(\n Object.values(dpiValues).map(async ({ folderName }) => {\n const drawableFolderName = folderName.replace('mipmap', 'drawable');\n const dpiFolderPath = path.resolve(projectRoot, ANDROID_RES_PATH, drawableFolderName);\n await fs.remove(path.resolve(dpiFolderPath, NOTIFICATION_ICON + '.png'));\n })\n );\n}\n"],"file":"withAndroidNotifications.js"}
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getAndroidSplashConfig = getAndroidSplashConfig;
7
6
  exports.getAndroidDarkSplashConfig = getAndroidDarkSplashConfig;
7
+ exports.getAndroidSplashConfig = getAndroidSplashConfig;
8
8
  const defaultResizeMode = 'contain';
9
9
 
10
10
  function getAndroidSplashConfig(config) {
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.removeOldSplashStyleGroup = removeOldSplashStyleGroup;
7
6
  exports.getSplashBackgroundColor = getSplashBackgroundColor;
8
7
  exports.getSplashDarkBackgroundColor = getSplashDarkBackgroundColor;
9
- exports.setSplashStylesForTheme = setSplashStylesForTheme;
8
+ exports.removeOldSplashStyleGroup = removeOldSplashStyleGroup;
10
9
  exports.setSplashColorsForTheme = setSplashColorsForTheme;
10
+ exports.setSplashStylesForTheme = setSplashStylesForTheme;
11
11
  exports.withAndroidSplashStyles = void 0;
12
12
 
13
13
  function _configPlugins() {
@@ -1,5 +1,8 @@
1
1
  import { ConfigPlugin, InfoPlist } from '@expo/config-plugins';
2
2
  import { ExpoConfig } from '@expo/config-types';
3
3
  export declare const withIosRootViewBackgroundColor: ConfigPlugin;
4
+ /** The template was changed in SDK 43 to move the background color logic to the `expo-system-ui` module */
5
+ export declare function shouldUseLegacyBehavior(config: Pick<ExpoConfig, 'sdkVersion'>): boolean;
6
+ export declare function warnSystemUIMissing(config: Pick<ExpoConfig, 'sdkVersion' | 'backgroundColor' | 'ios'>): void;
4
7
  export declare function setRootViewBackgroundColor(config: Pick<ExpoConfig, 'backgroundColor' | 'ios'>, infoPlist: InfoPlist): InfoPlist;
5
8
  export declare function getRootViewBackgroundColor(config: Pick<ExpoConfig, 'ios' | 'backgroundColor'>): string | null;
@@ -3,8 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setRootViewBackgroundColor = setRootViewBackgroundColor;
7
6
  exports.getRootViewBackgroundColor = getRootViewBackgroundColor;
7
+ exports.setRootViewBackgroundColor = setRootViewBackgroundColor;
8
+ exports.shouldUseLegacyBehavior = shouldUseLegacyBehavior;
9
+ exports.warnSystemUIMissing = warnSystemUIMissing;
8
10
  exports.withIosRootViewBackgroundColor = void 0;
9
11
 
10
12
  function _configPlugins() {
@@ -27,6 +29,16 @@ function _normalizeColor() {
27
29
  return data;
28
30
  }
29
31
 
32
+ function _semver() {
33
+ const data = _interopRequireDefault(require("semver"));
34
+
35
+ _semver = function () {
36
+ return data;
37
+ };
38
+
39
+ return data;
40
+ }
41
+
30
42
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
43
 
32
44
  // @ts-ignore: uses flow
@@ -37,14 +49,38 @@ const debug = require('debug')('expo:system-ui:plugin:ios');
37
49
 
38
50
  const withIosRootViewBackgroundColor = config => {
39
51
  config = (0, _configPlugins().withInfoPlist)(config, config => {
40
- config.modResults = setRootViewBackgroundColor(config, config.modResults);
52
+ if (shouldUseLegacyBehavior(config)) {
53
+ config.modResults = setRootViewBackgroundColor(config, config.modResults);
54
+ } else {
55
+ warnSystemUIMissing(config);
56
+ }
57
+
41
58
  return config;
42
59
  });
43
60
  return config;
44
61
  };
62
+ /** The template was changed in SDK 43 to move the background color logic to the `expo-system-ui` module */
63
+
45
64
 
46
65
  exports.withIosRootViewBackgroundColor = withIosRootViewBackgroundColor;
47
66
 
67
+ function shouldUseLegacyBehavior(config) {
68
+ try {
69
+ return !!(config.sdkVersion && _semver().default.lt(config.sdkVersion, '44.0.0'));
70
+ } catch {}
71
+
72
+ return false;
73
+ }
74
+
75
+ function warnSystemUIMissing(config) {
76
+ const backgroundColor = getRootViewBackgroundColor(config);
77
+
78
+ if (backgroundColor) {
79
+ // Background color needs to be set programmatically
80
+ _configPlugins().WarningAggregator.addWarningIOS('ios.backgroundColor', 'Install expo-system-ui to enable this feature', 'https://docs.expo.dev/build-reference/migrating/#expo-config--backgroundcolor--depends-on');
81
+ }
82
+ }
83
+
48
84
  function setRootViewBackgroundColor(config, infoPlist) {
49
85
  const backgroundColor = getRootViewBackgroundColor(config);
50
86
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/plugins/unversioned/expo-system-ui/withIosRootViewBackgroundColor.ts"],"names":["BACKGROUND_COLOR_KEY","debug","require","withIosRootViewBackgroundColor","config","modResults","setRootViewBackgroundColor","infoPlist","backgroundColor","getRootViewBackgroundColor","color","Error","ios"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AADA;AAGA;AACA,MAAMA,oBAAoB,GAAG,4BAA7B;;AAEA,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAD,CAAP,CAAiB,2BAAjB,CAAd;;AAEO,MAAMC,8BAA4C,GAAGC,MAAM,IAAI;AACpEA,EAAAA,MAAM,GAAG,oCAAcA,MAAd,EAAsBA,MAAM,IAAI;AACvCA,IAAAA,MAAM,CAACC,UAAP,GAAoBC,0BAA0B,CAACF,MAAD,EAASA,MAAM,CAACC,UAAhB,CAA9C;AACA,WAAOD,MAAP;AACD,GAHQ,CAAT;AAIA,SAAOA,MAAP;AACD,CANM;;;;AAQA,SAASE,0BAAT,CACLF,MADK,EAELG,SAFK,EAGM;AACX,QAAMC,eAAe,GAAGC,0BAA0B,CAACL,MAAD,CAAlD;;AACA,MAAI,CAACI,eAAL,EAAsB;AACpB,WAAOD,SAAS,CAACP,oBAAD,CAAhB;AACD,GAFD,MAEO;AACL,QAAIU,KAAK,GAAG,+BAAeF,eAAf,CAAZ;;AACA,QAAI,CAACE,KAAL,EAAY;AACV,YAAM,IAAIC,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDD,IAAAA,KAAK,GAAG,CAAEA,KAAK,IAAI,EAAV,GAAiBA,KAAK,KAAK,CAA5B,MAAoC,CAA5C;AACAH,IAAAA,SAAS,CAACP,oBAAD,CAAT,GAAkCU,KAAlC;AAEAT,IAAAA,KAAK,CAAE,kBAAiBO,eAAgB,OAAME,KAAM,EAA/C,CAAL;AACD;;AACD,SAAOH,SAAP;AACD;;AAEM,SAASE,0BAAT,CAAoCL,MAApC,EAAyF;AAAA;;AAC9F,SAAO,gBAAAA,MAAM,CAACQ,GAAP,4DAAYJ,eAAZ,KAA+BJ,MAAM,CAACI,eAAtC,IAAyD,IAAhE;AACD","sourcesContent":["import { ConfigPlugin, InfoPlist, withInfoPlist } from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\n// @ts-ignore: uses flow\nimport normalizeColor from '@react-native/normalize-color';\n\n// Maps to the template AppDelegate.m\nconst BACKGROUND_COLOR_KEY = 'RCTRootViewBackgroundColor';\n\nconst debug = require('debug')('expo:system-ui:plugin:ios');\n\nexport const withIosRootViewBackgroundColor: ConfigPlugin = config => {\n config = withInfoPlist(config, config => {\n config.modResults = setRootViewBackgroundColor(config, config.modResults);\n return config;\n });\n return config;\n};\n\nexport function setRootViewBackgroundColor(\n config: Pick<ExpoConfig, 'backgroundColor' | 'ios'>,\n infoPlist: InfoPlist\n): InfoPlist {\n const backgroundColor = getRootViewBackgroundColor(config);\n if (!backgroundColor) {\n delete infoPlist[BACKGROUND_COLOR_KEY];\n } else {\n let color = normalizeColor(backgroundColor);\n if (!color) {\n throw new Error('Invalid background color on iOS');\n }\n color = ((color << 24) | (color >>> 8)) >>> 0;\n infoPlist[BACKGROUND_COLOR_KEY] = color;\n\n debug(`Convert color: ${backgroundColor} -> ${color}`);\n }\n return infoPlist;\n}\n\nexport function getRootViewBackgroundColor(config: Pick<ExpoConfig, 'ios' | 'backgroundColor'>) {\n return config.ios?.backgroundColor || config.backgroundColor || null;\n}\n"],"file":"withIosRootViewBackgroundColor.js"}
1
+ {"version":3,"sources":["../../../../src/plugins/unversioned/expo-system-ui/withIosRootViewBackgroundColor.ts"],"names":["BACKGROUND_COLOR_KEY","debug","require","withIosRootViewBackgroundColor","config","shouldUseLegacyBehavior","modResults","setRootViewBackgroundColor","warnSystemUIMissing","sdkVersion","semver","lt","backgroundColor","getRootViewBackgroundColor","WarningAggregator","addWarningIOS","infoPlist","color","Error","ios"],"mappings":";;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAFA;AAIA;AACA,MAAMA,oBAAoB,GAAG,4BAA7B;;AAEA,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAD,CAAP,CAAiB,2BAAjB,CAAd;;AAEO,MAAMC,8BAA4C,GAAGC,MAAM,IAAI;AACpEA,EAAAA,MAAM,GAAG,oCAAcA,MAAd,EAAsBA,MAAM,IAAI;AACvC,QAAIC,uBAAuB,CAACD,MAAD,CAA3B,EAAqC;AACnCA,MAAAA,MAAM,CAACE,UAAP,GAAoBC,0BAA0B,CAACH,MAAD,EAASA,MAAM,CAACE,UAAhB,CAA9C;AACD,KAFD,MAEO;AACLE,MAAAA,mBAAmB,CAACJ,MAAD,CAAnB;AACD;;AACD,WAAOA,MAAP;AACD,GAPQ,CAAT;AAQA,SAAOA,MAAP;AACD,CAVM;AAYP;;;;;AACO,SAASC,uBAAT,CAAiCD,MAAjC,EAAkF;AACvF,MAAI;AACF,WAAO,CAAC,EAAEA,MAAM,CAACK,UAAP,IAAqBC,kBAAOC,EAAP,CAAUP,MAAM,CAACK,UAAjB,EAA6B,QAA7B,CAAvB,CAAR;AACD,GAFD,CAEE,MAAM,CAAE;;AACV,SAAO,KAAP;AACD;;AAEM,SAASD,mBAAT,CACLJ,MADK,EAEL;AACA,QAAMQ,eAAe,GAAGC,0BAA0B,CAACT,MAAD,CAAlD;;AAEA,MAAIQ,eAAJ,EAAqB;AACnB;AACAE,uCAAkBC,aAAlB,CACE,qBADF,EAEE,+CAFF,EAGE,2FAHF;AAKD;AACF;;AAEM,SAASR,0BAAT,CACLH,MADK,EAELY,SAFK,EAGM;AACX,QAAMJ,eAAe,GAAGC,0BAA0B,CAACT,MAAD,CAAlD;;AACA,MAAI,CAACQ,eAAL,EAAsB;AACpB,WAAOI,SAAS,CAAChB,oBAAD,CAAhB;AACD,GAFD,MAEO;AACL,QAAIiB,KAAK,GAAG,+BAAeL,eAAf,CAAZ;;AACA,QAAI,CAACK,KAAL,EAAY;AACV,YAAM,IAAIC,KAAJ,CAAU,iCAAV,CAAN;AACD;;AACDD,IAAAA,KAAK,GAAG,CAAEA,KAAK,IAAI,EAAV,GAAiBA,KAAK,KAAK,CAA5B,MAAoC,CAA5C;AACAD,IAAAA,SAAS,CAAChB,oBAAD,CAAT,GAAkCiB,KAAlC;AAEAhB,IAAAA,KAAK,CAAE,kBAAiBW,eAAgB,OAAMK,KAAM,EAA/C,CAAL;AACD;;AACD,SAAOD,SAAP;AACD;;AAEM,SAASH,0BAAT,CAAoCT,MAApC,EAAyF;AAAA;;AAC9F,SAAO,gBAAAA,MAAM,CAACe,GAAP,4DAAYP,eAAZ,KAA+BR,MAAM,CAACQ,eAAtC,IAAyD,IAAhE;AACD","sourcesContent":["import { ConfigPlugin, InfoPlist, WarningAggregator, withInfoPlist } from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\n// @ts-ignore: uses flow\nimport normalizeColor from '@react-native/normalize-color';\nimport semver from 'semver';\n\n// Maps to the template AppDelegate.m\nconst BACKGROUND_COLOR_KEY = 'RCTRootViewBackgroundColor';\n\nconst debug = require('debug')('expo:system-ui:plugin:ios');\n\nexport const withIosRootViewBackgroundColor: ConfigPlugin = config => {\n config = withInfoPlist(config, config => {\n if (shouldUseLegacyBehavior(config)) {\n config.modResults = setRootViewBackgroundColor(config, config.modResults);\n } else {\n warnSystemUIMissing(config);\n }\n return config;\n });\n return config;\n};\n\n/** The template was changed in SDK 43 to move the background color logic to the `expo-system-ui` module */\nexport function shouldUseLegacyBehavior(config: Pick<ExpoConfig, 'sdkVersion'>): boolean {\n try {\n return !!(config.sdkVersion && semver.lt(config.sdkVersion, '44.0.0'));\n } catch {}\n return false;\n}\n\nexport function warnSystemUIMissing(\n config: Pick<ExpoConfig, 'sdkVersion' | 'backgroundColor' | 'ios'>\n) {\n const backgroundColor = getRootViewBackgroundColor(config);\n\n if (backgroundColor) {\n // Background color needs to be set programmatically\n WarningAggregator.addWarningIOS(\n 'ios.backgroundColor',\n 'Install expo-system-ui to enable this feature',\n 'https://docs.expo.dev/build-reference/migrating/#expo-config--backgroundcolor--depends-on'\n );\n }\n}\n\nexport function setRootViewBackgroundColor(\n config: Pick<ExpoConfig, 'backgroundColor' | 'ios'>,\n infoPlist: InfoPlist\n): InfoPlist {\n const backgroundColor = getRootViewBackgroundColor(config);\n if (!backgroundColor) {\n delete infoPlist[BACKGROUND_COLOR_KEY];\n } else {\n let color = normalizeColor(backgroundColor);\n if (!color) {\n throw new Error('Invalid background color on iOS');\n }\n color = ((color << 24) | (color >>> 8)) >>> 0;\n infoPlist[BACKGROUND_COLOR_KEY] = color;\n\n debug(`Convert color: ${backgroundColor} -> ${color}`);\n }\n return infoPlist;\n}\n\nexport function getRootViewBackgroundColor(config: Pick<ExpoConfig, 'ios' | 'backgroundColor'>) {\n return config.ios?.backgroundColor || config.backgroundColor || null;\n}\n"],"file":"withIosRootViewBackgroundColor.js"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.withExpoUpdates = void 0;
6
+ exports.withExpoUpdates = exports.default = void 0;
7
7
 
8
8
  function _configPlugins() {
9
9
  const data = require("@expo/config-plugins");
@@ -43,11 +43,14 @@ const LOCATION_USAGE = 'Allow $(PRODUCT_NAME) to access your location'; // Copie
43
43
  const withDefaultLocationPermissions = config => {
44
44
  var _config$_internal;
45
45
 
46
- // Only add location permissions if react-native-maps is installed.
47
- if ((_config$_internal = config._internal) !== null && _config$_internal !== void 0 && _config$_internal.projectRoot && _resolveFrom().default.silent(config._internal.projectRoot, 'react-native-maps')) {
48
- if (!config.ios) config.ios = {};
49
- if (!config.ios.infoPlist) config.ios.infoPlist = {};
50
- config.ios.infoPlist.NSLocationWhenInUseUsageDescription = config.ios.infoPlist.NSLocationWhenInUseUsageDescription || LOCATION_USAGE;
46
+ // TODO: Autolinking
47
+ const isLinked = true; // Only add location permissions if react-native-maps is installed.
48
+
49
+ if ((_config$_internal = config._internal) !== null && _config$_internal !== void 0 && _config$_internal.projectRoot && _resolveFrom().default.silent(config._internal.projectRoot, 'react-native-maps') && isLinked) {
50
+ config = (0, _configPlugins().withInfoPlist)(config, config => {
51
+ config.modResults.NSLocationWhenInUseUsageDescription = config.modResults.NSLocationWhenInUseUsageDescription || LOCATION_USAGE;
52
+ return config;
53
+ });
51
54
  return _configPlugins().AndroidConfig.Permissions.withPermissions(config, ['android.permission.ACCESS_COARSE_LOCATION', 'android.permission.ACCESS_FINE_LOCATION']);
52
55
  }
53
56
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/plugins/unversioned/react-native-maps.ts"],"names":["LOCATION_USAGE","withDefaultLocationPermissions","config","_internal","projectRoot","resolveFrom","silent","ios","infoPlist","NSLocationWhenInUseUsageDescription","AndroidConfig","Permissions","withPermissions","packageName","fallback","GoogleMapsApiKey","withGoogleMapsApiKey","IOSConfig","Maps","withMaps"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAEA,MAAMA,cAAc,GAAG,+CAAvB,C,CAEA;AACA;;AACA,MAAMC,8BAA4C,GAAGC,MAAM,IAAI;AAAA;;AAC7D;AACA,MACE,qBAAAA,MAAM,CAACC,SAAP,gEAAkBC,WAAlB,IACAC,uBAAYC,MAAZ,CAAmBJ,MAAM,CAACC,SAAP,CAAiBC,WAApC,EAAiD,mBAAjD,CAFF,EAGE;AACA,QAAI,CAACF,MAAM,CAACK,GAAZ,EAAiBL,MAAM,CAACK,GAAP,GAAa,EAAb;AACjB,QAAI,CAACL,MAAM,CAACK,GAAP,CAAWC,SAAhB,EAA2BN,MAAM,CAACK,GAAP,CAAWC,SAAX,GAAuB,EAAvB;AAC3BN,IAAAA,MAAM,CAACK,GAAP,CAAWC,SAAX,CAAqBC,mCAArB,GACEP,MAAM,CAACK,GAAP,CAAWC,SAAX,CAAqBC,mCAArB,IAA4DT,cAD9D;AAGA,WAAOU,+BAAcC,WAAd,CAA0BC,eAA1B,CAA0CV,MAA1C,EAAkD,CACvD,2CADuD,EAEvD,yCAFuD,CAAlD,CAAP;AAID;;AACD,SAAOA,MAAP;AACD,CAjBD;;eAmBe,8CAAmB;AAChCW,EAAAA,WAAW,EAAE,mBADmB;AAEhCC,EAAAA,QAAQ,EAAE,CACRJ,+BAAcK,gBAAd,CAA+BC,oBADvB,EAERC,2BAAUC,IAAV,CAAeC,QAFP,EAGRlB,8BAHQ;AAFsB,CAAnB,C","sourcesContent":["import { AndroidConfig, ConfigPlugin, IOSConfig } from '@expo/config-plugins';\nimport resolveFrom from 'resolve-from';\n\nimport { createLegacyPlugin } from './createLegacyPlugin';\n\nconst LOCATION_USAGE = 'Allow $(PRODUCT_NAME) to access your location';\n\n// Copied from expo-location package, this gets used when the\n// user has react-native-maps installed but not expo-location.\nconst withDefaultLocationPermissions: ConfigPlugin = config => {\n // Only add location permissions if react-native-maps is installed.\n if (\n config._internal?.projectRoot &&\n resolveFrom.silent(config._internal.projectRoot, 'react-native-maps')\n ) {\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n config.ios.infoPlist.NSLocationWhenInUseUsageDescription =\n config.ios.infoPlist.NSLocationWhenInUseUsageDescription || LOCATION_USAGE;\n\n return AndroidConfig.Permissions.withPermissions(config, [\n 'android.permission.ACCESS_COARSE_LOCATION',\n 'android.permission.ACCESS_FINE_LOCATION',\n ]);\n }\n return config;\n};\n\nexport default createLegacyPlugin({\n packageName: 'react-native-maps',\n fallback: [\n AndroidConfig.GoogleMapsApiKey.withGoogleMapsApiKey,\n IOSConfig.Maps.withMaps,\n withDefaultLocationPermissions,\n ],\n});\n"],"file":"react-native-maps.js"}
1
+ {"version":3,"sources":["../../../src/plugins/unversioned/react-native-maps.ts"],"names":["LOCATION_USAGE","withDefaultLocationPermissions","config","isLinked","_internal","projectRoot","resolveFrom","silent","modResults","NSLocationWhenInUseUsageDescription","AndroidConfig","Permissions","withPermissions","packageName","fallback","GoogleMapsApiKey","withGoogleMapsApiKey","IOSConfig","Maps","withMaps"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAEA,MAAMA,cAAc,GAAG,+CAAvB,C,CAEA;AACA;;AACA,MAAMC,8BAA4C,GAAGC,MAAM,IAAI;AAAA;;AAC7D;AACA,QAAMC,QAAQ,GAAG,IAAjB,CAF6D,CAG7D;;AACA,MACE,qBAAAD,MAAM,CAACE,SAAP,gEAAkBC,WAAlB,IACAC,uBAAYC,MAAZ,CAAmBL,MAAM,CAACE,SAAP,CAAiBC,WAApC,EAAiD,mBAAjD,CADA,IAEAF,QAHF,EAIE;AACAD,IAAAA,MAAM,GAAG,oCAAcA,MAAd,EAAsBA,MAAM,IAAI;AACvCA,MAAAA,MAAM,CAACM,UAAP,CAAkBC,mCAAlB,GACEP,MAAM,CAACM,UAAP,CAAkBC,mCAAlB,IAAyDT,cAD3D;AAEA,aAAOE,MAAP;AACD,KAJQ,CAAT;AAMA,WAAOQ,+BAAcC,WAAd,CAA0BC,eAA1B,CAA0CV,MAA1C,EAAkD,CACvD,2CADuD,EAEvD,yCAFuD,CAAlD,CAAP;AAID;;AACD,SAAOA,MAAP;AACD,CArBD;;eAuBe,8CAAmB;AAChCW,EAAAA,WAAW,EAAE,mBADmB;AAEhCC,EAAAA,QAAQ,EAAE,CACRJ,+BAAcK,gBAAd,CAA+BC,oBADvB,EAERC,2BAAUC,IAAV,CAAeC,QAFP,EAGRlB,8BAHQ;AAFsB,CAAnB,C","sourcesContent":["import { AndroidConfig, ConfigPlugin, IOSConfig, withInfoPlist } from '@expo/config-plugins';\nimport resolveFrom from 'resolve-from';\n\nimport { createLegacyPlugin } from './createLegacyPlugin';\n\nconst LOCATION_USAGE = 'Allow $(PRODUCT_NAME) to access your location';\n\n// Copied from expo-location package, this gets used when the\n// user has react-native-maps installed but not expo-location.\nconst withDefaultLocationPermissions: ConfigPlugin = config => {\n // TODO: Autolinking\n const isLinked = true;\n // Only add location permissions if react-native-maps is installed.\n if (\n config._internal?.projectRoot &&\n resolveFrom.silent(config._internal.projectRoot, 'react-native-maps') &&\n isLinked\n ) {\n config = withInfoPlist(config, config => {\n config.modResults.NSLocationWhenInUseUsageDescription =\n config.modResults.NSLocationWhenInUseUsageDescription || LOCATION_USAGE;\n return config;\n });\n\n return AndroidConfig.Permissions.withPermissions(config, [\n 'android.permission.ACCESS_COARSE_LOCATION',\n 'android.permission.ACCESS_FINE_LOCATION',\n ]);\n }\n return config;\n};\n\nexport default createLegacyPlugin({\n packageName: 'react-native-maps',\n fallback: [\n AndroidConfig.GoogleMapsApiKey.withGoogleMapsApiKey,\n IOSConfig.Maps.withMaps,\n withDefaultLocationPermissions,\n ],\n});\n"],"file":"react-native-maps.js"}
@@ -5,8 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getAutoPlugins = getAutoPlugins;
7
7
  exports.getLegacyExpoPlugins = getLegacyExpoPlugins;
8
+ exports.withIosExpoPlugins = exports.withAndroidExpoPlugins = void 0;
8
9
  exports.withLegacyExpoPlugins = withLegacyExpoPlugins;
9
- exports.withVersionedExpoSDKPlugins = exports.withAndroidExpoPlugins = exports.withIosExpoPlugins = void 0;
10
+ exports.withVersionedExpoSDKPlugins = void 0;
10
11
 
11
12
  function _configPlugins() {
12
13
  const data = require("@expo/config-plugins");
@@ -203,7 +204,7 @@ const withAndroidExpoPlugins = (config, props) => {
203
204
  _configPlugins().AndroidConfig.IntentFilters.withAndroidIntentFilters, _configPlugins().AndroidConfig.Scheme.withScheme, _configPlugins().AndroidConfig.Orientation.withOrientation, _configPlugins().AndroidConfig.Permissions.withPermissions, // strings.xml
204
205
  _configPlugins().AndroidConfig.Name.withName, // Dangerous -- these plugins run in reverse order.
205
206
  _configPlugins().AndroidConfig.GoogleServices.withGoogleServicesFile, // Modify colors.xml and styles.xml
206
- _configPlugins().AndroidConfig.StatusBar.withStatusBar, _configPlugins().AndroidConfig.PrimaryColor.withPrimaryColor, c => (0, _withAndroidIcons().withAndroidIcons)(c), // If we renamed the package, we should also move it around and rename it in source files
207
+ _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
207
208
  // Added last to ensure this plugin runs first. Out of tree solutions will mistakenly resolve the package incorrectly otherwise.
208
209
  _configPlugins().AndroidConfig.Package.withPackageRefactor]);
209
210
  }; // Must keep in sync with `withVersionedExpoSDKPlugins`
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/withDefaultPlugins.ts"],"names":["withIosExpoPlugins","config","bundleIdentifier","ios","IOSConfig","BundleIdentifier","withBundleIdentifier","Swift","withSwiftBridgingHeader","withNoopSwiftFile","Google","withGoogle","Name","withDisplayName","Orientation","withOrientation","RequiresFullScreen","withRequiresFullScreen","Scheme","withScheme","UsesNonExemptEncryption","withUsesNonExemptEncryption","Version","withBuildNumber","withVersion","withGoogleServicesFile","JsEngine","withJsEnginePodfileProps","Entitlements","withAssociatedDomains","DeviceFamily","withDeviceFamily","Bitcode","withBitcode","Locales","withLocales","withIosIcons","withAndroidExpoPlugins","props","android","package","AndroidConfig","withJsEngineGradleProps","withNameSettingsGradle","GoogleServices","withClassPath","withApplyPlugin","Package","withPackageGradle","withPackageManifest","AllowBackup","withAllowBackup","WindowSoftInputMode","withWindowSoftInputMode","IntentFilters","withAndroidIntentFilters","Permissions","withPermissions","withName","StatusBar","withStatusBar","PrimaryColor","withPrimaryColor","c","withPackageRefactor","versionedExpoSDKPackages","withVersionedExpoSDKPlugins","expoUsername","withMaps","withAdMob","withAppleAuthentication","withContacts","withNotifications","withUpdates","withBranch","withDocumentPicker","withFacebook","withSystemUI","withSplashScreen","withNavigationBar","getAutoPlugins","concat","legacyExpoPlugins","expoManagedVersionedPlugins","getLegacyExpoPlugins","withOptionalLegacyPlugins","plugins","reduce","prev","plugin","_isLegacyPlugin","fallback","withLegacyExpoPlugins","Set"],"mappings":"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","sourcesContent":["/**\n * These are the versioned first-party plugins with some of the future third-party plugins mixed in for legacy support.\n */\nimport {\n AndroidConfig,\n ConfigPlugin,\n IOSConfig,\n StaticPlugin,\n withPlugins,\n withStaticPlugin,\n} from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\n\nimport { withAndroidIcons } from './icons/withAndroidIcons';\nimport { withIosIcons } from './icons/withIosIcons';\nimport withAdMob from './unversioned/expo-ads-admob/expo-ads-admob';\nimport withAppleAuthentication from './unversioned/expo-apple-authentication';\nimport withBranch from './unversioned/expo-branch/expo-branch';\nimport withContacts from './unversioned/expo-contacts';\nimport withDocumentPicker from './unversioned/expo-document-picker';\nimport withFacebook from './unversioned/expo-facebook/expo-facebook';\nimport withNavigationBar from './unversioned/expo-navigation-bar/expo-navigation-bar';\nimport withNotifications from './unversioned/expo-notifications/expo-notifications';\nimport withSplashScreen from './unversioned/expo-splash-screen/expo-splash-screen';\nimport withSystemUI from './unversioned/expo-system-ui/expo-system-ui';\nimport withUpdates from './unversioned/expo-updates';\nimport withMaps from './unversioned/react-native-maps';\n\n/**\n * Config plugin to apply all of the custom Expo iOS config plugins we support by default.\n * TODO: In the future most of this should go into versioned packages like expo-facebook, expo-updates, etc...\n */\nexport const withIosExpoPlugins: ConfigPlugin<{\n bundleIdentifier: string;\n}> = (config, { bundleIdentifier }) => {\n // Set the bundle ID ahead of time.\n if (!config.ios) config.ios = {};\n config.ios.bundleIdentifier = bundleIdentifier;\n\n return withPlugins(config, [\n [IOSConfig.BundleIdentifier.withBundleIdentifier, { bundleIdentifier }],\n IOSConfig.Swift.withSwiftBridgingHeader,\n IOSConfig.Swift.withNoopSwiftFile,\n IOSConfig.Google.withGoogle,\n IOSConfig.Name.withDisplayName,\n IOSConfig.Orientation.withOrientation,\n IOSConfig.RequiresFullScreen.withRequiresFullScreen,\n IOSConfig.Scheme.withScheme,\n IOSConfig.UsesNonExemptEncryption.withUsesNonExemptEncryption,\n IOSConfig.Version.withBuildNumber,\n IOSConfig.Version.withVersion,\n IOSConfig.Google.withGoogleServicesFile,\n IOSConfig.JsEngine.withJsEnginePodfileProps,\n // Entitlements\n IOSConfig.Entitlements.withAssociatedDomains,\n // XcodeProject\n IOSConfig.DeviceFamily.withDeviceFamily,\n IOSConfig.Bitcode.withBitcode,\n IOSConfig.Locales.withLocales,\n // Dangerous\n withIosIcons,\n ]);\n};\n\n/**\n * Config plugin to apply all of the custom Expo Android config plugins we support by default.\n * TODO: In the future most of this should go into versioned packages like expo-facebook, expo-updates, etc...\n */\nexport const withAndroidExpoPlugins: ConfigPlugin<{\n package: string;\n}> = (config, props) => {\n // Set the package name ahead of time.\n if (!config.android) config.android = {};\n config.android.package = props.package;\n\n return withPlugins(config, [\n // gradle.properties\n AndroidConfig.JsEngine.withJsEngineGradleProps,\n\n // settings.gradle\n AndroidConfig.Name.withNameSettingsGradle,\n\n // project build.gradle\n AndroidConfig.GoogleServices.withClassPath,\n\n // app/build.gradle\n AndroidConfig.GoogleServices.withApplyPlugin,\n AndroidConfig.Package.withPackageGradle,\n AndroidConfig.Version.withVersion,\n\n // AndroidManifest.xml\n AndroidConfig.Package.withPackageManifest,\n AndroidConfig.AllowBackup.withAllowBackup,\n AndroidConfig.WindowSoftInputMode.withWindowSoftInputMode,\n // Note: The withAndroidIntentFilters plugin must appear before the withScheme\n // plugin or withScheme will override the output of withAndroidIntentFilters.\n AndroidConfig.IntentFilters.withAndroidIntentFilters,\n AndroidConfig.Scheme.withScheme,\n AndroidConfig.Orientation.withOrientation,\n AndroidConfig.Permissions.withPermissions,\n\n // strings.xml\n AndroidConfig.Name.withName,\n\n // Dangerous -- these plugins run in reverse order.\n AndroidConfig.GoogleServices.withGoogleServicesFile,\n\n // Modify colors.xml and styles.xml\n AndroidConfig.StatusBar.withStatusBar,\n AndroidConfig.PrimaryColor.withPrimaryColor,\n\n c => withAndroidIcons(c),\n // If we renamed the package, we should also move it around and rename it in source files\n // Added last to ensure this plugin runs first. Out of tree solutions will mistakenly resolve the package incorrectly otherwise.\n AndroidConfig.Package.withPackageRefactor,\n ]);\n};\n\n// Must keep in sync with `withVersionedExpoSDKPlugins`\nconst versionedExpoSDKPackages: string[] = [\n 'react-native-maps',\n 'expo-ads-admob',\n 'expo-apple-authentication',\n 'expo-contacts',\n 'expo-notifications',\n 'expo-updates',\n 'expo-branch',\n 'expo-navigation-bar',\n 'expo-document-picker',\n 'expo-facebook',\n 'expo-splash-screen',\n 'expo-system-ui',\n];\n\nexport const withVersionedExpoSDKPlugins: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withPlugins(config, [\n withMaps,\n withAdMob,\n withAppleAuthentication,\n withContacts,\n withNotifications,\n [withUpdates, { expoUsername }],\n withBranch,\n withDocumentPicker,\n withFacebook,\n // System UI must come before splash screen as they overlap\n // and splash screen will warn about conflicting rules.\n withSystemUI,\n withSplashScreen,\n withNavigationBar,\n ]);\n};\n\nexport function getAutoPlugins() {\n return versionedExpoSDKPackages.concat(legacyExpoPlugins).concat(expoManagedVersionedPlugins);\n}\n\nexport function getLegacyExpoPlugins() {\n return legacyExpoPlugins;\n}\n\n// Expo managed packages that require extra update.\n// These get applied automatically to create parity with expo build in eas build.\nconst legacyExpoPlugins = [\n 'expo-app-auth',\n 'expo-av',\n 'expo-background-fetch',\n 'expo-barcode-scanner',\n 'expo-brightness',\n 'expo-calendar',\n 'expo-camera',\n 'expo-cellular',\n 'expo-dev-menu',\n 'expo-dev-launcher',\n 'expo-dev-client',\n 'expo-image-picker',\n 'expo-file-system',\n 'expo-ads-facebook',\n 'expo-location',\n 'expo-media-library',\n 'expo-screen-orientation',\n 'expo-sensors',\n 'expo-task-manager',\n 'expo-local-authentication',\n];\n\n// Plugins that need to be automatically applied, but also get applied by expo-cli if the versioned plugin isn't available.\n// These are split up because the user doesn't need to be prompted to setup these packages.\nconst expoManagedVersionedPlugins = [\n 'expo-firebase-analytics',\n 'expo-firebase-core',\n 'expo-google-sign-in',\n];\n\nconst withOptionalLegacyPlugins: ConfigPlugin<(StaticPlugin | string)[]> = (config, plugins) => {\n return plugins.reduce((prev, plugin) => {\n return withStaticPlugin(prev, {\n // hide errors\n _isLegacyPlugin: true,\n plugin,\n // If a plugin doesn't exist, do nothing.\n fallback: config => config,\n });\n }, config);\n};\n\nexport function withLegacyExpoPlugins(config: ExpoConfig) {\n return withOptionalLegacyPlugins(config, [\n ...new Set(expoManagedVersionedPlugins.concat(legacyExpoPlugins)),\n ]);\n}\n"],"file":"withDefaultPlugins.js"}
1
+ {"version":3,"sources":["../../src/plugins/withDefaultPlugins.ts"],"names":["withIosExpoPlugins","config","bundleIdentifier","ios","IOSConfig","BundleIdentifier","withBundleIdentifier","Swift","withSwiftBridgingHeader","withNoopSwiftFile","Google","withGoogle","Name","withDisplayName","Orientation","withOrientation","RequiresFullScreen","withRequiresFullScreen","Scheme","withScheme","UsesNonExemptEncryption","withUsesNonExemptEncryption","Version","withBuildNumber","withVersion","withGoogleServicesFile","JsEngine","withJsEnginePodfileProps","Entitlements","withAssociatedDomains","DeviceFamily","withDeviceFamily","Bitcode","withBitcode","Locales","withLocales","withIosIcons","withAndroidExpoPlugins","props","android","package","AndroidConfig","withJsEngineGradleProps","withNameSettingsGradle","GoogleServices","withClassPath","withApplyPlugin","Package","withPackageGradle","withPackageManifest","AllowBackup","withAllowBackup","WindowSoftInputMode","withWindowSoftInputMode","IntentFilters","withAndroidIntentFilters","Permissions","withPermissions","withName","StatusBar","withStatusBar","PrimaryColor","withPrimaryColor","withAndroidIcons","withPackageRefactor","versionedExpoSDKPackages","withVersionedExpoSDKPlugins","expoUsername","withMaps","withAdMob","withAppleAuthentication","withContacts","withNotifications","withUpdates","withBranch","withDocumentPicker","withFacebook","withSystemUI","withSplashScreen","withNavigationBar","getAutoPlugins","concat","legacyExpoPlugins","expoManagedVersionedPlugins","getLegacyExpoPlugins","withOptionalLegacyPlugins","plugins","reduce","prev","plugin","_isLegacyPlugin","fallback","withLegacyExpoPlugins","Set"],"mappings":"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","sourcesContent":["/**\n * These are the versioned first-party plugins with some of the future third-party plugins mixed in for legacy support.\n */\nimport {\n AndroidConfig,\n ConfigPlugin,\n IOSConfig,\n StaticPlugin,\n withPlugins,\n withStaticPlugin,\n} from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\n\nimport { withAndroidIcons } from './icons/withAndroidIcons';\nimport { withIosIcons } from './icons/withIosIcons';\nimport withAdMob from './unversioned/expo-ads-admob/expo-ads-admob';\nimport withAppleAuthentication from './unversioned/expo-apple-authentication';\nimport withBranch from './unversioned/expo-branch/expo-branch';\nimport withContacts from './unversioned/expo-contacts';\nimport withDocumentPicker from './unversioned/expo-document-picker';\nimport withFacebook from './unversioned/expo-facebook/expo-facebook';\nimport withNavigationBar from './unversioned/expo-navigation-bar/expo-navigation-bar';\nimport withNotifications from './unversioned/expo-notifications/expo-notifications';\nimport withSplashScreen from './unversioned/expo-splash-screen/expo-splash-screen';\nimport withSystemUI from './unversioned/expo-system-ui/expo-system-ui';\nimport withUpdates from './unversioned/expo-updates';\nimport withMaps from './unversioned/react-native-maps';\n\n/**\n * Config plugin to apply all of the custom Expo iOS config plugins we support by default.\n * TODO: In the future most of this should go into versioned packages like expo-facebook, expo-updates, etc...\n */\nexport const withIosExpoPlugins: ConfigPlugin<{\n bundleIdentifier: string;\n}> = (config, { bundleIdentifier }) => {\n // Set the bundle ID ahead of time.\n if (!config.ios) config.ios = {};\n config.ios.bundleIdentifier = bundleIdentifier;\n\n return withPlugins(config, [\n [IOSConfig.BundleIdentifier.withBundleIdentifier, { bundleIdentifier }],\n IOSConfig.Swift.withSwiftBridgingHeader,\n IOSConfig.Swift.withNoopSwiftFile,\n IOSConfig.Google.withGoogle,\n IOSConfig.Name.withDisplayName,\n IOSConfig.Orientation.withOrientation,\n IOSConfig.RequiresFullScreen.withRequiresFullScreen,\n IOSConfig.Scheme.withScheme,\n IOSConfig.UsesNonExemptEncryption.withUsesNonExemptEncryption,\n IOSConfig.Version.withBuildNumber,\n IOSConfig.Version.withVersion,\n IOSConfig.Google.withGoogleServicesFile,\n IOSConfig.JsEngine.withJsEnginePodfileProps,\n // Entitlements\n IOSConfig.Entitlements.withAssociatedDomains,\n // XcodeProject\n IOSConfig.DeviceFamily.withDeviceFamily,\n IOSConfig.Bitcode.withBitcode,\n IOSConfig.Locales.withLocales,\n // Dangerous\n withIosIcons,\n ]);\n};\n\n/**\n * Config plugin to apply all of the custom Expo Android config plugins we support by default.\n * TODO: In the future most of this should go into versioned packages like expo-facebook, expo-updates, etc...\n */\nexport const withAndroidExpoPlugins: ConfigPlugin<{\n package: string;\n}> = (config, props) => {\n // Set the package name ahead of time.\n if (!config.android) config.android = {};\n config.android.package = props.package;\n\n return withPlugins(config, [\n // gradle.properties\n AndroidConfig.JsEngine.withJsEngineGradleProps,\n\n // settings.gradle\n AndroidConfig.Name.withNameSettingsGradle,\n\n // project build.gradle\n AndroidConfig.GoogleServices.withClassPath,\n\n // app/build.gradle\n AndroidConfig.GoogleServices.withApplyPlugin,\n AndroidConfig.Package.withPackageGradle,\n AndroidConfig.Version.withVersion,\n\n // AndroidManifest.xml\n AndroidConfig.Package.withPackageManifest,\n AndroidConfig.AllowBackup.withAllowBackup,\n AndroidConfig.WindowSoftInputMode.withWindowSoftInputMode,\n // Note: The withAndroidIntentFilters plugin must appear before the withScheme\n // plugin or withScheme will override the output of withAndroidIntentFilters.\n AndroidConfig.IntentFilters.withAndroidIntentFilters,\n AndroidConfig.Scheme.withScheme,\n AndroidConfig.Orientation.withOrientation,\n AndroidConfig.Permissions.withPermissions,\n\n // strings.xml\n AndroidConfig.Name.withName,\n\n // Dangerous -- these plugins run in reverse order.\n AndroidConfig.GoogleServices.withGoogleServicesFile,\n\n // Modify colors.xml and styles.xml\n AndroidConfig.StatusBar.withStatusBar,\n AndroidConfig.PrimaryColor.withPrimaryColor,\n\n withAndroidIcons,\n // If we renamed the package, we should also move it around and rename it in source files\n // Added last to ensure this plugin runs first. Out of tree solutions will mistakenly resolve the package incorrectly otherwise.\n AndroidConfig.Package.withPackageRefactor,\n ]);\n};\n\n// Must keep in sync with `withVersionedExpoSDKPlugins`\nconst versionedExpoSDKPackages: string[] = [\n 'react-native-maps',\n 'expo-ads-admob',\n 'expo-apple-authentication',\n 'expo-contacts',\n 'expo-notifications',\n 'expo-updates',\n 'expo-branch',\n 'expo-navigation-bar',\n 'expo-document-picker',\n 'expo-facebook',\n 'expo-splash-screen',\n 'expo-system-ui',\n];\n\nexport const withVersionedExpoSDKPlugins: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withPlugins(config, [\n withMaps,\n withAdMob,\n withAppleAuthentication,\n withContacts,\n withNotifications,\n [withUpdates, { expoUsername }],\n withBranch,\n withDocumentPicker,\n withFacebook,\n // System UI must come before splash screen as they overlap\n // and splash screen will warn about conflicting rules.\n withSystemUI,\n withSplashScreen,\n withNavigationBar,\n ]);\n};\n\nexport function getAutoPlugins() {\n return versionedExpoSDKPackages.concat(legacyExpoPlugins).concat(expoManagedVersionedPlugins);\n}\n\nexport function getLegacyExpoPlugins() {\n return legacyExpoPlugins;\n}\n\n// Expo managed packages that require extra update.\n// These get applied automatically to create parity with expo build in eas build.\nconst legacyExpoPlugins = [\n 'expo-app-auth',\n 'expo-av',\n 'expo-background-fetch',\n 'expo-barcode-scanner',\n 'expo-brightness',\n 'expo-calendar',\n 'expo-camera',\n 'expo-cellular',\n 'expo-dev-menu',\n 'expo-dev-launcher',\n 'expo-dev-client',\n 'expo-image-picker',\n 'expo-file-system',\n 'expo-ads-facebook',\n 'expo-location',\n 'expo-media-library',\n 'expo-screen-orientation',\n 'expo-sensors',\n 'expo-task-manager',\n 'expo-local-authentication',\n];\n\n// Plugins that need to be automatically applied, but also get applied by expo-cli if the versioned plugin isn't available.\n// These are split up because the user doesn't need to be prompted to setup these packages.\nconst expoManagedVersionedPlugins = [\n 'expo-firebase-analytics',\n 'expo-firebase-core',\n 'expo-google-sign-in',\n];\n\nconst withOptionalLegacyPlugins: ConfigPlugin<(StaticPlugin | string)[]> = (config, plugins) => {\n return plugins.reduce((prev, plugin) => {\n return withStaticPlugin(prev, {\n // hide errors\n _isLegacyPlugin: true,\n plugin,\n // If a plugin doesn't exist, do nothing.\n fallback: config => config,\n });\n }, config);\n};\n\nexport function withLegacyExpoPlugins(config: ExpoConfig) {\n return withOptionalLegacyPlugins(config, [\n ...new Set(expoManagedVersionedPlugins.concat(legacyExpoPlugins)),\n ]);\n}\n"],"file":"withDefaultPlugins.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/prebuild-config",
3
- "version": "3.0.7",
3
+ "version": "3.0.8",
4
4
  "description": "Get the prebuild config",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -26,23 +26,25 @@
26
26
  "bugs": {
27
27
  "url": "https://github.com/expo/expo-cli/issues"
28
28
  },
29
- "homepage": "https://github.com/expo/expo-cli/tree/master/packages/prebuild-config#readme",
29
+ "homepage": "https://github.com/expo/expo-cli/tree/main/packages/prebuild-config#readme",
30
30
  "files": [
31
31
  "build"
32
32
  ],
33
33
  "devDependencies": {
34
- "@types/debug": "^4.1.5"
34
+ "@types/debug": "^4.1.5",
35
+ "@types/xml2js": "^0.4.5"
35
36
  },
36
37
  "dependencies": {
37
- "@expo/config": "6.0.7",
38
- "@expo/config-plugins": "4.0.7",
38
+ "@expo/config": "6.0.8",
39
+ "@expo/config-plugins": "4.0.8",
39
40
  "@expo/config-types": "^43.0.1",
40
- "@expo/image-utils": "0.3.17",
41
- "@expo/json-file": "8.2.33",
41
+ "@expo/image-utils": "0.3.18",
42
+ "@expo/json-file": "8.2.34",
42
43
  "debug": "^4.3.1",
43
44
  "fs-extra": "^9.0.0",
44
45
  "resolve-from": "^5.0.0",
45
- "semver": "7.3.2"
46
+ "semver": "7.3.2",
47
+ "xml2js": "0.4.23"
46
48
  },
47
49
  "publishConfig": {
48
50
  "access": "public"