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","expoUsername","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfig","expoPlist","username","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<{ expoUsername: string | null }> = (\n  config,\n  { expoUsername }\n) => {\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      expoUsername,\n      expoUpdatesPackageVersion\n    );\n    return config;\n  });\n};\n\nexport function setUpdatesConfig(\n  projectRoot: string,\n  config: ExpoConfigUpdates,\n  expoPlist: ExpoPlist,\n  username: string | null,\n  expoUpdatesPackageVersion?: string | null\n): ExpoPlist {\n  const newExpoPlist = {\n    ...expoPlist,\n    [Config.ENABLED]: getUpdatesEnabled(config, username),\n    [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n    [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n  };\n\n  const updateUrl = getUpdateUrl(config, username);\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  username: string | null\n): boolean {\n  return (\n    getUpdateUrl(config, username) === expoPlist.EXUpdatesURL &&\n    getUpdatesEnabled(config, username) === 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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"}