1{"version":3,"file":"Name.js","names":["withDisplayName","createInfoPlistPluginWithPropertyGuard","setDisplayName","infoPlistProperty","expoConfigProperty","withName","setName","withProductName","config","withXcodeProject","modResults","setProductName","getName","name","configOrName","CFBundleDisplayName","infoPlist","CFBundleName","project","sanitizedName","quotedName","ensureQuotes","nativeTarget","findFirstNativeTarget","getBuildConfigurationsForListId","buildConfigurationList","forEach","item","buildSettings","PRODUCT_NAME","value","match"],"sources":["../../src/ios/Name.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { createInfoPlistPluginWithPropertyGuard, withXcodeProject } from '../plugins/ios-plugins';\nimport { InfoPlist } from './IosConfig.types';\nimport { findFirstNativeTarget } from './Target';\nimport {\n  ConfigurationSectionEntry,\n  getBuildConfigurationsForListId,\n  sanitizedName,\n} from './utils/Xcodeproj';\n\nexport const withDisplayName = createInfoPlistPluginWithPropertyGuard(\n  setDisplayName,\n  {\n    infoPlistProperty: 'CFBundleDisplayName',\n    expoConfigProperty: 'name',\n  },\n  'withDisplayName'\n);\n\nexport const withName = createInfoPlistPluginWithPropertyGuard(\n  setName,\n  {\n    infoPlistProperty: 'CFBundleName',\n    expoConfigProperty: 'name',\n  },\n  'withName'\n);\n\n/** Set the PRODUCT_NAME variable in the xcproj file based on the app.json name property. */\nexport const withProductName: ConfigPlugin = (config) => {\n  return withXcodeProject(config, (config) => {\n    config.modResults = setProductName(config, config.modResults);\n    return config;\n  });\n};\n\nexport function getName(config: Pick<ExpoConfig, 'name'>) {\n  return typeof config.name === 'string' ? config.name : null;\n}\n\n/**\n * CFBundleDisplayName is used for most things: the name on the home screen, in\n * notifications, and others.\n */\nexport function setDisplayName(\n  configOrName: Pick<ExpoConfig, 'name'> | string,\n  { CFBundleDisplayName, ...infoPlist }: InfoPlist\n): InfoPlist {\n  let name: string | null = null;\n  if (typeof configOrName === 'string') {\n    name = configOrName;\n  } else {\n    name = getName(configOrName);\n  }\n\n  if (!name) {\n    return infoPlist;\n  }\n\n  return {\n    ...infoPlist,\n    CFBundleDisplayName: name,\n  };\n}\n\n/**\n * CFBundleName is recommended to be 16 chars or less and is used in lists, eg:\n * sometimes on the App Store\n */\nexport function setName(\n  config: Pick<ExpoConfig, 'name'>,\n  { CFBundleName, ...infoPlist }: InfoPlist\n): InfoPlist {\n  const name = getName(config);\n\n  if (!name) {\n    return infoPlist;\n  }\n\n  return {\n    ...infoPlist,\n    CFBundleName: name,\n  };\n}\n\nexport function setProductName(\n  config: Pick<ExpoConfig, 'name'>,\n  project: XcodeProject\n): XcodeProject {\n  const name = sanitizedName(getName(config) ?? '');\n\n  if (!name) {\n    return project;\n  }\n  const quotedName = ensureQuotes(name);\n\n  const [, nativeTarget] = findFirstNativeTarget(project);\n\n  getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList).forEach(\n    ([, item]: ConfigurationSectionEntry) => {\n      item.buildSettings.PRODUCT_NAME = quotedName;\n    }\n  );\n\n  return project;\n}\n\nconst ensureQuotes = (value: string) => {\n  if (!value.match(/^['\"]/)) {\n    return `\"${value}\"`;\n  }\n  return value;\n};\n"],"mappings":";;;;;;;;;;;AAIA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAMO,MAAMA,eAAe,GAAG,IAAAC,oDAAA,EAC7BC,cAD6B,EAE7B;EACEC,iBAAiB,EAAE,qBADrB;EAEEC,kBAAkB,EAAE;AAFtB,CAF6B,EAM7B,iBAN6B,CAAxB;;AASA,MAAMC,QAAQ,GAAG,IAAAJ,oDAAA,EACtBK,OADsB,EAEtB;EACEH,iBAAiB,EAAE,cADrB;EAEEC,kBAAkB,EAAE;AAFtB,CAFsB,EAMtB,UANsB,CAAjB;AASP;;;;AACO,MAAMG,eAA6B,GAAIC,MAAD,IAAY;EACvD,OAAO,IAAAC,8BAAA,EAAiBD,MAAjB,EAA0BA,MAAD,IAAY;IAC1CA,MAAM,CAACE,UAAP,GAAoBC,cAAc,CAACH,MAAD,EAASA,MAAM,CAACE,UAAhB,CAAlC;IACA,OAAOF,MAAP;EACD,CAHM,CAAP;AAID,CALM;;;;AAOA,SAASI,OAAT,CAAiBJ,MAAjB,EAAmD;EACxD,OAAO,OAAOA,MAAM,CAACK,IAAd,KAAuB,QAAvB,GAAkCL,MAAM,CAACK,IAAzC,GAAgD,IAAvD;AACD;AAED;AACA;AACA;AACA;;;AACO,SAASX,cAAT,CACLY,YADK,EAEL;EAAEC,mBAAF;EAAuB,GAAGC;AAA1B,CAFK,EAGM;EACX,IAAIH,IAAmB,GAAG,IAA1B;;EACA,IAAI,OAAOC,YAAP,KAAwB,QAA5B,EAAsC;IACpCD,IAAI,GAAGC,YAAP;EACD,CAFD,MAEO;IACLD,IAAI,GAAGD,OAAO,CAACE,YAAD,CAAd;EACD;;EAED,IAAI,CAACD,IAAL,EAAW;IACT,OAAOG,SAAP;EACD;;EAED,OAAO,EACL,GAAGA,SADE;IAELD,mBAAmB,EAAEF;EAFhB,CAAP;AAID;AAED;AACA;AACA;AACA;;;AACO,SAASP,OAAT,CACLE,MADK,EAEL;EAAES,YAAF;EAAgB,GAAGD;AAAnB,CAFK,EAGM;EACX,MAAMH,IAAI,GAAGD,OAAO,CAACJ,MAAD,CAApB;;EAEA,IAAI,CAACK,IAAL,EAAW;IACT,OAAOG,SAAP;EACD;;EAED,OAAO,EACL,GAAGA,SADE;IAELC,YAAY,EAAEJ;EAFT,CAAP;AAID;;AAEM,SAASF,cAAT,CACLH,MADK,EAELU,OAFK,EAGS;EAAA;;EACd,MAAML,IAAI,GAAG,IAAAM,0BAAA,cAAcP,OAAO,CAACJ,MAAD,CAArB,+CAAiC,EAAjC,CAAb;;EAEA,IAAI,CAACK,IAAL,EAAW;IACT,OAAOK,OAAP;EACD;;EACD,MAAME,UAAU,GAAGC,YAAY,CAACR,IAAD,CAA/B;EAEA,MAAM,GAAGS,YAAH,IAAmB,IAAAC,+BAAA,EAAsBL,OAAtB,CAAzB;EAEA,IAAAM,4CAAA,EAAgCN,OAAhC,EAAyCI,YAAY,CAACG,sBAAtD,EAA8EC,OAA9E,CACE,CAAC,GAAGC,IAAH,CAAD,KAAyC;IACvCA,IAAI,CAACC,aAAL,CAAmBC,YAAnB,GAAkCT,UAAlC;EACD,CAHH;EAMA,OAAOF,OAAP;AACD;;AAED,MAAMG,YAAY,GAAIS,KAAD,IAAmB;EACtC,IAAI,CAACA,KAAK,CAACC,KAAN,CAAY,OAAZ,CAAL,EAA2B;IACzB,OAAQ,IAAGD,KAAM,GAAjB;EACD;;EACD,OAAOA,KAAP;AACD,CALD"}