1{"version":3,"file":"Target.js","names":["TargetType","getXCBuildConfigurationFromPbxproj","project","targetName","buildConfiguration","nativeTarget","findNativeTargetByName","findFirstNativeTarget","xcBuildConfiguration","getBuildConfigurationForListIdAndName","configurationListId","buildConfigurationList","findApplicationTargetWithDependenciesAsync","projectRoot","scheme","applicationTargetName","getApplicationTargetNameForSchemeAsync","getPbxproj","applicationTarget","dependencies","getTargetDependencies","name","trimQuotes","type","APPLICATION","parentTarget","length","undefined","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","targetType","productType","getNativeTargets","section","pbxNativeTargetSection","Object","entries","filter","isNotComment","findSignableTargets","targets","signableTargetTypes","APP_CLIP","WATCH","STICKER_PACK_EXTENSION","applicationTargets","Error","nativeTargets","nativeTargetEntry","find","i","key"],"sources":["../../src/ios/Target.ts"],"sourcesContent":["import { PBXNativeTarget, PBXTargetDependency, XCBuildConfiguration, XcodeProject } from 'xcode';\n\nimport { getApplicationTargetNameForSchemeAsync } from './BuildScheme';\nimport {\n getBuildConfigurationForListIdAndName,\n getPbxproj,\n isNotComment,\n NativeTargetSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport enum TargetType {\n APPLICATION = 'com.apple.product-type.application',\n EXTENSION = 'com.apple.product-type.app-extension',\n WATCH = 'com.apple.product-type.application.watchapp',\n APP_CLIP = 'com.apple.product-type.application.on-demand-install-capable',\n STICKER_PACK_EXTENSION = 'com.apple.product-type.app-extension.messages-sticker-pack',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n dependencies?: Target[];\n}\n\nexport function getXCBuildConfigurationFromPbxproj(\n project: XcodeProject,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): XCBuildConfiguration | null {\n const [, nativeTarget] = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [, xcBuildConfiguration] = getBuildConfigurationForListIdAndName(project, {\n configurationListId: nativeTarget.buildConfigurationList,\n buildConfiguration,\n });\n return xcBuildConfiguration ?? null;\n}\n\nexport async function findApplicationTargetWithDependenciesAsync(\n projectRoot: string,\n scheme: string\n): Promise<Target> {\n const applicationTargetName = await getApplicationTargetNameForSchemeAsync(projectRoot, scheme);\n const project = getPbxproj(projectRoot);\n const [, applicationTarget] = findNativeTargetByName(project, applicationTargetName);\n const dependencies = getTargetDependencies(project, applicationTarget);\n return {\n name: trimQuotes(applicationTarget.name),\n type: TargetType.APPLICATION,\n dependencies,\n };\n}\n\nfunction getTargetDependencies(\n project: XcodeProject,\n parentTarget: PBXNativeTarget\n): Target[] | undefined {\n if (!parentTarget.dependencies || parentTarget.dependencies.length === 0) {\n return undefined;\n }\n return parentTarget.dependencies.map(({ value }) => {\n const { target: targetId } = project.getPBXGroupByKeyAndType(\n value,\n 'PBXTargetDependency'\n ) as PBXTargetDependency;\n\n const [, target] = findNativeTargetById(project, targetId);\n\n const type = isTargetOfType(target, TargetType.EXTENSION)\n ? TargetType.EXTENSION\n : TargetType.OTHER;\n return {\n name: trimQuotes(target.name),\n type,\n dependencies: getTargetDependencies(project, target),\n };\n });\n}\n\nexport function isTargetOfType(target: PBXNativeTarget, targetType: TargetType): boolean {\n return trimQuotes(target.productType) === targetType;\n}\n\nexport function getNativeTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const section = project.pbxNativeTargetSection();\n return Object.entries(section).filter(isNotComment);\n}\n\nexport function findSignableTargets(project: XcodeProject): NativeTargetSectionEntry[] {\n const targets = getNativeTargets(project);\n\n const signableTargetTypes = [\n TargetType.APPLICATION,\n TargetType.APP_CLIP,\n TargetType.EXTENSION,\n TargetType.WATCH,\n TargetType.STICKER_PACK_EXTENSION,\n ];\n\n const applicationTargets = targets.filter(([, target]) => {\n for (const targetType of signableTargetTypes) {\n if (isTargetOfType(target, targetType)) {\n return true;\n }\n }\n return false;\n });\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any signable targets in project.pbxproj`);\n }\n return applicationTargets;\n}\n\nexport function findFirstNativeTarget(project: XcodeProject): NativeTargetSectionEntry {\n const targets = getNativeTargets(project);\n const applicationTargets = targets.filter(([, target]) =>\n isTargetOfType(target, TargetType.APPLICATION)\n );\n if (applicationTargets.length === 0) {\n throw new Error(`Could not find any application target in project.pbxproj`);\n }\n return applicationTargets[0];\n}\n\nexport function findNativeTargetByName(\n project: XcodeProject,\n targetName: string\n): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([, i]) => trimQuotes(i.name) === targetName);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target '${targetName}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n\nfunction findNativeTargetById(project: XcodeProject, targetId: string): NativeTargetSectionEntry {\n const nativeTargets = getNativeTargets(project);\n const nativeTargetEntry = nativeTargets.find(([key]) => key === targetId);\n if (!nativeTargetEntry) {\n throw new Error(`Could not find target with id '${targetId}' in project.pbxproj`);\n }\n return nativeTargetEntry;\n}\n"],"mappings":"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"}