eas-cli 0.29.0 → 0.31.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 (148) hide show
  1. package/README.md +26 -26
  2. package/build/analytics.js +6 -9
  3. package/build/build/android/build.js +6 -8
  4. package/build/build/android/configure.d.ts +6 -1
  5. package/build/build/android/configure.js +31 -5
  6. package/build/build/android/prepareJob.js +3 -3
  7. package/build/build/android/version.d.ts +15 -0
  8. package/build/build/android/version.js +75 -1
  9. package/build/build/context.d.ts +2 -0
  10. package/build/build/context.js +8 -0
  11. package/build/build/ios/UpdatesModule.js +3 -1
  12. package/build/build/ios/configure.js +1 -1
  13. package/build/build/ios/credentials.js +2 -7
  14. package/build/build/ios/prepareJob.js +3 -14
  15. package/build/build/ios/version.d.ts +1 -1
  16. package/build/build/ios/version.js +5 -23
  17. package/build/build/utils/printBuildInfo.js +1 -1
  18. package/build/build/utils/updates.js +1 -1
  19. package/build/build/utils/version.d.ts +7 -0
  20. package/build/build/utils/version.js +37 -0
  21. package/build/commands/branch/create.js +1 -4
  22. package/build/commands/branch/delete.js +1 -4
  23. package/build/commands/branch/list.js +1 -4
  24. package/build/commands/branch/publish.js +2 -5
  25. package/build/commands/branch/rename.js +1 -4
  26. package/build/commands/branch/view.js +1 -4
  27. package/build/commands/build/cancel.js +1 -2
  28. package/build/commands/build/configure.js +2 -2
  29. package/build/commands/build/index.js +15 -6
  30. package/build/commands/build/list.js +1 -2
  31. package/build/commands/build/view.js +1 -2
  32. package/build/commands/channel/create.js +1 -4
  33. package/build/commands/channel/edit.js +1 -4
  34. package/build/commands/channel/list.js +1 -4
  35. package/build/commands/channel/rollout.js +1 -4
  36. package/build/commands/channel/view.js +1 -4
  37. package/build/commands/config.js +1 -2
  38. package/build/commands/credentials.js +5 -1
  39. package/build/commands/device/list.js +1 -2
  40. package/build/commands/device/view.js +1 -2
  41. package/build/commands/project/info.js +1 -4
  42. package/build/commands/project/init.js +1 -4
  43. package/build/commands/secret/create.js +1 -2
  44. package/build/commands/secret/delete.js +1 -2
  45. package/build/commands/secret/list.js +1 -2
  46. package/build/commands/submit.js +2 -3
  47. package/build/commands/webhook/create.js +1 -4
  48. package/build/commands/webhook/delete.js +1 -4
  49. package/build/commands/webhook/list.js +1 -4
  50. package/build/credentials/android/AndroidCredentialsProvider.d.ts +2 -2
  51. package/build/credentials/android/actions/AssignFcm.d.ts +2 -2
  52. package/build/credentials/android/actions/AssignGoogleServiceAccountKey.d.ts +8 -0
  53. package/build/credentials/android/actions/AssignGoogleServiceAccountKey.js +19 -0
  54. package/build/credentials/android/actions/BuildCredentialsUtils.d.ts +5 -5
  55. package/build/credentials/android/actions/CreateFcm.d.ts +2 -2
  56. package/build/credentials/android/actions/CreateGoogleServiceAccountKey.d.ts +3 -2
  57. package/build/credentials/android/actions/CreateGoogleServiceAccountKey.js +19 -11
  58. package/build/credentials/android/actions/CreateKeystore.d.ts +2 -2
  59. package/build/credentials/android/actions/DownloadKeystore.d.ts +3 -3
  60. package/build/credentials/android/actions/RemoveFcm.d.ts +2 -2
  61. package/build/credentials/android/actions/RemoveGoogleServiceAccountKey.d.ts +13 -0
  62. package/build/credentials/android/actions/RemoveGoogleServiceAccountKey.js +48 -0
  63. package/build/credentials/android/actions/RemoveKeystore.d.ts +2 -2
  64. package/build/credentials/android/actions/SetupBuildCredentials.d.ts +5 -5
  65. package/build/credentials/android/actions/SetupBuildCredentialsFromCredentialsJson.d.ts +2 -2
  66. package/build/credentials/android/actions/SetupGoogleServiceAccountKey.d.ts +10 -0
  67. package/build/credentials/android/actions/SetupGoogleServiceAccountKey.js +59 -0
  68. package/build/credentials/android/actions/UpdateCredentialsJson.d.ts +2 -2
  69. package/build/credentials/android/actions/UseExistingGoogleServiceAccountKey.d.ts +8 -0
  70. package/build/credentials/android/actions/UseExistingGoogleServiceAccountKey.js +23 -0
  71. package/build/credentials/android/api/GraphqlClient.d.ts +5 -2
  72. package/build/credentials/android/api/GraphqlClient.js +20 -3
  73. package/build/credentials/android/api/graphql/mutations/AndroidAppCredentialsMutation.d.ts +1 -0
  74. package/build/credentials/android/api/graphql/mutations/AndroidAppCredentialsMutation.js +26 -0
  75. package/build/credentials/android/api/graphql/mutations/GoogleServiceAccountKeyMutation.d.ts +1 -0
  76. package/build/credentials/android/api/graphql/mutations/GoogleServiceAccountKeyMutation.js +17 -0
  77. package/build/credentials/android/api/graphql/queries/GoogleServiceAccountKeyQuery.d.ts +4 -0
  78. package/build/credentials/android/api/graphql/queries/GoogleServiceAccountKeyQuery.js +31 -0
  79. package/build/credentials/android/credentials.d.ts +2 -0
  80. package/build/credentials/android/utils/googleServiceAccountKey.d.ts +3 -0
  81. package/build/credentials/android/utils/googleServiceAccountKey.js +90 -1
  82. package/build/credentials/android/utils/printCredentials.js +67 -28
  83. package/build/credentials/context.d.ts +17 -21
  84. package/build/credentials/context.js +21 -26
  85. package/build/credentials/credentialsJson/update.d.ts +3 -3
  86. package/build/credentials/ios/IosCredentialsProvider.d.ts +2 -2
  87. package/build/credentials/ios/actions/AppleTeamUtils.d.ts +2 -2
  88. package/build/credentials/ios/actions/AssignPushKey.d.ts +2 -2
  89. package/build/credentials/ios/actions/BuildCredentialsUtils.d.ts +8 -8
  90. package/build/credentials/ios/actions/ConfigureProvisioningProfile.d.ts +2 -2
  91. package/build/credentials/ios/actions/CreateDistributionCertificate.d.ts +2 -2
  92. package/build/credentials/ios/actions/CreateProvisioningProfile.d.ts +2 -2
  93. package/build/credentials/ios/actions/CreatePushKey.d.ts +2 -2
  94. package/build/credentials/ios/actions/DistributionCertificateUtils.d.ts +4 -4
  95. package/build/credentials/ios/actions/DistributionCertificateUtils.js +3 -3
  96. package/build/credentials/ios/actions/ProvisioningProfileUtils.d.ts +2 -2
  97. package/build/credentials/ios/actions/PushKeyUtils.d.ts +4 -4
  98. package/build/credentials/ios/actions/RemoveDistributionCertificate.d.ts +3 -3
  99. package/build/credentials/ios/actions/RemoveProvisioningProfile.d.ts +2 -2
  100. package/build/credentials/ios/actions/RemovePushKey.d.ts +3 -3
  101. package/build/credentials/ios/actions/SetupAdhocProvisioningProfile.d.ts +4 -3
  102. package/build/credentials/ios/actions/SetupAdhocProvisioningProfile.js +48 -4
  103. package/build/credentials/ios/actions/SetupBuildCredentials.d.ts +2 -2
  104. package/build/credentials/ios/actions/SetupBuildCredentialsFromCredentialsJson.d.ts +2 -2
  105. package/build/credentials/ios/actions/SetupDistributionCertificate.d.ts +3 -3
  106. package/build/credentials/ios/actions/SetupInternalProvisioningProfile.d.ts +2 -2
  107. package/build/credentials/ios/actions/SetupProvisioningProfile.d.ts +6 -6
  108. package/build/credentials/ios/actions/SetupPushKey.d.ts +3 -3
  109. package/build/credentials/ios/actions/SetupTargetBuildCredentials.d.ts +4 -4
  110. package/build/credentials/ios/actions/SetupTargetBuildCredentialsFromCredentialsJson.d.ts +5 -5
  111. package/build/credentials/ios/actions/UpdateCredentialsJson.d.ts +2 -2
  112. package/build/credentials/ios/appstore/AppStoreApi.d.ts +4 -15
  113. package/build/credentials/ios/appstore/AppStoreApi.js +4 -12
  114. package/build/credentials/ios/appstore/entitlements.js +14 -13
  115. package/build/credentials/ios/utils/printCredentials.js +83 -51
  116. package/build/credentials/ios/validators/validateDistributionCertificate.d.ts +2 -2
  117. package/build/credentials/ios/validators/validateProvisioningProfile.d.ts +2 -2
  118. package/build/credentials/ios/validators/validatePushKey.d.ts +2 -2
  119. package/build/credentials/manager/HelperActions.d.ts +4 -0
  120. package/build/credentials/manager/ManageAndroid.d.ts +18 -12
  121. package/build/credentials/manager/ManageAndroid.js +72 -10
  122. package/build/credentials/manager/ManageIos.d.ts +3 -2
  123. package/build/credentials/manager/SelectAndroidBuildCredentials.d.ts +3 -3
  124. package/build/credentials/manager/SelectBuildProfileFromEasJson.d.ts +3 -4
  125. package/build/credentials/manager/SelectBuildProfileFromEasJson.js +0 -1
  126. package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.d.ts +3 -3
  127. package/build/credentials/manager/SelectPlatform.d.ts +3 -3
  128. package/build/devices/context.js +1 -1
  129. package/build/graphql/generated.d.ts +60 -1
  130. package/build/graphql/types/credentials/AndroidAppCredentials.js +6 -0
  131. package/build/project/android/applicationId.js +2 -2
  132. package/build/project/projectUtils.d.ts +4 -1
  133. package/build/project/projectUtils.js +13 -3
  134. package/build/project/publish.d.ts +3 -3
  135. package/build/project/publish.js +10 -10
  136. package/build/submit/android/AndroidSubmitCommand.js +3 -8
  137. package/build/submit/android/AndroidSubmitter.js +31 -9
  138. package/build/submit/android/ServiceAccountSource.d.ts +24 -5
  139. package/build/submit/android/ServiceAccountSource.js +54 -75
  140. package/build/submit/context.d.ts +14 -7
  141. package/build/submit/context.js +18 -4
  142. package/build/submit/ios/AppProduce.js +3 -3
  143. package/build/submit/ios/AppSpecificPasswordSource.js +1 -1
  144. package/build/submit/ios/IosSubmitCommand.js +1 -1
  145. package/build/utils/json.js +2 -6
  146. package/build/vcs/local.js +7 -7
  147. package/oclif.manifest.json +1 -1
  148. package/package.json +9 -8
