This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

1 line
14 KiB
Plaintext

{"version":3,"file":"Updates.js","sourceRoot":"","sources":["../../src/android/Updates.ts"],"names":[],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport {\n addMetaDataItemToMainApplication,\n AndroidManifest,\n getMainApplicationMetaDataValue,\n getMainApplicationOrThrow,\n removeMetaDataItemFromMainApplication,\n} from './Manifest';\n\nconst CREATE_MANIFEST_ANDROID_PATH = 'expo-updates/scripts/create-manifest-android.gradle';\n\ntype ExpoConfigUpdates = Pick<\n ExpoConfig,\n 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'\n>;\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}\n\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withAndroidManifest(config, config => {\n config.modResults = setUpdatesConfig(config, config.modResults, expoUsername);\n return config;\n });\n};\n\nexport function getUpdateUrl(\n config: Pick<ExpoConfigUpdates, 'owner' | 'slug'>,\n username: string | null\n): string | null {\n const user = typeof config.owner === 'string' ? config.owner : username;\n if (!user) {\n return null;\n }\n return `https://exp.host/@${user}/${config.slug}`;\n}\n\nexport function getRuntimeVersion(\n config: Pick<ExpoConfigUpdates, 'runtimeVersion'>\n): string | null {\n return typeof config.runtimeVersion === 'string' ? config.runtimeVersion : null;\n}\n\nexport function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null {\n return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;\n}\n\nexport function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean {\n return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): 'NEVER' | 'ALWAYS' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n }\n return 'ALWAYS';\n}\n\nexport function setUpdatesConfig(\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n username: 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)\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 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 = getRuntimeVersion(config);\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n removeMetaDataItemFromMainApplication(mainApplication, Config.SDK_VERSION);\n addMetaDataItemToMainApplication(mainApplication, Config.RUNTIME_VERSION, runtimeVersion);\n } else if (sdkVersion) {\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 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)) ===\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 areVersionsSynced(config, androidManifest)\n );\n}\n\nexport function areVersionsSynced(\n config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>,\n androidManifest: AndroidManifest\n): boolean {\n const expectedRuntimeVersion = getRuntimeVersion(config);\n const expectedSdkVersion = getSDKVersion(config);\n const currentRuntimeVersion = getMainApplicationMetaDataValue(\n androidManifest,\n Config.RUNTIME_VERSION\n );\n const currentSdkVersion = getMainApplicationMetaDataValue(androidManifest, Config.SDK_VERSION);\n\n return (\n currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === expectedSdkVersion\n );\n}\n"]}