@expo/config-plugins 7.7.0 → 7.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/build/android/BuildProperties.js.map +1 -1
  2. package/build/android/Colors.js.map +1 -1
  3. package/build/android/EasBuild.js.map +1 -1
  4. package/build/android/GoogleMapsApiKey.js.map +1 -1
  5. package/build/android/GoogleServices.js.map +1 -1
  6. package/build/android/IntentFilters.js.map +1 -1
  7. package/build/android/Manifest.js.map +1 -1
  8. package/build/android/Name.js.map +1 -1
  9. package/build/android/Orientation.js.map +1 -1
  10. package/build/android/Package.js.map +1 -1
  11. package/build/android/Paths.js.map +1 -1
  12. package/build/android/Permissions.js.map +1 -1
  13. package/build/android/PrimaryColor.js.map +1 -1
  14. package/build/android/Properties.js.map +1 -1
  15. package/build/android/Resources.js.map +1 -1
  16. package/build/android/Scheme.js.map +1 -1
  17. package/build/android/StatusBar.js.map +1 -1
  18. package/build/android/Strings.js.map +1 -1
  19. package/build/android/Updates.d.ts +1 -0
  20. package/build/android/Updates.js +4 -0
  21. package/build/android/Updates.js.map +1 -1
  22. package/build/android/Version.js.map +1 -1
  23. package/build/ios/Bitcode.js.map +1 -1
  24. package/build/ios/BuildProperties.js.map +1 -1
  25. package/build/ios/BuildScheme.js.map +1 -1
  26. package/build/ios/BundleIdentifier.js +21 -17
  27. package/build/ios/BundleIdentifier.js.map +1 -1
  28. package/build/ios/DeviceFamily.js.map +1 -1
  29. package/build/ios/Entitlements.js.map +1 -1
  30. package/build/ios/Google.js.map +1 -1
  31. package/build/ios/Locales.js.map +1 -1
  32. package/build/ios/Maps.js +0 -1
  33. package/build/ios/Maps.js.map +1 -1
  34. package/build/ios/Name.js.map +1 -1
  35. package/build/ios/Orientation.js.map +1 -1
  36. package/build/ios/Paths.js.map +1 -1
  37. package/build/ios/ProvisioningProfile.js.map +1 -1
  38. package/build/ios/RequiresFullScreen.js.map +1 -1
  39. package/build/ios/Scheme.js.map +1 -1
  40. package/build/ios/Swift.js.map +1 -1
  41. package/build/ios/Target.js.map +1 -1
  42. package/build/ios/Updates.js.map +1 -1
  43. package/build/ios/UsesNonExemptEncryption.js.map +1 -1
  44. package/build/ios/Version.js.map +1 -1
  45. package/build/ios/codeMod.js.map +1 -1
  46. package/build/ios/utils/Xcodeproj.d.ts +7 -0
  47. package/build/ios/utils/Xcodeproj.js +89 -0
  48. package/build/ios/utils/Xcodeproj.js.map +1 -1
  49. package/build/plugins/createBaseMod.js.map +1 -1
  50. package/build/plugins/ios-plugins.js.map +1 -1
  51. package/build/plugins/mod-compiler.js.map +1 -1
  52. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  53. package/build/plugins/withIosBaseMods.js.map +1 -1
  54. package/build/plugins/withMod.js.map +1 -1
  55. package/build/plugins/withPlugins.js.map +1 -1
  56. package/build/plugins/withStaticPlugin.js.map +1 -1
  57. package/build/utils/Updates.js.map +1 -1
  58. package/build/utils/XML.js.map +1 -1
  59. package/build/utils/errors.js +3 -6
  60. package/build/utils/errors.js.map +1 -1
  61. package/build/utils/generateCode.js +2 -2
  62. package/build/utils/generateCode.js.map +1 -1
  63. package/build/utils/matchBrackets.js.map +1 -1
  64. package/build/utils/modules.js.map +1 -1
  65. package/build/utils/obj.js.map +1 -1
  66. package/build/utils/plugin-resolver.js.map +1 -1
  67. package/build/utils/sortObject.js.map +1 -1
  68. package/package.json +13 -11
