1{"version":3,"file":"Entitlements.js","names":["withAssociatedDomains","createEntitlementsPlugin","setAssociatedDomains","config","_","entitlementsPlist","ios","associatedDomains","getEntitlementsPath","projectRoot","targetName","buildConfiguration","project","getPbxproj","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","entitlementsPath","getEntitlementsPathFromBuildConfiguration","fs","existsSync","entitlementsPathRaw","buildSettings","CODE_SIGN_ENTITLEMENTS","path","normalize","join","trimQuotes","ensureApplicationTargetEntitlementsFileConfigured","projectName","getProjectName","productName","getProductName","applicationTarget","findFirstNativeTarget","buildConfigurations","getBuildConfigurationsForListId","buildConfigurationList","hasChangesToWrite","oldEntitlementPath","entitlementsRelativePath","slash","mkdirSync","dirname","recursive","writeFileSync","ENTITLEMENTS_TEMPLATE","filepath","writeSync"],"sources":["../../src/ios/Entitlements.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\nimport slash from 'slash';\nimport { XCBuildConfiguration } from 'xcode';\n\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport {\n getBuildConfigurationsForListId,\n getPbxproj,\n getProductName,\n getProjectName,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: JSONObject\n): JSONObject {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n const project = getPbxproj(projectRoot);\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n const entitlementsPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n return entitlementsPath && fs.existsSync(entitlementsPath) ? entitlementsPath : null;\n}\n\nfunction getEntitlementsPathFromBuildConfiguration(\n projectRoot: string,\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const entitlementsPathRaw = xcBuildConfiguration?.buildSettings?.CODE_SIGN_ENTITLEMENTS as\n | string\n | undefined;\n if (entitlementsPathRaw) {\n return path.normalize(path.join(projectRoot, 'ios', trimQuotes(entitlementsPathRaw)));\n } else {\n return null;\n }\n}\n\nexport function ensureApplicationTargetEntitlementsFileConfigured(projectRoot: string): void {\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n const [, applicationTarget] = findFirstNativeTarget(project);\n const buildConfigurations = getBuildConfigurationsForListId(\n project,\n applicationTarget.buildConfigurationList\n );\n let hasChangesToWrite = false;\n for (const [, xcBuildConfiguration] of buildConfigurations) {\n const oldEntitlementPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n if (oldEntitlementPath && fs.existsSync(oldEntitlementPath)) {\n return;\n }\n hasChangesToWrite = true;\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = path.normalize(\n path.join(projectRoot, 'ios', entitlementsRelativePath)\n );\n fs.mkdirSync(path.dirname(entitlementsPath), { recursive: true });\n if (!fs.existsSync(entitlementsPath)) {\n fs.writeFileSync(entitlementsPath, ENTITLEMENTS_TEMPLATE);\n }\n xcBuildConfiguration.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;\n }\n if (hasChangesToWrite) {\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n`;\n"],"mappings":"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"}