@expo/prebuild-config 3.0.11 → 3.0.15

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.
@@ -0,0 +1,12 @@
1
+ import { ModPlatform, StaticPlugin } from '@expo/config-plugins';
2
+ import { ExpoConfig } from '@expo/config-types';
3
+ /**
4
+ * Returns a list of packages that are autolinked to a project.
5
+ *
6
+ * @param projectRoot
7
+ * @param platforms platforms to check for
8
+ * @returns list of packages ex: `['expo-camera', 'react-native-screens']`
9
+ */
10
+ export declare function getAutolinkedPackagesAsync(projectRoot: string, platforms?: ModPlatform[]): Promise<string[]>;
11
+ export declare function resolvePackagesList(platformPaths: Record<string, any>[]): string[];
12
+ export declare function shouldSkipAutoPlugin(config: Pick<ExpoConfig, '_internal'>, plugin: StaticPlugin | string): boolean;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getAutolinkedPackagesAsync = getAutolinkedPackagesAsync;
7
+ exports.resolvePackagesList = resolvePackagesList;
8
+ exports.shouldSkipAutoPlugin = shouldSkipAutoPlugin;
9
+
10
+ function _autolinking() {
11
+ const data = require("expo-modules-autolinking/build/autolinking");
12
+
13
+ _autolinking = function () {
14
+ return data;
15
+ };
16
+
17
+ return data;
18
+ }
19
+
20
+ /**
21
+ * Returns a list of packages that are autolinked to a project.
22
+ *
23
+ * @param projectRoot
24
+ * @param platforms platforms to check for
25
+ * @returns list of packages ex: `['expo-camera', 'react-native-screens']`
26
+ */
27
+ async function getAutolinkedPackagesAsync(projectRoot, platforms = ['ios', 'android']) {
28
+ const searchPaths = await (0, _autolinking().resolveSearchPathsAsync)(null, projectRoot);
29
+ const platformPaths = await Promise.all(platforms.map(platform => (0, _autolinking().findModulesAsync)({
30
+ platform,
31
+ searchPaths,
32
+ silent: true
33
+ })));
34
+ return resolvePackagesList(platformPaths);
35
+ }
36
+
37
+ function resolvePackagesList(platformPaths) {
38
+ const allPlatformPaths = platformPaths.map(paths => Object.keys(paths)).flat();
39
+ const uniquePaths = [...new Set(allPlatformPaths)];
40
+ return uniquePaths.sort();
41
+ }
42
+
43
+ function shouldSkipAutoPlugin(config, plugin) {
44
+ var _config$_internal;
45
+
46
+ // Hack workaround because expo-dev-client doesn't use expo modules.
47
+ if (plugin === 'expo-dev-client') {
48
+ return false;
49
+ } // Only perform the check if `autolinkedModules` is defined, otherwise we assume
50
+ // this is a legacy runner which doesn't support autolinking.
51
+
52
+
53
+ if (Array.isArray((_config$_internal = config._internal) === null || _config$_internal === void 0 ? void 0 : _config$_internal.autolinkedModules)) {
54
+ // Resolve the pluginId as a string.
55
+ const pluginId = Array.isArray(plugin) ? plugin[0] : plugin;
56
+
57
+ if (typeof pluginId === 'string') {
58
+ // Determine if the autolinked modules list includes our moduleId
59
+ const isIncluded = config._internal.autolinkedModules.includes(pluginId);
60
+
61
+ if (!isIncluded) {
62
+ // If it doesn't then we know that any potential plugin shouldn't be applied automatically.
63
+ return true;
64
+ }
65
+ }
66
+ }
67
+
68
+ return false;
69
+ }
70
+ //# sourceMappingURL=getAutolinkedPackages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/getAutolinkedPackages.ts"],"names":["getAutolinkedPackagesAsync","projectRoot","platforms","searchPaths","platformPaths","Promise","all","map","platform","silent","resolvePackagesList","allPlatformPaths","paths","Object","keys","flat","uniquePaths","Set","sort","shouldSkipAutoPlugin","config","plugin","Array","isArray","_internal","autolinkedModules","pluginId","isIncluded","includes"],"mappings":";;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeA,0BAAf,CACLC,WADK,EAELC,SAAwB,GAAG,CAAC,KAAD,EAAQ,SAAR,CAFtB,EAGL;AACA,QAAMC,WAAW,GAAG,MAAM,4CAAwB,IAAxB,EAA8BF,WAA9B,CAA1B;AAEA,QAAMG,aAAa,GAAG,MAAMC,OAAO,CAACC,GAAR,CAC1BJ,SAAS,CAACK,GAAV,CAAcC,QAAQ,IACpB,qCAAiB;AACfA,IAAAA,QADe;AAEfL,IAAAA,WAFe;AAGfM,IAAAA,MAAM,EAAE;AAHO,GAAjB,CADF,CAD0B,CAA5B;AAUA,SAAOC,mBAAmB,CAACN,aAAD,CAA1B;AACD;;AAEM,SAASM,mBAAT,CAA6BN,aAA7B,EAAmE;AACxE,QAAMO,gBAAgB,GAAGP,aAAa,CAACG,GAAd,CAAkBK,KAAK,IAAIC,MAAM,CAACC,IAAP,CAAYF,KAAZ,CAA3B,EAA+CG,IAA/C,EAAzB;AAEA,QAAMC,WAAW,GAAG,CAAC,GAAG,IAAIC,GAAJ,CAAQN,gBAAR,CAAJ,CAApB;AAEA,SAAOK,WAAW,CAACE,IAAZ,EAAP;AACD;;AAEM,SAASC,oBAAT,CACLC,MADK,EAELC,MAFK,EAGL;AAAA;;AACA;AACA,MAAIA,MAAM,KAAK,iBAAf,EAAkC;AAChC,WAAO,KAAP;AACD,GAJD,CAMA;AACA;;;AACA,MAAIC,KAAK,CAACC,OAAN,sBAAcH,MAAM,CAACI,SAArB,sDAAc,kBAAkBC,iBAAhC,CAAJ,EAAwD;AACtD;AACA,UAAMC,QAAQ,GAAGJ,KAAK,CAACC,OAAN,CAAcF,MAAd,IAAwBA,MAAM,CAAC,CAAD,CAA9B,GAAoCA,MAArD;;AACA,QAAI,OAAOK,QAAP,KAAoB,QAAxB,EAAkC;AAChC;AACA,YAAMC,UAAU,GAAGP,MAAM,CAACI,SAAP,CAAkBC,iBAAlB,CAAoCG,QAApC,CAA6CF,QAA7C,CAAnB;;AACA,UAAI,CAACC,UAAL,EAAiB;AACf;AACA,eAAO,IAAP;AACD;AACF;AACF;;AACD,SAAO,KAAP;AACD","sourcesContent":["import { ModPlatform, StaticPlugin } from '@expo/config-plugins';\nimport { ExpoConfig } from '@expo/config-types';\nimport {\n findModulesAsync,\n resolveSearchPathsAsync,\n} from 'expo-modules-autolinking/build/autolinking';\n\n/**\n * Returns a list of packages that are autolinked to a project.\n *\n * @param projectRoot\n * @param platforms platforms to check for\n * @returns list of packages ex: `['expo-camera', 'react-native-screens']`\n */\nexport async function getAutolinkedPackagesAsync(\n projectRoot: string,\n platforms: ModPlatform[] = ['ios', 'android']\n) {\n const searchPaths = await resolveSearchPathsAsync(null, projectRoot);\n\n const platformPaths = await Promise.all(\n platforms.map(platform =>\n findModulesAsync({\n platform,\n searchPaths,\n silent: true,\n })\n )\n );\n\n return resolvePackagesList(platformPaths);\n}\n\nexport function resolvePackagesList(platformPaths: Record<string, any>[]) {\n const allPlatformPaths = platformPaths.map(paths => Object.keys(paths)).flat();\n\n const uniquePaths = [...new Set(allPlatformPaths)];\n\n return uniquePaths.sort();\n}\n\nexport function shouldSkipAutoPlugin(\n config: Pick<ExpoConfig, '_internal'>,\n plugin: StaticPlugin | string\n) {\n // Hack workaround because expo-dev-client doesn't use expo modules.\n if (plugin === 'expo-dev-client') {\n return false;\n }\n\n // Only perform the check if `autolinkedModules` is defined, otherwise we assume\n // this is a legacy runner which doesn't support autolinking.\n if (Array.isArray(config._internal?.autolinkedModules)) {\n // Resolve the pluginId as a string.\n const pluginId = Array.isArray(plugin) ? plugin[0] : plugin;\n if (typeof pluginId === 'string') {\n // Determine if the autolinked modules list includes our moduleId\n const isIncluded = config._internal!.autolinkedModules.includes(pluginId);\n if (!isIncluded) {\n // If it doesn't then we know that any potential plugin shouldn't be applied automatically.\n return true;\n }\n }\n }\n return false;\n}\n"],"file":"getAutolinkedPackages.js"}
@@ -15,6 +15,16 @@ function _config() {
15
15
  return data;
16
16
  }
