@expo/config-plugins 4.0.16 → 4.0.17
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.
- package/build/android/Updates.d.ts +5 -7
- package/build/android/Updates.js +29 -57
- package/build/android/Updates.js.map +1 -1
- package/build/ios/IosConfig.types.d.ts +2 -0
- package/build/ios/ProvisioningProfile.js +4 -0
- package/build/ios/ProvisioningProfile.js.map +1 -1
- package/build/ios/Scheme.js +12 -4
- package/build/ios/Scheme.js.map +1 -1
- package/build/ios/Updates.d.ts +5 -7
- package/build/ios/Updates.js +29 -57
- package/build/ios/Updates.js.map +1 -1
- package/build/utils/Updates.d.ts +7 -0
- package/build/utils/Updates.js +94 -0
- package/build/utils/Updates.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,20 +9,18 @@ export declare enum Config {
|
|
|
9
9
|
RUNTIME_VERSION = "expo.modules.updates.EXPO_RUNTIME_VERSION",
|
|
10
10
|
UPDATE_URL = "expo.modules.updates.EXPO_UPDATE_URL",
|
|
11
11
|
RELEASE_CHANNEL = "expo.modules.updates.EXPO_RELEASE_CHANNEL",
|
|
12
|
-
UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = "expo.modules.updates.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY"
|
|
12
|
+
UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = "expo.modules.updates.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY",
|
|
13
|
+
CODE_SIGNING_CERTIFICATE = "expo.modules.updates.CODE_SIGNING_CERTIFICATE",
|
|
14
|
+
CODE_SIGNING_METADATA = "expo.modules.updates.CODE_SIGNING_METADATA"
|
|
13
15
|
}
|
|
14
16
|
export declare const withUpdates: ConfigPlugin<{
|
|
15
17
|
expoUsername: string | null;
|
|
16
18
|
}>;
|
|
17
|
-
export declare function
|
|
18
|
-
export declare function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean;
|
|
19
|
-
export declare function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number;
|
|
20
|
-
export declare function getUpdatesCheckOnLaunch(config: Pick<ExpoConfigUpdates, 'updates'>, expoUpdatesPackageVersion?: string | null): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS';
|
|
21
|
-
export declare function setUpdatesConfig(config: ExpoConfigUpdates, androidManifest: AndroidManifest, username: string | null, expoUpdatesPackageVersion?: string | null): AndroidManifest;
|
|
19
|
+
export declare function setUpdatesConfig(projectRoot: string, config: ExpoConfigUpdates, androidManifest: AndroidManifest, username: string | null, expoUpdatesPackageVersion?: string | null): AndroidManifest;
|
|
22
20
|
export declare function setVersionsConfig(config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, androidManifest: AndroidManifest): AndroidManifest;
|
|
23
21
|
export declare function ensureBuildGradleContainsConfigurationScript(projectRoot: string, buildGradleContents: string): string;
|
|
24
22
|
export declare function formatApplyLineForBuildGradle(projectRoot: string): string;
|
|
25
23
|
export declare function isBuildGradleConfigured(projectRoot: string, buildGradleContents: string): boolean;
|
|
26
24
|
export declare function isMainApplicationMetaDataSet(androidManifest: AndroidManifest): boolean;
|
|
27
|
-
export declare function isMainApplicationMetaDataSynced(config: ExpoConfigUpdates, androidManifest: AndroidManifest, username: string | null): boolean;
|
|
25
|
+
export declare function isMainApplicationMetaDataSynced(projectRoot: string, config: ExpoConfigUpdates, androidManifest: AndroidManifest, username: string | null): boolean;
|
|
28
26
|
export declare function areVersionsSynced(config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>, androidManifest: AndroidManifest): boolean;
|
package/build/android/Updates.js
CHANGED
|
@@ -7,10 +7,6 @@ exports.Config = void 0;
|
|
|
7
7
|
exports.areVersionsSynced = areVersionsSynced;
|
|
8
8
|
exports.ensureBuildGradleContainsConfigurationScript = ensureBuildGradleContainsConfigurationScript;
|
|
9
9
|
exports.formatApplyLineForBuildGradle = formatApplyLineForBuildGradle;
|
|
10
|
-
exports.getSDKVersion = getSDKVersion;
|
|
11
|
-
exports.getUpdatesCheckOnLaunch = getUpdatesCheckOnLaunch;
|
|
12
|
-
exports.getUpdatesEnabled = getUpdatesEnabled;
|
|
13
|
-
exports.getUpdatesTimeout = getUpdatesTimeout;
|
|
14
10
|
exports.isBuildGradleConfigured = isBuildGradleConfigured;
|
|
15
11
|
exports.isMainApplicationMetaDataSet = isMainApplicationMetaDataSet;
|
|
16
12
|
exports.isMainApplicationMetaDataSynced = isMainApplicationMetaDataSynced;
|
|
@@ -38,16 +34,6 @@ function _resolveFrom() {
|
|
|
38
34
|
return data;
|
|
39
35
|
}
|
|
40
36
|
|
|
41
|
-
function _semver() {
|
|
42
|
-
const data = _interopRequireDefault(require("semver"));
|
|
43
|
-
|
|
44
|
-
_semver = function () {
|
|
45
|
-
return data;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
return data;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
37
|
function _androidPlugins() {
|
|
52
38
|
const data = require("../plugins/android-plugins");
|
|
53
39
|
|
|
@@ -93,58 +79,28 @@ exports.Config = Config;
|
|
|
93
79
|
Config["UPDATE_URL"] = "expo.modules.updates.EXPO_UPDATE_URL";
|
|
94
80
|
Config["RELEASE_CHANNEL"] = "expo.modules.updates.EXPO_RELEASE_CHANNEL";
|
|
95
81
|
Config["UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY"] = "expo.modules.updates.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY";
|
|
82
|
+
Config["CODE_SIGNING_CERTIFICATE"] = "expo.modules.updates.CODE_SIGNING_CERTIFICATE";
|
|
83
|
+
Config["CODE_SIGNING_METADATA"] = "expo.modules.updates.CODE_SIGNING_METADATA";
|
|
96
84
|
})(Config || (exports.Config = Config = {}));
|
|
97
85
|
|
|
98
86
|
const withUpdates = (config, {
|
|
99
87
|
expoUsername
|
|
100
88
|
}) => {
|
|
101
89
|
return (0, _androidPlugins().withAndroidManifest)(config, config => {
|
|
102
|
-
const
|
|
103
|
-
|
|
90
|
+
const projectRoot = config.modRequest.projectRoot;
|
|
91
|
+
const expoUpdatesPackageVersion = (0, _Updates().getExpoUpdatesPackageVersion)(projectRoot);
|
|
92
|
+
config.modResults = setUpdatesConfig(projectRoot, config, config.modResults, expoUsername, expoUpdatesPackageVersion);
|
|
104
93
|
return config;
|
|
105
94
|
});
|
|
106
95
|
};
|
|
107
96
|
|
|
108
97
|
exports.withUpdates = withUpdates;
|
|
109
98
|
|
|
110
|
-
function
|
|
111
|
-
return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function getUpdatesEnabled(config) {
|
|
115
|
-
var _config$updates;
|
|
116
|
-
|
|
117
|
-
return ((_config$updates = config.updates) === null || _config$updates === void 0 ? void 0 : _config$updates.enabled) !== false;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function getUpdatesTimeout(config) {
|
|
121
|
-
var _config$updates$fallb, _config$updates2;
|
|
122
|
-
|
|
123
|
-
return (_config$updates$fallb = (_config$updates2 = config.updates) === null || _config$updates2 === void 0 ? void 0 : _config$updates2.fallbackToCacheTimeout) !== null && _config$updates$fallb !== void 0 ? _config$updates$fallb : 0;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
function getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion) {
|
|
127
|
-
var _config$updates3, _config$updates4;
|
|
128
|
-
|
|
129
|
-
if (((_config$updates3 = config.updates) === null || _config$updates3 === void 0 ? void 0 : _config$updates3.checkAutomatically) === 'ON_ERROR_RECOVERY') {
|
|
130
|
-
// native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x
|
|
131
|
-
if (expoUpdatesPackageVersion && _semver().default.gte(expoUpdatesPackageVersion, '0.11.0')) {
|
|
132
|
-
return 'ERROR_RECOVERY_ONLY';
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return 'NEVER';
|
|
136
|
-
} else if (((_config$updates4 = config.updates) === null || _config$updates4 === void 0 ? void 0 : _config$updates4.checkAutomatically) === 'ON_LOAD') {
|
|
137
|
-
return 'ALWAYS';
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
return 'ALWAYS';
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function setUpdatesConfig(config, androidManifest, username, expoUpdatesPackageVersion) {
|
|
99
|
+
function setUpdatesConfig(projectRoot, config, androidManifest, username, expoUpdatesPackageVersion) {
|
|
144
100
|
const mainApplication = (0, _Manifest().getMainApplicationOrThrow)(androidManifest);
|
|
145
|
-
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.ENABLED, String(getUpdatesEnabled(config)));
|
|
146
|
-
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.CHECK_ON_LAUNCH, getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion));
|
|
147
|
-
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.LAUNCH_WAIT_MS, String(getUpdatesTimeout(config)));
|
|
101
|
+
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.ENABLED, String((0, _Updates().getUpdatesEnabled)(config)));
|
|
102
|
+
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.CHECK_ON_LAUNCH, (0, _Updates().getUpdatesCheckOnLaunch)(config, expoUpdatesPackageVersion));
|
|
103
|
+
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.LAUNCH_WAIT_MS, String((0, _Updates().getUpdatesTimeout)(config)));
|
|
148
104
|
const updateUrl = (0, _Updates().getUpdateUrl)(config, username);
|
|
149
105
|
|
|
150
106
|
if (updateUrl) {
|
|
@@ -153,6 +109,22 @@ function setUpdatesConfig(config, androidManifest, username, expoUpdatesPackageV
|
|
|
153
109
|
(0, _Manifest().removeMetaDataItemFromMainApplication)(mainApplication, Config.UPDATE_URL);
|
|
154
110
|
}
|
|
155
111
|
|
|
112
|
+
const codeSigningCertificate = (0, _Updates().getUpdatesCodeSigningCertificate)(projectRoot, config);
|
|
113
|
+
|
|
114
|
+
if (codeSigningCertificate) {
|
|
115
|
+
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.CODE_SIGNING_CERTIFICATE, codeSigningCertificate);
|
|
116
|
+
} else {
|
|
117
|
+
(0, _Manifest().removeMetaDataItemFromMainApplication)(mainApplication, Config.CODE_SIGNING_CERTIFICATE);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const codeSigningMetadata = (0, _Updates().getUpdatesCodeSigningMetadataStringified)(config);
|
|
121
|
+
|
|
122
|
+
if (codeSigningMetadata) {
|
|
123
|
+
(0, _Manifest().addMetaDataItemToMainApplication)(mainApplication, Config.CODE_SIGNING_METADATA, codeSigningMetadata);
|
|
124
|
+
} else {
|
|
125
|
+
(0, _Manifest().removeMetaDataItemFromMainApplication)(mainApplication, Config.CODE_SIGNING_METADATA);
|
|
126
|
+
}
|
|
127
|
+
|
|
156
128
|
return setVersionsConfig(config, androidManifest);
|
|
157
129
|
}
|
|
158
130
|
|
|
@@ -164,7 +136,7 @@ function setVersionsConfig(config, androidManifest) {
|
|
|
164
136
|
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.');
|
|
165
137
|
}
|
|
166
138
|
|
|
167
|
-
const sdkVersion = getSDKVersion(config);
|
|
139
|
+
const sdkVersion = (0, _Updates().getSDKVersion)(config);
|
|
168
140
|
|
|
169
141
|
if (runtimeVersion) {
|
|
170
142
|
(0, _Manifest().removeMetaDataItemFromMainApplication)(mainApplication, Config.SDK_VERSION);
|
|
@@ -228,13 +200,13 @@ function isMainApplicationMetaDataSet(androidManifest) {
|
|
|
228
200
|
return Boolean(updateUrl && (sdkVersion || runtimeVersion));
|
|
229
201
|
}
|
|
230
202
|
|
|
231
|
-
function isMainApplicationMetaDataSynced(config, androidManifest, username) {
|
|
232
|
-
return (0, _Updates().getUpdateUrl)(config, username) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.UPDATE_URL) && String(getUpdatesEnabled(config)) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.ENABLED) && String(getUpdatesTimeout(config)) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.LAUNCH_WAIT_MS) && getUpdatesCheckOnLaunch(config) === (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.CHECK_ON_LAUNCH) && areVersionsSynced(config, androidManifest);
|
|
203
|
+
function isMainApplicationMetaDataSynced(projectRoot, config, androidManifest, username) {
|
|
204
|
+
return (0, _Updates().getUpdateUrl)(config, username) === (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);
|
|
233
205
|
}
|
|
234
206
|
|
|
235
207
|
function areVersionsSynced(config, androidManifest) {
|
|
236
208
|
const expectedRuntimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'android');
|
|
237
|
-
const expectedSdkVersion = getSDKVersion(config);
|
|
209
|
+
const expectedSdkVersion = (0, _Updates().getSDKVersion)(config);
|
|
238
210
|
const currentRuntimeVersion = (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.RUNTIME_VERSION);
|
|
239
211
|
const currentSdkVersion = (0, _Manifest().getMainApplicationMetaDataValue)(androidManifest, Config.SDK_VERSION);
|
|
240
212
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/android/Updates.ts"],"names":["CREATE_MANIFEST_ANDROID_PATH","Config","withUpdates","config","expoUsername","expoUpdatesPackageVersion","modRequest","projectRoot","modResults","setUpdatesConfig","getSDKVersion","sdkVersion","getUpdatesEnabled","updates","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","checkAutomatically","semver","gte","androidManifest","username","mainApplication","ENABLED","String","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","setVersionsConfig","runtimeVersion","RUNTIME_VERSION","Error","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","Boolean","isMainApplicationMetaDataSynced","areVersionsSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullable,\n getUpdateUrl,\n} from '../utils/Updates';\nimport {\n addMetaDataItemToMainApplication,\n AndroidManifest,\n findMetaDataItem,\n getMainApplicationMetaDataValue,\n getMainApplicationOrThrow,\n removeMetaDataItemFromMainApplication,\n} from './Manifest';\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}\n\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withAndroidManifest(config, config => {\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(config.modRequest.projectRoot);\n config.modResults = setUpdatesConfig(\n config,\n config.modResults,\n expoUsername,\n expoUpdatesPackageVersion\n );\n return config;\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 return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>,\n expoUpdatesPackageVersion?: string | null\n): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS' {\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 }\n return 'ALWAYS';\n}\n\nexport function setUpdatesConfig(\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n username: string | null,\n expoUpdatesPackageVersion?: string | null\n): AndroidManifest {\n const mainApplication = getMainApplicationOrThrow(androidManifest);\n\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.ENABLED,\n String(getUpdatesEnabled(config))\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CHECK_ON_LAUNCH,\n getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion)\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.LAUNCH_WAIT_MS,\n String(getUpdatesTimeout(config))\n );\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n addMetaDataItemToMainApplication(mainApplication, Config.UPDATE_URL, updateUrl);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.UPDATE_URL);\n }\n\n 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(mainApplication, 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 removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n addMetaDataItemToMainApplication(mainApplication, Config.SDK_VERSION, sdkVersion);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n removeMetaDataItemFromMainApplication(mainApplication, Config.SDK_VERSION);\n }\n\n return androidManifest;\n}\nexport function ensureBuildGradleContainsConfigurationScript(\n projectRoot: string,\n buildGradleContents: string\n): string {\n if (!isBuildGradleConfigured(projectRoot, buildGradleContents)) {\n let cleanedUpBuildGradleContents;\n\n const isBuildGradleMisconfigured = buildGradleContents\n .split('\\n')\n .some(line => line.includes(CREATE_MANIFEST_ANDROID_PATH));\n if (isBuildGradleMisconfigured) {\n cleanedUpBuildGradleContents = buildGradleContents.replace(\n new RegExp(`(\\n// Integration with Expo updates)?\\n.*${CREATE_MANIFEST_ANDROID_PATH}.*\\n`),\n ''\n );\n } else {\n cleanedUpBuildGradleContents = buildGradleContents;\n }\n\n const gradleScriptApply = formatApplyLineForBuildGradle(projectRoot);\n return `${cleanedUpBuildGradleContents}\\n// Integration with Expo updates\\n${gradleScriptApply}\\n`;\n } else {\n return buildGradleContents;\n }\n}\n\nexport function formatApplyLineForBuildGradle(projectRoot: string): string {\n const updatesGradleScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_ANDROID_PATH);\n\n if (!updatesGradleScriptPath) {\n throw new Error(\n \"Could not find the build script for Android. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(\n path.join(projectRoot, 'android', 'app'),\n updatesGradleScriptPath\n );\n const posixPath = process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n\n return `apply from: \"${posixPath}\"`;\n}\n\nexport function isBuildGradleConfigured(projectRoot: string, buildGradleContents: string): boolean {\n const androidBuildScript = formatApplyLineForBuildGradle(projectRoot);\n\n return (\n buildGradleContents\n .replace(/\\r\\n/g, '\\n')\n .split('\\n')\n // Check for both single and double quotes\n .some(line => line === androidBuildScript || line === androidBuildScript.replace(/\"/g, \"'\"))\n );\n}\n\nexport function isMainApplicationMetaDataSet(androidManifest: AndroidManifest): boolean {\n const updateUrl = getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL);\n const runtimeVersion = getMainApplicationMetaDataValue(androidManifest, Config.RUNTIME_VERSION);\n const sdkVersion = getMainApplicationMetaDataValue(androidManifest, Config.SDK_VERSION);\n\n return Boolean(updateUrl && (sdkVersion || runtimeVersion));\n}\n\nexport function isMainApplicationMetaDataSynced(\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) ===\n getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL) &&\n String(getUpdatesEnabled(config)) ===\n getMainApplicationMetaDataValue(androidManifest, Config.ENABLED) &&\n String(getUpdatesTimeout(config)) ===\n getMainApplicationMetaDataValue(androidManifest, Config.LAUNCH_WAIT_MS) &&\n getUpdatesCheckOnLaunch(config) ===\n getMainApplicationMetaDataValue(androidManifest, Config.CHECK_ON_LAUNCH) &&\n areVersionsSynced(config, androidManifest)\n );\n}\n\nexport function areVersionsSynced(\n config: Pick<ExpoConfigUpdates, 'runtimeVersion' | 'sdkVersion'>,\n androidManifest: AndroidManifest\n): boolean {\n const expectedRuntimeVersion = 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"],"file":"Updates.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/android/Updates.ts"],"names":["CREATE_MANIFEST_ANDROID_PATH","Config","withUpdates","config","expoUsername","projectRoot","modRequest","expoUpdatesPackageVersion","modResults","setUpdatesConfig","androidManifest","username","mainApplication","ENABLED","String","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","codeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","CODE_SIGNING_METADATA","setVersionsConfig","runtimeVersion","RUNTIME_VERSION","Error","sdkVersion","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","Boolean","isMainApplicationMetaDataSynced","areVersionsSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import path from 'path';\nimport resolveFrom from 'resolve-from';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withAndroidManifest } from '../plugins/android-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullable,\n getSDKVersion,\n getUpdatesCheckOnLaunch,\n getUpdatesCodeSigningCertificate,\n getUpdatesCodeSigningMetadataStringified,\n getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\nimport {\n addMetaDataItemToMainApplication,\n AndroidManifest,\n findMetaDataItem,\n getMainApplicationMetaDataValue,\n getMainApplicationOrThrow,\n removeMetaDataItemFromMainApplication,\n} from './Manifest';\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\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withAndroidManifest(config, config => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = setUpdatesConfig(\n projectRoot,\n config,\n config.modResults,\n expoUsername,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport function setUpdatesConfig(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n username: string | null,\n expoUpdatesPackageVersion?: string | null\n): AndroidManifest {\n const mainApplication = getMainApplicationOrThrow(androidManifest);\n\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.ENABLED,\n String(getUpdatesEnabled(config))\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CHECK_ON_LAUNCH,\n getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion)\n );\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.LAUNCH_WAIT_MS,\n String(getUpdatesTimeout(config))\n );\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n addMetaDataItemToMainApplication(mainApplication, Config.UPDATE_URL, updateUrl);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.UPDATE_URL);\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CODE_SIGNING_CERTIFICATE,\n codeSigningCertificate\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.CODE_SIGNING_CERTIFICATE);\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadataStringified(config);\n if (codeSigningMetadata) {\n addMetaDataItemToMainApplication(\n mainApplication,\n Config.CODE_SIGNING_METADATA,\n codeSigningMetadata\n );\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.CODE_SIGNING_METADATA);\n }\n\n 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(mainApplication, 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 removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n addMetaDataItemToMainApplication(mainApplication, Config.SDK_VERSION, sdkVersion);\n } else {\n removeMetaDataItemFromMainApplication(mainApplication, Config.RUNTIME_VERSION);\n removeMetaDataItemFromMainApplication(mainApplication, Config.SDK_VERSION);\n }\n\n return androidManifest;\n}\nexport function ensureBuildGradleContainsConfigurationScript(\n projectRoot: string,\n buildGradleContents: string\n): string {\n if (!isBuildGradleConfigured(projectRoot, buildGradleContents)) {\n let cleanedUpBuildGradleContents;\n\n const isBuildGradleMisconfigured = buildGradleContents\n .split('\\n')\n .some(line => line.includes(CREATE_MANIFEST_ANDROID_PATH));\n if (isBuildGradleMisconfigured) {\n cleanedUpBuildGradleContents = buildGradleContents.replace(\n new RegExp(`(\\n// Integration with Expo updates)?\\n.*${CREATE_MANIFEST_ANDROID_PATH}.*\\n`),\n ''\n );\n } else {\n cleanedUpBuildGradleContents = buildGradleContents;\n }\n\n const gradleScriptApply = formatApplyLineForBuildGradle(projectRoot);\n return `${cleanedUpBuildGradleContents}\\n// Integration with Expo updates\\n${gradleScriptApply}\\n`;\n } else {\n return buildGradleContents;\n }\n}\n\nexport function formatApplyLineForBuildGradle(projectRoot: string): string {\n const updatesGradleScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_ANDROID_PATH);\n\n if (!updatesGradleScriptPath) {\n throw new Error(\n \"Could not find the build script for Android. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(\n path.join(projectRoot, 'android', 'app'),\n updatesGradleScriptPath\n );\n const posixPath = process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n\n return `apply from: \"${posixPath}\"`;\n}\n\nexport function isBuildGradleConfigured(projectRoot: string, buildGradleContents: string): boolean {\n const androidBuildScript = formatApplyLineForBuildGradle(projectRoot);\n\n return (\n buildGradleContents\n .replace(/\\r\\n/g, '\\n')\n .split('\\n')\n // Check for both single and double quotes\n .some(line => line === androidBuildScript || line === androidBuildScript.replace(/\"/g, \"'\"))\n );\n}\n\nexport function isMainApplicationMetaDataSet(androidManifest: AndroidManifest): boolean {\n const updateUrl = getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL);\n const runtimeVersion = getMainApplicationMetaDataValue(androidManifest, Config.RUNTIME_VERSION);\n const sdkVersion = getMainApplicationMetaDataValue(androidManifest, Config.SDK_VERSION);\n\n return Boolean(updateUrl && (sdkVersion || runtimeVersion));\n}\n\nexport function isMainApplicationMetaDataSynced(\n projectRoot: string,\n config: ExpoConfigUpdates,\n androidManifest: AndroidManifest,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) ===\n getMainApplicationMetaDataValue(androidManifest, Config.UPDATE_URL) &&\n String(getUpdatesEnabled(config)) ===\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"],"file":"Updates.js"}
|
|
@@ -54,6 +54,10 @@ function setProvisioningProfileForPbxproj(projectRoot, {
|
|
|
54
54
|
item.buildSettings.CODE_SIGN_STYLE = 'Manual';
|
|
55
55
|
});
|
|
56
56
|
Object.entries((0, _Xcodeproj().getProjectSection)(project)).filter(_Xcodeproj().isNotComment).forEach(([, item]) => {
|
|
57
|
+
if (!item.attributes.TargetAttributes[nativeTargetId]) {
|
|
58
|
+
item.attributes.TargetAttributes[nativeTargetId] = {};
|
|
59
|
+
}
|
|
60
|
+
|
|
57
61
|
item.attributes.TargetAttributes[nativeTargetId].DevelopmentTeam = quotedAppleTeamId;
|
|
58
62
|
item.attributes.TargetAttributes[nativeTargetId].ProvisioningStyle = 'Manual';
|
|
59
63
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ios/ProvisioningProfile.ts"],"names":["setProvisioningProfileForPbxproj","projectRoot","targetName","profileName","appleTeamId","buildConfiguration","project","nativeTargetEntry","nativeTargetId","nativeTarget","quotedAppleTeamId","ensureQuotes","buildConfigurationList","filter","item","name","forEach","buildSettings","PROVISIONING_PROFILE_SPECIFIER","DEVELOPMENT_TEAM","CODE_SIGN_IDENTITY","CODE_SIGN_STYLE","Object","entries","isNotComment","attributes","TargetAttributes","DevelopmentTeam","ProvisioningStyle","fs","writeFileSync","filepath","writeSync","value","match"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAgBO,SAASA,gCAAT,CACLC,WADK,EAEL;AACEC,EAAAA,UADF;AAEEC,EAAAA,WAFF;AAGEC,EAAAA,WAHF;AAIEC,EAAAA,kBAAkB,GAAG;AAJvB,CAFK,EAQC;AACN,QAAMC,OAAO,GAAG,6BAAWL,WAAX,CAAhB;AAEA,QAAMM,iBAAiB,GAAGL,UAAU,GAChC,sCAAuBI,OAAvB,EAAgCJ,UAAhC,CADgC,GAEhC,qCAAsBI,OAAtB,CAFJ;AAGA,QAAM,CAACE,cAAD,EAAiBC,YAAjB,IAAiCF,iBAAvC;AAEA,QAAMG,iBAAiB,GAAGC,YAAY,CAACP,WAAD,CAAtC;AAEA,oDAAgCE,OAAhC,EAAyCG,YAAY,CAACG,sBAAtD,EACGC,MADH,CACU,CAAC,GAAGC,IAAH,CAAD,KAAyCA,IAAI,CAACC,IAAL,KAAcV,kBADjE,EAEGW,OAFH,CAEW,CAAC,GAAGF,IAAH,CAAD,KAAyC;AAChDA,IAAAA,IAAI,CAACG,aAAL,CAAmBC,8BAAnB,GAAqD,IAAGf,WAAY,GAApE;AACAW,IAAAA,IAAI,CAACG,aAAL,CAAmBE,gBAAnB,GAAsCT,iBAAtC;AACAI,IAAAA,IAAI,CAACG,aAAL,CAAmBG,kBAAnB,GAAwC,uBAAxC;AACAN,IAAAA,IAAI,CAACG,aAAL,CAAmBI,eAAnB,GAAqC,QAArC;AACD,GAPH;AASAC,EAAAA,MAAM,CAACC,OAAP,CAAe,oCAAkBjB,OAAlB,CAAf,EACGO,MADH,CACUW,yBADV,EAEGR,OAFH,CAEW,CAAC,GAAGF,IAAH,CAAD,KAAmC;
|
|
1
|
+
{"version":3,"sources":["../../src/ios/ProvisioningProfile.ts"],"names":["setProvisioningProfileForPbxproj","projectRoot","targetName","profileName","appleTeamId","buildConfiguration","project","nativeTargetEntry","nativeTargetId","nativeTarget","quotedAppleTeamId","ensureQuotes","buildConfigurationList","filter","item","name","forEach","buildSettings","PROVISIONING_PROFILE_SPECIFIER","DEVELOPMENT_TEAM","CODE_SIGN_IDENTITY","CODE_SIGN_STYLE","Object","entries","isNotComment","attributes","TargetAttributes","DevelopmentTeam","ProvisioningStyle","fs","writeFileSync","filepath","writeSync","value","match"],"mappings":";;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;AAgBO,SAASA,gCAAT,CACLC,WADK,EAEL;AACEC,EAAAA,UADF;AAEEC,EAAAA,WAFF;AAGEC,EAAAA,WAHF;AAIEC,EAAAA,kBAAkB,GAAG;AAJvB,CAFK,EAQC;AACN,QAAMC,OAAO,GAAG,6BAAWL,WAAX,CAAhB;AAEA,QAAMM,iBAAiB,GAAGL,UAAU,GAChC,sCAAuBI,OAAvB,EAAgCJ,UAAhC,CADgC,GAEhC,qCAAsBI,OAAtB,CAFJ;AAGA,QAAM,CAACE,cAAD,EAAiBC,YAAjB,IAAiCF,iBAAvC;AAEA,QAAMG,iBAAiB,GAAGC,YAAY,CAACP,WAAD,CAAtC;AAEA,oDAAgCE,OAAhC,EAAyCG,YAAY,CAACG,sBAAtD,EACGC,MADH,CACU,CAAC,GAAGC,IAAH,CAAD,KAAyCA,IAAI,CAACC,IAAL,KAAcV,kBADjE,EAEGW,OAFH,CAEW,CAAC,GAAGF,IAAH,CAAD,KAAyC;AAChDA,IAAAA,IAAI,CAACG,aAAL,CAAmBC,8BAAnB,GAAqD,IAAGf,WAAY,GAApE;AACAW,IAAAA,IAAI,CAACG,aAAL,CAAmBE,gBAAnB,GAAsCT,iBAAtC;AACAI,IAAAA,IAAI,CAACG,aAAL,CAAmBG,kBAAnB,GAAwC,uBAAxC;AACAN,IAAAA,IAAI,CAACG,aAAL,CAAmBI,eAAnB,GAAqC,QAArC;AACD,GAPH;AASAC,EAAAA,MAAM,CAACC,OAAP,CAAe,oCAAkBjB,OAAlB,CAAf,EACGO,MADH,CACUW,yBADV,EAEGR,OAFH,CAEW,CAAC,GAAGF,IAAH,CAAD,KAAmC;AAC1C,QAAI,CAACA,IAAI,CAACW,UAAL,CAAgBC,gBAAhB,CAAiClB,cAAjC,CAAL,EAAuD;AACrDM,MAAAA,IAAI,CAACW,UAAL,CAAgBC,gBAAhB,CAAiClB,cAAjC,IAAmD,EAAnD;AACD;;AACDM,IAAAA,IAAI,CAACW,UAAL,CAAgBC,gBAAhB,CAAiClB,cAAjC,EAAiDmB,eAAjD,GAAmEjB,iBAAnE;AACAI,IAAAA,IAAI,CAACW,UAAL,CAAgBC,gBAAhB,CAAiClB,cAAjC,EAAiDoB,iBAAjD,GAAqE,QAArE;AACD,GARH;;AAUAC,qBAAGC,aAAH,CAAiBxB,OAAO,CAACyB,QAAzB,EAAmCzB,OAAO,CAAC0B,SAAR,EAAnC;AACD;;AAED,MAAMrB,YAAY,GAAIsB,KAAD,IAAmB;AACtC,MAAI,CAACA,KAAK,CAACC,KAAN,CAAY,OAAZ,CAAL,EAA2B;AACzB,WAAQ,IAAGD,KAAM,GAAjB;AACD;;AACD,SAAOA,KAAP;AACD,CALD","sourcesContent":["import fs from 'fs-extra';\n\nimport { findFirstNativeTarget, findNativeTargetByName } from './Target';\nimport {\n ConfigurationSectionEntry,\n getBuildConfigurationsForListId,\n getPbxproj,\n getProjectSection,\n isNotComment,\n ProjectSectionEntry,\n} from './utils/Xcodeproj';\n\ntype ProvisioningProfileSettings = {\n targetName?: string;\n appleTeamId: string;\n profileName: string;\n buildConfiguration?: string;\n};\n\nexport function setProvisioningProfileForPbxproj(\n projectRoot: string,\n {\n targetName,\n profileName,\n appleTeamId,\n buildConfiguration = 'Release',\n }: ProvisioningProfileSettings\n): void {\n const project = getPbxproj(projectRoot);\n\n const nativeTargetEntry = targetName\n ? findNativeTargetByName(project, targetName)\n : findFirstNativeTarget(project);\n const [nativeTargetId, nativeTarget] = nativeTargetEntry;\n\n const quotedAppleTeamId = ensureQuotes(appleTeamId);\n\n getBuildConfigurationsForListId(project, nativeTarget.buildConfigurationList)\n .filter(([, item]: ConfigurationSectionEntry) => item.name === buildConfiguration)\n .forEach(([, item]: ConfigurationSectionEntry) => {\n item.buildSettings.PROVISIONING_PROFILE_SPECIFIER = `\"${profileName}\"`;\n item.buildSettings.DEVELOPMENT_TEAM = quotedAppleTeamId;\n item.buildSettings.CODE_SIGN_IDENTITY = '\"iPhone Distribution\"';\n item.buildSettings.CODE_SIGN_STYLE = 'Manual';\n });\n\n Object.entries(getProjectSection(project))\n .filter(isNotComment)\n .forEach(([, item]: ProjectSectionEntry) => {\n if (!item.attributes.TargetAttributes[nativeTargetId]) {\n item.attributes.TargetAttributes[nativeTargetId] = {};\n }\n item.attributes.TargetAttributes[nativeTargetId].DevelopmentTeam = quotedAppleTeamId;\n item.attributes.TargetAttributes[nativeTargetId].ProvisioningStyle = 'Manual';\n });\n\n fs.writeFileSync(project.filepath, project.writeSync());\n}\n\nconst ensureQuotes = (value: string) => {\n if (!value.match(/^['\"]/)) {\n return `\"${value}\"`;\n }\n return value;\n};\n"],"file":"ProvisioningProfile.js"}
|
package/build/ios/Scheme.js
CHANGED
|
@@ -57,17 +57,25 @@ function setScheme(config, infoPlist) {
|
|
|
57
57
|
CFBundleURLSchemes: scheme
|
|
58
58
|
}]
|
|
59
59
|
};
|
|
60
|
-
}
|
|
61
|
-
|
|
60
|
+
}
|
|
62
61
|
|
|
63
62
|
function appendScheme(scheme, infoPlist) {
|
|
63
|
+
var _infoPlist$CFBundleUR;
|
|
64
|
+
|
|
64
65
|
if (!scheme) {
|
|
65
66
|
return infoPlist;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
const existingSchemes = infoPlist.CFBundleURLTypes;
|
|
69
|
+
const existingSchemes = (_infoPlist$CFBundleUR = infoPlist.CFBundleURLTypes) !== null && _infoPlist$CFBundleUR !== void 0 ? _infoPlist$CFBundleUR : [];
|
|
70
|
+
|
|
71
|
+
if (existingSchemes.some(({
|
|
72
|
+
CFBundleURLSchemes
|
|
73
|
+
}) => CFBundleURLSchemes.includes(scheme))) {
|
|
74
|
+
return infoPlist;
|
|
75
|
+
}
|
|
76
|
+
|
|
69
77
|
return { ...infoPlist,
|
|
70
|
-
CFBundleURLTypes: [...
|
|
78
|
+
CFBundleURLTypes: [...existingSchemes, {
|
|
71
79
|
CFBundleURLSchemes: [scheme]
|
|
72
80
|
}]
|
|
73
81
|
};
|
package/build/ios/Scheme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ios/Scheme.ts"],"names":["withScheme","setScheme","getScheme","config","Array","isArray","scheme","validate","value","filter","infoPlist","ios","bundleIdentifier","push","length","CFBundleURLTypes","CFBundleURLSchemes","appendScheme","existingSchemes","removeScheme","map","bundleUrlType","index","indexOf","splice","undefined","Boolean","hasScheme","
|
|
1
|
+
{"version":3,"sources":["../../src/ios/Scheme.ts"],"names":["withScheme","setScheme","getScheme","config","Array","isArray","scheme","validate","value","filter","infoPlist","ios","bundleIdentifier","push","length","CFBundleURLTypes","CFBundleURLSchemes","appendScheme","existingSchemes","some","includes","removeScheme","map","bundleUrlType","index","indexOf","splice","undefined","Boolean","hasScheme","schemes","getSchemesFromPlist","reduce"],"mappings":"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","sourcesContent":["import { ExpoConfig } from '@expo/config-types';\n\nimport { createInfoPlistPlugin } from '../plugins/ios-plugins';\nimport { InfoPlist, URLScheme } from './IosConfig.types';\n\nexport const withScheme = createInfoPlistPlugin(setScheme, 'withScheme');\n\nexport function getScheme(config: { scheme?: string | string[] }): string[] {\n if (Array.isArray(config.scheme)) {\n const validate = (value: any): value is string => {\n return typeof value === 'string';\n };\n return config.scheme.filter<string>(validate);\n } else if (typeof config.scheme === 'string') {\n return [config.scheme];\n }\n return [];\n}\n\nexport function setScheme(\n config: Partial<Pick<ExpoConfig, 'scheme' | 'ios'>>,\n infoPlist: InfoPlist\n): InfoPlist {\n const scheme = [\n ...getScheme(config),\n // @ts-ignore: TODO: ios.scheme is an unreleased -- harder to add to turtle v1.\n ...getScheme(config.ios ?? {}),\n ];\n // Add the bundle identifier to the list of schemes for easier Google auth and parity with Turtle v1.\n if (config.ios?.bundleIdentifier) {\n scheme.push(config.ios.bundleIdentifier);\n }\n if (scheme.length === 0) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleURLTypes: [{ CFBundleURLSchemes: scheme }],\n };\n}\n\nexport function appendScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n if (!scheme) {\n return infoPlist;\n }\n\n const existingSchemes = infoPlist.CFBundleURLTypes ?? [];\n if (existingSchemes.some(({ CFBundleURLSchemes }) => CFBundleURLSchemes.includes(scheme))) {\n return infoPlist;\n }\n\n return {\n ...infoPlist,\n CFBundleURLTypes: [\n ...existingSchemes,\n {\n CFBundleURLSchemes: [scheme],\n },\n ],\n };\n}\n\nexport function removeScheme(scheme: string | null, infoPlist: InfoPlist): InfoPlist {\n if (!scheme) {\n return infoPlist;\n }\n\n // No need to remove if we don't have any\n if (!infoPlist.CFBundleURLTypes) {\n return infoPlist;\n }\n\n infoPlist.CFBundleURLTypes = infoPlist.CFBundleURLTypes.map(bundleUrlType => {\n const index = bundleUrlType.CFBundleURLSchemes.indexOf(scheme);\n if (index > -1) {\n bundleUrlType.CFBundleURLSchemes.splice(index, 1);\n if (bundleUrlType.CFBundleURLSchemes.length === 0) {\n return undefined;\n }\n }\n return bundleUrlType;\n }).filter(Boolean) as URLScheme[];\n\n return infoPlist;\n}\n\nexport function hasScheme(scheme: string, infoPlist: InfoPlist): boolean {\n const existingSchemes = infoPlist.CFBundleURLTypes;\n\n if (!Array.isArray(existingSchemes)) return false;\n\n return existingSchemes.some(({ CFBundleURLSchemes: schemes }: any) =>\n Array.isArray(schemes) ? schemes.includes(scheme) : false\n );\n}\n\nexport function getSchemesFromPlist(infoPlist: InfoPlist): string[] {\n if (Array.isArray(infoPlist.CFBundleURLTypes)) {\n return infoPlist.CFBundleURLTypes.reduce<string[]>((schemes, { CFBundleURLSchemes }) => {\n if (Array.isArray(CFBundleURLSchemes)) {\n return [...schemes, ...CFBundleURLSchemes];\n }\n return schemes;\n }, []);\n }\n return [];\n}\n"],"file":"Scheme.js"}
|
package/build/ios/Updates.d.ts
CHANGED
|
@@ -10,16 +10,14 @@ export declare enum Config {
|
|
|
10
10
|
SDK_VERSION = "EXUpdatesSDKVersion",
|
|
11
11
|
UPDATE_URL = "EXUpdatesURL",
|
|
12
12
|
RELEASE_CHANNEL = "EXUpdatesReleaseChannel",
|
|
13
|
-
UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = "EXUpdatesRequestHeaders"
|
|
13
|
+
UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = "EXUpdatesRequestHeaders",
|
|
14
|
+
CODE_SIGNING_CERTIFICATE = "EXUpdatesCodeSigningCertificate",
|
|
15
|
+
CODE_SIGNING_METADATA = "EXUpdatesCodeSigningMetadata"
|
|
14
16
|
}
|
|
15
|
-
export declare function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null;
|
|
16
|
-
export declare function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean;
|
|
17
|
-
export declare function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number;
|
|
18
|
-
export declare function getUpdatesCheckOnLaunch(config: Pick<ExpoConfigUpdates, 'updates'>, expoUpdatesPackageVersion?: string | null): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS';
|
|
19
17
|
export declare const withUpdates: ConfigPlugin<{
|
|
20
18
|
expoUsername: string | null;
|
|
21
19
|
}>;
|
|
22
|
-
export declare function setUpdatesConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist, username: string | null, expoUpdatesPackageVersion?: string | null): ExpoPlist;
|
|
20
|
+
export declare function setUpdatesConfig(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist, username: string | null, expoUpdatesPackageVersion?: string | null): ExpoPlist;
|
|
23
21
|
export declare function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist;
|
|
24
22
|
interface ShellScriptBuildPhase {
|
|
25
23
|
isa: 'PBXShellScriptBuildPhase';
|
|
@@ -31,6 +29,6 @@ export declare function getBundleReactNativePhase(project: xcode.XcodeProject):
|
|
|
31
29
|
export declare function ensureBundleReactNativePhaseContainsConfigurationScript(projectRoot: string, project: xcode.XcodeProject): xcode.XcodeProject;
|
|
32
30
|
export declare function isShellScriptBuildPhaseConfigured(projectRoot: string, project: xcode.XcodeProject): boolean;
|
|
33
31
|
export declare function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean;
|
|
34
|
-
export declare function isPlistConfigurationSynced(config: ExpoConfigUpdates, expoPlist: ExpoPlist, username: string | null): boolean;
|
|
32
|
+
export declare function isPlistConfigurationSynced(projectRoot: string, config: ExpoConfigUpdates, expoPlist: ExpoPlist, username: string | null): boolean;
|
|
35
33
|
export declare function isPlistVersionConfigurationSynced(config: Pick<ExpoConfigUpdates, 'sdkVersion' | 'runtimeVersion'>, expoPlist: ExpoPlist): boolean;
|
|
36
34
|
export {};
|
package/build/ios/Updates.js
CHANGED
|
@@ -6,10 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Config = void 0;
|
|
7
7
|
exports.ensureBundleReactNativePhaseContainsConfigurationScript = ensureBundleReactNativePhaseContainsConfigurationScript;
|
|
8
8
|
exports.getBundleReactNativePhase = getBundleReactNativePhase;
|
|
9
|
-
exports.getSDKVersion = getSDKVersion;
|
|
10
|
-
exports.getUpdatesCheckOnLaunch = getUpdatesCheckOnLaunch;
|
|
11
|
-
exports.getUpdatesEnabled = getUpdatesEnabled;
|
|
12
|
-
exports.getUpdatesTimeout = getUpdatesTimeout;
|
|
13
9
|
exports.isPlistConfigurationSet = isPlistConfigurationSet;
|
|
14
10
|
exports.isPlistConfigurationSynced = isPlistConfigurationSynced;
|
|
15
11
|
exports.isPlistVersionConfigurationSynced = isPlistVersionConfigurationSynced;
|
|
@@ -38,16 +34,6 @@ function _resolveFrom() {
|
|
|
38
34
|
return data;
|
|
39
35
|
}
|
|
40
36
|
|
|
41
|
-
function _semver() {
|
|
42
|
-
const data = _interopRequireDefault(require("semver"));
|
|
43
|
-
|
|
44
|
-
_semver = function () {
|
|
45
|
-
return data;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
return data;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
37
|
function _iosPlugins() {
|
|
52
38
|
const data = require("../plugins/ios-plugins");
|
|
53
39
|
|
|
@@ -87,58 +73,28 @@ exports.Config = Config;
|
|
|
87
73
|
Config["UPDATE_URL"] = "EXUpdatesURL";
|
|
88
74
|
Config["RELEASE_CHANNEL"] = "EXUpdatesReleaseChannel";
|
|
89
75
|
Config["UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY"] = "EXUpdatesRequestHeaders";
|
|
76
|
+
Config["CODE_SIGNING_CERTIFICATE"] = "EXUpdatesCodeSigningCertificate";
|
|
77
|
+
Config["CODE_SIGNING_METADATA"] = "EXUpdatesCodeSigningMetadata";
|
|
90
78
|
})(Config || (exports.Config = Config = {}));
|
|
91
79
|
|
|
92
|
-
function getSDKVersion(config) {
|
|
93
|
-
return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function getUpdatesEnabled(config) {
|
|
97
|
-
var _config$updates;
|
|
98
|
-
|
|
99
|
-
return ((_config$updates = config.updates) === null || _config$updates === void 0 ? void 0 : _config$updates.enabled) !== false;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function getUpdatesTimeout(config) {
|
|
103
|
-
var _config$updates$fallb, _config$updates2;
|
|
104
|
-
|
|
105
|
-
return (_config$updates$fallb = (_config$updates2 = config.updates) === null || _config$updates2 === void 0 ? void 0 : _config$updates2.fallbackToCacheTimeout) !== null && _config$updates$fallb !== void 0 ? _config$updates$fallb : 0;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion) {
|
|
109
|
-
var _config$updates3, _config$updates4;
|
|
110
|
-
|
|
111
|
-
if (((_config$updates3 = config.updates) === null || _config$updates3 === void 0 ? void 0 : _config$updates3.checkAutomatically) === 'ON_ERROR_RECOVERY') {
|
|
112
|
-
// native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x
|
|
113
|
-
if (expoUpdatesPackageVersion && _semver().default.gte(expoUpdatesPackageVersion, '0.11.0')) {
|
|
114
|
-
return 'ERROR_RECOVERY_ONLY';
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return 'NEVER';
|
|
118
|
-
} else if (((_config$updates4 = config.updates) === null || _config$updates4 === void 0 ? void 0 : _config$updates4.checkAutomatically) === 'ON_LOAD') {
|
|
119
|
-
return 'ALWAYS';
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return 'ALWAYS';
|
|
123
|
-
}
|
|
124
|
-
|
|
125
80
|
const withUpdates = (config, {
|
|
126
81
|
expoUsername
|
|
127
82
|
}) => {
|
|
128
83
|
return (0, _iosPlugins().withExpoPlist)(config, config => {
|
|
129
|
-
const
|
|
130
|
-
|
|
84
|
+
const projectRoot = config.modRequest.projectRoot;
|
|
85
|
+
const expoUpdatesPackageVersion = (0, _Updates().getExpoUpdatesPackageVersion)(projectRoot);
|
|
86
|
+
config.modResults = setUpdatesConfig(projectRoot, config, config.modResults, expoUsername, expoUpdatesPackageVersion);
|
|
131
87
|
return config;
|
|
132
88
|
});
|
|
133
89
|
};
|
|
134
90
|
|
|
135
91
|
exports.withUpdates = withUpdates;
|
|
136
92
|
|
|
137
|
-
function setUpdatesConfig(config, expoPlist, username, expoUpdatesPackageVersion) {
|
|
93
|
+
function setUpdatesConfig(projectRoot, config, expoPlist, username, expoUpdatesPackageVersion) {
|
|
138
94
|
const newExpoPlist = { ...expoPlist,
|
|
139
|
-
[Config.ENABLED]: getUpdatesEnabled(config),
|
|
140
|
-
[Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),
|
|
141
|
-
[Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config)
|
|
95
|
+
[Config.ENABLED]: (0, _Updates().getUpdatesEnabled)(config),
|
|
96
|
+
[Config.CHECK_ON_LAUNCH]: (0, _Updates().getUpdatesCheckOnLaunch)(config, expoUpdatesPackageVersion),
|
|
97
|
+
[Config.LAUNCH_WAIT_MS]: (0, _Updates().getUpdatesTimeout)(config)
|
|
142
98
|
};
|
|
143
99
|
const updateUrl = (0, _Updates().getUpdateUrl)(config, username);
|
|
144
100
|
|
|
@@ -148,6 +104,22 @@ function setUpdatesConfig(config, expoPlist, username, expoUpdatesPackageVersion
|
|
|
148
104
|
delete newExpoPlist[Config.UPDATE_URL];
|
|
149
105
|
}
|
|
150
106
|
|
|
107
|
+
const codeSigningCertificate = (0, _Updates().getUpdatesCodeSigningCertificate)(projectRoot, config);
|
|
108
|
+
|
|
109
|
+
if (codeSigningCertificate) {
|
|
110
|
+
newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;
|
|
111
|
+
} else {
|
|
112
|
+
delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const codeSigningMetadata = (0, _Updates().getUpdatesCodeSigningMetadata)(config);
|
|
116
|
+
|
|
117
|
+
if (codeSigningMetadata) {
|
|
118
|
+
newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;
|
|
119
|
+
} else {
|
|
120
|
+
delete newExpoPlist[Config.CODE_SIGNING_METADATA];
|
|
121
|
+
}
|
|
122
|
+
|
|
151
123
|
return setVersionsConfig(config, newExpoPlist);
|
|
152
124
|
}
|
|
153
125
|
|
|
@@ -160,7 +132,7 @@ function setVersionsConfig(config, expoPlist) {
|
|
|
160
132
|
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.');
|
|
161
133
|
}
|
|
162
134
|
|
|
163
|
-
const sdkVersion = getSDKVersion(config);
|
|
135
|
+
const sdkVersion = (0, _Updates().getSDKVersion)(config);
|
|
164
136
|
|
|
165
137
|
if (runtimeVersion) {
|
|
166
138
|
delete newExpoPlist[Config.SDK_VERSION];
|
|
@@ -229,15 +201,15 @@ function isPlistConfigurationSet(expoPlist) {
|
|
|
229
201
|
return Boolean(expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion));
|
|
230
202
|
}
|
|
231
203
|
|
|
232
|
-
function isPlistConfigurationSynced(config, expoPlist, username) {
|
|
233
|
-
return (0, _Updates().getUpdateUrl)(config, username) === expoPlist.EXUpdatesURL && getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled && getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs && getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch && isPlistVersionConfigurationSynced(config, expoPlist);
|
|
204
|
+
function isPlistConfigurationSynced(projectRoot, config, expoPlist, username) {
|
|
205
|
+
return (0, _Updates().getUpdateUrl)(config, username) === 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);
|
|
234
206
|
}
|
|
235
207
|
|
|
236
208
|
function isPlistVersionConfigurationSynced(config, expoPlist) {
|
|
237
209
|
var _expoPlist$EXUpdatesR, _expoPlist$EXUpdatesS;
|
|
238
210
|
|
|
239
211
|
const expectedRuntimeVersion = (0, _Updates().getRuntimeVersionNullable)(config, 'ios');
|
|
240
|
-
const expectedSdkVersion = getSDKVersion(config);
|
|
212
|
+
const expectedSdkVersion = (0, _Updates().getSDKVersion)(config);
|
|
241
213
|
const currentRuntimeVersion = (_expoPlist$EXUpdatesR = expoPlist.EXUpdatesRuntimeVersion) !== null && _expoPlist$EXUpdatesR !== void 0 ? _expoPlist$EXUpdatesR : null;
|
|
242
214
|
const currentSdkVersion = (_expoPlist$EXUpdatesS = expoPlist.EXUpdatesSDKVersion) !== null && _expoPlist$EXUpdatesS !== void 0 ? _expoPlist$EXUpdatesS : null;
|
|
243
215
|
|
package/build/ios/Updates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ios/Updates.ts"],"names":["CREATE_MANIFEST_IOS_PATH","Config","getSDKVersion","config","sdkVersion","getUpdatesEnabled","updates","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","checkAutomatically","semver","gte","withUpdates","expoUsername","modRequest","projectRoot","modResults","setUpdatesConfig","expoPlist","username","newExpoPlist","ENABLED","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","setVersionsConfig","runtimeVersion","RUNTIME_VERSION","Error","SDK_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","relativePath","path","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","Object","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSynced","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","isPlistVersionConfigurationSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport semver from 'semver';\nimport xcode from 'xcode';\n\nimport { ConfigPlugin } from '../Plugin.types';\nimport { withExpoPlist } from '../plugins/ios-plugins';\nimport {\n ExpoConfigUpdates,\n getExpoUpdatesPackageVersion,\n getRuntimeVersionNullable,\n getUpdateUrl,\n} from '../utils/Updates';\nimport { ExpoPlist } from './IosConfig.types';\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}\n\nexport function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null {\n return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;\n}\n\nexport function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean {\n return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>) {\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' {\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 }\n return 'ALWAYS';\n}\n\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withExpoPlist(config, config => {\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(config.modRequest.projectRoot);\n config.modResults = setUpdatesConfig(\n config,\n config.modResults,\n expoUsername,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport function setUpdatesConfig(\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null,\n expoUpdatesPackageVersion?: string | null\n): ExpoPlist {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n 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 config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === expoPlist.EXUpdatesEnabled &&\n getUpdatesTimeout(config) === expoPlist.EXUpdatesLaunchWaitMs &&\n getUpdatesCheckOnLaunch(config) === expoPlist.EXUpdatesCheckOnLaunch &&\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"],"file":"Updates.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/ios/Updates.ts"],"names":["CREATE_MANIFEST_IOS_PATH","Config","withUpdates","config","expoUsername","projectRoot","modRequest","expoUpdatesPackageVersion","modResults","setUpdatesConfig","expoPlist","username","newExpoPlist","ENABLED","CHECK_ON_LAUNCH","LAUNCH_WAIT_MS","updateUrl","UPDATE_URL","codeSigningCertificate","CODE_SIGNING_CERTIFICATE","codeSigningMetadata","CODE_SIGNING_METADATA","setVersionsConfig","runtimeVersion","RUNTIME_VERSION","Error","sdkVersion","SDK_VERSION","formatConfigurationScriptPath","buildScriptPath","resolveFrom","silent","relativePath","path","relative","join","process","platform","replace","getBundleReactNativePhase","project","shellScriptBuildPhase","hash","objects","PBXShellScriptBuildPhase","bundleReactNative","Object","values","find","buildPhase","name","ensureBundleReactNativePhaseContainsConfigurationScript","buildPhaseShellScriptPath","isShellScriptBuildPhaseConfigured","shellScript","includes","RegExp","isPlistConfigurationSet","Boolean","EXUpdatesURL","EXUpdatesSDKVersion","EXUpdatesRuntimeVersion","isPlistConfigurationSynced","EXUpdatesEnabled","EXUpdatesLaunchWaitMs","EXUpdatesCheckOnLaunch","EXUpdatesCodeSigningCertificate","EXUpdatesCodeSigningMetadata","isPlistVersionConfigurationSynced","expectedRuntimeVersion","expectedSdkVersion","currentRuntimeVersion","currentSdkVersion"],"mappings":"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","sourcesContent":["import * as path from 'path';\nimport resolveFrom from 'resolve-from';\nimport xcode from 'xcode';\n\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 getUpdatesEnabled,\n getUpdatesTimeout,\n getUpdateUrl,\n} from '../utils/Updates';\nimport { ExpoPlist } from './IosConfig.types';\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\nexport const withUpdates: ConfigPlugin<{ expoUsername: string | null }> = (\n config,\n { expoUsername }\n) => {\n return withExpoPlist(config, config => {\n const projectRoot = config.modRequest.projectRoot;\n const expoUpdatesPackageVersion = getExpoUpdatesPackageVersion(projectRoot);\n config.modResults = setUpdatesConfig(\n projectRoot,\n config,\n config.modResults,\n expoUsername,\n expoUpdatesPackageVersion\n );\n return config;\n });\n};\n\nexport function setUpdatesConfig(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null,\n expoUpdatesPackageVersion?: string | null\n): ExpoPlist {\n const newExpoPlist = {\n ...expoPlist,\n [Config.ENABLED]: getUpdatesEnabled(config),\n [Config.CHECK_ON_LAUNCH]: getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion),\n [Config.LAUNCH_WAIT_MS]: getUpdatesTimeout(config),\n };\n\n const updateUrl = getUpdateUrl(config, username);\n if (updateUrl) {\n newExpoPlist[Config.UPDATE_URL] = updateUrl;\n } else {\n delete newExpoPlist[Config.UPDATE_URL];\n }\n\n const codeSigningCertificate = getUpdatesCodeSigningCertificate(projectRoot, config);\n if (codeSigningCertificate) {\n newExpoPlist[Config.CODE_SIGNING_CERTIFICATE] = codeSigningCertificate;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_CERTIFICATE];\n }\n\n const codeSigningMetadata = getUpdatesCodeSigningMetadata(config);\n if (codeSigningMetadata) {\n newExpoPlist[Config.CODE_SIGNING_METADATA] = codeSigningMetadata;\n } else {\n delete newExpoPlist[Config.CODE_SIGNING_METADATA];\n }\n\n return setVersionsConfig(config, newExpoPlist);\n}\n\nexport function setVersionsConfig(config: ExpoConfigUpdates, expoPlist: ExpoPlist): ExpoPlist {\n const newExpoPlist = { ...expoPlist };\n\n const runtimeVersion = getRuntimeVersionNullable(config, 'ios');\n if (!runtimeVersion && expoPlist[Config.RUNTIME_VERSION]) {\n throw new Error(\n 'A runtime version is set in your Expo.plist, but is missing from your app.json/app.config.js. Please either set runtimeVersion in your app.json/app.config.js or remove EXUpdatesRuntimeVersion from your Expo.plist.'\n );\n }\n const sdkVersion = getSDKVersion(config);\n if (runtimeVersion) {\n delete newExpoPlist[Config.SDK_VERSION];\n newExpoPlist[Config.RUNTIME_VERSION] = runtimeVersion;\n } else if (sdkVersion) {\n /**\n * runtime version maybe null in projects using classic updates. In that\n * case we use SDK version\n */\n delete newExpoPlist[Config.RUNTIME_VERSION];\n newExpoPlist[Config.SDK_VERSION] = sdkVersion;\n } else {\n delete newExpoPlist[Config.SDK_VERSION];\n delete newExpoPlist[Config.RUNTIME_VERSION];\n }\n\n return newExpoPlist;\n}\n\nfunction formatConfigurationScriptPath(projectRoot: string): string {\n const buildScriptPath = resolveFrom.silent(projectRoot, CREATE_MANIFEST_IOS_PATH);\n\n if (!buildScriptPath) {\n throw new Error(\n \"Could not find the build script for iOS. This could happen in case of outdated 'node_modules'. Run 'npm install' to make sure that it's up-to-date.\"\n );\n }\n\n const relativePath = path.relative(path.join(projectRoot, 'ios'), buildScriptPath);\n return process.platform === 'win32' ? relativePath.replace(/\\\\/g, '/') : relativePath;\n}\n\ninterface ShellScriptBuildPhase {\n isa: 'PBXShellScriptBuildPhase';\n name: string;\n shellScript: string;\n [key: string]: any;\n}\n\nexport function getBundleReactNativePhase(project: xcode.XcodeProject): ShellScriptBuildPhase {\n const shellScriptBuildPhase = project.hash.project.objects.PBXShellScriptBuildPhase as Record<\n string,\n ShellScriptBuildPhase\n >;\n const bundleReactNative = Object.values(shellScriptBuildPhase).find(\n buildPhase => buildPhase.name === '\"Bundle React Native code and images\"'\n );\n\n if (!bundleReactNative) {\n throw new Error(`Couldn't find a build phase \"Bundle React Native code and images\"`);\n }\n\n return bundleReactNative;\n}\n\nexport function ensureBundleReactNativePhaseContainsConfigurationScript(\n projectRoot: string,\n project: xcode.XcodeProject\n): xcode.XcodeProject {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n\n if (!isShellScriptBuildPhaseConfigured(projectRoot, project)) {\n // check if there's already another path to create-manifest-ios.sh\n // this might be the case for monorepos\n if (bundleReactNative.shellScript.includes(CREATE_MANIFEST_IOS_PATH)) {\n bundleReactNative.shellScript = bundleReactNative.shellScript.replace(\n new RegExp(`(\\\\\\\\n)(\\\\.\\\\.)+/node_modules/${CREATE_MANIFEST_IOS_PATH}`),\n ''\n );\n }\n bundleReactNative.shellScript = `${bundleReactNative.shellScript.replace(\n /\"$/,\n ''\n )}${buildPhaseShellScriptPath}\\\\n\"`;\n }\n return project;\n}\n\nexport function isShellScriptBuildPhaseConfigured(\n projectRoot: string,\n project: xcode.XcodeProject\n): boolean {\n const bundleReactNative = getBundleReactNativePhase(project);\n const buildPhaseShellScriptPath = formatConfigurationScriptPath(projectRoot);\n return bundleReactNative.shellScript.includes(buildPhaseShellScriptPath);\n}\n\nexport function isPlistConfigurationSet(expoPlist: ExpoPlist): boolean {\n return Boolean(\n expoPlist.EXUpdatesURL && (expoPlist.EXUpdatesSDKVersion || expoPlist.EXUpdatesRuntimeVersion)\n );\n}\n\nexport function isPlistConfigurationSynced(\n projectRoot: string,\n config: ExpoConfigUpdates,\n expoPlist: ExpoPlist,\n username: string | null\n): boolean {\n return (\n getUpdateUrl(config, username) === expoPlist.EXUpdatesURL &&\n getUpdatesEnabled(config) === 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"],"file":"Updates.js"}
|
package/build/utils/Updates.d.ts
CHANGED
|
@@ -16,3 +16,10 @@ export declare function getRuntimeVersion(config: Pick<ExpoConfig, 'version' | '
|
|
|
16
16
|
android?: Pick<Android, 'versionCode' | 'runtimeVersion'>;
|
|
17
17
|
ios?: Pick<IOS, 'buildNumber' | 'runtimeVersion'>;
|
|
18
18
|
}, platform: 'android' | 'ios'): string;
|
|
19
|
+
export declare function getSDKVersion(config: Pick<ExpoConfigUpdates, 'sdkVersion'>): string | null;
|
|
20
|
+
export declare function getUpdatesEnabled(config: Pick<ExpoConfigUpdates, 'updates'>): boolean;
|
|
21
|
+
export declare function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number;
|
|
22
|
+
export declare function getUpdatesCheckOnLaunch(config: Pick<ExpoConfigUpdates, 'updates'>, expoUpdatesPackageVersion?: string | null): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS';
|
|
23
|
+
export declare function getUpdatesCodeSigningCertificate(projectRoot: string, config: Pick<ExpoConfigUpdates, 'updates'>): string | undefined;
|
|
24
|
+
export declare function getUpdatesCodeSigningMetadata(config: Pick<ExpoConfigUpdates, 'updates'>): NonNullable<ExpoConfigUpdates['updates']>['codeSigningMetadata'];
|
|
25
|
+
export declare function getUpdatesCodeSigningMetadataStringified(config: Pick<ExpoConfigUpdates, 'updates'>): string | undefined;
|
package/build/utils/Updates.js
CHANGED
|
@@ -7,7 +7,14 @@ exports.getExpoUpdatesPackageVersion = getExpoUpdatesPackageVersion;
|
|
|
7
7
|
exports.getNativeVersion = getNativeVersion;
|
|
8
8
|
exports.getRuntimeVersion = getRuntimeVersion;
|
|
9
9
|
exports.getRuntimeVersionNullable = getRuntimeVersionNullable;
|
|
10
|
+
exports.getSDKVersion = getSDKVersion;
|
|
10
11
|
exports.getUpdateUrl = getUpdateUrl;
|
|
12
|
+
exports.getUpdatesCheckOnLaunch = getUpdatesCheckOnLaunch;
|
|
13
|
+
exports.getUpdatesCodeSigningCertificate = getUpdatesCodeSigningCertificate;
|
|
14
|
+
exports.getUpdatesCodeSigningMetadata = getUpdatesCodeSigningMetadata;
|
|
15
|
+
exports.getUpdatesCodeSigningMetadataStringified = getUpdatesCodeSigningMetadataStringified;
|
|
16
|
+
exports.getUpdatesEnabled = getUpdatesEnabled;
|
|
17
|
+
exports.getUpdatesTimeout = getUpdatesTimeout;
|
|
11
18
|
exports.withRuntimeVersion = void 0;
|
|
12
19
|
|
|
13
20
|
function _sdkRuntimeVersions() {
|
|
@@ -40,6 +47,16 @@ function _getenv() {
|
|
|
40
47
|
return data;
|
|
41
48
|
}
|
|
42
49
|
|
|
50
|
+
function _path() {
|
|
51
|
+
const data = _interopRequireDefault(require("path"));
|
|
52
|
+
|
|
53
|
+
_path = function () {
|
|
54
|
+
return data;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
return data;
|
|
58
|
+
}
|
|
59
|
+
|
|
43
60
|
function _resolveFrom() {
|
|
44
61
|
const data = _interopRequireDefault(require("resolve-from"));
|
|
45
62
|
|
|
@@ -50,6 +67,16 @@ function _resolveFrom() {
|
|
|
50
67
|
return data;
|
|
51
68
|
}
|
|
52
69
|
|
|
70
|
+
function _semver() {
|
|
71
|
+
const data = _interopRequireDefault(require("semver"));
|
|
72
|
+
|
|
73
|
+
_semver = function () {
|
|
74
|
+
return data;
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
return data;
|
|
78
|
+
}
|
|
79
|
+
|
|
53
80
|
function _() {
|
|
54
81
|
const data = require("..");
|
|
55
82
|
|
|
@@ -177,4 +204,71 @@ function getRuntimeVersion(config, platform) {
|
|
|
177
204
|
|
|
178
205
|
throw new Error(`"${typeof runtimeVersion === 'object' ? JSON.stringify(runtimeVersion) : runtimeVersion}" is not a valid runtime version. getRuntimeVersion only supports a string, "sdkVersion", or "nativeVersion" policy.`);
|
|
179
206
|
}
|
|
207
|
+
|
|
208
|
+
function getSDKVersion(config) {
|
|
209
|
+
return typeof config.sdkVersion === 'string' ? config.sdkVersion : null;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
function getUpdatesEnabled(config) {
|
|
213
|
+
var _config$updates3;
|
|
214
|
+
|
|
215
|
+
return ((_config$updates3 = config.updates) === null || _config$updates3 === void 0 ? void 0 : _config$updates3.enabled) !== false;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function getUpdatesTimeout(config) {
|
|
219
|
+
var _config$updates$fallb, _config$updates4;
|
|
220
|
+
|
|
221
|
+
return (_config$updates$fallb = (_config$updates4 = config.updates) === null || _config$updates4 === void 0 ? void 0 : _config$updates4.fallbackToCacheTimeout) !== null && _config$updates$fallb !== void 0 ? _config$updates$fallb : 0;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function getUpdatesCheckOnLaunch(config, expoUpdatesPackageVersion) {
|
|
225
|
+
var _config$updates5, _config$updates6;
|
|
226
|
+
|
|
227
|
+
if (((_config$updates5 = config.updates) === null || _config$updates5 === void 0 ? void 0 : _config$updates5.checkAutomatically) === 'ON_ERROR_RECOVERY') {
|
|
228
|
+
// native 'ERROR_RECOVERY_ONLY' option was only introduced in 0.11.x
|
|
229
|
+
if (expoUpdatesPackageVersion && _semver().default.gte(expoUpdatesPackageVersion, '0.11.0')) {
|
|
230
|
+
return 'ERROR_RECOVERY_ONLY';
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return 'NEVER';
|
|
234
|
+
} else if (((_config$updates6 = config.updates) === null || _config$updates6 === void 0 ? void 0 : _config$updates6.checkAutomatically) === 'ON_LOAD') {
|
|
235
|
+
return 'ALWAYS';
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
return 'ALWAYS';
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
function getUpdatesCodeSigningCertificate(projectRoot, config) {
|
|
242
|
+
var _config$updates7;
|
|
243
|
+
|
|
244
|
+
const codeSigningCertificatePath = (_config$updates7 = config.updates) === null || _config$updates7 === void 0 ? void 0 : _config$updates7.codeSigningCertificate;
|
|
245
|
+
|
|
246
|
+
if (!codeSigningCertificatePath) {
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
const finalPath = _path().default.join(projectRoot, codeSigningCertificatePath);
|
|
251
|
+
|
|
252
|
+
if (!_fs().default.existsSync(finalPath)) {
|
|
253
|
+
throw new Error(`File not found at \`updates.codeSigningCertificate\` path: ${finalPath}`);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
return _fs().default.readFileSync(finalPath, 'utf8');
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function getUpdatesCodeSigningMetadata(config) {
|
|
260
|
+
var _config$updates8;
|
|
261
|
+
|
|
262
|
+
return (_config$updates8 = config.updates) === null || _config$updates8 === void 0 ? void 0 : _config$updates8.codeSigningMetadata;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
function getUpdatesCodeSigningMetadataStringified(config) {
|
|
266
|
+
const metadata = getUpdatesCodeSigningMetadata(config);
|
|
267
|
+
|
|
268
|
+
if (!metadata) {
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return JSON.stringify(metadata);
|
|
273
|
+
}
|
|
180
274
|
//# sourceMappingURL=Updates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/Updates.ts"],"names":["getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","username","updates","url","user","owner","slug","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","ios","runtimeVersion","getRuntimeVersion","android","getRuntimeVersionNullable","e","console","log","policy","sdkVersion","stringify"],"mappings":"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","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 resolveFrom from 'resolve-from';\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(\n config: Pick<ExpoConfigUpdates, 'owner' | 'slug' | 'updates'>,\n username: string | null\n): string | null {\n if (config.updates?.url) {\n return config.updates?.url;\n }\n\n const user = typeof config.owner === 'string' ? config.owner : username;\n if (!user) {\n return null;\n }\n return `https://exp.host/@${user}/${config.slug}`;\n}\n\nexport function 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 config.ios = {\n ...config.ios,\n runtimeVersion: getRuntimeVersion(config, 'ios'),\n };\n }\n if (config.android?.runtimeVersion || config.runtimeVersion) {\n config.android = {\n ...config.android,\n runtimeVersion: getRuntimeVersion(config, 'android'),\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 {\n const runtimeVersion = config[platform]?.runtimeVersion ?? config.runtimeVersion;\n if (!runtimeVersion) {\n throw new Error(\n `There is neither a value or a policy set for the runtime version on \"${platform}\"`\n );\n }\n\n if (typeof runtimeVersion === 'string') {\n return runtimeVersion;\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\", or \"nativeVersion\" policy.`\n );\n}\n"],"file":"Updates.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/utils/Updates.ts"],"names":["getExpoUpdatesPackageVersion","projectRoot","expoUpdatesPackageJsonPath","resolveFrom","silent","fs","existsSync","packageJson","JSON","parse","readFileSync","version","getUpdateUrl","config","username","updates","url","user","owner","slug","getNativeVersion","platform","IOSConfig","Version","getVersion","buildNumber","getBuildNumber","versionCode","AndroidConfig","getVersionCode","Error","withRuntimeVersion","ios","runtimeVersion","getRuntimeVersion","android","getRuntimeVersionNullable","e","console","log","policy","sdkVersion","stringify","getSDKVersion","getUpdatesEnabled","enabled","getUpdatesTimeout","fallbackToCacheTimeout","getUpdatesCheckOnLaunch","expoUpdatesPackageVersion","checkAutomatically","semver","gte","getUpdatesCodeSigningCertificate","codeSigningCertificatePath","codeSigningCertificate","undefined","finalPath","path","join","getUpdatesCodeSigningMetadata","codeSigningMetadata","getUpdatesCodeSigningMetadataStringified","metadata"],"mappings":"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","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(\n config: Pick<ExpoConfigUpdates, 'owner' | 'slug' | 'updates'>,\n username: string | null\n): string | null {\n if (config.updates?.url) {\n return config.updates?.url;\n }\n\n const user = typeof config.owner === 'string' ? config.owner : username;\n if (!user) {\n return null;\n }\n return `https://exp.host/@${user}/${config.slug}`;\n}\n\nexport function 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 config.ios = {\n ...config.ios,\n runtimeVersion: getRuntimeVersion(config, 'ios'),\n };\n }\n if (config.android?.runtimeVersion || config.runtimeVersion) {\n config.android = {\n ...config.android,\n runtimeVersion: getRuntimeVersion(config, 'android'),\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 {\n const runtimeVersion = config[platform]?.runtimeVersion ?? config.runtimeVersion;\n if (!runtimeVersion) {\n throw new Error(\n `There is neither a value or a policy set for the runtime version on \"${platform}\"`\n );\n }\n\n if (typeof runtimeVersion === 'string') {\n return runtimeVersion;\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\", 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 return config.updates?.enabled !== false;\n}\n\nexport function getUpdatesTimeout(config: Pick<ExpoConfigUpdates, 'updates'>): number {\n return config.updates?.fallbackToCacheTimeout ?? 0;\n}\n\nexport function getUpdatesCheckOnLaunch(\n config: Pick<ExpoConfigUpdates, 'updates'>,\n expoUpdatesPackageVersion?: string | null\n): 'NEVER' | 'ERROR_RECOVERY_ONLY' | 'ALWAYS' {\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 }\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"],"file":"Updates.js"}
|