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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"}