@expo/build-tools 1.0.80 → 1.0.82
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/dist/steps/functions/sendSlackMessage.js +16 -6
- package/dist/steps/functions/sendSlackMessage.js.map +1 -1
- package/dist/steps/utils/expoUpdates.js +7 -2
- package/dist/steps/utils/expoUpdates.js.map +1 -1
- package/dist/utils/expoUpdates.js +7 -2
- package/dist/utils/expoUpdates.js.map +1 -1
- package/dist/utils/expoUpdatesCli.d.ts +5 -0
- package/dist/utils/expoUpdatesCli.js +64 -0
- package/dist/utils/expoUpdatesCli.js.map +1 -0
- package/dist/utils/resolveRuntimeVersionAsync.d.ts +9 -0
- package/dist/utils/resolveRuntimeVersionAsync.js +35 -0
- package/dist/utils/resolveRuntimeVersionAsync.js.map +1 -0
- package/package.json +3 -3
|
@@ -15,7 +15,12 @@ function createSendSlackMessageFunction() {
|
|
|
15
15
|
steps_1.BuildStepInput.createProvider({
|
|
16
16
|
id: 'message',
|
|
17
17
|
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.STRING,
|
|
18
|
-
required:
|
|
18
|
+
required: false,
|
|
19
|
+
}),
|
|
20
|
+
steps_1.BuildStepInput.createProvider({
|
|
21
|
+
id: 'payload',
|
|
22
|
+
allowedValueTypeName: steps_1.BuildStepInputValueTypeName.JSON,
|
|
23
|
+
required: false,
|
|
19
24
|
}),
|
|
20
25
|
steps_1.BuildStepInput.createProvider({
|
|
21
26
|
id: 'slack_hook_url',
|
|
@@ -27,19 +32,26 @@ function createSendSlackMessageFunction() {
|
|
|
27
32
|
var _a;
|
|
28
33
|
const { logger } = stepCtx;
|
|
29
34
|
const slackMessage = inputs.message.value;
|
|
35
|
+
const slackPayload = inputs.payload.value;
|
|
36
|
+
if (!slackMessage && !slackPayload) {
|
|
37
|
+
throw new Error('You need to provide either "message" input or "payload" input to specify the Slack message contents');
|
|
38
|
+
}
|
|
39
|
+
if (slackMessage && slackPayload) {
|
|
40
|
+
throw new Error('You cannot specify both "message" input and "payload" input - choose one for the Slack message contents');
|
|
41
|
+
}
|
|
30
42
|
const slackHookUrl = (_a = inputs.slack_hook_url.value) !== null && _a !== void 0 ? _a : env.SLACK_HOOK_URL;
|
|
31
43
|
if (!slackHookUrl) {
|
|
32
44
|
logger.warn('Slack webhook URL not provided - provide input "slack_hook_url" or set "SLACK_HOOK_URL" secret');
|
|
33
45
|
throw new Error('Sending Slack message failed - provide input "slack_hook_url" or set "SLACK_HOOK_URL" secret');
|
|
34
46
|
}
|
|
35
|
-
await sendSlackMessageAsync({ logger, slackHookUrl, slackMessage });
|
|
47
|
+
await sendSlackMessageAsync({ logger, slackHookUrl, slackMessage, slackPayload });
|
|
36
48
|
},
|
|
37
49
|
});
|
|
38
50
|
}
|
|
39
51
|
exports.createSendSlackMessageFunction = createSendSlackMessageFunction;
|
|
40
|
-
async function sendSlackMessageAsync({ logger, slackHookUrl, slackMessage, }) {
|
|
52
|
+
async function sendSlackMessageAsync({ logger, slackHookUrl, slackMessage, slackPayload, }) {
|
|
41
53
|
logger.info('Sending Slack message');
|
|
42
|
-
const body = { text: slackMessage };
|
|
54
|
+
const body = slackPayload ? slackPayload : { text: slackMessage };
|
|
43
55
|
let fetchResult;
|
|
44
56
|
try {
|
|
45
57
|
fetchResult = await (0, node_fetch_1.default)(slackHookUrl, {
|
|
@@ -49,12 +61,10 @@ async function sendSlackMessageAsync({ logger, slackHookUrl, slackMessage, }) {
|
|
|
49
61
|
});
|
|
50
62
|
}
|
|
51
63
|
catch (error) {
|
|
52
|
-
logger.warn(`Sending Slack message to webhook url "${slackHookUrl}" failed`);
|
|
53
64
|
logger.debug(error);
|
|
54
65
|
throw new Error(`Sending Slack message to webhook url "${slackHookUrl}" failed`);
|
|
55
66
|
}
|
|
56
67
|
if (!fetchResult.ok) {
|
|
57
|
-
logger.warn(`Sending Slack message to webhook url "${slackHookUrl}" failed with status ${fetchResult.status}`);
|
|
58
68
|
logger.debug(`${fetchResult.status} - ${fetchResult.statusText}`);
|
|
59
69
|
throw new Error(`Sending Slack message to webhook url "${slackHookUrl}" failed with status ${fetchResult.status}`);
|
|
60
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendSlackMessage.js","sourceRoot":"","sources":["../../../src/steps/functions/sendSlackMessage.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAyF;AACzF,4DAA6C;AAG7C,SAAgB,8BAA8B;IAC5C,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,oBAAoB;QAC1B,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,SAAS;gBACb,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;gBACxD,QAAQ,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"sendSlackMessage.js","sourceRoot":"","sources":["../../../src/steps/functions/sendSlackMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport fetch, { Response } from 'node-fetch';\nimport { bunyan } from '@expo/logger';\n\nexport function createSendSlackMessageFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'send_slack_message',\n name: 'Send Slack message',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'message',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'payload',\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n required: false,\n }),\n BuildStepInput.createProvider({\n id: 'slack_hook_url',\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n required: false,\n }),\n ],\n fn: async (stepCtx, { inputs, env }) => {\n const { logger } = stepCtx;\n const slackMessage = inputs.message.value as string;\n const slackPayload = inputs.payload.value as object;\n if (!slackMessage && !slackPayload) {\n throw new Error(\n 'You need to provide either \"message\" input or \"payload\" input to specify the Slack message contents'\n );\n }\n if (slackMessage && slackPayload) {\n throw new Error(\n 'You cannot specify both \"message\" input and \"payload\" input - choose one for the Slack message contents'\n );\n }\n const slackHookUrl = (inputs.slack_hook_url.value as string) ?? env.SLACK_HOOK_URL;\n if (!slackHookUrl) {\n logger.warn(\n 'Slack webhook URL not provided - provide input \"slack_hook_url\" or set \"SLACK_HOOK_URL\" secret'\n );\n throw new Error(\n 'Sending Slack message failed - provide input \"slack_hook_url\" or set \"SLACK_HOOK_URL\" secret'\n );\n }\n await sendSlackMessageAsync({ logger, slackHookUrl, slackMessage, slackPayload });\n },\n });\n}\n\nasync function sendSlackMessageAsync({\n logger,\n slackHookUrl,\n slackMessage,\n slackPayload,\n}: {\n logger: bunyan;\n slackHookUrl: string;\n slackMessage: string | undefined;\n slackPayload: object | undefined;\n}): Promise<void> {\n logger.info('Sending Slack message');\n\n const body = slackPayload ? slackPayload : { text: slackMessage };\n let fetchResult: Response;\n try {\n fetchResult = await fetch(slackHookUrl, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n } catch (error) {\n logger.debug(error);\n throw new Error(`Sending Slack message to webhook url \"${slackHookUrl}\" failed`);\n }\n if (!fetchResult.ok) {\n logger.debug(`${fetchResult.status} - ${fetchResult.statusText}`);\n throw new Error(\n `Sending Slack message to webhook url \"${slackHookUrl}\" failed with status ${fetchResult.status}`\n );\n }\n logger.info('Slack message sent successfully');\n}\n"]}
|
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isEASUpdateConfigured = exports.configureEASUpdateAsync = void 0;
|
|
4
4
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
5
|
-
const
|
|
5
|
+
const resolveRuntimeVersionAsync_1 = require("../../utils/resolveRuntimeVersionAsync");
|
|
6
6
|
const expoUpdates_1 = require("./ios/expoUpdates");
|
|
7
7
|
const expoUpdates_2 = require("./android/expoUpdates");
|
|
8
8
|
async function configureEASUpdateAsync({ job, workingDirectory, logger, inputs, appConfig, }) {
|
|
9
9
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
10
|
-
const runtimeVersion = (_c = (_a = inputs.
|
|
10
|
+
const runtimeVersion = (_c = (_a = inputs.runtimeVersion) !== null && _a !== void 0 ? _a : (_b = job.version) === null || _b === void 0 ? void 0 : _b.runtimeVersion) !== null && _c !== void 0 ? _c : (await (0, resolveRuntimeVersionAsync_1.resolveRuntimeVersionAsync)({
|
|
11
|
+
projectDir: workingDirectory,
|
|
12
|
+
exp: appConfig,
|
|
13
|
+
platform: job.platform,
|
|
14
|
+
logger,
|
|
15
|
+
}));
|
|
11
16
|
const jobOrInputChannel = (_d = inputs.channel) !== null && _d !== void 0 ? _d : (_e = job.updates) === null || _e === void 0 ? void 0 : _e.channel;
|
|
12
17
|
if (isEASUpdateConfigured(appConfig, logger)) {
|
|
13
18
|
const channel = jobOrInputChannel !== null && jobOrInputChannel !== void 0 ? jobOrInputChannel : (await getChannelAsync(job, workingDirectory));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../../src/steps/utils/expoUpdates.ts"],"names":[],"mappings":";;;AAAA,uDAAoD;
|
|
1
|
+
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../../src/steps/utils/expoUpdates.ts"],"names":[],"mappings":"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","sourcesContent":["import { Job, Platform } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { ExpoConfig } from '@expo/config';\n\nimport { resolveRuntimeVersionAsync } from '../../utils/resolveRuntimeVersionAsync';\n\nimport {\n iosGetNativelyDefinedChannelAsync,\n iosSetChannelNativelyAsync,\n iosSetRuntimeVersionNativelyAsync,\n} from './ios/expoUpdates';\nimport {\n androidGetNativelyDefinedChannelAsync,\n androidSetChannelNativelyAsync,\n androidSetRuntimeVersionNativelyAsync,\n} from './android/expoUpdates';\n\nexport async function configureEASUpdateAsync({\n job,\n workingDirectory,\n logger,\n inputs,\n appConfig,\n}: {\n job: Job;\n workingDirectory: string;\n logger: bunyan;\n inputs: {\n runtimeVersion?: string;\n channel?: string;\n };\n appConfig: ExpoConfig;\n}): Promise<void> {\n const runtimeVersion =\n inputs.runtimeVersion ??\n job.version?.runtimeVersion ??\n (await resolveRuntimeVersionAsync({\n projectDir: workingDirectory,\n exp: appConfig,\n platform: job.platform,\n logger,\n }));\n\n const jobOrInputChannel = inputs.channel ?? job.updates?.channel;\n\n if (isEASUpdateConfigured(appConfig, logger)) {\n const channel = jobOrInputChannel ?? (await getChannelAsync(job, workingDirectory));\n const isDevelopmentClient = job.developmentClient ?? false;\n if (channel) {\n await configureEASUpdate(job, logger, channel, workingDirectory);\n } else if (isDevelopmentClient) {\n // NO-OP: Development clients don't need to have a channel set\n } else {\n if (job.releaseChannel !== undefined) {\n logger.warn(\n `This build is configured with EAS Update however has a Classic Updates releaseChannel set instead of having an EAS Update channel.`\n );\n } else {\n const easUpdateUrl = appConfig.updates?.url ?? null;\n const jobProfile = job.buildProfile ?? null;\n logger.warn(\n `This build has an invalid EAS Update configuration: update.url is set to \"${easUpdateUrl}\" in app config, but a channel is not specified${\n jobProfile ? '' : ` for the current build profile \"${jobProfile}\" in eas.json`\n }.`\n );\n logger.warn(`- No channel will be set and EAS Update will be disabled for the build.`);\n logger.warn(\n `- Run \\`eas update:configure\\` to set your channel in eas.json. For more details, see https://docs.expo.dev/eas-update/getting-started/#configure-your-project`\n );\n }\n }\n } else {\n logger.info(`Expo Updates is not configured, skipping configuring Expo Updates.`);\n }\n\n if (runtimeVersion) {\n logger.info('Updating runtimeVersion in Expo.plist');\n await setRuntimeVersionNativelyAsync(job, runtimeVersion, workingDirectory);\n }\n}\n\nexport function isEASUpdateConfigured(appConfig: ExpoConfig, logger: bunyan): boolean {\n const rawUrl = appConfig.updates?.url;\n if (!rawUrl) {\n return false;\n }\n try {\n const url = new URL(rawUrl);\n return ['u.expo.dev', 'staging-u.expo.dev'].includes(url.hostname);\n } catch (err) {\n logger.error({ err }, `Cannot parse expo.updates.url = ${rawUrl} as URL`);\n logger.error(`Assuming EAS Update is not configured`);\n return false;\n }\n}\n\nasync function configureEASUpdate(\n job: Job,\n logger: bunyan,\n channel: string,\n workingDirectory: string\n): Promise<void> {\n const newUpdateRequestHeaders: Record<string, string> = {\n 'expo-channel-name': channel,\n };\n\n const configFile = job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n logger.info(\n `Setting the update request headers in '${configFile}' to '${JSON.stringify(\n newUpdateRequestHeaders\n )}'`\n );\n\n switch (job.platform) {\n case Platform.ANDROID: {\n await androidSetChannelNativelyAsync(channel, workingDirectory);\n return;\n }\n case Platform.IOS: {\n await iosSetChannelNativelyAsync(channel, workingDirectory);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nasync function getChannelAsync(job: Job, workingDirectory: string): Promise<string | null> {\n switch (job.platform) {\n case Platform.ANDROID: {\n return await androidGetNativelyDefinedChannelAsync(workingDirectory);\n }\n case Platform.IOS: {\n return await iosGetNativelyDefinedChannelAsync(workingDirectory);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nasync function setRuntimeVersionNativelyAsync(\n job: Job,\n runtimeVersion: string,\n workingDirectory: string\n): Promise<void> {\n switch (job.platform) {\n case Platform.ANDROID: {\n await androidSetRuntimeVersionNativelyAsync(runtimeVersion, workingDirectory);\n return;\n }\n case Platform.IOS: {\n await iosSetRuntimeVersionNativelyAsync(runtimeVersion, workingDirectory);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n"]}
|
|
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.shouldConfigureClassicUpdatesReleaseChannelAsFallback = exports.isEASUpdateConfigured = exports.getRuntimeVersionAsync = exports.getChannelAsync = exports.configureExpoUpdatesIfInstalledAsync = exports.configureEASExpoUpdatesAsync = exports.configureClassicExpoUpdatesAsync = exports.getNativelyDefinedClassicReleaseChannelAsync = exports.setClassicReleaseChannelNativelyAsync = exports.setChannelNativelyAsync = exports.setRuntimeVersionNativelyAsync = void 0;
|
|
7
7
|
const assert_1 = __importDefault(require("assert"));
|
|
8
8
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
9
|
-
const Updates_1 = require("@expo/config-plugins/build/utils/Updates");
|
|
10
9
|
const semver_1 = __importDefault(require("semver"));
|
|
11
10
|
const expoUpdates_1 = require("../android/expoUpdates");
|
|
12
11
|
const expoUpdates_2 = require("../ios/expoUpdates");
|
|
13
12
|
const getExpoUpdatesPackageVersionIfInstalledAsync_1 = __importDefault(require("./getExpoUpdatesPackageVersionIfInstalledAsync"));
|
|
13
|
+
const resolveRuntimeVersionAsync_1 = require("./resolveRuntimeVersionAsync");
|
|
14
14
|
async function setRuntimeVersionNativelyAsync(ctx, runtimeVersion) {
|
|
15
15
|
switch (ctx.job.platform) {
|
|
16
16
|
case eas_build_job_1.Platform.ANDROID: {
|
|
@@ -119,7 +119,12 @@ async function configureExpoUpdatesIfInstalledAsync(ctx) {
|
|
|
119
119
|
if (expoUpdatesVersion === null) {
|
|
120
120
|
return;
|
|
121
121
|
}
|
|
122
|
-
const appConfigRuntimeVersion = (_b = (_a = ctx.job.version) === null || _a === void 0 ? void 0 : _a.runtimeVersion) !== null && _b !== void 0 ? _b : (await (0,
|
|
122
|
+
const appConfigRuntimeVersion = (_b = (_a = ctx.job.version) === null || _a === void 0 ? void 0 : _a.runtimeVersion) !== null && _b !== void 0 ? _b : (await (0, resolveRuntimeVersionAsync_1.resolveRuntimeVersionAsync)({
|
|
123
|
+
projectDir: ctx.getReactNativeProjectDirectory(),
|
|
124
|
+
exp: ctx.appConfig,
|
|
125
|
+
platform: ctx.job.platform,
|
|
126
|
+
logger: ctx.logger,
|
|
127
|
+
}));
|
|
123
128
|
if (((_c = ctx.metadata) === null || _c === void 0 ? void 0 : _c.runtimeVersion) && ((_d = ctx.metadata) === null || _d === void 0 ? void 0 : _d.runtimeVersion) !== appConfigRuntimeVersion) {
|
|
124
129
|
ctx.markBuildPhaseHasWarnings();
|
|
125
130
|
ctx.logger.warn(`Runtime version from the app config evaluated on your local machine (${ctx.metadata.runtimeVersion}) does not match the one resolved here (${appConfigRuntimeVersion}).`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../src/utils/expoUpdates.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { Platform, Job } from '@expo/eas-build-job';\nimport { getRuntimeVersionNullableAsync } from '@expo/config-plugins/build/utils/Updates';\nimport semver from 'semver';\n\nimport {\n androidSetRuntimeVersionNativelyAsync,\n androidSetChannelNativelyAsync,\n androidSetClassicReleaseChannelNativelyAsync,\n androidGetNativelyDefinedClassicReleaseChannelAsync,\n androidGetNativelyDefinedRuntimeVersionAsync,\n androidGetNativelyDefinedChannelAsync,\n} from '../android/expoUpdates';\nimport {\n iosSetRuntimeVersionNativelyAsync,\n iosSetChannelNativelyAsync,\n iosSetClassicReleaseChannelNativelyAsync,\n iosGetNativelyDefinedClassicReleaseChannelAsync,\n iosGetNativelyDefinedRuntimeVersionAsync,\n iosGetNativelyDefinedChannelAsync,\n} from '../ios/expoUpdates';\nimport { BuildContext } from '../context';\n\nimport getExpoUpdatesPackageVersionIfInstalledAsync from './getExpoUpdatesPackageVersionIfInstalledAsync';\n\nexport async function setRuntimeVersionNativelyAsync(\n ctx: BuildContext<Job>,\n runtimeVersion: string\n): Promise<void> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetRuntimeVersionNativelyAsync(ctx, runtimeVersion);\n return;\n }\n case Platform.IOS: {\n await iosSetRuntimeVersionNativelyAsync(ctx, runtimeVersion);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\n/**\n * Used for when Expo Updates is pointed at an EAS server.\n */\nexport async function setChannelNativelyAsync(ctx: BuildContext<Job>): Promise<void> {\n assert(ctx.job.updates?.channel, 'updates.channel must be defined');\n const newUpdateRequestHeaders: Record<string, string> = {\n 'expo-channel-name': ctx.job.updates.channel,\n };\n\n const configFile = ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(\n `Setting the update request headers in '${configFile}' to '${JSON.stringify(\n newUpdateRequestHeaders\n )}'`\n );\n\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetChannelNativelyAsync(ctx);\n return;\n }\n case Platform.IOS: {\n await iosSetChannelNativelyAsync(ctx);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\n/**\n * Used for classic Expo Updates\n */\nexport async function setClassicReleaseChannelNativelyAsync(ctx: BuildContext<Job>): Promise<void> {\n assert(ctx.job.releaseChannel, 'releaseChannel must be defined');\n\n const configFile = ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(`Setting the release channel in '${configFile}' to '${ctx.job.releaseChannel}'`);\n\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetClassicReleaseChannelNativelyAsync(ctx);\n return;\n }\n case Platform.IOS: {\n await iosSetClassicReleaseChannelNativelyAsync(ctx);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\n/**\n * Used for classic Expo Updates\n */\nexport async function getNativelyDefinedClassicReleaseChannelAsync(\n ctx: BuildContext<Job>\n): Promise<string | null> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return androidGetNativelyDefinedClassicReleaseChannelAsync(ctx);\n }\n case Platform.IOS: {\n return iosGetNativelyDefinedClassicReleaseChannelAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nexport async function configureClassicExpoUpdatesAsync(ctx: BuildContext<Job>): Promise<void> {\n if (ctx.job.releaseChannel) {\n await setClassicReleaseChannelNativelyAsync(ctx);\n } else {\n /**\n * If releaseChannel is not defined:\n * 1. Try to infer it from the native value.\n * 2. If it is not set, fallback to 'default'.\n */\n const releaseChannel = await getNativelyDefinedClassicReleaseChannelAsync(ctx);\n if (releaseChannel) {\n ctx.logger.info(\n `Using the release channel pre-configured in native project (${releaseChannel})`\n );\n ctx.logger.warn('Please add the \"releaseChannel\" field to your build profile (eas.json)');\n } else {\n ctx.logger.info(`Using default release channel for 'expo-updates' (default)`);\n }\n }\n}\n\nexport async function configureEASExpoUpdatesAsync(ctx: BuildContext<Job>): Promise<void> {\n await setChannelNativelyAsync(ctx);\n}\n\nexport async function configureExpoUpdatesIfInstalledAsync(ctx: BuildContext<Job>): Promise<void> {\n const expoUpdatesVersion = await getExpoUpdatesPackageVersionIfInstalledAsync(\n ctx.getReactNativeProjectDirectory()\n );\n if (expoUpdatesVersion === null) {\n return;\n }\n\n const appConfigRuntimeVersion =\n ctx.job.version?.runtimeVersion ??\n (await getRuntimeVersionNullableAsync(\n ctx.getReactNativeProjectDirectory(),\n ctx.appConfig,\n ctx.job.platform\n ));\n if (ctx.metadata?.runtimeVersion && ctx.metadata?.runtimeVersion !== appConfigRuntimeVersion) {\n ctx.markBuildPhaseHasWarnings();\n ctx.logger.warn(\n `Runtime version from the app config evaluated on your local machine (${ctx.metadata.runtimeVersion}) does not match the one resolved here (${appConfigRuntimeVersion}).`\n );\n ctx.logger.warn(\n \"If you're using conditional app configs, e.g. depending on an environment variable, make sure to set the variable in eas.json or configure it with EAS Secret.\"\n );\n }\n\n if (isEASUpdateConfigured(ctx)) {\n if (ctx.job.updates?.channel !== undefined) {\n await configureEASExpoUpdatesAsync(ctx);\n } else {\n const channel = await getChannelAsync(ctx);\n const isDevelopmentClient = ctx.job.developmentClient ?? false;\n\n if (channel !== null) {\n const configFile =\n ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(`The channel name for EAS Update in ${configFile} is set to \"${channel}\"`);\n } else if (isDevelopmentClient) {\n // NO-OP: Development clients don't need to have a channel set\n } else {\n if (ctx.job.releaseChannel !== undefined) {\n ctx.logger.warn(\n `This build is configured with EAS Update however has a Classic Updates releaseChannel set instead of having an EAS Update channel.`\n );\n } else {\n const easUpdateUrl = ctx.appConfig.updates?.url ?? null;\n const jobProfile = ctx.job.buildProfile ?? null;\n ctx.logger.warn(\n `This build has an invalid EAS Update configuration: update.url is set to \"${easUpdateUrl}\" in app config, but a channel is not specified${\n jobProfile ? '' : ` for the current build profile \"${jobProfile}\" in eas.json`\n }.`\n );\n ctx.logger.warn(\n `- No channel will be set and EAS Update will be disabled for the build.`\n );\n ctx.logger.warn(\n `- Run \\`eas update:configure\\` to set your channel in eas.json. For more details, see https://docs.expo.dev/eas-update/getting-started/#configure-your-project`\n );\n }\n ctx.markBuildPhaseHasWarnings();\n }\n }\n } else if (shouldConfigureClassicUpdatesReleaseChannelAsFallback(expoUpdatesVersion)) {\n await configureClassicExpoUpdatesAsync(ctx);\n }\n\n if (ctx.job.version?.runtimeVersion) {\n ctx.logger.info('Updating runtimeVersion in Expo.plist');\n await setRuntimeVersionNativelyAsync(ctx, ctx.job.version.runtimeVersion);\n }\n}\n\nexport async function getChannelAsync(ctx: BuildContext<Job>): Promise<string | null> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return await androidGetNativelyDefinedChannelAsync(ctx);\n }\n case Platform.IOS: {\n return await iosGetNativelyDefinedChannelAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nexport async function getRuntimeVersionAsync(ctx: BuildContext<Job>): Promise<string | null> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return await androidGetNativelyDefinedRuntimeVersionAsync(ctx);\n }\n case Platform.IOS: {\n return await iosGetNativelyDefinedRuntimeVersionAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nexport function isEASUpdateConfigured(ctx: BuildContext<Job>): boolean {\n const rawUrl = ctx.appConfig.updates?.url;\n if (!rawUrl) {\n return false;\n }\n try {\n const url = new URL(rawUrl);\n return ['u.expo.dev', 'staging-u.expo.dev'].includes(url.hostname);\n } catch (err) {\n ctx.logger.error({ err }, `Cannot parse expo.updates.url = ${rawUrl} as URL`);\n ctx.logger.error(`Assuming EAS Update is not configured`);\n return false;\n }\n}\n\nexport function shouldConfigureClassicUpdatesReleaseChannelAsFallback(\n expoUpdatesPackageVersion: string\n): boolean {\n if (expoUpdatesPackageVersion.includes('canary')) {\n return false;\n }\n\n // Anything before SDK 50 should configure classic updates as a fallback. The first version\n // of the expo-updates package published for SDK 50 was 0.19.0\n return semver.lt(expoUpdatesPackageVersion, '0.19.0');\n}\n"]}
|
|
1
|
+
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../src/utils/expoUpdates.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { Platform, Job } from '@expo/eas-build-job';\nimport semver from 'semver';\n\nimport {\n androidSetRuntimeVersionNativelyAsync,\n androidSetChannelNativelyAsync,\n androidSetClassicReleaseChannelNativelyAsync,\n androidGetNativelyDefinedClassicReleaseChannelAsync,\n androidGetNativelyDefinedRuntimeVersionAsync,\n androidGetNativelyDefinedChannelAsync,\n} from '../android/expoUpdates';\nimport {\n iosSetRuntimeVersionNativelyAsync,\n iosSetChannelNativelyAsync,\n iosSetClassicReleaseChannelNativelyAsync,\n iosGetNativelyDefinedClassicReleaseChannelAsync,\n iosGetNativelyDefinedRuntimeVersionAsync,\n iosGetNativelyDefinedChannelAsync,\n} from '../ios/expoUpdates';\nimport { BuildContext } from '../context';\n\nimport getExpoUpdatesPackageVersionIfInstalledAsync from './getExpoUpdatesPackageVersionIfInstalledAsync';\nimport { resolveRuntimeVersionAsync } from './resolveRuntimeVersionAsync';\n\nexport async function setRuntimeVersionNativelyAsync(\n ctx: BuildContext<Job>,\n runtimeVersion: string\n): Promise<void> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetRuntimeVersionNativelyAsync(ctx, runtimeVersion);\n return;\n }\n case Platform.IOS: {\n await iosSetRuntimeVersionNativelyAsync(ctx, runtimeVersion);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\n/**\n * Used for when Expo Updates is pointed at an EAS server.\n */\nexport async function setChannelNativelyAsync(ctx: BuildContext<Job>): Promise<void> {\n assert(ctx.job.updates?.channel, 'updates.channel must be defined');\n const newUpdateRequestHeaders: Record<string, string> = {\n 'expo-channel-name': ctx.job.updates.channel,\n };\n\n const configFile = ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(\n `Setting the update request headers in '${configFile}' to '${JSON.stringify(\n newUpdateRequestHeaders\n )}'`\n );\n\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetChannelNativelyAsync(ctx);\n return;\n }\n case Platform.IOS: {\n await iosSetChannelNativelyAsync(ctx);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\n/**\n * Used for classic Expo Updates\n */\nexport async function setClassicReleaseChannelNativelyAsync(ctx: BuildContext<Job>): Promise<void> {\n assert(ctx.job.releaseChannel, 'releaseChannel must be defined');\n\n const configFile = ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(`Setting the release channel in '${configFile}' to '${ctx.job.releaseChannel}'`);\n\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetClassicReleaseChannelNativelyAsync(ctx);\n return;\n }\n case Platform.IOS: {\n await iosSetClassicReleaseChannelNativelyAsync(ctx);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\n/**\n * Used for classic Expo Updates\n */\nexport async function getNativelyDefinedClassicReleaseChannelAsync(\n ctx: BuildContext<Job>\n): Promise<string | null> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return androidGetNativelyDefinedClassicReleaseChannelAsync(ctx);\n }\n case Platform.IOS: {\n return iosGetNativelyDefinedClassicReleaseChannelAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nexport async function configureClassicExpoUpdatesAsync(ctx: BuildContext<Job>): Promise<void> {\n if (ctx.job.releaseChannel) {\n await setClassicReleaseChannelNativelyAsync(ctx);\n } else {\n /**\n * If releaseChannel is not defined:\n * 1. Try to infer it from the native value.\n * 2. If it is not set, fallback to 'default'.\n */\n const releaseChannel = await getNativelyDefinedClassicReleaseChannelAsync(ctx);\n if (releaseChannel) {\n ctx.logger.info(\n `Using the release channel pre-configured in native project (${releaseChannel})`\n );\n ctx.logger.warn('Please add the \"releaseChannel\" field to your build profile (eas.json)');\n } else {\n ctx.logger.info(`Using default release channel for 'expo-updates' (default)`);\n }\n }\n}\n\nexport async function configureEASExpoUpdatesAsync(ctx: BuildContext<Job>): Promise<void> {\n await setChannelNativelyAsync(ctx);\n}\n\nexport async function configureExpoUpdatesIfInstalledAsync(ctx: BuildContext<Job>): Promise<void> {\n const expoUpdatesVersion = await getExpoUpdatesPackageVersionIfInstalledAsync(\n ctx.getReactNativeProjectDirectory()\n );\n if (expoUpdatesVersion === null) {\n return;\n }\n\n const appConfigRuntimeVersion =\n ctx.job.version?.runtimeVersion ??\n (await resolveRuntimeVersionAsync({\n projectDir: ctx.getReactNativeProjectDirectory(),\n exp: ctx.appConfig,\n platform: ctx.job.platform,\n logger: ctx.logger,\n }));\n if (ctx.metadata?.runtimeVersion && ctx.metadata?.runtimeVersion !== appConfigRuntimeVersion) {\n ctx.markBuildPhaseHasWarnings();\n ctx.logger.warn(\n `Runtime version from the app config evaluated on your local machine (${ctx.metadata.runtimeVersion}) does not match the one resolved here (${appConfigRuntimeVersion}).`\n );\n ctx.logger.warn(\n \"If you're using conditional app configs, e.g. depending on an environment variable, make sure to set the variable in eas.json or configure it with EAS Secret.\"\n );\n }\n\n if (isEASUpdateConfigured(ctx)) {\n if (ctx.job.updates?.channel !== undefined) {\n await configureEASExpoUpdatesAsync(ctx);\n } else {\n const channel = await getChannelAsync(ctx);\n const isDevelopmentClient = ctx.job.developmentClient ?? false;\n\n if (channel !== null) {\n const configFile =\n ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(`The channel name for EAS Update in ${configFile} is set to \"${channel}\"`);\n } else if (isDevelopmentClient) {\n // NO-OP: Development clients don't need to have a channel set\n } else {\n if (ctx.job.releaseChannel !== undefined) {\n ctx.logger.warn(\n `This build is configured with EAS Update however has a Classic Updates releaseChannel set instead of having an EAS Update channel.`\n );\n } else {\n const easUpdateUrl = ctx.appConfig.updates?.url ?? null;\n const jobProfile = ctx.job.buildProfile ?? null;\n ctx.logger.warn(\n `This build has an invalid EAS Update configuration: update.url is set to \"${easUpdateUrl}\" in app config, but a channel is not specified${\n jobProfile ? '' : ` for the current build profile \"${jobProfile}\" in eas.json`\n }.`\n );\n ctx.logger.warn(\n `- No channel will be set and EAS Update will be disabled for the build.`\n );\n ctx.logger.warn(\n `- Run \\`eas update:configure\\` to set your channel in eas.json. For more details, see https://docs.expo.dev/eas-update/getting-started/#configure-your-project`\n );\n }\n ctx.markBuildPhaseHasWarnings();\n }\n }\n } else if (shouldConfigureClassicUpdatesReleaseChannelAsFallback(expoUpdatesVersion)) {\n await configureClassicExpoUpdatesAsync(ctx);\n }\n\n if (ctx.job.version?.runtimeVersion) {\n ctx.logger.info('Updating runtimeVersion in Expo.plist');\n await setRuntimeVersionNativelyAsync(ctx, ctx.job.version.runtimeVersion);\n }\n}\n\nexport async function getChannelAsync(ctx: BuildContext<Job>): Promise<string | null> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return await androidGetNativelyDefinedChannelAsync(ctx);\n }\n case Platform.IOS: {\n return await iosGetNativelyDefinedChannelAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nexport async function getRuntimeVersionAsync(ctx: BuildContext<Job>): Promise<string | null> {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return await androidGetNativelyDefinedRuntimeVersionAsync(ctx);\n }\n case Platform.IOS: {\n return await iosGetNativelyDefinedRuntimeVersionAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n}\n\nexport function isEASUpdateConfigured(ctx: BuildContext<Job>): boolean {\n const rawUrl = ctx.appConfig.updates?.url;\n if (!rawUrl) {\n return false;\n }\n try {\n const url = new URL(rawUrl);\n return ['u.expo.dev', 'staging-u.expo.dev'].includes(url.hostname);\n } catch (err) {\n ctx.logger.error({ err }, `Cannot parse expo.updates.url = ${rawUrl} as URL`);\n ctx.logger.error(`Assuming EAS Update is not configured`);\n return false;\n }\n}\n\nexport function shouldConfigureClassicUpdatesReleaseChannelAsFallback(\n expoUpdatesPackageVersion: string\n): boolean {\n if (expoUpdatesPackageVersion.includes('canary')) {\n return false;\n }\n\n // Anything before SDK 50 should configure classic updates as a fallback. The first version\n // of the expo-updates package published for SDK 50 was 0.19.0\n return semver.lt(expoUpdatesPackageVersion, '0.19.0');\n}\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.expoUpdatesCommandAsync = exports.ExpoUpdatesCLIInvalidCommandError = exports.ExpoUpdatesCLIModuleNotFoundError = void 0;
|
|
30
|
+
const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
31
|
+
const resolve_from_1 = __importStar(require("resolve-from"));
|
|
32
|
+
class ExpoUpdatesCLIModuleNotFoundError extends Error {
|
|
33
|
+
}
|
|
34
|
+
exports.ExpoUpdatesCLIModuleNotFoundError = ExpoUpdatesCLIModuleNotFoundError;
|
|
35
|
+
class ExpoUpdatesCLIInvalidCommandError extends Error {
|
|
36
|
+
}
|
|
37
|
+
exports.ExpoUpdatesCLIInvalidCommandError = ExpoUpdatesCLIInvalidCommandError;
|
|
38
|
+
async function expoUpdatesCommandAsync(projectDir, args) {
|
|
39
|
+
var _a;
|
|
40
|
+
let expoUpdatesCli;
|
|
41
|
+
try {
|
|
42
|
+
expoUpdatesCli =
|
|
43
|
+
(_a = (0, resolve_from_1.silent)(projectDir, 'expo-updates/bin/cli')) !== null && _a !== void 0 ? _a : (0, resolve_from_1.default)(projectDir, 'expo-updates/bin/cli.js');
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
if (e.code === 'MODULE_NOT_FOUND') {
|
|
47
|
+
throw new ExpoUpdatesCLIModuleNotFoundError(`The \`expo-updates\` package was not found. Follow the installation directions at https://docs.expo.dev/bare/installing-expo-modules/`);
|
|
48
|
+
}
|
|
49
|
+
throw e;
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
return (await (0, spawn_async_1.default)(expoUpdatesCli, args)).stdout;
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
if (e.stderr) {
|
|
56
|
+
if (e.stderr.includes('Invalid command')) {
|
|
57
|
+
throw new ExpoUpdatesCLIInvalidCommandError(`The command specified by ${args} was not valid in the \`expo-updates\` CLI.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
throw e;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.expoUpdatesCommandAsync = expoUpdatesCommandAsync;
|
|
64
|
+
//# sourceMappingURL=expoUpdatesCli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expoUpdatesCli.js","sourceRoot":"","sources":["../../src/utils/expoUpdatesCli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAA2C;AAC3C,6DAAwE;AAExE,MAAa,iCAAkC,SAAQ,KAAK;CAAG;AAA/D,8EAA+D;AAC/D,MAAa,iCAAkC,SAAQ,KAAK;CAAG;AAA/D,8EAA+D;AAExD,KAAK,UAAU,uBAAuB,CAAC,UAAkB,EAAE,IAAc;;IAC9E,IAAI,cAAc,CAAC;IACnB,IAAI,CAAC;QACH,cAAc;YACZ,MAAA,IAAA,qBAAiB,EAAC,UAAU,EAAE,sBAAsB,CAAC,mCACrD,IAAA,sBAAW,EAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAClC,MAAM,IAAI,iCAAiC,CACzC,uIAAuI,CACxI,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAA,qBAAU,EAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,IAAK,CAAC,CAAC,MAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,iCAAiC,CACzC,4BAA4B,IAAI,6CAA6C,CAC9E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AA3BD,0DA2BC","sourcesContent":["import spawnAsync from '@expo/spawn-async';\nimport resolveFrom, { silent as silentResolveFrom } from 'resolve-from';\n\nexport class ExpoUpdatesCLIModuleNotFoundError extends Error {}\nexport class ExpoUpdatesCLIInvalidCommandError extends Error {}\n\nexport async function expoUpdatesCommandAsync(projectDir: string, args: string[]): Promise<string> {\n let expoUpdatesCli;\n try {\n expoUpdatesCli =\n silentResolveFrom(projectDir, 'expo-updates/bin/cli') ??\n resolveFrom(projectDir, 'expo-updates/bin/cli.js');\n } catch (e: any) {\n if (e.code === 'MODULE_NOT_FOUND') {\n throw new ExpoUpdatesCLIModuleNotFoundError(\n `The \\`expo-updates\\` package was not found. Follow the installation directions at https://docs.expo.dev/bare/installing-expo-modules/`\n );\n }\n throw e;\n }\n\n try {\n return (await spawnAsync(expoUpdatesCli, args)).stdout;\n } catch (e: any) {\n if (e.stderr) {\n if ((e.stderr as string).includes('Invalid command')) {\n throw new ExpoUpdatesCLIInvalidCommandError(\n `The command specified by ${args} was not valid in the \\`expo-updates\\` CLI.`\n );\n }\n }\n throw e;\n }\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="bunyan" />
|
|
2
|
+
import { ExpoConfig } from '@expo/config';
|
|
3
|
+
import { bunyan } from '@expo/logger';
|
|
4
|
+
export declare function resolveRuntimeVersionAsync({ exp, platform, projectDir, logger, }: {
|
|
5
|
+
exp: ExpoConfig;
|
|
6
|
+
platform: 'ios' | 'android';
|
|
7
|
+
projectDir: string;
|
|
8
|
+
logger: bunyan;
|
|
9
|
+
}): Promise<string | null>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveRuntimeVersionAsync = void 0;
|
|
4
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
|
5
|
+
const expoUpdatesCli_1 = require("./expoUpdatesCli");
|
|
6
|
+
async function resolveRuntimeVersionAsync({ exp, platform, projectDir, logger, }) {
|
|
7
|
+
var _a;
|
|
8
|
+
try {
|
|
9
|
+
const resolvedRuntimeVersionJSONResult = await (0, expoUpdatesCli_1.expoUpdatesCommandAsync)(projectDir, [
|
|
10
|
+
'runtimeversion:resolve',
|
|
11
|
+
'--platform',
|
|
12
|
+
platform,
|
|
13
|
+
]);
|
|
14
|
+
const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);
|
|
15
|
+
if (runtimeVersionResult.fingerprintSources) {
|
|
16
|
+
logger.debug(`Resolved fingeprint runtime version for platform "${platform}". Sources:`);
|
|
17
|
+
logger.debug(runtimeVersionResult.fingerprintSources);
|
|
18
|
+
}
|
|
19
|
+
return (_a = runtimeVersionResult.runtimeVersion) !== null && _a !== void 0 ? _a : null;
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
// if expo-updates is not installed, there's no need for a runtime version in the build
|
|
23
|
+
if (e instanceof expoUpdatesCli_1.ExpoUpdatesCLIModuleNotFoundError) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
else if (e instanceof expoUpdatesCli_1.ExpoUpdatesCLIInvalidCommandError) {
|
|
27
|
+
// fall back to the previous behavior (using the @expo/config-plugins eas-cli dependency rather
|
|
28
|
+
// than the versioned @expo/config-plugins dependency in the project)
|
|
29
|
+
return await config_plugins_1.Updates.getRuntimeVersionNullableAsync(projectDir, exp, platform);
|
|
30
|
+
}
|
|
31
|
+
throw e;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.resolveRuntimeVersionAsync = resolveRuntimeVersionAsync;
|
|
35
|
+
//# sourceMappingURL=resolveRuntimeVersionAsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveRuntimeVersionAsync.js","sourceRoot":"","sources":["../../src/utils/resolveRuntimeVersionAsync.ts"],"names":[],"mappings":";;;AACA,yDAA+C;AAG/C,qDAI0B;AAEnB,KAAK,UAAU,0BAA0B,CAAC,EAC/C,GAAG,EACH,QAAQ,EACR,UAAU,EACV,MAAM,GAMP;;IACC,IAAI,CAAC;QACH,MAAM,gCAAgC,GAAG,MAAM,IAAA,wCAAuB,EAAC,UAAU,EAAE;YACjF,wBAAwB;YACxB,YAAY;YACZ,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC1E,IAAI,oBAAoB,CAAC,kBAAkB,EAAE,CAAC;YAC5C,MAAM,CAAC,KAAK,CAAC,qDAAqD,QAAQ,aAAa,CAAC,CAAC;YACzF,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAA,oBAAoB,CAAC,cAAc,mCAAI,IAAI,CAAC;IACrD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,uFAAuF;QACvF,IAAI,CAAC,YAAY,kDAAiC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,CAAC,YAAY,kDAAiC,EAAE,CAAC;YAC1D,+FAA+F;YAC/F,qEAAqE;YACrE,OAAO,MAAM,wBAAO,CAAC,8BAA8B,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAnCD,gEAmCC","sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport { Updates } from '@expo/config-plugins';\nimport { bunyan } from '@expo/logger';\n\nimport {\n ExpoUpdatesCLIInvalidCommandError,\n ExpoUpdatesCLIModuleNotFoundError,\n expoUpdatesCommandAsync,\n} from './expoUpdatesCli';\n\nexport async function resolveRuntimeVersionAsync({\n exp,\n platform,\n projectDir,\n logger,\n}: {\n exp: ExpoConfig;\n platform: 'ios' | 'android';\n projectDir: string;\n logger: bunyan;\n}): Promise<string | null> {\n try {\n const resolvedRuntimeVersionJSONResult = await expoUpdatesCommandAsync(projectDir, [\n 'runtimeversion:resolve',\n '--platform',\n platform,\n ]);\n const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);\n if (runtimeVersionResult.fingerprintSources) {\n logger.debug(`Resolved fingeprint runtime version for platform \"${platform}\". Sources:`);\n logger.debug(runtimeVersionResult.fingerprintSources);\n }\n return runtimeVersionResult.runtimeVersion ?? null;\n } catch (e: any) {\n // if expo-updates is not installed, there's no need for a runtime version in the build\n if (e instanceof ExpoUpdatesCLIModuleNotFoundError) {\n return null;\n } else if (e instanceof ExpoUpdatesCLIInvalidCommandError) {\n // fall back to the previous behavior (using the @expo/config-plugins eas-cli dependency rather\n // than the versioned @expo/config-plugins dependency in the project)\n return await Updates.getRuntimeVersionNullableAsync(projectDir, exp, platform);\n }\n\n throw e;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/build-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.82",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"@expo/logger": "1.0.57",
|
|
30
30
|
"@expo/package-manager": "1.1.2",
|
|
31
31
|
"@expo/plist": "^0.0.20",
|
|
32
|
-
"@expo/steps": "1.0.
|
|
32
|
+
"@expo/steps": "1.0.81",
|
|
33
33
|
"@expo/template-file": "1.0.57",
|
|
34
34
|
"@expo/turtle-spawn": "1.0.57",
|
|
35
35
|
"@expo/xcpretty": "^4.3.0",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"node": "20.11.0",
|
|
70
70
|
"yarn": "1.22.21"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "608c1aec5e153ad3d33881ff6a916051826f4676"
|
|
73
73
|
}
|