@expo/config-plugins 4.1.4 → 5.0.1
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.
- package/build/Plugin.types.d.ts +8 -0
- package/build/Plugin.types.js.map +1 -1
- package/build/android/AllowBackup.js.map +1 -1
- package/build/android/BuildProperties.js.map +1 -1
- package/build/android/Colors.js.map +1 -1
- package/build/android/EasBuild.js.map +1 -1
- package/build/android/EasBuildGradleScript.js.map +1 -1
- package/build/android/GoogleMapsApiKey.js.map +1 -1
- package/build/android/GoogleServices.js.map +1 -1
- package/build/android/IntentFilters.js.map +1 -1
- package/build/android/Manifest.d.ts +1 -0
- package/build/android/Manifest.js.map +1 -1
- package/build/android/Name.js.map +1 -1
- package/build/android/Orientation.js.map +1 -1
- package/build/android/Package.d.ts +5 -0
- package/build/android/Package.js +56 -0
- package/build/android/Package.js.map +1 -1
- package/build/android/Paths.js.map +1 -1
- package/build/android/Permissions.js +0 -18
- package/build/android/Permissions.js.map +1 -1
- package/build/android/PrimaryColor.js.map +1 -1
- package/build/android/Properties.js.map +1 -1
- package/build/android/Resources.js.map +1 -1
- package/build/android/Scheme.js.map +1 -1
- package/build/android/StatusBar.js.map +1 -1
- package/build/android/Strings.js.map +1 -1
- package/build/android/Styles.js.map +1 -1
- package/build/android/Updates.js.map +1 -1
- package/build/android/Version.js.map +1 -1
- package/build/android/WindowSoftInputMode.js.map +1 -1
- package/build/android/codeMod.js.map +1 -1
- package/build/android/index.js.map +1 -1
- package/build/index.js.map +1 -1
- package/build/ios/Bitcode.js.map +1 -1
- package/build/ios/BuildProperties.js.map +1 -1
- package/build/ios/BuildScheme.js.map +1 -1
- package/build/ios/BundleIdentifier.js.map +1 -1
- package/build/ios/DeviceFamily.js.map +1 -1
- package/build/ios/Entitlements.js.map +1 -1
- package/build/ios/Google.js.map +1 -1
- package/build/ios/IosConfig.types.js.map +1 -1
- package/build/ios/Locales.js.map +1 -1
- package/build/ios/Maps.js.map +1 -1
- package/build/ios/Name.js +8 -2
- package/build/ios/Name.js.map +1 -1
- package/build/ios/Orientation.js +4 -1
- package/build/ios/Orientation.js.map +1 -1
- package/build/ios/Paths.js.map +1 -1
- package/build/ios/Permissions.js.map +1 -1
- package/build/ios/ProvisioningProfile.js +11 -1
- package/build/ios/ProvisioningProfile.js.map +1 -1
- package/build/ios/RequiresFullScreen.js.map +1 -1
- package/build/ios/Scheme.js +4 -1
- package/build/ios/Scheme.js.map +1 -1
- package/build/ios/Swift.js.map +1 -1
- package/build/ios/Target.js.map +1 -1
- package/build/ios/Updates.js.map +1 -1
- package/build/ios/UsesNonExemptEncryption.js +4 -1
- package/build/ios/UsesNonExemptEncryption.js.map +1 -1
- package/build/ios/Version.js +8 -2
- package/build/ios/Version.js.map +1 -1
- package/build/ios/XcodeProjectFile.js.map +1 -1
- package/build/ios/codeMod.js.map +1 -1
- package/build/ios/index.js.map +1 -1
- package/build/ios/utils/Xcodeproj.js +11 -1
- package/build/ios/utils/Xcodeproj.js.map +1 -1
- package/build/ios/utils/getInfoPlistPath.js.map +1 -1
- package/build/ios/utils/string.js.map +1 -1
- package/build/plugins/android-plugins.js.map +1 -1
- package/build/plugins/createBaseMod.js.map +1 -1
- package/build/plugins/ios-plugins.d.ts +5 -0
- package/build/plugins/ios-plugins.js +46 -0
- package/build/plugins/ios-plugins.js.map +1 -1
- package/build/plugins/mod-compiler.js +18 -4
- package/build/plugins/mod-compiler.js.map +1 -1
- package/build/plugins/withAndroidBaseMods.js.map +1 -1
- package/build/plugins/withDangerousMod.js.map +1 -1
- package/build/plugins/withIosBaseMods.js.map +1 -1
- package/build/plugins/withMod.js.map +1 -1
- package/build/plugins/withPlugins.js.map +1 -1
- package/build/plugins/withRunOnce.js.map +1 -1
- package/build/plugins/withStaticPlugin.js.map +1 -1
- package/build/utils/BuildProperties.types.js.map +1 -1
- package/build/utils/Updates.d.ts +1 -0
- package/build/utils/Updates.js +10 -1
- package/build/utils/Updates.js.map +1 -1
- package/build/utils/XML.js.map +1 -1
- package/build/utils/commonCodeMod.js.map +1 -1
- package/build/utils/errors.js.map +1 -1
- package/build/utils/fs.js.map +1 -1
- package/build/utils/generateCode.js.map +1 -1
- package/build/utils/history.js.map +1 -1
- package/build/utils/matchBrackets.js.map +1 -1
- package/build/utils/modules.js.map +1 -1
- package/build/utils/obj.d.ts +2 -0
- package/build/utils/obj.js +24 -0
- package/build/utils/obj.js.map +1 -0
- package/build/utils/plugin-resolver.js.map +1 -1
- package/build/utils/sortObject.js.map +1 -1
- package/build/utils/versions.js.map +1 -1
- package/build/utils/warnings.js.map +1 -1
- package/package.json +7 -6
|
@@ -177,6 +177,15 @@ function sortMods(commands, order) {
|
|
|
177
177
|
return sorted;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
function getRawClone({
|
|
181
|
+
mods,
|
|
182
|
+
...config
|
|
183
|
+
}) {
|
|
184
|
+
// Configs should be fully serializable, so we can clone them without worrying about
|
|
185
|
+
// the mods.
|
|
186
|
+
return Object.freeze(JSON.parse(JSON.stringify(config)));
|
|
187
|
+
}
|
|
188
|
+
|
|
180
189
|
const orders = {
|
|
181
190
|
ios: [// dangerous runs first
|
|
182
191
|
'dangerous', // run the XcodeProject mod second because many plugins attempt to read from it.
|
|
@@ -200,6 +209,8 @@ async function evalModsAsync(config, {
|
|
|
200
209
|
*/
|
|
201
210
|
assertMissingModProviders
|
|
202
211
|
}) {
|
|
212
|
+
const modRawConfig = getRawClone(config);
|
|
213
|
+
|
|
203
214
|
for (const [platformName, platform] of Object.entries((_config$mods = config.mods) !== null && _config$mods !== void 0 ? _config$mods : {})) {
|
|
204
215
|
var _config$mods;
|
|
205
216
|
|
|
@@ -244,14 +255,17 @@ async function evalModsAsync(config, {
|
|
|
244
255
|
|
|
245
256
|
const results = await mod({ ...config,
|
|
246
257
|
modResults: null,
|
|
247
|
-
modRequest
|
|
258
|
+
modRequest,
|
|
259
|
+
modRawConfig
|
|
248
260
|
}); // Sanity check to help locate non compliant mods.
|
|
249
261
|
|
|
250
|
-
config = (0, _createBaseMod().assertModResults)(results, platformName, modName); // @ts-ignore:
|
|
262
|
+
config = (0, _createBaseMod().assertModResults)(results, platformName, modName); // @ts-ignore: `modResults` is added for modifications
|
|
263
|
+
|
|
264
|
+
delete config.modResults; // @ts-ignore: `modRequest` is added for modifications
|
|
251
265
|
|
|
252
|
-
delete config.
|
|
266
|
+
delete config.modRequest; // @ts-ignore: `modRawConfig` is added for modifications
|
|
253
267
|
|
|
254
|
-
delete config.
|
|
268
|
+
delete config.modRawConfig;
|
|
255
269
|
}
|
|
256
270
|
}
|
|
257
271
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/mod-compiler.ts"],"names":["debug","withDefaultBaseMods","config","props","withIntrospectionBaseMods","saveToInternal","skipEmptyMod","mods","platform","Object","keys","key","isIntrospective","compileModsAsync","introspect","evalModsAsync","sortMods","commands","order","allKeys","map","completeOrder","Set","sorted","length","group","shift","commandSet","find","push","orders","ios","android","projectRoot","platforms","assertMissingModProviders","platformName","entries","includes","name","join","platformProjectRoot","path","projectName","undefined","modName","mod","modRequest","isProvider","errorMessage","PluginError","Warnings","addWarningForPlatform","results","modResults"],"mappings":"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","sourcesContent":["import Debug from 'debug';\nimport path from 'path';\n\nimport { ExportedConfig, Mod, ModConfig, ModPlatform } from '../Plugin.types';\nimport { getHackyProjectName } from '../ios/utils/Xcodeproj';\nimport { PluginError } from '../utils/errors';\nimport * as Warnings from '../utils/warnings';\nimport { assertModResults, ForwardedBaseModOptions } from './createBaseMod';\nimport { withAndroidBaseMods } from './withAndroidBaseMods';\nimport { withIosBaseMods } from './withIosBaseMods';\n\nconst debug = Debug('expo:config-plugins:mod-compiler');\n\nexport function withDefaultBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, props);\n config = withAndroidBaseMods(config, props);\n return config;\n}\n\n/**\n * Get a prebuild config that safely evaluates mods without persisting any changes to the file system.\n * Currently this only supports infoPlist, entitlements, androidManifest, strings, gradleProperties, and expoPlist mods.\n * This plugin should be evaluated directly:\n */\nexport function withIntrospectionBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, {\n saveToInternal: true,\n // This writing optimization can be skipped since we never write in introspection mode.\n // Including empty mods will ensure that all mods get introspected.\n skipEmptyMod: false,\n ...props,\n });\n config = withAndroidBaseMods(config, {\n saveToInternal: true,\n skipEmptyMod: false,\n ...props,\n });\n\n if (config.mods) {\n // Remove all mods that don't have an introspection base mod, for instance `dangerous` mods.\n for (const platform of Object.keys(config.mods) as ModPlatform[]) {\n // const platformPreserve = preserve[platform];\n for (const key of Object.keys(config.mods[platform] || {})) {\n // @ts-ignore\n if (!config.mods[platform]?.[key]?.isIntrospective) {\n debug(`removing non-idempotent mod: ${platform}.${key}`);\n // @ts-ignore\n delete config.mods[platform]?.[key];\n }\n }\n }\n }\n\n return config;\n}\n\n/**\n *\n * @param projectRoot\n * @param config\n */\nexport async function compileModsAsync(\n config: ExportedConfig,\n props: {\n projectRoot: string;\n platforms?: ModPlatform[];\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n }\n): Promise<ExportedConfig> {\n if (props.introspect === true) {\n config = withIntrospectionBaseMods(config);\n } else {\n config = withDefaultBaseMods(config);\n }\n return await evalModsAsync(config, props);\n}\n\nfunction sortMods(commands: [string, any][], order: string[]): [string, any][] {\n const allKeys = commands.map(([key]) => key);\n const completeOrder = [...new Set([...order, ...allKeys])];\n const sorted: [string, any][] = [];\n while (completeOrder.length) {\n const group = completeOrder.shift()!;\n const commandSet = commands.find(([key]) => key === group);\n if (commandSet) {\n sorted.push(commandSet);\n }\n }\n return sorted;\n}\n\nconst orders: Record<string, string[]> = {\n ios: [\n // dangerous runs first\n 'dangerous',\n // run the XcodeProject mod second because many plugins attempt to read from it.\n 'xcodeproj',\n ],\n android: ['dangerous'],\n};\n/**\n * A generic plugin compiler.\n *\n * @param config\n */\nexport async function evalModsAsync(\n config: ExportedConfig,\n {\n projectRoot,\n introspect,\n platforms,\n /**\n * Throw errors when mods are missing providers.\n * @default true\n */\n assertMissingModProviders,\n }: {\n projectRoot: string;\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n platforms?: ModPlatform[];\n }\n): Promise<ExportedConfig> {\n for (const [platformName, platform] of Object.entries(config.mods ?? ({} as ModConfig))) {\n if (platforms && !platforms.includes(platformName as any)) {\n debug(`skip platform: ${platformName}`);\n continue;\n }\n\n let entries = Object.entries(platform);\n if (entries.length) {\n // Move dangerous item to the first position if it exists, this ensures that all dangerous code runs first.\n entries = sortMods(entries, orders[platformName]!);\n debug(`run in order: ${entries.map(([name]) => name).join(', ')}`);\n const platformProjectRoot = path.join(projectRoot, platformName);\n const projectName =\n platformName === 'ios' ? getHackyProjectName(projectRoot, config) : undefined;\n\n for (const [modName, mod] of entries) {\n const modRequest = {\n projectRoot,\n projectName,\n platformProjectRoot,\n platform: platformName as ModPlatform,\n modName,\n introspect: !!introspect,\n };\n\n if (!(mod as Mod).isProvider) {\n // In strict mode, throw an error.\n const errorMessage = `Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods`;\n if (assertMissingModProviders !== false) {\n throw new PluginError(errorMessage, 'MISSING_PROVIDER');\n } else {\n Warnings.addWarningForPlatform(\n platformName as ModPlatform,\n `${platformName}.${modName}`,\n `Skipping: Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods. This may be due to an outdated version of Expo CLI.`\n );\n // In loose mode, just skip the mod entirely.\n continue;\n }\n }\n\n const results = await (mod as Mod)({\n ...config,\n modResults: null,\n modRequest,\n });\n\n // Sanity check to help locate non compliant mods.\n config = assertModResults(results, platformName, modName);\n // @ts-ignore: data is added for modifications\n delete config.modResults;\n // @ts-ignore: info is added for modifications\n delete config.modRequest;\n }\n }\n }\n\n return config;\n}\n"],"file":"mod-compiler.js"}
|
|
1
|
+
{"version":3,"file":"mod-compiler.js","names":["debug","Debug","withDefaultBaseMods","config","props","withIosBaseMods","withAndroidBaseMods","withIntrospectionBaseMods","saveToInternal","skipEmptyMod","mods","platform","Object","keys","key","isIntrospective","compileModsAsync","introspect","evalModsAsync","sortMods","commands","order","allKeys","map","completeOrder","Set","sorted","length","group","shift","commandSet","find","push","getRawClone","freeze","JSON","parse","stringify","orders","ios","android","projectRoot","platforms","assertMissingModProviders","modRawConfig","platformName","entries","includes","name","join","platformProjectRoot","path","projectName","getHackyProjectName","undefined","modName","mod","modRequest","isProvider","errorMessage","PluginError","Warnings","addWarningForPlatform","results","modResults","assertModResults"],"sources":["../../src/plugins/mod-compiler.ts"],"sourcesContent":["import Debug from 'debug';\nimport path from 'path';\n\nimport { ExportedConfig, Mod, ModConfig, ModPlatform } from '../Plugin.types';\nimport { getHackyProjectName } from '../ios/utils/Xcodeproj';\nimport { PluginError } from '../utils/errors';\nimport * as Warnings from '../utils/warnings';\nimport { assertModResults, ForwardedBaseModOptions } from './createBaseMod';\nimport { withAndroidBaseMods } from './withAndroidBaseMods';\nimport { withIosBaseMods } from './withIosBaseMods';\n\nconst debug = Debug('expo:config-plugins:mod-compiler');\n\nexport function withDefaultBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, props);\n config = withAndroidBaseMods(config, props);\n return config;\n}\n\n/**\n * Get a prebuild config that safely evaluates mods without persisting any changes to the file system.\n * Currently this only supports infoPlist, entitlements, androidManifest, strings, gradleProperties, and expoPlist mods.\n * This plugin should be evaluated directly:\n */\nexport function withIntrospectionBaseMods(\n config: ExportedConfig,\n props: ForwardedBaseModOptions = {}\n): ExportedConfig {\n config = withIosBaseMods(config, {\n saveToInternal: true,\n // This writing optimization can be skipped since we never write in introspection mode.\n // Including empty mods will ensure that all mods get introspected.\n skipEmptyMod: false,\n ...props,\n });\n config = withAndroidBaseMods(config, {\n saveToInternal: true,\n skipEmptyMod: false,\n ...props,\n });\n\n if (config.mods) {\n // Remove all mods that don't have an introspection base mod, for instance `dangerous` mods.\n for (const platform of Object.keys(config.mods) as ModPlatform[]) {\n // const platformPreserve = preserve[platform];\n for (const key of Object.keys(config.mods[platform] || {})) {\n // @ts-ignore\n if (!config.mods[platform]?.[key]?.isIntrospective) {\n debug(`removing non-idempotent mod: ${platform}.${key}`);\n // @ts-ignore\n delete config.mods[platform]?.[key];\n }\n }\n }\n }\n\n return config;\n}\n\n/**\n *\n * @param projectRoot\n * @param config\n */\nexport async function compileModsAsync(\n config: ExportedConfig,\n props: {\n projectRoot: string;\n platforms?: ModPlatform[];\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n }\n): Promise<ExportedConfig> {\n if (props.introspect === true) {\n config = withIntrospectionBaseMods(config);\n } else {\n config = withDefaultBaseMods(config);\n }\n return await evalModsAsync(config, props);\n}\n\nfunction sortMods(commands: [string, any][], order: string[]): [string, any][] {\n const allKeys = commands.map(([key]) => key);\n const completeOrder = [...new Set([...order, ...allKeys])];\n const sorted: [string, any][] = [];\n while (completeOrder.length) {\n const group = completeOrder.shift()!;\n const commandSet = commands.find(([key]) => key === group);\n if (commandSet) {\n sorted.push(commandSet);\n }\n }\n return sorted;\n}\n\nfunction getRawClone({ mods, ...config }: ExportedConfig) {\n // Configs should be fully serializable, so we can clone them without worrying about\n // the mods.\n return Object.freeze(JSON.parse(JSON.stringify(config)));\n}\n\nconst orders: Record<string, string[]> = {\n ios: [\n // dangerous runs first\n 'dangerous',\n // run the XcodeProject mod second because many plugins attempt to read from it.\n 'xcodeproj',\n ],\n android: ['dangerous'],\n};\n/**\n * A generic plugin compiler.\n *\n * @param config\n */\nexport async function evalModsAsync(\n config: ExportedConfig,\n {\n projectRoot,\n introspect,\n platforms,\n /**\n * Throw errors when mods are missing providers.\n * @default true\n */\n assertMissingModProviders,\n }: {\n projectRoot: string;\n introspect?: boolean;\n assertMissingModProviders?: boolean;\n platforms?: ModPlatform[];\n }\n): Promise<ExportedConfig> {\n const modRawConfig = getRawClone(config);\n for (const [platformName, platform] of Object.entries(config.mods ?? ({} as ModConfig))) {\n if (platforms && !platforms.includes(platformName as any)) {\n debug(`skip platform: ${platformName}`);\n continue;\n }\n\n let entries = Object.entries(platform);\n if (entries.length) {\n // Move dangerous item to the first position if it exists, this ensures that all dangerous code runs first.\n entries = sortMods(entries, orders[platformName]!);\n debug(`run in order: ${entries.map(([name]) => name).join(', ')}`);\n const platformProjectRoot = path.join(projectRoot, platformName);\n const projectName =\n platformName === 'ios' ? getHackyProjectName(projectRoot, config) : undefined;\n\n for (const [modName, mod] of entries) {\n const modRequest = {\n projectRoot,\n projectName,\n platformProjectRoot,\n platform: platformName as ModPlatform,\n modName,\n introspect: !!introspect,\n };\n\n if (!(mod as Mod).isProvider) {\n // In strict mode, throw an error.\n const errorMessage = `Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods`;\n if (assertMissingModProviders !== false) {\n throw new PluginError(errorMessage, 'MISSING_PROVIDER');\n } else {\n Warnings.addWarningForPlatform(\n platformName as ModPlatform,\n `${platformName}.${modName}`,\n `Skipping: Initial base modifier for \"${platformName}.${modName}\" is not a provider and therefore will not provide modResults to child mods. This may be due to an outdated version of Expo CLI.`\n );\n // In loose mode, just skip the mod entirely.\n continue;\n }\n }\n\n const results = await (mod as Mod)({\n ...config,\n modResults: null,\n modRequest,\n modRawConfig,\n });\n\n // Sanity check to help locate non compliant mods.\n config = assertModResults(results, platformName, modName);\n // @ts-ignore: `modResults` is added for modifications\n delete config.modResults;\n // @ts-ignore: `modRequest` is added for modifications\n delete config.modRequest;\n // @ts-ignore: `modRawConfig` is added for modifications\n delete config.modRawConfig;\n }\n }\n }\n\n return config;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/withAndroidBaseMods.ts"],"names":["readFile","writeFile","promises","getAndroidManifestTemplate","config","android","package","sortAndroidManifest","obj","manifest","reverseSortString","Array","isArray","sort","a","b","$","application","map","defaultProviders","dangerous","getFilePath","read","filePath","modResults","write","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","xml","colors","Colors","getProjectColorsXMLPathAsync","colorsNight","kind","styles","Styles","getProjectStylesXMLPathAsync","fallback","projectBuildGradle","Paths","getProjectBuildGradleFilePath","getFileInfo","contents","settingsGradle","getSettingsGradleFilePath","appBuildGradle","getAppBuildGradleFilePath","mainActivity","getProjectFilePath","mainApplication","withAndroidBaseMods","providers","props","platform","getAndroidModFileProviders"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAEA,MAAM;AAAEA,EAAAA,QAAF;AAAYC,EAAAA;AAAZ,IAA0BC,cAAhC;;AAIA,SAASC,0BAAT,CAAoCC,MAApC,EAA4D;AAAA;;AAC1D;AACA;AACA,SAAO,0BAAe;AACxB,kFADuB,4CAEnBA,MAAM,CAACC,OAFY,oDAEnB,gBAAgBC,OAFG,yEAEQ,uBAC5B;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAjDS,CAAP;AAkDD;;AAEM,SAASC,mBAAT,CAA6BC,GAA7B,EAAmD;AACxD,MAAIA,GAAG,CAACC,QAAR,EAAkB;AAChB;AACAD,IAAAA,GAAG,CAACC,QAAJ,GAAe,8BAAWD,GAAG,CAACC,QAAf,EAAyBC,+BAAzB,CAAf;;AAEA,QAAIC,KAAK,CAACC,OAAN,CAAcJ,GAAG,CAACC,QAAJ,CAAa,iBAAb,CAAd,CAAJ,EAAoD;AAClD;AACAD,MAAAA,GAAG,CAACC,QAAJ,CAAa,iBAAb,EAAgCI,IAAhC,CAAqC,CAACC,CAAD,EAAIC,CAAJ,KAAU;AAC7C,YAAID,CAAC,CAACE,CAAF,CAAI,cAAJ,IAAsBD,CAAC,CAACC,CAAF,CAAI,cAAJ,CAA1B,EAA+C,OAAO,CAAC,CAAR;AAC/C,YAAIF,CAAC,CAACE,CAAF,CAAI,cAAJ,IAAsBD,CAAC,CAACC,CAAF,CAAI,cAAJ,CAA1B,EAA+C,OAAO,CAAP;AAC/C,eAAO,CAAP;AACD,OAJD;AAKD;;AAED,QAAIL,KAAK,CAACC,OAAN,CAAcJ,GAAG,CAACC,QAAJ,CAAaQ,WAA3B,CAAJ,EAA6C;AAC3C;AACAT,MAAAA,GAAG,CAACC,QAAJ,CAAaQ,WAAb,GAA2BT,GAAG,CAACC,QAAJ,CAAaQ,WAAb,CAAyBC,GAAzB,CAA6BD,WAAW,IAAI;AACrEA,QAAAA,WAAW,GAAG,oCAAiBA,WAAjB,EAA8B,CAAC,WAAD,EAAc,SAAd,EAAyB,UAAzB,CAA9B,CAAd;;AAEA,YAAIN,KAAK,CAACC,OAAN,CAAcK,WAAW,CAAC,WAAD,CAAzB,CAAJ,EAA6C;AAC3C;AACAA,UAAAA,WAAW,CAAC,WAAD,CAAX,CAAyBJ,IAAzB,CAA8B,CAACC,CAAD,EAAIC,CAAJ,KAAU;AACtC,gBAAID,CAAC,CAACE,CAAF,CAAI,cAAJ,IAAsBD,CAAC,CAACC,CAAF,CAAI,cAAJ,CAA1B,EAA+C,OAAO,CAAC,CAAR;AAC/C,gBAAIF,CAAC,CAACE,CAAF,CAAI,cAAJ,IAAsBD,CAAC,CAACC,CAAF,CAAI,cAAJ,CAA1B,EAA+C,OAAO,CAAP;AAC/C,mBAAO,CAAP;AACD,WAJD;AAKD;;AACD,eAAOC,WAAP;AACD,OAZ0B,CAA3B;AAaD;AACF;;AACD,SAAOT,GAAP;AACD;;AAED,MAAMW,gBAAgB,GAAG;AACvBC,EAAAA,SAAS,EAAE,+BAAkB;AAC3BC,IAAAA,WAAW,GAAG;AACZ,aAAO,EAAP;AACD,KAH0B;;AAI3B,UAAMC,IAAN,GAAa;AACX,aAAO;AAAEC,QAAAA,QAAQ,EAAE,EAAZ;AAAgBC,QAAAA,UAAU,EAAE;AAA5B,OAAP;AACD,KAN0B;;AAO3B,UAAMC,KAAN,GAAc,CAAE;;AAPW,GAAlB,CADY;AAWvB;AACAhB,EAAAA,QAAQ,EAAE,+BAAmC;AAC3CiB,IAAAA,eAAe,EAAE,IAD0B;;AAE3CL,IAAAA,WAAW,CAAC;AAAEM,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAAD,EAA0C;AACnD,aAAOC,gBAAKC,IAAL,CAAUF,mBAAV,EAA+B,kCAA/B,CAAP;AACD,KAJ0C;;AAK3C,UAAMN,IAAN,CAAWC,QAAX,EAAqBnB,MAArB,EAA6B;AAC3B,UAAI;AACF,eAAO,MAAM2B,oBAASC,wBAAT,CAAkCT,QAAlC,CAAb;AACD,OAFD,CAEE,OAAOU,KAAP,EAAmB;AACnB,YAAI,CAAC7B,MAAM,CAACuB,UAAP,CAAkBO,UAAvB,EAAmC;AACjC,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO,MAAM9B,0BAA0B,CAACC,MAAD,CAAvC;AACD,KAd0C;;AAe3C,UAAMqB,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAF;AAAcG,MAAAA,UAAU,EAAE;AAAEO,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AAChB,YAAMH,oBAASI,yBAAT,CAAmCZ,QAAnC,EAA6ChB,mBAAmB,CAACiB,UAAD,CAAhE,CAAN;AACD;;AAlB0C,GAAnC,CAZa;AAiCvB;AACAY,EAAAA,gBAAgB,EAAE,+BAAsC;AACtDV,IAAAA,eAAe,EAAE,IADqC;;AAGtDL,IAAAA,WAAW,CAAC;AAAEM,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAAD,EAA0C;AACnD,aAAOC,gBAAKC,IAAL,CAAUF,mBAAV,EAA+B,mBAA/B,CAAP;AACD,KALqD;;AAMtD,UAAMN,IAAN,CAAWC,QAAX,EAAqBnB,MAArB,EAA6B;AAC3B,UAAI;AACF,eAAO,MAAMiC,sBAAWC,mBAAX,CAA+B,MAAMtC,QAAQ,CAACuB,QAAD,EAAW,MAAX,CAA7C,CAAb;AACD,OAFD,CAEE,OAAOU,KAAP,EAAc;AACd,YAAI,CAAC7B,MAAM,CAACuB,UAAP,CAAkBO,UAAvB,EAAmC;AACjC,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO,EAAP;AACD,KAfqD;;AAgBtD,UAAMR,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAF;AAAcG,MAAAA,UAAU,EAAE;AAAEO,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AAChB,YAAMjC,SAAS,CAACsB,QAAD,EAAWc,sBAAWE,sBAAX,CAAkCf,UAAlC,CAAX,CAAf;AACD;;AAnBqD,GAAtC,CAlCK;AAwDvB;AACAgB,EAAAA,OAAO,EAAE,+BAAgC;AACvCd,IAAAA,eAAe,EAAE,IADsB;;AAGvC,UAAML,WAAN,CAAkB;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA,WAAF;AAAeP,QAAAA;AAAf;AAAd,KAAlB,EAA+D;AAC7D,UAAI;AACF,eAAO,MAAMQ,mBAAQC,6BAAR,CAAsCF,WAAtC,CAAb;AACD,OAFD,CAEE,OAAOR,KAAP,EAAmB;AACnB,YAAI,CAACC,UAAL,EAAiB;AACf,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO,EAAP;AACD,KAZsC;;AAcvC,UAAMX,IAAN,CAAWC,QAAX,EAAqBnB,MAArB,EAA6B;AAC3B,UAAI;AACF,eAAO,MAAMwC,qBAAUC,qBAAV,CAAgC;AAAEhB,UAAAA,IAAI,EAAEN;AAAR,SAAhC,CAAb;AACD,OAFD,CAEE,OAAOU,KAAP,EAAc;AACd,YAAI,CAAC7B,MAAM,CAACuB,UAAP,CAAkBO,UAAvB,EAAmC;AACjC,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO;AAAEa,QAAAA,SAAS,EAAE;AAAb,OAAP;AACD,KAvBsC;;AAwBvC,UAAMrB,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAF;AAAcG,MAAAA,UAAU,EAAE;AAAEO,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AAChB,YAAM,0BAAc;AAAEL,QAAAA,IAAI,EAAEN,QAAR;AAAkBwB,QAAAA,GAAG,EAAEvB;AAAvB,OAAd,CAAN;AACD;;AA3BsC,GAAhC,CAzDc;AAuFvBwB,EAAAA,MAAM,EAAE,+BAAgC;AACtCtB,IAAAA,eAAe,EAAE,IADqB;;AAGtC,UAAML,WAAN,CAAkB;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA,WAAF;AAAeP,QAAAA;AAAf;AAAd,KAAlB,EAA+D;AAC7D,UAAI;AACF,eAAO,MAAMe,kBAAOC,4BAAP,CAAoCT,WAApC,CAAb;AACD,OAFD,CAEE,OAAOR,KAAP,EAAmB;AACnB,YAAI,CAACC,UAAL,EAAiB;AACf,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO,EAAP;AACD,KAZqC;;AActC,UAAMX,IAAN,CAAWC,QAAX,EAAqB;AAAEI,MAAAA,UAAU,EAAE;AAAEO,QAAAA;AAAF;AAAd,KAArB,EAAqD;AACnD,UAAI;AACF,eAAO,MAAMU,qBAAUC,qBAAV,CAAgC;AAAEhB,UAAAA,IAAI,EAAEN;AAAR,SAAhC,CAAb;AACD,OAFD,CAEE,OAAOU,KAAP,EAAmB;AACnB,YAAI,CAACC,UAAL,EAAiB;AACf,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO;AAAEa,QAAAA,SAAS,EAAE;AAAb,OAAP;AACD,KAvBqC;;AAwBtC,UAAMrB,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAF;AAAcG,MAAAA,UAAU,EAAE;AAAEO,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AAChB,YAAM,0BAAc;AAAEL,QAAAA,IAAI,EAAEN,QAAR;AAAkBwB,QAAAA,GAAG,EAAEvB;AAAvB,OAAd,CAAN;AACD;;AA3BqC,GAAhC,CAvFe;AAqHvB2B,EAAAA,WAAW,EAAE,+BAAgC;AAC3CzB,IAAAA,eAAe,EAAE,IAD0B;;AAG3C,UAAML,WAAN,CAAkB;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA,WAAF;AAAeP,QAAAA;AAAf;AAAd,KAAlB,EAA+D;AAC7D,UAAI;AACF,eAAO,MAAMe,kBAAOC,4BAAP,CAAoCT,WAApC,EAAiD;AAAEW,UAAAA,IAAI,EAAE;AAAR,SAAjD,CAAb;AACD,OAFD,CAEE,OAAOnB,KAAP,EAAmB;AACnB,YAAI,CAACC,UAAL,EAAiB;AACf,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO,EAAP;AACD,KAZ0C;;AAa3C,UAAMX,IAAN,CAAWC,QAAX,EAAqBnB,MAArB,EAA6B;AAC3B,UAAI;AACF,eAAO,MAAMwC,qBAAUC,qBAAV,CAAgC;AAAEhB,UAAAA,IAAI,EAAEN;AAAR,SAAhC,CAAb;AACD,OAFD,CAEE,OAAOU,KAAP,EAAmB;AACnB,YAAI,CAAC7B,MAAM,CAACuB,UAAP,CAAkBO,UAAvB,EAAmC;AACjC,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO;AAAEa,QAAAA,SAAS,EAAE;AAAb,OAAP;AACD,KAtB0C;;AAuB3C,UAAMrB,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAF;AAAcG,MAAAA,UAAU,EAAE;AAAEO,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AAChB,YAAM,0BAAc;AAAEL,QAAAA,IAAI,EAAEN,QAAR;AAAkBwB,QAAAA,GAAG,EAAEvB;AAAvB,OAAd,CAAN;AACD;;AA1B0C,GAAhC,CArHU;AAkJvB6B,EAAAA,MAAM,EAAE,+BAAgC;AACtC3B,IAAAA,eAAe,EAAE,IADqB;;AAGtC,UAAML,WAAN,CAAkB;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA,WAAF;AAAeP,QAAAA;AAAf;AAAd,KAAlB,EAA+D;AAC7D,UAAI;AACF,eAAO,MAAMoB,kBAAOC,4BAAP,CAAoCd,WAApC,CAAb;AACD,OAFD,CAEE,OAAOR,KAAP,EAAmB;AACnB,YAAI,CAACC,UAAL,EAAiB;AACf,gBAAMD,KAAN;AACD;AACF;;AACD,aAAO,EAAP;AACD,KAZqC;;AAatC,UAAMX,IAAN,CAAWC,QAAX,EAAqBnB,MAArB,EAA6B;AAAA;;AAC3B,UAAIiD,MAA6B,GAAG;AAAEP,QAAAA,SAAS,EAAE;AAAb,OAApC;;AAEA,UAAI;AACF;AACAO,QAAAA,MAAM,GAAG,MAAMT,qBAAUC,qBAAV,CAAgC;AAC7ChB,UAAAA,IAAI,EAAEN,QADuC;AAE7CiC,UAAAA,QAAQ,EAAG;AAFkC,SAAhC,CAAf;AAID,OAND,CAME,OAAOvB,KAAP,EAAmB;AACnB,YAAI,CAAC7B,MAAM,CAACuB,UAAP,CAAkBO,UAAvB,EAAmC;AACjC,gBAAMD,KAAN;AACD;AACF,OAb0B,CAe3B;;;AACA,UAAI,CAACoB,MAAM,CAACP,SAAP,CAAiB9B,CAAtB,EAAyB;AACvBqC,QAAAA,MAAM,CAACP,SAAP,CAAiB9B,CAAjB,GAAqB,EAArB;AACD;;AACD,UAAI,yBAACqC,MAAM,CAACP,SAAP,CAAiB9B,CAAlB,gDAAC,oBAAqB,aAArB,CAAD,CAAJ,EAA0C;AACxCqC,QAAAA,MAAM,CAACP,SAAP,CAAiB9B,CAAjB,CAAmB,aAAnB,IAAoC,kCAApC;AACD;;AACD,aAAOqC,MAAP;AACD,KApCqC;;AAqCtC,UAAM5B,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAF;AAAcG,MAAAA,UAAU,EAAE;AAAEO,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AAChB,YAAM,0BAAc;AAAEL,QAAAA,IAAI,EAAEN,QAAR;AAAkBwB,QAAAA,GAAG,EAAEvB;AAAvB,OAAd,CAAN;AACD;;AAxCqC,GAAhC,CAlJe;AA6LvBiC,EAAAA,kBAAkB,EAAE,+BAAkC;AACpDpC,IAAAA,WAAW,CAAC;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOiB,iBAAMC,6BAAN,CAAoClB,WAApC,CAAP;AACD,KAHmD;;AAIpD,UAAMnB,IAAN,CAAWC,QAAX,EAAqB;AACnB,aAAOmC,iBAAME,WAAN,CAAkBrC,QAAlB,CAAP;AACD,KANmD;;AAOpD,UAAME,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAU,EAAE;AAAEqC,QAAAA;AAAF;AAAd,KAAtB,EAAoD;AAClD,YAAM5D,SAAS,CAACsB,QAAD,EAAWsC,QAAX,CAAf;AACD;;AATmD,GAAlC,CA7LG;AAyMvBC,EAAAA,cAAc,EAAE,+BAAkC;AAChDzC,IAAAA,WAAW,CAAC;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOiB,iBAAMK,yBAAN,CAAgCtB,WAAhC,CAAP;AACD,KAH+C;;AAIhD,UAAMnB,IAAN,CAAWC,QAAX,EAAqB;AACnB,aAAOmC,iBAAME,WAAN,CAAkBrC,QAAlB,CAAP;AACD,KAN+C;;AAOhD,UAAME,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAU,EAAE;AAAEqC,QAAAA;AAAF;AAAd,KAAtB,EAAoD;AAClD,YAAM5D,SAAS,CAACsB,QAAD,EAAWsC,QAAX,CAAf;AACD;;AAT+C,GAAlC,CAzMO;AAqNvBG,EAAAA,cAAc,EAAE,+BAAkC;AAChD3C,IAAAA,WAAW,CAAC;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOiB,iBAAMO,yBAAN,CAAgCxB,WAAhC,CAAP;AACD,KAH+C;;AAIhD,UAAMnB,IAAN,CAAWC,QAAX,EAAqB;AACnB,aAAOmC,iBAAME,WAAN,CAAkBrC,QAAlB,CAAP;AACD,KAN+C;;AAOhD,UAAME,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAU,EAAE;AAAEqC,QAAAA;AAAF;AAAd,KAAtB,EAAoD;AAClD,YAAM5D,SAAS,CAACsB,QAAD,EAAWsC,QAAX,CAAf;AACD;;AAT+C,GAAlC,CArNO;AAiOvBK,EAAAA,YAAY,EAAE,+BAAuC;AACnD7C,IAAAA,WAAW,CAAC;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOiB,iBAAMS,kBAAN,CAAyB1B,WAAzB,EAAsC,cAAtC,CAAP;AACD,KAHkD;;AAInD,UAAMnB,IAAN,CAAWC,QAAX,EAAqB;AACnB,aAAOmC,iBAAME,WAAN,CAAkBrC,QAAlB,CAAP;AACD,KANkD;;AAOnD,UAAME,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAU,EAAE;AAAEqC,QAAAA;AAAF;AAAd,KAAtB,EAAoD;AAClD,YAAM5D,SAAS,CAACsB,QAAD,EAAWsC,QAAX,CAAf;AACD;;AATkD,GAAvC,CAjOS;AA6OvBO,EAAAA,eAAe,EAAE,+BAAuC;AACtD/C,IAAAA,WAAW,CAAC;AAAEM,MAAAA,UAAU,EAAE;AAAEc,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOiB,iBAAMS,kBAAN,CAAyB1B,WAAzB,EAAsC,iBAAtC,CAAP;AACD,KAHqD;;AAItD,UAAMnB,IAAN,CAAWC,QAAX,EAAqB;AACnB,aAAOmC,iBAAME,WAAN,CAAkBrC,QAAlB,CAAP;AACD,KANqD;;AAOtD,UAAME,KAAN,CAAYF,QAAZ,EAAsB;AAAEC,MAAAA,UAAU,EAAE;AAAEqC,QAAAA;AAAF;AAAd,KAAtB,EAAoD;AAClD,YAAM5D,SAAS,CAACsB,QAAD,EAAWsC,QAAX,CAAf;AACD;;AATqD,GAAvC;AA7OM,CAAzB;;AA4PO,SAASQ,mBAAT,CACLjE,MADK,EAEL;AACEkE,EAAAA,SADF;AAEE,KAAGC;AAFL,IAGgF,EAL3E,EAMW;AAChB,SAAO,4CAAsCnE,MAAtC,EAA8C,EACnD,GAAGmE,KADgD;AAEnDC,IAAAA,QAAQ,EAAE,SAFyC;AAGnDF,IAAAA,SAAS,EAAEA,SAAF,aAAEA,SAAF,cAAEA,SAAF,GAAeG,0BAA0B;AAHC,GAA9C,CAAP;AAKD;;AAEM,SAASA,0BAAT,GAAsC;AAC3C,SAAOtD,gBAAP;AACD","sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Colors, Manifest, Paths, Properties, Resources, Strings, Styles } from '../android';\nimport { AndroidManifest } from '../android/Manifest';\nimport { parseXMLAsync, writeXMLAsync } from '../utils/XML';\nimport { reverseSortString, sortObject, sortObjWithOrder } from '../utils/sortObject';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype AndroidModName = keyof Required<ModConfig>['android'];\n\nfunction getAndroidManifestTemplate(config: ExportedConfig) {\n // Keep in sync with https://github.com/expo/expo/blob/master/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n // TODO: Read from remote template when possible\n return parseXMLAsync(`\n <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"${\n config.android?.package ?? 'com.placeholder.appid'\n }\">\n\n <uses-permission android:name=\"android.permission.INTERNET\"/>\n <!-- OPTIONAL PERMISSIONS, REMOVE WHATEVER YOU DO NOT NEED -->\n <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n <!-- These require runtime permissions on M -->\n <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>\n <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>\n <!-- END OPTIONAL PERMISSIONS -->\n\n <queries>\n <!-- Support checking for http(s) links via the Linking API -->\n <intent>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n </intent>\n </queries>\n\n <application\n android:name=\".MainApplication\"\n android:label=\"@string/app_name\"\n android:icon=\"@mipmap/ic_launcher\"\n android:roundIcon=\"@mipmap/ic_launcher_round\"\n android:allowBackup=\"false\"\n android:theme=\"@style/AppTheme\"\n android:usesCleartextTraffic=\"true\"\n >\n <meta-data android:name=\"expo.modules.updates.EXPO_UPDATE_URL\" android:value=\"YOUR-APP-URL-HERE\"/>\n <meta-data android:name=\"expo.modules.updates.EXPO_SDK_VERSION\" android:value=\"YOUR-APP-SDK-VERSION-HERE\"/>\n <activity\n android:name=\".MainActivity\"\n android:label=\"@string/app_name\"\n android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|uiMode\"\n android:launchMode=\"singleTask\"\n android:windowSoftInputMode=\"adjustResize\"\n android:theme=\"@style/Theme.App.SplashScreen\"\n >\n <intent-filter>\n <action android:name=\"android.intent.action.MAIN\"/>\n <category android:name=\"android.intent.category.LAUNCHER\"/>\n </intent-filter>\n </activity>\n <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\"/>\n </application>\n </manifest>\n `) as Promise<AndroidManifest>;\n}\n\nexport function sortAndroidManifest(obj: AndroidManifest) {\n if (obj.manifest) {\n // Reverse sort so application is last and permissions are first\n obj.manifest = sortObject(obj.manifest, reverseSortString);\n\n if (Array.isArray(obj.manifest['uses-permission'])) {\n // Sort permissions alphabetically\n obj.manifest['uses-permission'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n\n if (Array.isArray(obj.manifest.application)) {\n // reverse sort applications so activity is towards the end and meta-data is towards the front.\n obj.manifest.application = obj.manifest.application.map(application => {\n application = sortObjWithOrder(application, ['meta-data', 'service', 'activity']);\n\n if (Array.isArray(application['meta-data'])) {\n // Sort metadata alphabetically\n application['meta-data'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n return application;\n });\n }\n }\n return obj;\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n manifest: provider<Manifest.AndroidManifest>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'app/src/main/AndroidManifest.xml');\n },\n async read(filePath, config) {\n try {\n return await Manifest.readAndroidManifestAsync(filePath);\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return await getAndroidManifestTemplate(config);\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await Manifest.writeAndroidManifestAsync(filePath, sortAndroidManifest(modResults));\n },\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n gradleProperties: provider<Properties.PropertiesItem[]>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'gradle.properties');\n },\n async read(filePath, config) {\n try {\n return await Properties.parsePropertiesFile(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return [];\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeFile(filePath, Properties.propertiesListToString(modResults));\n },\n }),\n\n // Append a rule to supply strings.xml data to mods on `mods.android.strings`\n strings: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Strings.getProjectStringsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colors: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colorsNight: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot, { kind: 'values-night' });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n styles: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Styles.getProjectStylesXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n let styles: Resources.ResourceXML = { resources: {} };\n\n try {\n // Adds support for `tools:x`\n styles = await Resources.readResourcesXMLAsync({\n path: filePath,\n fallback: `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources xmlns:tools=\"http://schemas.android.com/tools\"></resources>`,\n });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n\n // Ensure support for tools is added...\n if (!styles.resources.$) {\n styles.resources.$ = {};\n }\n if (!styles.resources.$?.['xmlns:tools']) {\n styles.resources.$['xmlns:tools'] = 'http://schemas.android.com/tools';\n }\n return styles;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n projectBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n settingsGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getSettingsGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n appBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainActivity: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainActivity');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainApplication: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainApplication');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n};\n\ntype AndroidDefaultProviders = typeof defaultProviders;\n\nexport function withAndroidBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<AndroidDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<AndroidModName>(config, {\n ...props,\n platform: 'android',\n providers: providers ?? getAndroidModFileProviders(),\n });\n}\n\nexport function getAndroidModFileProviders() {\n return defaultProviders;\n}\n"],"file":"withAndroidBaseMods.js"}
|
|
1
|
+
{"version":3,"file":"withAndroidBaseMods.js","names":["readFile","writeFile","promises","getAndroidManifestTemplate","config","parseXMLAsync","android","package","sortAndroidManifest","obj","manifest","sortObject","reverseSortString","Array","isArray","sort","a","b","$","application","map","sortObjWithOrder","defaultProviders","dangerous","provider","getFilePath","read","filePath","modResults","write","isIntrospective","modRequest","platformProjectRoot","path","join","Manifest","readAndroidManifestAsync","error","introspect","writeAndroidManifestAsync","gradleProperties","Properties","parsePropertiesFile","propertiesListToString","strings","projectRoot","Strings","getProjectStringsXMLPathAsync","Resources","readResourcesXMLAsync","resources","writeXMLAsync","xml","colors","Colors","getProjectColorsXMLPathAsync","colorsNight","kind","styles","Styles","getProjectStylesXMLPathAsync","fallback","projectBuildGradle","Paths","getProjectBuildGradleFilePath","getFileInfo","contents","settingsGradle","getSettingsGradleFilePath","appBuildGradle","getAppBuildGradleFilePath","mainActivity","getProjectFilePath","mainApplication","withAndroidBaseMods","providers","props","withGeneratedBaseMods","platform","getAndroidModFileProviders"],"sources":["../../src/plugins/withAndroidBaseMods.ts"],"sourcesContent":["import { promises } from 'fs';\nimport path from 'path';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Colors, Manifest, Paths, Properties, Resources, Strings, Styles } from '../android';\nimport { AndroidManifest } from '../android/Manifest';\nimport { parseXMLAsync, writeXMLAsync } from '../utils/XML';\nimport { reverseSortString, sortObject, sortObjWithOrder } from '../utils/sortObject';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype AndroidModName = keyof Required<ModConfig>['android'];\n\nfunction getAndroidManifestTemplate(config: ExportedConfig) {\n // Keep in sync with https://github.com/expo/expo/blob/master/templates/expo-template-bare-minimum/android/app/src/main/AndroidManifest.xml\n // TODO: Read from remote template when possible\n return parseXMLAsync(`\n <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"${\n config.android?.package ?? 'com.placeholder.appid'\n }\">\n\n <uses-permission android:name=\"android.permission.INTERNET\"/>\n <!-- OPTIONAL PERMISSIONS, REMOVE WHATEVER YOU DO NOT NEED -->\n <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n <!-- These require runtime permissions on M -->\n <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>\n <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>\n <!-- END OPTIONAL PERMISSIONS -->\n\n <queries>\n <!-- Support checking for http(s) links via the Linking API -->\n <intent>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n </intent>\n </queries>\n\n <application\n android:name=\".MainApplication\"\n android:label=\"@string/app_name\"\n android:icon=\"@mipmap/ic_launcher\"\n android:roundIcon=\"@mipmap/ic_launcher_round\"\n android:allowBackup=\"false\"\n android:theme=\"@style/AppTheme\"\n android:usesCleartextTraffic=\"true\"\n >\n <meta-data android:name=\"expo.modules.updates.EXPO_UPDATE_URL\" android:value=\"YOUR-APP-URL-HERE\"/>\n <meta-data android:name=\"expo.modules.updates.EXPO_SDK_VERSION\" android:value=\"YOUR-APP-SDK-VERSION-HERE\"/>\n <activity\n android:name=\".MainActivity\"\n android:label=\"@string/app_name\"\n android:configChanges=\"keyboard|keyboardHidden|orientation|screenSize|uiMode\"\n android:launchMode=\"singleTask\"\n android:windowSoftInputMode=\"adjustResize\"\n android:theme=\"@style/Theme.App.SplashScreen\"\n >\n <intent-filter>\n <action android:name=\"android.intent.action.MAIN\"/>\n <category android:name=\"android.intent.category.LAUNCHER\"/>\n </intent-filter>\n </activity>\n <activity android:name=\"com.facebook.react.devsupport.DevSettingsActivity\"/>\n </application>\n </manifest>\n `) as Promise<AndroidManifest>;\n}\n\nexport function sortAndroidManifest(obj: AndroidManifest) {\n if (obj.manifest) {\n // Reverse sort so application is last and permissions are first\n obj.manifest = sortObject(obj.manifest, reverseSortString);\n\n if (Array.isArray(obj.manifest['uses-permission'])) {\n // Sort permissions alphabetically\n obj.manifest['uses-permission'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n\n if (Array.isArray(obj.manifest.application)) {\n // reverse sort applications so activity is towards the end and meta-data is towards the front.\n obj.manifest.application = obj.manifest.application.map((application) => {\n application = sortObjWithOrder(application, ['meta-data', 'service', 'activity']);\n\n if (Array.isArray(application['meta-data'])) {\n // Sort metadata alphabetically\n application['meta-data'].sort((a, b) => {\n if (a.$['android:name'] < b.$['android:name']) return -1;\n if (a.$['android:name'] > b.$['android:name']) return 1;\n return 0;\n });\n }\n return application;\n });\n }\n }\n return obj;\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return { filePath: '', modResults: {} };\n },\n async write() {},\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n manifest: provider<Manifest.AndroidManifest>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'app/src/main/AndroidManifest.xml');\n },\n async read(filePath, config) {\n try {\n return await Manifest.readAndroidManifestAsync(filePath);\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return await getAndroidManifestTemplate(config);\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await Manifest.writeAndroidManifestAsync(filePath, sortAndroidManifest(modResults));\n },\n }),\n\n // Append a rule to supply gradle.properties data to mods on `mods.android.gradleProperties`\n gradleProperties: provider<Properties.PropertiesItem[]>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.join(platformProjectRoot, 'gradle.properties');\n },\n async read(filePath, config) {\n try {\n return await Properties.parsePropertiesFile(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return [];\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeFile(filePath, Properties.propertiesListToString(modResults));\n },\n }),\n\n // Append a rule to supply strings.xml data to mods on `mods.android.strings`\n strings: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Strings.getProjectStringsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colors: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n colorsNight: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Colors.getProjectColorsXMLPathAsync(projectRoot, { kind: 'values-night' });\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n try {\n return await Resources.readResourcesXMLAsync({ path: filePath });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n return { resources: {} };\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n styles: provider<Resources.ResourceXML>({\n isIntrospective: true,\n\n async getFilePath({ modRequest: { projectRoot, introspect } }) {\n try {\n return await Styles.getProjectStylesXMLPathAsync(projectRoot);\n } catch (error: any) {\n if (!introspect) {\n throw error;\n }\n }\n return '';\n },\n async read(filePath, config) {\n let styles: Resources.ResourceXML = { resources: {} };\n\n try {\n // Adds support for `tools:x`\n styles = await Resources.readResourcesXMLAsync({\n path: filePath,\n fallback: `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources xmlns:tools=\"http://schemas.android.com/tools\"></resources>`,\n });\n } catch (error: any) {\n if (!config.modRequest.introspect) {\n throw error;\n }\n }\n\n // Ensure support for tools is added...\n if (!styles.resources.$) {\n styles.resources.$ = {};\n }\n if (!styles.resources.$?.['xmlns:tools']) {\n styles.resources.$['xmlns:tools'] = 'http://schemas.android.com/tools';\n }\n return styles;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) return;\n await writeXMLAsync({ path: filePath, xml: modResults });\n },\n }),\n\n projectBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n settingsGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getSettingsGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n appBuildGradle: provider<Paths.GradleProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppBuildGradleFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainActivity: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainActivity');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n\n mainApplication: provider<Paths.ApplicationProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getProjectFilePath(projectRoot, 'MainApplication');\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n};\n\ntype AndroidDefaultProviders = typeof defaultProviders;\n\nexport function withAndroidBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<AndroidDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<AndroidModName>(config, {\n ...props,\n platform: 'android',\n providers: providers ?? getAndroidModFileProviders(),\n });\n}\n\nexport function getAndroidModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"withDangerousMod.js","names":["withDangerousMod","config","platform","action","withMod","mod"],"sources":["../../src/plugins/withDangerousMod.ts"],"sourcesContent":["import { ConfigPlugin, Mod, ModPlatform } from '../Plugin.types';\nimport { withMod } from './withMod';\n\n/**\n * Mods that don't modify any data, all unresolved functionality is performed inside a dangerous mod.\n * All dangerous mods run first before other mods.\n *\n * @param config\n * @param platform\n * @param action\n */\nexport const withDangerousMod: ConfigPlugin<[ModPlatform, Mod<unknown>]> = (\n config,\n [platform, action]\n) => {\n return withMod(config, {\n platform,\n mod: 'dangerous',\n action,\n });\n};\n"],"mappings":";;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,gBAA2D,GAAG,CACzEC,MADyE,EAEzE,CAACC,QAAD,EAAWC,MAAX,CAFyE,KAGtE;EACH,OAAO,IAAAC,kBAAA,EAAQH,MAAR,EAAgB;IACrBC,QADqB;IAErBG,GAAG,EAAE,WAFgB;IAGrBF;EAHqB,CAAhB,CAAP;AAKD,CATM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/withIosBaseMods.ts"],"names":["readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","defaultProviders","dangerous","getFilePath","read","write","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","infoPlistBuildProperty","infoPlistPath","getInfoPlistPath","ios","entitlements","Entitlements","getEntitlementsPath","fs","existsSync","podfileProperties","results","JsonFile","readAsync","writeAsync","withIosBaseMods","providers","props","platform","getIosModFileProviders"],"mappings":";;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;;;AAEA,MAAM;AAAEA,EAAAA,QAAF;AAAYC,EAAAA;AAAZ,IAA0BC,cAAhC;;AAIA,SAASC,4BAAT,GAAwC;AACtC;AACA,SAAO,EAAP;AACD;;AAED,SAASC,oBAAT,GAAgC;AAC9B;AACA,SAAO;AACLC,IAAAA,yBAAyB,EAAE,yBADtB;AAELC,IAAAA,kBAAkB,EAAE,oBAFf;AAGLC,IAAAA,kBAAkB,EAAE,8BAHf;AAILC,IAAAA,YAAY,EAAE,iBAJT;AAKLC,IAAAA,mBAAmB,EAAE,gCALhB;AAMLC,IAAAA,6BAA6B,EAAE,KAN1B;AAOLC,IAAAA,iBAAiB,EAAE,MAPd;AAQLC,IAAAA,kBAAkB,EAAE,IARf;AASLC,IAAAA,sBAAsB,EAAE;AACtBC,MAAAA,sBAAsB,EAAE,IADF;AAEtBC,MAAAA,kBAAkB,EAAE;AAClBC,QAAAA,SAAS,EAAE;AACTC,UAAAA,kCAAkC,EAAE;AAD3B;AADO;AAFE,KATnB;AAiBLC,IAAAA,sBAAsB,EAAE,cAjBnB;AAkBLC,IAAAA,4BAA4B,EAAE,CAAC,OAAD,CAlBzB;AAmBLC,IAAAA,wCAAwC,EAAE,KAnBrC;AAoBLC,IAAAA,gBAAgB,EAAE;AApBb,GAAP;AAsBD;;AAED,MAAMC,gBAAgB,GAAG;AACvBC,EAAAA,SAAS,EAAE,+BAAkB;AAC3BC,IAAAA,WAAW,GAAG;AACZ,aAAO,EAAP;AACD,KAH0B;;AAI3B,UAAMC,IAAN,GAAa;AACX,aAAO,EAAP;AACD,KAN0B;;AAO3B,UAAMC,KAAN,GAAc,CAAE;;AAPW,GAAlB,CADY;AAUvB;AACAC,EAAAA,WAAW,EAAE,+BAAuC;AAClDH,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOC,aAAMC,sBAAN,CAA6BF,WAA7B,CAAP;AACD,KAHiD;;AAIlD,UAAMJ,IAAN,CAAWO,QAAX,EAAqB;AACnB,aAAOF,aAAMG,WAAN,CAAkBD,QAAlB,CAAP;AACD,KANiD;;AAOlD,UAAMN,KAAN,CAAYM,QAAZ,EAA8B;AAAEE,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAA9B,EAA4D;AAC1D,YAAMlC,SAAS,CAAC+B,QAAD,EAAWG,QAAX,CAAf;AACD;;AATiD,GAAvC,CAXU;AAsBvB;AACAC,EAAAA,SAAS,EAAE,+BAAqB;AAC9BC,IAAAA,eAAe,EAAE,IADa;;AAE9Bb,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEU,QAAAA,mBAAF;AAAuBC,QAAAA;AAAvB;AAAd,KAAD,EAAuD;AAChE,YAAMC,mBAAmB,GAAGC,gBAAKC,IAAL,CAAUJ,mBAAV,EAA+BC,WAA/B,EAA6C,YAA7C,CAA5B;;AACA,aAAOE,gBAAKE,OAAL,CAAaH,mBAAb,EAAkC,YAAlC,CAAP;AACD,KAL6B;;AAM9B,UAAMf,IAAN,CAAWO,QAAX,EAAqB;AAAEJ,MAAAA,UAAU,EAAE;AAAEgB,QAAAA;AAAF;AAAd,KAArB,EAAqD;AACnD,UAAI;AACF,eAAOC,iBAAMC,KAAN,CAAY,MAAM9C,QAAQ,CAACgC,QAAD,EAAW,MAAX,CAA1B,CAAP;AACD,OAFD,CAEE,OAAOe,KAAP,EAAc;AACd,YAAIH,UAAJ,EAAgB;AACd,iBAAO,EAAP;AACD;;AACD,cAAMG,KAAN;AACD;AACF,KAf6B;;AAgB9B,UAAMrB,KAAN,CAAYM,QAAZ,EAAsB;AAAEE,MAAAA,UAAF;AAAcN,MAAAA,UAAU,EAAE;AAAEgB,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AACd;AACD;;AACD,YAAM3C,SAAS,CAAC+B,QAAD,EAAWa,iBAAMG,KAAN,CAAY,8BAAWd,UAAX,CAAZ,CAAX,CAAf;AACD;;AArB6B,GAArB,CAvBY;AA8CvB;AACAe,EAAAA,SAAS,EAAE,+BAAuB;AAChCzB,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEC,QAAAA;AAAF;AAAd,KAAD,EAAkC;AAC3C,aAAOC,aAAMoB,iBAAN,CAAwBrB,WAAxB,CAAP;AACD,KAH+B;;AAIhC,UAAMJ,IAAN,CAAWO,QAAX,EAAqB;AACnB,YAAMmB,OAAO,GAAGC,iBAAMD,OAAN,CAAcnB,QAAd,CAAhB;;AACAmB,MAAAA,OAAO,CAACE,SAAR;AACA,aAAOF,OAAP;AACD,KAR+B;;AAShC,UAAMzB,KAAN,CAAYM,QAAZ,EAAsB;AAAEE,MAAAA;AAAF,KAAtB,EAAsC;AACpC,YAAMjC,SAAS,CAAC+B,QAAD,EAAWE,UAAU,CAACoB,SAAX,EAAX,CAAf;AACD;;AAX+B,GAAvB,CA/CY;AA4DvB;AACAC,EAAAA,SAAS,EAAE,+BAA6C;AACtDlB,IAAAA,eAAe,EAAE,IADqC;;AAEtD,UAAMb,WAAN,CAAkBgC,MAAlB,EAA0B;AACxB,UAAIL,OAAkC,GAAG,IAAzC;;AACA,UAAI;AACFA,QAAAA,OAAO,GAAG,6BAAWK,MAAM,CAAC5B,UAAP,CAAkBC,WAA7B,CAAV;AACD,OAFD,CAEE,MAAM,CACN;AACD,OANuB,CAQxB;AACA;;;AACA,UAAIsB,OAAJ,EAAa;AACX,cAAMM,sBAAsB,GAAG,qDAA4BN,OAA5B,CAA/B;;AAEA,YAAIM,sBAAJ,EAA4B;AAC1B;AACA,gBAAMC,aAAa,GAAGjB,gBAAKC,IAAL,EACpB;AACAc,UAAAA,MAAM,CAAC5B,UAAP,CAAkBU,mBAFE,EAGpB;AACAmB,UAAAA,sBAJoB,CAAtB;;AAMA,cAAI,2BAAWC,aAAX,CAAJ,EAA+B;AAC7B,mBAAOA,aAAP;AACD;;AACD,yCACE,oBADF,EAEG,2DAA0DA,aAAc,EAF3E;AAID,SAfD,MAeO;AACL,yCAAc,oBAAd,EAAoC,oDAApC;AACD;AACF;;AACD,UAAI;AACF;AACA,eAAO,MAAM5B,aAAM6B,gBAAN,CAAuBH,MAAM,CAAC5B,UAAP,CAAkBC,WAAzC,CAAb;AACD,OAHD,CAGE,OAAOkB,KAAP,EAAmB;AACnB,YAAIS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACA,iBAAO,EAAP;AACD;;AACD,cAAMG,KAAN;AACD;AACF,KA5CqD;;AA6CtD,UAAMtB,IAAN,CAAWO,QAAX,EAAqBwB,MAArB,EAA6B;AAC3B;AACA;AACA,UAAI,CAACA,MAAM,CAACI,GAAZ,EAAiBJ,MAAM,CAACI,GAAP,GAAa,EAAb;AACjB,UAAI,CAACJ,MAAM,CAACI,GAAP,CAAWL,SAAhB,EAA2BC,MAAM,CAACI,GAAP,CAAWL,SAAX,GAAuB,EAAvB;AAE3B,UAAIrB,UAAJ;;AACA,UAAI;AACF,cAAMC,QAAQ,GAAG,MAAMnC,QAAQ,CAACgC,QAAD,EAAW,MAAX,CAA/B;AACA,+BAAOG,QAAP,EAAiB,qBAAjB;AACAD,QAAAA,UAAU,GAAGW,iBAAMC,KAAN,CAAYX,QAAZ,CAAb;AACD,OAJD,CAIE,OAAOY,KAAP,EAAmB;AACnB;AACA,YAAI,CAACS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAvB,EAAmC;AACjC,gBAAMG,KAAN;AACD,SAJkB,CAKnB;;;AACAb,QAAAA,UAAU,GAAG9B,oBAAoB,EAAjC;AACD;;AAEDoD,MAAAA,MAAM,CAACI,GAAP,CAAWL,SAAX,GAAuB,EACrB,IAAIrB,UAAU,IAAI,EAAlB,CADqB;AAErB,WAAGsB,MAAM,CAACI,GAAP,CAAWL;AAFO,OAAvB;AAKA,aAAOC,MAAM,CAACI,GAAP,CAAWL,SAAlB;AACD,KAvEqD;;AAwEtD,UAAM7B,KAAN,CAAYM,QAAZ,EAAsBwB,MAAtB,EAA8B;AAC5B;AACA,UAAI,CAACA,MAAM,CAACI,GAAZ,EAAiB;AACfJ,QAAAA,MAAM,CAACI,GAAP,GAAa,EAAb;AACD;;AACDJ,MAAAA,MAAM,CAACI,GAAP,CAAWL,SAAX,GAAuBC,MAAM,CAACtB,UAA9B,CAL4B,CAO5B;;AACA,UAAIsB,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACD;;AAED,YAAM3C,SAAS,CAAC+B,QAAD,EAAWa,iBAAMG,KAAN,CAAY,8BAAWQ,MAAM,CAACtB,UAAlB,CAAZ,CAAX,CAAf;AACD;;AArFqD,GAA7C,CA7DY;AAoJvB;AACA2B,EAAAA,YAAY,EAAE,+BAA8C;AAC1DxB,IAAAA,eAAe,EAAE,IADyC;;AAG1D,UAAMb,WAAN,CAAkBgC,MAAlB,EAA0B;AACxB,UAAI;AAAA;;AACF,+EAAkDA,MAAM,CAAC5B,UAAP,CAAkBC,WAApE;AACA,wCAAOiC,oBAAaC,mBAAb,CAAiCP,MAAM,CAAC5B,UAAP,CAAkBC,WAAnD,CAAP,yEAA0E,EAA1E;AACD,OAHD,CAGE,OAAOkB,KAAP,EAAmB;AACnB,YAAIS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACA,iBAAO,EAAP;AACD;;AACD,cAAMG,KAAN;AACD;AACF,KAdyD;;AAgB1D,UAAMtB,IAAN,CAAWO,QAAX,EAAqBwB,MAArB,EAA6B;AAC3B,UAAItB,UAAJ;;AACA,UAAI;AACF,YAAI8B,cAAGC,UAAH,CAAcjC,QAAd,CAAJ,EAA6B;AAC3B,gBAAMG,QAAQ,GAAG,MAAMnC,QAAQ,CAACgC,QAAD,EAAW,MAAX,CAA/B;AACA,iCAAOG,QAAP,EAAiB,6BAAjB;AACAD,UAAAA,UAAU,GAAGW,iBAAMC,KAAN,CAAYX,QAAZ,CAAb;AACD,SAJD,MAIO;AACLD,UAAAA,UAAU,GAAG/B,4BAA4B,EAAzC;AACD;AACF,OARD,CAQE,OAAO4C,KAAP,EAAmB;AACnB;AACA,YAAI,CAACS,MAAM,CAAC5B,UAAP,CAAkBgB,UAAvB,EAAmC;AACjC,gBAAMG,KAAN;AACD,SAJkB,CAKnB;;;AACAb,QAAAA,UAAU,GAAG/B,4BAA4B,EAAzC;AACD,OAjB0B,CAmB3B;AACA;;;AACA,UAAI,CAACqD,MAAM,CAACI,GAAZ,EAAiBJ,MAAM,CAACI,GAAP,GAAa,EAAb;AACjB,UAAI,CAACJ,MAAM,CAACI,GAAP,CAAWC,YAAhB,EAA8BL,MAAM,CAACI,GAAP,CAAWC,YAAX,GAA0B,EAA1B;AAE9BL,MAAAA,MAAM,CAACI,GAAP,CAAWC,YAAX,GAA0B,EACxB,IAAI3B,UAAU,IAAI,EAAlB,CADwB;AAExB,WAAGsB,MAAM,CAACI,GAAP,CAAWC;AAFU,OAA1B;AAKA,aAAOL,MAAM,CAACI,GAAP,CAAWC,YAAlB;AACD,KA9CyD;;AAgD1D,UAAMnC,KAAN,CAAYM,QAAZ,EAAsBwB,MAAtB,EAA8B;AAC5B;AACA,UAAI,CAACA,MAAM,CAACI,GAAZ,EAAiB;AACfJ,QAAAA,MAAM,CAACI,GAAP,GAAa,EAAb;AACD;;AACDJ,MAAAA,MAAM,CAACI,GAAP,CAAWC,YAAX,GAA0BL,MAAM,CAACtB,UAAjC,CAL4B,CAO5B;;AACA,UAAIsB,MAAM,CAAC5B,UAAP,CAAkBgB,UAAtB,EAAkC;AAChC;AACD;;AAED,YAAM3C,SAAS,CAAC+B,QAAD,EAAWa,iBAAMG,KAAN,CAAY,8BAAWQ,MAAM,CAACtB,UAAlB,CAAZ,CAAX,CAAf;AACD;;AA7DyD,GAA9C,CArJS;AAqNvB;AACAgC,EAAAA,iBAAiB,EAAE,+BAAoC;AACrD7B,IAAAA,eAAe,EAAE,IADoC;;AAGrDb,IAAAA,WAAW,CAAC;AAAEI,MAAAA,UAAU,EAAE;AAAEU,QAAAA;AAAF;AAAd,KAAD,EAA0C;AACnD,aAAOG,gBAAKE,OAAL,CAAaL,mBAAb,EAAkC,yBAAlC,CAAP;AACD,KALoD;;AAMrD,UAAMb,IAAN,CAAWO,QAAX,EAAqB;AACnB,UAAImC,OAAkC,GAAG,EAAzC;;AACA,UAAI;AACFA,QAAAA,OAAO,GAAG,MAAMC,oBAASC,SAAT,CAAmBrC,QAAnB,CAAhB;AACD,OAFD,CAEE,MAAM,CAAE;;AACV,aAAOmC,OAAP;AACD,KAZoD;;AAarD,UAAMzC,KAAN,CAAYM,QAAZ,EAAsB;AAAEE,MAAAA,UAAF;AAAcN,MAAAA,UAAU,EAAE;AAAEgB,QAAAA;AAAF;AAA1B,KAAtB,EAAkE;AAChE,UAAIA,UAAJ,EAAgB;AACd;AACD;;AACD,YAAMwB,oBAASE,UAAT,CAAoBtC,QAApB,EAA8BE,UAA9B,CAAN;AACD;;AAlBoD,GAApC;AAtNI,CAAzB;;AA8OO,SAASqC,eAAT,CACLf,MADK,EAEL;AACEgB,EAAAA,SADF;AAEE,KAAGC;AAFL,IAG4E,EALvE,EAMW;AAChB,SAAO,4CAAkCjB,MAAlC,EAA0C,EAC/C,GAAGiB,KAD4C;AAE/CC,IAAAA,QAAQ,EAAE,KAFqC;AAG/CF,IAAAA,SAAS,EAAEA,SAAF,aAAEA,SAAF,cAAEA,SAAF,GAAeG,sBAAsB;AAHC,GAA1C,CAAP;AAKD;;AAEM,SAASA,sBAAT,GAAkC;AACvC,SAAOrD,gBAAP;AACD","sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs, { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { ensureApplicationTargetEntitlementsFileConfigured } from '../ios/Entitlements';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n ensureApplicationTargetEntitlementsFileConfigured(config.modRequest.projectRoot);\n return Entitlements.getEntitlementsPath(config.modRequest.projectRoot) ?? '';\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n if (fs.existsSync(filePath)) {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } else {\n modResults = getEntitlementsPlistTemplate();\n }\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, JSONValue>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, JSONValue> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"file":"withIosBaseMods.js"}
|
|
1
|
+
{"version":3,"file":"withIosBaseMods.js","names":["readFile","writeFile","promises","getEntitlementsPlistTemplate","getInfoPlistTemplate","CFBundleDevelopmentRegion","CFBundleExecutable","CFBundleIdentifier","CFBundleName","CFBundlePackageType","CFBundleInfoDictionaryVersion","CFBundleSignature","LSRequiresIPhoneOS","NSAppTransportSecurity","NSAllowsArbitraryLoads","NSExceptionDomains","localhost","NSExceptionAllowsInsecureHTTPLoads","UILaunchStoryboardName","UIRequiredDeviceCapabilities","UIViewControllerBasedStatusBarAppearance","UIStatusBarStyle","defaultProviders","dangerous","provider","getFilePath","read","write","appDelegate","modRequest","projectRoot","Paths","getAppDelegateFilePath","filePath","getFileInfo","modResults","contents","expoPlist","isIntrospective","platformProjectRoot","projectName","supportingDirectory","path","join","resolve","introspect","plist","parse","error","build","sortObject","xcodeproj","getPBXProjectPath","project","xcode","parseSync","writeSync","infoPlist","config","getPbxproj","infoPlistBuildProperty","getInfoPlistPathFromPbxproj","infoPlistPath","fileExists","addWarningIOS","getInfoPlistPath","ios","assert","entitlements","ensureApplicationTargetEntitlementsFileConfigured","Entitlements","getEntitlementsPath","fs","existsSync","podfileProperties","results","JsonFile","readAsync","writeAsync","withIosBaseMods","providers","props","withGeneratedBaseMods","platform","getIosModFileProviders"],"sources":["../../src/plugins/withIosBaseMods.ts"],"sourcesContent":["import JsonFile, { JSONObject, JSONValue } from '@expo/json-file';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs, { promises } from 'fs';\nimport path from 'path';\nimport xcode, { XcodeProject } from 'xcode';\n\nimport { ExportedConfig, ModConfig } from '../Plugin.types';\nimport { Entitlements, Paths } from '../ios';\nimport { ensureApplicationTargetEntitlementsFileConfigured } from '../ios/Entitlements';\nimport { InfoPlist } from '../ios/IosConfig.types';\nimport { getPbxproj } from '../ios/utils/Xcodeproj';\nimport { getInfoPlistPathFromPbxproj } from '../ios/utils/getInfoPlistPath';\nimport { fileExists } from '../utils/modules';\nimport { sortObject } from '../utils/sortObject';\nimport { addWarningIOS } from '../utils/warnings';\nimport { ForwardedBaseModOptions, provider, withGeneratedBaseMods } from './createBaseMod';\n\nconst { readFile, writeFile } = promises;\n\ntype IosModName = keyof Required<ModConfig>['ios'];\n\nfunction getEntitlementsPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {};\n}\n\nfunction getInfoPlistTemplate() {\n // TODO: Fetch the versioned template file if possible\n return {\n CFBundleDevelopmentRegion: '$(DEVELOPMENT_LANGUAGE)',\n CFBundleExecutable: '$(EXECUTABLE_NAME)',\n CFBundleIdentifier: '$(PRODUCT_BUNDLE_IDENTIFIER)',\n CFBundleName: '$(PRODUCT_NAME)',\n CFBundlePackageType: '$(PRODUCT_BUNDLE_PACKAGE_TYPE)',\n CFBundleInfoDictionaryVersion: '6.0',\n CFBundleSignature: '????',\n LSRequiresIPhoneOS: true,\n NSAppTransportSecurity: {\n NSAllowsArbitraryLoads: true,\n NSExceptionDomains: {\n localhost: {\n NSExceptionAllowsInsecureHTTPLoads: true,\n },\n },\n },\n UILaunchStoryboardName: 'SplashScreen',\n UIRequiredDeviceCapabilities: ['armv7'],\n UIViewControllerBasedStatusBarAppearance: false,\n UIStatusBarStyle: 'UIStatusBarStyleDefault',\n };\n}\n\nconst defaultProviders = {\n dangerous: provider<unknown>({\n getFilePath() {\n return '';\n },\n async read() {\n return {};\n },\n async write() {},\n }),\n // Append a rule to supply AppDelegate data to mods on `mods.ios.appDelegate`\n appDelegate: provider<Paths.AppDelegateProjectFile>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getAppDelegateFilePath(projectRoot);\n },\n async read(filePath) {\n return Paths.getFileInfo(filePath);\n },\n async write(filePath: string, { modResults: { contents } }) {\n await writeFile(filePath, contents);\n },\n }),\n // Append a rule to supply Expo.plist data to mods on `mods.ios.expoPlist`\n expoPlist: provider<JSONObject>({\n isIntrospective: true,\n getFilePath({ modRequest: { platformProjectRoot, projectName } }) {\n const supportingDirectory = path.join(platformProjectRoot, projectName!, 'Supporting');\n return path.resolve(supportingDirectory, 'Expo.plist');\n },\n async read(filePath, { modRequest: { introspect } }) {\n try {\n return plist.parse(await readFile(filePath, 'utf8'));\n } catch (error) {\n if (introspect) {\n return {};\n }\n throw error;\n }\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await writeFile(filePath, plist.build(sortObject(modResults)));\n },\n }),\n // Append a rule to supply .xcodeproj data to mods on `mods.ios.xcodeproj`\n xcodeproj: provider<XcodeProject>({\n getFilePath({ modRequest: { projectRoot } }) {\n return Paths.getPBXProjectPath(projectRoot);\n },\n async read(filePath) {\n const project = xcode.project(filePath);\n project.parseSync();\n return project;\n },\n async write(filePath, { modResults }) {\n await writeFile(filePath, modResults.writeSync());\n },\n }),\n // Append a rule to supply Info.plist data to mods on `mods.ios.infoPlist`\n infoPlist: provider<InfoPlist, ForwardedBaseModOptions>({\n isIntrospective: true,\n async getFilePath(config) {\n let project: xcode.XcodeProject | null = null;\n try {\n project = getPbxproj(config.modRequest.projectRoot);\n } catch {\n // noop\n }\n\n // Only check / warn if a project actually exists, this'll provide\n // more accurate warning messages for users in managed projects.\n if (project) {\n const infoPlistBuildProperty = getInfoPlistPathFromPbxproj(project);\n\n if (infoPlistBuildProperty) {\n //: [root]/myapp/ios/MyApp/Info.plist\n const infoPlistPath = path.join(\n //: myapp/ios\n config.modRequest.platformProjectRoot,\n //: MyApp/Info.plist\n infoPlistBuildProperty\n );\n if (fileExists(infoPlistPath)) {\n return infoPlistPath;\n }\n addWarningIOS(\n 'mods.ios.infoPlist',\n `Info.plist file linked to Xcode project does not exist: ${infoPlistPath}`\n );\n } else {\n addWarningIOS('mods.ios.infoPlist', 'Failed to find Info.plist linked to Xcode project.');\n }\n }\n try {\n // Fallback on glob...\n return await Paths.getInfoPlistPath(config.modRequest.projectRoot);\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n async read(filePath, config) {\n // Apply all of the Info.plist values to the expo.ios.infoPlist object\n // TODO: Remove this in favor of just overwriting the Info.plist with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.infoPlist) config.ios.infoPlist = {};\n\n let modResults: InfoPlist;\n try {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Info.plist is empty');\n modResults = plist.parse(contents) as InfoPlist;\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the infoPlist object from the Expo config.\n modResults = getInfoPlistTemplate();\n }\n\n config.ios.infoPlist = {\n ...(modResults || {}),\n ...config.ios.infoPlist,\n };\n\n return config.ios.infoPlist!;\n },\n async write(filePath, config) {\n // Update the contents of the static infoPlist object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n // Append a rule to supply .entitlements data to mods on `mods.ios.entitlements`\n entitlements: provider<JSONObject, ForwardedBaseModOptions>({\n isIntrospective: true,\n\n async getFilePath(config) {\n try {\n ensureApplicationTargetEntitlementsFileConfigured(config.modRequest.projectRoot);\n return Entitlements.getEntitlementsPath(config.modRequest.projectRoot) ?? '';\n } catch (error: any) {\n if (config.modRequest.introspect) {\n // fallback to an empty string in introspection mode.\n return '';\n }\n throw error;\n }\n },\n\n async read(filePath, config) {\n let modResults: JSONObject;\n try {\n if (fs.existsSync(filePath)) {\n const contents = await readFile(filePath, 'utf8');\n assert(contents, 'Entitlements plist is empty');\n modResults = plist.parse(contents);\n } else {\n modResults = getEntitlementsPlistTemplate();\n }\n } catch (error: any) {\n // Throw errors in introspection mode.\n if (!config.modRequest.introspect) {\n throw error;\n }\n // Fallback to using the template file.\n modResults = getEntitlementsPlistTemplate();\n }\n\n // Apply all of the .entitlements values to the expo.ios.entitlements object\n // TODO: Remove this in favor of just overwriting the .entitlements with the Expo object. This will enable people to actually remove values.\n if (!config.ios) config.ios = {};\n if (!config.ios.entitlements) config.ios.entitlements = {};\n\n config.ios.entitlements = {\n ...(modResults || {}),\n ...config.ios.entitlements,\n };\n\n return config.ios.entitlements!;\n },\n\n async write(filePath, config) {\n // Update the contents of the static entitlements object\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n\n // Return early without writing, in introspection mode.\n if (config.modRequest.introspect) {\n return;\n }\n\n await writeFile(filePath, plist.build(sortObject(config.modResults)));\n },\n }),\n\n // Append a rule to supply Podfile.properties.json data to mods on `mods.ios.podfileProperties`\n podfileProperties: provider<Record<string, JSONValue>>({\n isIntrospective: true,\n\n getFilePath({ modRequest: { platformProjectRoot } }) {\n return path.resolve(platformProjectRoot, 'Podfile.properties.json');\n },\n async read(filePath) {\n let results: Record<string, JSONValue> = {};\n try {\n results = await JsonFile.readAsync(filePath);\n } catch {}\n return results;\n },\n async write(filePath, { modResults, modRequest: { introspect } }) {\n if (introspect) {\n return;\n }\n await JsonFile.writeAsync(filePath, modResults);\n },\n }),\n};\n\ntype IosDefaultProviders = typeof defaultProviders;\n\nexport function withIosBaseMods(\n config: ExportedConfig,\n {\n providers,\n ...props\n }: ForwardedBaseModOptions & { providers?: Partial<IosDefaultProviders> } = {}\n): ExportedConfig {\n return withGeneratedBaseMods<IosModName>(config, {\n ...props,\n platform: 'ios',\n providers: providers ?? getIosModFileProviders(),\n });\n}\n\nexport function getIosModFileProviders() {\n return defaultProviders;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins/withMod.ts"],"names":["EXPO_DEBUG","withBaseMod","config","platform","mod","action","skipEmptyMod","isProvider","isIntrospective","saveToInternal","mods","interceptedMod","noopMod","debugTrace","isDebug","_internal","stack","Error","getDebugPluginStackFromStackTrace","modStack","chalk","bold","PluginError","interceptingMod","modRequest","console","log","results","nextMod","saveToInternalObject","modResults","platformName","modName","stacktrace","treeStackLines","line","split","first","second","trim","push","plugins","map","match","filter","Boolean","plugin","includes","commonPlugins","reverse","pluginName","index","toLowerCase","red","blue","dim","join","withMod"],"mappings":";;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAEA,MAAMA,UAAU,GAAG,uBAAQ,YAAR,EAAsB,KAAtB,CAAnB;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,WAAT,CACLC,MADK,EAEL;AACEC,EAAAA,QADF;AAEEC,EAAAA,GAFF;AAGEC,EAAAA,MAHF;AAIEC,EAAAA,YAJF;AAKEC,EAAAA,UALF;AAMEC,EAAAA,eANF;AAOEC,EAAAA;AAPF,CAFK,EAWW;AAAA;;AAChB,MAAI,CAACP,MAAM,CAACQ,IAAZ,EAAkB;AAChBR,IAAAA,MAAM,CAACQ,IAAP,GAAc,EAAd;AACD;;AACD,MAAI,CAACR,MAAM,CAACQ,IAAP,CAAYP,QAAZ,CAAL,EAA4B;AAC1BD,IAAAA,MAAM,CAACQ,IAAP,CAAYP,QAAZ,IAAwB,EAAxB;AACD;;AAED,MAAIQ,cAAsB,GAAIT,MAAM,CAACQ,IAAP,CAAYP,QAAZ,CAAD,CAA+CC,GAA/C,CAA7B,CARgB,CAUhB;;AACA,MAAI,CAACO,cAAL,EAAqB;AACnB,QAAIL,YAAJ,EAAkB;AAChB;AACA,aAAOJ,MAAP;AACD,KAJkB,CAKnB;;;AACA,UAAMU,OAAe,GAAGV,MAAM,IAAIA,MAAlC;;AACAS,IAAAA,cAAc,GAAGC,OAAjB;AACD,GAnBe,CAqBhB;;;AACA,MAAIC,UAAkB,GAAG,EAAzB,CAtBgB,CAuBhB;AACA;;AACA,QAAMC,OAAO,iDAAGZ,MAAM,CAACa,SAAV,sDAAG,kBAAkBD,OAArB,yEAAgCd,UAA7C;;AACA,MAAIc,OAAJ,EAAa;AACX;AACA,UAAME,KAAK,GAAG,IAAIC,KAAJ,GAAYD,KAA1B,CAFW,CAGX;;AACAH,IAAAA,UAAU,GAAGK,iCAAiC,CAACF,KAAD,CAA9C;;AACA,UAAMG,QAAQ,GAAGC,iBAAMC,IAAN,CAAY,GAAElB,QAAS,IAAGC,GAAI,EAA9B,CAAjB;;AAEAS,IAAAA,UAAU,GAAI,GAAEM,QAAS,KAAIN,UAAW,EAAxC;AACD,GAlCe,CAoChB;AACA;;;AACA,MAAIF,cAAc,CAACJ,UAAnB,EAA+B;AAC7B,QAAIA,UAAJ,EAAgB;AACd,YAAM,KAAIe,qBAAJ,EACH,gCAA+BnB,QAAS,IAAGC,GAAI,0CAD5C,EAEJ,sBAFI,CAAN;AAID,KALD,MAKO;AACL,YAAM,KAAIkB,qBAAJ,EACH,sBAAqBnB,QAAS,IAAGC,GAAI,qFADlC,EAEJ,mBAFI,CAAN;AAID;AACF;;AAED,iBAAemB,eAAf,CAA+B;AAAEC,IAAAA,UAAF;AAAc,OAAGtB;AAAjB,GAA/B,EAAsF;AACpF,QAAIY,OAAJ,EAAa;AACX;AACAW,MAAAA,OAAO,CAACC,GAAR,CAAYb,UAAZ;AACD;;AACD,UAAMc,OAAO,GAAG,MAAMtB,MAAM,CAAC,EAC3B,GAAGH,MADwB;AAE3BsB,MAAAA,UAAU,EAAE,EAAE,GAAGA,UAAL;AAAiBI,QAAAA,OAAO,EAAEjB;AAA1B;AAFe,KAAD,CAA5B;;AAKA,QAAIF,cAAJ,EAAoB;AAClBoB,MAAAA,oBAAoB,CAACF,OAAD,EAAUxB,QAAV,EAAoBC,GAApB,EAA0BuB,OAAO,CAACG,UAAlC,CAApB;AACD;;AACD,WAAOH,OAAP;AACD,GAlEe,CAoEhB;;;AACAJ,EAAAA,eAAe,CAAChB,UAAhB,GAA6BA,UAA7B;;AAEA,MAAIC,eAAJ,EAAqB;AACnB;AACAe,IAAAA,eAAe,CAACf,eAAhB,GAAkCA,eAAlC;AACD;;AAEAN,EAAAA,MAAM,CAACQ,IAAP,CAAYP,QAAZ,CAAD,CAA+BC,GAA/B,IAAsCmB,eAAtC;AAEA,SAAOrB,MAAP;AACD;;AAED,SAAS2B,oBAAT,CACE3B,MADF,EAEE6B,YAFF,EAGEC,OAHF,EAIEL,OAJF,EAKE;AACA,MAAI,CAACzB,MAAM,CAACa,SAAZ,EAAuBb,MAAM,CAACa,SAAP,GAAmB,EAAnB;AACvB,MAAI,CAACb,MAAM,CAACa,SAAP,CAAiBe,UAAtB,EAAkC5B,MAAM,CAACa,SAAP,CAAiBe,UAAjB,GAA8B,EAA9B;AAClC,MAAI,CAAC5B,MAAM,CAACa,SAAP,CAAiBe,UAAjB,CAA4BC,YAA5B,CAAL,EAAgD7B,MAAM,CAACa,SAAP,CAAiBe,UAAjB,CAA4BC,YAA5B,IAA4C,EAA5C;AAChD7B,EAAAA,MAAM,CAACa,SAAP,CAAiBe,UAAjB,CAA4BC,YAA5B,EAA0CC,OAA1C,IAAqDL,OAArD;AACD;;AAED,SAAST,iCAAT,CAA2Ce,UAA3C,EAAwE;AACtE,MAAI,CAACA,UAAL,EAAiB;AACf,WAAO,EAAP;AACD;;AAED,QAAMC,cAAwB,GAAG,EAAjC;;AACA,OAAK,MAAMC,IAAX,IAAmBF,UAAU,CAACG,KAAX,CAAiB,IAAjB,CAAnB,EAA2C;AACzC,UAAM,CAACC,KAAD,EAAQC,MAAR,IAAkBH,IAAI,CAACI,IAAL,GAAYH,KAAZ,CAAkB,GAAlB,CAAxB;;AACA,QAAIC,KAAK,KAAK,IAAd,EAAoB;AAClBH,MAAAA,cAAc,CAACM,IAAf,CAAoBF,MAApB;AACD;AACF;;AAED,QAAMG,OAAO,GAAGP,cAAc,CAC3BQ,GADa,CACTL,KAAK,IAAI;AAAA;;AACZ;AACA;AACA,0CACEA,KADF,aACEA,KADF,uCACEA,KAAK,CAAEM,KAAP,CAAa,qBAAb,CADF,kEACE,aAAsC,CAAtC,CADF,kDACE,cAA0CJ,IAA1C,EADF,qEAEEF,KAFF,aAEEA,KAFF,wCAEEA,KAAK,CAAEM,KAAP,CAAa,sBAAb,CAFF,oEAEE,cAAuC,CAAvC,CAFF,mDAEE,eAA2CJ,IAA3C,EAFF,uCAGE,IAHF;AAKD,GATa,EAUbK,MAVa,CAUNC,OAVM,EAWbD,MAXa,CAWNE,MAAM,IAAI;AAChB;AACA,WAAO,CAAC,CAAC,SAAD,EAAY,aAAZ,EAA2B,iBAA3B,EAA8CC,QAA9C,CAAuDD,MAAvD,CAAR;AACD,GAda,CAAhB;AAgBA,QAAME,aAAa,GAAG,CAAC,aAAD,EAAgB,aAAhB,EAA+B,kBAA/B,CAAtB;AAEA,SACGP,OAAD,CACGQ,OADH,GAEGP,GAFH,CAEO,CAACQ,UAAD,EAAaC,KAAb,KAAuB;AAC1B;AACA,QAAID,UAAU,CAACH,QAAX,CAAoB,SAApB,CAAJ,EAAoC;AAClCG,MAAAA,UAAU,GAAG9B,iBAAMC,IAAN,CAAW6B,UAAX,CAAb;AACD,KAJyB,CAK1B;;;AACA,QAAIA,UAAU,CAACE,WAAX,GAAyBL,QAAzB,CAAkC,WAAlC,CAAJ,EAAoD;AAClDG,MAAAA,UAAU,GAAG9B,iBAAMiC,GAAN,CAAUH,UAAV,CAAb;AACD;;AAED,QAAIC,KAAK,KAAK,CAAd,EAAiB;AACf,aAAO/B,iBAAMkC,IAAN,CAAWJ,UAAX,CAAP;AACD,KAFD,MAEO,IAAIF,aAAa,CAACD,QAAd,CAAuBG,UAAvB,CAAJ,EAAwC;AAC7C;AACA,aAAO9B,iBAAMmC,GAAN,CAAUL,UAAV,CAAP;AACD;;AACD,WAAOA,UAAP;AACD,GAnBH,EAoBE;AACA;AArBF,GAsBGM,IAtBH,CAsBQ,KAtBR,CADF;AAyBD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,OAAT,CACLvD,MADK,EAEL;AACEC,EAAAA,QADF;AAEEC,EAAAA,GAFF;AAGEC,EAAAA;AAHF,CAFK,EAWW;AAChB,SAAOJ,WAAW,CAACC,MAAD,EAAS;AACzBC,IAAAA,QADyB;AAEzBC,IAAAA,GAFyB;AAGzBG,IAAAA,UAAU,EAAE,KAHa;;AAIzB,UAAMF,MAAN,CAAa;AAAEmB,MAAAA,UAAU,EAAE;AAAEI,QAAAA,OAAF;AAAW,WAAGJ;AAAd,OAAd;AAA0CM,MAAAA,UAA1C;AAAsD,SAAG5B;AAAzD,KAAb,EAAgF;AAC9E,YAAMyB,OAAO,GAAG,MAAMtB,MAAM,CAAC;AAAEmB,QAAAA,UAAF;AAAcM,QAAAA,UAAU,EAAEA,UAA1B;AAA2C,WAAG5B;AAA9C,OAAD,CAA5B;AACA,aAAO0B,OAAO,CAAED,OAAF,CAAd;AACD;;AAPwB,GAAT,CAAlB;AASD","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport chalk from 'chalk';\nimport { boolish } from 'getenv';\n\nimport { ExportedConfig, ExportedConfigWithProps, Mod, ModPlatform } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\nexport type BaseModOptions = {\n platform: ModPlatform;\n mod: string;\n isProvider?: boolean;\n skipEmptyMod?: boolean;\n saveToInternal?: boolean;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\n/**\n * Plugin to intercept execution of a given `mod` with the given `action`.\n * If an action was already set on the given `config` config for `mod`, then it\n * will be provided to the `action` as `nextMod` when it's evaluated, otherwise\n * `nextMod` will be an identity function.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to intercept\n * @param skipEmptyMod should skip running the action if there is no existing mod to intercept\n * @param saveToInternal should save the results to `_internal.modResults`, only enable this when the results are pure JSON.\n * @param isProvider should provide data up to the other mods.\n * @param action method to run on the mod when the config is compiled\n */\nexport function withBaseMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n skipEmptyMod,\n isProvider,\n isIntrospective,\n saveToInternal,\n }: BaseModOptions & { action: Mod<T> }\n): ExportedConfig {\n if (!config.mods) {\n config.mods = {};\n }\n if (!config.mods[platform]) {\n config.mods[platform] = {};\n }\n\n let interceptedMod: Mod<T> = (config.mods[platform] as Record<string, any>)[mod];\n\n // No existing mod to intercept\n if (!interceptedMod) {\n if (skipEmptyMod) {\n // Skip running the action\n return config;\n }\n // Use a noop mod and continue\n const noopMod: Mod<T> = config => config;\n interceptedMod = noopMod;\n }\n\n // Create a stack trace for debugging ahead of time\n let debugTrace: string = '';\n // Use the possibly user defined value. Otherwise fallback to the env variable.\n // We support the env variable because user mods won't have _internal defined in time.\n const isDebug = config._internal?.isDebug ?? EXPO_DEBUG;\n if (isDebug) {\n // Get a stack trace via the Error API\n const stack = new Error().stack;\n // Format the stack trace to create the debug log\n debugTrace = getDebugPluginStackFromStackTrace(stack);\n const modStack = chalk.bold(`${platform}.${mod}`);\n\n debugTrace = `${modStack}: ${debugTrace}`;\n }\n\n // Prevent adding multiple providers to a mod.\n // Base mods that provide files ignore any incoming modResults and therefore shouldn't have provider mods as parents.\n if (interceptedMod.isProvider) {\n if (isProvider) {\n throw new PluginError(\n `Cannot set provider mod for \"${platform}.${mod}\" because another is already being used.`,\n 'CONFLICTING_PROVIDER'\n );\n } else {\n throw new PluginError(\n `Cannot add mod to \"${platform}.${mod}\" because the provider has already been added. Provider must be the last mod added.`,\n 'INVALID_MOD_ORDER'\n );\n }\n }\n\n async function interceptingMod({ modRequest, ...config }: ExportedConfigWithProps<T>) {\n if (isDebug) {\n // In debug mod, log the plugin stack in the order which they were invoked\n console.log(debugTrace);\n }\n const results = await action({\n ...config,\n modRequest: { ...modRequest, nextMod: interceptedMod },\n });\n\n if (saveToInternal) {\n saveToInternalObject(results, platform, mod, (results.modResults as unknown) as JSONObject);\n }\n return results;\n }\n\n // Ensure this base mod is registered as the provider.\n interceptingMod.isProvider = isProvider;\n\n if (isIntrospective) {\n // Register the mode as idempotent so introspection doesn't remove it.\n interceptingMod.isIntrospective = isIntrospective;\n }\n\n (config.mods[platform] as any)[mod] = interceptingMod;\n\n return config;\n}\n\nfunction saveToInternalObject(\n config: Pick<ExpoConfig, '_internal'>,\n platformName: ModPlatform,\n modName: string,\n results: JSONObject\n) {\n if (!config._internal) config._internal = {};\n if (!config._internal.modResults) config._internal.modResults = {};\n if (!config._internal.modResults[platformName]) config._internal.modResults[platformName] = {};\n config._internal.modResults[platformName][modName] = results;\n}\n\nfunction getDebugPluginStackFromStackTrace(stacktrace?: string): string {\n if (!stacktrace) {\n return '';\n }\n\n const treeStackLines: string[] = [];\n for (const line of stacktrace.split('\\n')) {\n const [first, second] = line.trim().split(' ');\n if (first === 'at') {\n treeStackLines.push(second);\n }\n }\n\n const plugins = treeStackLines\n .map(first => {\n // Match the first part of the stack trace against the plugin naming convention\n // \"with\" followed by a capital letter.\n return (\n first?.match(/^(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n first?.match(/\\.(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n null\n );\n })\n .filter(Boolean)\n .filter(plugin => {\n // redundant as all debug logs are captured in withBaseMod\n return !['withMod', 'withBaseMod', 'withExtendedMod'].includes(plugin!);\n });\n\n const commonPlugins = ['withPlugins', 'withRunOnce', 'withStaticPlugin'];\n\n return (\n (plugins as string[])\n .reverse()\n .map((pluginName, index) => {\n // Base mods indicate a logical section.\n if (pluginName.includes('BaseMod')) {\n pluginName = chalk.bold(pluginName);\n }\n // highlight dangerous mods\n if (pluginName.toLowerCase().includes('dangerous')) {\n pluginName = chalk.red(pluginName);\n }\n\n if (index === 0) {\n return chalk.blue(pluginName);\n } else if (commonPlugins.includes(pluginName)) {\n // Common mod names often clutter up the logs, dim them out\n return chalk.dim(pluginName);\n }\n return pluginName;\n })\n // Join the results:\n // withAndroidExpoPlugins ➜ withPlugins ➜ withIcons ➜ withDangerousMod ➜ withMod\n .join(' ➜ ')\n );\n}\n\n/**\n * Plugin to extend a mod function in the plugins config.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to extend\n * @param action method to run on the mod when the config is compiled\n */\nexport function withMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n }: {\n platform: ModPlatform;\n mod: string;\n action: Mod<T>;\n }\n): ExportedConfig {\n return withBaseMod(config, {\n platform,\n mod,\n isProvider: false,\n async action({ modRequest: { nextMod, ...modRequest }, modResults, ...config }) {\n const results = await action({ modRequest, modResults: modResults as T, ...config });\n return nextMod!(results as any);\n },\n });\n}\n"],"file":"withMod.js"}
|
|
1
|
+
{"version":3,"file":"withMod.js","names":["EXPO_DEBUG","boolish","withBaseMod","config","platform","mod","action","skipEmptyMod","isProvider","isIntrospective","saveToInternal","mods","interceptedMod","noopMod","debugTrace","isDebug","_internal","stack","Error","getDebugPluginStackFromStackTrace","modStack","chalk","bold","PluginError","interceptingMod","modRequest","console","log","results","nextMod","saveToInternalObject","modResults","platformName","modName","stacktrace","treeStackLines","line","split","first","second","trim","push","plugins","map","match","filter","Boolean","plugin","includes","commonPlugins","reverse","pluginName","index","toLowerCase","red","blue","dim","join","withMod"],"sources":["../../src/plugins/withMod.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport chalk from 'chalk';\nimport { boolish } from 'getenv';\n\nimport { ExportedConfig, ExportedConfigWithProps, Mod, ModPlatform } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\nexport type BaseModOptions = {\n platform: ModPlatform;\n mod: string;\n isProvider?: boolean;\n skipEmptyMod?: boolean;\n saveToInternal?: boolean;\n /**\n * If the mod supports introspection, and avoids making any filesystem modifications during compilation.\n * By enabling, this mod, and all of its descendants will be run in introspection mode.\n * This should only be used for static files like JSON or XML, and not for application files that require regexes,\n * or complex static files that require other files to be generated like Xcode `.pbxproj`.\n */\n isIntrospective?: boolean;\n};\n\n/**\n * Plugin to intercept execution of a given `mod` with the given `action`.\n * If an action was already set on the given `config` config for `mod`, then it\n * will be provided to the `action` as `nextMod` when it's evaluated, otherwise\n * `nextMod` will be an identity function.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to intercept\n * @param skipEmptyMod should skip running the action if there is no existing mod to intercept\n * @param saveToInternal should save the results to `_internal.modResults`, only enable this when the results are pure JSON.\n * @param isProvider should provide data up to the other mods.\n * @param action method to run on the mod when the config is compiled\n */\nexport function withBaseMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n skipEmptyMod,\n isProvider,\n isIntrospective,\n saveToInternal,\n }: BaseModOptions & { action: Mod<T> }\n): ExportedConfig {\n if (!config.mods) {\n config.mods = {};\n }\n if (!config.mods[platform]) {\n config.mods[platform] = {};\n }\n\n let interceptedMod: Mod<T> = (config.mods[platform] as Record<string, any>)[mod];\n\n // No existing mod to intercept\n if (!interceptedMod) {\n if (skipEmptyMod) {\n // Skip running the action\n return config;\n }\n // Use a noop mod and continue\n const noopMod: Mod<T> = (config) => config;\n interceptedMod = noopMod;\n }\n\n // Create a stack trace for debugging ahead of time\n let debugTrace: string = '';\n // Use the possibly user defined value. Otherwise fallback to the env variable.\n // We support the env variable because user mods won't have _internal defined in time.\n const isDebug = config._internal?.isDebug ?? EXPO_DEBUG;\n if (isDebug) {\n // Get a stack trace via the Error API\n const stack = new Error().stack;\n // Format the stack trace to create the debug log\n debugTrace = getDebugPluginStackFromStackTrace(stack);\n const modStack = chalk.bold(`${platform}.${mod}`);\n\n debugTrace = `${modStack}: ${debugTrace}`;\n }\n\n // Prevent adding multiple providers to a mod.\n // Base mods that provide files ignore any incoming modResults and therefore shouldn't have provider mods as parents.\n if (interceptedMod.isProvider) {\n if (isProvider) {\n throw new PluginError(\n `Cannot set provider mod for \"${platform}.${mod}\" because another is already being used.`,\n 'CONFLICTING_PROVIDER'\n );\n } else {\n throw new PluginError(\n `Cannot add mod to \"${platform}.${mod}\" because the provider has already been added. Provider must be the last mod added.`,\n 'INVALID_MOD_ORDER'\n );\n }\n }\n\n async function interceptingMod({ modRequest, ...config }: ExportedConfigWithProps<T>) {\n if (isDebug) {\n // In debug mod, log the plugin stack in the order which they were invoked\n console.log(debugTrace);\n }\n const results = await action({\n ...config,\n modRequest: { ...modRequest, nextMod: interceptedMod },\n });\n\n if (saveToInternal) {\n saveToInternalObject(results, platform, mod, results.modResults as unknown as JSONObject);\n }\n return results;\n }\n\n // Ensure this base mod is registered as the provider.\n interceptingMod.isProvider = isProvider;\n\n if (isIntrospective) {\n // Register the mode as idempotent so introspection doesn't remove it.\n interceptingMod.isIntrospective = isIntrospective;\n }\n\n (config.mods[platform] as any)[mod] = interceptingMod;\n\n return config;\n}\n\nfunction saveToInternalObject(\n config: Pick<ExpoConfig, '_internal'>,\n platformName: ModPlatform,\n modName: string,\n results: JSONObject\n) {\n if (!config._internal) config._internal = {};\n if (!config._internal.modResults) config._internal.modResults = {};\n if (!config._internal.modResults[platformName]) config._internal.modResults[platformName] = {};\n config._internal.modResults[platformName][modName] = results;\n}\n\nfunction getDebugPluginStackFromStackTrace(stacktrace?: string): string {\n if (!stacktrace) {\n return '';\n }\n\n const treeStackLines: string[] = [];\n for (const line of stacktrace.split('\\n')) {\n const [first, second] = line.trim().split(' ');\n if (first === 'at') {\n treeStackLines.push(second);\n }\n }\n\n const plugins = treeStackLines\n .map((first) => {\n // Match the first part of the stack trace against the plugin naming convention\n // \"with\" followed by a capital letter.\n return (\n first?.match(/^(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n first?.match(/\\.(\\bwith[A-Z].*?\\b)/)?.[1]?.trim() ??\n null\n );\n })\n .filter(Boolean)\n .filter((plugin) => {\n // redundant as all debug logs are captured in withBaseMod\n return !['withMod', 'withBaseMod', 'withExtendedMod'].includes(plugin!);\n });\n\n const commonPlugins = ['withPlugins', 'withRunOnce', 'withStaticPlugin'];\n\n return (\n (plugins as string[])\n .reverse()\n .map((pluginName, index) => {\n // Base mods indicate a logical section.\n if (pluginName.includes('BaseMod')) {\n pluginName = chalk.bold(pluginName);\n }\n // highlight dangerous mods\n if (pluginName.toLowerCase().includes('dangerous')) {\n pluginName = chalk.red(pluginName);\n }\n\n if (index === 0) {\n return chalk.blue(pluginName);\n } else if (commonPlugins.includes(pluginName)) {\n // Common mod names often clutter up the logs, dim them out\n return chalk.dim(pluginName);\n }\n return pluginName;\n })\n // Join the results:\n // withAndroidExpoPlugins ➜ withPlugins ➜ withIcons ➜ withDangerousMod ➜ withMod\n .join(' ➜ ')\n );\n}\n\n/**\n * Plugin to extend a mod function in the plugins config.\n *\n * @param config exported config\n * @param platform platform to target (ios or android)\n * @param mod name of the platform function to extend\n * @param action method to run on the mod when the config is compiled\n */\nexport function withMod<T>(\n config: ExportedConfig,\n {\n platform,\n mod,\n action,\n }: {\n platform: ModPlatform;\n mod: string;\n action: Mod<T>;\n }\n): ExportedConfig {\n return withBaseMod(config, {\n platform,\n mod,\n isProvider: false,\n async action({ modRequest: { nextMod, ...modRequest }, modResults, ...config }) {\n const results = await action({ modRequest, modResults: modResults as T, ...config });\n return nextMod!(results as any);\n },\n });\n}\n"],"mappings":";;;;;;;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;AAEA,MAAMA,UAAU,GAAG,IAAAC,iBAAA,EAAQ,YAAR,EAAsB,KAAtB,CAAnB;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,WAAT,CACLC,MADK,EAEL;EACEC,QADF;EAEEC,GAFF;EAGEC,MAHF;EAIEC,YAJF;EAKEC,UALF;EAMEC,eANF;EAOEC;AAPF,CAFK,EAWW;EAAA;;EAChB,IAAI,CAACP,MAAM,CAACQ,IAAZ,EAAkB;IAChBR,MAAM,CAACQ,IAAP,GAAc,EAAd;EACD;;EACD,IAAI,CAACR,MAAM,CAACQ,IAAP,CAAYP,QAAZ,CAAL,EAA4B;IAC1BD,MAAM,CAACQ,IAAP,CAAYP,QAAZ,IAAwB,EAAxB;EACD;;EAED,IAAIQ,cAAsB,GAAIT,MAAM,CAACQ,IAAP,CAAYP,QAAZ,CAAD,CAA+CC,GAA/C,CAA7B,CARgB,CAUhB;;EACA,IAAI,CAACO,cAAL,EAAqB;IACnB,IAAIL,YAAJ,EAAkB;MAChB;MACA,OAAOJ,MAAP;IACD,CAJkB,CAKnB;;;IACA,MAAMU,OAAe,GAAIV,MAAD,IAAYA,MAApC;;IACAS,cAAc,GAAGC,OAAjB;EACD,CAnBe,CAqBhB;;;EACA,IAAIC,UAAkB,GAAG,EAAzB,CAtBgB,CAuBhB;EACA;;EACA,MAAMC,OAAO,iDAAGZ,MAAM,CAACa,SAAV,sDAAG,kBAAkBD,OAArB,yEAAgCf,UAA7C;;EACA,IAAIe,OAAJ,EAAa;IACX;IACA,MAAME,KAAK,GAAG,IAAIC,KAAJ,GAAYD,KAA1B,CAFW,CAGX;;IACAH,UAAU,GAAGK,iCAAiC,CAACF,KAAD,CAA9C;;IACA,MAAMG,QAAQ,GAAGC,gBAAA,CAAMC,IAAN,CAAY,GAAElB,QAAS,IAAGC,GAAI,EAA9B,CAAjB;;IAEAS,UAAU,GAAI,GAAEM,QAAS,KAAIN,UAAW,EAAxC;EACD,CAlCe,CAoChB;EACA;;;EACA,IAAIF,cAAc,CAACJ,UAAnB,EAA+B;IAC7B,IAAIA,UAAJ,EAAgB;MACd,MAAM,KAAIe,qBAAJ,EACH,gCAA+BnB,QAAS,IAAGC,GAAI,0CAD5C,EAEJ,sBAFI,CAAN;IAID,CALD,MAKO;MACL,MAAM,KAAIkB,qBAAJ,EACH,sBAAqBnB,QAAS,IAAGC,GAAI,qFADlC,EAEJ,mBAFI,CAAN;IAID;EACF;;EAED,eAAemB,eAAf,CAA+B;IAAEC,UAAF;IAAc,GAAGtB;EAAjB,CAA/B,EAAsF;IACpF,IAAIY,OAAJ,EAAa;MACX;MACAW,OAAO,CAACC,GAAR,CAAYb,UAAZ;IACD;;IACD,MAAMc,OAAO,GAAG,MAAMtB,MAAM,CAAC,EAC3B,GAAGH,MADwB;MAE3BsB,UAAU,EAAE,EAAE,GAAGA,UAAL;QAAiBI,OAAO,EAAEjB;MAA1B;IAFe,CAAD,CAA5B;;IAKA,IAAIF,cAAJ,EAAoB;MAClBoB,oBAAoB,CAACF,OAAD,EAAUxB,QAAV,EAAoBC,GAApB,EAAyBuB,OAAO,CAACG,UAAjC,CAApB;IACD;;IACD,OAAOH,OAAP;EACD,CAlEe,CAoEhB;;;EACAJ,eAAe,CAAChB,UAAhB,GAA6BA,UAA7B;;EAEA,IAAIC,eAAJ,EAAqB;IACnB;IACAe,eAAe,CAACf,eAAhB,GAAkCA,eAAlC;EACD;;EAEAN,MAAM,CAACQ,IAAP,CAAYP,QAAZ,CAAD,CAA+BC,GAA/B,IAAsCmB,eAAtC;EAEA,OAAOrB,MAAP;AACD;;AAED,SAAS2B,oBAAT,CACE3B,MADF,EAEE6B,YAFF,EAGEC,OAHF,EAIEL,OAJF,EAKE;EACA,IAAI,CAACzB,MAAM,CAACa,SAAZ,EAAuBb,MAAM,CAACa,SAAP,GAAmB,EAAnB;EACvB,IAAI,CAACb,MAAM,CAACa,SAAP,CAAiBe,UAAtB,EAAkC5B,MAAM,CAACa,SAAP,CAAiBe,UAAjB,GAA8B,EAA9B;EAClC,IAAI,CAAC5B,MAAM,CAACa,SAAP,CAAiBe,UAAjB,CAA4BC,YAA5B,CAAL,EAAgD7B,MAAM,CAACa,SAAP,CAAiBe,UAAjB,CAA4BC,YAA5B,IAA4C,EAA5C;EAChD7B,MAAM,CAACa,SAAP,CAAiBe,UAAjB,CAA4BC,YAA5B,EAA0CC,OAA1C,IAAqDL,OAArD;AACD;;AAED,SAAST,iCAAT,CAA2Ce,UAA3C,EAAwE;EACtE,IAAI,CAACA,UAAL,EAAiB;IACf,OAAO,EAAP;EACD;;EAED,MAAMC,cAAwB,GAAG,EAAjC;;EACA,KAAK,MAAMC,IAAX,IAAmBF,UAAU,CAACG,KAAX,CAAiB,IAAjB,CAAnB,EAA2C;IACzC,MAAM,CAACC,KAAD,EAAQC,MAAR,IAAkBH,IAAI,CAACI,IAAL,GAAYH,KAAZ,CAAkB,GAAlB,CAAxB;;IACA,IAAIC,KAAK,KAAK,IAAd,EAAoB;MAClBH,cAAc,CAACM,IAAf,CAAoBF,MAApB;IACD;EACF;;EAED,MAAMG,OAAO,GAAGP,cAAc,CAC3BQ,GADa,CACRL,KAAD,IAAW;IAAA;;IACd;IACA;IACA,sCACEA,KADF,aACEA,KADF,uCACEA,KAAK,CAAEM,KAAP,CAAa,qBAAb,CADF,kEACE,aAAsC,CAAtC,CADF,kDACE,cAA0CJ,IAA1C,EADF,qEAEEF,KAFF,aAEEA,KAFF,wCAEEA,KAAK,CAAEM,KAAP,CAAa,sBAAb,CAFF,oEAEE,cAAuC,CAAvC,CAFF,mDAEE,eAA2CJ,IAA3C,EAFF,uCAGE,IAHF;EAKD,CATa,EAUbK,MAVa,CAUNC,OAVM,EAWbD,MAXa,CAWLE,MAAD,IAAY;IAClB;IACA,OAAO,CAAC,CAAC,SAAD,EAAY,aAAZ,EAA2B,iBAA3B,EAA8CC,QAA9C,CAAuDD,MAAvD,CAAR;EACD,CAda,CAAhB;EAgBA,MAAME,aAAa,GAAG,CAAC,aAAD,EAAgB,aAAhB,EAA+B,kBAA/B,CAAtB;EAEA,OACGP,OAAD,CACGQ,OADH,GAEGP,GAFH,CAEO,CAACQ,UAAD,EAAaC,KAAb,KAAuB;IAC1B;IACA,IAAID,UAAU,CAACH,QAAX,CAAoB,SAApB,CAAJ,EAAoC;MAClCG,UAAU,GAAG9B,gBAAA,CAAMC,IAAN,CAAW6B,UAAX,CAAb;IACD,CAJyB,CAK1B;;;IACA,IAAIA,UAAU,CAACE,WAAX,GAAyBL,QAAzB,CAAkC,WAAlC,CAAJ,EAAoD;MAClDG,UAAU,GAAG9B,gBAAA,CAAMiC,GAAN,CAAUH,UAAV,CAAb;IACD;;IAED,IAAIC,KAAK,KAAK,CAAd,EAAiB;MACf,OAAO/B,gBAAA,CAAMkC,IAAN,CAAWJ,UAAX,CAAP;IACD,CAFD,MAEO,IAAIF,aAAa,CAACD,QAAd,CAAuBG,UAAvB,CAAJ,EAAwC;MAC7C;MACA,OAAO9B,gBAAA,CAAMmC,GAAN,CAAUL,UAAV,CAAP;IACD;;IACD,OAAOA,UAAP;EACD,CAnBH,EAoBE;EACA;EArBF,CAsBGM,IAtBH,CAsBQ,KAtBR,CADF;AAyBD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,OAAT,CACLvD,MADK,EAEL;EACEC,QADF;EAEEC,GAFF;EAGEC;AAHF,CAFK,EAWW;EAChB,OAAOJ,WAAW,CAACC,MAAD,EAAS;IACzBC,QADyB;IAEzBC,GAFyB;IAGzBG,UAAU,EAAE,KAHa;;IAIzB,MAAMF,MAAN,CAAa;MAAEmB,UAAU,EAAE;QAAEI,OAAF;QAAW,GAAGJ;MAAd,CAAd;MAA0CM,UAA1C;MAAsD,GAAG5B;IAAzD,CAAb,EAAgF;MAC9E,MAAMyB,OAAO,GAAG,MAAMtB,MAAM,CAAC;QAAEmB,UAAF;QAAcM,UAAU,EAAEA,UAA1B;QAA2C,GAAG5B;MAA9C,CAAD,CAA5B;MACA,OAAO0B,OAAO,CAAED,OAAF,CAAd;IACD;;EAPwB,CAAT,CAAlB;AASD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"withPlugins.js","names":["withPlugins","config","plugins","assert","Array","isArray","reduce","prev","plugin","withStaticPlugin"],"sources":["../../src/plugins/withPlugins.ts"],"sourcesContent":["import assert from 'assert';\n\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\nimport { withStaticPlugin } from './withStaticPlugin';\n\n/**\n * Resolves a list of plugins.\n *\n * @param config exported config\n * @param plugins list of config config plugins to apply to the exported config\n */\nexport const withPlugins: ConfigPlugin<(StaticPlugin | ConfigPlugin | string)[]> = (\n config,\n plugins\n) => {\n assert(\n Array.isArray(plugins),\n 'withPlugins expected a valid array of plugins or plugin module paths'\n );\n return plugins.reduce((prev, plugin) => withStaticPlugin(prev, { plugin }), config);\n};\n"],"mappings":";;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAGA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,WAAmE,GAAG,CACjFC,MADiF,EAEjFC,OAFiF,KAG9E;EACH,IAAAC,iBAAA,EACEC,KAAK,CAACC,OAAN,CAAcH,OAAd,CADF,EAEE,sEAFF;EAIA,OAAOA,OAAO,CAACI,MAAR,CAAe,CAACC,IAAD,EAAOC,MAAP,KAAkB,IAAAC,oCAAA,EAAiBF,IAAjB,EAAuB;IAAEC;EAAF,CAAvB,CAAjC,EAAqEP,MAArE,CAAP;AACD,CATM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"withRunOnce.js","names":["withRunOnce","config","plugin","name","version","getHistoryItem","addHistoryItem","createRunOncePlugin","props"],"sources":["../../src/plugins/withRunOnce.ts"],"sourcesContent":["import { ConfigPlugin } from '../Plugin.types';\nimport { addHistoryItem, getHistoryItem, PluginHistoryItem } from '../utils/history';\n\n/**\n * Prevents the same plugin from being run twice.\n * Used for migrating from unversioned expo config plugins to versioned plugins.\n *\n * @param config\n * @param name\n */\nexport const withRunOnce: ConfigPlugin<{\n plugin: ConfigPlugin<void>;\n name: PluginHistoryItem['name'];\n version?: PluginHistoryItem['version'];\n}> = (config, { plugin, name, version }) => {\n // Detect if a plugin has already been run on this config.\n if (getHistoryItem(config, name)) {\n return config;\n }\n\n // Push the history item so duplicates cannot be run.\n config = addHistoryItem(config, { name, version });\n\n return plugin(config);\n};\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createRunOncePlugin<T>(\n plugin: ConfigPlugin<T>,\n name: string,\n version?: string\n): ConfigPlugin<T> {\n return (config, props) => {\n return withRunOnce(config, { plugin: (config) => plugin(config, props), name, version });\n };\n}\n"],"mappings":";;;;;;;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,WAIX,GAAG,CAACC,MAAD,EAAS;EAAEC,MAAF;EAAUC,IAAV;EAAgBC;AAAhB,CAAT,KAAuC;EAC1C;EACA,IAAI,IAAAC,yBAAA,EAAeJ,MAAf,EAAuBE,IAAvB,CAAJ,EAAkC;IAChC,OAAOF,MAAP;EACD,CAJyC,CAM1C;;;EACAA,MAAM,GAAG,IAAAK,yBAAA,EAAeL,MAAf,EAAuB;IAAEE,IAAF;IAAQC;EAAR,CAAvB,CAAT;EAEA,OAAOF,MAAM,CAACD,MAAD,CAAb;AACD,CAdM;AAgBP;AACA;AACA;AACA;AACA;;;;;AACO,SAASM,mBAAT,CACLL,MADK,EAELC,IAFK,EAGLC,OAHK,EAIY;EACjB,OAAO,CAACH,MAAD,EAASO,KAAT,KAAmB;IACxB,OAAOR,WAAW,CAACC,MAAD,EAAS;MAAEC,MAAM,EAAGD,MAAD,IAAYC,MAAM,CAACD,MAAD,EAASO,KAAT,CAA5B;MAA6CL,IAA7C;MAAmDC;IAAnD,CAAT,CAAlB;EACD,CAFD;AAGD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"withStaticPlugin.js","names":["EXPO_DEBUG","boolish","EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS","EXPO_USE_UNVERSIONED_PLUGINS","isModuleMissingError","name","error","includes","code","message","isUnexpectedTokenError","SyntaxError","PluginError","match","withStaticPlugin","config","props","projectRoot","_internal","assertInternalProjectRoot","pluginResolve","pluginProps","normalizeStaticPlugin","plugin","assert","_resolverError","withPlugin","resolveConfigPluginFunction","_isLegacyPlugin","fallback","console","log","shouldMuteWarning"],"sources":["../../src/plugins/withStaticPlugin.ts"],"sourcesContent":["import assert from 'assert';\nimport { boolish } from 'getenv';\n\nimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';\nimport { PluginError } from '../utils/errors';\nimport {\n assertInternalProjectRoot,\n normalizeStaticPlugin,\n resolveConfigPluginFunction,\n} from '../utils/plugin-resolver';\n\nconst EXPO_DEBUG = boolish('EXPO_DEBUG', false);\n\n// Show all error info related to plugin resolution.\nconst EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS = boolish('EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS', false);\n// Force using the fallback unversioned plugin instead of a local versioned copy,\n// this should only be used for testing the CLI.\nconst EXPO_USE_UNVERSIONED_PLUGINS = boolish('EXPO_USE_UNVERSIONED_PLUGINS', false);\n\nfunction isModuleMissingError(name: string, error: Error): boolean {\n // @ts-ignore\n if (['MODULE_NOT_FOUND', 'PLUGIN_NOT_FOUND'].includes(error.code)) {\n return true;\n }\n return error.message.includes(`Cannot find module '${name}'`);\n}\n\nfunction isUnexpectedTokenError(error: Error): boolean {\n if (\n error instanceof SyntaxError ||\n (error instanceof PluginError && error.code === 'INVALID_PLUGIN_IMPORT')\n ) {\n return (\n // These are the most common errors that'll be thrown when a package isn't transpiled correctly.\n !!error.message.match(/Unexpected token/) ||\n !!error.message.match(/Cannot use import statement/)\n );\n }\n return false;\n}\n\n/**\n * Resolves static module plugin and potentially falls back on a provided plugin if the module cannot be resolved\n *\n * @param config\n * @param fallback Plugin with `_resolverError` explaining why the module couldn't be used\n * @param projectRoot optional project root, fallback to _internal.projectRoot. Used for testing.\n * @param _isLegacyPlugin Used to suppress errors thrown by plugins that are applied automatically\n */\nexport const withStaticPlugin: ConfigPlugin<{\n plugin: StaticPlugin | ConfigPlugin | string;\n fallback?: ConfigPlugin<{ _resolverError: Error } & any>;\n projectRoot?: string;\n _isLegacyPlugin?: boolean;\n}> = (config, props) => {\n let projectRoot = props.projectRoot;\n if (!projectRoot) {\n projectRoot = config._internal?.projectRoot;\n assertInternalProjectRoot(projectRoot);\n }\n\n let [pluginResolve, pluginProps] = normalizeStaticPlugin(props.plugin);\n // Ensure no one uses this property by accident.\n assert(\n !pluginProps?._resolverError,\n `Plugin property '_resolverError' is a reserved property of \\`withStaticPlugin\\``\n );\n\n let withPlugin: ConfigPlugin<unknown>;\n\n if (\n // Function was provided, no need to resolve: [withPlugin, {}]\n typeof pluginResolve === 'function'\n ) {\n withPlugin = pluginResolve;\n } else if (typeof pluginResolve === 'string') {\n try {\n // Resolve and evaluate plugins.\n withPlugin = resolveConfigPluginFunction(projectRoot, pluginResolve);\n\n // Only force if the project has the versioned plugin, otherwise use default behavior.\n // This helps see which plugins are being skipped.\n if (\n EXPO_USE_UNVERSIONED_PLUGINS &&\n !!withPlugin &&\n !!props._isLegacyPlugin &&\n !!props.fallback\n ) {\n console.log(`Force \"${pluginResolve}\" to unversioned plugin`);\n withPlugin = props.fallback;\n }\n } catch (error: any) {\n if (EXPO_DEBUG) {\n if (EXPO_CONFIG_PLUGIN_VERBOSE_ERRORS) {\n // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n console.log(`Error resolving plugin \"${pluginResolve}\"`);\n console.log(error);\n console.log();\n } else {\n const shouldMuteWarning =\n props._isLegacyPlugin &&\n (isModuleMissingError(pluginResolve, error) || isUnexpectedTokenError(error));\n if (!shouldMuteWarning) {\n if (isModuleMissingError(pluginResolve, error)) {\n // Prevent causing log spew for basic resolution errors.\n console.log(`Could not find plugin \"${pluginResolve}\"`);\n } else {\n // Log the error in debug mode for plugins with fallbacks (like the Expo managed plugins).\n console.log(`Error resolving plugin \"${pluginResolve}\"`);\n console.log(error);\n console.log();\n }\n }\n }\n }\n // TODO: Maybe allow for `PluginError`s to be thrown so external plugins can assert invalid options.\n\n // If the static module failed to resolve, attempt to use a fallback.\n // This enables support for built-in plugins with versioned variations living in other packages.\n if (props.fallback) {\n if (!pluginProps) pluginProps = {};\n // Pass this to the fallback plugin for potential warnings about needing to install a versioned package.\n pluginProps._resolverError = error;\n withPlugin = props.fallback;\n } else {\n // If no fallback, throw the resolution error.\n throw error;\n }\n }\n } else {\n throw new PluginError(\n `Plugin is an unexpected type: ${typeof pluginResolve}`,\n 'INVALID_PLUGIN_TYPE'\n );\n }\n\n // Execute the plugin.\n config = withPlugin(config, pluginProps);\n return config;\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"BuildProperties.types.js","names":[],"sources":["../../src/utils/BuildProperties.types.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\n\n/**\n * Rule to transform from config to build properties\n *\n * @example\n * ```ts\n * {\n * propName: 'expo.jsEngine',\n * propValueGetter: (config) => config.android?.jsEngine ?? config.jsEngine ?? 'jsc',\n * }\n * ```\n * Will lookup a value through the `propValueGetter` and update to `android/gradle.properties` / `ios/Podfile.properties.json`\n * with the `expo.jsEngine` property name and the lookuped value.\n *\n */\n\n/**\n * Source config can be either expo config or generic config\n */\nexport type BuildPropertiesConfig = ExpoConfig | Record<string, any>;\n\nexport interface ConfigToPropertyRuleType<SourceConfigType extends BuildPropertiesConfig> {\n /** Property name in `android/gradle.properties` or `ios/Podfile.properties.json` */\n propName: string;\n\n /** Passing config and get the property value */\n propValueGetter: (config: SourceConfigType) => string | null | undefined;\n}\n"],"mappings":""}
|
package/build/utils/Updates.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Android, ExpoConfig, IOS } from '@expo/config-types';
|
|
|
2
2
|
export declare type ExpoConfigUpdates = Pick<ExpoConfig, 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'>;
|
|
3
3
|
export declare function getExpoUpdatesPackageVersion(projectRoot: string): string | null;
|
|
4
4
|
export declare function getUpdateUrl(config: Pick<ExpoConfigUpdates, 'owner' | 'slug' | 'updates'>, username: string | null): string | null;
|
|
5
|
+
export declare function getAppVersion(config: Pick<ExpoConfig, 'version'>): string;
|
|
5
6
|
export declare function getNativeVersion(config: Pick<ExpoConfig, 'version'> & {
|
|
6
7
|
android?: Pick<Android, 'versionCode'>;
|
|
7
8
|
ios?: Pick<IOS, 'buildNumber'>;
|
package/build/utils/Updates.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.getAppVersion = getAppVersion;
|
|
6
7
|
exports.getExpoUpdatesPackageVersion = getExpoUpdatesPackageVersion;
|
|
7
8
|
exports.getNativeVersion = getNativeVersion;
|
|
8
9
|
exports.getRuntimeVersion = getRuntimeVersion;
|
|
@@ -118,6 +119,12 @@ function getUpdateUrl(config, username) {
|
|
|
118
119
|
return `https://exp.host/@${user}/${config.slug}`;
|
|
119
120
|
}
|
|
120
121
|
|
|
122
|
+
function getAppVersion(config) {
|
|
123
|
+
var _config$version;
|
|
124
|
+
|
|
125
|
+
return (_config$version = config.version) !== null && _config$version !== void 0 ? _config$version : '1.0.0';
|
|
126
|
+
}
|
|
127
|
+
|
|
121
128
|
function getNativeVersion(config, platform) {
|
|
122
129
|
const version = _().IOSConfig.Version.getVersion(config);
|
|
123
130
|
|
|
@@ -200,6 +207,8 @@ function getRuntimeVersion(config, platform) {
|
|
|
200
207
|
|
|
201
208
|
if (typeof runtimeVersion === 'string') {
|
|
202
209
|
return runtimeVersion;
|
|
210
|
+
} else if (runtimeVersion.policy === 'appVersion') {
|
|
211
|
+
return getAppVersion(config);
|
|
203
212
|
} else if (runtimeVersion.policy === 'nativeVersion') {
|
|
204
213
|
return getNativeVersion(config, platform);
|
|
205
214
|
} else if (runtimeVersion.policy === 'sdkVersion') {
|
|
@@ -210,7 +219,7 @@ function getRuntimeVersion(config, platform) {
|
|
|
210
219
|
return (0, _sdkRuntimeVersions().getRuntimeVersionForSDKVersion)(config.sdkVersion);
|
|
211
220
|
}
|
|
212
221
|
|
|
213
|
-
throw new Error(`"${typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion}" is not a valid runtime version. getRuntimeVersion only supports a string, "sdkVersion", or "nativeVersion" policy.`);
|
|
222
|
+
throw new Error(`"${typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion}" is not a valid runtime version. getRuntimeVersion only supports a string, "sdkVersion", "appVersion", or "nativeVersion" policy.`);
|
|
214
223
|
}
|
|
215
224
|
|
|
216
225
|
function getSDKVersion(config) {
|