@@ -6,17 +6,16 @@ const config_1 = require("@expo/config");
6
6
  const config_plugins_1 = require("@expo/config-plugins");
7
7
  const eas_build_job_1 = require("@expo/eas-build-job");
8
8
  const chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
9
- const nullthrows_1 = (0, tslib_1.__importDefault)(require("nullthrows"));
10
9
  const path_1 = (0, tslib_1.__importDefault)(require("path"));
11
- const semver_1 = (0, tslib_1.__importDefault)(require("semver"));
12
10
  const log_1 = (0, tslib_1.__importDefault)(require("../../log"));
13
11
  const workflow_1 = require("../../project/workflow");
14
12
  const prompts_1 = require("../../prompts");
15
13
  const appJson_1 = require("../utils/appJson");
14
+ const version_1 = require("../utils/version");
16
15
  const plist_1 = require("./plist");
17
16
  var BumpStrategy;
18
17
  (function (BumpStrategy) {
19
- BumpStrategy[BumpStrategy["SHORT_VERSION"] = 0] = "SHORT_VERSION";
18
+ BumpStrategy[BumpStrategy["APP_VERSION"] = 0] = "APP_VERSION";
20
19
  BumpStrategy[BumpStrategy["BUILD_NUMBER"] = 1] = "BUILD_NUMBER";
21
20
  BumpStrategy[BumpStrategy["NOOP"] = 2] = "NOOP";
22
21
  })(BumpStrategy = exports.BumpStrategy || (exports.BumpStrategy = {}));
