1{"version":3,"file":"Target.js","names":["_BuildScheme","data","require","_Xcodeproj","_string","TargetType","exports","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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"}