eas-cli 10.2.3 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +63 -65
  2. package/build/branch/actions/SelectBranch.d.ts +1 -1
  3. package/build/branch/actions/SelectBranch.js +2 -2
  4. package/build/branch/queries.js +3 -1
  5. package/build/build/android/build.js +1 -1
  6. package/build/build/android/version.js +1 -1
  7. package/build/build/build.js +21 -10
  8. package/build/build/context.d.ts +1 -0
  9. package/build/build/createContext.d.ts +2 -1
  10. package/build/build/createContext.js +6 -3
  11. package/build/build/evaluateConfigWithEnvVarsAsync.d.ts +16 -0
  12. package/build/build/evaluateConfigWithEnvVarsAsync.js +44 -0
  13. package/build/build/ios/build.js +4 -4
  14. package/build/build/local.d.ts +1 -1
  15. package/build/build/local.js +3 -2
  16. package/build/build/queries.js +3 -1
  17. package/build/build/runBuildAndSubmit.d.ts +2 -0
  18. package/build/build/runBuildAndSubmit.js +14 -7
  19. package/build/build/utils/printBuildInfo.js +6 -2
  20. package/build/build/validate.js +2 -2
  21. package/build/channel/actions/SelectChannel.d.ts +1 -1
  22. package/build/channel/actions/SelectChannel.js +2 -2
  23. package/build/channel/queries.js +6 -2
  24. package/build/commandUtils/EasCommand.js +2 -2
  25. package/build/commandUtils/context/contextUtils/createGraphqlClient.js +1 -1
  26. package/build/commandUtils/flags.d.ts +16 -0
  27. package/build/commandUtils/flags.js +61 -1
  28. package/build/commandUtils/gating/FeatureGating.js +6 -2
  29. package/build/commands/analytics.js +1 -1
  30. package/build/commands/build/index.d.ts +4 -1
  31. package/build/commands/build/index.js +3 -0
  32. package/build/commands/build/resign.d.ts +4 -1
  33. package/build/commands/build/resign.js +12 -3
  34. package/build/commands/build/version/get.d.ts +1 -0
  35. package/build/commands/build/version/get.js +9 -2
  36. package/build/commands/build/version/set.d.ts +1 -0
  37. package/build/commands/build/version/set.js +11 -1
  38. package/build/commands/build/version/sync.d.ts +1 -0
  39. package/build/commands/build/version/sync.js +13 -5
  40. package/build/commands/config.d.ts +2 -0
  41. package/build/commands/config.js +10 -3
  42. package/build/commands/device/delete.js +1 -1
  43. package/build/commands/device/rename.js +1 -1
  44. package/build/commands/env/create.d.ts +23 -0
  45. package/build/commands/env/create.js +169 -0
  46. package/build/commands/env/delete.d.ts +18 -0
  47. package/build/commands/env/delete.js +95 -0
  48. package/build/commands/env/get.d.ts +19 -0
  49. package/build/commands/env/get.js +100 -0
  50. package/build/commands/env/link.d.ts +15 -0
  51. package/build/commands/env/link.js +59 -0
  52. package/build/commands/env/list.d.ts +18 -0
  53. package/build/commands/env/list.js +82 -0
  54. package/build/commands/env/pull.d.ts +15 -0
  55. package/build/commands/env/pull.js +64 -0
  56. package/build/commands/env/push.d.ts +17 -0
  57. package/build/commands/env/push.js +148 -0
  58. package/build/commands/env/unlink.d.ts +15 -0
  59. package/build/commands/env/unlink.js +65 -0
  60. package/build/commands/env/update.d.ts +21 -0
  61. package/build/commands/env/update.js +135 -0
  62. package/build/commands/metadata/lint.js +4 -2
  63. package/build/commands/project/onboarding.js +1 -1
  64. package/build/commands/update/edit.d.ts +19 -0
  65. package/build/commands/update/edit.js +102 -0
  66. package/build/commands/update/index.d.ts +1 -2
  67. package/build/commands/update/index.js +53 -25
  68. package/build/commands/update/list.js +6 -3
  69. package/build/commands/update/roll-back-to-embedded.js +1 -1
  70. package/build/credentials/android/AndroidCredentialsProvider.d.ts +2 -2
  71. package/build/credentials/android/actions/AssignFcm.d.ts +1 -1
  72. package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForFcmV1.d.ts +1 -1
  73. package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForSubmissions.d.ts +1 -1
  74. package/build/credentials/android/actions/CreateFcm.d.ts +1 -1
  75. package/build/credentials/android/actions/CreateGoogleServiceAccountKey.d.ts +1 -1
  76. package/build/credentials/android/actions/CreateKeystore.d.ts +1 -1
  77. package/build/credentials/android/actions/DownloadKeystore.d.ts +2 -2
  78. package/build/credentials/android/actions/RemoveFcm.d.ts +1 -1
  79. package/build/credentials/android/actions/RemoveGoogleServiceAccountKey.d.ts +2 -2
  80. package/build/credentials/android/actions/RemoveKeystore.d.ts +1 -1
  81. package/build/credentials/android/actions/SetUpBuildCredentials.d.ts +1 -1
  82. package/build/credentials/android/actions/SetUpBuildCredentialsFromCredentialsJson.d.ts +1 -1
  83. package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForFcmV1.d.ts +1 -1
  84. package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForSubmissions.d.ts +1 -1
  85. package/build/credentials/android/actions/UseExistingGoogleServiceAccountKey.d.ts +1 -1
  86. package/build/credentials/android/api/GraphqlClient.js +3 -3
  87. package/build/credentials/context.d.ts +2 -2
  88. package/build/credentials/context.js +1 -1
  89. package/build/credentials/ios/IosCredentialsProvider.d.ts +2 -2
  90. package/build/credentials/ios/IosCredentialsProvider.js +1 -1
  91. package/build/credentials/ios/actions/AscApiKeyUtils.js +1 -1
  92. package/build/credentials/ios/actions/AssignAscApiKey.d.ts +1 -1
  93. package/build/credentials/ios/actions/AssignPushKey.d.ts +1 -1
  94. package/build/credentials/ios/actions/ConfigureProvisioningProfile.d.ts +4 -4
  95. package/build/credentials/ios/actions/CreateAscApiKey.d.ts +1 -1
  96. package/build/credentials/ios/actions/CreateDistributionCertificate.d.ts +1 -1
  97. package/build/credentials/ios/actions/CreateProvisioningProfile.d.ts +3 -3
  98. package/build/credentials/ios/actions/CreatePushKey.d.ts +1 -1
  99. package/build/credentials/ios/actions/DistributionCertificateUtils.js +5 -5
  100. package/build/credentials/ios/actions/ProvisioningProfileUtils.js +1 -1
  101. package/build/credentials/ios/actions/PushKeyUtils.js +2 -2
  102. package/build/credentials/ios/actions/RemoveAscApiKey.d.ts +2 -2
  103. package/build/credentials/ios/actions/RemoveDistributionCertificate.d.ts +3 -3
  104. package/build/credentials/ios/actions/RemoveProvisioningProfile.d.ts +2 -2
  105. package/build/credentials/ios/actions/RemovePushKey.d.ts +2 -2
  106. package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.d.ts +1 -1
  107. package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.js +1 -1
  108. package/build/credentials/ios/actions/SetUpAscApiKey.d.ts +2 -2
  109. package/build/credentials/ios/actions/SetUpBuildCredentials.d.ts +1 -1
  110. package/build/credentials/ios/actions/SetUpBuildCredentialsFromCredentialsJson.d.ts +3 -3
  111. package/build/credentials/ios/actions/SetUpDistributionCertificate.d.ts +2 -2
  112. package/build/credentials/ios/actions/SetUpDistributionCertificate.js +1 -1
  113. package/build/credentials/ios/actions/SetUpInternalProvisioningProfile.d.ts +1 -1
  114. package/build/credentials/ios/actions/SetUpProvisioningProfile.d.ts +3 -3
  115. package/build/credentials/ios/actions/SetUpProvisioningProfile.js +1 -1
  116. package/build/credentials/ios/actions/SetUpPushKey.d.ts +1 -1
  117. package/build/credentials/ios/actions/SetUpTargetBuildCredentials.d.ts +1 -1
  118. package/build/credentials/ios/actions/SetUpTargetBuildCredentialsFromCredentialsJson.d.ts +3 -3
  119. package/build/credentials/ios/actions/UpdateCredentialsJson.d.ts +3 -3
  120. package/build/credentials/ios/api/GraphqlClient.js +4 -4
  121. package/build/credentials/ios/appstore/AppStoreApi.js +4 -4
  122. package/build/credentials/ios/appstore/authenticate.js +1 -1
  123. package/build/credentials/ios/appstore/bundleId.js +1 -1
  124. package/build/credentials/ios/appstore/bundleIdCapabilities.js +1 -1
  125. package/build/credentials/ios/appstore/ensureAppExists.js +1 -1
  126. package/build/credentials/ios/appstore/keychain.js +8 -6
  127. package/build/credentials/ios/appstore/provisioningProfile.js +1 -1
  128. package/build/credentials/ios/appstore/pushKey.js +1 -1
  129. package/build/credentials/ios/appstore/resolveCredentials.js +2 -2
  130. package/build/credentials/ios/credentials.js +1 -1
  131. package/build/credentials/ios/utils/convertHTMLToASCII.js +1 -1
  132. package/build/credentials/ios/validators/validateProvisioningProfile.js +2 -4
  133. package/build/credentials/manager/CheckBuildProfileFlagAgainstEasJson.d.ts +3 -3
  134. package/build/credentials/manager/CreateAndroidBuildCredentials.d.ts +1 -1
  135. package/build/credentials/manager/ManageAndroid.js +2 -1
  136. package/build/credentials/manager/ManageIos.js +3 -2
  137. package/build/credentials/manager/SelectAndroidBuildCredentials.d.ts +2 -2
  138. package/build/credentials/manager/SelectBuildProfileFromEasJson.d.ts +2 -2
  139. package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.d.ts +1 -1
  140. package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.js +1 -1
  141. package/build/credentials/manager/SelectPlatform.js +3 -2
  142. package/build/credentials/manager/SetDefaultAndroidKeystore.d.ts +1 -1
  143. package/build/credentials/manager/SetUpAndroidBuildCredentials.d.ts +1 -1
  144. package/build/credentials/manager/SetUpBuildCredentialsCommandAction.js +3 -2
  145. package/build/credentials/manager/SetUpIosBuildCredentials.d.ts +1 -1
  146. package/build/devices/actions/create/action.d.ts +4 -4
  147. package/build/devices/actions/create/registrationUrlMethod.js +3 -1
  148. package/build/devices/manager.d.ts +4 -4
  149. package/build/devices/queries.js +3 -1
  150. package/build/easMultiselect.js +6 -2
  151. package/build/graphql/generated.d.ts +874 -62
  152. package/build/graphql/generated.js +92 -2
  153. package/build/graphql/mutations/EnvironmentVariableMutation.d.ts +39 -0
  154. package/build/graphql/mutations/EnvironmentVariableMutation.js +133 -0
  155. package/build/graphql/mutations/PublishMutation.d.ts +1 -0
  156. package/build/graphql/mutations/PublishMutation.js +16 -0
  157. package/build/graphql/queries/BranchQuery.d.ts +7 -1
  158. package/build/graphql/queries/BranchQuery.js +42 -0
  159. package/build/graphql/queries/EnvironmentVariablesQuery.d.ts +22 -0
  160. package/build/graphql/queries/EnvironmentVariablesQuery.js +106 -0
  161. package/build/graphql/types/EnvironmentVariable.d.ts +1 -0
  162. package/build/graphql/types/EnvironmentVariable.js +16 -0
  163. package/build/graphql/types/Update.js +4 -0
  164. package/build/metadata/apple/config/reader.js +1 -1
  165. package/build/metadata/apple/tasks/age-rating.js +1 -1
  166. package/build/metadata/apple/tasks/app-review-detail.js +2 -1
  167. package/build/metadata/apple/tasks/app-version.d.ts +1 -1
  168. package/build/metadata/config/resolve.js +2 -1
  169. package/build/metadata/errors.js +2 -1
  170. package/build/metadata/utils/log.js +1 -1
  171. package/build/metadata/utils/retry.js +1 -1
  172. package/build/onboarding/runCommand.js +1 -1
  173. package/build/ora.js +12 -4
  174. package/build/project/android/applicationId.js +1 -1
  175. package/build/project/applicationIdentifier.d.ts +3 -2
  176. package/build/project/applicationIdentifier.js +2 -2
  177. package/build/project/expoConfig.js +2 -2
  178. package/build/project/ios/entitlements.js +1 -1
  179. package/build/project/publish.d.ts +31 -18
  180. package/build/project/publish.js +61 -37
  181. package/build/project/resolveRuntimeVersionAsync.d.ts +4 -1
  182. package/build/project/resolveRuntimeVersionAsync.js +9 -3
  183. package/build/rollout/actions/CreateRollout.d.ts +2 -2
  184. package/build/rollout/actions/EditRollout.d.ts +2 -2
  185. package/build/rollout/actions/EndRollout.d.ts +2 -2
  186. package/build/rollout/actions/ManageRollout.d.ts +2 -2
  187. package/build/rollout/actions/NonInteractiveRollout.d.ts +1 -1
  188. package/build/rollout/actions/RolloutMainMenu.d.ts +1 -1
  189. package/build/rollout/actions/SelectRuntime.d.ts +3 -3
  190. package/build/run/android/adb.js +1 -1
  191. package/build/run/ios/simctl.js +1 -1
  192. package/build/run/ios/systemRequirements.js +1 -1
  193. package/build/submit/ArchiveSource.js +15 -15
  194. package/build/submit/BaseSubmitter.js +2 -2
  195. package/build/submit/submit.js +1 -1
  196. package/build/update/android/UpdatesModule.js +1 -1
  197. package/build/update/configure.d.ts +1 -1
  198. package/build/update/queries.js +8 -3
  199. package/build/update/republish.js +2 -1
  200. package/build/update/utils.d.ts +1 -0
  201. package/build/update/utils.js +7 -0
  202. package/build/user/expoSsoLauncher.js +1 -1
  203. package/build/utils/download.js +2 -2
  204. package/build/utils/filterAsync.js +1 -1
  205. package/build/utils/formatVariable.d.ts +2 -0
  206. package/build/utils/formatVariable.js +16 -0
  207. package/build/utils/image.js +2 -2
  208. package/build/utils/progress.js +1 -1
  209. package/build/utils/promise.js +1 -1
  210. package/build/utils/prompts.d.ts +9 -0
  211. package/build/utils/prompts.js +68 -0
  212. package/build/utils/queries.js +2 -2
  213. package/build/vcs/clients/git.d.ts +1 -1
  214. package/build/vcs/local.d.ts +1 -1
  215. package/oclif.manifest.json +627 -22
  216. package/package.json +15 -15
