1{"version":3,"file":"Updates.js","names":["path","data","_interopRequireWildcard","require","_resolveFrom","_interopRequireDefault","_iosPlugins","_Updates","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","CREATE_MANIFEST_IOS_PATH","Config","exports","withUpdates","config","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfig","expoPlist","newExpoPlist","ENABLED","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadata","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeaders","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfig","runtimeVersion","getRuntimeVersionNullable","RUNTIME_VERSION","Error","sdkVersion","getSDKVersion","SDK_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","relativePath","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSynced","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","EXUpdatesCodeSigningCertificate","EXUpdatesCodeSigningMetadata","isPlistVersionConfigurationSynced","_expoPlist$EXUpdatesR","_expoPlist$EXUpdatesS","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/ios/Updates.ts"],"sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ExpoPlist } from './IosConfig.types';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullable,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadata,\n getUpdatesRequestHeaders,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n CODE_SIGNING_CERTIFICATE = 'EXUpdatesCodeSigningCertificate',\n CODE_SIGNING_METADATA = 'EXUpdatesCodeSigningMetadata',\n}\n\n// when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools\n// Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/\n\nexport const withUpdates: ConfigPlugin = (config) => {\n return withExpoPlist(config, (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\nexport function setUpdatesConfig(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n expoUpdatesPackageVersion?: string | null\n): ExpoPlist {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadata(config);\n if (codeSigningMetadata) {\n newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_METADATA];\n }\n\n const requestHeaders = getUpdatesRequestHeaders(config);\n if (requestHeaders) {\n newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = requestHeaders;\n } else {\n delete newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY];\n }\n\n return setVersionsConfig(config, newExpoPlist);\n}\n\nexport function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = getRuntimeVersionNullable(config, 'ios');\n if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {\n throw new Error(\n 'A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n (buildPhase) => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport function isPlistConfigurationSynced(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): boolean {\n return (\n getUpdateUrl(config) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n getUpdatesCodeSigningCertificate(projectRoot, config) ===\n expoPlist.EXUpdatesCodeSigningCertificate &&\n getUpdatesCodeSigningMetadata(config) === expoPlist.EXUpdatesCodeSigningMetadata &&\n isPlistVersionConfigurationSynced(config, expoPlist)\n );\n}\n\nexport function isPlistVersionConfigurationSynced(\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersionNullable(config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"mappings":"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"}