@expo/config-plugins 7.3.1 → 7.4.0

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 (93) hide show
  1. package/README.md +1 -1
  2. package/build/android/AllowBackup.js +6 -6
  3. package/build/android/AllowBackup.js.map +1 -1
  4. package/build/android/BuildProperties.d.ts +1 -1
  5. package/build/android/BuildProperties.js.map +1 -1
  6. package/build/android/GoogleMapsApiKey.js +6 -6
  7. package/build/android/GoogleMapsApiKey.js.map +1 -1
  8. package/build/android/IntentFilters.js +6 -6
  9. package/build/android/IntentFilters.js.map +1 -1
  10. package/build/android/Manifest.js.map +1 -1
  11. package/build/android/Name.js +12 -12
  12. package/build/android/Name.js.map +1 -1
  13. package/build/android/Orientation.js +6 -6
  14. package/build/android/Orientation.js.map +1 -1
  15. package/build/android/Package.js +7 -7
  16. package/build/android/Package.js.map +1 -1
  17. package/build/android/Paths.js.map +1 -1
  18. package/build/android/Permissions.d.ts +1 -1
  19. package/build/android/Permissions.js +6 -6
  20. package/build/android/Permissions.js.map +1 -1
  21. package/build/android/PrimaryColor.js +7 -7
  22. package/build/android/PrimaryColor.js.map +1 -1
  23. package/build/android/Scheme.js.map +1 -1
  24. package/build/android/StatusBar.d.ts +1 -1
  25. package/build/android/StatusBar.js +7 -7
  26. package/build/android/StatusBar.js.map +1 -1
  27. package/build/android/Updates.d.ts +5 -7
  28. package/build/android/Updates.js +27 -33
  29. package/build/android/Updates.js.map +1 -1
  30. package/build/android/WindowSoftInputMode.d.ts +1 -1
  31. package/build/android/WindowSoftInputMode.js +6 -6
  32. package/build/android/WindowSoftInputMode.js.map +1 -1
  33. package/build/ios/Bitcode.js +7 -7
  34. package/build/ios/Bitcode.js.map +1 -1
  35. package/build/ios/BuildScheme.js +7 -7
  36. package/build/ios/BuildScheme.js.map +1 -1
  37. package/build/ios/BundleIdentifier.d.ts +1 -1
  38. package/build/ios/BundleIdentifier.js +7 -7
  39. package/build/ios/BundleIdentifier.js.map +1 -1
  40. package/build/ios/Entitlements.js +7 -7
  41. package/build/ios/Entitlements.js.map +1 -1
  42. package/build/ios/Google.d.ts +1 -1
  43. package/build/ios/Google.js +7 -7
  44. package/build/ios/Google.js.map +1 -1
  45. package/build/ios/Locales.js +7 -7
  46. package/build/ios/Locales.js.map +1 -1
  47. package/build/ios/Name.d.ts +1 -1
  48. package/build/ios/Name.js +7 -7
  49. package/build/ios/Name.js.map +1 -1
  50. package/build/ios/Orientation.js.map +1 -1
  51. package/build/ios/Paths.js +7 -7
  52. package/build/ios/Paths.js.map +1 -1
  53. package/build/ios/Permissions.d.ts +1 -1
  54. package/build/ios/Permissions.js.map +1 -1
  55. package/build/ios/RequiresFullScreen.js.map +1 -1
  56. package/build/ios/Scheme.js.map +1 -1
  57. package/build/ios/Swift.js +7 -7
  58. package/build/ios/Swift.js.map +1 -1
  59. package/build/ios/Updates.d.ts +4 -6
  60. package/build/ios/Updates.js +7 -9
  61. package/build/ios/Updates.js.map +1 -1
  62. package/build/ios/UsesNonExemptEncryption.js.map +1 -1
  63. package/build/ios/Version.js.map +1 -1
  64. package/build/ios/XcodeProjectFile.js +6 -6
  65. package/build/ios/XcodeProjectFile.js.map +1 -1
  66. package/build/ios/utils/Xcodeproj.js +7 -7
  67. package/build/ios/utils/Xcodeproj.js.map +1 -1
  68. package/build/ios/utils/getInfoPlistPath.js +6 -6
  69. package/build/ios/utils/getInfoPlistPath.js.map +1 -1
  70. package/build/plugins/android-plugins.js.map +1 -1
  71. package/build/plugins/createBaseMod.d.ts +1 -1
  72. package/build/plugins/createBaseMod.js.map +1 -1
  73. package/build/plugins/ios-plugins.js +7 -7
  74. package/build/plugins/ios-plugins.js.map +1 -1
  75. package/build/plugins/mod-compiler.d.ts +1 -1
  76. package/build/plugins/mod-compiler.js +18 -18
  77. package/build/plugins/mod-compiler.js.map +1 -1
  78. package/build/plugins/withAndroidBaseMods.d.ts +1 -1
  79. package/build/plugins/withAndroidBaseMods.js +7 -7
  80. package/build/plugins/withAndroidBaseMods.js.map +1 -1
  81. package/build/plugins/withDangerousMod.js.map +1 -1
  82. package/build/plugins/withIosBaseMods.d.ts +1 -1
  83. package/build/plugins/withIosBaseMods.js +7 -7
  84. package/build/plugins/withIosBaseMods.js.map +1 -1
  85. package/build/plugins/withPlugins.js.map +1 -1
  86. package/build/utils/Updates.d.ts +2 -2
  87. package/build/utils/Updates.js +20 -37
  88. package/build/utils/Updates.js.map +1 -1
  89. package/build/utils/errors.js.map +1 -1
  90. package/build/utils/matchBrackets.d.ts +2 -2
  91. package/build/utils/matchBrackets.js.map +1 -1
  92. package/build/utils/plugin-resolver.js.map +1 -1
  93. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Updates.js","names":["_path","data","_interopRequireDefault","require","_resolveFrom","_androidPlugins","_withPlugins","_Updates","_Manifest","_Resources","_Strings","obj","__esModule","default","CREATE_MANIFEST_ANDROID_PATH","Config","exports","withUpdates","config","expoUsername","withPlugins","withUpdatesManifest","withRuntimeVersionResource","withAndroidManifest","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfig","createStringsXmlPlugin","applyRuntimeVersionFromConfig","stringsJSON","runtimeVersion","getRuntimeVersionNullable","setStringItem","buildResourceItem","name","value","removeStringItem","androidManifest","username","mainApplication","getMainApplicationOrThrow","addMetaDataItemToMainApplication","ENABLED","String","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","removeMetaDataItemFromMainApplication","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeadersStringified","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfig","findMetaDataItem","RUNTIME_VERSION","Error","sdkVersion","getSDKVersion","SDK_VERSION","ensureBuildGradleContainsConfigurationScript","buildGradleContents","isBuildGradleConfigured","cleanedUpBuildGradleContents","isBuildGradleMisconfigured","split","some","line","includes","replace","RegExp","gradleScriptApply","formatApplyLineForBuildGradle","updatesGradleScriptPath","resolveFrom","silent","relativePath","path","relative","join","posixPath","process","platform","androidBuildScript","isMainApplicationMetaDataSet","getMainApplicationMetaDataValue","Boolean","isMainApplicationMetaDataSynced","areVersionsSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/android/Updates.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { createStringsXmlPlugin, withAndroidManifest } from '../plugins/android-plugins';\nimport { withPlugins } from '../plugins/withPlugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullable,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadataStringified,\n getUpdatesRequestHeadersStringified,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\nimport {\n addMetaDataItemToMainApplication,\n AndroidManifest,\n findMetaDataItem,\n getMainApplicationMetaDataValue,\n getMainApplicationOrThrow,\n removeMetaDataItemFromMainApplication,\n} from './Manifest';\nimport { buildResourceItem, ResourceXML } from './Resources';\nimport { removeStringItem, setStringItem } from './Strings';\n\nconst CREATE_MANIFEST_ANDROID_PATH = 'expo-updates/scripts/create-manifest-android.gradle';\n\nexport enum Config {\n ENABLED = 'expo.modules.updates.ENABLED',\n CHECK_ON_LAUNCH = 'expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH',\n LAUNCH_WAIT_MS = 'expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS',\n SDK_VERSION = 'expo.modules.updates.EXPO_SDK_VERSION',\n RUNTIME_VERSION = 'expo.modules.updates.EXPO_RUNTIME_VERSION',\n UPDATE_URL = 'expo.modules.updates.EXPO_UPDATE_URL',\n RELEASE_CHANNEL = 'expo.modules.updates.EXPO_RELEASE_CHANNEL',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'expo.modules.updates.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY',\n CODE_SIGNING_CERTIFICATE = 'expo.modules.updates.CODE_SIGNING_CERTIFICATE',\n CODE_SIGNING_METADATA = 'expo.modules.updates.CODE_SIGNING_METADATA',\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<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withPlugins(config, [[withUpdatesManifest, { expoUsername }], withRuntimeVersionResource]);\n};\n\nconst withUpdatesManifest: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withAndroidManifest(config, (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = setUpdatesConfig(\n projectRoot,\n config,\n config.modResults,\n expoUsername,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nconst withRuntimeVersionResource = createStringsXmlPlugin(\n applyRuntimeVersionFromConfig,\n 'withRuntimeVersionResource'\n);\n\nexport function applyRuntimeVersionFromConfig(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n stringsJSON: ResourceXML\n): ResourceXML {\n const runtimeVersion = getRuntimeVersionNullable(config, 'android');\n if (runtimeVersion) {\n return setStringItem(\n [buildResourceItem({ name: 'expo_runtime_version', value: runtimeVersion })],\n stringsJSON\n );\n }\n return removeStringItem('expo_runtime_version', stringsJSON);\n}\n\nexport function setUpdatesConfig(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n username: string | null,\n expoUpdatesPackageVersion?: string | null\n): AndroidManifest {\n const mainApplication = getMainApplicationOrThrow(androidManifest);\n\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.ENABLED,\n String(getUpdatesEnabled(config, username))\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CHECK_ON_LAUNCH,\n getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion)\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.LAUNCH_WAIT_MS,\n String(getUpdatesTimeout(config))\n );\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n addMetaDataItemToMainApplication(mainApplication, Config.UPDATE_URL, updateUrl);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.UPDATE_URL);\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CODE_SIGNING_CERTIFICATE,\n codeSigningCertificate\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.CODE_SIGNING_CERTIFICATE);\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadataStringified(config);\n if (codeSigningMetadata) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CODE_SIGNING_METADATA,\n codeSigningMetadata\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.CODE_SIGNING_METADATA);\n }\n\n const requestHeaders = getUpdatesRequestHeadersStringified(config);\n if (requestHeaders) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY,\n requestHeaders\n );\n } else {\n removeMetaDataItemFromMainApplication(\n mainApplication,\n Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY\n );\n }\n\n return setVersionsConfig(config, androidManifest);\n}\n\nexport function setVersionsConfig(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n androidManifest: AndroidManifest\n): AndroidManifest {\n const mainApplication = getMainApplicationOrThrow(androidManifest);\n\n const runtimeVersion = getRuntimeVersionNullable(config, 'android');\n if (!runtimeVersion && findMetaDataItem(mainApplication, Config.RUNTIME_VERSION) > -1) {\n throw new Error(\n 'A runtime version is set in your AndroidManifest.xml, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove expo.modules.updates.EXPO_RUNTIME_VERSION from your AndroidManifest.xml.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n removeMetaDataItemFromMainApplication(mainApplication, Config.SDK_VERSION);\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.RUNTIME_VERSION,\n '@string/expo_runtime_version'\n );\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 removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n addMetaDataItemToMainApplication(mainApplication, Config.SDK_VERSION, sdkVersion);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n removeMetaDataItemFromMainApplication(mainApplication, Config.SDK_VERSION);\n }\n\n return androidManifest;\n}\nexport function ensureBuildGradleContainsConfigurationScript(\n projectRoot: string,\n buildGradleContents: string\n): string {\n if (!isBuildGradleConfigured(projectRoot, buildGradleContents)) {\n let cleanedUpBuildGradleContents;\n\n const isBuildGradleMisconfigured = buildGradleContents\n .split('\\n')\n .some((line) => line.includes(CREATE_MANIFEST_ANDROID_PATH));\n if (isBuildGradleMisconfigured) {\n cleanedUpBuildGradleContents = buildGradleContents.replace(\n new RegExp(`(\\n// Integration with Expo updates)?\\n.*${CREATE_MANIFEST_ANDROID_PATH}.*\\n`),\n ''\n );\n } else {\n cleanedUpBuildGradleContents = buildGradleContents;\n }\n\n const gradleScriptApply = formatApplyLineForBuildGradle(projectRoot);\n return `${cleanedUpBuildGradleContents}\\n// Integration with Expo updates\\n${gradleScriptApply}\\n`;\n } else {\n return buildGradleContents;\n }\n}\n\nexport function formatApplyLineForBuildGradle(projectRoot: string): string {\n const updatesGradleScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_ANDROID_PATH);\n\n if (!updatesGradleScriptPath) {\n throw new Error(\n \"Could not find the build script for Android. 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(\n path.join(projectRoot, 'android', 'app'),\n updatesGradleScriptPath\n );\n const posixPath = process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n\n return `apply from: \"${posixPath}\"`;\n}\n\nexport function isBuildGradleConfigured(projectRoot: string, buildGradleContents: string): boolean {\n const androidBuildScript = formatApplyLineForBuildGradle(projectRoot);\n\n return (\n buildGradleContents\n .replace(/\\r\\n/g, '\\n')\n .split('\\n')\n // Check for both single and double quotes\n .some((line) => line === androidBuildScript || line === androidBuildScript.replace(/\"/g, \"'\"))\n );\n}\n\nexport function isMainApplicationMetaDataSet(androidManifest: AndroidManifest): boolean {\n const updateUrl = getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL);\n const runtimeVersion = getMainApplicationMetaDataValue(androidManifest, Config.RUNTIME_VERSION);\n const sdkVersion = getMainApplicationMetaDataValue(androidManifest, Config.SDK_VERSION);\n\n return Boolean(updateUrl && (sdkVersion || runtimeVersion));\n}\n\nexport function isMainApplicationMetaDataSynced(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) ===\n getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL) &&\n String(getUpdatesEnabled(config, username)) ===\n getMainApplicationMetaDataValue(androidManifest, Config.ENABLED) &&\n String(getUpdatesTimeout(config)) ===\n getMainApplicationMetaDataValue(androidManifest, Config.LAUNCH_WAIT_MS) &&\n getUpdatesCheckOnLaunch(config) ===\n getMainApplicationMetaDataValue(androidManifest, Config.CHECK_ON_LAUNCH) &&\n getUpdatesCodeSigningCertificate(projectRoot, config) ===\n getMainApplicationMetaDataValue(androidManifest, Config.CODE_SIGNING_CERTIFICATE) &&\n getUpdatesCodeSigningMetadataStringified(config) ===\n getMainApplicationMetaDataValue(androidManifest, Config.CODE_SIGNING_METADATA) &&\n areVersionsSynced(config, androidManifest)\n );\n}\n\nexport function areVersionsSynced(\n config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>,\n androidManifest: AndroidManifest\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersionNullable(config, 'android');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = getMainApplicationMetaDataValue(\n androidManifest,\n Config.RUNTIME_VERSION\n );\n const currentSdkVersion = getMainApplicationMetaDataValue(androidManifest, Config.SDK_VERSION);\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","_interopRequireDefault","require","_resolveFrom","_Manifest","_Resources","_Strings","_androidPlugins","_withPlugins","_Updates","obj","__esModule","default","CREATE_MANIFEST_ANDROID_PATH","Config","exports","withUpdates","config","withPlugins","withUpdatesManifest","withRuntimeVersionResource","withAndroidManifest","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfig","createStringsXmlPlugin","applyRuntimeVersionFromConfig","stringsJSON","runtimeVersion","getRuntimeVersionNullable","setStringItem","buildResourceItem","name","value","removeStringItem","androidManifest","mainApplication","getMainApplicationOrThrow","addMetaDataItemToMainApplication","ENABLED","String","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","removeMetaDataItemFromMainApplication","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeadersStringified","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfig","findMetaDataItem","RUNTIME_VERSION","Error","sdkVersion","getSDKVersion","SDK_VERSION","ensureBuildGradleContainsConfigurationScript","buildGradleContents","isBuildGradleConfigured","cleanedUpBuildGradleContents","isBuildGradleMisconfigured","split","some","line","includes","replace","RegExp","gradleScriptApply","formatApplyLineForBuildGradle","updatesGradleScriptPath","resolveFrom","silent","relativePath","path","relative","join","posixPath","process","platform","androidBuildScript","isMainApplicationMetaDataSet","getMainApplicationMetaDataValue","Boolean","isMainApplicationMetaDataSynced","areVersionsSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/android/Updates.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport {\n addMetaDataItemToMainApplication,\n AndroidManifest,\n findMetaDataItem,\n getMainApplicationMetaDataValue,\n getMainApplicationOrThrow,\n removeMetaDataItemFromMainApplication,\n} from './Manifest';\nimport { buildResourceItem, ResourceXML } from './Resources';\nimport { removeStringItem, setStringItem } from './Strings';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { createStringsXmlPlugin, withAndroidManifest } from '../plugins/android-plugins';\nimport { withPlugins } from '../plugins/withPlugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullable,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadataStringified,\n getUpdatesRequestHeadersStringified,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\n\nconst CREATE_MANIFEST_ANDROID_PATH = 'expo-updates/scripts/create-manifest-android.gradle';\n\nexport enum Config {\n ENABLED = 'expo.modules.updates.ENABLED',\n CHECK_ON_LAUNCH = 'expo.modules.updates.EXPO_UPDATES_CHECK_ON_LAUNCH',\n LAUNCH_WAIT_MS = 'expo.modules.updates.EXPO_UPDATES_LAUNCH_WAIT_MS',\n SDK_VERSION = 'expo.modules.updates.EXPO_SDK_VERSION',\n RUNTIME_VERSION = 'expo.modules.updates.EXPO_RUNTIME_VERSION',\n UPDATE_URL = 'expo.modules.updates.EXPO_UPDATE_URL',\n RELEASE_CHANNEL = 'expo.modules.updates.EXPO_RELEASE_CHANNEL',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'expo.modules.updates.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY',\n CODE_SIGNING_CERTIFICATE = 'expo.modules.updates.CODE_SIGNING_CERTIFICATE',\n CODE_SIGNING_METADATA = 'expo.modules.updates.CODE_SIGNING_METADATA',\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 withPlugins(config, [withUpdatesManifest, withRuntimeVersionResource]);\n};\n\nconst withUpdatesManifest: ConfigPlugin = (config) => {\n return withAndroidManifest(config, (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = setUpdatesConfig(\n projectRoot,\n config,\n config.modResults,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nconst withRuntimeVersionResource = createStringsXmlPlugin(\n applyRuntimeVersionFromConfig,\n 'withRuntimeVersionResource'\n);\n\nexport function applyRuntimeVersionFromConfig(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n stringsJSON: ResourceXML\n): ResourceXML {\n const runtimeVersion = getRuntimeVersionNullable(config, 'android');\n if (runtimeVersion) {\n return setStringItem(\n [buildResourceItem({ name: 'expo_runtime_version', value: runtimeVersion })],\n stringsJSON\n );\n }\n return removeStringItem('expo_runtime_version', stringsJSON);\n}\n\nexport function setUpdatesConfig(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n expoUpdatesPackageVersion?: string | null\n): AndroidManifest {\n const mainApplication = getMainApplicationOrThrow(androidManifest);\n\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.ENABLED,\n String(getUpdatesEnabled(config))\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CHECK_ON_LAUNCH,\n getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion)\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.LAUNCH_WAIT_MS,\n String(getUpdatesTimeout(config))\n );\n\n const updateUrl = getUpdateUrl(config);\n if (updateUrl) {\n addMetaDataItemToMainApplication(mainApplication, Config.UPDATE_URL, updateUrl);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.UPDATE_URL);\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CODE_SIGNING_CERTIFICATE,\n codeSigningCertificate\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.CODE_SIGNING_CERTIFICATE);\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadataStringified(config);\n if (codeSigningMetadata) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CODE_SIGNING_METADATA,\n codeSigningMetadata\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.CODE_SIGNING_METADATA);\n }\n\n const requestHeaders = getUpdatesRequestHeadersStringified(config);\n if (requestHeaders) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY,\n requestHeaders\n );\n } else {\n removeMetaDataItemFromMainApplication(\n mainApplication,\n Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY\n );\n }\n\n return setVersionsConfig(config, androidManifest);\n}\n\nexport function setVersionsConfig(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n androidManifest: AndroidManifest\n): AndroidManifest {\n const mainApplication = getMainApplicationOrThrow(androidManifest);\n\n const runtimeVersion = getRuntimeVersionNullable(config, 'android');\n if (!runtimeVersion && findMetaDataItem(mainApplication, Config.RUNTIME_VERSION) > -1) {\n throw new Error(\n 'A runtime version is set in your AndroidManifest.xml, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove expo.modules.updates.EXPO_RUNTIME_VERSION from your AndroidManifest.xml.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n removeMetaDataItemFromMainApplication(mainApplication, Config.SDK_VERSION);\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.RUNTIME_VERSION,\n '@string/expo_runtime_version'\n );\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 removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n addMetaDataItemToMainApplication(mainApplication, Config.SDK_VERSION, sdkVersion);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n removeMetaDataItemFromMainApplication(mainApplication, Config.SDK_VERSION);\n }\n\n return androidManifest;\n}\nexport function ensureBuildGradleContainsConfigurationScript(\n projectRoot: string,\n buildGradleContents: string\n): string {\n if (!isBuildGradleConfigured(projectRoot, buildGradleContents)) {\n let cleanedUpBuildGradleContents;\n\n const isBuildGradleMisconfigured = buildGradleContents\n .split('\\n')\n .some((line) => line.includes(CREATE_MANIFEST_ANDROID_PATH));\n if (isBuildGradleMisconfigured) {\n cleanedUpBuildGradleContents = buildGradleContents.replace(\n new RegExp(`(\\n// Integration with Expo updates)?\\n.*${CREATE_MANIFEST_ANDROID_PATH}.*\\n`),\n ''\n );\n } else {\n cleanedUpBuildGradleContents = buildGradleContents;\n }\n\n const gradleScriptApply = formatApplyLineForBuildGradle(projectRoot);\n return `${cleanedUpBuildGradleContents}\\n// Integration with Expo updates\\n${gradleScriptApply}\\n`;\n } else {\n return buildGradleContents;\n }\n}\n\nexport function formatApplyLineForBuildGradle(projectRoot: string): string {\n const updatesGradleScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_ANDROID_PATH);\n\n if (!updatesGradleScriptPath) {\n throw new Error(\n \"Could not find the build script for Android. 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(\n path.join(projectRoot, 'android', 'app'),\n updatesGradleScriptPath\n );\n const posixPath = process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n\n return `apply from: \"${posixPath}\"`;\n}\n\nexport function isBuildGradleConfigured(projectRoot: string, buildGradleContents: string): boolean {\n const androidBuildScript = formatApplyLineForBuildGradle(projectRoot);\n\n return (\n buildGradleContents\n .replace(/\\r\\n/g, '\\n')\n .split('\\n')\n // Check for both single and double quotes\n .some((line) => line === androidBuildScript || line === androidBuildScript.replace(/\"/g, \"'\"))\n );\n}\n\nexport function isMainApplicationMetaDataSet(androidManifest: AndroidManifest): boolean {\n const updateUrl = getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL);\n const runtimeVersion = getMainApplicationMetaDataValue(androidManifest, Config.RUNTIME_VERSION);\n const sdkVersion = getMainApplicationMetaDataValue(androidManifest, Config.SDK_VERSION);\n\n return Boolean(updateUrl && (sdkVersion || runtimeVersion));\n}\n\nexport function isMainApplicationMetaDataSynced(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest\n): boolean {\n return (\n getUpdateUrl(config) === getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL) &&\n String(getUpdatesEnabled(config)) ===\n getMainApplicationMetaDataValue(androidManifest, Config.ENABLED) &&\n String(getUpdatesTimeout(config)) ===\n getMainApplicationMetaDataValue(androidManifest, Config.LAUNCH_WAIT_MS) &&\n getUpdatesCheckOnLaunch(config) ===\n getMainApplicationMetaDataValue(androidManifest, Config.CHECK_ON_LAUNCH) &&\n getUpdatesCodeSigningCertificate(projectRoot, config) ===\n getMainApplicationMetaDataValue(androidManifest, Config.CODE_SIGNING_CERTIFICATE) &&\n getUpdatesCodeSigningMetadataStringified(config) ===\n getMainApplicationMetaDataValue(androidManifest, Config.CODE_SIGNING_METADATA) &&\n areVersionsSynced(config, androidManifest)\n );\n}\n\nexport function areVersionsSynced(\n config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>,\n androidManifest: AndroidManifest\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersionNullable(config, 'android');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = getMainApplicationMetaDataValue(\n androidManifest,\n Config.RUNTIME_VERSION\n );\n const currentSdkVersion = getMainApplicationMetaDataValue(androidManifest, Config.SDK_VERSION);\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,6 +1,6 @@
1
1
  import { ExpoConfig } from '@expo/config-types';
2
- import { ConfigPlugin } from '../Plugin.types';
3
2
  import { AndroidManifest } from './Manifest';
3
+ import { ConfigPlugin } from '../Plugin.types';
4
4
  export declare const withWindowSoftInputMode: ConfigPlugin;
5
5
  export declare function setWindowSoftInputModeMode(config: Pick<ExpoConfig, 'android' | 'userInterfaceStyle'>, androidManifest: AndroidManifest): AndroidManifest;
6
6
  export declare function getWindowSoftInputModeMode(config: Pick<ExpoConfig, 'android'>): string;
@@ -6,16 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getWindowSoftInputModeMode = getWindowSoftInputModeMode;
7
7
  exports.setWindowSoftInputModeMode = setWindowSoftInputModeMode;
8
8
  exports.withWindowSoftInputMode = void 0;
9
- function _androidPlugins() {
10
- const data = require("../plugins/android-plugins");
11
- _androidPlugins = function () {
9
+ function _Manifest() {
10
+ const data = require("./Manifest");
11
+ _Manifest = function () {
12
12
  return data;
13
13
  };
14
14
  return data;
15
15
  }
16
- function _Manifest() {
17
- const data = require("./Manifest");
18
- _Manifest = function () {
16
+ function _androidPlugins() {
17
+ const data = require("../plugins/android-plugins");
18
+ _androidPlugins = function () {
19
19
  return data;
20
20
  };
21
21
  return data;
@@ -1 +1 @@
1
- {"version":3,"file":"WindowSoftInputMode.js","names":["_androidPlugins","data","require","_Manifest","ANDROID_WINDOW_SOFT_INPUT_MODE","MAPPING","pan","resize","withWindowSoftInputMode","config","withAndroidManifest","modResults","setWindowSoftInputModeMode","exports","androidManifest","app","getMainActivityOrThrow","$","getWindowSoftInputModeMode","_config$android","_MAPPING$value","value","android","softwareKeyboardLayoutMode"],"sources":["../../src/android/WindowSoftInputMode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport { AndroidManifest, getMainActivityOrThrow } from './Manifest';\n\nconst ANDROID_WINDOW_SOFT_INPUT_MODE = 'android:windowSoftInputMode';\n\nconst MAPPING: Record<string, string> = {\n pan: 'adjustPan',\n resize: 'adjustResize',\n};\n\nexport const withWindowSoftInputMode: ConfigPlugin = (config) => {\n return withAndroidManifest(config, async (config) => {\n config.modResults = setWindowSoftInputModeMode(config, config.modResults);\n return config;\n });\n};\n\nexport function setWindowSoftInputModeMode(\n config: Pick<ExpoConfig, 'android' | 'userInterfaceStyle'>,\n androidManifest: AndroidManifest\n) {\n const app = getMainActivityOrThrow(androidManifest);\n app.$[ANDROID_WINDOW_SOFT_INPUT_MODE] = getWindowSoftInputModeMode(config);\n return androidManifest;\n}\n\nexport function getWindowSoftInputModeMode(config: Pick<ExpoConfig, 'android'>) {\n const value = config.android?.softwareKeyboardLayoutMode;\n\n if (!value) {\n // Default to `adjustResize` or `resize`.\n return 'adjustResize';\n }\n return MAPPING[value] ?? value;\n}\n"],"mappings":";;;;;;;;AAGA,SAAAA,gBAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,eAAA,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;AAEA,MAAMG,8BAA8B,GAAG,6BAA6B;AAEpE,MAAMC,OAA+B,GAAG;EACtCC,GAAG,EAAE,WAAW;EAChBC,MAAM,EAAE;AACV,CAAC;AAEM,MAAMC,uBAAqC,GAAIC,MAAM,IAAK;EAC/D,OAAO,IAAAC,qCAAmB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IACnDA,MAAM,CAACE,UAAU,GAAGC,0BAA0B,CAACH,MAAM,EAAEA,MAAM,CAACE,UAAU,CAAC;IACzE,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACI,OAAA,CAAAL,uBAAA,GAAAA,uBAAA;AAEK,SAASI,0BAA0BA,CACxCH,MAA0D,EAC1DK,eAAgC,EAChC;EACA,MAAMC,GAAG,GAAG,IAAAC,kCAAsB,EAACF,eAAe,CAAC;EACnDC,GAAG,CAACE,CAAC,CAACb,8BAA8B,CAAC,GAAGc,0BAA0B,CAACT,MAAM,CAAC;EAC1E,OAAOK,eAAe;AACxB;AAEO,SAASI,0BAA0BA,CAACT,MAAmC,EAAE;EAAA,IAAAU,eAAA,EAAAC,cAAA;EAC9E,MAAMC,KAAK,IAAAF,eAAA,GAAGV,MAAM,CAACa,OAAO,cAAAH,eAAA,uBAAdA,eAAA,CAAgBI,0BAA0B;EAExD,IAAI,CAACF,KAAK,EAAE;IACV;IACA,OAAO,cAAc;EACvB;EACA,QAAAD,cAAA,GAAOf,OAAO,CAACgB,KAAK,CAAC,cAAAD,cAAA,cAAAA,cAAA,GAAIC,KAAK;AAChC"}
1
+ {"version":3,"file":"WindowSoftInputMode.js","names":["_Manifest","data","require","_androidPlugins","ANDROID_WINDOW_SOFT_INPUT_MODE","MAPPING","pan","resize","withWindowSoftInputMode","config","withAndroidManifest","modResults","setWindowSoftInputModeMode","exports","androidManifest","app","getMainActivityOrThrow","$","getWindowSoftInputModeMode","_config$android","_MAPPING$value","value","android","softwareKeyboardLayoutMode"],"sources":["../../src/android/WindowSoftInputMode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { AndroidManifest, getMainActivityOrThrow } from './Manifest';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\n\nconst ANDROID_WINDOW_SOFT_INPUT_MODE = 'android:windowSoftInputMode';\n\nconst MAPPING: Record<string, string> = {\n pan: 'adjustPan',\n resize: 'adjustResize',\n};\n\nexport const withWindowSoftInputMode: ConfigPlugin = (config) => {\n return withAndroidManifest(config, async (config) => {\n config.modResults = setWindowSoftInputModeMode(config, config.modResults);\n return config;\n });\n};\n\nexport function setWindowSoftInputModeMode(\n config: Pick<ExpoConfig, 'android' | 'userInterfaceStyle'>,\n androidManifest: AndroidManifest\n) {\n const app = getMainActivityOrThrow(androidManifest);\n app.$[ANDROID_WINDOW_SOFT_INPUT_MODE] = getWindowSoftInputModeMode(config);\n return androidManifest;\n}\n\nexport function getWindowSoftInputModeMode(config: Pick<ExpoConfig, 'android'>) {\n const value = config.android?.softwareKeyboardLayoutMode;\n\n if (!value) {\n // Default to `adjustResize` or `resize`.\n return 'adjustResize';\n }\n return MAPPING[value] ?? value;\n}\n"],"mappings":";;;;;;;;AAEA,SAAAA,UAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,SAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,gBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,eAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,MAAMG,8BAA8B,GAAG,6BAA6B;AAEpE,MAAMC,OAA+B,GAAG;EACtCC,GAAG,EAAE,WAAW;EAChBC,MAAM,EAAE;AACV,CAAC;AAEM,MAAMC,uBAAqC,GAAIC,MAAM,IAAK;EAC/D,OAAO,IAAAC,qCAAmB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IACnDA,MAAM,CAACE,UAAU,GAAGC,0BAA0B,CAACH,MAAM,EAAEA,MAAM,CAACE,UAAU,CAAC;IACzE,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACI,OAAA,CAAAL,uBAAA,GAAAA,uBAAA;AAEK,SAASI,0BAA0BA,CACxCH,MAA0D,EAC1DK,eAAgC,EAChC;EACA,MAAMC,GAAG,GAAG,IAAAC,kCAAsB,EAACF,eAAe,CAAC;EACnDC,GAAG,CAACE,CAAC,CAACb,8BAA8B,CAAC,GAAGc,0BAA0B,CAACT,MAAM,CAAC;EAC1E,OAAOK,eAAe;AACxB;AAEO,SAASI,0BAA0BA,CAACT,MAAmC,EAAE;EAAA,IAAAU,eAAA,EAAAC,cAAA;EAC9E,MAAMC,KAAK,IAAAF,eAAA,GAAGV,MAAM,CAACa,OAAO,cAAAH,eAAA,uBAAdA,eAAA,CAAgBI,0BAA0B;EAExD,IAAI,CAACF,KAAK,EAAE;IACV;IACA,OAAO,cAAc;EACvB;EACA,QAAAD,cAAA,GAAOf,OAAO,CAACgB,KAAK,CAAC,cAAAD,cAAA,cAAAA,cAAA,GAAIC,KAAK;AAChC"}
@@ -7,6 +7,13 @@ exports.getBitcode = getBitcode;
7
7
  exports.setBitcode = setBitcode;
8
8
  exports.setBitcodeWithConfig = setBitcodeWithConfig;
9
9
  exports.withCustomBitcode = exports.withBitcode = void 0;
10
+ function _Xcodeproj() {
11
+ const data = require("./utils/Xcodeproj");
12
+ _Xcodeproj = function () {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
10
17
  function _iosPlugins() {
11
18
  const data = require("../plugins/ios-plugins");
12
19
  _iosPlugins = function () {
@@ -21,13 +28,6 @@ function _warnings() {
21
28
  };
22
29
  return data;
23
30
  }
24
- function _Xcodeproj() {
25
- const data = require("./utils/Xcodeproj");
26
- _Xcodeproj = function () {
27
- return data;
28
- };
29
- return data;
30
- }
31
31
  /**
32
32
  * Plugin to set a bitcode preference for the Xcode project
33
33
  * based on the project's Expo config `ios.bitcode` value.
@@ -1 +1 @@
1
- {"version":3,"file":"Bitcode.js","names":["_iosPlugins","data","require","_warnings","_Xcodeproj","withBitcode","config","withXcodeProject","modResults","setBitcodeWithConfig","project","exports","withCustomBitcode","bitcode","setBitcode","getBitcode","_config$ios","ios","isDefaultBehavior","targetName","undefined","isBitcodeEnabled","configs","Object","entries","pbxXCBuildConfigurationSection","filter","isNotComment","hasConfiguration","find","configuration","name","addBuildProperty","names","Set","map","sort","addWarningIOS","join"],"sources":["../../src/ios/Bitcode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\nimport { isNotComment } from './utils/Xcodeproj';\n\ntype Bitcode = NonNullable<ExpoConfig['ios']>['bitcode'];\n\n/**\n * Plugin to set a bitcode preference for the Xcode project\n * based on the project's Expo config `ios.bitcode` value.\n */\nexport const withBitcode: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcodeWithConfig(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Plugin to set a custom bitcode preference for the Xcode project.\n * Does not read from the Expo config `ios.bitcode`.\n *\n * @param bitcode custom bitcode setting.\n */\nexport const withCustomBitcode: ConfigPlugin<Bitcode> = (config, bitcode) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcode(bitcode, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Get the bitcode preference from the Expo config.\n */\nexport function getBitcode(config: Pick<ExpoConfig, 'ios'>): Bitcode {\n return config.ios?.bitcode;\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property of the project configurations.\n */\nexport function setBitcodeWithConfig(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const bitcode = getBitcode(config);\n return setBitcode(bitcode, { project });\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property.\n */\nexport function setBitcode(bitcode: Bitcode, { project }: { project: XcodeProject }): XcodeProject {\n const isDefaultBehavior = bitcode == null;\n // If the value is undefined, then do nothing.\n if (isDefaultBehavior) {\n return project;\n }\n\n const targetName = typeof bitcode === 'string' ? bitcode : undefined;\n const isBitcodeEnabled = !!bitcode;\n if (targetName) {\n // Assert if missing\n const configs = Object.entries(project.pbxXCBuildConfigurationSection()).filter(isNotComment);\n const hasConfiguration = configs.find(([, configuration]) => configuration.name === targetName);\n if (hasConfiguration) {\n // If targetName is defined then disable bitcode everywhere.\n project.addBuildProperty('ENABLE_BITCODE', 'NO');\n } else {\n const names = [\n // Remove duplicates, wrap in double quotes, and sort alphabetically.\n ...new Set(configs.map(([, configuration]) => `\"${configuration.name}\"`)),\n ].sort();\n addWarningIOS(\n 'ios.bitcode',\n `No configuration named \"${targetName}\". Expected one of: ${names.join(', ')}.`\n );\n }\n }\n\n project.addBuildProperty('ENABLE_BITCODE', isBitcodeEnabled ? 'YES' : 'NO', targetName);\n\n return project;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Bitcode.js","names":["_Xcodeproj","data","require","_iosPlugins","_warnings","withBitcode","config","withXcodeProject","modResults","setBitcodeWithConfig","project","exports","withCustomBitcode","bitcode","setBitcode","getBitcode","_config$ios","ios","isDefaultBehavior","targetName","undefined","isBitcodeEnabled","configs","Object","entries","pbxXCBuildConfigurationSection","filter","isNotComment","hasConfiguration","find","configuration","name","addBuildProperty","names","Set","map","sort","addWarningIOS","join"],"sources":["../../src/ios/Bitcode.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { XcodeProject } from 'xcode';\n\nimport { isNotComment } from './utils/Xcodeproj';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withXcodeProject } from '../plugins/ios-plugins';\nimport { addWarningIOS } from '../utils/warnings';\n\ntype Bitcode = NonNullable<ExpoConfig['ios']>['bitcode'];\n\n/**\n * Plugin to set a bitcode preference for the Xcode project\n * based on the project's Expo config `ios.bitcode` value.\n */\nexport const withBitcode: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcodeWithConfig(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Plugin to set a custom bitcode preference for the Xcode project.\n * Does not read from the Expo config `ios.bitcode`.\n *\n * @param bitcode custom bitcode setting.\n */\nexport const withCustomBitcode: ConfigPlugin<Bitcode> = (config, bitcode) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setBitcode(bitcode, {\n project: config.modResults,\n });\n return config;\n });\n};\n\n/**\n * Get the bitcode preference from the Expo config.\n */\nexport function getBitcode(config: Pick<ExpoConfig, 'ios'>): Bitcode {\n return config.ios?.bitcode;\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property of the project configurations.\n */\nexport function setBitcodeWithConfig(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const bitcode = getBitcode(config);\n return setBitcode(bitcode, { project });\n}\n\n/**\n * Enable or disable the `ENABLE_BITCODE` property.\n */\nexport function setBitcode(bitcode: Bitcode, { project }: { project: XcodeProject }): XcodeProject {\n const isDefaultBehavior = bitcode == null;\n // If the value is undefined, then do nothing.\n if (isDefaultBehavior) {\n return project;\n }\n\n const targetName = typeof bitcode === 'string' ? bitcode : undefined;\n const isBitcodeEnabled = !!bitcode;\n if (targetName) {\n // Assert if missing\n const configs = Object.entries(project.pbxXCBuildConfigurationSection()).filter(isNotComment);\n const hasConfiguration = configs.find(([, configuration]) => configuration.name === targetName);\n if (hasConfiguration) {\n // If targetName is defined then disable bitcode everywhere.\n project.addBuildProperty('ENABLE_BITCODE', 'NO');\n } else {\n const names = [\n // Remove duplicates, wrap in double quotes, and sort alphabetically.\n ...new Set(configs.map(([, configuration]) => `\"${configuration.name}\"`)),\n ].sort();\n addWarningIOS(\n 'ios.bitcode',\n `No configuration named \"${targetName}\". Expected one of: ${names.join(', ')}.`\n );\n }\n }\n\n project.addBuildProperty('ENABLE_BITCODE', isBitcodeEnabled ? 'YES' : 'NO', targetName);\n\n return project;\n}\n"],"mappings":"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"}
@@ -7,13 +7,6 @@ exports.getApplicationTargetNameForSchemeAsync = getApplicationTargetNameForSche
7
7
  exports.getArchiveBuildConfigurationForSchemeAsync = getArchiveBuildConfigurationForSchemeAsync;
8
8
  exports.getRunnableSchemesFromXcodeproj = getRunnableSchemesFromXcodeproj;
9
9
  exports.getSchemesFromXcodeproj = getSchemesFromXcodeproj;
10
- function _XML() {
11
- const data = require("../utils/XML");
12
- _XML = function () {
13
- return data;
14
- };
15
- return data;
16
- }
17
10
  function _Paths() {
18
11
  const data = require("./Paths");
19
12
  _Paths = function () {
@@ -35,6 +28,13 @@ function _Xcodeproj() {
35
28
  };
36
29
  return data;
37
30
  }
31
+ function _XML() {
32
+ const data = require("../utils/XML");
33
+ _XML = function () {
34
+ return data;
35
+ };
36
+ return data;
37
+ }
38
38
  function getSchemesFromXcodeproj(projectRoot) {
39
39
  return (0, _Paths().findSchemeNames)(projectRoot);
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BuildScheme.js","names":["_XML","data","require","_Paths","_Target","_Xcodeproj","getSchemesFromXcodeproj","projectRoot","findSchemeNames","getRunnableSchemesFromXcodeproj","configuration","project","getPbxproj","findSignableTargets","map","target","osType","type","unquote","productType","TargetType","WATCH","startsWith","APPLICATION","xcConfigurationList","hash","objects","XCConfigurationList","buildConfigurationList","buildConfiguration","buildConfigurations","find","value","comment","_project$hash$project","xcBuildConfiguration","XCBuildConfiguration","buildSdkRoot","buildSettings","SDKROOT","name","readSchemeAsync","scheme","allSchemePaths","findSchemePaths","re","RegExp","schemePath","i","exec","readXMLAsync","path","Error","getApplicationTargetNameForSchemeAsync","_schemeXML$Scheme","_schemeXML$Scheme$Bui","_schemeXML$Scheme$Bui2","_schemeXML$Scheme$Bui3","_schemeXML$Scheme$Bui4","schemeXML","buildActionEntry","Scheme","BuildAction","BuildActionEntries","BuildActionEntry","targetName","length","getBlueprintName","entry","_entry$BuildableRefer","_entry$BuildableRefer2","_entry$BuildableRefer3","_entry$BuildableRefer4","BuildableReference","BuildableName","endsWith","getArchiveBuildConfigurationForSchemeAsync","_schemeXML$Scheme2","_schemeXML$Scheme2$Ar","_schemeXML$Scheme2$Ar2","_schemeXML$Scheme2$Ar3","ArchiveAction","_entry$BuildableRefer5","_entry$BuildableRefer6","_entry$BuildableRefer7","BlueprintName"],"sources":["../../src/ios/BuildScheme.ts"],"sourcesContent":["import { readXMLAsync } from '../utils/XML';\nimport { findSchemeNames, findSchemePaths } from './Paths';\nimport { findSignableTargets, TargetType } from './Target';\nimport { getPbxproj, unquote } from './utils/Xcodeproj';\n\ninterface SchemeXML {\n Scheme?: {\n BuildAction?: {\n BuildActionEntries?: {\n BuildActionEntry?: BuildActionEntryType[];\n }[];\n }[];\n ArchiveAction?: {\n $?: {\n buildConfiguration?: string;\n };\n }[];\n };\n}\n\ninterface BuildActionEntryType {\n BuildableReference?: {\n $?: {\n BlueprintName?: string;\n BuildableName?: string;\n };\n }[];\n}\n\nexport function getSchemesFromXcodeproj(projectRoot: string): string[] {\n return findSchemeNames(projectRoot);\n}\n\nexport function getRunnableSchemesFromXcodeproj(\n projectRoot: string,\n { configuration = 'Debug' }: { configuration?: 'Debug' | 'Release' } = {}\n): { name: string; osType: string; type: string }[] {\n const project = getPbxproj(projectRoot);\n\n return findSignableTargets(project).map(([, target]) => {\n let osType = 'iOS';\n const type = unquote(target.productType);\n\n if (type === TargetType.WATCH) {\n osType = 'watchOS';\n } else if (\n // (apps) com.apple.product-type.application\n // (app clips) com.apple.product-type.application.on-demand-install-capable\n // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.\n type.startsWith(TargetType.APPLICATION)\n ) {\n // Attempt to resolve the platform SDK for each target so we can filter devices.\n const xcConfigurationList =\n project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];\n\n if (xcConfigurationList) {\n const buildConfiguration =\n xcConfigurationList.buildConfigurations.find(\n (value: { comment: string; value: string }) => value.comment === configuration\n ) || xcConfigurationList.buildConfigurations[0];\n if (buildConfiguration?.value) {\n const xcBuildConfiguration =\n project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];\n\n const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;\n if (\n buildSdkRoot === 'appletvos' ||\n 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings\n ) {\n // Is a TV app...\n osType = 'tvOS';\n } else if (buildSdkRoot === 'iphoneos') {\n osType = 'iOS';\n }\n }\n }\n }\n\n return {\n name: unquote(target.name),\n osType,\n type: unquote(target.productType),\n };\n });\n}\n\nasync function readSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<SchemeXML | undefined> {\n const allSchemePaths = findSchemePaths(projectRoot);\n const re = new RegExp(`/${scheme}.xcscheme`, 'i');\n const schemePath = allSchemePaths.find((i) => re.exec(i));\n if (schemePath) {\n return (await readXMLAsync({ path: schemePath })) as unknown as SchemeXML | undefined;\n } else {\n throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);\n }\n}\n\nexport async function getApplicationTargetNameForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildActionEntry =\n schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;\n const targetName =\n buildActionEntry?.length === 1\n ? getBlueprintName(buildActionEntry[0])\n : getBlueprintName(\n buildActionEntry?.find((entry) => {\n return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');\n })\n );\n if (!targetName) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return targetName;\n}\n\nexport async function getArchiveBuildConfigurationForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;\n if (!buildConfiguration) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return buildConfiguration;\n}\n\nfunction getBlueprintName(entry?: BuildActionEntryType): string | undefined {\n return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"BuildScheme.js","names":["_Paths","data","require","_Target","_Xcodeproj","_XML","getSchemesFromXcodeproj","projectRoot","findSchemeNames","getRunnableSchemesFromXcodeproj","configuration","project","getPbxproj","findSignableTargets","map","target","osType","type","unquote","productType","TargetType","WATCH","startsWith","APPLICATION","xcConfigurationList","hash","objects","XCConfigurationList","buildConfigurationList","buildConfiguration","buildConfigurations","find","value","comment","_project$hash$project","xcBuildConfiguration","XCBuildConfiguration","buildSdkRoot","buildSettings","SDKROOT","name","readSchemeAsync","scheme","allSchemePaths","findSchemePaths","re","RegExp","schemePath","i","exec","readXMLAsync","path","Error","getApplicationTargetNameForSchemeAsync","_schemeXML$Scheme","_schemeXML$Scheme$Bui","_schemeXML$Scheme$Bui2","_schemeXML$Scheme$Bui3","_schemeXML$Scheme$Bui4","schemeXML","buildActionEntry","Scheme","BuildAction","BuildActionEntries","BuildActionEntry","targetName","length","getBlueprintName","entry","_entry$BuildableRefer","_entry$BuildableRefer2","_entry$BuildableRefer3","_entry$BuildableRefer4","BuildableReference","BuildableName","endsWith","getArchiveBuildConfigurationForSchemeAsync","_schemeXML$Scheme2","_schemeXML$Scheme2$Ar","_schemeXML$Scheme2$Ar2","_schemeXML$Scheme2$Ar3","ArchiveAction","_entry$BuildableRefer5","_entry$BuildableRefer6","_entry$BuildableRefer7","BlueprintName"],"sources":["../../src/ios/BuildScheme.ts"],"sourcesContent":["import { findSchemeNames, findSchemePaths } from './Paths';\nimport { findSignableTargets, TargetType } from './Target';\nimport { getPbxproj, unquote } from './utils/Xcodeproj';\nimport { readXMLAsync } from '../utils/XML';\n\ninterface SchemeXML {\n Scheme?: {\n BuildAction?: {\n BuildActionEntries?: {\n BuildActionEntry?: BuildActionEntryType[];\n }[];\n }[];\n ArchiveAction?: {\n $?: {\n buildConfiguration?: string;\n };\n }[];\n };\n}\n\ninterface BuildActionEntryType {\n BuildableReference?: {\n $?: {\n BlueprintName?: string;\n BuildableName?: string;\n };\n }[];\n}\n\nexport function getSchemesFromXcodeproj(projectRoot: string): string[] {\n return findSchemeNames(projectRoot);\n}\n\nexport function getRunnableSchemesFromXcodeproj(\n projectRoot: string,\n { configuration = 'Debug' }: { configuration?: 'Debug' | 'Release' } = {}\n): { name: string; osType: string; type: string }[] {\n const project = getPbxproj(projectRoot);\n\n return findSignableTargets(project).map(([, target]) => {\n let osType = 'iOS';\n const type = unquote(target.productType);\n\n if (type === TargetType.WATCH) {\n osType = 'watchOS';\n } else if (\n // (apps) com.apple.product-type.application\n // (app clips) com.apple.product-type.application.on-demand-install-capable\n // NOTE(EvanBacon): This matches against `watchOS` as well so we check for watch first.\n type.startsWith(TargetType.APPLICATION)\n ) {\n // Attempt to resolve the platform SDK for each target so we can filter devices.\n const xcConfigurationList =\n project.hash.project.objects.XCConfigurationList[target.buildConfigurationList];\n\n if (xcConfigurationList) {\n const buildConfiguration =\n xcConfigurationList.buildConfigurations.find(\n (value: { comment: string; value: string }) => value.comment === configuration\n ) || xcConfigurationList.buildConfigurations[0];\n if (buildConfiguration?.value) {\n const xcBuildConfiguration =\n project.hash.project.objects.XCBuildConfiguration?.[buildConfiguration.value];\n\n const buildSdkRoot = xcBuildConfiguration.buildSettings.SDKROOT;\n if (\n buildSdkRoot === 'appletvos' ||\n 'TVOS_DEPLOYMENT_TARGET' in xcBuildConfiguration.buildSettings\n ) {\n // Is a TV app...\n osType = 'tvOS';\n } else if (buildSdkRoot === 'iphoneos') {\n osType = 'iOS';\n }\n }\n }\n }\n\n return {\n name: unquote(target.name),\n osType,\n type: unquote(target.productType),\n };\n });\n}\n\nasync function readSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<SchemeXML | undefined> {\n const allSchemePaths = findSchemePaths(projectRoot);\n const re = new RegExp(`/${scheme}.xcscheme`, 'i');\n const schemePath = allSchemePaths.find((i) => re.exec(i));\n if (schemePath) {\n return (await readXMLAsync({ path: schemePath })) as unknown as SchemeXML | undefined;\n } else {\n throw new Error(`scheme '${scheme}' does not exist, make sure it's marked as shared`);\n }\n}\n\nexport async function getApplicationTargetNameForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildActionEntry =\n schemeXML?.Scheme?.BuildAction?.[0]?.BuildActionEntries?.[0]?.BuildActionEntry;\n const targetName =\n buildActionEntry?.length === 1\n ? getBlueprintName(buildActionEntry[0])\n : getBlueprintName(\n buildActionEntry?.find((entry) => {\n return entry.BuildableReference?.[0]?.['$']?.BuildableName?.endsWith('.app');\n })\n );\n if (!targetName) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return targetName;\n}\n\nexport async function getArchiveBuildConfigurationForSchemeAsync(\n projectRoot: string,\n scheme: string\n): Promise<string> {\n const schemeXML = await readSchemeAsync(projectRoot, scheme);\n const buildConfiguration = schemeXML?.Scheme?.ArchiveAction?.[0]?.['$']?.buildConfiguration;\n if (!buildConfiguration) {\n throw new Error(`${scheme}.xcscheme seems to be corrupted`);\n }\n return buildConfiguration;\n}\n\nfunction getBlueprintName(entry?: BuildActionEntryType): string | undefined {\n return entry?.BuildableReference?.[0]?.['$']?.BlueprintName;\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ExpoConfig } from '@expo/config-types';
2
- import { ConfigPlugin } from '../Plugin.types';
3
2
  import { InfoPlist } from './IosConfig.types';
3
+ import { ConfigPlugin } from '../Plugin.types';
4
4
  export declare const withBundleIdentifier: ConfigPlugin<{
5
5
  bundleIdentifier?: string;
6
6
  }>;
@@ -39,13 +39,6 @@ function _xcode() {
39
39
  };
40
40
  return data;
41
41
  }
42
- function _withDangerousMod() {
43
- const data = require("../plugins/withDangerousMod");
44
- _withDangerousMod = function () {
45
- return data;
46
- };
47
- return data;
48
- }
49
42
  function _Paths() {
50
43
  const data = require("./Paths");
51
44
  _Paths = function () {
@@ -74,6 +67,13 @@ function _string() {
74
67
  };
75
68
  return data;
76
69
  }
70
+ function _withDangerousMod() {
71
+ const data = require("../plugins/withDangerousMod");
72
+ _withDangerousMod = function () {
73
+ return data;
74
+ };
75
+ return data;
76
+ }
77
77
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
78
78
  const withBundleIdentifier = (config, {
79
79
  bundleIdentifier
@@ -1 +1 @@
1
- {"version":3,"file":"BundleIdentifier.js","names":["_plist","data","_interopRequireDefault","require","_assert","_fs","_xcode","_withDangerousMod","_Paths","_Target","_Xcodeproj","_string","obj","__esModule","default","withBundleIdentifier","config","bundleIdentifier","withDangerousMod","_config$ios","bundleId","ios","assert","setBundleIdentifierForPbxproj","modRequest","projectRoot","exports","getBundleIdentifier","_config$ios$bundleIde","_config$ios2","setBundleIdentifier","infoPlist","CFBundleIdentifier","getBundleIdentifierFromPbxproj","targetName","buildConfiguration","pbxprojPath","getPBXProjectPath","project","xcode","parseSync","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","getProductBundleIdentifierFromBuildConfiguration","bundleIdentifierRaw","buildSettings","PRODUCT_BUNDLE_IDENTIFIER","trimQuotes","bundleIdentifierParts","split","length","PRODUCT_NAME","replace","join","updateBundleIdentifierForPbxproj","updateProductName","nativeTarget","findFirstNativeTarget","getBuildConfigurationsForListId","buildConfigurationList","forEach","item","productName","pop","includes","fs","writeFileSync","writeSync","pbxprojPaths","getAllPBXProjectPaths","defaultBundleId","resetAllPlistBundleIdentifiers","infoPlistPaths","getAllInfoPlistPaths","plistPath","resetPlistBundleIdentifier","rawPlist","readFileSync","plistObject","plist","parse","format","pretty","indent","xml","build"],"sources":["../../src/ios/BundleIdentifier.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist, { PlistObject } from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport xcode, { XCBuildConfiguration } from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\nimport { InfoPlist } from './IosConfig.types';\nimport { getAllInfoPlistPaths, getAllPBXProjectPaths, getPBXProjectPath } from './Paths';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport { ConfigurationSectionEntry, getBuildConfigurationsForListId } from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withBundleIdentifier: ConfigPlugin<{ bundleIdentifier?: string }> = (\n config,\n { bundleIdentifier }\n) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n const bundleId = bundleIdentifier ?? config.ios?.bundleIdentifier;\n assert(\n bundleId,\n '`bundleIdentifier` must be defined in the app config (`expo.ios.bundleIdentifier`) or passed to the plugin `withBundleIdentifier`.'\n );\n await setBundleIdentifierForPbxproj(config.modRequest.projectRoot, bundleId!);\n return config;\n },\n ]);\n};\n\nfunction getBundleIdentifier(config: Pick<ExpoConfig, 'ios'>): string | null {\n return config.ios?.bundleIdentifier ?? null;\n}\n\n/**\n * In Turtle v1 we set the bundleIdentifier directly on Info.plist rather\n * than in pbxproj\n */\nfunction setBundleIdentifier(config: ExpoConfig, infoPlist: InfoPlist): InfoPlist {\n const bundleIdentifier = getBundleIdentifier(config);\n\n if (!bundleIdentifier) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleIdentifier: bundleIdentifier,\n };\n}\n\n/**\n * Gets the bundle identifier defined in the Xcode project found in the project directory.\n *\n * A bundle identifier is stored as a value in XCBuildConfiguration entry.\n * Those entries exist for every pair (build target, build configuration).\n * Unless target name is passed, the first target defined in the pbxproj is used\n * (to keep compatibility with the inaccurate legacy implementation of this function).\n * The build configuration is usually 'Release' or 'Debug'. However, it could be any arbitrary string.\n * Defaults to 'Release'.\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} targetName Target name\n * @param {string} buildConfiguration Build configuration. Defaults to 'Release'.\n * @returns {string | null} bundle identifier of the Xcode project or null if the project is not configured\n */\nfunction getBundleIdentifierFromPbxproj(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n let pbxprojPath: string;\n try {\n pbxprojPath = getPBXProjectPath(projectRoot);\n } catch {\n return null;\n }\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n return getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration);\n}\n\nfunction getProductBundleIdentifierFromBuildConfiguration(\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const bundleIdentifierRaw = xcBuildConfiguration.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;\n if (bundleIdentifierRaw) {\n const bundleIdentifier = trimQuotes(bundleIdentifierRaw);\n // it's possible to use interpolation for the bundle identifier\n // the most common case is when the last part of the id is set to `$(PRODUCT_NAME:rfc1034identifier)`\n // in this case, PRODUCT_NAME should be replaced with its value\n // the `rfc1034identifier` modifier replaces all non-alphanumeric characters with dashes\n const bundleIdentifierParts = bundleIdentifier.split('.');\n if (\n bundleIdentifierParts[bundleIdentifierParts.length - 1] ===\n '$(PRODUCT_NAME:rfc1034identifier)' &&\n xcBuildConfiguration.buildSettings.PRODUCT_NAME\n ) {\n bundleIdentifierParts[bundleIdentifierParts.length - 1] =\n xcBuildConfiguration.buildSettings.PRODUCT_NAME.replace(/[^a-zA-Z0-9]/g, '-');\n }\n return bundleIdentifierParts.join('.');\n } else {\n return null;\n }\n}\n\n/**\n * Updates the bundle identifier for a given pbxproj\n *\n * @param {string} pbxprojPath Path to pbxproj file\n * @param {string} bundleIdentifier Bundle identifier to set in the pbxproj\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction updateBundleIdentifierForPbxproj(\n pbxprojPath: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const [, nativeTarget] = findFirstNativeTarget(project);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList).forEach(\n ([, item]: ConfigurationSectionEntry) => {\n if (item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER === bundleIdentifier) {\n return;\n }\n\n item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `\"${bundleIdentifier}\"`;\n\n if (updateProductName) {\n const productName = bundleIdentifier.split('.').pop();\n if (!productName?.includes('$')) {\n item.buildSettings.PRODUCT_NAME = productName;\n }\n }\n }\n );\n fs.writeFileSync(pbxprojPath, project.writeSync());\n}\n\n/**\n * Updates the bundle identifier for pbx projects inside the ios directory of the given project root\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} bundleIdentifier Desired bundle identifier\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction setBundleIdentifierForPbxproj(\n projectRoot: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n // Get all pbx projects in the ${projectRoot}/ios directory\n let pbxprojPaths: string[] = [];\n try {\n pbxprojPaths = getAllPBXProjectPaths(projectRoot);\n } catch {}\n\n for (const pbxprojPath of pbxprojPaths) {\n updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName);\n }\n}\n\n/**\n * Reset bundle identifier field in Info.plist to use PRODUCT_BUNDLE_IDENTIFIER, as recommended by Apple.\n */\n\nconst defaultBundleId = '$(PRODUCT_BUNDLE_IDENTIFIER)';\n\nfunction resetAllPlistBundleIdentifiers(projectRoot: string): void {\n const infoPlistPaths = getAllInfoPlistPaths(projectRoot);\n\n for (const plistPath of infoPlistPaths) {\n resetPlistBundleIdentifier(plistPath);\n }\n}\n\nfunction resetPlistBundleIdentifier(plistPath: string): void {\n const rawPlist = fs.readFileSync(plistPath, 'utf8');\n const plistObject = plist.parse(rawPlist) as PlistObject;\n\n if (plistObject.CFBundleIdentifier) {\n if (plistObject.CFBundleIdentifier === defaultBundleId) return;\n\n // attempt to match default Info.plist format\n const format = { pretty: true, indent: `\\t` };\n\n const xml = plist.build(\n {\n ...plistObject,\n CFBundleIdentifier: defaultBundleId,\n },\n format\n );\n\n if (xml !== rawPlist) {\n fs.writeFileSync(plistPath, xml);\n }\n }\n}\n\nexport {\n getBundleIdentifier,\n setBundleIdentifier,\n getBundleIdentifierFromPbxproj,\n updateBundleIdentifierForPbxproj,\n setBundleIdentifierForPbxproj,\n resetAllPlistBundleIdentifiers,\n resetPlistBundleIdentifier,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"BundleIdentifier.js","names":["_plist","data","_interopRequireDefault","require","_assert","_fs","_xcode","_Paths","_Target","_Xcodeproj","_string","_withDangerousMod","obj","__esModule","default","withBundleIdentifier","config","bundleIdentifier","withDangerousMod","_config$ios","bundleId","ios","assert","setBundleIdentifierForPbxproj","modRequest","projectRoot","exports","getBundleIdentifier","_config$ios$bundleIde","_config$ios2","setBundleIdentifier","infoPlist","CFBundleIdentifier","getBundleIdentifierFromPbxproj","targetName","buildConfiguration","pbxprojPath","getPBXProjectPath","project","xcode","parseSync","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","getProductBundleIdentifierFromBuildConfiguration","bundleIdentifierRaw","buildSettings","PRODUCT_BUNDLE_IDENTIFIER","trimQuotes","bundleIdentifierParts","split","length","PRODUCT_NAME","replace","join","updateBundleIdentifierForPbxproj","updateProductName","nativeTarget","findFirstNativeTarget","getBuildConfigurationsForListId","buildConfigurationList","forEach","item","productName","pop","includes","fs","writeFileSync","writeSync","pbxprojPaths","getAllPBXProjectPaths","defaultBundleId","resetAllPlistBundleIdentifiers","infoPlistPaths","getAllInfoPlistPaths","plistPath","resetPlistBundleIdentifier","rawPlist","readFileSync","plistObject","plist","parse","format","pretty","indent","xml","build"],"sources":["../../src/ios/BundleIdentifier.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist, { PlistObject } from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport xcode, { XCBuildConfiguration } from 'xcode';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { getAllInfoPlistPaths, getAllPBXProjectPaths, getPBXProjectPath } from './Paths';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport { ConfigurationSectionEntry, getBuildConfigurationsForListId } from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withDangerousMod } from '../plugins/withDangerousMod';\n\nexport const withBundleIdentifier: ConfigPlugin<{ bundleIdentifier?: string }> = (\n config,\n { bundleIdentifier }\n) => {\n return withDangerousMod(config, [\n 'ios',\n async (config) => {\n const bundleId = bundleIdentifier ?? config.ios?.bundleIdentifier;\n assert(\n bundleId,\n '`bundleIdentifier` must be defined in the app config (`expo.ios.bundleIdentifier`) or passed to the plugin `withBundleIdentifier`.'\n );\n await setBundleIdentifierForPbxproj(config.modRequest.projectRoot, bundleId!);\n return config;\n },\n ]);\n};\n\nfunction getBundleIdentifier(config: Pick<ExpoConfig, 'ios'>): string | null {\n return config.ios?.bundleIdentifier ?? null;\n}\n\n/**\n * In Turtle v1 we set the bundleIdentifier directly on Info.plist rather\n * than in pbxproj\n */\nfunction setBundleIdentifier(config: ExpoConfig, infoPlist: InfoPlist): InfoPlist {\n const bundleIdentifier = getBundleIdentifier(config);\n\n if (!bundleIdentifier) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleIdentifier: bundleIdentifier,\n };\n}\n\n/**\n * Gets the bundle identifier defined in the Xcode project found in the project directory.\n *\n * A bundle identifier is stored as a value in XCBuildConfiguration entry.\n * Those entries exist for every pair (build target, build configuration).\n * Unless target name is passed, the first target defined in the pbxproj is used\n * (to keep compatibility with the inaccurate legacy implementation of this function).\n * The build configuration is usually 'Release' or 'Debug'. However, it could be any arbitrary string.\n * Defaults to 'Release'.\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} targetName Target name\n * @param {string} buildConfiguration Build configuration. Defaults to 'Release'.\n * @returns {string | null} bundle identifier of the Xcode project or null if the project is not configured\n */\nfunction getBundleIdentifierFromPbxproj(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n let pbxprojPath: string;\n try {\n pbxprojPath = getPBXProjectPath(projectRoot);\n } catch {\n return null;\n }\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n return getProductBundleIdentifierFromBuildConfiguration(xcBuildConfiguration);\n}\n\nfunction getProductBundleIdentifierFromBuildConfiguration(\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const bundleIdentifierRaw = xcBuildConfiguration.buildSettings.PRODUCT_BUNDLE_IDENTIFIER;\n if (bundleIdentifierRaw) {\n const bundleIdentifier = trimQuotes(bundleIdentifierRaw);\n // it's possible to use interpolation for the bundle identifier\n // the most common case is when the last part of the id is set to `$(PRODUCT_NAME:rfc1034identifier)`\n // in this case, PRODUCT_NAME should be replaced with its value\n // the `rfc1034identifier` modifier replaces all non-alphanumeric characters with dashes\n const bundleIdentifierParts = bundleIdentifier.split('.');\n if (\n bundleIdentifierParts[bundleIdentifierParts.length - 1] ===\n '$(PRODUCT_NAME:rfc1034identifier)' &&\n xcBuildConfiguration.buildSettings.PRODUCT_NAME\n ) {\n bundleIdentifierParts[bundleIdentifierParts.length - 1] =\n xcBuildConfiguration.buildSettings.PRODUCT_NAME.replace(/[^a-zA-Z0-9]/g, '-');\n }\n return bundleIdentifierParts.join('.');\n } else {\n return null;\n }\n}\n\n/**\n * Updates the bundle identifier for a given pbxproj\n *\n * @param {string} pbxprojPath Path to pbxproj file\n * @param {string} bundleIdentifier Bundle identifier to set in the pbxproj\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction updateBundleIdentifierForPbxproj(\n pbxprojPath: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n const project = xcode.project(pbxprojPath);\n project.parseSync();\n\n const [, nativeTarget] = findFirstNativeTarget(project);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList).forEach(\n ([, item]: ConfigurationSectionEntry) => {\n if (item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER === bundleIdentifier) {\n return;\n }\n\n item.buildSettings.PRODUCT_BUNDLE_IDENTIFIER = `\"${bundleIdentifier}\"`;\n\n if (updateProductName) {\n const productName = bundleIdentifier.split('.').pop();\n if (!productName?.includes('$')) {\n item.buildSettings.PRODUCT_NAME = productName;\n }\n }\n }\n );\n fs.writeFileSync(pbxprojPath, project.writeSync());\n}\n\n/**\n * Updates the bundle identifier for pbx projects inside the ios directory of the given project root\n *\n * @param {string} projectRoot Path to project root containing the ios directory\n * @param {string} bundleIdentifier Desired bundle identifier\n * @param {boolean} [updateProductName=true] Whether to update PRODUCT_NAME\n */\nfunction setBundleIdentifierForPbxproj(\n projectRoot: string,\n bundleIdentifier: string,\n updateProductName: boolean = true\n): void {\n // Get all pbx projects in the ${projectRoot}/ios directory\n let pbxprojPaths: string[] = [];\n try {\n pbxprojPaths = getAllPBXProjectPaths(projectRoot);\n } catch {}\n\n for (const pbxprojPath of pbxprojPaths) {\n updateBundleIdentifierForPbxproj(pbxprojPath, bundleIdentifier, updateProductName);\n }\n}\n\n/**\n * Reset bundle identifier field in Info.plist to use PRODUCT_BUNDLE_IDENTIFIER, as recommended by Apple.\n */\n\nconst defaultBundleId = '$(PRODUCT_BUNDLE_IDENTIFIER)';\n\nfunction resetAllPlistBundleIdentifiers(projectRoot: string): void {\n const infoPlistPaths = getAllInfoPlistPaths(projectRoot);\n\n for (const plistPath of infoPlistPaths) {\n resetPlistBundleIdentifier(plistPath);\n }\n}\n\nfunction resetPlistBundleIdentifier(plistPath: string): void {\n const rawPlist = fs.readFileSync(plistPath, 'utf8');\n const plistObject = plist.parse(rawPlist) as PlistObject;\n\n if (plistObject.CFBundleIdentifier) {\n if (plistObject.CFBundleIdentifier === defaultBundleId) return;\n\n // attempt to match default Info.plist format\n const format = { pretty: true, indent: `\\t` };\n\n const xml = plist.build(\n {\n ...plistObject,\n CFBundleIdentifier: defaultBundleId,\n },\n format\n );\n\n if (xml !== rawPlist) {\n fs.writeFileSync(plistPath, xml);\n }\n }\n}\n\nexport {\n getBundleIdentifier,\n setBundleIdentifier,\n getBundleIdentifierFromPbxproj,\n updateBundleIdentifierForPbxproj,\n setBundleIdentifierForPbxproj,\n resetAllPlistBundleIdentifiers,\n resetPlistBundleIdentifier,\n};\n"],"mappings":"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"}
@@ -28,13 +28,6 @@ function _slash() {
28
28
  };
29
29
  return data;
30
30
  }
31
- function _iosPlugins() {
32
- const data = require("../plugins/ios-plugins");
33
- _iosPlugins = function () {
34
- return data;
35
- };
36
- return data;
37
- }
38
31
  function _Target() {
39
32
  const data = require("./Target");
40
33
  _Target = function () {
@@ -56,6 +49,13 @@ function _string() {
56
49
  };
57
50
  return data;
58
51
  }
52
+ function _iosPlugins() {
53
+ const data = require("../plugins/ios-plugins");
54
+ _iosPlugins = function () {
55
+ return data;
56
+ };
57
+ return data;
58
+ }
59
59
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
60
60
  const withAssociatedDomains = (0, _iosPlugins().createEntitlementsPlugin)(setAssociatedDomains, 'withAssociatedDomains');
61
61
  exports.withAssociatedDomains = withAssociatedDomains;
@@ -1 +1 @@
1
- {"version":3,"file":"Entitlements.js","names":["_fs","data","_interopRequireDefault","require","_path","_slash","_iosPlugins","_Target","_Xcodeproj","_string","obj","__esModule","default","withAssociatedDomains","createEntitlementsPlugin","setAssociatedDomains","exports","config","_","entitlementsPlist","_config$ios","ios","associatedDomains","getEntitlementsPath","projectRoot","targetName","buildConfiguration","project","getPbxproj","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","entitlementsPath","getEntitlementsPathFromBuildConfiguration","fs","existsSync","_xcBuildConfiguration","entitlementsPathRaw","buildSettings","CODE_SIGN_ENTITLEMENTS","path","normalize","join","trimQuotes","ensureApplicationTargetEntitlementsFileConfigured","projectName","getProjectName","productName","getProductName","applicationTarget","findFirstNativeTarget","buildConfigurations","getBuildConfigurationsForListId","buildConfigurationList","hasChangesToWrite","oldEntitlementPath","entitlementsRelativePath","slash","mkdirSync","dirname","recursive","writeFileSync","ENTITLEMENTS_TEMPLATE","filepath","writeSync"],"sources":["../../src/ios/Entitlements.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\nimport slash from 'slash';\nimport { XCBuildConfiguration } from 'xcode';\n\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport {\n getBuildConfigurationsForListId,\n getPbxproj,\n getProductName,\n getProjectName,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: JSONObject\n): JSONObject {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n const project = getPbxproj(projectRoot);\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n const entitlementsPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n return entitlementsPath && fs.existsSync(entitlementsPath) ? entitlementsPath : null;\n}\n\nfunction getEntitlementsPathFromBuildConfiguration(\n projectRoot: string,\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const entitlementsPathRaw = xcBuildConfiguration?.buildSettings?.CODE_SIGN_ENTITLEMENTS as\n | string\n | undefined;\n if (entitlementsPathRaw) {\n return path.normalize(path.join(projectRoot, 'ios', trimQuotes(entitlementsPathRaw)));\n } else {\n return null;\n }\n}\n\nexport function ensureApplicationTargetEntitlementsFileConfigured(projectRoot: string): void {\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n const [, applicationTarget] = findFirstNativeTarget(project);\n const buildConfigurations = getBuildConfigurationsForListId(\n project,\n applicationTarget.buildConfigurationList\n );\n let hasChangesToWrite = false;\n for (const [, xcBuildConfiguration] of buildConfigurations) {\n const oldEntitlementPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n if (oldEntitlementPath && fs.existsSync(oldEntitlementPath)) {\n return;\n }\n hasChangesToWrite = true;\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = path.normalize(\n path.join(projectRoot, 'ios', entitlementsRelativePath)\n );\n fs.mkdirSync(path.dirname(entitlementsPath), { recursive: true });\n if (!fs.existsSync(entitlementsPath)) {\n fs.writeFileSync(entitlementsPath, ENTITLEMENTS_TEMPLATE);\n }\n xcBuildConfiguration.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;\n }\n if (hasChangesToWrite) {\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n`;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Entitlements.js","names":["_fs","data","_interopRequireDefault","require","_path","_slash","_Target","_Xcodeproj","_string","_iosPlugins","obj","__esModule","default","withAssociatedDomains","createEntitlementsPlugin","setAssociatedDomains","exports","config","_","entitlementsPlist","_config$ios","ios","associatedDomains","getEntitlementsPath","projectRoot","targetName","buildConfiguration","project","getPbxproj","xcBuildConfiguration","getXCBuildConfigurationFromPbxproj","entitlementsPath","getEntitlementsPathFromBuildConfiguration","fs","existsSync","_xcBuildConfiguration","entitlementsPathRaw","buildSettings","CODE_SIGN_ENTITLEMENTS","path","normalize","join","trimQuotes","ensureApplicationTargetEntitlementsFileConfigured","projectName","getProjectName","productName","getProductName","applicationTarget","findFirstNativeTarget","buildConfigurations","getBuildConfigurationsForListId","buildConfigurationList","hasChangesToWrite","oldEntitlementPath","entitlementsRelativePath","slash","mkdirSync","dirname","recursive","writeFileSync","ENTITLEMENTS_TEMPLATE","filepath","writeSync"],"sources":["../../src/ios/Entitlements.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport { JSONObject } from '@expo/json-file';\nimport fs from 'fs';\nimport path from 'path';\nimport slash from 'slash';\nimport { XCBuildConfiguration } from 'xcode';\n\nimport { findFirstNativeTarget, getXCBuildConfigurationFromPbxproj } from './Target';\nimport {\n getBuildConfigurationsForListId,\n getPbxproj,\n getProductName,\n getProjectName,\n} from './utils/Xcodeproj';\nimport { trimQuotes } from './utils/string';\nimport { createEntitlementsPlugin } from '../plugins/ios-plugins';\n\nexport const withAssociatedDomains = createEntitlementsPlugin(\n setAssociatedDomains,\n 'withAssociatedDomains'\n);\n\nexport function setAssociatedDomains(\n config: ExpoConfig,\n { 'com.apple.developer.associated-domains': _, ...entitlementsPlist }: JSONObject\n): JSONObject {\n if (config.ios?.associatedDomains) {\n return {\n ...entitlementsPlist,\n 'com.apple.developer.associated-domains': config.ios.associatedDomains,\n };\n }\n\n return entitlementsPlist;\n}\n\nexport function getEntitlementsPath(\n projectRoot: string,\n {\n targetName,\n buildConfiguration = 'Release',\n }: { targetName?: string; buildConfiguration?: string } = {}\n): string | null {\n const project = getPbxproj(projectRoot);\n const xcBuildConfiguration = getXCBuildConfigurationFromPbxproj(project, {\n targetName,\n buildConfiguration,\n });\n if (!xcBuildConfiguration) {\n return null;\n }\n const entitlementsPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n return entitlementsPath && fs.existsSync(entitlementsPath) ? entitlementsPath : null;\n}\n\nfunction getEntitlementsPathFromBuildConfiguration(\n projectRoot: string,\n xcBuildConfiguration: XCBuildConfiguration\n): string | null {\n const entitlementsPathRaw = xcBuildConfiguration?.buildSettings?.CODE_SIGN_ENTITLEMENTS as\n | string\n | undefined;\n if (entitlementsPathRaw) {\n return path.normalize(path.join(projectRoot, 'ios', trimQuotes(entitlementsPathRaw)));\n } else {\n return null;\n }\n}\n\nexport function ensureApplicationTargetEntitlementsFileConfigured(projectRoot: string): void {\n const project = getPbxproj(projectRoot);\n const projectName = getProjectName(projectRoot);\n const productName = getProductName(project);\n\n const [, applicationTarget] = findFirstNativeTarget(project);\n const buildConfigurations = getBuildConfigurationsForListId(\n project,\n applicationTarget.buildConfigurationList\n );\n let hasChangesToWrite = false;\n for (const [, xcBuildConfiguration] of buildConfigurations) {\n const oldEntitlementPath = getEntitlementsPathFromBuildConfiguration(\n projectRoot,\n xcBuildConfiguration\n );\n if (oldEntitlementPath && fs.existsSync(oldEntitlementPath)) {\n return;\n }\n hasChangesToWrite = true;\n // Use posix formatted path, even on Windows\n const entitlementsRelativePath = slash(path.join(projectName, `${productName}.entitlements`));\n const entitlementsPath = path.normalize(\n path.join(projectRoot, 'ios', entitlementsRelativePath)\n );\n fs.mkdirSync(path.dirname(entitlementsPath), { recursive: true });\n if (!fs.existsSync(entitlementsPath)) {\n fs.writeFileSync(entitlementsPath, ENTITLEMENTS_TEMPLATE);\n }\n xcBuildConfiguration.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsRelativePath;\n }\n if (hasChangesToWrite) {\n fs.writeFileSync(project.filepath, project.writeSync());\n }\n}\n\nconst ENTITLEMENTS_TEMPLATE = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n`;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ExpoConfig } from '@expo/config-types';
2
2
  import { XcodeProject } from 'xcode';
3
- import { ConfigPlugin, ModProps } from '../Plugin.types';
4
3
  import { InfoPlist } from './IosConfig.types';
4
+ import { ConfigPlugin, ModProps } from '../Plugin.types';
5
5
  export declare const withGoogle: ConfigPlugin;
6
6
  export declare const withGoogleServicesFile: ConfigPlugin;
7
7
  export declare function getGoogleSignInReversedClientId(config: Pick<ExpoConfig, 'ios'>, modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>): string | null;
@@ -37,13 +37,6 @@ function _path() {
37
37
  };
38
38
  return data;
39
39
  }
40
- function _iosPlugins() {
41
- const data = require("../plugins/ios-plugins");
42
- _iosPlugins = function () {
43
- return data;
44
- };
45
- return data;
46
- }
47
40
  function _Paths() {
48
41
  const data = require("./Paths");
49
42
  _Paths = function () {
@@ -65,6 +58,13 @@ function _Xcodeproj() {
65
58
  };
66
59
  return data;
67
60
  }
61
+ function _iosPlugins() {
62
+ const data = require("../plugins/ios-plugins");
63
+ _iosPlugins = function () {
64
+ return data;
65
+ };
66
+ return data;
67
+ }
68
68
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
69
69
  const withGoogle = config => {
70
70
  return (0, _iosPlugins().withInfoPlist)(config, config => {
@@ -1 +1 @@
1
- {"version":3,"file":"Google.js","names":["_plist","data","_interopRequireDefault","require","_assert","_fs","_path","_iosPlugins","_Paths","_Scheme","_Xcodeproj","obj","__esModule","default","withGoogle","config","withInfoPlist","modResults","setGoogleConfig","modRequest","exports","withGoogleServicesFile","withXcodeProject","setGoogleServicesFile","projectRoot","project","readGoogleServicesInfoPlist","relativePath","googleServiceFilePath","path","resolve","contents","fs","readFileSync","assert","plist","parse","getGoogleSignInReversedClientId","_infoPlist$REVERSED_C","googleServicesFileRelativePath","getGoogleServicesFile","infoPlist","REVERSED_CLIENT_ID","_config$ios$googleSer","_config$ios","ios","googleServicesFile","setGoogleSignInReversedClientId","reversedClientId","appendScheme","copyFileSync","join","getSourceRoot","projectName","getProjectName","plistFilePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose"],"sources":["../../src/ios/Google.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport path from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { ConfigPlugin, ModProps } from '../Plugin.types';\nimport { withInfoPlist, withXcodeProject } from '../plugins/ios-plugins';\nimport { InfoPlist } from './IosConfig.types';\nimport { getSourceRoot } from './Paths';\nimport { appendScheme } from './Scheme';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\n\nexport const withGoogle: ConfigPlugin = (config) => {\n return withInfoPlist(config, (config) => {\n config.modResults = setGoogleConfig(config, config.modResults, config.modRequest);\n return config;\n });\n};\n\nexport const withGoogleServicesFile: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = setGoogleServicesFile(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nfunction readGoogleServicesInfoPlist(\n relativePath: string,\n { projectRoot }: { projectRoot: string }\n) {\n const googleServiceFilePath = path.resolve(projectRoot, relativePath);\n const contents = fs.readFileSync(googleServiceFilePath, 'utf8');\n assert(contents, 'GoogleService-Info.plist is empty');\n return plist.parse(contents);\n}\n\nexport function getGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): string | null {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return null;\n }\n\n const infoPlist = readGoogleServicesInfoPlist(googleServicesFileRelativePath, modRequest);\n\n return infoPlist.REVERSED_CLIENT_ID ?? null;\n}\n\nexport function getGoogleServicesFile(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.googleServicesFile ?? null;\n}\n\nexport function setGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): InfoPlist {\n const reversedClientId = getGoogleSignInReversedClientId(config, modRequest);\n\n if (reversedClientId === null) {\n return infoPlist;\n }\n\n return appendScheme(reversedClientId, infoPlist);\n}\n\nexport function setGoogleConfig(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: ModProps<InfoPlist>\n): InfoPlist {\n infoPlist = setGoogleSignInReversedClientId(config, infoPlist, modRequest);\n return infoPlist;\n}\n\nexport function setGoogleServicesFile(\n config: Pick<ExpoConfig, 'ios'>,\n { projectRoot, project }: { project: XcodeProject; projectRoot: string }\n): XcodeProject {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return project;\n }\n\n const googleServiceFilePath = path.resolve(projectRoot, googleServicesFileRelativePath);\n fs.copyFileSync(\n googleServiceFilePath,\n path.join(getSourceRoot(projectRoot), 'GoogleService-Info.plist')\n );\n\n const projectName = getProjectName(projectRoot);\n const plistFilePath = `${projectName}/GoogleService-Info.plist`;\n if (!project.hasFile(plistFilePath)) {\n project = addResourceFileToGroup({\n filepath: plistFilePath,\n groupName: projectName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n return project;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Google.js","names":["_plist","data","_interopRequireDefault","require","_assert","_fs","_path","_Paths","_Scheme","_Xcodeproj","_iosPlugins","obj","__esModule","default","withGoogle","config","withInfoPlist","modResults","setGoogleConfig","modRequest","exports","withGoogleServicesFile","withXcodeProject","setGoogleServicesFile","projectRoot","project","readGoogleServicesInfoPlist","relativePath","googleServiceFilePath","path","resolve","contents","fs","readFileSync","assert","plist","parse","getGoogleSignInReversedClientId","_infoPlist$REVERSED_C","googleServicesFileRelativePath","getGoogleServicesFile","infoPlist","REVERSED_CLIENT_ID","_config$ios$googleSer","_config$ios","ios","googleServicesFile","setGoogleSignInReversedClientId","reversedClientId","appendScheme","copyFileSync","join","getSourceRoot","projectName","getProjectName","plistFilePath","hasFile","addResourceFileToGroup","filepath","groupName","isBuildFile","verbose"],"sources":["../../src/ios/Google.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport plist from '@expo/plist';\nimport assert from 'assert';\nimport fs from 'fs';\nimport path from 'path';\nimport { XcodeProject } from 'xcode';\n\nimport { InfoPlist } from './IosConfig.types';\nimport { getSourceRoot } from './Paths';\nimport { appendScheme } from './Scheme';\nimport { addResourceFileToGroup, getProjectName } from './utils/Xcodeproj';\nimport { ConfigPlugin, ModProps } from '../Plugin.types';\nimport { withInfoPlist, withXcodeProject } from '../plugins/ios-plugins';\n\nexport const withGoogle: ConfigPlugin = (config) => {\n return withInfoPlist(config, (config) => {\n config.modResults = setGoogleConfig(config, config.modResults, config.modRequest);\n return config;\n });\n};\n\nexport const withGoogleServicesFile: ConfigPlugin = (config) => {\n return withXcodeProject(config, (config) => {\n config.modResults = setGoogleServicesFile(config, {\n projectRoot: config.modRequest.projectRoot,\n project: config.modResults,\n });\n return config;\n });\n};\n\nfunction readGoogleServicesInfoPlist(\n relativePath: string,\n { projectRoot }: { projectRoot: string }\n) {\n const googleServiceFilePath = path.resolve(projectRoot, relativePath);\n const contents = fs.readFileSync(googleServiceFilePath, 'utf8');\n assert(contents, 'GoogleService-Info.plist is empty');\n return plist.parse(contents);\n}\n\nexport function getGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): string | null {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return null;\n }\n\n const infoPlist = readGoogleServicesInfoPlist(googleServicesFileRelativePath, modRequest);\n\n return infoPlist.REVERSED_CLIENT_ID ?? null;\n}\n\nexport function getGoogleServicesFile(config: Pick<ExpoConfig, 'ios'>) {\n return config.ios?.googleServicesFile ?? null;\n}\n\nexport function setGoogleSignInReversedClientId(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: Pick<ModProps<InfoPlist>, 'projectRoot'>\n): InfoPlist {\n const reversedClientId = getGoogleSignInReversedClientId(config, modRequest);\n\n if (reversedClientId === null) {\n return infoPlist;\n }\n\n return appendScheme(reversedClientId, infoPlist);\n}\n\nexport function setGoogleConfig(\n config: Pick<ExpoConfig, 'ios'>,\n infoPlist: InfoPlist,\n modRequest: ModProps<InfoPlist>\n): InfoPlist {\n infoPlist = setGoogleSignInReversedClientId(config, infoPlist, modRequest);\n return infoPlist;\n}\n\nexport function setGoogleServicesFile(\n config: Pick<ExpoConfig, 'ios'>,\n { projectRoot, project }: { project: XcodeProject; projectRoot: string }\n): XcodeProject {\n const googleServicesFileRelativePath = getGoogleServicesFile(config);\n if (googleServicesFileRelativePath === null) {\n return project;\n }\n\n const googleServiceFilePath = path.resolve(projectRoot, googleServicesFileRelativePath);\n fs.copyFileSync(\n googleServiceFilePath,\n path.join(getSourceRoot(projectRoot), 'GoogleService-Info.plist')\n );\n\n const projectName = getProjectName(projectRoot);\n const plistFilePath = `${projectName}/GoogleService-Info.plist`;\n if (!project.hasFile(plistFilePath)) {\n project = addResourceFileToGroup({\n filepath: plistFilePath,\n groupName: projectName,\n project,\n isBuildFile: true,\n verbose: true,\n });\n }\n return project;\n}\n"],"mappings":"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"}
@@ -28,6 +28,13 @@ function _path() {
28
28
  };
29
29
  return data;
30
30
  }
31
+ function _Xcodeproj() {
32
+ const data = require("./utils/Xcodeproj");
33
+ _Xcodeproj = function () {
34
+ return data;
35
+ };
36
+ return data;
37
+ }
31
38
  function _iosPlugins() {
32
39
  const data = require("../plugins/ios-plugins");
33
40
  _iosPlugins = function () {
@@ -42,13 +49,6 @@ function _warnings() {
42
49
  };
43
50
  return data;
44
51
  }
45
- function _Xcodeproj() {
46
- const data = require("./utils/Xcodeproj");
47
- _Xcodeproj = function () {
48
- return data;
49
- };
50
- return data;
51
- }
52
52
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
53
53
  const withLocales = config => {
54
54
  return (0, _iosPlugins().withXcodeProject)(config, async config => {