@@ -1 +1 @@
1
- {"version":3,"file":"Paths.js","names":["_fs","data","require","_glob","path","_interopRequireWildcard","Entitlements","_errors","_warnings","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","globSync","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getLanguage","filePath","extension","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","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 * as Entitlements from './Entitlements';\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\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":"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"}
1
+ {"version":3,"file":"Paths.js","names":["_fs","data","require","_glob","path","_interopRequireWildcard","Entitlements","_errors","_warnings","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ignoredPaths","getAppDelegateHeaderFilePath","projectRoot","using","extra","globSync","absolute","cwd","ignore","UnexpectedError","length","warnMultipleFiles","tag","fileName","getAppDelegateFilePath","getAppDelegateObjcHeaderFilePath","getLanguage","filePath","extension","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","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 * as Entitlements from './Entitlements';\nimport { UnexpectedError } from '../utils/errors';\nimport { addWarningIOS } from '../utils/warnings';\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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProvisioningProfile.js","names":["_fs","data","_interopRequireDefault","require","_Target","_Xcodeproj","_string","obj","__esModule","default","setProvisioningProfileForPbxproj","projectRoot","targetName","profileName","appleTeamId","buildConfiguration","project","getPbxproj","nativeTargetEntry","findNativeTargetByName","findFirstNativeTarget","nativeTargetId","nativeTarget","quotedAppleTeamId","ensureQuotes","getBuildConfigurationsForListId","buildConfigurationList","filter","item","trimQuotes","name","forEach","buildSettings","PROVISIONING_PROFILE_SPECIFIER","DEVELOPMENT_TEAM","CODE_SIGN_IDENTITY","CODE_SIGN_STYLE","Object","entries","getProjectSection","isNotComment","attributes","TargetAttributes","DevelopmentTeam","ProvisioningStyle","fs","writeFileSync","filepath","writeSync","value","match"],"sources":["../../src/ios/ProvisioningProfile.ts"],"sourcesContent":["import fs from 'fs';\n\nimport { findFirstNativeTarget, findNativeTargetByName } from './Target';\nimport {\n ConfigurationSectionEntry,\n getBuildConfigurationsForListId,\n getPbxproj,\n getProjectSection,\n isNotComment,\n ProjectSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\ntype ProvisioningProfileSettings = {\n targetName?: string;\n appleTeamId: string;\n profileName: string;\n buildConfiguration?: string;\n};\n\nexport function setProvisioningProfileForPbxproj(\n projectRoot: string,\n {\n targetName,\n profileName,\n appleTeamId,\n buildConfiguration = 'Release',\n }: ProvisioningProfileSettings\n): void {\n const project = getPbxproj(projectRoot);\n\n const nativeTargetEntry = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [nativeTargetId, nativeTarget] = nativeTargetEntry;\n\n const quotedAppleTeamId = ensureQuotes(appleTeamId);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList)\n .filter(([, item]: ConfigurationSectionEntry) => trimQuotes(item.name) === buildConfiguration)\n .forEach(([, item]: ConfigurationSectionEntry) => {\n item.buildSettings.PROVISIONING_PROFILE_SPECIFIER = `\"${profileName}\"`;\n item.buildSettings.DEVELOPMENT_TEAM = quotedAppleTeamId;\n item.buildSettings.CODE_SIGN_IDENTITY = '\"iPhone Distribution\"';\n item.buildSettings.CODE_SIGN_STYLE = 'Manual';\n });\n\n Object.entries(getProjectSection(project))\n .filter(isNotComment)\n .forEach(([, item]: ProjectSectionEntry) => {\n if (!item.attributes.TargetAttributes[nativeTargetId]) {\n item.attributes.TargetAttributes[nativeTargetId] = {};\n }\n item.attributes.TargetAttributes[nativeTargetId].DevelopmentTeam = quotedAppleTeamId;\n item.attributes.TargetAttributes[nativeTargetId].ProvisioningStyle = 'Manual';\n });\n\n fs.writeFileSync(project.filepath, project.writeSync());\n}\n\nconst ensureQuotes = (value: string) => {\n if (!value.match(/^['\"]/)) {\n return `\"${value}\"`;\n }\n return value;\n};\n"],"mappings":";;;;;;AAAA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAG,QAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,WAAA;EAAA,MAAAJ,IAAA,GAAAE,OAAA;EAAAE,UAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAQA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4C,SAAAC,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AASrC,SAASG,gCAAgCA,CAC9CC,WAAmB,EACnB;EACEC,UAAU;EACVC,WAAW;EACXC,WAAW;EACXC,kBAAkB,GAAG;AACM,CAAC,EACxB;EACN,MAAMC,OAAO,GAAG,IAAAC,uBAAU,EAACN,WAAW,CAAC;EAEvC,MAAMO,iBAAiB,GAAGN,UAAU,GAChC,IAAAO,gCAAsB,EAACH,OAAO,EAAEJ,UAAU,CAAC,GAC3C,IAAAQ,+BAAqB,EAACJ,OAAO,CAAC;EAClC,MAAM,CAACK,cAAc,EAAEC,YAAY,CAAC,GAAGJ,iBAAiB;EAExD,MAAMK,iBAAiB,GAAGC,YAAY,CAACV,WAAW,CAAC;EAEnD,IAAAW,4CAA+B,EAACT,OAAO,EAAEM,YAAY,CAACI,sBAAsB,CAAC,CAC1EC,MAAM,CAAC,CAAC,GAAGC,IAAI,CAA4B,KAAK,IAAAC,oBAAU,EAACD,IAAI,CAACE,IAAI,CAAC,KAAKf,kBAAkB,CAAC,CAC7FgB,OAAO,CAAC,CAAC,GAAGH,IAAI,CAA4B,KAAK;IAChDA,IAAI,CAACI,aAAa,CAACC,8BAA8B,GAAI,IAAGpB,WAAY,GAAE;IACtEe,IAAI,CAACI,aAAa,CAACE,gBAAgB,GAAGX,iBAAiB;IACvDK,IAAI,CAACI,aAAa,CAACG,kBAAkB,GAAG,uBAAuB;IAC/DP,IAAI,CAACI,aAAa,CAACI,eAAe,GAAG,QAAQ;EAC/C,CAAC,CAAC;EAEJC,MAAM,CAACC,OAAO,CAAC,IAAAC,8BAAiB,EAACvB,OAAO,CAAC,CAAC,CACvCW,MAAM,CAACa,yBAAY,CAAC,CACpBT,OAAO,CAAC,CAAC,GAAGH,IAAI,CAAsB,KAAK;IAC1C,IAAI,CAACA,IAAI,CAACa,UAAU,CAACC,gBAAgB,CAACrB,cAAc,CAAC,EAAE;MACrDO,IAAI,CAACa,UAAU,CAACC,gBAAgB,CAACrB,cAAc,CAAC,GAAG,CAAC,CAAC;IACvD;IACAO,IAAI,CAACa,UAAU,CAACC,gBAAgB,CAACrB,cAAc,CAAC,CAACsB,eAAe,GAAGpB,iBAAiB;IACpFK,IAAI,CAACa,UAAU,CAACC,gBAAgB,CAACrB,cAAc,CAAC,CAACuB,iBAAiB,GAAG,QAAQ;EAC/E,CAAC,CAAC;EAEJC,aAAE,CAACC,aAAa,CAAC9B,OAAO,CAAC+B,QAAQ,EAAE/B,OAAO,CAACgC,SAAS,EAAE,CAAC;AACzD;AAEA,MAAMxB,YAAY,GAAIyB,KAAa,IAAK;EACtC,IAAI,CAACA,KAAK,CAACC,KAAK,CAAC,OAAO,CAAC,EAAE;IACzB,OAAQ,IAAGD,KAAM,GAAE;EACrB;EACA,OAAOA,KAAK;AACd,CAAC"}
1
+ {"version":3,"file":"ProvisioningProfile.js","names":["_fs","data","_interopRequireDefault","require","_Target","_Xcodeproj","_string","obj","__esModule","default","setProvisioningProfileForPbxproj","projectRoot","targetName","profileName","appleTeamId","buildConfiguration","project","getPbxproj","nativeTargetEntry","findNativeTargetByName","findFirstNativeTarget","nativeTargetId","nativeTarget","quotedAppleTeamId","ensureQuotes","getBuildConfigurationsForListId","buildConfigurationList","filter","item","trimQuotes","name","forEach","buildSettings","PROVISIONING_PROFILE_SPECIFIER","DEVELOPMENT_TEAM","CODE_SIGN_IDENTITY","CODE_SIGN_STYLE","Object","entries","getProjectSection","isNotComment","attributes","TargetAttributes","DevelopmentTeam","ProvisioningStyle","fs","writeFileSync","filepath","writeSync","value","match"],"sources":["../../src/ios/ProvisioningProfile.ts"],"sourcesContent":["import fs from 'fs';\n\nimport { findFirstNativeTarget, findNativeTargetByName } from './Target';\nimport {\n ConfigurationSectionEntry,\n getBuildConfigurationsForListId,\n getPbxproj,\n getProjectSection,\n isNotComment,\n ProjectSectionEntry,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\ntype ProvisioningProfileSettings = {\n targetName?: string;\n appleTeamId: string;\n profileName: string;\n buildConfiguration?: string;\n};\n\nexport function setProvisioningProfileForPbxproj(\n projectRoot: string,\n {\n targetName,\n profileName,\n appleTeamId,\n buildConfiguration = 'Release',\n }: ProvisioningProfileSettings\n): void {\n const project = getPbxproj(projectRoot);\n\n const nativeTargetEntry = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [nativeTargetId, nativeTarget] = nativeTargetEntry;\n\n const quotedAppleTeamId = ensureQuotes(appleTeamId);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList)\n .filter(([, item]: ConfigurationSectionEntry) => trimQuotes(item.name) === buildConfiguration)\n .forEach(([, item]: ConfigurationSectionEntry) => {\n item.buildSettings.PROVISIONING_PROFILE_SPECIFIER = `\"${profileName}\"`;\n item.buildSettings.DEVELOPMENT_TEAM = quotedAppleTeamId;\n item.buildSettings.CODE_SIGN_IDENTITY = '\"iPhone Distribution\"';\n item.buildSettings.CODE_SIGN_STYLE = 'Manual';\n });\n\n Object.entries(getProjectSection(project))\n .filter(isNotComment)\n .forEach(([, item]: ProjectSectionEntry) => {\n if (!item.attributes.TargetAttributes[nativeTargetId]) {\n item.attributes.TargetAttributes[nativeTargetId] = {};\n }\n item.attributes.TargetAttributes[nativeTargetId].DevelopmentTeam = quotedAppleTeamId;\n item.attributes.TargetAttributes[nativeTargetId].ProvisioningStyle = 'Manual';\n });\n\n fs.writeFileSync(project.filepath, project.writeSync());\n}\n\nconst ensureQuotes = (value: string) => {\n if (!value.match(/^['\"]/)) {\n return `\"${value}\"`;\n }\n return value;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RequiresFullScreen.js","names":["_iosPlugins","data","require","_versions","_warnings","withRequiresFullScreen","createInfoPlistPlugin","setRequiresFullScreen","exports","getRequiresFullScreen","config","_config$ios","ios","hasOwnProperty","requireFullScreen","gteSdkVersion","iPadInterfaceKey","requiredIPadInterface","isStringArray","value","Array","isArray","every","hasMinimumOrientations","masks","mask","includes","resolveExistingIpadInterfaceOrientations","interfaceOrientations","length","existingList","join","addWarningIOS","infoPlist","requiresFullScreen","existing","Set","concat","UIRequiresFullScreen"],"sources":["../../src/ios/RequiresFullScreen.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPlugin } from '../plugins/ios-plugins';\nimport { gteSdkVersion } from '../utils/versions';\nimport { addWarningIOS } from '../utils/warnings';\n\nexport const withRequiresFullScreen = createInfoPlistPlugin(\n setRequiresFullScreen,\n 'withRequiresFullScreen'\n);\n\n// NOTES: This is defaulted to `true` for now to match the behavior prior to SDK\n// 34, but will change to `false` in SDK +43.\nexport function getRequiresFullScreen(config: Pick<ExpoConfig, 'ios' | 'sdkVersion'>) {\n // Yes, the property is called ios.requireFullScreen, without the s - not \"requires\"\n // This is confusing indeed because the actual property name does have the s\n if (config.ios?.hasOwnProperty('requireFullScreen')) {\n return !!config.ios.requireFullScreen;\n } else {\n // In SDK 43, the `requireFullScreen` default has been changed to false.\n if (\n gteSdkVersion(config, '43.0.0')\n // TODO: Uncomment after SDK 43 is released.\n // || !config.sdkVersion\n ) {\n return false;\n }\n return true;\n }\n}\n\nconst iPadInterfaceKey = 'UISupportedInterfaceOrientations~ipad';\n\nconst requiredIPadInterface = [\n 'UIInterfaceOrientationPortrait',\n 'UIInterfaceOrientationPortraitUpsideDown',\n 'UIInterfaceOrientationLandscapeLeft',\n 'UIInterfaceOrientationLandscapeRight',\n];\n\nfunction isStringArray(value: any): value is string[] {\n return Array.isArray(value) && value.every((value) => typeof value === 'string');\n}\n\nfunction hasMinimumOrientations(masks: string[]): boolean {\n return requiredIPadInterface.every((mask) => masks.includes(mask));\n}\n\n/**\n * Require full screen being disabled requires all ipad interfaces to to be added,\n * otherwise submissions to the iOS App Store will fail.\n *\n * ERROR ITMS-90474: \"Invalid Bundle. iPad Multitasking support requires these orientations: 'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown' in bundle 'com.bacon.app'.\"\n *\n * @param interfaceOrientations\n * @returns\n */\nfunction resolveExistingIpadInterfaceOrientations(interfaceOrientations: any): string[] {\n if (\n // Ensure type.\n isStringArray(interfaceOrientations) &&\n // Don't warn if it's an empty array, this is invalid regardless.\n interfaceOrientations.length &&\n // Check if the minimum requirements are met.\n !hasMinimumOrientations(interfaceOrientations)\n ) {\n const existingList = interfaceOrientations!.join(', ');\n addWarningIOS(\n 'ios.requireFullScreen',\n `iPad multitasking requires all \\`${iPadInterfaceKey}\\` orientations to be defined in the Info.plist. The Info.plist currently defines values that are incompatible with multitasking, these will be overwritten to prevent submission failure. Existing: ${existingList}`\n );\n return interfaceOrientations;\n }\n return [];\n}\n\n// Whether requires full screen on iPad\nexport function setRequiresFullScreen(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist\n): InfoPlist {\n const requiresFullScreen = getRequiresFullScreen(config);\n if (!requiresFullScreen) {\n const existing = resolveExistingIpadInterfaceOrientations(infoPlist[iPadInterfaceKey]);\n\n // There currently exists no mechanism to safely undo this feature besides `npx expo prebuild --clear`,\n // this seems ok though because anyone using `UISupportedInterfaceOrientations~ipad` probably\n // wants them to be defined to this value anyways. This is also the default value used in the Xcode iOS template.\n\n // Merge any previous interfaces with the required interfaces.\n infoPlist[iPadInterfaceKey] = [...new Set(existing.concat(requiredIPadInterface))];\n }\n\n return {\n ...infoPlist,\n UIRequiresFullScreen: requiresFullScreen,\n };\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAMI,sBAAsB,GAAG,IAAAC,mCAAqB,EACzDC,qBAAqB,EACrB,wBAAwB,CACzB;;AAED;AACA;AAAAC,OAAA,CAAAH,sBAAA,GAAAA,sBAAA;AACO,SAASI,qBAAqBA,CAACC,MAA8C,EAAE;EAAA,IAAAC,WAAA;EACpF;EACA;EACA,KAAAA,WAAA,GAAID,MAAM,CAACE,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,cAAc,CAAC,mBAAmB,CAAC,EAAE;IACnD,OAAO,CAAC,CAACH,MAAM,CAACE,GAAG,CAACE,iBAAiB;EACvC,CAAC,MAAM;IACL;IACA,IACE,IAAAC,yBAAa,EAACL,MAAM,EAAE,QAAQ;IAC9B;IACA;IAAA,EACA;MACA,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb;AACF;AAEA,MAAMM,gBAAgB,GAAG,uCAAuC;AAEhE,MAAMC,qBAAqB,GAAG,CAC5B,gCAAgC,EAChC,0CAA0C,EAC1C,qCAAqC,EACrC,sCAAsC,CACvC;AAED,SAASC,aAAaA,CAACC,KAAU,EAAqB;EACpD,OAAOC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,KAAK,CAAEH,KAAK,IAAK,OAAOA,KAAK,KAAK,QAAQ,CAAC;AAClF;AAEA,SAASI,sBAAsBA,CAACC,KAAe,EAAW;EACxD,OAAOP,qBAAqB,CAACK,KAAK,CAAEG,IAAI,IAAKD,KAAK,CAACE,QAAQ,CAACD,IAAI,CAAC,CAAC;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,wCAAwCA,CAACC,qBAA0B,EAAY;EACtF;EACE;EACAV,aAAa,CAACU,qBAAqB,CAAC;EACpC;EACAA,qBAAqB,CAACC,MAAM;EAC5B;EACA,CAACN,sBAAsB,CAACK,qBAAqB,CAAC,EAC9C;IACA,MAAME,YAAY,GAAGF,qBAAqB,CAAEG,IAAI,CAAC,IAAI,CAAC;IACtD,IAAAC,yBAAa,EACX,uBAAuB,EACtB,oCAAmChB,gBAAiB,wMAAuMc,YAAa,EAAC,CAC3Q;IACD,OAAOF,qBAAqB;EAC9B;EACA,OAAO,EAAE;AACX;;AAEA;AACO,SAASrB,qBAAqBA,CACnCG,MAA+B,EAC/BuB,SAAoB,EACT;EACX,MAAMC,kBAAkB,GAAGzB,qBAAqB,CAACC,MAAM,CAAC;EACxD,IAAI,CAACwB,kBAAkB,EAAE;IACvB,MAAMC,QAAQ,GAAGR,wCAAwC,CAACM,SAAS,CAACjB,gBAAgB,CAAC,CAAC;;IAEtF;IACA;IACA;;IAEA;IACAiB,SAAS,CAACjB,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAIoB,GAAG,CAACD,QAAQ,CAACE,MAAM,CAACpB,qBAAqB,CAAC,CAAC,CAAC;EACpF;EAEA,OAAO;IACL,GAAGgB,SAAS;IACZK,oBAAoB,EAAEJ;EACxB,CAAC;AACH"}
1
+ {"version":3,"file":"RequiresFullScreen.js","names":["_iosPlugins","data","require","_versions","_warnings","withRequiresFullScreen","createInfoPlistPlugin","setRequiresFullScreen","exports","getRequiresFullScreen","config","_config$ios","ios","hasOwnProperty","requireFullScreen","gteSdkVersion","iPadInterfaceKey","requiredIPadInterface","isStringArray","value","Array","isArray","every","hasMinimumOrientations","masks","mask","includes","resolveExistingIpadInterfaceOrientations","interfaceOrientations","length","existingList","join","addWarningIOS","infoPlist","requiresFullScreen","existing","Set","concat","UIRequiresFullScreen"],"sources":["../../src/ios/RequiresFullScreen.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPlugin } from '../plugins/ios-plugins';\nimport { gteSdkVersion } from '../utils/versions';\nimport { addWarningIOS } from '../utils/warnings';\n\nexport const withRequiresFullScreen = createInfoPlistPlugin(\n setRequiresFullScreen,\n 'withRequiresFullScreen'\n);\n\n// NOTES: This is defaulted to `true` for now to match the behavior prior to SDK\n// 34, but will change to `false` in SDK +43.\nexport function getRequiresFullScreen(config: Pick<ExpoConfig, 'ios' | 'sdkVersion'>) {\n // Yes, the property is called ios.requireFullScreen, without the s - not \"requires\"\n // This is confusing indeed because the actual property name does have the s\n if (config.ios?.hasOwnProperty('requireFullScreen')) {\n return !!config.ios.requireFullScreen;\n } else {\n // In SDK 43, the `requireFullScreen` default has been changed to false.\n if (\n gteSdkVersion(config, '43.0.0')\n // TODO: Uncomment after SDK 43 is released.\n // || !config.sdkVersion\n ) {\n return false;\n }\n return true;\n }\n}\n\nconst iPadInterfaceKey = 'UISupportedInterfaceOrientations~ipad';\n\nconst requiredIPadInterface = [\n 'UIInterfaceOrientationPortrait',\n 'UIInterfaceOrientationPortraitUpsideDown',\n 'UIInterfaceOrientationLandscapeLeft',\n 'UIInterfaceOrientationLandscapeRight',\n];\n\nfunction isStringArray(value: any): value is string[] {\n return Array.isArray(value) && value.every((value) => typeof value === 'string');\n}\n\nfunction hasMinimumOrientations(masks: string[]): boolean {\n return requiredIPadInterface.every((mask) => masks.includes(mask));\n}\n\n/**\n * Require full screen being disabled requires all ipad interfaces to to be added,\n * otherwise submissions to the iOS App Store will fail.\n *\n * ERROR ITMS-90474: \"Invalid Bundle. iPad Multitasking support requires these orientations: 'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown' in bundle 'com.bacon.app'.\"\n *\n * @param interfaceOrientations\n * @returns\n */\nfunction resolveExistingIpadInterfaceOrientations(interfaceOrientations: any): string[] {\n if (\n // Ensure type.\n isStringArray(interfaceOrientations) &&\n // Don't warn if it's an empty array, this is invalid regardless.\n interfaceOrientations.length &&\n // Check if the minimum requirements are met.\n !hasMinimumOrientations(interfaceOrientations)\n ) {\n const existingList = interfaceOrientations!.join(', ');\n addWarningIOS(\n 'ios.requireFullScreen',\n `iPad multitasking requires all \\`${iPadInterfaceKey}\\` orientations to be defined in the Info.plist. The Info.plist currently defines values that are incompatible with multitasking, these will be overwritten to prevent submission failure. Existing: ${existingList}`\n );\n return interfaceOrientations;\n }\n return [];\n}\n\n// Whether requires full screen on iPad\nexport function setRequiresFullScreen(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist\n): InfoPlist {\n const requiresFullScreen = getRequiresFullScreen(config);\n if (!requiresFullScreen) {\n const existing = resolveExistingIpadInterfaceOrientations(infoPlist[iPadInterfaceKey]);\n\n // There currently exists no mechanism to safely undo this feature besides `npx expo prebuild --clear`,\n // this seems ok though because anyone using `UISupportedInterfaceOrientations~ipad` probably\n // wants them to be defined to this value anyways. This is also the default value used in the Xcode iOS template.\n\n // Merge any previous interfaces with the required interfaces.\n infoPlist[iPadInterfaceKey] = [...new Set(existing.concat(requiredIPadInterface))];\n }\n\n return {\n ...infoPlist,\n UIRequiresFullScreen: requiresFullScreen,\n };\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,UAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,SAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAMI,sBAAsB,GAAG,IAAAC,mCAAqB,EACzDC,qBAAqB,EACrB,wBACF,CAAC;;AAED;AACA;AAAAC,OAAA,CAAAH,sBAAA,GAAAA,sBAAA;AACO,SAASI,qBAAqBA,CAACC,MAA8C,EAAE;EAAA,IAAAC,WAAA;EACpF;EACA;EACA,KAAAA,WAAA,GAAID,MAAM,CAACE,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,cAAc,CAAC,mBAAmB,CAAC,EAAE;IACnD,OAAO,CAAC,CAACH,MAAM,CAACE,GAAG,CAACE,iBAAiB;EACvC,CAAC,MAAM;IACL;IACA,IACE,IAAAC,yBAAa,EAACL,MAAM,EAAE,QAAQ;IAC9B;IACA;IAAA,EACA;MACA,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb;AACF;AAEA,MAAMM,gBAAgB,GAAG,uCAAuC;AAEhE,MAAMC,qBAAqB,GAAG,CAC5B,gCAAgC,EAChC,0CAA0C,EAC1C,qCAAqC,EACrC,sCAAsC,CACvC;AAED,SAASC,aAAaA,CAACC,KAAU,EAAqB;EACpD,OAAOC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,KAAK,CAAEH,KAAK,IAAK,OAAOA,KAAK,KAAK,QAAQ,CAAC;AAClF;AAEA,SAASI,sBAAsBA,CAACC,KAAe,EAAW;EACxD,OAAOP,qBAAqB,CAACK,KAAK,CAAEG,IAAI,IAAKD,KAAK,CAACE,QAAQ,CAACD,IAAI,CAAC,CAAC;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,wCAAwCA,CAACC,qBAA0B,EAAY;EACtF;EACE;EACAV,aAAa,CAACU,qBAAqB,CAAC;EACpC;EACAA,qBAAqB,CAACC,MAAM;EAC5B;EACA,CAACN,sBAAsB,CAACK,qBAAqB,CAAC,EAC9C;IACA,MAAME,YAAY,GAAGF,qBAAqB,CAAEG,IAAI,CAAC,IAAI,CAAC;IACtD,IAAAC,yBAAa,EACX,uBAAuB,EACtB,oCAAmChB,gBAAiB,wMAAuMc,YAAa,EAC3Q,CAAC;IACD,OAAOF,qBAAqB;EAC9B;EACA,OAAO,EAAE;AACX;;AAEA;AACO,SAASrB,qBAAqBA,CACnCG,MAA+B,EAC/BuB,SAAoB,EACT;EACX,MAAMC,kBAAkB,GAAGzB,qBAAqB,CAACC,MAAM,CAAC;EACxD,IAAI,CAACwB,kBAAkB,EAAE;IACvB,MAAMC,QAAQ,GAAGR,wCAAwC,CAACM,SAAS,CAACjB,gBAAgB,CAAC,CAAC;;IAEtF;IACA;IACA;;IAEA;IACAiB,SAAS,CAACjB,gBAAgB,CAAC,GAAG,CAAC,GAAG,IAAIoB,GAAG,CAACD,QAAQ,CAACE,MAAM,CAACpB,qBAAqB,CAAC,CAAC,CAAC;EACpF;EAEA,OAAO;IACL,GAAGgB,SAAS;IACZK,oBAAoB,EAAEJ;EACxB,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"Scheme.js","names":["_iosPlugins","data","require","withScheme","createInfoPlistPluginWithPropertyGuard","setScheme","infoPlistProperty","expoConfigProperty","exports","getScheme","config","Array","isArray","scheme","validate","value","filter","infoPlist","_config$ios","_config$ios2","ios","bundleIdentifier","push","length","CFBundleURLTypes","CFBundleURLSchemes","appendScheme","_infoPlist$CFBundleUR","existingSchemes","some","includes","removeScheme","map","bundleUrlType","index","indexOf","splice","undefined","Boolean","hasScheme","schemes","getSchemesFromPlist","reduce"],"sources":["../../src/ios/Scheme.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist, URLScheme } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withScheme = createInfoPlistPluginWithPropertyGuard(\n setScheme,\n {\n infoPlistProperty: 'CFBundleURLTypes',\n expoConfigProperty: 'scheme',\n },\n 'withScheme'\n);\n\nexport function getScheme(config: { scheme?: string | string[] }): string[] {\n if (Array.isArray(config.scheme)) {\n const validate = (value: any): value is string => {\n return typeof value === 'string';\n };\n return config.scheme.filter<string>(validate);\n } else if (typeof config.scheme === 'string') {\n return [config.scheme];\n }\n return [];\n}\n\nexport function setScheme(\n config: Partial<Pick<ExpoConfig, 'scheme' | 'ios'>>,\n infoPlist: InfoPlist\n): InfoPlist {\n const scheme = [\n ...getScheme(config),\n // @ts-ignore: TODO: ios.scheme is an unreleased -- harder to add to turtle v1.\n ...getScheme(config.ios ?? {}),\n ];\n // Add the bundle identifier to the list of schemes for easier Google auth and parity with Turtle v1.\n if (config.ios?.bundleIdentifier) {\n scheme.push(config.ios.bundleIdentifier);\n }\n if (scheme.length === 0) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleURLTypes: [{ CFBundleURLSchemes: scheme }],\n };\n}\n\nexport function appendScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n if (!scheme) {\n return infoPlist;\n }\n\n const existingSchemes = infoPlist.CFBundleURLTypes ?? [];\n if (existingSchemes?.some(({ CFBundleURLSchemes }) => CFBundleURLSchemes.includes(scheme))) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleURLTypes: [\n ...existingSchemes,\n {\n CFBundleURLSchemes: [scheme],\n },\n ],\n };\n}\n\nexport function removeScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n if (!scheme) {\n return infoPlist;\n }\n\n // No need to remove if we don't have any\n if (!infoPlist.CFBundleURLTypes) {\n return infoPlist;\n }\n\n infoPlist.CFBundleURLTypes = infoPlist.CFBundleURLTypes.map((bundleUrlType) => {\n const index = bundleUrlType.CFBundleURLSchemes.indexOf(scheme);\n if (index > -1) {\n bundleUrlType.CFBundleURLSchemes.splice(index, 1);\n if (bundleUrlType.CFBundleURLSchemes.length === 0) {\n return undefined;\n }\n }\n return bundleUrlType;\n }).filter(Boolean) as URLScheme[];\n\n return infoPlist;\n}\n\nexport function hasScheme(scheme: string, infoPlist: InfoPlist): boolean {\n const existingSchemes = infoPlist.CFBundleURLTypes;\n\n if (!Array.isArray(existingSchemes)) return false;\n\n return existingSchemes?.some(({ CFBundleURLSchemes: schemes }: any) =>\n Array.isArray(schemes) ? schemes.includes(scheme) : false\n );\n}\n\nexport function getSchemesFromPlist(infoPlist: InfoPlist): string[] {\n if (Array.isArray(infoPlist.CFBundleURLTypes)) {\n return infoPlist.CFBundleURLTypes.reduce<string[]>((schemes, { CFBundleURLSchemes }) => {\n if (Array.isArray(CFBundleURLSchemes)) {\n return [...schemes, ...CFBundleURLSchemes];\n }\n return schemes;\n }, []);\n }\n return [];\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Scheme.js","names":["_iosPlugins","data","require","withScheme","createInfoPlistPluginWithPropertyGuard","setScheme","infoPlistProperty","expoConfigProperty","exports","getScheme","config","Array","isArray","scheme","validate","value","filter","infoPlist","_config$ios","_config$ios2","ios","bundleIdentifier","push","length","CFBundleURLTypes","CFBundleURLSchemes","appendScheme","_infoPlist$CFBundleUR","existingSchemes","some","includes","removeScheme","map","bundleUrlType","index","indexOf","splice","undefined","Boolean","hasScheme","schemes","getSchemesFromPlist","reduce"],"sources":["../../src/ios/Scheme.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist, URLScheme } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withScheme = createInfoPlistPluginWithPropertyGuard(\n setScheme,\n {\n infoPlistProperty: 'CFBundleURLTypes',\n expoConfigProperty: 'scheme',\n },\n 'withScheme'\n);\n\nexport function getScheme(config: { scheme?: string | string[] }): string[] {\n if (Array.isArray(config.scheme)) {\n const validate = (value: any): value is string => {\n return typeof value === 'string';\n };\n return config.scheme.filter<string>(validate);\n } else if (typeof config.scheme === 'string') {\n return [config.scheme];\n }\n return [];\n}\n\nexport function setScheme(\n config: Partial<Pick<ExpoConfig, 'scheme' | 'ios'>>,\n infoPlist: InfoPlist\n): InfoPlist {\n const scheme = [\n ...getScheme(config),\n // @ts-ignore: TODO: ios.scheme is an unreleased -- harder to add to turtle v1.\n ...getScheme(config.ios ?? {}),\n ];\n // Add the bundle identifier to the list of schemes for easier Google auth and parity with Turtle v1.\n if (config.ios?.bundleIdentifier) {\n scheme.push(config.ios.bundleIdentifier);\n }\n if (scheme.length === 0) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleURLTypes: [{ CFBundleURLSchemes: scheme }],\n };\n}\n\nexport function appendScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n if (!scheme) {\n return infoPlist;\n }\n\n const existingSchemes = infoPlist.CFBundleURLTypes ?? [];\n if (existingSchemes?.some(({ CFBundleURLSchemes }) => CFBundleURLSchemes.includes(scheme))) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleURLTypes: [\n ...existingSchemes,\n {\n CFBundleURLSchemes: [scheme],\n },\n ],\n };\n}\n\nexport function removeScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n if (!scheme) {\n return infoPlist;\n }\n\n // No need to remove if we don't have any\n if (!infoPlist.CFBundleURLTypes) {\n return infoPlist;\n }\n\n infoPlist.CFBundleURLTypes = infoPlist.CFBundleURLTypes.map((bundleUrlType) => {\n const index = bundleUrlType.CFBundleURLSchemes.indexOf(scheme);\n if (index > -1) {\n bundleUrlType.CFBundleURLSchemes.splice(index, 1);\n if (bundleUrlType.CFBundleURLSchemes.length === 0) {\n return undefined;\n }\n }\n return bundleUrlType;\n }).filter(Boolean) as URLScheme[];\n\n return infoPlist;\n}\n\nexport function hasScheme(scheme: string, infoPlist: InfoPlist): boolean {\n const existingSchemes = infoPlist.CFBundleURLTypes;\n\n if (!Array.isArray(existingSchemes)) return false;\n\n return existingSchemes?.some(({ CFBundleURLSchemes: schemes }: any) =>\n Array.isArray(schemes) ? schemes.includes(scheme) : false\n );\n}\n\nexport function getSchemesFromPlist(infoPlist: InfoPlist): string[] {\n if (Array.isArray(infoPlist.CFBundleURLTypes)) {\n return infoPlist.CFBundleURLTypes.reduce<string[]>((schemes, { CFBundleURLSchemes }) => {\n if (Array.isArray(CFBundleURLSchemes)) {\n return [...schemes, ...CFBundleURLSchemes];\n }\n return schemes;\n }, []);\n }\n return [];\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Swift.js","names":["_fs","data","_interopRequireDefault","require","_path","_Paths","_XcodeProjectFile","_Xcodeproj","_iosPlugins","obj","__esModule","default","templateBridgingHeader","withSwiftBridgingHeader","config","withXcodeProject","modResults","ensureSwiftBridgingHeaderSetup","project","projectRoot","modRequest","exports","shouldCreateSwiftBridgingHeader","projectName","getProjectName","bridgingHeader","createBridgingHeaderFileName","createBridgingHeaderFile","linkBridgingHeaderFile","path","join","isObjc","getAppDelegate","language","getDesignatedSwiftBridgingHeaderFileReference","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","SWIFT_OBJC_BRIDGING_HEADER","bridgingHeaderProjectPath","getSourceRoot","fs","existsSync","writeFileSync","filePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose","withNoopSwiftFile","withBuildSourceFile","contents"],"sources":["../../src/ios/Swift.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { getAppDelegate, getSourceRoot } from './Paths';\nimport { withBuildSourceFile } from './XcodeProjectFile';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\nimport { ConfigPlugin, XcodeProject } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\n\nconst templateBridgingHeader = `//\n// Use this file to import your target's public headers that you would like to expose to Swift.\n//\n`;\n\n/**\n * Ensure a Swift bridging header is created for the project.\n * This helps fix problems related to using modules that are written in Swift (lottie, FBSDK).\n *\n * 1. Ensures the file exists given the project path.\n * 2. Writes the file and links to Xcode as a resource file.\n * 3. Sets the build configuration `SWIFT_OBJC_BRIDGING_HEADER = [PROJECT_NAME]-Bridging-Header.h`\n */\nexport const withSwiftBridgingHeader: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = ensureSwiftBridgingHeaderSetup({\n project: config.modResults,\n projectRoot: config.modRequest.projectRoot,\n });\n return config;\n });\n};\n\nexport function ensureSwiftBridgingHeaderSetup({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}) {\n // Only create a bridging header if using objective-c\n if (shouldCreateSwiftBridgingHeader({ projectRoot, project })) {\n const projectName = getProjectName(projectRoot);\n const bridgingHeader = createBridgingHeaderFileName(projectName);\n // Ensure a bridging header is created in the Xcode project.\n project = createBridgingHeaderFile({\n project,\n projectName,\n projectRoot,\n bridgingHeader,\n });\n // Designate the newly created file as the Swift bridging header in the Xcode project.\n project = linkBridgingHeaderFile({\n project,\n bridgingHeader: path.join(projectName, bridgingHeader),\n });\n }\n return project;\n}\n\nfunction shouldCreateSwiftBridgingHeader({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}): boolean {\n // Only create a bridging header if the project is using in Objective C (AppDelegate is written in Objc).\n const isObjc = getAppDelegate(projectRoot).language !== 'swift';\n return isObjc && !getDesignatedSwiftBridgingHeaderFileReference({ project });\n}\n\n/**\n * @returns String matching the default name used when Xcode automatically creates a bridging header file.\n */\nfunction createBridgingHeaderFileName(projectName: string): string {\n return `${projectName}-Bridging-Header.h`;\n}\n\nexport function getDesignatedSwiftBridgingHeaderFileReference({\n project,\n}: {\n project: XcodeProject;\n}): string | null {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n if (\n typeof buildSettings.SWIFT_OBJC_BRIDGING_HEADER === 'string' &&\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER\n ) {\n return buildSettings.SWIFT_OBJC_BRIDGING_HEADER;\n }\n }\n }\n return null;\n}\n\n/**\n *\n * @param bridgingHeader The bridging header filename ex: `ExpoAPIs-Bridging-Header.h`\n * @returns\n */\nexport function linkBridgingHeaderFile({\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n bridgingHeader: string;\n}): XcodeProject {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER = bridgingHeader;\n }\n }\n\n return project;\n}\n\nexport function createBridgingHeaderFile({\n projectRoot,\n projectName,\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n projectName: string;\n projectRoot: string;\n bridgingHeader: string;\n}): XcodeProject {\n const bridgingHeaderProjectPath = path.join(getSourceRoot(projectRoot), bridgingHeader);\n if (!fs.existsSync(bridgingHeaderProjectPath)) {\n // Create the file\n fs.writeFileSync(bridgingHeaderProjectPath, templateBridgingHeader, 'utf8');\n }\n\n // This is non-standard, Xcode generates the bridging header in `/ios` which is kinda annoying.\n // Instead, this'll generate the default header in the application code folder `/ios/myproject/`.\n const filePath = `${projectName}/${bridgingHeader}`;\n // Ensure the file is linked with Xcode resource files\n if (!project.hasFile(filePath)) {\n project = addResourceFileToGroup({\n filepath: filePath,\n groupName: projectName,\n project,\n // Not sure why, but this is how Xcode generates it.\n isBuildFile: false,\n verbose: false,\n });\n }\n return project;\n}\n\nexport const withNoopSwiftFile: ConfigPlugin = (config) => {\n return withBuildSourceFile(config, {\n filePath: 'noop-file.swift',\n contents: [\n '//',\n '// @generated',\n '// A blank Swift file must be created for native modules with Swift files to work correctly.',\n '//',\n '',\n ].join('\\n'),\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Swift.js","names":["_fs","data","_interopRequireDefault","require","_path","_Paths","_XcodeProjectFile","_Xcodeproj","_iosPlugins","obj","__esModule","default","templateBridgingHeader","withSwiftBridgingHeader","config","withXcodeProject","modResults","ensureSwiftBridgingHeaderSetup","project","projectRoot","modRequest","exports","shouldCreateSwiftBridgingHeader","projectName","getProjectName","bridgingHeader","createBridgingHeaderFileName","createBridgingHeaderFile","linkBridgingHeaderFile","path","join","isObjc","getAppDelegate","language","getDesignatedSwiftBridgingHeaderFileReference","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","SWIFT_OBJC_BRIDGING_HEADER","bridgingHeaderProjectPath","getSourceRoot","fs","existsSync","writeFileSync","filePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose","withNoopSwiftFile","withBuildSourceFile","contents"],"sources":["../../src/ios/Swift.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\n\nimport { getAppDelegate, getSourceRoot } from './Paths';\nimport { withBuildSourceFile } from './XcodeProjectFile';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\nimport { ConfigPlugin, XcodeProject } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\n\nconst templateBridgingHeader = `//\n// Use this file to import your target's public headers that you would like to expose to Swift.\n//\n`;\n\n/**\n * Ensure a Swift bridging header is created for the project.\n * This helps fix problems related to using modules that are written in Swift (lottie, FBSDK).\n *\n * 1. Ensures the file exists given the project path.\n * 2. Writes the file and links to Xcode as a resource file.\n * 3. Sets the build configuration `SWIFT_OBJC_BRIDGING_HEADER = [PROJECT_NAME]-Bridging-Header.h`\n */\nexport const withSwiftBridgingHeader: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = ensureSwiftBridgingHeaderSetup({\n project: config.modResults,\n projectRoot: config.modRequest.projectRoot,\n });\n return config;\n });\n};\n\nexport function ensureSwiftBridgingHeaderSetup({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}) {\n // Only create a bridging header if using objective-c\n if (shouldCreateSwiftBridgingHeader({ projectRoot, project })) {\n const projectName = getProjectName(projectRoot);\n const bridgingHeader = createBridgingHeaderFileName(projectName);\n // Ensure a bridging header is created in the Xcode project.\n project = createBridgingHeaderFile({\n project,\n projectName,\n projectRoot,\n bridgingHeader,\n });\n // Designate the newly created file as the Swift bridging header in the Xcode project.\n project = linkBridgingHeaderFile({\n project,\n bridgingHeader: path.join(projectName, bridgingHeader),\n });\n }\n return project;\n}\n\nfunction shouldCreateSwiftBridgingHeader({\n projectRoot,\n project,\n}: {\n projectRoot: string;\n project: XcodeProject;\n}): boolean {\n // Only create a bridging header if the project is using in Objective C (AppDelegate is written in Objc).\n const isObjc = getAppDelegate(projectRoot).language !== 'swift';\n return isObjc && !getDesignatedSwiftBridgingHeaderFileReference({ project });\n}\n\n/**\n * @returns String matching the default name used when Xcode automatically creates a bridging header file.\n */\nfunction createBridgingHeaderFileName(projectName: string): string {\n return `${projectName}-Bridging-Header.h`;\n}\n\nexport function getDesignatedSwiftBridgingHeaderFileReference({\n project,\n}: {\n project: XcodeProject;\n}): string | null {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n if (\n typeof buildSettings.SWIFT_OBJC_BRIDGING_HEADER === 'string' &&\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER\n ) {\n return buildSettings.SWIFT_OBJC_BRIDGING_HEADER;\n }\n }\n }\n return null;\n}\n\n/**\n *\n * @param bridgingHeader The bridging header filename ex: `ExpoAPIs-Bridging-Header.h`\n * @returns\n */\nexport function linkBridgingHeaderFile({\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n bridgingHeader: string;\n}): XcodeProject {\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.SWIFT_OBJC_BRIDGING_HEADER = bridgingHeader;\n }\n }\n\n return project;\n}\n\nexport function createBridgingHeaderFile({\n projectRoot,\n projectName,\n project,\n bridgingHeader,\n}: {\n project: XcodeProject;\n projectName: string;\n projectRoot: string;\n bridgingHeader: string;\n}): XcodeProject {\n const bridgingHeaderProjectPath = path.join(getSourceRoot(projectRoot), bridgingHeader);\n if (!fs.existsSync(bridgingHeaderProjectPath)) {\n // Create the file\n fs.writeFileSync(bridgingHeaderProjectPath, templateBridgingHeader, 'utf8');\n }\n\n // This is non-standard, Xcode generates the bridging header in `/ios` which is kinda annoying.\n // Instead, this'll generate the default header in the application code folder `/ios/myproject/`.\n const filePath = `${projectName}/${bridgingHeader}`;\n // Ensure the file is linked with Xcode resource files\n if (!project.hasFile(filePath)) {\n project = addResourceFileToGroup({\n filepath: filePath,\n groupName: projectName,\n project,\n // Not sure why, but this is how Xcode generates it.\n isBuildFile: false,\n verbose: false,\n });\n }\n return project;\n}\n\nexport const withNoopSwiftFile: ConfigPlugin = (config) => {\n return withBuildSourceFile(config, {\n filePath: 'noop-file.swift',\n contents: [\n '//',\n '// @generated',\n '// A blank Swift file must be created for native modules with Swift files to work correctly.',\n '//',\n '',\n ].join('\\n'),\n });\n};\n"],"mappings":"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"}
@@ -1 +1 @@
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","signable","parentTarget","length","undefined","nonSignableTargetTypes","FRAMEWORK","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","some","signableTargetType","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 FRAMEWORK = 'com.apple.product-type.framework',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n signable: boolean;\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 signable: true,\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\n const nonSignableTargetTypes: TargetType[] = [TargetType.FRAMEWORK];\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 signable: !nonSignableTargetTypes.some((signableTargetType) =>\n isTargetOfType(target, signableTargetType)\n ),\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: TargetType[] = [\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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"}
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","signable","parentTarget","length","undefined","nonSignableTargetTypes","FRAMEWORK","map","value","target","targetId","getPBXGroupByKeyAndType","findNativeTargetById","isTargetOfType","EXTENSION","OTHER","some","signableTargetType","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 FRAMEWORK = 'com.apple.product-type.framework',\n OTHER = 'other',\n}\n\nexport interface Target {\n name: string;\n type: TargetType;\n signable: boolean;\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 signable: true,\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\n const nonSignableTargetTypes: TargetType[] = [TargetType.FRAMEWORK];\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 signable: !nonSignableTargetTypes.some((signableTargetType) =>\n isTargetOfType(target, signableTargetType)\n ),\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: TargetType[] = [\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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Updates.js","names":["path","data","_interopRequireWildcard","require","_resolveFrom","_interopRequireDefault","_iosPlugins","_Updates","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","CREATE_MANIFEST_IOS_PATH","Config","exports","withUpdates","config","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfigAsync","expoPlist","newExpoPlist","ENABLED","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadata","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeaders","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfigAsync","runtimeVersion","getRuntimeVersionNullableAsync","RUNTIME_VERSION","Error","sdkVersion","getSDKVersion","SDK_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","relativePath","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSyncedAsync","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","EXUpdatesCodeSigningCertificate","EXUpdatesCodeSigningMetadata","isPlistVersionConfigurationSyncedAsync","_expoPlist$EXUpdatesR","_expoPlist$EXUpdatesS","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/ios/Updates.ts"],"sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ExpoPlist } from './IosConfig.types';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullableAsync,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadata,\n getUpdatesRequestHeaders,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n CODE_SIGNING_CERTIFICATE = 'EXUpdatesCodeSigningCertificate',\n CODE_SIGNING_METADATA = 'EXUpdatesCodeSigningMetadata',\n}\n\n// when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools\n// Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/\n\nexport const withUpdates: ConfigPlugin = (config) => {\n return withExpoPlist(config, async (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = await setUpdatesConfigAsync(\n projectRoot,\n config,\n config.modResults,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport async function setUpdatesConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n expoUpdatesPackageVersion?: string | null\n): Promise<ExpoPlist> {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadata(config);\n if (codeSigningMetadata) {\n newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_METADATA];\n }\n\n const requestHeaders = getUpdatesRequestHeaders(config);\n if (requestHeaders) {\n newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = requestHeaders;\n } else {\n delete newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY];\n }\n\n return await setVersionsConfigAsync(projectRoot, config, newExpoPlist);\n}\n\nexport async function setVersionsConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<ExpoPlist> {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {\n throw new Error(\n 'A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n (buildPhase) => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport async function isPlistConfigurationSyncedAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n return (\n getUpdateUrl(config) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n getUpdatesCodeSigningCertificate(projectRoot, config) ===\n expoPlist.EXUpdatesCodeSigningCertificate &&\n getUpdatesCodeSigningMetadata(config) === expoPlist.EXUpdatesCodeSigningMetadata &&\n (await isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist))\n );\n}\n\nexport async function isPlistVersionConfigurationSyncedAsync(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n const expectedRuntimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Updates.js","names":["path","data","_interopRequireWildcard","require","_resolveFrom","_interopRequireDefault","_iosPlugins","_Updates","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","CREATE_MANIFEST_IOS_PATH","Config","exports","withUpdates","config","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfigAsync","expoPlist","newExpoPlist","ENABLED","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadata","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeaders","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfigAsync","runtimeVersion","getRuntimeVersionNullableAsync","RUNTIME_VERSION","Error","sdkVersion","getSDKVersion","SDK_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","relativePath","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSyncedAsync","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","EXUpdatesCodeSigningCertificate","EXUpdatesCodeSigningMetadata","isPlistVersionConfigurationSyncedAsync","_expoPlist$EXUpdatesR","_expoPlist$EXUpdatesS","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/ios/Updates.ts"],"sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ExpoPlist } from './IosConfig.types';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullableAsync,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadata,\n getUpdatesRequestHeaders,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n CODE_SIGNING_CERTIFICATE = 'EXUpdatesCodeSigningCertificate',\n CODE_SIGNING_METADATA = 'EXUpdatesCodeSigningMetadata',\n}\n\n// when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools\n// Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/\n\nexport const withUpdates: ConfigPlugin = (config) => {\n return withExpoPlist(config, async (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = await setUpdatesConfigAsync(\n projectRoot,\n config,\n config.modResults,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport async function setUpdatesConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n expoUpdatesPackageVersion?: string | null\n): Promise<ExpoPlist> {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadata(config);\n if (codeSigningMetadata) {\n newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_METADATA];\n }\n\n const requestHeaders = getUpdatesRequestHeaders(config);\n if (requestHeaders) {\n newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = requestHeaders;\n } else {\n delete newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY];\n }\n\n return await setVersionsConfigAsync(projectRoot, config, newExpoPlist);\n}\n\nexport async function setVersionsConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<ExpoPlist> {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {\n throw new Error(\n 'A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n (buildPhase) => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport async function isPlistConfigurationSyncedAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n return (\n getUpdateUrl(config) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n getUpdatesCodeSigningCertificate(projectRoot, config) ===\n expoPlist.EXUpdatesCodeSigningCertificate &&\n getUpdatesCodeSigningMetadata(config) === expoPlist.EXUpdatesCodeSigningMetadata &&\n (await isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist))\n );\n}\n\nexport async function isPlistVersionConfigurationSyncedAsync(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n const expectedRuntimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UsesNonExemptEncryption.js","names":["_iosPlugins","data","require","withUsesNonExemptEncryption","createInfoPlistPluginWithPropertyGuard","setUsesNonExemptEncryption","infoPlistProperty","expoConfigProperty","exports","getUsesNonExemptEncryption","config","_config$ios$config$us","_config$ios","_config$ios$config","ios","usesNonExemptEncryption","ITSAppUsesNonExemptEncryption","infoPlist"],"sources":["../../src/ios/UsesNonExemptEncryption.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withUsesNonExemptEncryption = createInfoPlistPluginWithPropertyGuard(\n setUsesNonExemptEncryption,\n {\n infoPlistProperty: 'ITSAppUsesNonExemptEncryption',\n expoConfigProperty: 'ios.config.usesNonExemptEncryption',\n },\n 'withUsesNonExemptEncryption'\n);\n\nexport function getUsesNonExemptEncryption(config: Pick<ExpoConfig, 'ios'>) {\n return config?.ios?.config?.usesNonExemptEncryption ?? null;\n}\n\nexport function setUsesNonExemptEncryption(\n config: Pick<ExpoConfig, 'ios'>,\n { ITSAppUsesNonExemptEncryption, ...infoPlist }: InfoPlist\n): InfoPlist {\n const usesNonExemptEncryption = getUsesNonExemptEncryption(config);\n\n // Make no changes if the key is left blank\n if (usesNonExemptEncryption === null) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n ITSAppUsesNonExemptEncryption: usesNonExemptEncryption,\n };\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,2BAA2B,GAAG,IAAAC,oDAAsC,EAC/EC,0BAA0B,EAC1B;EACEC,iBAAiB,EAAE,+BAA+B;EAClDC,kBAAkB,EAAE;AACtB,CAAC,EACD,6BAA6B,CAC9B;AAACC,OAAA,CAAAL,2BAAA,GAAAA,2BAAA;AAEK,SAASM,0BAA0BA,CAACC,MAA+B,EAAE;EAAA,IAAAC,qBAAA,EAAAC,WAAA,EAAAC,kBAAA;EAC1E,QAAAF,qBAAA,GAAOD,MAAM,aAANA,MAAM,wBAAAE,WAAA,GAANF,MAAM,CAAEI,GAAG,cAAAF,WAAA,wBAAAC,kBAAA,GAAXD,WAAA,CAAaF,MAAM,cAAAG,kBAAA,uBAAnBA,kBAAA,CAAqBE,uBAAuB,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,IAAI;AAC7D;AAEO,SAASN,0BAA0BA,CACxCK,MAA+B,EAC/B;EAAEM,6BAA6B;EAAE,GAAGC;AAAqB,CAAC,EAC/C;EACX,MAAMF,uBAAuB,GAAGN,0BAA0B,CAACC,MAAM,CAAC;;EAElE;EACA,IAAIK,uBAAuB,KAAK,IAAI,EAAE;IACpC,OAAOE,SAAS;EAClB;EAEA,OAAO;IACL,GAAGA,SAAS;IACZD,6BAA6B,EAAED;EACjC,CAAC;AACH"}
1
+ {"version":3,"file":"UsesNonExemptEncryption.js","names":["_iosPlugins","data","require","withUsesNonExemptEncryption","createInfoPlistPluginWithPropertyGuard","setUsesNonExemptEncryption","infoPlistProperty","expoConfigProperty","exports","getUsesNonExemptEncryption","config","_config$ios$config$us","_config$ios","_config$ios$config","ios","usesNonExemptEncryption","ITSAppUsesNonExemptEncryption","infoPlist"],"sources":["../../src/ios/UsesNonExemptEncryption.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withUsesNonExemptEncryption = createInfoPlistPluginWithPropertyGuard(\n setUsesNonExemptEncryption,\n {\n infoPlistProperty: 'ITSAppUsesNonExemptEncryption',\n expoConfigProperty: 'ios.config.usesNonExemptEncryption',\n },\n 'withUsesNonExemptEncryption'\n);\n\nexport function getUsesNonExemptEncryption(config: Pick<ExpoConfig, 'ios'>) {\n return config?.ios?.config?.usesNonExemptEncryption ?? null;\n}\n\nexport function setUsesNonExemptEncryption(\n config: Pick<ExpoConfig, 'ios'>,\n { ITSAppUsesNonExemptEncryption, ...infoPlist }: InfoPlist\n): InfoPlist {\n const usesNonExemptEncryption = getUsesNonExemptEncryption(config);\n\n // Make no changes if the key is left blank\n if (usesNonExemptEncryption === null) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n ITSAppUsesNonExemptEncryption: usesNonExemptEncryption,\n };\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,2BAA2B,GAAG,IAAAC,oDAAsC,EAC/EC,0BAA0B,EAC1B;EACEC,iBAAiB,EAAE,+BAA+B;EAClDC,kBAAkB,EAAE;AACtB,CAAC,EACD,6BACF,CAAC;AAACC,OAAA,CAAAL,2BAAA,GAAAA,2BAAA;AAEK,SAASM,0BAA0BA,CAACC,MAA+B,EAAE;EAAA,IAAAC,qBAAA,EAAAC,WAAA,EAAAC,kBAAA;EAC1E,QAAAF,qBAAA,GAAOD,MAAM,aAANA,MAAM,wBAAAE,WAAA,GAANF,MAAM,CAAEI,GAAG,cAAAF,WAAA,wBAAAC,kBAAA,GAAXD,WAAA,CAAaF,MAAM,cAAAG,kBAAA,uBAAnBA,kBAAA,CAAqBE,uBAAuB,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,IAAI;AAC7D;AAEO,SAASN,0BAA0BA,CACxCK,MAA+B,EAC/B;EAAEM,6BAA6B;EAAE,GAAGC;AAAqB,CAAC,EAC/C;EACX,MAAMF,uBAAuB,GAAGN,0BAA0B,CAACC,MAAM,CAAC;;EAElE;EACA,IAAIK,uBAAuB,KAAK,IAAI,EAAE;IACpC,OAAOE,SAAS;EAClB;EAEA,OAAO;IACL,GAAGA,SAAS;IACZD,6BAA6B,EAAED;EACjC,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"Version.js","names":["_iosPlugins","data","require","withVersion","createInfoPlistPluginWithPropertyGuard","setVersion","infoPlistProperty","expoConfigProperty","exports","withBuildNumber","setBuildNumber","getVersion","config","version","infoPlist","CFBundleShortVersionString","getBuildNumber","_config$ios","ios","buildNumber","CFBundleVersion"],"sources":["../../src/ios/Version.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withVersion = createInfoPlistPluginWithPropertyGuard(\n setVersion,\n {\n infoPlistProperty: 'CFBundleShortVersionString',\n expoConfigProperty: 'version',\n },\n 'withVersion'\n);\n\nexport const withBuildNumber = createInfoPlistPluginWithPropertyGuard(\n setBuildNumber,\n {\n infoPlistProperty: 'CFBundleVersion',\n expoConfigProperty: 'ios.buildNumber',\n },\n 'withBuildNumber'\n);\n\nexport function getVersion(config: Pick<ExpoConfig, 'version'>) {\n return config.version || '1.0.0';\n}\n\nexport function setVersion(config: Pick<ExpoConfig, 'version'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleShortVersionString: getVersion(config),\n };\n}\n\nexport function getBuildNumber(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.buildNumber ? config.ios.buildNumber : '1';\n}\n\nexport function setBuildNumber(config: Pick<ExpoConfig, 'ios'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleVersion: getBuildNumber(config),\n };\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,WAAW,GAAG,IAAAC,oDAAsC,EAC/DC,UAAU,EACV;EACEC,iBAAiB,EAAE,4BAA4B;EAC/CC,kBAAkB,EAAE;AACtB,CAAC,EACD,aAAa,CACd;AAACC,OAAA,CAAAL,WAAA,GAAAA,WAAA;AAEK,MAAMM,eAAe,GAAG,IAAAL,oDAAsC,EACnEM,cAAc,EACd;EACEJ,iBAAiB,EAAE,iBAAiB;EACpCC,kBAAkB,EAAE;AACtB,CAAC,EACD,iBAAiB,CAClB;AAACC,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEK,SAASE,UAAUA,CAACC,MAAmC,EAAE;EAC9D,OAAOA,MAAM,CAACC,OAAO,IAAI,OAAO;AAClC;AAEO,SAASR,UAAUA,CAACO,MAAmC,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZC,0BAA0B,EAAEJ,UAAU,CAACC,MAAM;EAC/C,CAAC;AACH;AAEO,SAASI,cAAcA,CAACJ,MAA+B,EAAE;EAAA,IAAAK,WAAA;EAC9D,OAAO,CAAAA,WAAA,GAAAL,MAAM,CAACM,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,WAAW,GAAGP,MAAM,CAACM,GAAG,CAACC,WAAW,GAAG,GAAG;AAC/D;AAEO,SAAST,cAAcA,CAACE,MAA+B,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZM,eAAe,EAAEJ,cAAc,CAACJ,MAAM;EACxC,CAAC;AACH"}
1
+ {"version":3,"file":"Version.js","names":["_iosPlugins","data","require","withVersion","createInfoPlistPluginWithPropertyGuard","setVersion","infoPlistProperty","expoConfigProperty","exports","withBuildNumber","setBuildNumber","getVersion","config","version","infoPlist","CFBundleShortVersionString","getBuildNumber","_config$ios","ios","buildNumber","CFBundleVersion"],"sources":["../../src/ios/Version.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { createInfoPlistPluginWithPropertyGuard } from '../plugins/ios-plugins';\n\nexport const withVersion = createInfoPlistPluginWithPropertyGuard(\n setVersion,\n {\n infoPlistProperty: 'CFBundleShortVersionString',\n expoConfigProperty: 'version',\n },\n 'withVersion'\n);\n\nexport const withBuildNumber = createInfoPlistPluginWithPropertyGuard(\n setBuildNumber,\n {\n infoPlistProperty: 'CFBundleVersion',\n expoConfigProperty: 'ios.buildNumber',\n },\n 'withBuildNumber'\n);\n\nexport function getVersion(config: Pick<ExpoConfig, 'version'>) {\n return config.version || '1.0.0';\n}\n\nexport function setVersion(config: Pick<ExpoConfig, 'version'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleShortVersionString: getVersion(config),\n };\n}\n\nexport function getBuildNumber(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.buildNumber ? config.ios.buildNumber : '1';\n}\n\nexport function setBuildNumber(config: Pick<ExpoConfig, 'ios'>, infoPlist: InfoPlist): InfoPlist {\n return {\n ...infoPlist,\n CFBundleVersion: getBuildNumber(config),\n };\n}\n"],"mappings":";;;;;;;;;;AAGA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,WAAW,GAAG,IAAAC,oDAAsC,EAC/DC,UAAU,EACV;EACEC,iBAAiB,EAAE,4BAA4B;EAC/CC,kBAAkB,EAAE;AACtB,CAAC,EACD,aACF,CAAC;AAACC,OAAA,CAAAL,WAAA,GAAAA,WAAA;AAEK,MAAMM,eAAe,GAAG,IAAAL,oDAAsC,EACnEM,cAAc,EACd;EACEJ,iBAAiB,EAAE,iBAAiB;EACpCC,kBAAkB,EAAE;AACtB,CAAC,EACD,iBACF,CAAC;AAACC,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAEK,SAASE,UAAUA,CAACC,MAAmC,EAAE;EAC9D,OAAOA,MAAM,CAACC,OAAO,IAAI,OAAO;AAClC;AAEO,SAASR,UAAUA,CAACO,MAAmC,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZC,0BAA0B,EAAEJ,UAAU,CAACC,MAAM;EAC/C,CAAC;AACH;AAEO,SAASI,cAAcA,CAACJ,MAA+B,EAAE;EAAA,IAAAK,WAAA;EAC9D,OAAO,CAAAA,WAAA,GAAAL,MAAM,CAACM,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,WAAW,GAAGP,MAAM,CAACM,GAAG,CAACC,WAAW,GAAG,GAAG;AAC/D;AAEO,SAAST,cAAcA,CAACE,MAA+B,EAAEE,SAAoB,EAAa;EAC/F,OAAO;IACL,GAAGA,SAAS;IACZM,eAAe,EAAEJ,cAAc,CAACJ,MAAM;EACxC,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"codeMod.js","names":["_commonCodeMod","data","require","_matchBrackets","addObjcImports","source","imports","lines","split","lineIndexWithFirstImport","findIndex","line","match","importElement","includes","importStatement","splice","join","findObjcInterfaceCodeBlock","contents","declaration","start","search","RegExp","end","indexOf","code","substring","findObjcFunctionCodeBlock","selector","symbols","argsCount","length","pattern","i","argSymbol","findMatchingBracketPosition","insertContentsInsideObjcFunctionBlock","srcContents","insertion","options","insertContentsInsideFunctionBlock","insertContentsInsideObjcInterfaceBlock","codeBlock","position","firstNewLineIndex","insertContentsAtOffset","endLen","findSwiftFunctionCodeBlock","parenthesesIndex","funcName","argLabels","searchOffset","funcCandidateRegExp","funcCandidateOffset","searchFromOffset","paramsStartOffset","paramsEndOffset","paramsString","params","map","parseSwiftFunctionParam","argumentLabel","codeBlockStart","codeBlockEnd","paramTuple","semiIndex","parameterName","typeString","trim","insertContentsInsideSwiftClassBlock","Error","firstBracketIndex","endBracketIndex","insertContentsInsideSwiftFunctionBlock","language","_options$indent","indent","repeat","lastReturnIndex","lastIndexOf"],"sources":["../../src/ios/codeMod.ts"],"sourcesContent":["import { CodeBlock, insertContentsAtOffset, searchFromOffset } from '../utils/commonCodeMod';\nimport { findMatchingBracketPosition } from '../utils/matchBrackets';\n\ninterface SwiftFunctionParam {\n argumentLabel: string;\n parameterName: string;\n typeString: string;\n}\n\ninterface InsertContentFunctionOptions {\n position: 'head' | 'tail' | 'tailBeforeLastReturn';\n indent?: number;\n}\n\n/**\n * Add Objective-C import\n * @param source source contents\n * @param imports array of imports, e.g. ['<Foundation/Foundation.h>']\n * @returns updated contents\n */\nexport function addObjcImports(source: string, imports: string[]): string {\n const lines = source.split('\\n');\n // Try to insert statements after first #import where would probably not in #if block\n const lineIndexWithFirstImport = lines.findIndex((line) => line.match(/^#import .*$/));\n for (const importElement of imports) {\n if (!source.includes(importElement)) {\n const importStatement = `#import ${importElement}`;\n lines.splice(lineIndexWithFirstImport + 1, 0, importStatement);\n }\n }\n return lines.join('\\n');\n}\n\n/**\n * Find code block of Objective-C interface or implementation\n *\n * @param contents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @returns found CodeBlock, or null if not found\n */\nexport function findObjcInterfaceCodeBlock(\n contents: string,\n declaration: string\n): CodeBlock | null {\n const start = contents.search(new RegExp(`^${declaration}\\\\W`, 'm'));\n if (start < 0) {\n return null;\n }\n\n let end = contents.indexOf('\\n@end', start);\n end += 5; // '\\n@end'.length === 5\n\n return {\n start,\n end,\n code: contents.substring(start, end),\n };\n}\n\n/**\n * Find code block of Objective-C function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findObjcFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const symbols = selector.split(':');\n const argsCount = symbols.length - 1;\n let pattern = '^[\\\\-+]\\\\s*\\\\(.+?\\\\)';\n if (argsCount === 0) {\n pattern += `${symbols[0]}\\\\s+`;\n } else {\n for (let i = 0; i < argsCount; ++i) {\n const argSymbol = `${symbols[i]}:\\\\(.+\\\\)\\\\w+`;\n pattern += `${argSymbol}\\\\s+`;\n }\n }\n pattern += '{';\n let start = contents.search(new RegExp(pattern, 'm'));\n if (start < 0) {\n return null;\n }\n start = contents.indexOf('{', start);\n\n const end = findMatchingBracketPosition(contents, '{', start);\n return {\n start,\n end,\n code: contents.substring(start, end + 1),\n };\n}\n\n/**\n * Insert contents to the Objective-C function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'objc');\n}\n\n/**\n * Insert contents to the Objective-C interface/implementation block\n *\n * @param srcContents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcInterfaceBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const codeBlock = findObjcInterfaceCodeBlock(srcContents, declaration);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstNewLineIndex = srcContents.indexOf('\\n', codeBlock.start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstNewLineIndex);\n } else if (position === 'tail') {\n const endLen = '@end'.length;\n srcContents = insertContentsAtOffset(srcContents, insertion, codeBlock.end - endLen);\n }\n return srcContents;\n}\n\n/**\n * Find code block of Swift function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething(_:withSomeValue:)'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findSwiftFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const parenthesesIndex = selector.indexOf('(');\n // `functName` === 'doSomething' of 'doSomething(_:withSomeValue:)'\n const funcName = selector.substring(0, parenthesesIndex);\n // `argLabels` === ['_', 'withSomeValue'] 'doSomething(_:withSomeValue:)'\n const argLabels = selector.substring(parenthesesIndex + 1, selector.length - 2).split(':');\n\n let searchOffset = 0;\n const funcCandidateRegExp = new RegExp(`\\\\sfunc\\\\s+${funcName}\\\\(`, 'm');\n let funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n while (funcCandidateOffset >= 0) {\n // Parse function parameters\n const paramsStartOffset = contents.indexOf('(', funcCandidateOffset);\n const paramsEndOffset = findMatchingBracketPosition(contents, '(', paramsStartOffset);\n const paramsString = contents.substring(paramsStartOffset + 1, paramsEndOffset);\n const params = paramsString.split(',').map(parseSwiftFunctionParam);\n\n // Prepare offset for next round\n searchOffset = paramsEndOffset + 1;\n funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n\n // Try to match function parameters\n if (argLabels.length !== params.length) {\n continue;\n }\n for (let i = 0; i < argLabels.length; ++i) {\n if (argLabels[i] !== params[i].argumentLabel) {\n continue;\n }\n }\n\n // This function is matched one, get the code block.\n const codeBlockStart = contents.indexOf('{', paramsEndOffset);\n const codeBlockEnd = findMatchingBracketPosition(contents, '{', paramsEndOffset);\n const codeBlock = contents.substring(codeBlockStart, codeBlockEnd + 1);\n return {\n start: codeBlockStart,\n end: codeBlockEnd,\n code: codeBlock,\n };\n }\n\n return null;\n}\n\nfunction parseSwiftFunctionParam(paramTuple: string): SwiftFunctionParam {\n const semiIndex = paramTuple.indexOf(':');\n const [argumentLabel, parameterName] = paramTuple.substring(0, semiIndex).split(/\\s+/);\n const typeString = paramTuple.substring(semiIndex + 1).trim();\n return {\n argumentLabel,\n parameterName,\n typeString,\n };\n}\n\n/**\n * Insert contents to the swift class block\n *\n * @param srcContents source contents\n * @param declaration class/extension declaration, e.g. 'class AppDelegate'\n * @param insertion code to append\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftClassBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const start = srcContents.search(new RegExp(`\\\\s*${declaration}.*?[\\\\(\\\\{]`));\n if (start < 0) {\n throw new Error(`Unable to find class code block - declaration[${declaration}]`);\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstBracketIndex = srcContents.indexOf('{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstBracketIndex + 1);\n } else if (position === 'tail') {\n const endBracketIndex = findMatchingBracketPosition(srcContents, '{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, endBracketIndex);\n }\n return srcContents;\n}\n\n/**\n * Insert contents to the Swift function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'swift');\n}\n\nfunction insertContentsInsideFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions,\n language: 'objc' | 'swift'\n): string {\n const codeBlock =\n language === 'objc'\n ? findObjcFunctionCodeBlock(srcContents, selector)\n : findSwiftFunctionCodeBlock(srcContents, selector);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n const indent = ' '.repeat(options.indent ?? 2);\n\n if (position === 'head') {\n srcContents = insertContentsAtOffset(\n srcContents,\n `\\n${indent}${insertion}`,\n codeBlock.start + 1\n );\n } else if (position === 'tail') {\n srcContents = insertContentsAtOffset(srcContents, `\\n${indent}${insertion}`, codeBlock.end - 1);\n } else if (position === 'tailBeforeLastReturn') {\n let lastReturnIndex = srcContents.lastIndexOf(' return ', codeBlock.end);\n if (lastReturnIndex < 0) {\n throw new Error(`Cannot find last return statement:\\n${srcContents}`);\n }\n lastReturnIndex += 1; // +1 for the prefix space\n srcContents = insertContentsAtOffset(srcContents, `${insertion}\\n${indent}`, lastReturnIndex);\n }\n\n return srcContents;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"codeMod.js","names":["_commonCodeMod","data","require","_matchBrackets","addObjcImports","source","imports","lines","split","lineIndexWithFirstImport","findIndex","line","match","importElement","includes","importStatement","splice","join","findObjcInterfaceCodeBlock","contents","declaration","start","search","RegExp","end","indexOf","code","substring","findObjcFunctionCodeBlock","selector","symbols","argsCount","length","pattern","i","argSymbol","findMatchingBracketPosition","insertContentsInsideObjcFunctionBlock","srcContents","insertion","options","insertContentsInsideFunctionBlock","insertContentsInsideObjcInterfaceBlock","codeBlock","position","firstNewLineIndex","insertContentsAtOffset","endLen","findSwiftFunctionCodeBlock","parenthesesIndex","funcName","argLabels","searchOffset","funcCandidateRegExp","funcCandidateOffset","searchFromOffset","paramsStartOffset","paramsEndOffset","paramsString","params","map","parseSwiftFunctionParam","argumentLabel","codeBlockStart","codeBlockEnd","paramTuple","semiIndex","parameterName","typeString","trim","insertContentsInsideSwiftClassBlock","Error","firstBracketIndex","endBracketIndex","insertContentsInsideSwiftFunctionBlock","language","_options$indent","indent","repeat","lastReturnIndex","lastIndexOf"],"sources":["../../src/ios/codeMod.ts"],"sourcesContent":["import { CodeBlock, insertContentsAtOffset, searchFromOffset } from '../utils/commonCodeMod';\nimport { findMatchingBracketPosition } from '../utils/matchBrackets';\n\ninterface SwiftFunctionParam {\n argumentLabel: string;\n parameterName: string;\n typeString: string;\n}\n\ninterface InsertContentFunctionOptions {\n position: 'head' | 'tail' | 'tailBeforeLastReturn';\n indent?: number;\n}\n\n/**\n * Add Objective-C import\n * @param source source contents\n * @param imports array of imports, e.g. ['<Foundation/Foundation.h>']\n * @returns updated contents\n */\nexport function addObjcImports(source: string, imports: string[]): string {\n const lines = source.split('\\n');\n // Try to insert statements after first #import where would probably not in #if block\n const lineIndexWithFirstImport = lines.findIndex((line) => line.match(/^#import .*$/));\n for (const importElement of imports) {\n if (!source.includes(importElement)) {\n const importStatement = `#import ${importElement}`;\n lines.splice(lineIndexWithFirstImport + 1, 0, importStatement);\n }\n }\n return lines.join('\\n');\n}\n\n/**\n * Find code block of Objective-C interface or implementation\n *\n * @param contents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @returns found CodeBlock, or null if not found\n */\nexport function findObjcInterfaceCodeBlock(\n contents: string,\n declaration: string\n): CodeBlock | null {\n const start = contents.search(new RegExp(`^${declaration}\\\\W`, 'm'));\n if (start < 0) {\n return null;\n }\n\n let end = contents.indexOf('\\n@end', start);\n end += 5; // '\\n@end'.length === 5\n\n return {\n start,\n end,\n code: contents.substring(start, end),\n };\n}\n\n/**\n * Find code block of Objective-C function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findObjcFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const symbols = selector.split(':');\n const argsCount = symbols.length - 1;\n let pattern = '^[\\\\-+]\\\\s*\\\\(.+?\\\\)';\n if (argsCount === 0) {\n pattern += `${symbols[0]}\\\\s+`;\n } else {\n for (let i = 0; i < argsCount; ++i) {\n const argSymbol = `${symbols[i]}:\\\\(.+\\\\)\\\\w+`;\n pattern += `${argSymbol}\\\\s+`;\n }\n }\n pattern += '{';\n let start = contents.search(new RegExp(pattern, 'm'));\n if (start < 0) {\n return null;\n }\n start = contents.indexOf('{', start);\n\n const end = findMatchingBracketPosition(contents, '{', start);\n return {\n start,\n end,\n code: contents.substring(start, end + 1),\n };\n}\n\n/**\n * Insert contents to the Objective-C function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'objc');\n}\n\n/**\n * Insert contents to the Objective-C interface/implementation block\n *\n * @param srcContents source contents\n * @param declaration interface/implementation, e.g. '@interface Foo'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideObjcInterfaceBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const codeBlock = findObjcInterfaceCodeBlock(srcContents, declaration);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstNewLineIndex = srcContents.indexOf('\\n', codeBlock.start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstNewLineIndex);\n } else if (position === 'tail') {\n const endLen = '@end'.length;\n srcContents = insertContentsAtOffset(srcContents, insertion, codeBlock.end - endLen);\n }\n return srcContents;\n}\n\n/**\n * Find code block of Swift function without declaration, will return only {} block\n *\n * @param contents source contents\n * @param selector function selector, e.g. 'doSomething(_:withSomeValue:)'\n * @returns found CodeBlock, or null if not found.\n */\nexport function findSwiftFunctionCodeBlock(contents: string, selector: string): CodeBlock | null {\n const parenthesesIndex = selector.indexOf('(');\n // `functName` === 'doSomething' of 'doSomething(_:withSomeValue:)'\n const funcName = selector.substring(0, parenthesesIndex);\n // `argLabels` === ['_', 'withSomeValue'] 'doSomething(_:withSomeValue:)'\n const argLabels = selector.substring(parenthesesIndex + 1, selector.length - 2).split(':');\n\n let searchOffset = 0;\n const funcCandidateRegExp = new RegExp(`\\\\sfunc\\\\s+${funcName}\\\\(`, 'm');\n let funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n while (funcCandidateOffset >= 0) {\n // Parse function parameters\n const paramsStartOffset = contents.indexOf('(', funcCandidateOffset);\n const paramsEndOffset = findMatchingBracketPosition(contents, '(', paramsStartOffset);\n const paramsString = contents.substring(paramsStartOffset + 1, paramsEndOffset);\n const params = paramsString.split(',').map(parseSwiftFunctionParam);\n\n // Prepare offset for next round\n searchOffset = paramsEndOffset + 1;\n funcCandidateOffset = searchFromOffset(contents, funcCandidateRegExp, searchOffset);\n\n // Try to match function parameters\n if (argLabels.length !== params.length) {\n continue;\n }\n for (let i = 0; i < argLabels.length; ++i) {\n if (argLabels[i] !== params[i].argumentLabel) {\n continue;\n }\n }\n\n // This function is matched one, get the code block.\n const codeBlockStart = contents.indexOf('{', paramsEndOffset);\n const codeBlockEnd = findMatchingBracketPosition(contents, '{', paramsEndOffset);\n const codeBlock = contents.substring(codeBlockStart, codeBlockEnd + 1);\n return {\n start: codeBlockStart,\n end: codeBlockEnd,\n code: codeBlock,\n };\n }\n\n return null;\n}\n\nfunction parseSwiftFunctionParam(paramTuple: string): SwiftFunctionParam {\n const semiIndex = paramTuple.indexOf(':');\n const [argumentLabel, parameterName] = paramTuple.substring(0, semiIndex).split(/\\s+/);\n const typeString = paramTuple.substring(semiIndex + 1).trim();\n return {\n argumentLabel,\n parameterName,\n typeString,\n };\n}\n\n/**\n * Insert contents to the swift class block\n *\n * @param srcContents source contents\n * @param declaration class/extension declaration, e.g. 'class AppDelegate'\n * @param insertion code to append\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftClassBlock(\n srcContents: string,\n declaration: string,\n insertion: string,\n options: {\n position: 'head' | 'tail';\n }\n): string {\n const start = srcContents.search(new RegExp(`\\\\s*${declaration}.*?[\\\\(\\\\{]`));\n if (start < 0) {\n throw new Error(`Unable to find class code block - declaration[${declaration}]`);\n }\n\n const { position } = options;\n if (position === 'head') {\n const firstBracketIndex = srcContents.indexOf('{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, firstBracketIndex + 1);\n } else if (position === 'tail') {\n const endBracketIndex = findMatchingBracketPosition(srcContents, '{', start);\n srcContents = insertContentsAtOffset(srcContents, insertion, endBracketIndex);\n }\n return srcContents;\n}\n\n/**\n * Insert contents to the Swift function block\n *\n * @param srcContents source contents\n * @param selector function selector, e.g. 'doSomething:withSomeValue:'\n * @param insertion code to insert\n * @param options insertion options\n * @returns updated contents\n */\nexport function insertContentsInsideSwiftFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions\n): string {\n return insertContentsInsideFunctionBlock(srcContents, selector, insertion, options, 'swift');\n}\n\nfunction insertContentsInsideFunctionBlock(\n srcContents: string,\n selector: string,\n insertion: string,\n options: InsertContentFunctionOptions,\n language: 'objc' | 'swift'\n): string {\n const codeBlock =\n language === 'objc'\n ? findObjcFunctionCodeBlock(srcContents, selector)\n : findSwiftFunctionCodeBlock(srcContents, selector);\n if (!codeBlock) {\n return srcContents;\n }\n\n const { position } = options;\n const indent = ' '.repeat(options.indent ?? 2);\n\n if (position === 'head') {\n srcContents = insertContentsAtOffset(\n srcContents,\n `\\n${indent}${insertion}`,\n codeBlock.start + 1\n );\n } else if (position === 'tail') {\n srcContents = insertContentsAtOffset(srcContents, `\\n${indent}${insertion}`, codeBlock.end - 1);\n } else if (position === 'tailBeforeLastReturn') {\n let lastReturnIndex = srcContents.lastIndexOf(' return ', codeBlock.end);\n if (lastReturnIndex < 0) {\n throw new Error(`Cannot find last return statement:\\n${srcContents}`);\n }\n lastReturnIndex += 1; // +1 for the prefix space\n srcContents = insertContentsAtOffset(srcContents, `${insertion}\\n${indent}`, lastReturnIndex);\n }\n\n return srcContents;\n}\n"],"mappings":"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"}
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Copyright © 2023-present 650 Industries, Inc. (aka Expo)
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
1
7
  import { ExpoConfig } from '@expo/config-types';
2
8
  import xcode, { PBXFile, PBXGroup, PBXNativeTarget, PBXProject, XCBuildConfiguration, XCConfigurationList, XcodeProject } from 'xcode';
3
9
  export type ProjectSectionEntry = [string, PBXProject];
@@ -84,3 +90,4 @@ export declare function isBuildConfig([, sectionItem]: ConfigurationSectionEntry
84
90
  export declare function isNotTestHost([, sectionItem]: ConfigurationSectionEntry): boolean;
85
91
  export declare function isNotComment([key]: ConfigurationSectionEntry | ProjectSectionEntry | ConfigurationListEntry | NativeTargetSectionEntry): boolean;
86
92
  export declare function unquote(value: string): string;
93
+ export declare function resolveXcodeBuildSetting(value: string, lookup: (buildSetting: string) => string | undefined): string;