17
17
 
18
+ function _getAutolinkedPackages() {
19
+ const data = require("./getAutolinkedPackages");
20
+
21
+ _getAutolinkedPackages = function () {
22
+ return data;
23
+ };
24
+
25
+ return data;
26
+ }
27
+
18
28
  function _withDefaultPlugins() {
19
29
  const data = require("./plugins/withDefaultPlugins");
20
30
 
@@ -26,7 +36,9 @@ function _withDefaultPlugins() {
26
36
  }
27
37
 
28
38
  async function getPrebuildConfigAsync(projectRoot, props) {
29
- return getPrebuildConfig(projectRoot, { ...props
39
+ const autolinkedModules = await (0, _getAutolinkedPackages().getAutolinkedPackagesAsync)(projectRoot, props.platforms);
40
+ return getPrebuildConfig(projectRoot, { ...props,
41
+ autolinkedModules
30
42
  });
31
43
  }
32
44
 
@@ -34,6 +46,7 @@ function getPrebuildConfig(projectRoot, {
34
46
  platforms,
35
47
  bundleIdentifier,
36
48
  packageName,
49
+ autolinkedModules,
37
50
  expoUsername
38
51
  }) {
39
52
  // let config: ExpoConfig;
@@ -44,6 +57,15 @@ function getPrebuildConfig(projectRoot, {
44
57
  skipSDKVersionRequirement: true,
45
58
  isModdedConfig: true
46
59
  });
60
+
61
+ if (autolinkedModules) {
62
+ if (!config._internal) {
63
+ config._internal = {};
64
+ }
65
+
66
+ config._internal.autolinkedModules = autolinkedModules;
67
+ }
68
+
47
69
  const resolvedExpoUsername = typeof expoUsername === 'function' ? expoUsername(config) : // If the user didn't pass a username then fallback on the static cached username.
48
70
  expoUsername !== null && expoUsername !== void 0 ? expoUsername : (0, _config().getAccountUsername)(config); // Add all built-in plugins first because they should take
49
71
  // priority over the unversioned plugins.
@@ -1 +1 @@
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"}
1
+ {"version":3,"sources":["../src/getPrebuildConfig.ts"],"names":["getPrebuildConfigAsync","projectRoot","props","autolinkedModules","platforms","getPrebuildConfig","bundleIdentifier","packageName","expoUsername","exp","config","rest","skipSDKVersionRequirement","isModdedConfig","_internal","resolvedExpoUsername","includes","ios","android","package"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAIA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAOO,eAAeA,sBAAf,CACLC,WADK,EAELC,KAFK,EAQkC;AACvC,QAAMC,iBAAiB,GAAG,MAAM,yDAA2BF,WAA3B,EAAwCC,KAAK,CAACE,SAA9C,CAAhC;AAEA,SAAOC,iBAAiB,CAACJ,WAAD,EAAc,EACpC,GAAGC,KADiC;AAEpCC,IAAAA;AAFoC,GAAd,CAAxB;AAID;;AAED,SAASE,iBAAT,CACEJ,WADF,EAEE;AACEG,EAAAA,SADF;AAEEE,EAAAA,gBAFF;AAGEC,EAAAA,WAHF;AAIEJ,EAAAA,iBAJF;AAKEK,EAAAA;AALF,CAFF,EAeE;AACA;AACA,MAAI;AAAEC,IAAAA,GAAG,EAAEC,MAAP;AAAe,OAAGC;AAAlB,MAA2B,yBAAUV,WAAV,EAAuB;AACpDW,IAAAA,yBAAyB,EAAE,IADyB;AAEpDC,IAAAA,cAAc,EAAE;AAFoC,GAAvB,CAA/B;;AAKA,MAAIV,iBAAJ,EAAuB;AACrB,QAAI,CAACO,MAAM,CAACI,SAAZ,EAAuB;AACrBJ,MAAAA,MAAM,CAACI,SAAP,GAAmB,EAAnB;AACD;;AACDJ,IAAAA,MAAM,CAACI,SAAP,CAAiBX,iBAAjB,GAAqCA,iBAArC;AACD;;AAED,QAAMY,oBAAoB,GACxB,OAAOP,YAAP,KAAwB,UAAxB,GACIA,YAAY,CAACE,MAAD,CADhB,GAEI;AACAF,EAAAA,YAHJ,aAGIA,YAHJ,cAGIA,YAHJ,GAGoB,kCAAmBE,MAAnB,CAJtB,CAdA,CAoBA;AACA;;AACAA,EAAAA,MAAM,GAAG,uDAA4BA,MAA5B,EAAoC;AAC3CF,IAAAA,YAAY,EAAEO;AAD6B,GAApC,CAAT;AAGAL,EAAAA,MAAM,GAAG,iDAAsBA,MAAtB,CAAT;;AAEA,MAAIN,SAAS,CAACY,QAAV,CAAmB,KAAnB,CAAJ,EAA+B;AAAA;;AAC7B,QAAI,CAACN,MAAM,CAACO,GAAZ,EAAiBP,MAAM,CAACO,GAAP,GAAa,EAAb;AACjBP,IAAAA,MAAM,CAACO,GAAP,CAAWX,gBAAX,WACEA,gBADF,aACEA,gBADF,cACEA,gBADF,GACsBI,MAAM,CAACO,GAAP,CAAWX,gBADjC,uCACsD,uBADtD,CAF6B,CAK7B;;AACAI,IAAAA,MAAM,GAAG,8CAAmBA,MAAnB,EAA2B;AAClCJ,MAAAA,gBAAgB,EAAEI,MAAM,CAACO,GAAP,CAAWX;AADK,KAA3B,CAAT;AAGD;;AAED,MAAIF,SAAS,CAACY,QAAV,CAAmB,SAAnB,CAAJ,EAAmC;AAAA;;AACjC,QAAI,CAACN,MAAM,CAACQ,OAAZ,EAAqBR,MAAM,CAACQ,OAAP,GAAiB,EAAjB;AACrBR,IAAAA,MAAM,CAACQ,OAAP,CAAeC,OAAf,YAAyBZ,WAAzB,aAAyBA,WAAzB,cAAyBA,WAAzB,GAAwCG,MAAM,CAACQ,OAAP,CAAeC,OAAvD,yCAAmE,uBAAnE,CAFiC,CAIjC;;AACAT,IAAAA,MAAM,GAAG,kDAAuBA,MAAvB,EAA+B;AACtCS,MAAAA,OAAO,EAAET,MAAM,CAACQ,OAAP,CAAeC;AADc,KAA/B,CAAT;AAGD;;AAED,SAAO;AAAEV,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 { getAutolinkedPackagesAsync } from './getAutolinkedPackages';\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 const autolinkedModules = await getAutolinkedPackagesAsync(projectRoot, props.platforms);\n\n return getPrebuildConfig(projectRoot, {\n ...props,\n autolinkedModules,\n });\n}\n\nfunction getPrebuildConfig(\n projectRoot: string,\n {\n platforms,\n bundleIdentifier,\n packageName,\n autolinkedModules,\n expoUsername,\n }: {\n bundleIdentifier?: string;\n packageName?: string;\n platforms: ModPlatform[];\n autolinkedModules?: string[];\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 if (autolinkedModules) {\n if (!config._internal) {\n config._internal = {};\n }\n config._internal.autolinkedModules = autolinkedModules;\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"}
@@ -131,7 +131,7 @@ const withAndroidAdaptiveIconColors = (config, backgroundColor) => {
131
131
  function getIcon(config) {
132
132
  var _config$android2;
133
133
 
134
- return config.icon || ((_config$android2 = config.android) === null || _config$android2 === void 0 ? void 0 : _config$android2.icon) || null;
134
+ return ((_config$android2 = config.android) === null || _config$android2 === void 0 ? void 0 : _config$android2.icon) || config.icon || null;
135
135
  }
136
136
 
137
137
  function getAdaptiveIcon(config) {
@@ -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.android?.icon || config.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"}
@@ -18,8 +18,11 @@ function _configPlugins() {
18
18
  const toCamelCase = s => s.replace(/-./g, x => x.toUpperCase()[1]);
19
19
 
20
20
  function isModuleExcluded(config, packageName) {
21
- // TODO: Autolinking
22
- return false;
21
+ var _config$_internal;
22
+
23
+ // Skip using the versioned plugin when autolinking is enabled
24
+ // and doesn't link the native module.
25
+ return ((_config$_internal = config._internal) === null || _config$_internal === void 0 ? void 0 : _config$_internal.autolinkedModules) && !config._internal.autolinkedModules.includes(packageName);
23
26
  }
24
27
 
25
28
  function createLegacyPlugin({
@@ -1 +1 @@
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,QAAID,gBAAgB,CAACC,MAAD,EAASC,WAAT,CAApB,EAA2C;AACzC,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;AACAU,EAAAA,MAAM,CAACC,cAAP,CAAsBL,WAAtB,EAAmC,MAAnC,EAA2C;AACzCM,IAAAA,KAAK,EAAEH;AADkC,GAA3C;AAIA,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 Object.defineProperty(withUnknown, 'name', {\n value: methodName,\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","_internal","autolinkedModules","includes","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;AAAA;;AAC7F;AACA;AACA,SACE,sBAAAD,MAAM,CAACE,SAAP,wEAAkBC,iBAAlB,KAAuC,CAACH,MAAM,CAACE,SAAP,CAAiBC,iBAAjB,CAAmCC,QAAnC,CAA4CH,WAA5C,CAD1C;AAGD;;AAEM,SAASI,kBAAT,CAA4B;AACjCJ,EAAAA,WADiC;AAEjCK,EAAAA;AAFiC,CAA5B,EAMU;AACf,MAAIC,YAAJ;;AAEA,MAAIC,KAAK,CAACC,OAAN,CAAcH,QAAd,CAAJ,EAA6B;AAC3BC,IAAAA,YAAY,GAAGP,MAAM,IAAI,kCAAYA,MAAZ,EAAoBM,QAApB,CAAzB;AACD,GAFD,MAEO;AACLC,IAAAA,YAAY,GAAGD,QAAf;AACD;;AAED,QAAMI,WAAyB,GAAGV,MAAM,IAAI;AAC1C;AACA;AACA,QAAID,gBAAgB,CAACC,MAAD,EAASC,WAAT,CAApB,EAA2C;AACzC,aAAO,0CAAoBM,YAApB,EAAkCN,WAAlC,EAA+CD,MAA/C,CAAP;AACD;;AAED,WAAO,uCAAiBA,MAAjB,EAAyB;AAC9BW,MAAAA,eAAe,EAAE,IADa;AAE9BC,MAAAA,MAAM,EAAEX,WAFsB;AAG9B;AACAK,MAAAA,QAAQ,EAAE,0CAAoBC,YAApB,EAAkCN,WAAlC;AAJoB,KAAzB,CAAP;AAMD,GAbD;;AAeA,QAAMY,UAAU,GAAGnB,WAAW,CAAE,QAAOO,WAAY,EAArB,CAA9B;AACAa,EAAAA,MAAM,CAACC,cAAP,CAAsBL,WAAtB,EAAmC,MAAnC,EAA2C;AACzCM,IAAAA,KAAK,EAAEH;AADkC,GAA3C;AAIA,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 // Skip using the versioned plugin when autolinking is enabled\n // and doesn't link the native module.\n return (\n config._internal?.autolinkedModules && !config._internal.autolinkedModules.includes(packageName)\n );\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 Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n\n return withUnknown;\n}\n"],"file":"createLegacyPlugin.js"}
@@ -41,12 +41,12 @@ const LOCATION_USAGE = 'Allow $(PRODUCT_NAME) to access your location'; // Copie
41
41
  // user has react-native-maps installed but not expo-location.
42
42
 
43
43
  const withDefaultLocationPermissions = config => {
44
- var _config$_internal;
44
+ var _config$_internal, _config$_internal2;
45
45
 
46
- // TODO: Autolinking
47
- const isLinked = true; // Only add location permissions if react-native-maps is installed.
46
+ const isLinked = !((_config$_internal = config._internal) !== null && _config$_internal !== void 0 && _config$_internal.autolinkedModules) || config._internal.autolinkedModules.includes('react-native-maps'); // Only add location permissions if react-native-maps is installed.
48
47
 
49
- if ((_config$_internal = config._internal) !== null && _config$_internal !== void 0 && _config$_internal.projectRoot && _resolveFrom().default.silent(config._internal.projectRoot, 'react-native-maps') && isLinked) {
48
+
49
+ if ((_config$_internal2 = config._internal) !== null && _config$_internal2 !== void 0 && _config$_internal2.projectRoot && _resolveFrom().default.silent(config._internal.projectRoot, 'react-native-maps') && isLinked) {
50
50
  config = (0, _configPlugins().withInfoPlist)(config, config => {
51
51
  config.modResults.NSLocationWhenInUseUsageDescription = config.modResults.NSLocationWhenInUseUsageDescription || LOCATION_USAGE;
52
52
  return config;
@@ -1 +1 @@
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"}
1
+ {"version":3,"sources":["../../../src/plugins/unversioned/react-native-maps.ts"],"names":["LOCATION_USAGE","withDefaultLocationPermissions","config","isLinked","_internal","autolinkedModules","includes","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,QAAMC,QAAQ,GACZ,uBAACD,MAAM,CAACE,SAAR,8CAAC,kBAAkBC,iBAAnB,KACAH,MAAM,CAACE,SAAP,CAAiBC,iBAAjB,CAAmCC,QAAnC,CAA4C,mBAA5C,CAFF,CAD6D,CAI7D;;;AACA,MACE,sBAAAJ,MAAM,CAACE,SAAP,kEAAkBG,WAAlB,IACAC,uBAAYC,MAAZ,CAAmBP,MAAM,CAACE,SAAP,CAAiBG,WAApC,EAAiD,mBAAjD,CADA,IAEAJ,QAHF,EAIE;AACAD,IAAAA,MAAM,GAAG,oCAAcA,MAAd,EAAsBA,MAAM,IAAI;AACvCA,MAAAA,MAAM,CAACQ,UAAP,CAAkBC,mCAAlB,GACET,MAAM,CAACQ,UAAP,CAAkBC,mCAAlB,IAAyDX,cAD3D;AAEA,aAAOE,MAAP;AACD,KAJQ,CAAT;AAMA,WAAOU,+BAAcC,WAAd,CAA0BC,eAA1B,CAA0CZ,MAA1C,EAAkD,CACvD,2CADuD,EAEvD,yCAFuD,CAAlD,CAAP;AAID;;AACD,SAAOA,MAAP;AACD,CAtBD;;eAwBe,8CAAmB;AAChCa,EAAAA,WAAW,EAAE,mBADmB;AAEhCC,EAAAA,QAAQ,EAAE,CACRJ,+BAAcK,gBAAd,CAA+BC,oBADvB,EAERC,2BAAUC,IAAV,CAAeC,QAFP,EAGRpB,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 const isLinked =\n !config._internal?.autolinkedModules ||\n config._internal.autolinkedModules.includes('react-native-maps');\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"}
@@ -19,6 +19,26 @@ function _configPlugins() {
19
19
  return data;
20
20
  }
21
21
 
22
+ function _debug() {
23
+ const data = _interopRequireDefault(require("debug"));
24
+
25
+ _debug = function () {
26
+ return data;
27
+ };
28
+
29
+ return data;
30
+ }
31
+
32
+ function _getAutolinkedPackages() {
33
+ const data = require("../getAutolinkedPackages");
34
+
35
+ _getAutolinkedPackages = function () {
36
+ return data;
37
+ };
38
+
39
+ return data;
40
+ }
41
+
22
42
  function _withAndroidIcons() {
23
43
  const data = require("./icons/withAndroidIcons");
24
44
 
@@ -164,11 +184,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
164
184
  /**
165
185
  * These are the versioned first-party plugins with some of the future third-party plugins mixed in for legacy support.
166
186
  */
167
-
187
+ const debug = (0, _debug().default)('expo:prebuild-config');
168
188
  /**
169
189
  * Config plugin to apply all of the custom Expo iOS config plugins we support by default.
170
190
  * TODO: In the future most of this should go into versioned packages like expo-facebook, expo-updates, etc...
171
191
  */
192
+
172
193
  const withIosExpoPlugins = (config, {
173
194
  bundleIdentifier
174
195
  }) => {
@@ -177,7 +198,7 @@ const withIosExpoPlugins = (config, {
177
198
  config.ios.bundleIdentifier = bundleIdentifier;
178
199
  return (0, _configPlugins().withPlugins)(config, [[_configPlugins().IOSConfig.BundleIdentifier.withBundleIdentifier, {
179
200
  bundleIdentifier
180
- }], _configPlugins().IOSConfig.Swift.withSwiftBridgingHeader, _configPlugins().IOSConfig.Swift.withNoopSwiftFile, _configPlugins().IOSConfig.Google.withGoogle, _configPlugins().IOSConfig.Name.withDisplayName, _configPlugins().IOSConfig.Orientation.withOrientation, _configPlugins().IOSConfig.RequiresFullScreen.withRequiresFullScreen, _configPlugins().IOSConfig.Scheme.withScheme, _configPlugins().IOSConfig.UsesNonExemptEncryption.withUsesNonExemptEncryption, _configPlugins().IOSConfig.Version.withBuildNumber, _configPlugins().IOSConfig.Version.withVersion, _configPlugins().IOSConfig.Google.withGoogleServicesFile, _configPlugins().IOSConfig.JsEngine.withJsEnginePodfileProps, // Entitlements
201
+ }], _configPlugins().IOSConfig.Swift.withSwiftBridgingHeader, _configPlugins().IOSConfig.Swift.withNoopSwiftFile, _configPlugins().IOSConfig.Google.withGoogle, _configPlugins().IOSConfig.Name.withDisplayName, _configPlugins().IOSConfig.Name.withProductName, _configPlugins().IOSConfig.Orientation.withOrientation, _configPlugins().IOSConfig.RequiresFullScreen.withRequiresFullScreen, _configPlugins().IOSConfig.Scheme.withScheme, _configPlugins().IOSConfig.UsesNonExemptEncryption.withUsesNonExemptEncryption, _configPlugins().IOSConfig.Version.withBuildNumber, _configPlugins().IOSConfig.Version.withVersion, _configPlugins().IOSConfig.Google.withGoogleServicesFile, _configPlugins().IOSConfig.JsEngine.withJsEnginePodfileProps, // Entitlements
181
202
  _configPlugins().IOSConfig.Entitlements.withAssociatedDomains, // XcodeProject
182
203
  _configPlugins().IOSConfig.DeviceFamily.withDeviceFamily, _configPlugins().IOSConfig.Bitcode.withBitcode, _configPlugins().IOSConfig.Locales.withLocales, // Dangerous
183
204
  _withIosIcons().withIosIcons]);
@@ -242,6 +263,11 @@ const expoManagedVersionedPlugins = ['expo-firebase-analytics', 'expo-firebase-c
242
263
 
243
264
  const withOptionalLegacyPlugins = (config, plugins) => {
244
265
  return plugins.reduce((prev, plugin) => {
266
+ if ((0, _getAutolinkedPackages().shouldSkipAutoPlugin)(config, plugin)) {
267
+ debug('Skipping unlinked auto plugin:', plugin);
268
+ return prev;
269
+ }
270
+
245
271
  return (0, _configPlugins().withStaticPlugin)(prev, {
246
272
  // hide errors
247
273
  _isLegacyPlugin: true,
@@ -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","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"}
1
+ {"version":3,"sources":["../../src/plugins/withDefaultPlugins.ts"],"names":["debug","withIosExpoPlugins","config","bundleIdentifier","ios","IOSConfig","BundleIdentifier","withBundleIdentifier","Swift","withSwiftBridgingHeader","withNoopSwiftFile","Google","withGoogle","Name","withDisplayName","withProductName","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';\nimport Debug from 'debug';\n\nimport { shouldSkipAutoPlugin } from '../getAutolinkedPackages';\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\nconst debug = Debug('expo:prebuild-config');\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.Name.withProductName,\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 if (shouldSkipAutoPlugin(config, plugin)) {\n debug('Skipping unlinked auto plugin:', plugin);\n return prev;\n }\n\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.11",
3
+ "version": "3.0.15",
4
4
  "description": "Get the prebuild config",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -35,12 +35,13 @@
35
35
  "@types/xml2js": "^0.4.5"
36
36
  },
37
37
  "dependencies": {
38
- "@expo/config": "6.0.11",
39
- "@expo/config-plugins": "4.0.11",
38
+ "@expo/config": "6.0.15",
39
+ "@expo/config-plugins": "4.0.15",
40
40
  "@expo/config-types": "^43.0.1",
41
41
  "@expo/image-utils": "0.3.18",
42
42
  "@expo/json-file": "8.2.34",
43
43
  "debug": "^4.3.1",
44
+ "expo-modules-autolinking": "~0.5.1",
44
45
  "fs-extra": "^9.0.0",
45
46
  "resolve-from": "^5.0.0",
46
47
  "semver": "7.3.2",