1{"version":3,"file":"Paths.js","names":["ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","globSync","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getLanguage","filePath","extension","path","extname","getFileInfo","normalize","contents","readFileSync","language","getAppDelegate","getSourceRoot","appDelegate","dirname","findSchemePaths","findSchemeNames","schemePaths","map","schemePath","parse","name","getAllXcodeProjectPaths","iosFolder","pbxprojPaths","filter","project","test","sort","a","b","isAInIos","isBInIos","value","join","getXcodeProjectPath","getAllPBXProjectPaths","projectPaths","paths","existsSync","getPBXProjectPath","getAllInfoPlistPaths","getInfoPlistPath","getAllEntitlementsPaths","getEntitlementsPath","Entitlements","getSupportingPath","resolve","basename","getExpoPlistPath","supportingPath","usingPath","relative","extraPaths","v","addWarningIOS","JSON","stringify"],"sources":["../../src/ios/Paths.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'fs';\nimport { sync as globSync } from 'glob';\nimport * as path from 'path';\n\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\nimport * as Entitlements from './Entitlements';\n\nconst ignoredPaths = ['**/@(Carthage|Pods|vendor|node_modules)/**'];\n\ninterface ProjectFile<L extends string = string> {\n  path: string;\n  language: L;\n  contents: string;\n}\n\ntype AppleLanguage = 'objc' | 'objcpp' | 'swift';\n\nexport type AppDelegateProjectFile = ProjectFile<AppleLanguage>;\n\nexport function getAppDelegateHeaderFilePath(projectRoot: string): string {\n  const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n    absolute: true,\n    cwd: projectRoot,\n    ignore: ignoredPaths,\n  });\n\n  if (!using) {\n    throw new UnexpectedError(\n      `Could not locate a valid AppDelegate header at root: \"${projectRoot}\"`\n    );\n  }\n\n  if (extra.length) {\n    warnMultipleFiles({\n      tag: 'app-delegate-header',\n      fileName: 'AppDelegate',\n      projectRoot,\n      using,\n      extra,\n    });\n  }\n\n  return using;\n}\n\nexport function getAppDelegateFilePath(projectRoot: string): string {\n  const [using, ...extra] = globSync('ios/*/AppDelegate.@(m|mm|swift)', {\n    absolute: true,\n    cwd: projectRoot,\n    ignore: ignoredPaths,\n  });\n\n  if (!using) {\n    throw new UnexpectedError(`Could not locate a valid AppDelegate at root: \"${projectRoot}\"`);\n  }\n\n  if (extra.length) {\n    warnMultipleFiles({\n      tag: 'app-delegate',\n      fileName: 'AppDelegate',\n      projectRoot,\n      using,\n      extra,\n    });\n  }\n\n  return using;\n}\n\nexport function getAppDelegateObjcHeaderFilePath(projectRoot: string): string {\n  const [using, ...extra] = globSync('ios/*/AppDelegate.h', {\n    absolute: true,\n    cwd: projectRoot,\n    ignore: ignoredPaths,\n  });\n\n  if (!using) {\n    throw new UnexpectedError(`Could not locate a valid AppDelegate.h at root: \"${projectRoot}\"`);\n  }\n\n  if (extra.length) {\n    warnMultipleFiles({\n      tag: 'app-delegate-objc-header',\n      fileName: 'AppDelegate.h',\n      projectRoot,\n      using,\n      extra,\n    });\n  }\n\n  return using;\n}\n\nfunction getLanguage(filePath: string): AppleLanguage {\n  const extension = path.extname(filePath);\n  switch (extension) {\n    case '.mm':\n      return 'objcpp';\n    case '.m':\n    case '.h':\n      return 'objc';\n    case '.swift':\n      return 'swift';\n    default:\n      throw new UnexpectedError(`Unexpected iOS file extension: ${extension}`);\n  }\n}\n\nexport function getFileInfo(filePath: string) {\n  return {\n    path: path.normalize(filePath),\n    contents: readFileSync(filePath, 'utf8'),\n    language: getLanguage(filePath),\n  };\n}\n\nexport function getAppDelegate(projectRoot: string): AppDelegateProjectFile {\n  const filePath = getAppDelegateFilePath(projectRoot);\n  return getFileInfo(filePath);\n}\n\nexport function getSourceRoot(projectRoot: string): string {\n  const appDelegate = getAppDelegate(projectRoot);\n  return path.dirname(appDelegate.path);\n}\n\nexport function findSchemePaths(projectRoot: string): string[] {\n  return globSync('ios/*.xcodeproj/xcshareddata/xcschemes/*.xcscheme', {\n    absolute: true,\n    cwd: projectRoot,\n    ignore: ignoredPaths,\n  });\n}\n\nexport function findSchemeNames(projectRoot: string): string[] {\n  const schemePaths = findSchemePaths(projectRoot);\n  return schemePaths.map((schemePath) => path.parse(schemePath).name);\n}\n\nexport function getAllXcodeProjectPaths(projectRoot: string): string[] {\n  const iosFolder = 'ios';\n  const pbxprojPaths = globSync('ios/**/*.xcodeproj', { cwd: projectRoot, ignore: ignoredPaths })\n    .filter(\n      (project) => !/test|example|sample/i.test(project) || path.dirname(project) === iosFolder\n    )\n    // sort alphabetically to ensure this works the same across different devices (Fail in CI (linux) without this)\n    .sort()\n    .sort((a, b) => {\n      const isAInIos = path.dirname(a) === iosFolder;\n      const isBInIos = path.dirname(b) === iosFolder;\n      // preserve previous sort order\n      if ((isAInIos && isBInIos) || (!isAInIos && !isBInIos)) {\n        return 0;\n      }\n      return isAInIos ? -1 : 1;\n    });\n\n  if (!pbxprojPaths.length) {\n    throw new UnexpectedError(\n      `Failed to locate the ios/*.xcodeproj files relative to path \"${projectRoot}\".`\n    );\n  }\n  return pbxprojPaths.map((value) => path.join(projectRoot, value));\n}\n\n/**\n * Get the pbxproj for the given path\n */\nexport function getXcodeProjectPath(projectRoot: string): string {\n  const [using, ...extra] = getAllXcodeProjectPaths(projectRoot);\n\n  if (extra.length) {\n    warnMultipleFiles({\n      tag: 'xcodeproj',\n      fileName: '*.xcodeproj',\n      projectRoot,\n      using,\n      extra,\n    });\n  }\n\n  return using;\n}\n\nexport function getAllPBXProjectPaths(projectRoot: string): string[] {\n  const projectPaths = getAllXcodeProjectPaths(projectRoot);\n  const paths = projectPaths\n    .map((value) => path.join(value, 'project.pbxproj'))\n    .filter((value) => existsSync(value));\n\n  if (!paths.length) {\n    throw new UnexpectedError(\n      `Failed to locate the ios/*.xcodeproj/project.pbxproj files relative to path \"${projectRoot}\".`\n    );\n  }\n  return paths;\n}\n\nexport function getPBXProjectPath(projectRoot: string): string {\n  const [using, ...extra] = getAllPBXProjectPaths(projectRoot);\n\n  if (extra.length) {\n    warnMultipleFiles({\n      tag: 'project-pbxproj',\n      fileName: 'project.pbxproj',\n      projectRoot,\n      using,\n      extra,\n    });\n  }\n\n  return using;\n}\n\nexport function getAllInfoPlistPaths(projectRoot: string): string[] {\n  const paths = globSync('ios/*/Info.plist', {\n    absolute: true,\n    cwd: projectRoot,\n    ignore: ignoredPaths,\n  }).sort(\n    // longer name means more suffixes, we want the shortest possible one to be first.\n    (a, b) => a.length - b.length\n  );\n\n  if (!paths.length) {\n    throw new UnexpectedError(\n      `Failed to locate Info.plist files relative to path \"${projectRoot}\".`\n    );\n  }\n  return paths;\n}\n\nexport function getInfoPlistPath(projectRoot: string): string {\n  const [using, ...extra] = getAllInfoPlistPaths(projectRoot);\n\n  if (extra.length) {\n    warnMultipleFiles({\n      tag: 'info-plist',\n      fileName: 'Info.plist',\n      projectRoot,\n      using,\n      extra,\n    });\n  }\n\n  return using;\n}\n\nexport function getAllEntitlementsPaths(projectRoot: string): string[] {\n  const paths = globSync('ios/*/*.entitlements', {\n    absolute: true,\n    cwd: projectRoot,\n    ignore: ignoredPaths,\n  });\n  return paths;\n}\n\n/**\n * @deprecated: use Entitlements.getEntitlementsPath instead\n */\nexport function getEntitlementsPath(projectRoot: string): string | null {\n  return Entitlements.getEntitlementsPath(projectRoot);\n}\n\nexport function getSupportingPath(projectRoot: string): string {\n  return path.resolve(projectRoot, 'ios', path.basename(getSourceRoot(projectRoot)), 'Supporting');\n}\n\nexport function getExpoPlistPath(projectRoot: string): string {\n  const supportingPath = getSupportingPath(projectRoot);\n  return path.join(supportingPath, 'Expo.plist');\n}\n\nfunction warnMultipleFiles({\n  tag,\n  fileName,\n  projectRoot,\n  using,\n  extra,\n}: {\n  tag: string;\n  fileName: string;\n  projectRoot?: string;\n  using: string;\n  extra: string[];\n}) {\n  const usingPath = projectRoot ? path.relative(projectRoot, using) : using;\n  const extraPaths = projectRoot ? extra.map((v) => path.relative(projectRoot, v)) : extra;\n  addWarningIOS(\n    `paths-${tag}`,\n    `Found multiple ${fileName} file paths, using \"${usingPath}\". Ignored paths: ${JSON.stringify(\n      extraPaths\n    )}`\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAA+C;AAAA;AAE/C,MAAMA,YAAY,GAAG,CAAC,4CAA4C,CAAC;AAY5D,SAASC,4BAA4B,CAACC,WAAmB,EAAU;EACxE,MAAM,CAACC,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,IAAAC,YAAQ,EAAC,qBAAqB,EAAE;IACxDC,QAAQ,EAAE,IAAI;IACdC,GAAG,EAAEL,WAAW;IAChBM,MAAM,EAAER;EACV,CAAC,CAAC;EAEF,IAAI,CAACG,KAAK,EAAE;IACV,MAAM,KAAIM,yBAAe,EACtB,yDAAwDP,WAAY,GAAE,CACxE;EACH;EAEA,IAAIE,KAAK,CAACM,MAAM,EAAE;IAChBC,iBAAiB,CAAC;MAChBC,GAAG,EAAE,qBAAqB;MAC1BC,QAAQ,EAAE,aAAa;MACvBX,WAAW;MACXC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOD,KAAK;AACd;AAEO,SAASW,sBAAsB,CAACZ,WAAmB,EAAU;EAClE,MAAM,CAACC,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,IAAAC,YAAQ,EAAC,iCAAiC,EAAE;IACpEC,QAAQ,EAAE,IAAI;IACdC,GAAG,EAAEL,WAAW;IAChBM,MAAM,EAAER;EACV,CAAC,CAAC;EAEF,IAAI,CAACG,KAAK,EAAE;IACV,MAAM,KAAIM,yBAAe,EAAE,kDAAiDP,WAAY,GAAE,CAAC;EAC7F;EAEA,IAAIE,KAAK,CAACM,MAAM,EAAE;IAChBC,iBAAiB,CAAC;MAChBC,GAAG,EAAE,cAAc;MACnBC,QAAQ,EAAE,aAAa;MACvBX,WAAW;MACXC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOD,KAAK;AACd;AAEO,SAASY,gCAAgC,CAACb,WAAmB,EAAU;EAC5E,MAAM,CAACC,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG,IAAAC,YAAQ,EAAC,qBAAqB,EAAE;IACxDC,QAAQ,EAAE,IAAI;IACdC,GAAG,EAAEL,WAAW;IAChBM,MAAM,EAAER;EACV,CAAC,CAAC;EAEF,IAAI,CAACG,KAAK,EAAE;IACV,MAAM,KAAIM,yBAAe,EAAE,oDAAmDP,WAAY,GAAE,CAAC;EAC/F;EAEA,IAAIE,KAAK,CAACM,MAAM,EAAE;IAChBC,iBAAiB,CAAC;MAChBC,GAAG,EAAE,0BAA0B;MAC/BC,QAAQ,EAAE,eAAe;MACzBX,WAAW;MACXC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOD,KAAK;AACd;AAEA,SAASa,WAAW,CAACC,QAAgB,EAAiB;EACpD,MAAMC,SAAS,GAAGC,IAAI,GAACC,OAAO,CAACH,QAAQ,CAAC;EACxC,QAAQC,SAAS;IACf,KAAK,KAAK;MACR,OAAO,QAAQ;IACjB,KAAK,IAAI;IACT,KAAK,IAAI;MACP,OAAO,MAAM;IACf,KAAK,QAAQ;MACX,OAAO,OAAO;IAChB;MACE,MAAM,KAAIT,yBAAe,EAAE,kCAAiCS,SAAU,EAAC,CAAC;EAAC;AAE/E;AAEO,SAASG,WAAW,CAACJ,QAAgB,EAAE;EAC5C,OAAO;IACLE,IAAI,EAAEA,IAAI,GAACG,SAAS,CAACL,QAAQ,CAAC;IAC9BM,QAAQ,EAAE,IAAAC,kBAAY,EAACP,QAAQ,EAAE,MAAM,CAAC;IACxCQ,QAAQ,EAAET,WAAW,CAACC,QAAQ;EAChC,CAAC;AACH;AAEO,SAASS,cAAc,CAACxB,WAAmB,EAA0B;EAC1E,MAAMe,QAAQ,GAAGH,sBAAsB,CAACZ,WAAW,CAAC;EACpD,OAAOmB,WAAW,CAACJ,QAAQ,CAAC;AAC9B;AAEO,SAASU,aAAa,CAACzB,WAAmB,EAAU;EACzD,MAAM0B,WAAW,GAAGF,cAAc,CAACxB,WAAW,CAAC;EAC/C,OAAOiB,IAAI,GAACU,OAAO,CAACD,WAAW,CAACT,IAAI,CAAC;AACvC;AAEO,SAASW,eAAe,CAAC5B,WAAmB,EAAY;EAC7D,OAAO,IAAAG,YAAQ,EAAC,mDAAmD,EAAE;IACnEC,QAAQ,EAAE,IAAI;IACdC,GAAG,EAAEL,WAAW;IAChBM,MAAM,EAAER;EACV,CAAC,CAAC;AACJ;AAEO,SAAS+B,eAAe,CAAC7B,WAAmB,EAAY;EAC7D,MAAM8B,WAAW,GAAGF,eAAe,CAAC5B,WAAW,CAAC;EAChD,OAAO8B,WAAW,CAACC,GAAG,CAAEC,UAAU,IAAKf,IAAI,GAACgB,KAAK,CAACD,UAAU,CAAC,CAACE,IAAI,CAAC;AACrE;AAEO,SAASC,uBAAuB,CAACnC,WAAmB,EAAY;EACrE,MAAMoC,SAAS,GAAG,KAAK;EACvB,MAAMC,YAAY,GAAG,IAAAlC,YAAQ,EAAC,oBAAoB,EAAE;IAAEE,GAAG,EAAEL,WAAW;IAAEM,MAAM,EAAER;EAAa,CAAC,CAAC,CAC5FwC,MAAM,CACJC,OAAO,IAAK,CAAC,sBAAsB,CAACC,IAAI,CAACD,OAAO,CAAC,IAAItB,IAAI,GAACU,OAAO,CAACY,OAAO,CAAC,KAAKH,SAAS;EAE3F;EAAA,CACCK,IAAI,EAAE,CACNA,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;IACd,MAAMC,QAAQ,GAAG3B,IAAI,GAACU,OAAO,CAACe,CAAC,CAAC,KAAKN,SAAS;IAC9C,MAAMS,QAAQ,GAAG5B,IAAI,GAACU,OAAO,CAACgB,CAAC,CAAC,KAAKP,SAAS;IAC9C;IACA,IAAKQ,QAAQ,IAAIC,QAAQ,IAAM,CAACD,QAAQ,IAAI,CAACC,QAAS,EAAE;MACtD,OAAO,CAAC;IACV;IACA,OAAOD,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC;EAC1B,CAAC,CAAC;EAEJ,IAAI,CAACP,YAAY,CAAC7B,MAAM,EAAE;IACxB,MAAM,KAAID,yBAAe,EACtB,gEAA+DP,WAAY,IAAG,CAChF;EACH;EACA,OAAOqC,YAAY,CAACN,GAAG,CAAEe,KAAK,IAAK7B,IAAI,GAAC8B,IAAI,CAAC/C,WAAW,EAAE8C,KAAK,CAAC,CAAC;AACnE;;AAEA;AACA;AACA;AACO,SAASE,mBAAmB,CAAChD,WAAmB,EAAU;EAC/D,MAAM,CAACC,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAGiC,uBAAuB,CAACnC,WAAW,CAAC;EAE9D,IAAIE,KAAK,CAACM,MAAM,EAAE;IAChBC,iBAAiB,CAAC;MAChBC,GAAG,EAAE,WAAW;MAChBC,QAAQ,EAAE,aAAa;MACvBX,WAAW;MACXC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOD,KAAK;AACd;AAEO,SAASgD,qBAAqB,CAACjD,WAAmB,EAAY;EACnE,MAAMkD,YAAY,GAAGf,uBAAuB,CAACnC,WAAW,CAAC;EACzD,MAAMmD,KAAK,GAAGD,YAAY,CACvBnB,GAAG,CAAEe,KAAK,IAAK7B,IAAI,GAAC8B,IAAI,CAACD,KAAK,EAAE,iBAAiB,CAAC,CAAC,CACnDR,MAAM,CAAEQ,KAAK,IAAK,IAAAM,gBAAU,EAACN,KAAK,CAAC,CAAC;EAEvC,IAAI,CAACK,KAAK,CAAC3C,MAAM,EAAE;IACjB,MAAM,KAAID,yBAAe,EACtB,gFAA+EP,WAAY,IAAG,CAChG;EACH;EACA,OAAOmD,KAAK;AACd;AAEO,SAASE,iBAAiB,CAACrD,WAAmB,EAAU;EAC7D,MAAM,CAACC,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAG+C,qBAAqB,CAACjD,WAAW,CAAC;EAE5D,IAAIE,KAAK,CAACM,MAAM,EAAE;IAChBC,iBAAiB,CAAC;MAChBC,GAAG,EAAE,iBAAiB;MACtBC,QAAQ,EAAE,iBAAiB;MAC3BX,WAAW;MACXC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOD,KAAK;AACd;AAEO,SAASqD,oBAAoB,CAACtD,WAAmB,EAAY;EAClE,MAAMmD,KAAK,GAAG,IAAAhD,YAAQ,EAAC,kBAAkB,EAAE;IACzCC,QAAQ,EAAE,IAAI;IACdC,GAAG,EAAEL,WAAW;IAChBM,MAAM,EAAER;EACV,CAAC,CAAC,CAAC2C,IAAI;EACL;EACA,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAClC,MAAM,GAAGmC,CAAC,CAACnC,MAAM,CAC9B;EAED,IAAI,CAAC2C,KAAK,CAAC3C,MAAM,EAAE;IACjB,MAAM,KAAID,yBAAe,EACtB,uDAAsDP,WAAY,IAAG,CACvE;EACH;EACA,OAAOmD,KAAK;AACd;AAEO,SAASI,gBAAgB,CAACvD,WAAmB,EAAU;EAC5D,MAAM,CAACC,KAAK,EAAE,GAAGC,KAAK,CAAC,GAAGoD,oBAAoB,CAACtD,WAAW,CAAC;EAE3D,IAAIE,KAAK,CAACM,MAAM,EAAE;IAChBC,iBAAiB,CAAC;MAChBC,GAAG,EAAE,YAAY;MACjBC,QAAQ,EAAE,YAAY;MACtBX,WAAW;MACXC,KAAK;MACLC;IACF,CAAC,CAAC;EACJ;EAEA,OAAOD,KAAK;AACd;AAEO,SAASuD,uBAAuB,CAACxD,WAAmB,EAAY;EACrE,MAAMmD,KAAK,GAAG,IAAAhD,YAAQ,EAAC,sBAAsB,EAAE;IAC7CC,QAAQ,EAAE,IAAI;IACdC,GAAG,EAAEL,WAAW;IAChBM,MAAM,EAAER;EACV,CAAC,CAAC;EACF,OAAOqD,KAAK;AACd;;AAEA;AACA;AACA;AACO,SAASM,mBAAmB,CAACzD,WAAmB,EAAiB;EACtE,OAAO0D,YAAY,GAACD,mBAAmB,CAACzD,WAAW,CAAC;AACtD;AAEO,SAAS2D,iBAAiB,CAAC3D,WAAmB,EAAU;EAC7D,OAAOiB,IAAI,GAAC2C,OAAO,CAAC5D,WAAW,EAAE,KAAK,EAAEiB,IAAI,GAAC4C,QAAQ,CAACpC,aAAa,CAACzB,WAAW,CAAC,CAAC,EAAE,YAAY,CAAC;AAClG;AAEO,SAAS8D,gBAAgB,CAAC9D,WAAmB,EAAU;EAC5D,MAAM+D,cAAc,GAAGJ,iBAAiB,CAAC3D,WAAW,CAAC;EACrD,OAAOiB,IAAI,GAAC8B,IAAI,CAACgB,cAAc,EAAE,YAAY,CAAC;AAChD;AAEA,SAAStD,iBAAiB,CAAC;EACzBC,GAAG;EACHC,QAAQ;EACRX,WAAW;EACXC,KAAK;EACLC;AAOF,CAAC,EAAE;EACD,MAAM8D,SAAS,GAAGhE,WAAW,GAAGiB,IAAI,GAACgD,QAAQ,CAACjE,WAAW,EAAEC,KAAK,CAAC,GAAGA,KAAK;EACzE,MAAMiE,UAAU,GAAGlE,WAAW,GAAGE,KAAK,CAAC6B,GAAG,CAAEoC,CAAC,IAAKlD,IAAI,GAACgD,QAAQ,CAACjE,WAAW,EAAEmE,CAAC,CAAC,CAAC,GAAGjE,KAAK;EACxF,IAAAkE,yBAAa,EACV,SAAQ1D,GAAI,EAAC,EACb,kBAAiBC,QAAS,uBAAsBqD,SAAU,qBAAoBK,IAAI,CAACC,SAAS,CAC3FJ,UAAU,CACV,EAAC,CACJ;AACH"}