@expo/config-plugins 7.4.0 → 7.5.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.
@@ -1,6 +1,7 @@
1
+ import { Resources } from '.';
1
2
  import { AndroidManifest } from './Manifest';
2
3
  import { ResourceXML } from './Resources';
3
- import { ConfigPlugin } from '../Plugin.types';
4
+ import { ConfigPlugin, ExportedConfigWithProps } from '../Plugin.types';
4
5
  import { ExpoConfigUpdates } from '../utils/Updates';
5
6
  export declare enum Config {
6
7
  ENABLED = "expo.modules.updates.ENABLED",
@@ -15,12 +16,12 @@ export declare enum Config {
15
16
  CODE_SIGNING_METADATA = "expo.modules.updates.CODE_SIGNING_METADATA"
16
17
  }
17
18
  export declare const withUpdates: ConfigPlugin;
18
- export declare function applyRuntimeVersionFromConfig(config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, stringsJSON: ResourceXML): ResourceXML;
19
- export declare function setUpdatesConfig(projectRoot: string, config: ExpoConfigUpdates, androidManifest: AndroidManifest, expoUpdatesPackageVersion?: string | null): AndroidManifest;
20
- export declare function setVersionsConfig(config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, androidManifest: AndroidManifest): AndroidManifest;
19
+ export declare function applyRuntimeVersionFromConfigAsync(config: ExportedConfigWithProps<Resources.ResourceXML>, stringsJSON: ResourceXML): Promise<ResourceXML>;
20
+ export declare function setUpdatesConfigAsync(projectRoot: string, config: ExpoConfigUpdates, androidManifest: AndroidManifest, expoUpdatesPackageVersion?: string | null): Promise<AndroidManifest>;
21
+ export declare function setVersionsConfigAsync(projectRoot: string, config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, androidManifest: AndroidManifest): Promise<AndroidManifest>;
21
22
  export declare function ensureBuildGradleContainsConfigurationScript(projectRoot: string, buildGradleContents: string): string;
22
23
  export declare function formatApplyLineForBuildGradle(projectRoot: string): string;
23
24
  export declare function isBuildGradleConfigured(projectRoot: string, buildGradleContents: string): boolean;
24
25
  export declare function isMainApplicationMetaDataSet(androidManifest: AndroidManifest): boolean;
25
- export declare function isMainApplicationMetaDataSynced(projectRoot: string, config: ExpoConfigUpdates, androidManifest: AndroidManifest): boolean;
26
- export declare function areVersionsSynced(config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>, androidManifest: AndroidManifest): boolean;
26
+ export declare function isMainApplicationMetaDataSyncedAsync(projectRoot: string, config: ExpoConfigUpdates, androidManifest: AndroidManifest): Promise<boolean>;
27
+ export declare function areVersionsSyncedAsync(projectRoot: string, config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>, androidManifest: AndroidManifest): Promise<boolean>;
@@ -4,15 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Config = void 0;
7
- exports.applyRuntimeVersionFromConfig = applyRuntimeVersionFromConfig;
8
- exports.areVersionsSynced = areVersionsSynced;
7
+ exports.applyRuntimeVersionFromConfigAsync = applyRuntimeVersionFromConfigAsync;
8
+ exports.areVersionsSyncedAsync = areVersionsSyncedAsync;
9
9
  exports.ensureBuildGradleContainsConfigurationScript = ensureBuildGradleContainsConfigurationScript;
10
10
  exports.formatApplyLineForBuildGradle = formatApplyLineForBuildGradle;
11
11
  exports.isBuildGradleConfigured = isBuildGradleConfigured;
12
12
  exports.isMainApplicationMetaDataSet = isMainApplicationMetaDataSet;
13
- exports.isMainApplicationMetaDataSynced = isMainApplicationMetaDataSynced;
14
- exports.setUpdatesConfig = setUpdatesConfig;
15
- exports.setVersionsConfig = setVersionsConfig;
13
+ exports.isMainApplicationMetaDataSyncedAsync = isMainApplicationMetaDataSyncedAsync;
14
+ exports.setUpdatesConfigAsync = setUpdatesConfigAsync;
15
+ exports.setVersionsConfigAsync = setVersionsConfigAsync;
16
16
  exports.withUpdates = void 0;
17
17
  function _path() {
18
18
  const data = _interopRequireDefault(require("path"));
@@ -92,16 +92,17 @@ const withUpdates = config => {
92
92
  };
93
93
  exports.withUpdates = withUpdates;
94
94
  const withUpdatesManifest = config => {
95
- return (0, _androidPlugins().withAndroidManifest)(config, config => {
95
+ return (0, _androidPlugins().withAndroidManifest)(config, async config => {
96
96
  const projectRoot = config.modRequest.projectRoot;
97
97
  const expoUpdatesPackageVersion = (0, _Updates().getExpoUpdatesPackageVersion)(projectRoot);
98
- config.modResults = setUpdatesConfig(projectRoot, config, config.modResults, expoUpdatesPackageVersion);
98
+ config.modResults = await setUpdatesConfigAsync(projectRoot, config, config.modResults, expoUpdatesPackageVersion);
99
99
  return config;
100
100
  });
101
101
  };
102
- const withRuntimeVersionResource = (0, _androidPlugins().createStringsXmlPlugin)(applyRuntimeVersionFromConfig, 'withRuntimeVersionResource');
103
- function applyRuntimeVersionFromConfig(config, stringsJSON) {
104
- const runtimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'android');
102
+ const withRuntimeVersionResource = (0, _androidPlugins().createStringsXmlPlugin)(applyRuntimeVersionFromConfigAsync, 'withRuntimeVersionResource');
103
+ async function applyRuntimeVersionFromConfigAsync(config, stringsJSON) {
104
+ const projectRoot = config.modRequest.projectRoot;
105
+ const runtimeVersion = await (0, _Updates().getRuntimeVersionNullableAsync)(projectRoot, config, 'android');
105
106
  if (runtimeVersion) {
106
107
  return (0, _Strings().setStringItem)([(0, _Resources().buildResourceItem)({
107
108
  name: 'expo_runtime_version',
@@ -110,7 +111,7 @@ function applyRuntimeVersionFromConfig(config, stringsJSON) {
110
111
  }
111
112
  return (0, _Strings().removeStringItem)('expo_runtime_version', stringsJSON);
112
113
  }
113
- function setUpdatesConfig(projectRoot, config, androidManifest, expoUpdatesPackageVersion) {
114
+ async function setUpdatesConfigAsync(projectRoot, config, androidManifest, expoUpdatesPackageVersion) {
114
115
  const mainApplication = (0, _Manifest().getMainApplicationOrThrow)(androidManifest);
115
116
  (0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.ENABLED, String((0, _Updates().getUpdatesEnabled)(config)));
116
117
  (0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.CHECK_ON_LAUNCH, (0, _Updates().getUpdatesCheckOnLaunch)(config, expoUpdatesPackageVersion));
@@ -139,11 +140,11 @@ function setUpdatesConfig(projectRoot, config, androidManifest, expoUpdatesPacka
139
140
  } else {
140
141
  (0, _Manifest().removeMetaDataItemFromMainApplication)(mainApplication, Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY);
141
142
  }
142
- return setVersionsConfig(config, androidManifest);
143
+ return await setVersionsConfigAsync(projectRoot, config, androidManifest);
143
144
  }
144
- function setVersionsConfig(config, androidManifest) {
145
+ async function setVersionsConfigAsync(projectRoot, config, androidManifest) {
145
146
  const mainApplication = (0, _Manifest().getMainApplicationOrThrow)(androidManifest);
146
- const runtimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'android');
147
+ const runtimeVersion = await (0, _Updates().getRuntimeVersionNullableAsync)(projectRoot, config, 'android');
147
148
  if (!runtimeVersion && (0, _Manifest().findMetaDataItem)(mainApplication, Config.RUNTIME_VERSION) > -1) {
148
149
  throw new Error('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.');
149
150
  }
@@ -200,11 +201,11 @@ function isMainApplicationMetaDataSet(androidManifest) {
200
201
  const sdkVersion = (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.SDK_VERSION);
201
202
  return Boolean(updateUrl && (sdkVersion || runtimeVersion));
202
203
  }
203
- function isMainApplicationMetaDataSynced(projectRoot, config, androidManifest) {
204
- return (0, _Updates().getUpdateUrl)(config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.UPDATE_URL) && String((0, _Updates().getUpdatesEnabled)(config)) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.ENABLED) && String((0, _Updates().getUpdatesTimeout)(config)) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.LAUNCH_WAIT_MS) && (0, _Updates().getUpdatesCheckOnLaunch)(config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.CHECK_ON_LAUNCH) && (0, _Updates().getUpdatesCodeSigningCertificate)(projectRoot, config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.CODE_SIGNING_CERTIFICATE) && (0, _Updates().getUpdatesCodeSigningMetadataStringified)(config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.CODE_SIGNING_METADATA) && areVersionsSynced(config, androidManifest);
204
+ async function isMainApplicationMetaDataSyncedAsync(projectRoot, config, androidManifest) {
205
+ return (0, _Updates().getUpdateUrl)(config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.UPDATE_URL) && String((0, _Updates().getUpdatesEnabled)(config)) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.ENABLED) && String((0, _Updates().getUpdatesTimeout)(config)) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.LAUNCH_WAIT_MS) && (0, _Updates().getUpdatesCheckOnLaunch)(config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.CHECK_ON_LAUNCH) && (0, _Updates().getUpdatesCodeSigningCertificate)(projectRoot, config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.CODE_SIGNING_CERTIFICATE) && (0, _Updates().getUpdatesCodeSigningMetadataStringified)(config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.CODE_SIGNING_METADATA) && (await areVersionsSyncedAsync(projectRoot, config, androidManifest));
205
206
  }
206
- function areVersionsSynced(config, androidManifest) {
207
- const expectedRuntimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'android');
207
+ async function areVersionsSyncedAsync(projectRoot, config, androidManifest) {
208
+ const expectedRuntimeVersion = await (0, _Updates().getRuntimeVersionNullableAsync)(projectRoot, config, 'android');
208
209
  const expectedSdkVersion = (0, _Updates().getSDKVersion)(config);
209
210
  const currentRuntimeVersion = (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.RUNTIME_VERSION);
210
211
  const currentSdkVersion = (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.SDK_VERSION);
@@ -1 +1 @@
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
+ {"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","setUpdatesConfigAsync","createStringsXmlPlugin","applyRuntimeVersionFromConfigAsync","stringsJSON","runtimeVersion","getRuntimeVersionNullableAsync","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","setVersionsConfigAsync","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","isMainApplicationMetaDataSyncedAsync","areVersionsSyncedAsync","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/android/Updates.ts"],"sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { Resources } from '.';\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, ExportedConfigWithProps } from '../Plugin.types';\nimport { createStringsXmlPlugin, withAndroidManifest } from '../plugins/android-plugins';\nimport { withPlugins } from '../plugins/withPlugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullableAsync,\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, async (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = await setUpdatesConfigAsync(\n projectRoot,\n config,\n config.modResults,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nconst withRuntimeVersionResource = createStringsXmlPlugin(\n applyRuntimeVersionFromConfigAsync,\n 'withRuntimeVersionResource'\n);\n\nexport async function applyRuntimeVersionFromConfigAsync(\n config: ExportedConfigWithProps<Resources.ResourceXML>,\n stringsJSON: ResourceXML\n): Promise<ResourceXML> {\n const projectRoot = config.modRequest.projectRoot;\n const runtimeVersion = await getRuntimeVersionNullableAsync(projectRoot, 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 async function setUpdatesConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n expoUpdatesPackageVersion?: string | null\n): Promise<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 await setVersionsConfigAsync(projectRoot, config, androidManifest);\n}\n\nexport async function setVersionsConfigAsync(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n androidManifest: AndroidManifest\n): Promise<AndroidManifest> {\n const mainApplication = getMainApplicationOrThrow(androidManifest);\n\n const runtimeVersion = await getRuntimeVersionNullableAsync(projectRoot, 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 async function isMainApplicationMetaDataSyncedAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest\n): Promise<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 (await areVersionsSyncedAsync(projectRoot, config, androidManifest))\n );\n}\n\nexport async function areVersionsSyncedAsync(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>,\n androidManifest: AndroidManifest\n): Promise<boolean> {\n const expectedRuntimeVersion = await getRuntimeVersionNullableAsync(\n projectRoot,\n config,\n 'android'\n );\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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"}
@@ -83,7 +83,11 @@ function setDeviceFamily(config, {
83
83
  // Guessing that this is the best way to emulate Xcode.
84
84
  // Using `project.addToBuildSettings` modifies too many targets.
85
85
  if (typeof (buildSettings === null || buildSettings === void 0 ? void 0 : buildSettings.PRODUCT_NAME) !== 'undefined') {
86
- buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;
86
+ if (typeof (buildSettings === null || buildSettings === void 0 ? void 0 : buildSettings.TVOS_DEPLOYMENT_TARGET) !== 'undefined') {
87
+ buildSettings.TARGETED_DEVICE_FAMILY = '3';
88
+ } else {
89
+ buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;
90
+ }
87
91
  }
88
92
  }
89
93
  return project;
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceFamily.js","names":["_iosPlugins","data","require","_warnings","withDeviceFamily","config","withXcodeProject","modResults","setDeviceFamily","project","exports","getSupportsTablet","_config$ios","ios","supportsTablet","getIsTabletOnly","_config$ios2","isTabletOnly","getDeviceFamilies","_config$ios3","addWarningIOS","formatDeviceFamilies","deviceFamilies","join","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","TARGETED_DEVICE_FAMILY"],"sources":["../../src/ios/DeviceFamily.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';\n\nexport const withDeviceFamily: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setDeviceFamily(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getSupportsTablet(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config.ios?.supportsTablet;\n}\n\nexport function getIsTabletOnly(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config?.ios?.isTabletOnly;\n}\n\nexport function getDeviceFamilies(config: Pick<ExpoConfig, 'ios'>): number[] {\n const supportsTablet = getSupportsTablet(config);\n const isTabletOnly = getIsTabletOnly(config);\n\n if (isTabletOnly && config.ios?.supportsTablet === false) {\n addWarningIOS(\n 'ios.supportsTablet',\n `Found contradictory values: \\`{ ios: { isTabletOnly: true, supportsTablet: false } }\\`. Using \\`{ isTabletOnly: true }\\`.`\n );\n }\n\n // 1 is iPhone, 2 is iPad\n if (isTabletOnly) {\n return [2];\n } else if (supportsTablet) {\n return [1, 2];\n } else {\n // is iPhone only\n return [1];\n }\n}\n\n/**\n * Wrapping the families in double quotes is the only way to set a value with a comma in it.\n *\n * @param deviceFamilies\n */\nexport function formatDeviceFamilies(deviceFamilies: number[]): string {\n return `\"${deviceFamilies.join(',')}\"`;\n}\n\n/**\n * Add to pbxproj under TARGETED_DEVICE_FAMILY\n */\nexport function setDeviceFamily(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const deviceFamilies = formatDeviceFamilies(getDeviceFamilies(config));\n\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;\n }\n }\n\n return project;\n}\n"],"mappings":";;;;;;;;;;;AAIA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAMG,gBAA8B,GAAIC,MAAM,IAAK;EACxD,OAAO,IAAAC,8BAAgB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IAChDA,MAAM,CAACE,UAAU,GAAG,MAAMC,eAAe,CAACH,MAAM,EAAE;MAChDI,OAAO,EAAEJ,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACK,OAAA,CAAAN,gBAAA,GAAAA,gBAAA;AAEK,SAASO,iBAAiBA,CAACN,MAA+B,EAAW;EAAA,IAAAO,WAAA;EAC1E,OAAO,CAAC,GAAAA,WAAA,GAACP,MAAM,CAACQ,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,cAAc;AACrC;AAEO,SAASC,eAAeA,CAACV,MAA+B,EAAW;EAAA,IAAAW,YAAA;EACxE,OAAO,CAAC,EAACX,MAAM,aAANA,MAAM,gBAAAW,YAAA,GAANX,MAAM,CAAEQ,GAAG,cAAAG,YAAA,eAAXA,YAAA,CAAaC,YAAY;AACpC;AAEO,SAASC,iBAAiBA,CAACb,MAA+B,EAAY;EAAA,IAAAc,YAAA;EAC3E,MAAML,cAAc,GAAGH,iBAAiB,CAACN,MAAM,CAAC;EAChD,MAAMY,YAAY,GAAGF,eAAe,CAACV,MAAM,CAAC;EAE5C,IAAIY,YAAY,IAAI,EAAAE,YAAA,GAAAd,MAAM,CAACQ,GAAG,cAAAM,YAAA,uBAAVA,YAAA,CAAYL,cAAc,MAAK,KAAK,EAAE;IACxD,IAAAM,yBAAa,EACX,oBAAoB,EACnB,2HAA0H,CAC5H;EACH;;EAEA;EACA,IAAIH,YAAY,EAAE;IAChB,OAAO,CAAC,CAAC,CAAC;EACZ,CAAC,MAAM,IAAIH,cAAc,EAAE;IACzB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;EACf,CAAC,MAAM;IACL;IACA,OAAO,CAAC,CAAC,CAAC;EACZ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASO,oBAAoBA,CAACC,cAAwB,EAAU;EACrE,OAAQ,IAAGA,cAAc,CAACC,IAAI,CAAC,GAAG,CAAE,GAAE;AACxC;;AAEA;AACA;AACA;AACO,SAASf,eAAeA,CAC7BH,MAA+B,EAC/B;EAAEI;AAAmC,CAAC,EACxB;EACd,MAAMa,cAAc,GAAGD,oBAAoB,CAACH,iBAAiB,CAACb,MAAM,CAAC,CAAC;EAEtE,MAAMmB,cAAc,GAAGf,OAAO,CAACgB,8BAA8B,EAAE;EAC/D;EACA,KAAK,MAAM;IAAEC;EAAc,CAAC,IAAIC,MAAM,CAACC,MAAM,CAACJ,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE;IACnE;IACA;IACA,IAAI,QAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,YAAY,MAAK,WAAW,EAAE;MACtDH,aAAa,CAACI,sBAAsB,GAAGR,cAAc;IACvD;EACF;EAEA,OAAOb,OAAO;AAChB"}
1
+ {"version":3,"file":"DeviceFamily.js","names":["_iosPlugins","data","require","_warnings","withDeviceFamily","config","withXcodeProject","modResults","setDeviceFamily","project","exports","getSupportsTablet","_config$ios","ios","supportsTablet","getIsTabletOnly","_config$ios2","isTabletOnly","getDeviceFamilies","_config$ios3","addWarningIOS","formatDeviceFamilies","deviceFamilies","join","configurations","pbxXCBuildConfigurationSection","buildSettings","Object","values","PRODUCT_NAME","TVOS_DEPLOYMENT_TARGET","TARGETED_DEVICE_FAMILY"],"sources":["../../src/ios/DeviceFamily.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';\n\nexport const withDeviceFamily: ConfigPlugin = (config) => {\n return withXcodeProject(config, async (config) => {\n config.modResults = await setDeviceFamily(config, {\n project: config.modResults,\n });\n return config;\n });\n};\n\nexport function getSupportsTablet(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config.ios?.supportsTablet;\n}\n\nexport function getIsTabletOnly(config: Pick<ExpoConfig, 'ios'>): boolean {\n return !!config?.ios?.isTabletOnly;\n}\n\nexport function getDeviceFamilies(config: Pick<ExpoConfig, 'ios'>): number[] {\n const supportsTablet = getSupportsTablet(config);\n const isTabletOnly = getIsTabletOnly(config);\n\n if (isTabletOnly && config.ios?.supportsTablet === false) {\n addWarningIOS(\n 'ios.supportsTablet',\n `Found contradictory values: \\`{ ios: { isTabletOnly: true, supportsTablet: false } }\\`. Using \\`{ isTabletOnly: true }\\`.`\n );\n }\n\n // 1 is iPhone, 2 is iPad\n if (isTabletOnly) {\n return [2];\n } else if (supportsTablet) {\n return [1, 2];\n } else {\n // is iPhone only\n return [1];\n }\n}\n\n/**\n * Wrapping the families in double quotes is the only way to set a value with a comma in it.\n *\n * @param deviceFamilies\n */\nexport function formatDeviceFamilies(deviceFamilies: number[]): string {\n return `\"${deviceFamilies.join(',')}\"`;\n}\n\n/**\n * Add to pbxproj under TARGETED_DEVICE_FAMILY\n */\nexport function setDeviceFamily(\n config: Pick<ExpoConfig, 'ios'>,\n { project }: { project: XcodeProject }\n): XcodeProject {\n const deviceFamilies = formatDeviceFamilies(getDeviceFamilies(config));\n\n const configurations = project.pbxXCBuildConfigurationSection();\n // @ts-ignore\n for (const { buildSettings } of Object.values(configurations || {})) {\n // Guessing that this is the best way to emulate Xcode.\n // Using `project.addToBuildSettings` modifies too many targets.\n if (typeof buildSettings?.PRODUCT_NAME !== 'undefined') {\n if (typeof buildSettings?.TVOS_DEPLOYMENT_TARGET !== 'undefined') {\n buildSettings.TARGETED_DEVICE_FAMILY = '3';\n } else {\n buildSettings.TARGETED_DEVICE_FAMILY = deviceFamilies;\n }\n }\n }\n\n return project;\n}\n"],"mappings":";;;;;;;;;;;AAIA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,UAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,SAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAMG,gBAA8B,GAAIC,MAAM,IAAK;EACxD,OAAO,IAAAC,8BAAgB,EAACD,MAAM,EAAE,MAAOA,MAAM,IAAK;IAChDA,MAAM,CAACE,UAAU,GAAG,MAAMC,eAAe,CAACH,MAAM,EAAE;MAChDI,OAAO,EAAEJ,MAAM,CAACE;IAClB,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,CAAC;AACJ,CAAC;AAACK,OAAA,CAAAN,gBAAA,GAAAA,gBAAA;AAEK,SAASO,iBAAiBA,CAACN,MAA+B,EAAW;EAAA,IAAAO,WAAA;EAC1E,OAAO,CAAC,GAAAA,WAAA,GAACP,MAAM,CAACQ,GAAG,cAAAD,WAAA,eAAVA,WAAA,CAAYE,cAAc;AACrC;AAEO,SAASC,eAAeA,CAACV,MAA+B,EAAW;EAAA,IAAAW,YAAA;EACxE,OAAO,CAAC,EAACX,MAAM,aAANA,MAAM,gBAAAW,YAAA,GAANX,MAAM,CAAEQ,GAAG,cAAAG,YAAA,eAAXA,YAAA,CAAaC,YAAY;AACpC;AAEO,SAASC,iBAAiBA,CAACb,MAA+B,EAAY;EAAA,IAAAc,YAAA;EAC3E,MAAML,cAAc,GAAGH,iBAAiB,CAACN,MAAM,CAAC;EAChD,MAAMY,YAAY,GAAGF,eAAe,CAACV,MAAM,CAAC;EAE5C,IAAIY,YAAY,IAAI,EAAAE,YAAA,GAAAd,MAAM,CAACQ,GAAG,cAAAM,YAAA,uBAAVA,YAAA,CAAYL,cAAc,MAAK,KAAK,EAAE;IACxD,IAAAM,yBAAa,EACX,oBAAoB,EACnB,2HAA0H,CAC5H;EACH;;EAEA;EACA,IAAIH,YAAY,EAAE;IAChB,OAAO,CAAC,CAAC,CAAC;EACZ,CAAC,MAAM,IAAIH,cAAc,EAAE;IACzB,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;EACf,CAAC,MAAM;IACL;IACA,OAAO,CAAC,CAAC,CAAC;EACZ;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASO,oBAAoBA,CAACC,cAAwB,EAAU;EACrE,OAAQ,IAAGA,cAAc,CAACC,IAAI,CAAC,GAAG,CAAE,GAAE;AACxC;;AAEA;AACA;AACA;AACO,SAASf,eAAeA,CAC7BH,MAA+B,EAC/B;EAAEI;AAAmC,CAAC,EACxB;EACd,MAAMa,cAAc,GAAGD,oBAAoB,CAACH,iBAAiB,CAACb,MAAM,CAAC,CAAC;EAEtE,MAAMmB,cAAc,GAAGf,OAAO,CAACgB,8BAA8B,EAAE;EAC/D;EACA,KAAK,MAAM;IAAEC;EAAc,CAAC,IAAIC,MAAM,CAACC,MAAM,CAACJ,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE;IACnE;IACA;IACA,IAAI,QAAOE,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEG,YAAY,MAAK,WAAW,EAAE;MACtD,IAAI,QAAOH,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEI,sBAAsB,MAAK,WAAW,EAAE;QAChEJ,aAAa,CAACK,sBAAsB,GAAG,GAAG;MAC5C,CAAC,MAAM;QACLL,aAAa,CAACK,sBAAsB,GAAGT,cAAc;MACvD;IACF;EACF;EAEA,OAAOb,OAAO;AAChB"}
@@ -15,8 +15,8 @@ export declare enum Config {
15
15
  CODE_SIGNING_METADATA = "EXUpdatesCodeSigningMetadata"
16
16
  }
17
17
  export declare const withUpdates: ConfigPlugin;
18
- export declare function setUpdatesConfig(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist, expoUpdatesPackageVersion?: string | null): ExpoPlist;
19
- export declare function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist;
18
+ export declare function setUpdatesConfigAsync(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist, expoUpdatesPackageVersion?: string | null): Promise<ExpoPlist>;
19
+ export declare function setVersionsConfigAsync(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist): Promise<ExpoPlist>;
20
20
  interface ShellScriptBuildPhase {
21
21
  isa: 'PBXShellScriptBuildPhase';
22
22
  name: string;
@@ -27,6 +27,6 @@ export declare function getBundleReactNativePhase(project: xcode.XcodeProject):
27
27
  export declare function ensureBundleReactNativePhaseContainsConfigurationScript(projectRoot: string, project: xcode.XcodeProject): xcode.XcodeProject;
28
28
  export declare function isShellScriptBuildPhaseConfigured(projectRoot: string, project: xcode.XcodeProject): boolean;
29
29
  export declare function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean;
30
- export declare function isPlistConfigurationSynced(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist): boolean;
31
- export declare function isPlistVersionConfigurationSynced(config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, expoPlist: ExpoPlist): boolean;
30
+ export declare function isPlistConfigurationSyncedAsync(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist): Promise<boolean>;
31
+ export declare function isPlistVersionConfigurationSyncedAsync(projectRoot: string, config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, expoPlist: ExpoPlist): Promise<boolean>;
32
32
  export {};
@@ -7,11 +7,11 @@ exports.Config = void 0;
7
7
  exports.ensureBundleReactNativePhaseContainsConfigurationScript = ensureBundleReactNativePhaseContainsConfigurationScript;
8
8
  exports.getBundleReactNativePhase = getBundleReactNativePhase;
9
9
  exports.isPlistConfigurationSet = isPlistConfigurationSet;
10
- exports.isPlistConfigurationSynced = isPlistConfigurationSynced;
11
- exports.isPlistVersionConfigurationSynced = isPlistVersionConfigurationSynced;
10
+ exports.isPlistConfigurationSyncedAsync = isPlistConfigurationSyncedAsync;
11
+ exports.isPlistVersionConfigurationSyncedAsync = isPlistVersionConfigurationSyncedAsync;
12
12
  exports.isShellScriptBuildPhaseConfigured = isShellScriptBuildPhaseConfigured;
13
- exports.setUpdatesConfig = setUpdatesConfig;
14
- exports.setVersionsConfig = setVersionsConfig;
13
+ exports.setUpdatesConfigAsync = setUpdatesConfigAsync;
14
+ exports.setVersionsConfigAsync = setVersionsConfigAsync;
15
15
  exports.withUpdates = void 0;
16
16
  function path() {
17
17
  const data = _interopRequireWildcard(require("path"));
@@ -61,15 +61,15 @@ exports.Config = Config;
61
61
  Config["CODE_SIGNING_METADATA"] = "EXUpdatesCodeSigningMetadata";
62
62
  })(Config || (exports.Config = Config = {}));
63
63
  const withUpdates = config => {
64
- return (0, _iosPlugins().withExpoPlist)(config, config => {
64
+ return (0, _iosPlugins().withExpoPlist)(config, async config => {
65
65
  const projectRoot = config.modRequest.projectRoot;
66
66
  const expoUpdatesPackageVersion = (0, _Updates().getExpoUpdatesPackageVersion)(projectRoot);
67
- config.modResults = setUpdatesConfig(projectRoot, config, config.modResults, expoUpdatesPackageVersion);
67
+ config.modResults = await setUpdatesConfigAsync(projectRoot, config, config.modResults, expoUpdatesPackageVersion);
68
68
  return config;
69
69
  });
70
70
  };
71
71
  exports.withUpdates = withUpdates;
72
- function setUpdatesConfig(projectRoot, config, expoPlist, expoUpdatesPackageVersion) {
72
+ async function setUpdatesConfigAsync(projectRoot, config, expoPlist, expoUpdatesPackageVersion) {
73
73
  const newExpoPlist = {
74
74
  ...expoPlist,
75
75
  [Config.ENABLED]: (0, _Updates().getUpdatesEnabled)(config),
@@ -100,13 +100,13 @@ function setUpdatesConfig(projectRoot, config, expoPlist, expoUpdatesPackageVers
100
100
  } else {
101
101
  delete newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY];
102
102
  }
103
- return setVersionsConfig(config, newExpoPlist);
103
+ return await setVersionsConfigAsync(projectRoot, config, newExpoPlist);
104
104
  }
105
- function setVersionsConfig(config, expoPlist) {
105
+ async function setVersionsConfigAsync(projectRoot, config, expoPlist) {
106
106
  const newExpoPlist = {
107
107
  ...expoPlist
108
108
  };
109
- const runtimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'ios');
109
+ const runtimeVersion = await (0, _Updates().getRuntimeVersionNullableAsync)(projectRoot, config, 'ios');
110
110
  if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {
111
111
  throw new Error('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.');
112
112
  }
@@ -164,12 +164,12 @@ function isShellScriptBuildPhaseConfigured(projectRoot, project) {
164
164
  function isPlistConfigurationSet(expoPlist) {
165
165
  return Boolean(expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion));
166
166
  }
167
- function isPlistConfigurationSynced(projectRoot, config, expoPlist) {
168
- return (0, _Updates().getUpdateUrl)(config) === expoPlist.EXUpdatesURL && (0, _Updates().getUpdatesEnabled)(config) === expoPlist.EXUpdatesEnabled && (0, _Updates().getUpdatesTimeout)(config) === expoPlist.EXUpdatesLaunchWaitMs && (0, _Updates().getUpdatesCheckOnLaunch)(config) === expoPlist.EXUpdatesCheckOnLaunch && (0, _Updates().getUpdatesCodeSigningCertificate)(projectRoot, config) === expoPlist.EXUpdatesCodeSigningCertificate && (0, _Updates().getUpdatesCodeSigningMetadata)(config) === expoPlist.EXUpdatesCodeSigningMetadata && isPlistVersionConfigurationSynced(config, expoPlist);
167
+ async function isPlistConfigurationSyncedAsync(projectRoot, config, expoPlist) {
168
+ return (0, _Updates().getUpdateUrl)(config) === expoPlist.EXUpdatesURL && (0, _Updates().getUpdatesEnabled)(config) === expoPlist.EXUpdatesEnabled && (0, _Updates().getUpdatesTimeout)(config) === expoPlist.EXUpdatesLaunchWaitMs && (0, _Updates().getUpdatesCheckOnLaunch)(config) === expoPlist.EXUpdatesCheckOnLaunch && (0, _Updates().getUpdatesCodeSigningCertificate)(projectRoot, config) === expoPlist.EXUpdatesCodeSigningCertificate && (0, _Updates().getUpdatesCodeSigningMetadata)(config) === expoPlist.EXUpdatesCodeSigningMetadata && (await isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist));
169
169
  }
170
- function isPlistVersionConfigurationSynced(config, expoPlist) {
170
+ async function isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist) {
171
171
  var _expoPlist$EXUpdatesR, _expoPlist$EXUpdatesS;
172
- const expectedRuntimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'ios');
172
+ const expectedRuntimeVersion = await (0, _Updates().getRuntimeVersionNullableAsync)(projectRoot, config, 'ios');
173
173
  const expectedSdkVersion = (0, _Updates().getSDKVersion)(config);
174
174
  const currentRuntimeVersion = (_expoPlist$EXUpdatesR = expoPlist.EXUpdatesRuntimeVersion) !== null && _expoPlist$EXUpdatesR !== void 0 ? _expoPlist$EXUpdatesR : null;
175
175
  const currentSdkVersion = (_expoPlist$EXUpdatesS = expoPlist.EXUpdatesSDKVersion) !== null && _expoPlist$EXUpdatesS !== void 0 ? _expoPlist$EXUpdatesS : null;
@@ -1 +1 @@
1
- {"version":3,"file":"Updates.js","names":["path","data","_interopRequireWildcard","require","_resolveFrom","_interopRequireDefault","_iosPlugins","_Updates","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","CREATE_MANIFEST_IOS_PATH","Config","exports","withUpdates","config","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","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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"}
1
+ {"version":3,"file":"Updates.js","names":["path","data","_interopRequireWildcard","require","_resolveFrom","_interopRequireDefault","_iosPlugins","_Updates","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","CREATE_MANIFEST_IOS_PATH","Config","exports","withUpdates","config","withExpoPlist","projectRoot","modRequest","expoUpdatesPackageVersion","getExpoUpdatesPackageVersion","modResults","setUpdatesConfigAsync","expoPlist","newExpoPlist","ENABLED","getUpdatesEnabled","CHECK_ON_LAUNCH","getUpdatesCheckOnLaunch","LAUNCH_WAIT_MS","getUpdatesTimeout","updateUrl","getUpdateUrl","UPDATE_URL","codeSigningCertificate","getUpdatesCodeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","getUpdatesCodeSigningMetadata","CODE_SIGNING_METADATA","requestHeaders","getUpdatesRequestHeaders","UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY","setVersionsConfigAsync","runtimeVersion","getRuntimeVersionNullableAsync","RUNTIME_VERSION","Error","sdkVersion","getSDKVersion","SDK_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","relativePath","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSyncedAsync","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","EXUpdatesCodeSigningCertificate","EXUpdatesCodeSigningMetadata","isPlistVersionConfigurationSyncedAsync","_expoPlist$EXUpdatesR","_expoPlist$EXUpdatesS","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"sources":["../../src/ios/Updates.ts"],"sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\nimport { ExpoPlist } from './IosConfig.types';\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullableAsync,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadata,\n getUpdatesRequestHeaders,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\n\nconst CREATE_MANIFEST_IOS_PATH = 'expo-updates/scripts/create-manifest-ios.sh';\n\nexport enum Config {\n ENABLED = 'EXUpdatesEnabled',\n CHECK_ON_LAUNCH = 'EXUpdatesCheckOnLaunch',\n LAUNCH_WAIT_MS = 'EXUpdatesLaunchWaitMs',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n SDK_VERSION = 'EXUpdatesSDKVersion',\n UPDATE_URL = 'EXUpdatesURL',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n CODE_SIGNING_CERTIFICATE = 'EXUpdatesCodeSigningCertificate',\n CODE_SIGNING_METADATA = 'EXUpdatesCodeSigningMetadata',\n}\n\n// when making changes to this config plugin, ensure the same changes are also made in eas-cli and build-tools\n// Also ensure the docs are up-to-date: https://docs.expo.dev/bare/installing-updates/\n\nexport const withUpdates: ConfigPlugin = (config) => {\n return withExpoPlist(config, async (config) => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = await setUpdatesConfigAsync(\n projectRoot,\n config,\n config.modResults,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport async function setUpdatesConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n expoUpdatesPackageVersion?: string | null\n): Promise<ExpoPlist> {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadata(config);\n if (codeSigningMetadata) {\n newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_METADATA];\n }\n\n const requestHeaders = getUpdatesRequestHeaders(config);\n if (requestHeaders) {\n newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = requestHeaders;\n } else {\n delete newExpoPlist[Config.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY];\n }\n\n return await setVersionsConfigAsync(projectRoot, config, newExpoPlist);\n}\n\nexport async function setVersionsConfigAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<ExpoPlist> {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {\n throw new Error(\n 'A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n (buildPhase) => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport async function isPlistConfigurationSyncedAsync(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n return (\n getUpdateUrl(config) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\n getUpdatesCodeSigningCertificate(projectRoot, config) ===\n expoPlist.EXUpdatesCodeSigningCertificate &&\n getUpdatesCodeSigningMetadata(config) === expoPlist.EXUpdatesCodeSigningMetadata &&\n (await isPlistVersionConfigurationSyncedAsync(projectRoot, config, expoPlist))\n );\n}\n\nexport async function isPlistVersionConfigurationSyncedAsync(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>,\n expoPlist: ExpoPlist\n): Promise<boolean> {\n const expectedRuntimeVersion = await getRuntimeVersionNullableAsync(projectRoot, config, 'ios');\n const expectedSdkVersion = getSDKVersion(config);\n\n const currentRuntimeVersion = expoPlist.EXUpdatesRuntimeVersion ?? null;\n const currentSdkVersion = expoPlist.EXUpdatesSDKVersion ?? null;\n\n if (expectedRuntimeVersion !== null) {\n return currentRuntimeVersion === expectedRuntimeVersion && currentSdkVersion === null;\n } else if (expectedSdkVersion !== null) {\n return currentSdkVersion === expectedSdkVersion && currentRuntimeVersion === null;\n } else {\n return true;\n }\n}\n"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import { ExpoConfig } from '@expo/config-types';
2
- import { ConfigPlugin, Mod } from '../Plugin.types';
1
+ import { ConfigPlugin, ExportedConfigWithProps, Mod } from '../Plugin.types';
3
2
  import { Manifest, Paths, Properties, Resources } from '../android';
4
3
  type OptionalPromise<T> = T | Promise<T>;
5
- type MutateDataAction<T> = (expo: ExpoConfig, data: T) => OptionalPromise<T>;
4
+ type MutateDataAction<T> = (expo: ExportedConfigWithProps<T>, data: T) => OptionalPromise<T>;
6
5
  /**
7
6
  * Helper method for creating mods from existing config functions.
8
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"android-plugins.js","names":["_withMod","data","require","createAndroidManifestPlugin","action","name","withUnknown","config","withAndroidManifest","modResults","Object","defineProperty","value","createStringsXmlPlugin","withStringsXml","withMod","platform","mod","exports","withAndroidColors","withAndroidColorsNight","withAndroidStyles","withMainActivity","withMainApplication","withProjectBuildGradle","withAppBuildGradle","withSettingsGradle","withGradleProperties"],"sources":["../../src/plugins/android-plugins.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { withMod } from './withMod';\nimport { ConfigPlugin, Mod } from '../Plugin.types';\nimport { Manifest, Paths, Properties, Resources } from '../android';\n\ntype OptionalPromise<T> = T | Promise<T>;\n\ntype MutateDataAction<T> = (expo: ExpoConfig, data: T) => OptionalPromise<T>;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createAndroidManifestPlugin(\n action: MutateDataAction<Manifest.AndroidManifest>,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withAndroidManifest(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createStringsXmlPlugin(\n action: MutateDataAction<Resources.ResourceXML>,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withStringsXml(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AndroidManifest.xml for modification.\n *\n * @param config\n * @param action\n */\nexport const withAndroidManifest: ConfigPlugin<Mod<Manifest.AndroidManifest>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'manifest',\n action,\n });\n};\n\n/**\n * Provides the strings.xml for modification.\n *\n * @param config\n * @param action\n */\nexport const withStringsXml: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'strings',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values/colors.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidColors: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'colors',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values-night/colors.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidColorsNight: ConfigPlugin<Mod<Resources.ResourceXML>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'colorsNight',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values/styles.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidStyles: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'styles',\n action,\n });\n};\n\n/**\n * Provides the project MainActivity for modification.\n *\n * @param config\n * @param action\n */\nexport const withMainActivity: ConfigPlugin<Mod<Paths.ApplicationProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'mainActivity',\n action,\n });\n};\n\n/**\n * Provides the project MainApplication for modification.\n *\n * @param config\n * @param action\n */\nexport const withMainApplication: ConfigPlugin<Mod<Paths.ApplicationProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'mainApplication',\n action,\n });\n};\n\n/**\n * Provides the project /build.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withProjectBuildGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'projectBuildGradle',\n action,\n });\n};\n\n/**\n * Provides the app/build.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppBuildGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'appBuildGradle',\n action,\n });\n};\n\n/**\n * Provides the /settings.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withSettingsGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'settingsGradle',\n action,\n });\n};\n\n/**\n * Provides the /gradle.properties for modification.\n *\n * @param config\n * @param action\n */\nexport const withGradleProperties: ConfigPlugin<Mod<Properties.PropertiesItem[]>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'gradleProperties',\n action,\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"android-plugins.js","names":["_withMod","data","require","createAndroidManifestPlugin","action","name","withUnknown","config","withAndroidManifest","modResults","Object","defineProperty","value","createStringsXmlPlugin","withStringsXml","withMod","platform","mod","exports","withAndroidColors","withAndroidColorsNight","withAndroidStyles","withMainActivity","withMainApplication","withProjectBuildGradle","withAppBuildGradle","withSettingsGradle","withGradleProperties"],"sources":["../../src/plugins/android-plugins.ts"],"sourcesContent":["import { withMod } from './withMod';\nimport { ConfigPlugin, ExportedConfigWithProps, Mod } from '../Plugin.types';\nimport { Manifest, Paths, Properties, Resources } from '../android';\n\ntype OptionalPromise<T> = T | Promise<T>;\n\ntype MutateDataAction<T> = (expo: ExportedConfigWithProps<T>, data: T) => OptionalPromise<T>;\n\n/**\n * Helper method for creating mods from existing config functions.\n *\n * @param action\n */\nexport function createAndroidManifestPlugin(\n action: MutateDataAction<Manifest.AndroidManifest>,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withAndroidManifest(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\nexport function createStringsXmlPlugin(\n action: MutateDataAction<Resources.ResourceXML>,\n name: string\n): ConfigPlugin {\n const withUnknown: ConfigPlugin = (config) =>\n withStringsXml(config, async (config) => {\n config.modResults = await action(config, config.modResults);\n return config;\n });\n if (name) {\n Object.defineProperty(withUnknown, 'name', {\n value: name,\n });\n }\n return withUnknown;\n}\n\n/**\n * Provides the AndroidManifest.xml for modification.\n *\n * @param config\n * @param action\n */\nexport const withAndroidManifest: ConfigPlugin<Mod<Manifest.AndroidManifest>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'manifest',\n action,\n });\n};\n\n/**\n * Provides the strings.xml for modification.\n *\n * @param config\n * @param action\n */\nexport const withStringsXml: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'strings',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values/colors.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidColors: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'colors',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values-night/colors.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidColorsNight: ConfigPlugin<Mod<Resources.ResourceXML>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'colorsNight',\n action,\n });\n};\n\n/**\n * Provides the `android/app/src/main/res/values/styles.xml` as JSON (parsed with [`xml2js`](https://www.npmjs.com/package/xml2js)).\n *\n * @param config\n * @param action\n */\nexport const withAndroidStyles: ConfigPlugin<Mod<Resources.ResourceXML>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'styles',\n action,\n });\n};\n\n/**\n * Provides the project MainActivity for modification.\n *\n * @param config\n * @param action\n */\nexport const withMainActivity: ConfigPlugin<Mod<Paths.ApplicationProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'mainActivity',\n action,\n });\n};\n\n/**\n * Provides the project MainApplication for modification.\n *\n * @param config\n * @param action\n */\nexport const withMainApplication: ConfigPlugin<Mod<Paths.ApplicationProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'mainApplication',\n action,\n });\n};\n\n/**\n * Provides the project /build.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withProjectBuildGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'projectBuildGradle',\n action,\n });\n};\n\n/**\n * Provides the app/build.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withAppBuildGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'appBuildGradle',\n action,\n });\n};\n\n/**\n * Provides the /settings.gradle for modification.\n *\n * @param config\n * @param action\n */\nexport const withSettingsGradle: ConfigPlugin<Mod<Paths.GradleProjectFile>> = (config, action) => {\n return withMod(config, {\n platform: 'android',\n mod: 'settingsGradle',\n action,\n });\n};\n\n/**\n * Provides the /gradle.properties for modification.\n *\n * @param config\n * @param action\n */\nexport const withGradleProperties: ConfigPlugin<Mod<Properties.PropertiesItem[]>> = (\n config,\n action\n) => {\n return withMod(config, {\n platform: 'android',\n mod: 'gradleProperties',\n action,\n });\n};\n"],"mappings":"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"}
@@ -7,16 +7,11 @@ export declare function getNativeVersion(config: Pick<ExpoConfig, 'version'> & {
7
7
  android?: Pick<Android, 'versionCode'>;
8
8
  ios?: Pick<IOS, 'buildNumber'>;
9
9
  }, platform: 'android' | 'ios'): string;
10
- /**
11
- * Compute runtime version policies.
12
- * @return an expoConfig with only string valued platform specific runtime versions.
13
- */
14
- export declare const withRuntimeVersion: (config: ExpoConfig) => ExpoConfig;
15
- export declare function getRuntimeVersionNullable(...[config, platform]: Parameters<typeof getRuntimeVersion>): string | null;
16
- export declare function getRuntimeVersion(config: Pick<ExpoConfig, 'version' | 'runtimeVersion' | 'sdkVersion'> & {
10
+ export declare function getRuntimeVersionNullableAsync(...[projectRoot, config, platform]: Parameters<typeof getRuntimeVersionAsync>): Promise<string | null>;
11
+ export declare function getRuntimeVersionAsync(projectRoot: string, config: Pick<ExpoConfig, 'version' | 'runtimeVersion' | 'sdkVersion'> & {
17
12
  android?: Pick<Android, 'versionCode' | 'runtimeVersion'>;
18
13
  ios?: Pick<IOS, 'buildNumber' | 'runtimeVersion'>;
19
- }, platform: 'android' | 'ios'): string | null;
14
+ }, platform: 'android' | 'ios'): Promise<string | null>;
20
15
  export declare function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null;
21
16
  export declare function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean;
22
17
  export declare function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number;
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getAppVersion = getAppVersion;
7
7
  exports.getExpoUpdatesPackageVersion = getExpoUpdatesPackageVersion;
8
8
  exports.getNativeVersion = getNativeVersion;
9
- exports.getRuntimeVersion = getRuntimeVersion;
10
- exports.getRuntimeVersionNullable = getRuntimeVersionNullable;
9
+ exports.getRuntimeVersionAsync = getRuntimeVersionAsync;
10
+ exports.getRuntimeVersionNullableAsync = getRuntimeVersionNullableAsync;
11
11
  exports.getSDKVersion = getSDKVersion;
12
12
  exports.getUpdateUrl = getUpdateUrl;
13
13
  exports.getUpdatesCheckOnLaunch = getUpdatesCheckOnLaunch;
@@ -18,7 +18,13 @@ exports.getUpdatesEnabled = getUpdatesEnabled;
18
18
  exports.getUpdatesRequestHeaders = getUpdatesRequestHeaders;
19
19
  exports.getUpdatesRequestHeadersStringified = getUpdatesRequestHeadersStringified;
20
20
  exports.getUpdatesTimeout = getUpdatesTimeout;
21
- exports.withRuntimeVersion = void 0;
21
+ function Fingerprint() {
22
+ const data = _interopRequireWildcard(require("@expo/fingerprint"));
23
+ Fingerprint = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
22
28
  function _sdkRuntimeVersions() {
23
29
  const data = require("@expo/sdk-runtime-versions");
24
30
  _sdkRuntimeVersions = function () {
@@ -69,6 +75,8 @@ function _() {
69
75
  return data;
70
76
  }
71
77
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
78
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
79
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
72
80
  function getExpoUpdatesPackageVersion(projectRoot) {
73
81
  const expoUpdatesPackageJsonPath = _resolveFrom().default.silent(projectRoot, 'expo-updates/package.json');
74
82
  if (!expoUpdatesPackageJsonPath || !_fs().default.existsSync(expoUpdatesPackageJsonPath)) {
@@ -104,38 +112,9 @@ function getNativeVersion(config, platform) {
104
112
  }
105
113
  }
106
114
  }
107
-
108
- /**
109
- * Compute runtime version policies.
110
- * @return an expoConfig with only string valued platform specific runtime versions.
111
- */
112
- const withRuntimeVersion = config => {
113
- var _config$ios, _config$android;
114
- if ((_config$ios = config.ios) !== null && _config$ios !== void 0 && _config$ios.runtimeVersion || config.runtimeVersion) {
115
- const runtimeVersion = getRuntimeVersion(config, 'ios');
116
- if (runtimeVersion) {
117
- config.ios = {
118
- ...config.ios,
119
- runtimeVersion
120
- };
121
- }
122
- }
123
- if ((_config$android = config.android) !== null && _config$android !== void 0 && _config$android.runtimeVersion || config.runtimeVersion) {
124
- const runtimeVersion = getRuntimeVersion(config, 'android');
125
- if (runtimeVersion) {
126
- config.android = {
127
- ...config.android,
128
- runtimeVersion
129
- };
130
- }
131
- }
132
- delete config.runtimeVersion;
133
- return config;
134
- };
135
- exports.withRuntimeVersion = withRuntimeVersion;
136
- function getRuntimeVersionNullable(...[config, platform]) {
115
+ async function getRuntimeVersionNullableAsync(...[projectRoot, config, platform]) {
137
116
  try {
138
- return getRuntimeVersion(config, platform);
117
+ return await getRuntimeVersionAsync(projectRoot, config, platform);
139
118
  } catch (e) {
140
119
  if ((0, _getenv().boolish)('EXPO_DEBUG', false)) {
141
120
  console.log(e);
@@ -143,7 +122,7 @@ function getRuntimeVersionNullable(...[config, platform]) {
143
122
  return null;
144
123
  }
145
124
  }
146
- function getRuntimeVersion(config, platform) {
125
+ async function getRuntimeVersionAsync(projectRoot, config, platform) {
147
126
  var _config$platform$runt, _config$platform;
148
127
  const runtimeVersion = (_config$platform$runt = (_config$platform = config[platform]) === null || _config$platform === void 0 ? void 0 : _config$platform.runtimeVersion) !== null && _config$platform$runt !== void 0 ? _config$platform$runt : config.runtimeVersion;
149
128
  if (!runtimeVersion) {
@@ -160,8 +139,11 @@ function getRuntimeVersion(config, platform) {
160
139
  throw new Error("An SDK version must be defined when using the 'sdkVersion' runtime policy.");
161
140
  }
162
141
  return (0, _sdkRuntimeVersions().getRuntimeVersionForSDKVersion)(config.sdkVersion);
142
+ } else if (runtimeVersion.policy === 'fingerprintExperimental') {
143
+ console.warn("Use of the experimental 'fingerprintExperimental' runtime policy may result in unexpected system behavior.");
144
+ return await Fingerprint().createProjectHashAsync(projectRoot);
163
145
  }
164
- throw new Error(`"${typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion}" is not a valid runtime version. getRuntimeVersion only supports a string, "sdkVersion", "appVersion", or "nativeVersion" policy.`);
146
+ throw new Error(`"${typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion}" is not a valid runtime version. getRuntimeVersionAsync only supports a string, "sdkVersion", "appVersion", "nativeVersion" or "fingerprintExperimental" policy.`);
165
147
  }
166
148
  function getSDKVersion(config) {
167
149
  return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;
@@ -1 +1 @@
1
- {"version":3,"file":"Updates.js","names":["_sdkRuntimeVersions","data","require","_fs","_interopRequireDefault","_getenv","_path","_resolveFrom","_semver","_","obj","__esModule","default","getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","_config$updates$url","_config$updates","updates","url","getAppVersion","_config$version","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","_config$ios","_config$android","ios","runtimeVersion","getRuntimeVersion","android","exports","getRuntimeVersionNullable","e","boolish","console","log","_config$platform$runt","_config$platform","policy","sdkVersion","getRuntimeVersionForSDKVersion","stringify","getSDKVersion","getUpdatesEnabled","_config$updates2","enabled","undefined","getUpdatesTimeout","_config$updates$fallb","_config$updates3","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","_config$updates4","_config$updates5","_config$updates6","_config$updates7","checkAutomatically","semver","gte","getUpdatesCodeSigningCertificate","_config$updates8","codeSigningCertificatePath","codeSigningCertificate","finalPath","path","join","getUpdatesCodeSigningMetadata","_config$updates9","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","metadata","getUpdatesRequestHeaders","_config$updates10","requestHeaders","getUpdatesRequestHeadersStringified"],"sources":["../../src/utils/Updates.ts"],"sourcesContent":["import { Android, ExpoConfig, IOS } from '@expo/config-types';\nimport { getRuntimeVersionForSDKVersion } from '@expo/sdk-runtime-versions';\nimport fs from 'fs';\nimport { boolish } from 'getenv';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { AndroidConfig, IOSConfig } from '..';\n\nexport type ExpoConfigUpdates = Pick<\n ExpoConfig,\n 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'\n>;\n\nexport function getExpoUpdatesPackageVersion(projectRoot: string): string | null {\n const expoUpdatesPackageJsonPath = resolveFrom.silent(projectRoot, 'expo-updates/package.json');\n if (!expoUpdatesPackageJsonPath || !fs.existsSync(expoUpdatesPackageJsonPath)) {\n return null;\n }\n const packageJson = JSON.parse(fs.readFileSync(expoUpdatesPackageJsonPath, 'utf8'));\n return packageJson.version;\n}\n\nexport function getUpdateUrl(config: Pick<ExpoConfigUpdates, 'updates'>): string | null {\n return config.updates?.url ?? null;\n}\n\nexport function getAppVersion(config: Pick<ExpoConfig, 'version'>): string {\n return config.version ?? '1.0.0';\n}\n\nexport function getNativeVersion(\n config: Pick<ExpoConfig, 'version'> & {\n android?: Pick<Android, 'versionCode'>;\n ios?: Pick<IOS, 'buildNumber'>;\n },\n platform: 'android' | 'ios'\n): string {\n const version = IOSConfig.Version.getVersion(config);\n switch (platform) {\n case 'ios': {\n const buildNumber = IOSConfig.Version.getBuildNumber(config);\n return `${version}(${buildNumber})`;\n }\n case 'android': {\n const versionCode = AndroidConfig.Version.getVersionCode(config);\n return `${version}(${versionCode})`;\n }\n default: {\n throw new Error(\n `\"${platform}\" is not a supported platform. Choose either \"ios\" or \"android\".`\n );\n }\n }\n}\n\n/**\n * Compute runtime version policies.\n * @return an expoConfig with only string valued platform specific runtime versions.\n */\nexport const withRuntimeVersion: (config: ExpoConfig) => ExpoConfig = (config) => {\n if (config.ios?.runtimeVersion || config.runtimeVersion) {\n const runtimeVersion = getRuntimeVersion(config, 'ios');\n if (runtimeVersion) {\n config.ios = {\n ...config.ios,\n runtimeVersion,\n };\n }\n }\n if (config.android?.runtimeVersion || config.runtimeVersion) {\n const runtimeVersion = getRuntimeVersion(config, 'android');\n if (runtimeVersion) {\n config.android = {\n ...config.android,\n runtimeVersion,\n };\n }\n }\n delete config.runtimeVersion;\n return config;\n};\n\nexport function getRuntimeVersionNullable(\n ...[config, platform]: Parameters<typeof getRuntimeVersion>\n): string | null {\n try {\n return getRuntimeVersion(config, platform);\n } catch (e) {\n if (boolish('EXPO_DEBUG', false)) {\n console.log(e);\n }\n return null;\n }\n}\n\nexport function getRuntimeVersion(\n config: Pick<ExpoConfig, 'version' | 'runtimeVersion' | 'sdkVersion'> & {\n android?: Pick<Android, 'versionCode' | 'runtimeVersion'>;\n ios?: Pick<IOS, 'buildNumber' | 'runtimeVersion'>;\n },\n platform: 'android' | 'ios'\n): string | null {\n const runtimeVersion = config[platform]?.runtimeVersion ?? config.runtimeVersion;\n if (!runtimeVersion) {\n return null;\n }\n\n if (typeof runtimeVersion === 'string') {\n return runtimeVersion;\n } else if (runtimeVersion.policy === 'appVersion') {\n return getAppVersion(config);\n } else if (runtimeVersion.policy === 'nativeVersion') {\n return getNativeVersion(config, platform);\n } else if (runtimeVersion.policy === 'sdkVersion') {\n if (!config.sdkVersion) {\n throw new Error(\"An SDK version must be defined when using the 'sdkVersion' runtime policy.\");\n }\n return getRuntimeVersionForSDKVersion(config.sdkVersion);\n }\n\n throw new Error(\n `\"${\n typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion\n }\" is not a valid runtime version. getRuntimeVersion only supports a string, \"sdkVersion\", \"appVersion\", or \"nativeVersion\" policy.`\n );\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 // allow override of enabled property\n if (config.updates?.enabled !== undefined) {\n return config.updates.enabled;\n }\n\n return getUpdateUrl(config) !== null;\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 expoUpdatesPackageVersion?: string | null\n): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS' | 'WIFI_ONLY' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n // native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x\n if (expoUpdatesPackageVersion && semver.gte(expoUpdatesPackageVersion, '0.11.0')) {\n return 'ERROR_RECOVERY_ONLY';\n }\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n } else if (config.updates?.checkAutomatically === 'WIFI_ONLY') {\n return 'WIFI_ONLY';\n } else if (config.updates?.checkAutomatically === 'NEVER') {\n return 'NEVER';\n }\n return 'ALWAYS';\n}\n\nexport function getUpdatesCodeSigningCertificate(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const codeSigningCertificatePath = config.updates?.codeSigningCertificate;\n if (!codeSigningCertificatePath) {\n return undefined;\n }\n\n const finalPath = path.join(projectRoot, codeSigningCertificatePath);\n if (!fs.existsSync(finalPath)) {\n throw new Error(`File not found at \\`updates.codeSigningCertificate\\` path: ${finalPath}`);\n }\n\n return fs.readFileSync(finalPath, 'utf8');\n}\n\nexport function getUpdatesCodeSigningMetadata(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): NonNullable<ExpoConfigUpdates['updates']>['codeSigningMetadata'] {\n return config.updates?.codeSigningMetadata;\n}\n\nexport function getUpdatesCodeSigningMetadataStringified(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const metadata = getUpdatesCodeSigningMetadata(config);\n if (!metadata) {\n return undefined;\n }\n\n return JSON.stringify(metadata);\n}\n\nexport function getUpdatesRequestHeaders(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): NonNullable<ExpoConfigUpdates['updates']>['requestHeaders'] {\n return config.updates?.requestHeaders;\n}\n\nexport function getUpdatesRequestHeadersStringified(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const metadata = getUpdatesRequestHeaders(config);\n if (!metadata) {\n return undefined;\n }\n\n return JSON.stringify(metadata);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Updates.js","names":["Fingerprint","data","_interopRequireWildcard","require","_sdkRuntimeVersions","_fs","_interopRequireDefault","_getenv","_path","_resolveFrom","_semver","_","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","_config$updates$url","_config$updates","updates","url","getAppVersion","_config$version","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","getRuntimeVersionNullableAsync","getRuntimeVersionAsync","e","boolish","console","log","_config$platform$runt","_config$platform","runtimeVersion","policy","sdkVersion","getRuntimeVersionForSDKVersion","warn","createProjectHashAsync","stringify","getSDKVersion","getUpdatesEnabled","_config$updates2","enabled","undefined","getUpdatesTimeout","_config$updates$fallb","_config$updates3","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","_config$updates4","_config$updates5","_config$updates6","_config$updates7","checkAutomatically","semver","gte","getUpdatesCodeSigningCertificate","_config$updates8","codeSigningCertificatePath","codeSigningCertificate","finalPath","path","join","getUpdatesCodeSigningMetadata","_config$updates9","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","metadata","getUpdatesRequestHeaders","_config$updates10","requestHeaders","getUpdatesRequestHeadersStringified"],"sources":["../../src/utils/Updates.ts"],"sourcesContent":["import { Android, ExpoConfig, IOS } from '@expo/config-types';\nimport * as Fingerprint from '@expo/fingerprint';\nimport { getRuntimeVersionForSDKVersion } from '@expo/sdk-runtime-versions';\nimport fs from 'fs';\nimport { boolish } from 'getenv';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { AndroidConfig, IOSConfig } from '..';\n\nexport type ExpoConfigUpdates = Pick<\n ExpoConfig,\n 'sdkVersion' | 'owner' | 'runtimeVersion' | 'updates' | 'slug'\n>;\n\nexport function getExpoUpdatesPackageVersion(projectRoot: string): string | null {\n const expoUpdatesPackageJsonPath = resolveFrom.silent(projectRoot, 'expo-updates/package.json');\n if (!expoUpdatesPackageJsonPath || !fs.existsSync(expoUpdatesPackageJsonPath)) {\n return null;\n }\n const packageJson = JSON.parse(fs.readFileSync(expoUpdatesPackageJsonPath, 'utf8'));\n return packageJson.version;\n}\n\nexport function getUpdateUrl(config: Pick<ExpoConfigUpdates, 'updates'>): string | null {\n return config.updates?.url ?? null;\n}\n\nexport function getAppVersion(config: Pick<ExpoConfig, 'version'>): string {\n return config.version ?? '1.0.0';\n}\n\nexport function getNativeVersion(\n config: Pick<ExpoConfig, 'version'> & {\n android?: Pick<Android, 'versionCode'>;\n ios?: Pick<IOS, 'buildNumber'>;\n },\n platform: 'android' | 'ios'\n): string {\n const version = IOSConfig.Version.getVersion(config);\n switch (platform) {\n case 'ios': {\n const buildNumber = IOSConfig.Version.getBuildNumber(config);\n return `${version}(${buildNumber})`;\n }\n case 'android': {\n const versionCode = AndroidConfig.Version.getVersionCode(config);\n return `${version}(${versionCode})`;\n }\n default: {\n throw new Error(\n `\"${platform}\" is not a supported platform. Choose either \"ios\" or \"android\".`\n );\n }\n }\n}\n\nexport async function getRuntimeVersionNullableAsync(\n ...[projectRoot, config, platform]: Parameters<typeof getRuntimeVersionAsync>\n): Promise<string | null> {\n try {\n return await getRuntimeVersionAsync(projectRoot, config, platform);\n } catch (e) {\n if (boolish('EXPO_DEBUG', false)) {\n console.log(e);\n }\n return null;\n }\n}\n\nexport async function getRuntimeVersionAsync(\n projectRoot: string,\n config: Pick<ExpoConfig, 'version' | 'runtimeVersion' | 'sdkVersion'> & {\n android?: Pick<Android, 'versionCode' | 'runtimeVersion'>;\n ios?: Pick<IOS, 'buildNumber' | 'runtimeVersion'>;\n },\n platform: 'android' | 'ios'\n): Promise<string | null> {\n const runtimeVersion = config[platform]?.runtimeVersion ?? config.runtimeVersion;\n if (!runtimeVersion) {\n return null;\n }\n\n if (typeof runtimeVersion === 'string') {\n return runtimeVersion;\n } else if (runtimeVersion.policy === 'appVersion') {\n return getAppVersion(config);\n } else if (runtimeVersion.policy === 'nativeVersion') {\n return getNativeVersion(config, platform);\n } else if (runtimeVersion.policy === 'sdkVersion') {\n if (!config.sdkVersion) {\n throw new Error(\"An SDK version must be defined when using the 'sdkVersion' runtime policy.\");\n }\n return getRuntimeVersionForSDKVersion(config.sdkVersion);\n } else if (runtimeVersion.policy === 'fingerprintExperimental') {\n console.warn(\n \"Use of the experimental 'fingerprintExperimental' runtime policy may result in unexpected system behavior.\"\n );\n return await Fingerprint.createProjectHashAsync(projectRoot);\n }\n\n throw new Error(\n `\"${\n typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion\n }\" is not a valid runtime version. getRuntimeVersionAsync only supports a string, \"sdkVersion\", \"appVersion\", \"nativeVersion\" or \"fingerprintExperimental\" policy.`\n );\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 // allow override of enabled property\n if (config.updates?.enabled !== undefined) {\n return config.updates.enabled;\n }\n\n return getUpdateUrl(config) !== null;\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 expoUpdatesPackageVersion?: string | null\n): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS' | 'WIFI_ONLY' {\n if (config.updates?.checkAutomatically === 'ON_ERROR_RECOVERY') {\n // native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x\n if (expoUpdatesPackageVersion && semver.gte(expoUpdatesPackageVersion, '0.11.0')) {\n return 'ERROR_RECOVERY_ONLY';\n }\n return 'NEVER';\n } else if (config.updates?.checkAutomatically === 'ON_LOAD') {\n return 'ALWAYS';\n } else if (config.updates?.checkAutomatically === 'WIFI_ONLY') {\n return 'WIFI_ONLY';\n } else if (config.updates?.checkAutomatically === 'NEVER') {\n return 'NEVER';\n }\n return 'ALWAYS';\n}\n\nexport function getUpdatesCodeSigningCertificate(\n projectRoot: string,\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const codeSigningCertificatePath = config.updates?.codeSigningCertificate;\n if (!codeSigningCertificatePath) {\n return undefined;\n }\n\n const finalPath = path.join(projectRoot, codeSigningCertificatePath);\n if (!fs.existsSync(finalPath)) {\n throw new Error(`File not found at \\`updates.codeSigningCertificate\\` path: ${finalPath}`);\n }\n\n return fs.readFileSync(finalPath, 'utf8');\n}\n\nexport function getUpdatesCodeSigningMetadata(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): NonNullable<ExpoConfigUpdates['updates']>['codeSigningMetadata'] {\n return config.updates?.codeSigningMetadata;\n}\n\nexport function getUpdatesCodeSigningMetadataStringified(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const metadata = getUpdatesCodeSigningMetadata(config);\n if (!metadata) {\n return undefined;\n }\n\n return JSON.stringify(metadata);\n}\n\nexport function getUpdatesRequestHeaders(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): NonNullable<ExpoConfigUpdates['updates']>['requestHeaders'] {\n return config.updates?.requestHeaders;\n}\n\nexport function getUpdatesRequestHeadersStringified(\n config: Pick<ExpoConfigUpdates, 'updates'>\n): string | undefined {\n const metadata = getUpdatesRequestHeaders(config);\n if (!metadata) {\n return undefined;\n }\n\n return JSON.stringify(metadata);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/config-plugins",
3
- "version": "7.4.0",
3
+ "version": "7.5.0",
4
4
  "description": "A library for Expo config plugins",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -33,6 +33,7 @@
33
33
  ],
34
34
  "dependencies": {
35
35
  "@expo/config-types": "^50.0.0-alpha.1",
36
+ "@expo/fingerprint": "^0.2.0",
36
37
  "@expo/json-file": "~8.2.37",
37
38
  "@expo/plist": "^0.0.20",
38
39
  "@expo/sdk-runtime-versions": "^1.0.0",
@@ -56,5 +57,5 @@
56
57
  "publishConfig": {
57
58
  "access": "public"
58
59
  },
59
- "gitHead": "79607a7325f47aa17c36d266100d09a4ff2cc544"
60
+ "gitHead": "ee2c866ba3c7fbc35ff2a3e896041cf15d3bd7c5"
60
61
  }