1{"version":3,"file":"Paths.js","names":["ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","globSync","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getLanguage","filePath","extension","path","extname","getFileInfo","normalize","contents","readFileSync","language","getAppDelegate","getSourceRoot","appDelegate","dirname","findSchemePaths","findSchemeNames","schemePaths","map","schemePath","parse","name","getAllXcodeProjectPaths","iosFolder","pbxprojPaths","filter","project","test","sort","a","b","isAInIos","isBInIos","value","join","getXcodeProjectPath","getAllPBXProjectPaths","projectPaths","paths","existsSync","getPBXProjectPath","getAllInfoPlistPaths","getInfoPlistPath","getAllEntitlementsPaths","getEntitlementsPath","Entitlements","getSupportingPath","resolve","basename","getExpoPlistPath","supportingPath","usingPath","relative","extraPaths","v","addWarningIOS","JSON","stringify"],"sources":["../../src/ios/Paths.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\nimport * as Entitlements from './Entitlements';\n\nconst ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];\n\ninterface ProjectFile<L extends string = string> {\n path: string;\n language: L;\n contents: string;\n}\n\ntype AppleLanguage = 'objc' | 'objcpp' | 'swift';\n\nexport type AppDelegateProjectFile = ProjectFile<AppleLanguage>;\n\nexport function getAppDelegateHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(\n `Could not locate a valid AppDelegate header at root: \"${projectRoot}\"`\n );\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-header',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.@(m|mm|swift)', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate',\n fileName: 'AppDelegate',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAppDelegateObjcHeaderFilePath(projectRoot: string): string {\n const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n\n if (!using) {\n throw new UnexpectedError(`Could not locate a valid AppDelegate.h at root: \"${projectRoot}\"`);\n }\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'app-delegate-objc-header',\n fileName: 'AppDelegate.h',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nfunction getLanguage(filePath: string): AppleLanguage {\n const extension = path.extname(filePath);\n switch (extension) {\n case '.mm':\n return 'objcpp';\n case '.m':\n case '.h':\n return 'objc';\n case '.swift':\n return 'swift';\n default:\n throw new UnexpectedError(`Unexpected iOS file extension: ${extension}`);\n }\n}\n\nexport function getFileInfo(filePath: string) {\n return {\n path: path.normalize(filePath),\n contents: readFileSync(filePath, 'utf8'),\n language: getLanguage(filePath),\n };\n}\n\nexport function getAppDelegate(projectRoot: string): AppDelegateProjectFile {\n const filePath = getAppDelegateFilePath(projectRoot);\n return getFileInfo(filePath);\n}\n\nexport function getSourceRoot(projectRoot: string): string {\n const appDelegate = getAppDelegate(projectRoot);\n return path.dirname(appDelegate.path);\n}\n\nexport function findSchemePaths(projectRoot: string): string[] {\n return globSync('ios/*.xcodeproj/xcshareddata/xcschemes/*.xcscheme', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n}\n\nexport function findSchemeNames(projectRoot: string): string[] {\n const schemePaths = findSchemePaths(projectRoot);\n return schemePaths.map((schemePath) => path.parse(schemePath).name);\n}\n\nexport function getAllXcodeProjectPaths(projectRoot: string): string[] {\n const iosFolder = 'ios';\n const pbxprojPaths = globSync('ios/**/*.xcodeproj', { cwd: projectRoot, ignore: ignoredPaths })\n .filter(\n (project) => !/test|example|sample/i.test(project) || path.dirname(project) === iosFolder\n )\n // sort alphabetically to ensure this works the same across different devices (Fail in CI (linux) without this)\n .sort()\n .sort((a, b) => {\n const isAInIos = path.dirname(a) === iosFolder;\n const isBInIos = path.dirname(b) === iosFolder;\n // preserve previous sort order\n if ((isAInIos && isBInIos) || (!isAInIos && !isBInIos)) {\n return 0;\n }\n return isAInIos ? -1 : 1;\n });\n\n if (!pbxprojPaths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj files relative to path \"${projectRoot}\".`\n );\n }\n return pbxprojPaths.map((value) => path.join(projectRoot, value));\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getXcodeProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllXcodeProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'xcodeproj',\n fileName: '*.xcodeproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllPBXProjectPaths(projectRoot: string): string[] {\n const projectPaths = getAllXcodeProjectPaths(projectRoot);\n const paths = projectPaths\n .map((value) => path.join(value, 'project.pbxproj'))\n .filter((value) => existsSync(value));\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate the ios/*.xcodeproj/project.pbxproj files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getPBXProjectPath(projectRoot: string): string {\n const [using, ...extra] = getAllPBXProjectPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'project-pbxproj',\n fileName: 'project.pbxproj',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllInfoPlistPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/Info.plist', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n }).sort(\n // longer name means more suffixes, we want the shortest possible one to be first.\n (a, b) => a.length - b.length\n );\n\n if (!paths.length) {\n throw new UnexpectedError(\n `Failed to locate Info.plist files relative to path \"${projectRoot}\".`\n );\n }\n return paths;\n}\n\nexport function getInfoPlistPath(projectRoot: string): string {\n const [using, ...extra] = getAllInfoPlistPaths(projectRoot);\n\n if (extra.length) {\n warnMultipleFiles({\n tag: 'info-plist',\n fileName: 'Info.plist',\n projectRoot,\n using,\n extra,\n });\n }\n\n return using;\n}\n\nexport function getAllEntitlementsPaths(projectRoot: string): string[] {\n const paths = globSync('ios/*/*.entitlements', {\n absolute: true,\n cwd: projectRoot,\n ignore: ignoredPaths,\n });\n return paths;\n}\n\n/**\n * @deprecated: use Entitlements.getEntitlementsPath instead\n */\nexport function getEntitlementsPath(projectRoot: string): string | null {\n return Entitlements.getEntitlementsPath(projectRoot);\n}\n\nexport function getSupportingPath(projectRoot: string): string {\n return path.resolve(projectRoot, 'ios', path.basename(getSourceRoot(projectRoot)), 'Supporting');\n}\n\nexport function getExpoPlistPath(projectRoot: string): string {\n const supportingPath = getSupportingPath(projectRoot);\n return path.join(supportingPath, 'Expo.plist');\n}\n\nfunction warnMultipleFiles({\n tag,\n fileName,\n projectRoot,\n using,\n extra,\n}: {\n tag: string;\n fileName: string;\n projectRoot?: string;\n using: string;\n extra: string[];\n}) {\n const usingPath = projectRoot ? path.relative(projectRoot, using) : using;\n const extraPaths = projectRoot ? extra.map((v) => path.relative(projectRoot, v)) : extra;\n addWarningIOS(\n `paths-${tag}`,\n `Found multiple ${fileName} file paths, using \"${usingPath}\". Ignored paths: ${JSON.stringify(\n extraPaths\n )}`\n );\n}\n"],"mappings":"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"}