@expo/config-plugins 4.1.5 → 5.0.0
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.js.map +1 -1
- package/build/android/Name.js.map +1 -1
- package/build/android/Orientation.js.map +1 -1
- package/build/android/Package.js.map +1 -1
- package/build/android/Paths.js.map +1 -1
- 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.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.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.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ios/utils/Xcodeproj.ts"],"names":["getProjectName","projectRoot","sourceRoot","Paths","getSourceRoot","path","basename","resolvePathOrProject","projectRootOrProject","getPbxproj","sanitizedName","name","sanitizedNameForProjects","replace","normalize","getHackyProjectName","config","projectName","createProjectFileForGroup","filepath","group","file","pbxFile","conflictingFile","children","find","child","comment","addResourceFileToGroup","groupName","isBuildFile","project","verbose","targetUuid","addFileToGroupAndLink","addFileToProject","addToPbxFileReferenceSection","addToPbxBuildFileSection","addToPbxResourcesBuildPhase","addBuildSourceFileToGroup","addToPbxSourcesBuildPhase","pbxGroupByPathOrAssert","target","applicationNativeTarget","getTarget","uuid","generateUuid","fileRef","push","value","getApplicationNativeTarget","String","addFramework","framework","splitPath","split","findGroup","undefined","findGroupInsideGroup","foundGroup","getPBXGroupByKey","firstProject","getFirstProject","mainGroup","components","nextGroup","Error","ensureGroupRecursively","hasChild","topMostGroup","pathComponent","pbxCreateGroup","pbxGroupByName","projectPath","getPBXProjectPath","xcode","parseSync","getProductName","productName","targetName","getFirstTarget","firstTarget","getProjectSection","pbxProjectSection","getXCConfigurationListEntries","lists","pbxXCConfigurationList","Object","entries","filter","isNotComment","getBuildConfigurationsForListId","configurationListId","configurationListEntries","configurationList","key","buildConfigurations","map","i","pbxXCBuildConfigurationSection","isBuildConfig","includes","getBuildConfigurationForListIdAndName","buildConfiguration","xcBuildConfigurationEntry","sectionItem","isa","isNotTestHost","buildSettings","TEST_HOST","endsWith","unquote","match"],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport assert from 'assert';\nimport path from 'path';\nimport slugify from 'slugify';\nimport xcode, {\n PBXFile,\n PBXGroup,\n PBXNativeTarget,\n PBXProject,\n UUID,\n XCBuildConfiguration,\n XCConfigurationList,\n XcodeProject,\n} from 'xcode';\nimport pbxFile from 'xcode/lib/pbxFile';\n\nimport { addWarningIOS } from '../../utils/warnings';\nimport * as Paths from '../Paths';\nimport { trimQuotes } from './string';\n\nexport type ProjectSectionEntry = [string, PBXProject];\n\nexport type NativeTargetSection = Record<string, PBXNativeTarget>;\n\nexport type NativeTargetSectionEntry = [string, PBXNativeTarget];\n\nexport type ConfigurationLists = Record<string, XCConfigurationList>;\n\nexport type ConfigurationListEntry = [string, XCConfigurationList];\n\nexport type ConfigurationSectionEntry = [string, XCBuildConfiguration];\n\nexport function getProjectName(projectRoot: string) {\n const sourceRoot = Paths.getSourceRoot(projectRoot);\n return path.basename(sourceRoot);\n}\n\nexport function resolvePathOrProject(\n projectRootOrProject: string | XcodeProject\n): XcodeProject | null {\n if (typeof projectRootOrProject === 'string') {\n try {\n return getPbxproj(projectRootOrProject);\n } catch {\n return null;\n }\n }\n return projectRootOrProject;\n}\n\n// TODO: come up with a better solution for using app.json expo.name in various places\nexport function sanitizedName(name: string) {\n // Default to the name `app` when every safe character has been sanitized\n return sanitizedNameForProjects(name) || sanitizedNameForProjects(slugify(name)) || 'app';\n}\n\nfunction sanitizedNameForProjects(name: string) {\n return name\n .replace(/[\\W_]+/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n}\n\n// TODO: it's silly and kind of fragile that we look at app config to determine\n// the ios project paths. Overall this function needs to be revamped, just a\n// placeholder for now! Make this more robust when we support applying config\n// at any time (currently it's only applied on eject).\nexport function getHackyProjectName(projectRoot: string, config: ExpoConfig): string {\n // Attempt to get the current ios folder name (apply).\n try {\n return getProjectName(projectRoot);\n } catch {\n // If no iOS project exists then create a new one (eject).\n const projectName = config.name;\n assert(projectName, 'Your project needs a name in app.json/app.config.js.');\n return sanitizedName(projectName);\n }\n}\n\nfunction createProjectFileForGroup({ filepath, group }: { filepath: string; group: PBXGroup }) {\n const file = new pbxFile(filepath);\n\n const conflictingFile = group.children.find(child => child.comment === file.basename);\n if (conflictingFile) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n return null;\n }\n return file;\n}\n\n/**\n * Add a resource file (ex: `SplashScreen.storyboard`, `Images.xcassets`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addResourceFileToGroup({\n filepath,\n groupName,\n // Should add to `PBXBuildFile Section`\n isBuildFile,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n isBuildFile?: boolean;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n if (isBuildFile) {\n project.addToPbxBuildFileSection(file);\n }\n project.addToPbxResourcesBuildPhase(file);\n },\n });\n}\n\n/**\n * Add a build source file (ex: `AppDelegate.m`, `ViewController.swift`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addBuildSourceFileToGroup({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n project.addToPbxBuildFileSection(file);\n project.addToPbxSourcesBuildPhase(file);\n },\n });\n}\n\n// TODO(brentvatne): I couldn't figure out how to do this with an existing\n// higher level function exposed by the xcode library, but we should find out how to do\n// that and replace this with it\nexport function addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n addFileToProject,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n addFileToProject: (props: { file: PBXFile; project: XcodeProject }) => void;\n}): XcodeProject {\n const group = pbxGroupByPathOrAssert(project, groupName);\n\n const file = createProjectFileForGroup({ filepath, group });\n\n if (!file) {\n if (verbose) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n addWarningIOS(\n 'ios-xcode-project',\n `Skipped adding duplicate file \"${filepath}\" to PBXGroup named \"${groupName}\"`\n );\n }\n return project;\n }\n\n if (targetUuid != null) {\n file.target = targetUuid;\n } else {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n file.target = applicationNativeTarget?.uuid;\n }\n\n file.uuid = project.generateUuid();\n file.fileRef = project.generateUuid();\n\n addFileToProject({ project, file });\n\n group.children.push({\n value: file.fileRef,\n comment: file.basename,\n });\n return project;\n}\n\nexport function getApplicationNativeTarget({\n project,\n projectName,\n}: {\n project: XcodeProject;\n projectName: string;\n}) {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n assert(\n applicationNativeTarget,\n `Couldn't locate application PBXNativeTarget in '.xcodeproj' file.`\n );\n assert(\n String(applicationNativeTarget.target.name) === projectName,\n `Application native target name mismatch. Expected ${projectName}, but found ${applicationNativeTarget.target.name}.`\n );\n return applicationNativeTarget;\n}\n\n/**\n * Add a framework to the default app native target.\n *\n * @param projectName Name of the PBX project.\n * @param framework String ending in `.framework`, i.e. `StoreKit.framework`\n */\nexport function addFramework({\n project,\n projectName,\n framework,\n}: {\n project: XcodeProject;\n projectName: string;\n framework: string;\n}) {\n const target = getApplicationNativeTarget({ project, projectName });\n return project.addFramework(framework, { target: target.uuid });\n}\n\nfunction splitPath(path: string): string[] {\n // TODO: Should we account for other platforms that may not use `/`\n return path.split('/');\n}\n\nconst findGroup = (\n group: PBXGroup | undefined,\n name: string\n):\n | {\n value: UUID;\n comment?: string;\n }\n | undefined => {\n if (!group) {\n return undefined;\n }\n\n return group.children.find(group => group.comment === name);\n};\n\nfunction findGroupInsideGroup(\n project: XcodeProject,\n group: PBXGroup | undefined,\n name: string\n): null | PBXGroup {\n const foundGroup = findGroup(group, name);\n if (foundGroup) {\n return project.getPBXGroupByKey(foundGroup.value) ?? null;\n }\n return null;\n}\n\nfunction pbxGroupByPathOrAssert(project: XcodeProject, path: string): PBXGroup {\n const { firstProject } = project.getFirstProject();\n\n let group = project.getPBXGroupByKey(firstProject.mainGroup);\n\n const components = splitPath(path);\n for (const name of components) {\n const nextGroup = findGroupInsideGroup(project, group, name);\n if (nextGroup) {\n group = nextGroup;\n } else {\n break;\n }\n }\n\n if (!group) {\n throw Error(`Xcode PBXGroup with name \"${path}\" could not be found in the Xcode project.`);\n }\n\n return group;\n}\n\nexport function ensureGroupRecursively(project: XcodeProject, filepath: string): PBXGroup | null {\n const components = splitPath(filepath);\n const hasChild = (group: PBXGroup, name: string) =>\n group.children.find(({ comment }) => comment === name);\n const { firstProject } = project.getFirstProject();\n\n let topMostGroup = project.getPBXGroupByKey(firstProject.mainGroup);\n\n for (const pathComponent of components) {\n if (topMostGroup && !hasChild(topMostGroup, pathComponent)) {\n topMostGroup.children.push({\n comment: pathComponent,\n value: project.pbxCreateGroup(pathComponent, '\"\"'),\n });\n }\n topMostGroup = project.pbxGroupByName(pathComponent);\n }\n return topMostGroup ?? null;\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getPbxproj(projectRoot: string): XcodeProject {\n const projectPath = Paths.getPBXProjectPath(projectRoot);\n const project = xcode.project(projectPath);\n project.parseSync();\n return project;\n}\n\n/**\n * Get the productName for a project, if the name is using a variable `$(TARGET_NAME)`, then attempt to get the value of that variable.\n *\n * @param project\n */\nexport function getProductName(project: XcodeProject): string {\n let productName = '$(TARGET_NAME)';\n try {\n // If the product name is numeric, this will fail (it's a getter).\n // If the bundle identifier' final component is only numeric values, then the PRODUCT_NAME\n // will be a numeric value, this results in a bug where the product name isn't useful,\n // i.e. `com.bacon.001` -> `1` -- in this case, use the first target name.\n productName = project.productName;\n } catch {}\n\n if (productName === '$(TARGET_NAME)') {\n const targetName = project.getFirstTarget()?.firstTarget?.productName;\n productName = targetName ?? productName;\n }\n\n return productName;\n}\n\nexport function getProjectSection(project: XcodeProject) {\n return project.pbxProjectSection();\n}\n\nexport function getXCConfigurationListEntries(project: XcodeProject): ConfigurationListEntry[] {\n const lists = project.pbxXCConfigurationList();\n return Object.entries(lists).filter(isNotComment);\n}\n\nexport function getBuildConfigurationsForListId(\n project: XcodeProject,\n configurationListId: string\n): ConfigurationSectionEntry[] {\n const configurationListEntries = getXCConfigurationListEntries(project);\n const [, configurationList] = configurationListEntries.find(\n ([key]) => key === configurationListId\n ) as ConfigurationListEntry;\n\n const buildConfigurations = configurationList.buildConfigurations.map(i => i.value);\n\n return Object.entries(project.pbxXCBuildConfigurationSection())\n .filter(isNotComment)\n .filter(isBuildConfig)\n .filter(([key]: ConfigurationSectionEntry) => buildConfigurations.includes(key));\n}\n\nexport function getBuildConfigurationForListIdAndName(\n project: XcodeProject,\n {\n configurationListId,\n buildConfiguration,\n }: { configurationListId: string; buildConfiguration: string }\n): ConfigurationSectionEntry {\n const xcBuildConfigurationEntry = getBuildConfigurationsForListId(\n project,\n configurationListId\n ).find(i => trimQuotes(i[1].name) === buildConfiguration);\n if (!xcBuildConfigurationEntry) {\n throw new Error(\n `Build configuration '${buildConfiguration}' does not exist in list with id '${configurationListId}'`\n );\n }\n return xcBuildConfigurationEntry;\n}\n\nexport function isBuildConfig([, sectionItem]: ConfigurationSectionEntry): boolean {\n return sectionItem.isa === 'XCBuildConfiguration';\n}\n\nexport function isNotTestHost([, sectionItem]: ConfigurationSectionEntry): boolean {\n return !sectionItem.buildSettings.TEST_HOST;\n}\n\nexport function isNotComment([key]:\n | ConfigurationSectionEntry\n | ProjectSectionEntry\n | ConfigurationListEntry\n | NativeTargetSectionEntry): boolean {\n return !key.endsWith(`_comment`);\n}\n\n// Remove surrounding double quotes if they exist.\nexport function unquote(value: string): string {\n // projects with numeric names will fail due to a bug in the xcode package.\n if (typeof value === 'number') {\n value = String(value);\n }\n return value.match(/^\"(.*)\"$/)?.[1] ?? value;\n}\n"],"file":"Xcodeproj.js"}
|
|
1
|
+
{"version":3,"file":"Xcodeproj.js","names":["getProjectName","projectRoot","sourceRoot","Paths","getSourceRoot","path","basename","resolvePathOrProject","projectRootOrProject","getPbxproj","sanitizedName","name","sanitizedNameForProjects","slugify","replace","normalize","getHackyProjectName","config","projectName","assert","createProjectFileForGroup","filepath","group","file","pbxFile","conflictingFile","children","find","child","comment","addResourceFileToGroup","groupName","isBuildFile","project","verbose","targetUuid","addFileToGroupAndLink","addFileToProject","addToPbxFileReferenceSection","addToPbxBuildFileSection","addToPbxResourcesBuildPhase","addBuildSourceFileToGroup","addToPbxSourcesBuildPhase","pbxGroupByPathOrAssert","addWarningIOS","target","applicationNativeTarget","getTarget","uuid","generateUuid","fileRef","push","value","getApplicationNativeTarget","String","addFramework","framework","splitPath","split","findGroup","undefined","findGroupInsideGroup","foundGroup","getPBXGroupByKey","firstProject","getFirstProject","mainGroup","components","nextGroup","Error","ensureGroupRecursively","hasChild","topMostGroup","pathComponent","pbxCreateGroup","pbxGroupByName","projectPath","getPBXProjectPath","xcode","parseSync","getProductName","productName","targetName","getFirstTarget","firstTarget","getProjectSection","pbxProjectSection","getXCConfigurationListEntries","lists","pbxXCConfigurationList","Object","entries","filter","isNotComment","getBuildConfigurationsForListId","configurationListId","configurationListEntries","configurationList","key","buildConfigurations","map","i","pbxXCBuildConfigurationSection","isBuildConfig","includes","getBuildConfigurationForListIdAndName","buildConfiguration","xcBuildConfigurationEntry","trimQuotes","sectionItem","isa","isNotTestHost","buildSettings","TEST_HOST","endsWith","unquote","match"],"sources":["../../../src/ios/utils/Xcodeproj.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport assert from 'assert';\nimport path from 'path';\nimport slugify from 'slugify';\nimport xcode, {\n PBXFile,\n PBXGroup,\n PBXNativeTarget,\n PBXProject,\n UUID,\n XCBuildConfiguration,\n XCConfigurationList,\n XcodeProject,\n} from 'xcode';\nimport pbxFile from 'xcode/lib/pbxFile';\n\nimport { addWarningIOS } from '../../utils/warnings';\nimport * as Paths from '../Paths';\nimport { trimQuotes } from './string';\n\nexport type ProjectSectionEntry = [string, PBXProject];\n\nexport type NativeTargetSection = Record<string, PBXNativeTarget>;\n\nexport type NativeTargetSectionEntry = [string, PBXNativeTarget];\n\nexport type ConfigurationLists = Record<string, XCConfigurationList>;\n\nexport type ConfigurationListEntry = [string, XCConfigurationList];\n\nexport type ConfigurationSectionEntry = [string, XCBuildConfiguration];\n\nexport function getProjectName(projectRoot: string) {\n const sourceRoot = Paths.getSourceRoot(projectRoot);\n return path.basename(sourceRoot);\n}\n\nexport function resolvePathOrProject(\n projectRootOrProject: string | XcodeProject\n): XcodeProject | null {\n if (typeof projectRootOrProject === 'string') {\n try {\n return getPbxproj(projectRootOrProject);\n } catch {\n return null;\n }\n }\n return projectRootOrProject;\n}\n\n// TODO: come up with a better solution for using app.json expo.name in various places\nexport function sanitizedName(name: string) {\n // Default to the name `app` when every safe character has been sanitized\n return sanitizedNameForProjects(name) || sanitizedNameForProjects(slugify(name)) || 'app';\n}\n\nfunction sanitizedNameForProjects(name: string) {\n return name\n .replace(/[\\W_]+/g, '')\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '');\n}\n\n// TODO: it's silly and kind of fragile that we look at app config to determine\n// the ios project paths. Overall this function needs to be revamped, just a\n// placeholder for now! Make this more robust when we support applying config\n// at any time (currently it's only applied on eject).\nexport function getHackyProjectName(projectRoot: string, config: ExpoConfig): string {\n // Attempt to get the current ios folder name (apply).\n try {\n return getProjectName(projectRoot);\n } catch {\n // If no iOS project exists then create a new one (eject).\n const projectName = config.name;\n assert(projectName, 'Your project needs a name in app.json/app.config.js.');\n return sanitizedName(projectName);\n }\n}\n\nfunction createProjectFileForGroup({ filepath, group }: { filepath: string; group: PBXGroup }) {\n const file = new pbxFile(filepath);\n\n const conflictingFile = group.children.find((child) => child.comment === file.basename);\n if (conflictingFile) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n return null;\n }\n return file;\n}\n\n/**\n * Add a resource file (ex: `SplashScreen.storyboard`, `Images.xcassets`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addResourceFileToGroup({\n filepath,\n groupName,\n // Should add to `PBXBuildFile Section`\n isBuildFile,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n isBuildFile?: boolean;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n if (isBuildFile) {\n project.addToPbxBuildFileSection(file);\n }\n project.addToPbxResourcesBuildPhase(file);\n },\n });\n}\n\n/**\n * Add a build source file (ex: `AppDelegate.m`, `ViewController.swift`) to an Xcode project.\n * This is akin to creating a new code file in Xcode with `⌘+n`.\n */\nexport function addBuildSourceFileToGroup({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n}): XcodeProject {\n return addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n targetUuid,\n addFileToProject({ project, file }) {\n project.addToPbxFileReferenceSection(file);\n project.addToPbxBuildFileSection(file);\n project.addToPbxSourcesBuildPhase(file);\n },\n });\n}\n\n// TODO(brentvatne): I couldn't figure out how to do this with an existing\n// higher level function exposed by the xcode library, but we should find out how to do\n// that and replace this with it\nexport function addFileToGroupAndLink({\n filepath,\n groupName,\n project,\n verbose,\n addFileToProject,\n targetUuid,\n}: {\n filepath: string;\n groupName: string;\n project: XcodeProject;\n verbose?: boolean;\n targetUuid?: string;\n addFileToProject: (props: { file: PBXFile; project: XcodeProject }) => void;\n}): XcodeProject {\n const group = pbxGroupByPathOrAssert(project, groupName);\n\n const file = createProjectFileForGroup({ filepath, group });\n\n if (!file) {\n if (verbose) {\n // This can happen when a file like the GoogleService-Info.plist needs to be added and the eject command is run twice.\n // Not much we can do here since it might be a conflicting file.\n addWarningIOS(\n 'ios-xcode-project',\n `Skipped adding duplicate file \"${filepath}\" to PBXGroup named \"${groupName}\"`\n );\n }\n return project;\n }\n\n if (targetUuid != null) {\n file.target = targetUuid;\n } else {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n file.target = applicationNativeTarget?.uuid;\n }\n\n file.uuid = project.generateUuid();\n file.fileRef = project.generateUuid();\n\n addFileToProject({ project, file });\n\n group.children.push({\n value: file.fileRef,\n comment: file.basename,\n });\n return project;\n}\n\nexport function getApplicationNativeTarget({\n project,\n projectName,\n}: {\n project: XcodeProject;\n projectName: string;\n}) {\n const applicationNativeTarget = project.getTarget('com.apple.product-type.application');\n assert(\n applicationNativeTarget,\n `Couldn't locate application PBXNativeTarget in '.xcodeproj' file.`\n );\n assert(\n String(applicationNativeTarget.target.name) === projectName,\n `Application native target name mismatch. Expected ${projectName}, but found ${applicationNativeTarget.target.name}.`\n );\n return applicationNativeTarget;\n}\n\n/**\n * Add a framework to the default app native target.\n *\n * @param projectName Name of the PBX project.\n * @param framework String ending in `.framework`, i.e. `StoreKit.framework`\n */\nexport function addFramework({\n project,\n projectName,\n framework,\n}: {\n project: XcodeProject;\n projectName: string;\n framework: string;\n}) {\n const target = getApplicationNativeTarget({ project, projectName });\n return project.addFramework(framework, { target: target.uuid });\n}\n\nfunction splitPath(path: string): string[] {\n // TODO: Should we account for other platforms that may not use `/`\n return path.split('/');\n}\n\nconst findGroup = (\n group: PBXGroup | undefined,\n name: string\n):\n | {\n value: UUID;\n comment?: string;\n }\n | undefined => {\n if (!group) {\n return undefined;\n }\n\n return group.children.find((group) => group.comment === name);\n};\n\nfunction findGroupInsideGroup(\n project: XcodeProject,\n group: PBXGroup | undefined,\n name: string\n): null | PBXGroup {\n const foundGroup = findGroup(group, name);\n if (foundGroup) {\n return project.getPBXGroupByKey(foundGroup.value) ?? null;\n }\n return null;\n}\n\nfunction pbxGroupByPathOrAssert(project: XcodeProject, path: string): PBXGroup {\n const { firstProject } = project.getFirstProject();\n\n let group = project.getPBXGroupByKey(firstProject.mainGroup);\n\n const components = splitPath(path);\n for (const name of components) {\n const nextGroup = findGroupInsideGroup(project, group, name);\n if (nextGroup) {\n group = nextGroup;\n } else {\n break;\n }\n }\n\n if (!group) {\n throw Error(`Xcode PBXGroup with name \"${path}\" could not be found in the Xcode project.`);\n }\n\n return group;\n}\n\nexport function ensureGroupRecursively(project: XcodeProject, filepath: string): PBXGroup | null {\n const components = splitPath(filepath);\n const hasChild = (group: PBXGroup, name: string) =>\n group.children.find(({ comment }) => comment === name);\n const { firstProject } = project.getFirstProject();\n\n let topMostGroup = project.getPBXGroupByKey(firstProject.mainGroup);\n\n for (const pathComponent of components) {\n if (topMostGroup && !hasChild(topMostGroup, pathComponent)) {\n topMostGroup.children.push({\n comment: pathComponent,\n value: project.pbxCreateGroup(pathComponent, '\"\"'),\n });\n }\n topMostGroup = project.pbxGroupByName(pathComponent);\n }\n return topMostGroup ?? null;\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getPbxproj(projectRoot: string): XcodeProject {\n const projectPath = Paths.getPBXProjectPath(projectRoot);\n const project = xcode.project(projectPath);\n project.parseSync();\n return project;\n}\n\n/**\n * Get the productName for a project, if the name is using a variable `$(TARGET_NAME)`, then attempt to get the value of that variable.\n *\n * @param project\n */\nexport function getProductName(project: XcodeProject): string {\n let productName = '$(TARGET_NAME)';\n try {\n // If the product name is numeric, this will fail (it's a getter).\n // If the bundle identifier' final component is only numeric values, then the PRODUCT_NAME\n // will be a numeric value, this results in a bug where the product name isn't useful,\n // i.e. `com.bacon.001` -> `1` -- in this case, use the first target name.\n productName = project.productName;\n } catch {}\n\n if (productName === '$(TARGET_NAME)') {\n const targetName = project.getFirstTarget()?.firstTarget?.productName;\n productName = targetName ?? productName;\n }\n\n return productName;\n}\n\nexport function getProjectSection(project: XcodeProject) {\n return project.pbxProjectSection();\n}\n\nexport function getXCConfigurationListEntries(project: XcodeProject): ConfigurationListEntry[] {\n const lists = project.pbxXCConfigurationList();\n return Object.entries(lists).filter(isNotComment);\n}\n\nexport function getBuildConfigurationsForListId(\n project: XcodeProject,\n configurationListId: string\n): ConfigurationSectionEntry[] {\n const configurationListEntries = getXCConfigurationListEntries(project);\n const [, configurationList] = configurationListEntries.find(\n ([key]) => key === configurationListId\n ) as ConfigurationListEntry;\n\n const buildConfigurations = configurationList.buildConfigurations.map((i) => i.value);\n\n return Object.entries(project.pbxXCBuildConfigurationSection())\n .filter(isNotComment)\n .filter(isBuildConfig)\n .filter(([key]: ConfigurationSectionEntry) => buildConfigurations.includes(key));\n}\n\nexport function getBuildConfigurationForListIdAndName(\n project: XcodeProject,\n {\n configurationListId,\n buildConfiguration,\n }: { configurationListId: string; buildConfiguration: string }\n): ConfigurationSectionEntry {\n const xcBuildConfigurationEntry = getBuildConfigurationsForListId(\n project,\n configurationListId\n ).find((i) => trimQuotes(i[1].name) === buildConfiguration);\n if (!xcBuildConfigurationEntry) {\n throw new Error(\n `Build configuration '${buildConfiguration}' does not exist in list with id '${configurationListId}'`\n );\n }\n return xcBuildConfigurationEntry;\n}\n\nexport function isBuildConfig([, sectionItem]: ConfigurationSectionEntry): boolean {\n return sectionItem.isa === 'XCBuildConfiguration';\n}\n\nexport function isNotTestHost([, sectionItem]: ConfigurationSectionEntry): boolean {\n return !sectionItem.buildSettings.TEST_HOST;\n}\n\nexport function isNotComment([key]:\n | ConfigurationSectionEntry\n | ProjectSectionEntry\n | ConfigurationListEntry\n | NativeTargetSectionEntry): boolean {\n return !key.endsWith(`_comment`);\n}\n\n// Remove surrounding double quotes if they exist.\nexport function unquote(value: string): string {\n // projects with numeric names will fail due to a bug in the xcode package.\n if (typeof value === 'number') {\n value = String(value);\n }\n return value.match(/^\"(.*)\"$/)?.[1] ?? value;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"getInfoPlistPath.js","names":["getInfoPlistPathFromPbxproj","projectRootOrProject","targetName","buildConfiguration","project","resolvePathOrProject","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","sanitizeInfoPlistBuildProperty","buildSettings","INFOPLIST_FILE","infoPlist","replace"],"sources":["../../../src/ios/utils/getInfoPlistPath.ts"],"sourcesContent":["import { XcodeProject } from 'xcode';\n\nimport { getXCBuildConfigurationFromPbxproj } from '../Target';\nimport { resolvePathOrProject } from './Xcodeproj';\n\n/**\n * Find the Info.plist path linked to a specific build configuration.\n *\n * @param projectRoot\n * @param param1\n * @returns\n */\nexport function getInfoPlistPathFromPbxproj(\n projectRootOrProject: string | XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string | 'Release' | 'Debug' } = {}\n): string | null {\n const project = resolvePathOrProject(projectRootOrProject);\n if (!project) {\n return null;\n }\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n // The `INFOPLIST_FILE` is relative to the project folder, ex: app/Info.plist.\n return sanitizeInfoPlistBuildProperty(xcBuildConfiguration.buildSettings.INFOPLIST_FILE);\n}\n\nfunction sanitizeInfoPlistBuildProperty(infoPlist?: string): string | null {\n return infoPlist?.replace(/\"/g, '').replace('$(SRCROOT)', '') ?? null;\n}\n"],"mappings":";;;;;;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,2BAAT,CACLC,oBADK,EAEL;EACEC,UADF;EAEEC,kBAAkB,GAAG;AAFvB,IAGgF,EAL3E,EAMU;EACf,MAAMC,OAAO,GAAG,IAAAC,iCAAA,EAAqBJ,oBAArB,CAAhB;;EACA,IAAI,CAACG,OAAL,EAAc;IACZ,OAAO,IAAP;EACD;;EAED,MAAME,oBAAoB,GAAG,IAAAC,4CAAA,EAAmCH,OAAnC,EAA4C;IACvEF,UADuE;IAEvEC;EAFuE,CAA5C,CAA7B;;EAIA,IAAI,CAACG,oBAAL,EAA2B;IACzB,OAAO,IAAP;EACD,CAZc,CAaf;;;EACA,OAAOE,8BAA8B,CAACF,oBAAoB,CAACG,aAArB,CAAmCC,cAApC,CAArC;AACD;;AAED,SAASF,8BAAT,CAAwCG,SAAxC,EAA2E;EAAA;;EACzE,gCAAOA,SAAP,aAAOA,SAAP,uBAAOA,SAAS,CAAEC,OAAX,CAAmB,IAAnB,EAAyB,EAAzB,EAA6BA,OAA7B,CAAqC,YAArC,EAAmD,EAAnD,CAAP,yEAAiE,IAAjE;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"string.js","names":["trimQuotes","s","length","slice"],"sources":["../../../src/ios/utils/string.ts"],"sourcesContent":["export function trimQuotes(s: string): string {\n return s && s[0] === '\"' && s[s.length - 1] === '\"' ? s.slice(1, -1) : s;\n}\n"],"mappings":";;;;;;;AAAO,SAASA,UAAT,CAAoBC,CAApB,EAAuC;EAC5C,OAAOA,CAAC,IAAIA,CAAC,CAAC,CAAD,CAAD,KAAS,GAAd,IAAqBA,CAAC,CAACA,CAAC,CAACC,MAAF,GAAW,CAAZ,CAAD,KAAoB,GAAzC,GAA+CD,CAAC,CAACE,KAAF,CAAQ,CAAR,EAAW,CAAC,CAAZ,CAA/C,GAAgEF,CAAvE;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"android-plugins.js","names":["createAndroidManifestPlugin","action","name","withUnknown","config","withAndroidManifest","modResults","Object","defineProperty","value","createStringsXmlPlugin","withStringsXml","withMod","platform","mod","withAndroidColors","withAndroidColorsNight","withAndroidStyles","withMainActivity","withMainApplication","withProjectBuildGradle","withAppBuildGradle","withSettingsGradle","withGradleProperties"],"sources":["../../src/plugins/android-plugins.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin, Mod } from '../Plugin.types';\nimport { Manifest, Paths, Properties, Resources } from '../android';\nimport { withMod } from './withMod';\n\ntype OptionalPromise<T> = T | Promise<T>;\n\ntype MutateDataAction<T> = (expo: ExpoConfig, data: T) => OptionalPromise<T>;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createAndroidManifestPlugin(\n action: MutateDataAction<Manifest.AndroidManifest>,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withAndroidManifest(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createStringsXmlPlugin(\n action: MutateDataAction<Resources.ResourceXML>,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withStringsXml(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AndroidManifest.xml for modification.\n *\n * @param config\n * @param action\n */\nexport const withAndroidManifest: ConfigPlugin<Mod<Manifest.AndroidManifest>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'manifest',\n action,\n });\n};\n\n/**\n * Provides the strings.xml for modification.\n *\n * @param config\n * @param action\n */\nexport const withStringsXml: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'strings',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values/colors.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidColors: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'colors',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values-night/colors.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidColorsNight: ConfigPlugin<Mod<Resources.ResourceXML>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'colorsNight',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values/styles.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidStyles: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'styles',\n action,\n });\n};\n\n/**\n * Provides the project MainActivity for modification.\n *\n * @param config\n * @param action\n */\nexport const withMainActivity: ConfigPlugin<Mod<Paths.ApplicationProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'mainActivity',\n action,\n });\n};\n\n/**\n * Provides the project MainApplication for modification.\n *\n * @param config\n * @param action\n */\nexport const withMainApplication: ConfigPlugin<Mod<Paths.ApplicationProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'mainApplication',\n action,\n });\n};\n\n/**\n * Provides the project /build.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withProjectBuildGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'projectBuildGradle',\n action,\n });\n};\n\n/**\n * Provides the app/build.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppBuildGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'appBuildGradle',\n action,\n });\n};\n\n/**\n * Provides the /settings.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withSettingsGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'settingsGradle',\n action,\n });\n};\n\n/**\n * Provides the /gradle.properties for modification.\n *\n * @param config\n * @param action\n */\nexport const withGradleProperties: ConfigPlugin<Mod<Properties.PropertiesItem[]>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'gradleProperties',\n action,\n });\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"createBaseMod.js","names":["debug","Debug","createBaseMod","methodName","platform","modName","getFilePath","read","write","isIntrospective","withUnknown","config","_props","props","withBaseMod","mod","skipEmptyMod","saveToInternal","isProvider","action","modRequest","nextMod","results","filePath","modResults","assertModResults","error","message","Object","defineProperty","value","platformName","ensuredResults","mods","Error","JSON","stringify","upperFirst","name","charAt","toUpperCase","slice","createPlatformBaseMod","provider","withGeneratedBaseMods","providers","entries","reduce","baseMod"],"sources":["../../src/plugins/createBaseMod.ts"],"sourcesContent":["import Debug from 'debug';\n\nimport {\n ConfigPlugin,\n ExportedConfig,\n ExportedConfigWithProps,\n ModPlatform,\n} from '../Plugin.types';\nimport { BaseModOptions, withBaseMod } from './withMod';\n\nconst debug = Debug('expo:config-plugins:base-mods');\n\nexport type ForwardedBaseModOptions = Partial<\n Pick<BaseModOptions, 'saveToInternal' | 'skipEmptyMod'>\n>;\n\nexport type BaseModProviderMethods<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions\n> = {\n getFilePath: (config: ExportedConfigWithProps<ModType>, props: Props) => Promise<string> | string;\n read: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<ModType> | ModType;\n write: (\n filePath: string,\n config: ExportedConfigWithProps<ModType>,\n props: Props\n ) => Promise<void> | void;\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\nexport type CreateBaseModProps<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions\n> = {\n methodName: string;\n platform: ModPlatform;\n modName: string;\n} & BaseModProviderMethods<ModType, Props>;\n\nexport function createBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions\n>({\n methodName,\n platform,\n modName,\n getFilePath,\n read,\n write,\n isIntrospective,\n}: CreateBaseModProps<ModType, Props>): ConfigPlugin<Props | void> {\n const withUnknown: ConfigPlugin<Props | void> = (config, _props) => {\n const props = _props || ({} as Props);\n return withBaseMod<ModType>(config, {\n platform,\n mod: modName,\n skipEmptyMod: props.skipEmptyMod ?? true,\n saveToInternal: props.saveToInternal ?? false,\n isProvider: true,\n isIntrospective,\n async action({ modRequest: { nextMod, ...modRequest }, ...config }) {\n try {\n let results: ExportedConfigWithProps<ModType> = {\n ...config,\n modRequest,\n };\n\n const filePath = await getFilePath(results, props);\n debug(`mods.${platform}.${modName}: file path: ${filePath || '[skipped]'}`);\n const modResults = await read(filePath, results, props);\n\n results = await nextMod!({\n ...results,\n modResults,\n modRequest,\n });\n\n assertModResults(results, modRequest.platform, modRequest.modName);\n\n await write(filePath, results, props);\n return results;\n } catch (error: any) {\n error.message = `[${platform}.${modName}]: ${methodName}: ${error.message}`;\n throw error;\n }\n },\n });\n };\n\n if (methodName) {\n Object.defineProperty(withUnknown, 'name', {\n value: methodName,\n });\n }\n\n return withUnknown;\n}\n\nexport function assertModResults(results: any, platformName: string, modName: string) {\n // If the results came from a mod, they'd be in the form of [config, data].\n // Ensure the results are an array and omit the data since it should've been written by a data provider plugin.\n const ensuredResults = results;\n\n // Sanity check to help locate non compliant mods.\n if (!ensuredResults || typeof ensuredResults !== 'object' || !ensuredResults?.mods) {\n throw new Error(\n `Mod \\`mods.${platformName}.${modName}\\` evaluated to an object that is not a valid project config. Instead got: ${JSON.stringify(\n ensuredResults\n )}`\n );\n }\n return ensuredResults;\n}\n\nfunction upperFirst(name: string): string {\n return name.charAt(0).toUpperCase() + name.slice(1);\n}\n\nexport function createPlatformBaseMod<\n ModType,\n Props extends ForwardedBaseModOptions = ForwardedBaseModOptions\n>({ modName, ...props }: Omit<CreateBaseModProps<ModType, Props>, 'methodName'>) {\n // Generate the function name to ensure it's uniform and also to improve stack traces.\n const methodName = `with${upperFirst(props.platform)}${upperFirst(modName)}BaseMod`;\n return createBaseMod<ModType, Props>({\n methodName,\n modName,\n ...props,\n });\n}\n\n/** A TS wrapper for creating provides */\nexport function provider<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>(\n props: BaseModProviderMethods<ModType, Props>\n) {\n return props;\n}\n\n/** Plugin to create and append base mods from file providers */\nexport function withGeneratedBaseMods<ModName extends string>(\n config: ExportedConfig,\n {\n platform,\n providers,\n ...props\n }: ForwardedBaseModOptions & {\n platform: ModPlatform;\n providers: Partial<Record<ModName, BaseModProviderMethods<any, any>>>;\n }\n): ExportedConfig {\n return Object.entries(providers).reduce((config, [modName, value]) => {\n const baseMod = createPlatformBaseMod({ platform, modName, ...(value as any) });\n return baseMod(config, props);\n }, config);\n}\n"],"mappings":"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"}
|
|
@@ -11,6 +11,11 @@ declare type MutateInfoPlistAction = (expo: ExpoConfig, infoPlist: InfoPlist) =>
|
|
|
11
11
|
* @param action
|
|
12
12
|
*/
|
|
13
13
|
export declare function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin;
|
|
14
|
+
export declare function createInfoPlistPluginWithPropertyGuard(action: MutateInfoPlistAction, settings: {
|
|
15
|
+
infoPlistProperty: string;
|
|
16
|
+
expoConfigProperty: string;
|
|
17
|
+
expoPropertyGetter?: (config: ExpoConfig) => string;
|
|
18
|
+
}, name?: string): ConfigPlugin;
|
|
14
19
|
declare type MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;
|
|
15
20
|
/**
|
|
16
21
|
* Helper method for creating mods from existing config functions.
|
|
@@ -5,8 +5,29 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createEntitlementsPlugin = createEntitlementsPlugin;
|
|
7
7
|
exports.createInfoPlistPlugin = createInfoPlistPlugin;
|
|
8
|
+
exports.createInfoPlistPluginWithPropertyGuard = createInfoPlistPluginWithPropertyGuard;
|
|
8
9
|
exports.withXcodeProject = exports.withPodfileProperties = exports.withInfoPlist = exports.withExpoPlist = exports.withEntitlementsPlist = exports.withAppDelegate = void 0;
|
|
9
10
|
|
|
11
|
+
function _obj() {
|
|
12
|
+
const data = require("../utils/obj");
|
|
13
|
+
|
|
14
|
+
_obj = function () {
|
|
15
|
+
return data;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return data;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function _warnings() {
|
|
22
|
+
const data = require("../utils/warnings");
|
|
23
|
+
|
|
24
|
+
_warnings = function () {
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return data;
|
|
29
|
+
}
|
|
30
|
+
|
|
10
31
|
function _withMod() {
|
|
11
32
|
const data = require("./withMod");
|
|
12
33
|
|
|
@@ -37,6 +58,31 @@ function createInfoPlistPlugin(action, name) {
|
|
|
37
58
|
return withUnknown;
|
|
38
59
|
}
|
|
39
60
|
|
|
61
|
+
function createInfoPlistPluginWithPropertyGuard(action, settings, name) {
|
|
62
|
+
const withUnknown = config => withInfoPlist(config, async config => {
|
|
63
|
+
var _config$modRawConfig$, _config$modRawConfig$2;
|
|
64
|
+
|
|
65
|
+
const existingProperty = settings.expoPropertyGetter ? settings.expoPropertyGetter(config) : (0, _obj().get)(config, settings.expoConfigProperty); // If the user explicitly sets a value in the infoPlist, we should respect that.
|
|
66
|
+
|
|
67
|
+
if (((_config$modRawConfig$ = config.modRawConfig.ios) === null || _config$modRawConfig$ === void 0 ? void 0 : (_config$modRawConfig$2 = _config$modRawConfig$.infoPlist) === null || _config$modRawConfig$2 === void 0 ? void 0 : _config$modRawConfig$2[settings.infoPlistProperty]) === undefined) {
|
|
68
|
+
config.modResults = await action(config, config.modResults);
|
|
69
|
+
} else if (existingProperty !== undefined) {
|
|
70
|
+
// Only warn if there is a conflict.
|
|
71
|
+
(0, _warnings().addWarningIOS)(settings.expoConfigProperty, `"ios.infoPlist.${settings.infoPlistProperty}" is set in the config. Ignoring abstract property "${settings.expoConfigProperty}": ${existingProperty}`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return config;
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
if (name) {
|
|
78
|
+
Object.defineProperty(withUnknown, 'name', {
|
|
79
|
+
value: name
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return withUnknown;
|
|
84
|
+
}
|
|
85
|
+
|
|
40
86
|
/**
|
|
41
87
|
* Helper method for creating mods from existing config functions.
|
|
42
88
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"ios-plugins.js","names":["createInfoPlistPlugin","action","name","withUnknown","config","withInfoPlist","modResults","Object","defineProperty","value","createInfoPlistPluginWithPropertyGuard","settings","existingProperty","expoPropertyGetter","get","expoConfigProperty","modRawConfig","ios","infoPlist","infoPlistProperty","undefined","addWarningIOS","createEntitlementsPlugin","withEntitlementsPlist","withAppDelegate","withMod","platform","mod","entitlements","withExpoPlist","withXcodeProject","withPodfileProperties"],"sources":["../../src/plugins/ios-plugins.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config-types';\nimport type { JSONObject } from '@expo/json-file';\nimport type { XcodeProject } from 'xcode';\n\nimport type { ConfigPlugin, Mod } from '../Plugin.types';\nimport type { ExpoPlist, InfoPlist } from '../ios/IosConfig.types';\nimport type { AppDelegateProjectFile } from '../ios/Paths';\nimport { get } from '../utils/obj';\nimport { addWarningIOS } from '../utils/warnings';\nimport { withMod } from './withMod';\n\ntype MutateInfoPlistAction = (\n expo: ExpoConfig,\n infoPlist: InfoPlist\n) => Promise<InfoPlist> | InfoPlist;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createInfoPlistPlugin(action: MutateInfoPlistAction, name?: string): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createInfoPlistPluginWithPropertyGuard(\n action: MutateInfoPlistAction,\n settings: {\n infoPlistProperty: string;\n expoConfigProperty: string;\n expoPropertyGetter?: (config: ExpoConfig) => string;\n },\n name?: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withInfoPlist(config, async (config) => {\n const existingProperty = settings.expoPropertyGetter\n ? settings.expoPropertyGetter(config)\n : get(config, settings.expoConfigProperty);\n // If the user explicitly sets a value in the infoPlist, we should respect that.\n if (config.modRawConfig.ios?.infoPlist?.[settings.infoPlistProperty] === undefined) {\n config.modResults = await action(config, config.modResults);\n } else if (existingProperty !== undefined) {\n // Only warn if there is a conflict.\n addWarningIOS(\n settings.expoConfigProperty,\n `\"ios.infoPlist.${settings.infoPlistProperty}\" is set in the config. Ignoring abstract property \"${settings.expoConfigProperty}\": ${existingProperty}`\n );\n }\n\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\ntype MutateEntitlementsPlistAction = (expo: ExpoConfig, entitlements: JSONObject) => JSONObject;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createEntitlementsPlugin(\n action: MutateEntitlementsPlistAction,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withEntitlementsPlist(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AppDelegate file for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppDelegate: ConfigPlugin<Mod<AppDelegateProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'appDelegate',\n action,\n });\n};\n\n/**\n * Provides the Info.plist file for modification.\n * Keeps the config's expo.ios.infoPlist object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withInfoPlist: ConfigPlugin<Mod<InfoPlist>> = (config, action) => {\n return withMod<InfoPlist>(config, {\n platform: 'ios',\n mod: 'infoPlist',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.infoPlist = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the main .entitlements file for modification.\n * Keeps the config's expo.ios.entitlements object in sync with the data.\n *\n * @param config\n * @param action\n */\nexport const withEntitlementsPlist: ConfigPlugin<Mod<JSONObject>> = (config, action) => {\n return withMod<JSONObject>(config, {\n platform: 'ios',\n mod: 'entitlements',\n async action(config) {\n config = await action(config);\n if (!config.ios) {\n config.ios = {};\n }\n config.ios.entitlements = config.modResults;\n return config;\n },\n });\n};\n\n/**\n * Provides the Expo.plist for modification.\n *\n * @param config\n * @param action\n */\nexport const withExpoPlist: ConfigPlugin<Mod<ExpoPlist>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'expoPlist',\n action,\n });\n};\n\n/**\n * Provides the main .xcodeproj for modification.\n *\n * @param config\n * @param action\n */\nexport const withXcodeProject: ConfigPlugin<Mod<XcodeProject>> = (config, action) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'xcodeproj',\n action,\n });\n};\n\n/**\n * Provides the Podfile.properties.json for modification.\n *\n * @param config\n * @param action\n */\nexport const withPodfileProperties: ConfigPlugin<Mod<Record<string, string>>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'ios',\n mod: 'podfileProperties',\n action,\n });\n};\n"],"mappings":"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"}
|
|
@@ -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"}
|