@@ -65,7 +65,8 @@ exports.logMetadataValidationError = logMetadataValidationError;
65
65
  */
66
66
  function handleMetadataError(error) {
67
67
  if (error instanceof MetadataValidationError) {
68
- return logMetadataValidationError(error);
68
+ logMetadataValidationError(error);
69
+ return;
69
70
  }
70
71
  if (error instanceof MetadataDownloadError || error instanceof MetadataUploadError) {
71
72
  log_1.default.newLine();
@@ -7,7 +7,7 @@ const ora_1 = require("../../ora");
7
7
  */
8
8
  async function logAsync(action, { hidden, ...message }) {
9
9
  if (hidden) {
10
- return action();
10
+ return await action();
11
11
  }
12
12
  const spinner = (0, ora_1.ora)(message.pending).start();
13
13
  try {
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.retryIfNullAsync = exports.waitAsync = void 0;
4
4
  async function waitAsync(duration) {
5
- return new Promise(resolve => setTimeout(resolve, duration));
5
+ await new Promise(resolve => setTimeout(resolve, duration));
6
6
  }
7
7
  exports.waitAsync = waitAsync;
8
8
  async function retryIfNullAsync(method, options = {}) {
@@ -31,7 +31,7 @@ async function runCommandAsync({ cwd, args, command, shouldShowStderrLine, shoul
31
31
  continue;
32
32
  }
33
33
  const log = `${chalk_1.default.gray(`[${command}]`)} ${line}`;
34
- if (shouldPrintStderrLineAsStdout && shouldPrintStderrLineAsStdout(line)) {
34
+ if (shouldPrintStderrLineAsStdout?.(line)) {
35
35
  log_1.default.log(log);
36
36
  }
37
37
  else {
package/build/ora.js CHANGED
@@ -41,13 +41,21 @@ function ora(options) {
41
41
  };
42
42
  const wrapNativeLogs = () => {
43
43
  // eslint-disable-next-line no-console
44
- console.log = (...args) => logWrap(logReal, args);
44
+ console.log = (...args) => {
45
+ logWrap(logReal, args);
46
+ };
45
47
  // eslint-disable-next-line no-console
46
- console.info = (...args) => logWrap(infoReal, args);
48
+ console.info = (...args) => {
49
+ logWrap(infoReal, args);
50
+ };
47
51
  // eslint-disable-next-line no-console
48
- console.warn = (...args) => logWrap(warnReal, args);
52
+ console.warn = (...args) => {
53
+ logWrap(warnReal, args);
54
+ };
49
55
  // eslint-disable-next-line no-console
50
- console.error = (...args) => logWrap(errorReal, args);
56
+ console.error = (...args) => {
57
+ logWrap(errorReal, args);
58
+ };
51
59
  };
52
60
  const resetNativeLogs = () => {
53
61
  // eslint-disable-next-line no-console
@@ -75,7 +75,7 @@ async function getApplicationIdAsync(projectDir, exp, vcsClient, gradleContext)
75
75
  const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.ANDROID, vcsClient);
76
76
  if (workflow === eas_build_job_1.Workflow.GENERIC) {
77
77
  warnIfAndroidPackageDefinedInAppConfigForBareWorkflowProject(projectDir, exp);
78
- return getApplicationIdFromBareAsync(projectDir, gradleContext);
78
+ return await getApplicationIdFromBareAsync(projectDir, gradleContext);
79
79
  }
80
80
  else {
81
81
  const applicationId = config_plugins_1.AndroidConfig.Package.getPackage(exp);
@@ -1,9 +1,9 @@
1
1
  import { ExpoConfig } from '@expo/config';
2
- import { Platform } from '@expo/eas-build-job';
2
+ import { Env, Platform } from '@expo/eas-build-job';
3
3
  import { BuildProfile } from '@expo/eas-json';
4
4
  import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
5
5
  import { Client } from '../vcs/vcs';
6
- export declare function getApplicationIdentifierAsync({ graphqlClient, projectDir, projectId, exp, buildProfile, platform, vcsClient, nonInteractive, }: {
6
+ export declare function getApplicationIdentifierAsync({ graphqlClient, projectDir, projectId, exp, buildProfile, platform, vcsClient, nonInteractive, env, }: {
7
7
  graphqlClient: ExpoGraphqlClient;
8
8
  projectDir: string;
9
9
  projectId: string;
@@ -12,4 +12,5 @@ export declare function getApplicationIdentifierAsync({ graphqlClient, projectDi
12
12
  platform: Platform;
13
13
  vcsClient: Client;
14
14
  nonInteractive: boolean;
15
+ env: Env;
15
16
  }): Promise<string>;
@@ -8,7 +8,7 @@ const bundleIdentifier_1 = require("./ios/bundleIdentifier");
8
8
  const scheme_1 = require("./ios/scheme");
9
9
  const target_1 = require("./ios/target");
10
10
  const workflow_1 = require("./workflow");
11
- async function getApplicationIdentifierAsync({ graphqlClient, projectDir, projectId, exp, buildProfile, platform, vcsClient, nonInteractive, }) {
11
+ async function getApplicationIdentifierAsync({ graphqlClient, projectDir, projectId, exp, buildProfile, platform, vcsClient, nonInteractive, env, }) {
12
12
  if (platform === eas_build_job_1.Platform.ANDROID) {
13
13
  const profile = buildProfile;
14
14
  const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.ANDROID, vcsClient);
@@ -43,7 +43,7 @@ async function getApplicationIdentifierAsync({ graphqlClient, projectDir, projec
43
43
  projectDir,
44
44
  exp,
45
45
  xcodeBuildContext,
46
- env: profile.env,
46
+ env,
47
47
  vcsClient,
48
48
  });
49
49
  const applicationTarget = (0, target_1.findApplicationTarget)(targets);
@@ -12,10 +12,10 @@ async function createOrModifyExpoConfigAsync(projectDir, exp, readOptions) {
12
12
  ensureExpoConfigExists(projectDir);
13
13
  await ensureStaticExpoConfigIsValidAsync(projectDir);
14
14
  if (readOptions) {
15
- return (0, config_1.modifyConfigAsync)(projectDir, exp, readOptions);
15
+ return await (0, config_1.modifyConfigAsync)(projectDir, exp, readOptions);
16
16
  }
17
17
  else {
18
- return (0, config_1.modifyConfigAsync)(projectDir, exp);
18
+ return await (0, config_1.modifyConfigAsync)(projectDir, exp);
19
19
  }
20
20
  }
21
21
  exports.createOrModifyExpoConfigAsync = createOrModifyExpoConfigAsync;
@@ -19,7 +19,7 @@ async function getManagedApplicationTargetEntitlementsAsync(projectDir, env, vcs
19
19
  introspect: true,
20
20
  ignoreExistingNativeFiles: await (0, workflow_1.hasIgnoredIosProjectAsync)(projectDir, vcsClient),
21
21
  });
22
- return expWithMods.ios?.entitlements || {};
22
+ return expWithMods.ios?.entitlements ?? {};
23
23
  }
24
24
  finally {
25
25
  process.env = originalProcessEnv;
@@ -1,19 +1,19 @@
1
1
  /// <reference types="node" />
2
- import { ExpoConfig, Platform } from '@expo/config';
2
+ import { ExpoConfig, Platform as ExpoConfigPlatform } from '@expo/config';
3
3
  import { Env, Workflow } from '@expo/eas-build-job';
4
4
  import Joi from 'joi';
5
5
  import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
6
6
  import { PaginatedQueryOptions } from '../commandUtils/pagination';
7
- import { PartialManifestAsset } from '../graphql/generated';
7
+ import { AppPlatform, PartialManifestAsset, UpdateRolloutInfoGroup } from '../graphql/generated';
8
8
  import { RequestedPlatform } from '../platform';
9
9
  import { UpdateJsonInfo } from '../update/utils';
10
10
  import { Client } from '../vcs/vcs';
11
- export type ExpoCLIExportPlatformFlag = Platform | 'all';
11
+ export type UpdatePublishPlatform = 'ios' | 'android';
12
12
  type Metadata = {
13
13
  version: number;
14
14
  bundler: 'metro';
15
15
  fileMetadata: {
16
- [key in Platform]: {
16
+ [key in ExpoConfigPlatform]: {
17
17
  assets: {
18
18
  path: string;
19
19
  ext: string;
@@ -30,7 +30,7 @@ export type RawAsset = {
30
30
  originalPath?: string;
31
31
  };
32
32
  type CollectedAssets = {
33
- [platform in Platform]?: {
33
+ [platform in ExpoConfigPlatform]?: {
34
34
  launchAsset: RawAsset;
35
35
  assets: RawAsset[];
36
36
  };
@@ -47,7 +47,7 @@ type ManifestFragment = {
47
47
  extra?: ManifestExtra;
48
48
  };
49
49
  type UpdateInfoGroup = {
50
- [key in Platform]: ManifestFragment;
50
+ [key in UpdatePublishPlatform]: ManifestFragment;
51
51
  };
52
52
  type AssetMap = Record<string, {
53
53
  httpServerLocation: string;
@@ -69,7 +69,8 @@ export declare function convertAssetToUpdateInfoGroupFormatAsync(asset: RawAsset
69
69
  /**
70
70
  * This will be sorted later based on the platform's runtime versions.
71
71
  */
72
- export declare function buildUnsortedUpdateInfoGroupAsync(assets: CollectedAssets, exp: ExpoConfig): Promise<UpdateInfoGroup>;
72
+ export declare function buildUnsortedUpdateInfoGroupAsync(assets: FilteredCollectedAssets, exp: ExpoConfig): Promise<Partial<UpdateInfoGroup>>;
73
+ export type ExpoCLIExportPlatformFlag = ExpoConfigPlatform | 'all';
73
74
  export declare function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clearCache, }: {
74
75
  projectDir: string;
75
76
  inputDir: string;
@@ -82,7 +83,11 @@ export declare function resolveInputDirectoryAsync(inputDir: string, { skipBundl
82
83
  }): Promise<string>;
83
84
  export declare function loadMetadata(distRoot: string): Metadata;
84
85
  export declare function generateEasMetadataAsync(distRoot: string, metadata: UpdateJsonInfo[]): Promise<void>;
85
- export declare function filterExportedPlatformsByFlag<T extends Partial<Record<Platform, any>>>(record: T, platformFlag: ExpoCLIExportPlatformFlag): T;
86
+ export type FilteredCollectedAssets = {
87
+ [RequestedPlatform.Ios]?: NonNullable<CollectedAssets['ios']>;
88
+ [RequestedPlatform.Android]?: NonNullable<CollectedAssets['android']>;
89
+ };
90
+ export declare function filterCollectedAssetsByRequestedPlatforms(collectedAssets: CollectedAssets, requestedPlatform: RequestedPlatform): FilteredCollectedAssets;
86
91
  /** Try to load the asset map for logging the names of assets published */
87
92
  export declare function loadAssetMapAsync(distRoot: string): Promise<AssetMap | null>;
88
93
  export declare function getAssetHashFromPath(assetPath: string): string | null;
@@ -111,7 +116,7 @@ type AssetUploadResult = {
111
116
  /** The asset limit received from the server */
112
117
  assetLimitPerUpdateGroup: number;
113
118
  };
114
- export declare function uploadAssetsAsync(graphqlClient: ExpoGraphqlClient, assetsForUpdateInfoGroup: CollectedAssets, projectId: string, cancelationToken: {
119
+ export declare function uploadAssetsAsync(graphqlClient: ExpoGraphqlClient, assetsForUpdateInfoGroup: FilteredCollectedAssets, projectId: string, cancelationToken: {
115
120
  isCanceledOrFinished: boolean;
116
121
  }, onAssetUploadResultsChanged: (assetUploadResults: {
117
122
  asset: RawAsset & {
@@ -136,25 +141,33 @@ export declare function getUpdateMessageForCommandAsync(vcsClient: Client, { upd
136
141
  nonInteractive: boolean;
137
142
  jsonFlag: boolean;
138
143
  }): Promise<string | undefined>;
139
- export declare const defaultPublishPlatforms: Platform[];
140
- export declare function getRequestedPlatform(platform: ExpoCLIExportPlatformFlag): RequestedPlatform | null;
141
- /** Get runtime versions grouped by platform. Runtime version is always `null` on web where the platform is always backwards compatible. */
144
+ export declare const defaultPublishPlatforms: UpdatePublishPlatform[];
142
145
  export declare function getRuntimeVersionObjectAsync({ exp, platforms, workflows, projectDir, env, }: {
143
146
  exp: ExpoConfig;
144
- platforms: Platform[];
145
- workflows: Record<Platform, Workflow>;
147
+ platforms: UpdatePublishPlatform[];
148
+ workflows: Record<ExpoConfigPlatform, Workflow>;
146
149
  projectDir: string;
147
150
  env: Env | undefined;
148
151
  }): Promise<{
149
- platform: string;
152
+ platform: UpdatePublishPlatform;
150
153
  runtimeVersion: string;
151
154
  }[]>;
152
155
  export declare function getRuntimeToPlatformMappingFromRuntimeVersions(runtimeVersions: {
153
- platform: string;
156
+ platform: UpdatePublishPlatform;
154
157
  runtimeVersion: string;
155
158
  }[]): {
156
159
  runtimeVersion: string;
157
- platforms: string[];
160
+ platforms: UpdatePublishPlatform[];
158
161
  }[];
159
- export declare const platformDisplayNames: Record<Platform, string>;
162
+ export declare const platformDisplayNames: Record<UpdatePublishPlatform, string>;
163
+ export declare const updatePublishPlatformToAppPlatform: Record<UpdatePublishPlatform, AppPlatform>;
164
+ export declare function getRuntimeToUpdateRolloutInfoGroupMappingAsync(graphqlClient: ExpoGraphqlClient, { appId, branchName, rolloutPercentage, runtimeToPlatformMapping, }: {
165
+ appId: string;
166
+ branchName: string;
167
+ rolloutPercentage: number;
168
+ runtimeToPlatformMapping: {
169
+ runtimeVersion: string;
170
+ platforms: UpdatePublishPlatform[];
171
+ }[];
172
+ }): Promise<Map<string, UpdateRolloutInfoGroup>>;
160
173
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.platformDisplayNames = exports.getRuntimeToPlatformMappingFromRuntimeVersions = exports.getRuntimeVersionObjectAsync = exports.getRequestedPlatform = exports.defaultPublishPlatforms = exports.getUpdateMessageForCommandAsync = exports.getBranchNameForCommandAsync = exports.isUploadedAssetCountAboveWarningThreshold = exports.uploadAssetsAsync = exports.filterOutAssetsThatAlreadyExistAsync = exports.collectAssetsAsync = exports.getOriginalPathFromAssetMap = exports.getAssetHashFromPath = exports.loadAssetMapAsync = exports.filterExportedPlatformsByFlag = exports.generateEasMetadataAsync = exports.loadMetadata = exports.resolveInputDirectoryAsync = exports.buildBundlesAsync = exports.buildUnsortedUpdateInfoGroupAsync = exports.convertAssetToUpdateInfoGroupFormatAsync = exports.getStorageKeyForAssetAsync = exports.getStorageKey = exports.getBase64URLEncoding = exports.guessContentTypeFromExtension = exports.MetadataJoi = void 0;
3
+ exports.getRuntimeToUpdateRolloutInfoGroupMappingAsync = exports.updatePublishPlatformToAppPlatform = exports.platformDisplayNames = exports.getRuntimeToPlatformMappingFromRuntimeVersions = exports.getRuntimeVersionObjectAsync = exports.defaultPublishPlatforms = exports.getUpdateMessageForCommandAsync = exports.getBranchNameForCommandAsync = exports.isUploadedAssetCountAboveWarningThreshold = exports.uploadAssetsAsync = exports.filterOutAssetsThatAlreadyExistAsync = exports.collectAssetsAsync = exports.getOriginalPathFromAssetMap = exports.getAssetHashFromPath = exports.loadAssetMapAsync = exports.filterCollectedAssetsByRequestedPlatforms = exports.generateEasMetadataAsync = exports.loadMetadata = exports.resolveInputDirectoryAsync = exports.buildBundlesAsync = exports.buildUnsortedUpdateInfoGroupAsync = exports.convertAssetToUpdateInfoGroupFormatAsync = exports.getStorageKeyForAssetAsync = exports.getStorageKey = exports.getBase64URLEncoding = exports.guessContentTypeFromExtension = exports.MetadataJoi = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const config_plugins_1 = require("@expo/config-plugins");
6
6
  const eas_build_job_1 = require("@expo/eas-build-job");
@@ -19,6 +19,7 @@ const queries_1 = require("../branch/queries");
19
19
  const utils_1 = require("../branch/utils");
20
20
  const generated_1 = require("../graphql/generated");
21
21
  const PublishMutation_1 = require("../graphql/mutations/PublishMutation");
22
+ const BranchQuery_1 = require("../graphql/queries/BranchQuery");
22
23
  const PublishQuery_1 = require("../graphql/queries/PublishQuery");
23
24
  const log_1 = tslib_1.__importStar(require("../log"));
24
25
  const platform_1 = require("../platform");
@@ -70,10 +71,12 @@ function getStorageKey(contentType, contentHash) {
70
71
  }
71
72
  exports.getStorageKey = getStorageKey;
72
73
  async function calculateFileHashAsync(filePath, algorithm) {
73
- return new Promise((resolve, reject) => {
74
+ return await new Promise((resolve, reject) => {
74
75
  const file = fs_extra_1.default.createReadStream(filePath).on('error', reject);
75
76
  const hash = file.pipe(crypto_1.default.createHash(algorithm)).on('error', reject);
76
- hash.on('finish', () => resolve(hash.read()));
77
+ hash.on('finish', () => {
78
+ resolve(hash.read());
79
+ });
77
80
  });
78
81
  }
79
82
  /**
@@ -123,7 +126,7 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
123
126
  }
124
127
  // Legacy global Expo CLI
125
128
  if (!(0, expoCli_1.shouldUseVersionedExpoCLI)(projectDir, exp)) {
126
- return await (0, expoCli_1.expoCommandAsync)(projectDir, [
129
+ await (0, expoCli_1.expoCommandAsync)(projectDir, [
127
130
  'export',
128
131
  '--output-dir',
129
132
  inputDir,
@@ -134,6 +137,7 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
134
137
  `--platform=${platformFlag}`,
135
138
  ...(clearCache ? ['--clear'] : []),
136
139
  ]);
140
+ return;
137
141
  }
138
142
  // Versioned Expo CLI, with multiple platform flag support
139
143
  if ((0, expoCli_1.shouldUseVersionedExpoCLIWithExplicitPlatforms)(projectDir)) {
@@ -141,7 +145,7 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
141
145
  const platformArgs = platformFlag === 'all'
142
146
  ? ['--platform', 'ios', '--platform', 'android']
143
147
  : ['--platform', platformFlag];
144
- return await (0, expoCli_1.expoCommandAsync)(projectDir, [
148
+ await (0, expoCli_1.expoCommandAsync)(projectDir, [
145
149
  'export',
146
150
  '--output-dir',
147
151
  inputDir,
@@ -150,6 +154,7 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
150
154
  ...platformArgs,
151
155
  ...(clearCache ? ['--clear'] : []),
152
156
  ]);
157
+ return;
153
158
  }
154
159
  // Versioned Expo CLI, without multiple platform flag support
155
160
  // Warn users about potential export issues when using Metro web
@@ -158,7 +163,7 @@ async function buildBundlesAsync({ projectDir, inputDir, exp, platformFlag, clea
158
163
  log_1.default.warn('Exporting bundle for all platforms, including Metro web.');
159
164
  log_1.default.warn('If your app is incompatible with web, remove the "expo.web.bundler" property from your app manifest, or upgrade to the latest Expo SDK.');
160
165
  }
161
- return await (0, expoCli_1.expoCommandAsync)(projectDir, [
166
+ await (0, expoCli_1.expoCommandAsync)(projectDir, [
162
167
  'export',
163
168
  '--output-dir',
164
169
  inputDir,
@@ -208,17 +213,22 @@ async function generateEasMetadataAsync(distRoot, metadata) {
208
213
  await json_file_1.default.writeAsync(easMetadataPath, { updates: metadata });
209
214
  }
210
215
  exports.generateEasMetadataAsync = generateEasMetadataAsync;
211
- function filterExportedPlatformsByFlag(record, platformFlag) {
212
- if (platformFlag === 'all') {
213
- return record;
216
+ function filterCollectedAssetsByRequestedPlatforms(collectedAssets, requestedPlatform) {
217
+ if (requestedPlatform === platform_1.RequestedPlatform.All) {
218
+ return {
219
+ ...('ios' in collectedAssets ? { [platform_1.RequestedPlatform.Ios]: collectedAssets['ios'] } : {}),
220
+ ...('android' in collectedAssets
221
+ ? { [platform_1.RequestedPlatform.Android]: collectedAssets['android'] }
222
+ : {}),
223
+ };
214
224
  }
215
- const platform = platformFlag;
216
- if (!record[platform]) {
217
- throw new Error(`--platform="${platform}" not found in metadata.json. Available platform(s): ${Object.keys(record).join(', ')}`);
225
+ const collectedAssetsKey = requestedPlatform === platform_1.RequestedPlatform.Android ? 'android' : 'ios';
226
+ if (!collectedAssets[collectedAssetsKey]) {
227
+ throw new Error(`--platform="${collectedAssetsKey}" not found in metadata.json. Available platform(s): ${Object.keys(collectedAssets).join(', ')}`);
218
228
  }
219
- return { [platform]: record[platform] };
229
+ return { [requestedPlatform]: collectedAssets[collectedAssetsKey] };
220
230
  }
221
- exports.filterExportedPlatformsByFlag = filterExportedPlatformsByFlag;
231
+ exports.filterCollectedAssetsByRequestedPlatforms = filterCollectedAssetsByRequestedPlatforms;
222
232
  /** Try to load the asset map for logging the names of assets published */
223
233
  async function loadAssetMapAsync(distRoot) {
224
234
  const assetMapPath = path_1.default.join(distRoot, 'assetmap.json');
@@ -325,15 +335,15 @@ async function uploadAssetsAsync(graphqlClient, assetsForUpdateInfoGroup, projec
325
335
  const assetUploadPromiseLimit = (0, promise_limit_1.default)(15);
326
336
  const [assetLimitPerUpdateGroup] = await Promise.all([
327
337
  PublishQuery_1.PublishQuery.getAssetLimitPerUpdateGroupAsync(graphqlClient, projectId),
328
- missingAssets.map((missingAsset, i) => {
329
- assetUploadPromiseLimit(async () => {
338
+ Promise.all(missingAssets.map((missingAsset, i) => {
339
+ return assetUploadPromiseLimit(async () => {
330
340
  if (cancelationToken.isCanceledOrFinished) {
331
341
  throw Error('Canceled upload');
332
342
  }
333
343
  const presignedPost = JSON.parse(specifications[i]);
334
344
  await (0, uploads_1.uploadWithPresignedPostWithRetryAsync)(missingAsset.path, presignedPost, onAssetUploadBegin);
335
345
  });
336
- }),
346
+ })),
337
347
  ]);
338
348
  let timeout = 1;
339
349
  while (missingAssets.length > 0) {
@@ -445,22 +455,6 @@ async function getUpdateMessageForCommandAsync(vcsClient, { updateMessageArg, au
445
455
  }
446
456
  exports.getUpdateMessageForCommandAsync = getUpdateMessageForCommandAsync;
447
457
  exports.defaultPublishPlatforms = ['android', 'ios'];
448
- function getRequestedPlatform(platform) {
449
- switch (platform) {
450
- case 'android':
451
- return platform_1.RequestedPlatform.Android;
452
- case 'ios':
453
- return platform_1.RequestedPlatform.Ios;
454
- case 'web':
455
- return null;
456
- case 'all':
457
- return platform_1.RequestedPlatform.All;
458
- default:
459
- throw new Error(`Unsupported platform: ${platform}`);
460
- }
461
- }
462
- exports.getRequestedPlatform = getRequestedPlatform;
463
- /** Get runtime versions grouped by platform. Runtime version is always `null` on web where the platform is always backwards compatible. */
464
458
  async function getRuntimeVersionObjectAsync({ exp, platforms, workflows, projectDir, env, }) {
465
459
  return await Promise.all(platforms.map(async (platform) => {
466
460
  return {
@@ -477,9 +471,6 @@ async function getRuntimeVersionObjectAsync({ exp, platforms, workflows, project
477
471
  }
478
472
  exports.getRuntimeVersionObjectAsync = getRuntimeVersionObjectAsync;
479
473
  async function getRuntimeVersionForPlatformAsync({ exp, platform, workflow, projectDir, env, }) {
480
- if (platform === 'web') {
481
- return 'UNVERSIONED';
482
- }
483
474
  if (await (0, projectUtils_1.isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync)(projectDir)) {
484
475
  try {
485
476
  log_1.default.debug('Using expo-updates runtimeversion:resolve CLI for runtime version resolution');
@@ -526,5 +517,38 @@ exports.getRuntimeToPlatformMappingFromRuntimeVersions = getRuntimeToPlatformMap
526
517
  exports.platformDisplayNames = {
527
518
  android: 'Android',
528
519
  ios: 'iOS',
529
- web: 'Web',
530
520
  };
521
+ exports.updatePublishPlatformToAppPlatform = {
522
+ android: generated_1.AppPlatform.Android,
523
+ ios: generated_1.AppPlatform.Ios,
524
+ };
525
+ const mapMapAsync = async function (map, mapper) {
526
+ const resultingMap = new Map();
527
+ await Promise.all(Array.from(map.keys()).map(async (k) => {
528
+ const initialValue = map.get(k);
529
+ const result = await mapper(initialValue, k);
530
+ resultingMap.set(k, result);
531
+ }));
532
+ return resultingMap;
533
+ };
534
+ async function getRuntimeToUpdateRolloutInfoGroupMappingAsync(graphqlClient, { appId, branchName, rolloutPercentage, runtimeToPlatformMapping, }) {
535
+ const runtimeToPlatformsMap = new Map(runtimeToPlatformMapping.map(r => [
536
+ r.runtimeVersion,
537
+ r.platforms,
538
+ ]));
539
+ return await mapMapAsync(runtimeToPlatformsMap, async (platforms, runtimeVersion) => {
540
+ return Object.fromEntries(await Promise.all(platforms.map(async (platform) => {
541
+ const updateIdForPlatform = await BranchQuery_1.BranchQuery.getLatestUpdateIdOnBranchAsync(graphqlClient, {
542
+ appId,
543
+ branchName,
544
+ runtimeVersion,
545
+ platform: exports.updatePublishPlatformToAppPlatform[platform],
546
+ });
547
+ if (!updateIdForPlatform) {
548
+ throw new Error(`No updates on branch ${branchName} for platform ${platform} and runtimeVersion ${runtimeVersion} to roll out from.`);
549
+ }
550
+ return [platform, { rolloutPercentage, rolloutControlUpdateId: updateIdForPlatform }];
551
+ })));
552
+ });
553
+ }
554
+ exports.getRuntimeToUpdateRolloutInfoGroupMappingAsync = getRuntimeToUpdateRolloutInfoGroupMappingAsync;
@@ -9,5 +9,8 @@ export declare function resolveRuntimeVersionAsync({ exp, platform, workflow, pr
9
9
  cwd?: string;
10
10
  }): Promise<{
11
11
  runtimeVersion: string | null;
12
- fingerprintSources: object[] | null;
12
+ fingerprint: {
13
+ fingerprintSources: object[];
14
+ isDebugFingerprintSource: boolean;
15
+ } | null;
13
16
  } | null>;
@@ -12,19 +12,25 @@ async function resolveRuntimeVersionAsync({ exp, platform, workflow, projectDir,
12
12
  // than the versioned @expo/config-plugins dependency in the project)
13
13
  return {
14
14
  runtimeVersion: await config_plugins_1.Updates.getRuntimeVersionNullableAsync(projectDir, exp, platform),
15
- fingerprintSources: null,
15
+ fingerprint: null,
16
16
  };
17
17
  }
18
18
  try {
19
19
  log_1.default.debug('Using expo-updates runtimeversion:resolve CLI for runtime version resolution');
20
- const extraArgs = log_1.default.isDebug ? ['--debug'] : [];
20
+ const useDebugFingerprintSource = log_1.default.isDebug;
21
+ const extraArgs = useDebugFingerprintSource ? ['--debug'] : [];
21
22
  const resolvedRuntimeVersionJSONResult = await (0, expoUpdatesCli_1.expoUpdatesCommandAsync)(projectDir, ['runtimeversion:resolve', '--platform', platform, '--workflow', workflow, ...extraArgs], { env, cwd });
22
23
  const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);
23
24
  log_1.default.debug('runtimeversion:resolve output:');
24
25
  log_1.default.debug(resolvedRuntimeVersionJSONResult);
25
26
  return {
26
27
  runtimeVersion: runtimeVersionResult.runtimeVersion ?? null,
27
- fingerprintSources: runtimeVersionResult.fingerprintSources ?? null,
28
+ fingerprint: runtimeVersionResult.fingerprintSources
29
+ ? {
30
+ fingerprintSources: runtimeVersionResult.fingerprintSources,
31
+ isDebugFingerprintSource: useDebugFingerprintSource,
32
+ }
33
+ : null,
28
34
  };
29
35
  }
30
36
  catch (e) {
@@ -10,8 +10,8 @@ export type NonInteractiveOptions = {
10
10
  * Create a rollout for the project.
11
11
  */
12
12
  export declare class CreateRollout implements EASUpdateAction<UpdateChannelBasicInfoFragment> {
13
- private channelInfo;
14
- private options;
13
+ private readonly channelInfo;
14
+ private readonly options;
15
15
  constructor(channelInfo: UpdateChannelBasicInfoFragment, options?: Partial<NonInteractiveOptions>);
16
16
  runAsync(ctx: EASUpdateContext): Promise<UpdateChannelBasicInfoFragment>;
17
17
  confirmCreationAsync(ctx: EASUpdateContext): Promise<boolean>;
@@ -8,8 +8,8 @@ export type NonInteractiveOptions = {
8
8
  * Edit an existing rollout for the project.
9
9
  */
10
10
  export declare class EditRollout implements EASUpdateAction<UpdateChannelBasicInfoFragment> {
11
- private channelInfo;
12
- private options;
11
+ private readonly channelInfo;
12
+ private readonly options;
13
13
  constructor(channelInfo: UpdateChannelBasicInfoFragment, options?: Partial<NonInteractiveOptions>);
14
14
  runAsync(ctx: EASUpdateContext): Promise<UpdateChannelBasicInfoFragment>;
15
15
  confirmEditAsync(ctx: EASUpdateContext): Promise<boolean>;
@@ -16,8 +16,8 @@ export type NonInteractiveOptions = {
16
16
  * End an existing rollout for the project.
17
17
  */
18
18
  export declare class EndRollout implements EASUpdateAction<UpdateChannelBasicInfoFragment> {
19
- private channelInfo;
20
- private options;
19
+ private readonly channelInfo;
20
+ private readonly options;
21
21
  constructor(channelInfo: UpdateChannelBasicInfoFragment, options: Partial<NonInteractiveOptions> & GeneralOptions);
22
22
  runAsync(ctx: EASUpdateContext): Promise<UpdateChannelBasicInfoFragment>;
23
23
  getChannelObjectAsync(ctx: EASUpdateContext): Promise<UpdateChannelObject>;
@@ -13,8 +13,8 @@ export declare enum ManageRolloutActions {
13
13
  * Manage a rollout for the project.
14
14
  */
15
15
  export declare class ManageRollout implements EASUpdateAction<EASUpdateAction> {
16
- private channelInfo;
17
- private options;
16
+ private readonly channelInfo;
17
+ private readonly options;
18
18
  constructor(channelInfo: UpdateChannelBasicInfoFragment, options: {
19
19
  callingAction?: EASUpdateAction;
20
20
  action?: ManageRolloutActions.EDIT | ManageRolloutActions.END | ManageRolloutActions.VIEW;
@@ -21,7 +21,7 @@ type JSONOutput = {
21
21
  * Control a rollout in non interactive mode.
22
22
  */
23
23
  export declare class NonInteractiveRollout implements EASUpdateAction<void> {
24
- private options;
24
+ private readonly options;
25
25
  constructor(options: {
26
26
  channelName?: string;
27
27
  json?: boolean;
@@ -13,7 +13,7 @@ export type RolloutActions = MainMenuActions.CREATE_NEW | ManageRolloutActions.E
13
13
  * Manage a rollout for the project.
14
14
  */
15
15
  export declare class RolloutMainMenu implements EASUpdateAction<void> {
16
- private options;
16
+ private readonly options;
17
17
  constructor(options: {
18
18
  channelName?: string;
19
19
  action?: RolloutActions;
@@ -6,9 +6,9 @@ import { Connection } from '../../utils/relay';
6
6
  * Select a runtime from a branch
7
7
  */
8
8
  export declare class SelectRuntime implements EASUpdateAction<string | null> {
9
- private branchInfo;
10
- private options;
11
- private printedType;
9
+ private readonly branchInfo;
10
+ private readonly options;
11
+ private readonly printedType;
12
12
  constructor(branchInfo: UpdateBranchBasicInfoFragment, options?: {
13
13
  anotherBranchToIntersectRuntimesBy?: UpdateBranchBasicInfoFragment;
14
14
  });
@@ -75,7 +75,7 @@ async function getRunningEmulatorsAsync() {
75
75
  name,
76
76
  };
77
77
  });
78
- return Promise.all(devicePromises);
78
+ return await Promise.all(devicePromises);
79
79
  }
80
80
  exports.getRunningEmulatorsAsync = getRunningEmulatorsAsync;
81
81
  async function getFirstRunningEmulatorAsync() {
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.simctlAsync = void 0;
4
4
  const xcrun_1 = require("./xcrun");
5
5
  async function simctlAsync(args, options) {
6
- return (0, xcrun_1.xcrunAsync)(['simctl', ...args], options);
6
+ return await (0, xcrun_1.xcrunAsync)(['simctl', ...args], options);
7
7
  }
8
8
  exports.simctlAsync = simctlAsync;
@@ -38,7 +38,7 @@ async function assertCorrectXcodeVersionInstalledAsync() {
38
38
  }
39
39
  }
40
40
  async function ensureXcrunInstalledAsync() {
41
- if (!(0, xcrun_1.isXcrunInstalledAsync)()) {
41
+ if (!(await (0, xcrun_1.isXcrunInstalledAsync)())) {
42
42
  const { installXcrun } = await (0, prompts_1.promptAsync)({
43
43
  type: 'select',
44
44
  message: 'Xcode Command Line Tools need to be installed, continue?',