@@ -38,26 +37,9 @@ async function bumpVersionInAppJsonAsync({ bumpStrategy, projectDir, exp, }) {
38
37
  }
39
38
  ensureStaticConfigExists(projectDir);
40
39
  log_1.default.addNewLineIfNone();
41
- if (bumpStrategy === BumpStrategy.SHORT_VERSION) {
42
- const shortVersion = config_plugins_1.IOSConfig.Version.getVersion(exp);
43
- if (semver_1.default.valid(shortVersion)) {
44
- const bumpedShortVersion = (0, nullthrows_1.default)(semver_1.default.inc(shortVersion, 'patch'));
45
- log_1.default.log(`Bumping ${chalk_1.default.bold('expo.version')} from ${chalk_1.default.bold(shortVersion)} to ${chalk_1.default.bold(bumpedShortVersion)}`);
46
- await (0, appJson_1.updateAppJsonConfigAsync)({ projectDir, exp }, config => {
47
- config.version = bumpedShortVersion;
48
- });
49
- }
50
- else {
51
- log_1.default.log(`${chalk_1.default.bold('expo.version')} = ${chalk_1.default.bold(shortVersion)} is not a valid semver`);
52
- const { bumpedShortVersion } = await (0, prompts_1.promptAsync)({
53
- type: 'text',
54
- name: 'bumpedShortVersion',
55
- message: 'What is the next version?',
56
- });
57
- await (0, appJson_1.updateAppJsonConfigAsync)({ projectDir, exp }, config => {
58
- config.version = bumpedShortVersion;
59
- });
60
- }
40
+ if (bumpStrategy === BumpStrategy.APP_VERSION) {
41
+ const appVersion = config_plugins_1.IOSConfig.Version.getVersion(exp);
42
+ await (0, version_1.bumpAppVersionAsync)({ appVersion, projectDir, exp });
61
43
  }
62
44
  else {
63
45
  const buildNumber = config_plugins_1.IOSConfig.Version.getBuildNumber(exp);
@@ -18,7 +18,7 @@ function printLogsUrls(builds) {
18
18
  else {
19
19
  builds.forEach(build => {
20
20
  const logsUrl = (0, url_1.getBuildLogsUrl)(build);
21
- log_1.default.log(`${platform_1.appPlatformDisplayNames[build.platform]} build details: ${chalk_1.default.underline(logsUrl)}`);
21
+ log_1.default.log(`${platform_1.appPlatformEmojis[build.platform]} ${platform_1.appPlatformDisplayNames[build.platform]} build details: ${chalk_1.default.underline(logsUrl)}`);
22
22
  });
23
23
  }
24
24
  }
@@ -4,7 +4,7 @@ exports.ensureValidVersions = exports.isExpoUpdatesInstalled = void 0;
4
4
  const config_1 = require("@expo/config");
5
5
  function isExpoUpdatesInstalled(projectDir) {
6
6
  const packageJson = (0, config_1.getPackageJson)(projectDir);
7
- return packageJson.dependencies && 'expo-updates' in packageJson.dependencies;
7
+ return !!(packageJson.dependencies && 'expo-updates' in packageJson.dependencies);
8
8
  }
9
9
  exports.isExpoUpdatesInstalled = isExpoUpdatesInstalled;
10
10
  function ensureValidVersions(exp) {
@@ -0,0 +1,7 @@
1
+ import { ExpoConfig } from '@expo/config';
2
+ export declare function ensureStaticConfigExists(projectDir: string): void;
3
+ export declare function bumpAppVersionAsync({ appVersion, projectDir, exp, }: {
4
+ appVersion: string;
5
+ projectDir: string;
6
+ exp: ExpoConfig;
7
+ }): Promise<void>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bumpAppVersionAsync = exports.ensureStaticConfigExists = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const config_1 = require("@expo/config");
6
+ const chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
7
+ const nullthrows_1 = (0, tslib_1.__importDefault)(require("nullthrows"));
8
+ const semver_1 = (0, tslib_1.__importDefault)(require("semver"));
9
+ const log_1 = (0, tslib_1.__importDefault)(require("../../log"));
10
+ const prompts_1 = require("../../prompts");
11
+ const appJson_1 = require("./appJson");
12
+ function ensureStaticConfigExists(projectDir) {
13
+ const paths = (0, config_1.getConfigFilePaths)(projectDir);
14
+ if (!paths.staticConfigPath) {
15
+ throw new Error('autoIncrement option is not supported when using app.config.js');
16
+ }
17
+ }
18
+ exports.ensureStaticConfigExists = ensureStaticConfigExists;
19
+ async function bumpAppVersionAsync({ appVersion, projectDir, exp, }) {
20
+ let bumpedAppVersion;
21
+ if (semver_1.default.valid(appVersion)) {
22
+ bumpedAppVersion = (0, nullthrows_1.default)(semver_1.default.inc(appVersion, 'patch'));
23
+ log_1.default.log(`Bumping ${chalk_1.default.bold('expo.version')} from ${chalk_1.default.bold(appVersion)} to ${chalk_1.default.bold(bumpedAppVersion)}`);
24
+ }
25
+ else {
26
+ log_1.default.log(`${chalk_1.default.bold('expo.version')} = ${chalk_1.default.bold(appVersion)} is not a valid semver`);
27
+ bumpedAppVersion = (await (0, prompts_1.promptAsync)({
28
+ type: 'text',
29
+ name: 'bumpedAppVersion',
30
+ message: 'What is the next version?',
31
+ })).bumpedAppVersion;
32
+ }
33
+ await (0, appJson_1.updateAppJsonConfigAsync)({ projectDir, exp }, config => {
34
+ config.version = bumpedAppVersion;
35
+ });
36
+ }
37
+ exports.bumpAppVersionAsync = bumpAppVersionAsync;
@@ -38,10 +38,7 @@ exports.createUpdateBranchOnAppAsync = createUpdateBranchOnAppAsync;
38
38
  class BranchCreate extends EasCommand_1.default {
39
39
  async runAsync() {
40
40
  let { args: { name }, flags, } = this.parse(BranchCreate);
41
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
42
- if (!projectDir) {
43
- throw new Error('Please run this command inside a project directory.');
44
- }
41
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
45
42
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
46
43
  const fullName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
47
44
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
@@ -51,10 +51,7 @@ class BranchDelete extends EasCommand_1.default {
51
51
  async runAsync() {
52
52
  var _a, _b;
53
53
  let { args: { name }, flags: { json: jsonFlag }, } = this.parse(BranchDelete);
54
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
55
- if (!projectDir) {
56
- throw new Error('Please run this command inside a project directory.');
57
- }
54
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
58
55
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
59
56
  const fullName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
60
57
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
@@ -42,10 +42,7 @@ exports.listBranchesAsync = listBranchesAsync;
42
42
  class BranchList extends EasCommand_1.default {
43
43
  async runAsync() {
44
44
  const { flags } = this.parse(BranchList);
45
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
46
- if (!projectDir) {
47
- throw new Error('Please run this command inside a project directory.');
48
- }
45
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
49
46
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
50
47
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
51
48
  const branches = await listBranchesAsync({ projectId });
@@ -64,10 +64,7 @@ class BranchPublish extends EasCommand_1.default {
64
64
  const platformFlag = this.parse(BranchPublish).flags.platform;
65
65
  // If a group was specified, that means we are republishing it.
66
66
  republish = group ? true : republish;
67
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
68
- if (!projectDir) {
69
- throw new Error('Please run this command inside a project directory.');
70
- }
67
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
71
68
  const { exp } = (0, config_1.getConfig)(projectDir, {
72
69
  skipSDKVersionRequirement: true,
73
70
  isPublicConfig: true,
@@ -162,7 +159,7 @@ class BranchPublish extends EasCommand_1.default {
162
159
  const assetSpinner = (0, ora_1.ora)('Uploading assets...').start();
163
160
  try {
164
161
  const platforms = platformFlag === 'all' ? exports.defaultPublishPlatforms : [platformFlag];
165
- const assets = (0, publish_1.collectAssets)({ inputDir: inputDir, platforms });
162
+ const assets = await (0, publish_1.collectAssetsAsync)({ inputDir: inputDir, platforms });
166
163
  await (0, publish_1.uploadAssetsAsync)(assets);
167
164
  unsortedUpdateInfoGroups = await (0, publish_1.buildUnsortedUpdateInfoGroupAsync)(assets, exp);
168
165
  assetSpinner.succeed('Uploaded assets!');
@@ -34,10 +34,7 @@ async function renameUpdateBranchOnAppAsync({ appId, name, newName, }) {
34
34
  class BranchRename extends EasCommand_1.default {
35
35
  async runAsync() {
36
36
  let { flags: { json: jsonFlag, from: currentName, to: newName }, } = this.parse(BranchRename);
37
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
38
- if (!projectDir) {
39
- throw new Error('Please run this command inside a project directory.');
40
- }
37
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
41
38
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
42
39
  const fullName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
43
40
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
@@ -60,10 +60,7 @@ exports.viewUpdateBranchAsync = viewUpdateBranchAsync;
60
60
  class BranchView extends EasCommand_1.default {
61
61
  async runAsync() {
62
62
  let { args: { name }, flags: { json: jsonFlag }, } = this.parse(BranchView);
63
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
64
- if (!projectDir) {
65
- throw new Error('Please run this command inside a project directory.');
66
- }
63
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
67
64
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
68
65
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
69
66
  if (!name) {
@@ -90,9 +90,8 @@ async function ensureBuildExistsAsync(buildId) {
90
90
  }
91
91
  class BuildCancel extends EasCommand_1.default {
92
92
  async runAsync() {
93
- var _a;
94
93
  const { BUILD_ID: buildIdFromArg } = this.parse(BuildCancel).args;
95
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
94
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
96
95
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
97
96
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
98
97
  const projectFullName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
@@ -11,14 +11,14 @@ const projectUtils_1 = require("../../project/projectUtils");
11
11
  const prompts_1 = require("../../prompts");
12
12
  class BuildConfigure extends EasCommand_1.default {
13
13
  async runAsync() {
14
- var _a, _b;
14
+ var _a;
15
15
  const { flags } = this.parse(BuildConfigure);
16
16
  log_1.default.log('💡 The following process will configure your iOS and/or Android project to be compatible with EAS Build. These changes only apply to your local project files and you can safely revert them at any time.');
17
17
  log_1.default.newLine();
18
18
  const platform = (_a = flags.platform) !== null && _a !== void 0 ? _a : (await promptForPlatformAsync());
19
19
  await (0, configure_1.configureAsync)({
20
20
  platform,
21
- projectDir: (_b = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _b !== void 0 ? _b : process.cwd(),
21
+ projectDir: await (0, projectUtils_1.findProjectRootAsync)(),
22
22
  });
23
23
  log_1.default.newLine();
24
24
  logSuccess(platform);
@@ -7,6 +7,7 @@ const eas_json_1 = require("@expo/eas-json");
7
7
  const command_1 = require("@oclif/command");
8
8
  const errors_1 = require("@oclif/errors");
9
9
  const chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
10
+ const nullthrows_1 = (0, tslib_1.__importDefault)(require("nullthrows"));
10
11
  const build_1 = require("../../build/android/build");
11
12
  const build_2 = require("../../build/build");
12
13
  const configure_1 = require("../../build/configure");
@@ -42,7 +43,7 @@ class Build extends EasCommand_1.default {
42
43
  }
43
44
  const flags = await this.sanitizeFlagsAsync(rawFlags);
44
45
  const { requestedPlatform } = flags;
45
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
46
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
46
47
  await handleDeprecatedEasJsonAsync(projectDir, flags.nonInteractive);
47
48
  await vcs_1.default.ensureRepoExistsAsync();
48
49
  await (0, repository_1.ensureRepoIsCleanAsync)(flags.nonInteractive);
@@ -55,8 +56,9 @@ class Build extends EasCommand_1.default {
55
56
  nonInteractive: flags.nonInteractive,
56
57
  });
57
58
  const startedBuilds = [];
59
+ const buildCtxByPlatform = {};
58
60
  for (const platform of platforms) {
59
- const maybeBuild = await this.prepareAndStartBuildAsync({
61
+ const { build: maybeBuild, buildCtx } = await this.prepareAndStartBuildAsync({
60
62
  projectDir,
61
63
  platform,
62
64
  flags,
@@ -65,6 +67,7 @@ class Build extends EasCommand_1.default {
65
67
  if (maybeBuild) {
66
68
  startedBuilds.push(maybeBuild);
67
69
  }
70
+ buildCtxByPlatform[(0, AppPlatform_1.toAppPlatform)(platform)] = buildCtx;
68
71
  }
69
72
  if (flags.local) {
70
73
  return;
@@ -76,10 +79,11 @@ class Build extends EasCommand_1.default {
76
79
  if (flags.autoSubmit) {
77
80
  for (const build of startedBuilds) {
78
81
  const submission = await this.prepareAndStartSubmissionAsync({
79
- projectDir,
80
82
  build,
83
+ credentialsCtx: (0, nullthrows_1.default)((_a = buildCtxByPlatform[build.platform]) === null || _a === void 0 ? void 0 : _a.credentialsCtx),
81
84
  flags,
82
85
  moreBuilds: startedBuilds.length > 1,
86
+ projectDir,
83
87
  });
84
88
  submissions.push(submission);
85
89
  }
@@ -166,7 +170,11 @@ class Build extends EasCommand_1.default {
166
170
  if (!buildCtx.local && !(await (0, isEasEnabledForProject_1.isEasEnabledForProjectAsync)(buildCtx.projectId))) {
167
171
  (0, errors_1.error)(isEasEnabledForProject_1.EAS_UNAVAILABLE_MESSAGE, { exit: 1 });
168
172
  }
169
- return await this.startBuildAsync(buildCtx);
173
+ const build = await this.startBuildAsync(buildCtx);
174
+ return {
175
+ build,
176
+ buildCtx,
177
+ };
170
178
  }
171
179
  async startBuildAsync(ctx) {
172
180
  let sendBuildRequestAsync;
@@ -178,12 +186,12 @@ class Build extends EasCommand_1.default {
178
186
  }
179
187
  return await sendBuildRequestAsync();
180
188
  }
181
- async prepareAndStartSubmissionAsync({ projectDir, build, flags, moreBuilds, }) {
189
+ async prepareAndStartSubmissionAsync({ build, credentialsCtx, flags, moreBuilds, projectDir, }) {
182
190
  const easJsonReader = new eas_json_1.EasJsonReader(projectDir);
183
191
  const platform = (0, AppPlatform_1.toPlatform)(build.platform);
184
192
  const buildProfile = await easJsonReader.readBuildProfileAsync(platform, flags.profile);
185
193
  const submitProfile = await easJsonReader.readSubmitProfileAsync(platform, flags.submitProfile);
186
- const submissionCtx = (0, context_2.createSubmissionContext)({
194
+ const submissionCtx = await (0, context_2.createSubmissionContextAsync)({
187
195
  platform,
188
196
  projectDir,
189
197
  projectId: build.project.id,
@@ -191,6 +199,7 @@ class Build extends EasCommand_1.default {
191
199
  archiveFlags: { id: build.id },
192
200
  nonInteractive: flags.nonInteractive,
193
201
  env: buildProfile.env,
202
+ credentialsCtx,
194
203
  });
195
204
  if (moreBuilds) {
196
205
  log_1.default.newLine();
@@ -16,7 +16,6 @@ const projectUtils_1 = require("../../project/projectUtils");
16
16
  const json_1 = require("../../utils/json");
17
17
  class BuildList extends EasCommand_1.default {
18
18
  async runAsync() {
19
- var _a;
20
19
  const { flags } = this.parse(BuildList);
21
20
  const { json, platform: requestedPlatform, status: buildStatus, distribution: buildDistribution, limit = 10, } = flags;
22
21
  if (json) {
@@ -25,7 +24,7 @@ class BuildList extends EasCommand_1.default {
25
24
  const platform = toAppPlatform(requestedPlatform);
26
25
  const graphqlBuildStatus = toGraphQLBuildStatus(buildStatus);
27
26
  const graphqlBuildDistribution = toGraphQLBuildDistribution(buildDistribution);
28
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
27
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
29
28
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
30
29
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
31
30
  const projectName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
@@ -12,12 +12,11 @@ const projectUtils_1 = require("../../project/projectUtils");
12
12
  const json_1 = require("../../utils/json");
13
13
  class BuildView extends EasCommand_1.default {
14
14
  async runAsync() {
15
- var _a;
16
15
  const { args: { BUILD_ID: buildId }, flags, } = this.parse(BuildView);
17
16
  if (flags.json) {
18
17
  (0, json_1.enableJsonOutput)();
19
18
  }
20
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
19
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
21
20
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
22
21
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
23
22
  const projectName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
@@ -39,10 +39,7 @@ async function createUpdateChannelOnAppAsync({ appId, channelName, branchId, })
39
39
  class ChannelCreate extends EasCommand_1.default {
40
40
  async runAsync() {
41
41
  let { args: { name: channelName }, flags: { json: jsonFlag }, } = this.parse(ChannelCreate);
42
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
43
- if (!projectDir) {
44
- throw new Error('Please run this command inside a project directory.');
45
- }
42
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
46
43
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
47
44
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
48
45
  if (!channelName) {
@@ -62,10 +62,7 @@ exports.updateChannelBranchMappingAsync = updateChannelBranchMappingAsync;
62
62
  class ChannelEdit extends EasCommand_1.default {
63
63
  async runAsync() {
64
64
  let { args: { name: channelName }, flags: { branch: branchName, json: jsonFlag }, } = this.parse(ChannelEdit);
65
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
66
- if (!projectDir) {
67
- throw new Error('Please run this command inside a project directory.');
68
- }
65
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
69
66
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
70
67
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
71
68
  if (!channelName) {
@@ -54,10 +54,7 @@ class ChannelList extends EasCommand_1.default {
54
54
  async runAsync() {
55
55
  var _a;
56
56
  const { flags: { json: jsonFlag }, } = this.parse(ChannelList);
57
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
58
- if (!projectDir) {
59
- throw new Error('Please run this command inside a project directory.');
60
- }
57
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
61
58
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
62
59
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
63
60
  const getAllUpdateChannelForAppResult = await getAllUpdateChannelForAppAsync({
@@ -167,10 +167,7 @@ class ChannelRollout extends EasCommand_1.default {
167
167
  var _a, _b;
168
168
  const { args: { channel: channelName }, flags: { json: jsonFlag, end: endFlag }, } = this.parse(ChannelRollout);
169
169
  const { flags: { branch: branchName, percent }, } = this.parse(ChannelRollout);
170
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
171
- if (!projectDir) {
172
- throw new Error('Please run this command inside a project directory.');
173
- }
170
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
174
171
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
175
172
  const fullName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
176
173
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
@@ -147,10 +147,7 @@ class ChannelView extends EasCommand_1.default {
147
147
  async runAsync() {
148
148
  var _a;
149
149
  let { args: { name: channelName }, flags: { json: jsonFlag }, } = this.parse(ChannelView);
150
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
151
- if (!projectDir) {
152
- throw new Error('Please run this command inside a project directory.');
153
- }
150
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
154
151
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
155
152
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
156
153
  if (!channelName) {
@@ -17,10 +17,9 @@ class Config extends EasCommand_1.default {
17
17
  this.requiresAuthentication = false;
18
18
  }
19
19
  async runAsync() {
20
- var _a;
21
20
  const { flags } = this.parse(Config);
22
21
  const { platform: maybePlatform, profile: maybeProfile } = flags;
23
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
22
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
24
23
  await (0, build_1.handleDeprecatedEasJsonAsync)(projectDir, false);
25
24
  const reader = new eas_json_1.EasJsonReader(projectDir);
26
25
  const profileName = maybeProfile !== null && maybeProfile !== void 0 ? maybeProfile : (await (0, prompts_1.selectAsync)('Select build profile', (await reader.getBuildProfileNamesAsync()).map(profileName => ({
@@ -4,9 +4,13 @@ const tslib_1 = require("tslib");
4
4
  const EasCommand_1 = (0, tslib_1.__importDefault)(require("../commandUtils/EasCommand"));
5
5
  const context_1 = require("../credentials/context");
6
6
  const SelectPlatform_1 = require("../credentials/manager/SelectPlatform");
7
+ const actions_1 = require("../user/actions");
7
8
  class Credentials extends EasCommand_1.default {
8
9
  async runAsync() {
9
- const ctx = await (0, context_1.createCredentialsContextAsync)(process.cwd(), {});
10
+ const ctx = new context_1.CredentialsContext({
11
+ projectDir: process.cwd(),
12
+ user: await (0, actions_1.ensureLoggedInAsync)(),
13
+ });
10
14
  await new SelectPlatform_1.SelectPlatform().runAsync(ctx);
11
15
  }
12
16
  }
@@ -15,9 +15,8 @@ const projectUtils_1 = require("../../project/projectUtils");
15
15
  const prompts_1 = require("../../prompts");
16
16
  class BuildList extends EasCommand_1.default {
17
17
  async runAsync() {
18
- var _a;
19
18
  let appleTeamIdentifier = this.parse(BuildList).flags['apple-team-id'];
20
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
19
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
21
20
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
22
21
  const accountName = await (0, projectUtils_1.getProjectAccountNameAsync)(exp);
23
22
  let spinner;
@@ -10,7 +10,6 @@ const ora_1 = require("../../ora");
10
10
  const projectUtils_1 = require("../../project/projectUtils");
11
11
  class DeviceView extends EasCommand_1.default {
12
12
  async runAsync() {
13
- var _a;
14
13
  const { UDID } = this.parse(DeviceView).args;
15
14
  if (!UDID) {
16
15
  log_1.default.log(`The device UDID is required to view a specific device. For example:
@@ -23,7 +22,7 @@ If you are not sure what is the UDID of the device you are looking for, run:
23
22
  `);
24
23
  throw new Error('Device UDID is missing');
25
24
  }
26
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
25
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
27
26
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
28
27
  const accountName = await (0, projectUtils_1.getProjectAccountNameAsync)(exp);
29
28
  const spinner = (0, ora_1.ora)().start(`Fetching device details for ${UDID}…`);
@@ -25,10 +25,7 @@ async function projectInfoByIdAsync(appId) {
25
25
  }
26
26
  class ProjectInfo extends EasCommand_1.default {
27
27
  async runAsync() {
28
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
29
- if (!projectDir) {
30
- throw new Error('Please run this command inside a project directory.');
31
- }
28
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
32
29
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
33
30
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
34
31
  const { app } = await projectInfoByIdAsync(projectId);
@@ -9,10 +9,7 @@ const projectUtils_1 = require("../../project/projectUtils");
9
9
  class ProjectInit extends EasCommand_1.default {
10
10
  async runAsync() {
11
11
  var _a, _b, _c, _d;
12
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
13
- if (!projectDir) {
14
- throw new Error('Please run this command inside a project directory.');
15
- }
12
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
16
13
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
17
14
  if ((_b = (_a = exp.extra) === null || _a === void 0 ? void 0 : _a.eas) === null || _b === void 0 ? void 0 : _b.projectId) {
18
15
  log_1.default.error(`app.json is already linked to project with ID: ${chalk_1.default.bold((_d = (_c = exp.extra) === null || _c === void 0 ? void 0 : _c.eas) === null || _d === void 0 ? void 0 : _d.projectId)}`);
@@ -16,10 +16,9 @@ const User_1 = require("../../user/User");
16
16
  const actions_1 = require("../../user/actions");
17
17
  class EnvironmentSecretCreate extends EasCommand_1.default {
18
18
  async runAsync() {
19
- var _a;
20
19
  const actor = await (0, actions_1.ensureLoggedInAsync)();
21
20
  let { flags: { name, value: secretValue, scope, force }, } = this.parse(EnvironmentSecretCreate);
22
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
21
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
23
22
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
24
23
  const accountName = await (0, projectUtils_1.getProjectAccountNameAsync)(exp);
25
24
  const { slug } = exp;
@@ -13,8 +13,7 @@ const projectUtils_1 = require("../../project/projectUtils");
13
13
  const prompts_1 = require("../../prompts");
14
14
  class EnvironmentSecretDelete extends EasCommand_1.default {
15
15
  async runAsync() {
16
- var _a;
17
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
16
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
18
17
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
19
18
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
20
19
  const projectAccountName = await (0, projectUtils_1.getProjectAccountNameAsync)(exp);
@@ -12,8 +12,7 @@ const isEasEnabledForProject_1 = require("../../project/isEasEnabledForProject")
12
12
  const projectUtils_1 = require("../../project/projectUtils");
13
13
  class EnvironmentSecretList extends EasCommand_1.default {
14
14
  async runAsync() {
15
- var _a;
16
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
15
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
17
16
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
18
17
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
19
18
  const projectAccountName = await (0, projectUtils_1.getProjectAccountNameAsync)(exp);
@@ -17,10 +17,9 @@ const submit_1 = require("../submit/submit");
17
17
  const urls_1 = require("../submit/utils/urls");
18
18
  class Submit extends EasCommand_1.default {
19
19
  async runAsync() {
20
- var _a;
21
20
  const { flags: rawFlags } = this.parse(Submit);
22
21
  const flags = await this.sanitizeFlagsAsync(rawFlags);
23
- const projectDir = (_a = (await (0, projectUtils_1.findProjectRootAsync)())) !== null && _a !== void 0 ? _a : process.cwd();
22
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
24
23
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
25
24
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
26
25
  if (!(await (0, isEasEnabledForProject_1.isEasEnabledForProjectAsync)(projectId))) {
@@ -33,7 +32,7 @@ class Submit extends EasCommand_1.default {
33
32
  const submissions = [];
34
33
  for (const platform of platforms) {
35
34
  const profile = await easJsonReader.readSubmitProfileAsync(platform, flags.profile);
36
- const ctx = (0, context_1.createSubmissionContext)({
35
+ const ctx = await (0, context_1.createSubmissionContextAsync)({
37
36
  platform,
38
37
  projectDir,
39
38
  projectId,
@@ -13,10 +13,7 @@ class WebhookCreate extends EasCommand_1.default {
13
13
  async runAsync() {
14
14
  const { flags } = this.parse(WebhookCreate);
15
15
  const webhookInputParams = await (0, input_1.prepareInputParamsAsync)(flags);
16
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
17
- if (!projectDir) {
18
- throw new Error('Please run this command inside a project directory.');
19
- }
16
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
20
17
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
21
18
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
22
19
  const spinner = (0, ora_1.ora)('Creating a webhook').start();
@@ -16,10 +16,7 @@ const formatWebhook_1 = require("../../webhooks/formatWebhook");
16
16
  class WebhookDelete extends EasCommand_1.default {
17
17
  async runAsync() {
18
18
  let { args: { ID: webhookId }, } = this.parse(WebhookDelete);
19
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
20
- if (!projectDir) {
21
- throw new Error('Please run this command inside a project directory.');
22
- }
19
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
23
20
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
24
21
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
25
22
  let webhook = webhookId && (await WebhookQuery_1.WebhookQuery.byIdAsync(webhookId));
@@ -14,10 +14,7 @@ const formatWebhook_1 = require("../../webhooks/formatWebhook");
14
14
  class WebhookList extends EasCommand_1.default {
15
15
  async runAsync() {
16
16
  const { flags: { event }, } = this.parse(WebhookList);
17
- const projectDir = await (0, projectUtils_1.findProjectRootAsync)(process.cwd());
18
- if (!projectDir) {
19
- throw new Error('Please run this command inside a project directory.');
20
- }
17
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
21
18
  const { exp } = (0, config_1.getConfig)(projectDir, { skipSDKVersionRequirement: true });
22
19
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
23
20
  const projectFullName = await (0, projectUtils_1.getProjectFullNameAsync)(exp);
@@ -1,6 +1,6 @@
1
1
  import { Platform } from '@expo/eas-build-job';
2
2
  import { CredentialsSource } from '@expo/eas-json';
3
- import { Context } from '../context';
3
+ import { CredentialsContext } from '../context';
4
4
  import { AppLookupParams } from './api/GraphqlClient';
5
5
  import { Keystore } from './credentials';
6
6
  export interface AndroidCredentials {
@@ -13,7 +13,7 @@ export default class AndroidCredentialsProvider {
13
13
  private ctx;
14
14
  private options;
15
15
  readonly platform = Platform.ANDROID;
16
- constructor(ctx: Context, options: Options);
16
+ constructor(ctx: CredentialsContext, options: Options);
17
17
  getCredentialsAsync(src: CredentialsSource.LOCAL | CredentialsSource.REMOTE): Promise<AndroidCredentials>;
18
18
  private getRemoteAsync;
19
19
  private toAndroidCredentials;