eas-cli 16.32.0 → 18.0.1

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 (50) hide show
  1. package/README.md +94 -92
  2. package/build/branch/queries.js +6 -1
  3. package/build/build/createContext.js +5 -3
  4. package/build/build/queries.js +13 -1
  5. package/build/build/runBuildAndSubmit.js +2 -0
  6. package/build/build/utils/devClient.d.ts +1 -0
  7. package/build/build/utils/devClient.js +3 -2
  8. package/build/build/utils/repository.js +3 -3
  9. package/build/build/utils/resourceClass.d.ts +1 -1
  10. package/build/build/utils/resourceClass.js +2 -2
  11. package/build/channel/queries.js +10 -1
  12. package/build/commandUtils/new/templates/AGENTS.md +0 -1
  13. package/build/commands/account/login.d.ts +1 -0
  14. package/build/commands/account/login.js +7 -2
  15. package/build/commands/env/create.js +5 -2
  16. package/build/commands/env/list.js +1 -5
  17. package/build/commands/update/index.js +2 -2
  18. package/build/commands/upload.js +3 -3
  19. package/build/credentials/ios/api/graphql/mutations/AppleDistributionCertificateMutation.js +1 -3
  20. package/build/devices/queries.js +23 -2
  21. package/build/graphql/mutations/EnvironmentVariableMutation.js +1 -4
  22. package/build/graphql/mutations/PublishMutation.js +1 -4
  23. package/build/graphql/mutations/UserPreferencesMutation.js +1 -3
  24. package/build/graphql/mutations/WorkflowRevisionMutation.js +2 -10
  25. package/build/graphql/queries/AppVersionQuery.js +1 -5
  26. package/build/log.js +1 -1
  27. package/build/ora.js +1 -1
  28. package/build/project/discourageExpoGoForProdAsync.d.ts +4 -0
  29. package/build/project/discourageExpoGoForProdAsync.js +46 -0
  30. package/build/rollout/actions/ManageRollout.js +5 -1
  31. package/build/rollout/actions/SelectRuntime.js +10 -1
  32. package/build/update/queries.js +28 -2
  33. package/build/user/SessionManager.d.ts +3 -2
  34. package/build/user/SessionManager.js +6 -6
  35. package/build/user/expoBrowserAuthFlowLauncher.d.ts +3 -0
  36. package/build/user/{expoSsoLauncher.js → expoBrowserAuthFlowLauncher.js} +21 -47
  37. package/build/user/fetchSessionSecretAndUserFromBrowserAuthFlow.d.ts +7 -0
  38. package/build/user/fetchSessionSecretAndUserFromBrowserAuthFlow.js +14 -0
  39. package/build/utils/prompts.js +3 -3
  40. package/build/utils/usage/checkForOverages.js +4 -2
  41. package/build/worker/mutations.js +2 -8
  42. package/oclif.manifest.json +8 -48
  43. package/package.json +60 -63
  44. package/build/commands/submit/upload-to-asc.d.ts +0 -12
  45. package/build/commands/submit/upload-to-asc.js +0 -217
  46. package/build/submit/ios/AscApiClient.d.ts +0 -247
  47. package/build/submit/ios/AscApiClient.js +0 -287
  48. package/build/user/expoSsoLauncher.d.ts +0 -3
  49. package/build/user/fetchSessionSecretAndSsoUser.d.ts +0 -5
  50. package/build/user/fetchSessionSecretAndSsoUser.js +0 -17
@@ -7,8 +7,8 @@ const core_1 = require("@oclif/core");
7
7
  const assert_1 = tslib_1.__importDefault(require("assert"));
8
8
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
9
9
  const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
10
- const fetchSessionSecretAndSsoUser_1 = require("./fetchSessionSecretAndSsoUser");
11
10
  const fetchSessionSecretAndUser_1 = require("./fetchSessionSecretAndUser");
11
+ const fetchSessionSecretAndUserFromBrowserAuthFlow_1 = require("./fetchSessionSecretAndUserFromBrowserAuthFlow");
12
12
  const ApiV2Error_1 = require("../ApiV2Error");
13
13
  const api_1 = require("../api");
14
14
  const createGraphqlClient_1 = require("../commandUtils/context/contextUtils/createGraphqlClient");
@@ -102,15 +102,15 @@ class SessionManager {
102
102
  *
103
103
  * @deprecated Should not be used outside of context functions, except in the AccountLogin command.
104
104
  */
105
- async showLoginPromptAsync({ nonInteractive = false, printNewLine = false, sso = false, } = {}) {
105
+ async showLoginPromptAsync({ nonInteractive = false, printNewLine = false, sso = false, browser = false, } = {}) {
106
106
  if (nonInteractive) {
107
107
  core_1.Errors.error(`Either log in with ${chalk_1.default.bold('eas login')} or set the ${chalk_1.default.bold('EXPO_TOKEN')} environment variable if you're using EAS CLI on CI (${(0, log_1.learnMore)('https://docs.expo.dev/accounts/programmatic-access/', { dim: false })})`);
108
108
  }
109
109
  if (printNewLine) {
110
110
  log_1.default.newLine();
111
111
  }
112
- if (sso) {
113
- await this.ssoLoginAsync();
112
+ if (sso || browser) {
113
+ await this.browserLoginAsync({ sso });
114
114
  return;
115
115
  }
116
116
  log_1.default.log(`Log in to EAS with email or username (exit and run ${chalk_1.default.bold('eas login --help')} to see other login options)`);
@@ -141,8 +141,8 @@ class SessionManager {
141
141
  }
142
142
  }
143
143
  }
144
- async ssoLoginAsync() {
145
- const { sessionSecret, id, username } = await (0, fetchSessionSecretAndSsoUser_1.fetchSessionSecretAndSsoUserAsync)();
144
+ async browserLoginAsync({ sso = false }) {
145
+ const { sessionSecret, id, username } = await (0, fetchSessionSecretAndUserFromBrowserAuthFlow_1.fetchSessionSecretAndUserFromBrowserAuthFlowAsync)({ sso });
146
146
  await this.setSessionAsync({
147
147
  sessionSecret,
148
148
  userId: id,
@@ -0,0 +1,3 @@
1
+ export declare function getSessionUsingBrowserAuthFlowAsync({ sso }: {
2
+ sso?: boolean | undefined;
3
+ }): Promise<string>;
@@ -6,55 +6,37 @@ const assert_1 = tslib_1.__importDefault(require("assert"));
6
6
  const better_opn_1 = tslib_1.__importDefault(require("better-opn"));
7
7
  const http_1 = tslib_1.__importDefault(require("http"));
8
8
  const querystring_1 = tslib_1.__importDefault(require("querystring"));
9
+ const api_1 = require("../api");
9
10
  const log_1 = tslib_1.__importDefault(require("../log"));
10
- const successBody = `
11
- <!DOCTYPE html>
12
- <html lang="en">
13
- <head>
14
- <title>Expo SSO Login</title>
15
- <meta charset="utf-8">
16
- <style type="text/css">
17
- html {
18
- margin: 0;
19
- padding: 0
20
- }
21
-
22
- body {
23
- background-color: #fff;
24
- font-family: Tahoma,Verdana;
25
- font-size: 16px;
26
- color: #000;
27
- max-width: 100%;
28
- box-sizing: border-box;
29
- padding: .5rem;
30
- margin: 1em;
31
- overflow-wrap: break-word
32
- }
33
- </style>
34
- </head>
35
- <body>
36
- SSO login complete. You may now close this tab and return to the command prompt.
37
- </body>
38
- </html>`;
39
- async function getSessionUsingBrowserAuthFlowAsync({ expoWebsiteUrl, }) {
11
+ async function getSessionUsingBrowserAuthFlowAsync({ sso = false }) {
40
12
  const scheme = 'http';
41
13
  const hostname = 'localhost';
42
14
  const path = '/auth/callback';
43
- const buildExpoSsoLoginUrl = (port) => {
44
- const data = {
15
+ const expoWebsiteUrl = (0, api_1.getExpoWebsiteBaseUrl)();
16
+ const buildExpoLoginUrl = (port, sso) => {
17
+ const params = querystring_1.default.stringify({
18
+ confirm_account: true,
45
19
  app_redirect_uri: `${scheme}://${hostname}:${port}${path}`,
46
- };
47
- const params = querystring_1.default.stringify(data);
48
- return `${expoWebsiteUrl}/sso-login?${params}`;
20
+ });
21
+ return `${expoWebsiteUrl}${sso ? '/sso-login' : '/login'}?${params}`;
49
22
  };
50
23
  // Start server and begin auth flow
51
24
  const executeAuthFlow = () => {
52
25
  return new Promise(async (resolve, reject) => {
53
26
  const connections = new Set();
54
27
  const server = http_1.default.createServer((request, response) => {
28
+ const redirectAndCleanup = (result) => {
29
+ const redirectUrl = `${expoWebsiteUrl}/oauth/expo-cli?result=${result}`;
30
+ response.writeHead(302, { Location: redirectUrl });
31
+ response.end();
32
+ server.close();
33
+ for (const connection of connections) {
34
+ connection.destroy();
35
+ }
36
+ };
55
37
  try {
56
38
  if (!(request.method === 'GET' && request.url?.includes('/auth/callback'))) {
57
- throw new Error('Unexpected SSO login response.');
39
+ throw new Error('Unexpected login response.');
58
40
  }
59
41
  const url = new URL(request.url, `http:${request.headers.host}`);
60
42
  const sessionSecret = url.searchParams.get('session_secret');
@@ -62,27 +44,19 @@ async function getSessionUsingBrowserAuthFlowAsync({ expoWebsiteUrl, }) {
62
44
  throw new Error('Request missing session_secret search parameter.');
63
45
  }
64
46
  resolve(sessionSecret);
65
- response.writeHead(200, { 'Content-Type': 'text/html' });
66
- response.write(successBody);
67
- response.end();
47
+ redirectAndCleanup('success');
68
48
  }
69
49
  catch (error) {
50
+ redirectAndCleanup('error');
70
51
  reject(error);
71
52
  }
72
- finally {
73
- server.close();
74
- // Ensure that the server shuts down
75
- for (const connection of connections) {
76
- connection.destroy();
77
- }
78
- }
79
53
  });
80
54
  server.listen(0, hostname, () => {
81
55
  log_1.default.log('Waiting for browser login...');
82
56
  const address = server.address();
83
57
  (0, assert_1.default)(address !== null && typeof address === 'object', 'Server address and port should be set after listening has begun');
84
58
  const port = address.port;
85
- const authorizeUrl = buildExpoSsoLoginUrl(port);
59
+ const authorizeUrl = buildExpoLoginUrl(port, sso);
86
60
  log_1.default.log(`If your browser doesn't automatically open, visit this link to log in: ${authorizeUrl}`);
87
61
  void (0, better_opn_1.default)(authorizeUrl);
88
62
  });
@@ -0,0 +1,7 @@
1
+ export declare function fetchSessionSecretAndUserFromBrowserAuthFlowAsync({ sso }: {
2
+ sso?: boolean | undefined;
3
+ }): Promise<{
4
+ sessionSecret: string;
5
+ id: string;
6
+ username: string;
7
+ }>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchSessionSecretAndUserFromBrowserAuthFlowAsync = fetchSessionSecretAndUserFromBrowserAuthFlowAsync;
4
+ const expoBrowserAuthFlowLauncher_1 = require("./expoBrowserAuthFlowLauncher");
5
+ const fetchUser_1 = require("./fetchUser");
6
+ async function fetchSessionSecretAndUserFromBrowserAuthFlowAsync({ sso = false }) {
7
+ const sessionSecret = await (0, expoBrowserAuthFlowLauncher_1.getSessionUsingBrowserAuthFlowAsync)({ sso });
8
+ const userData = await (0, fetchUser_1.fetchUserAsync)({ sessionSecret });
9
+ return {
10
+ sessionSecret,
11
+ id: userData.id,
12
+ username: userData.username,
13
+ };
14
+ }
@@ -28,7 +28,7 @@ async function getProjectEnvironmentVariableEnvironmentsAsync(graphqlClient, pro
28
28
  const CUSTOM_ENVIRONMENT_VALUE = '~~CUSTOM~~';
29
29
  async function promptVariableTypeAsync(nonInteractive, initialType) {
30
30
  if (nonInteractive) {
31
- throw new Error('The `--type` flag must be set when running in `--non-interactive` mode.');
31
+ throw new Error('The `--type` flag must be set when running in `--non-interactive` mode. Valid values: string, file.');
32
32
  }
33
33
  const options = [
34
34
  {
@@ -75,7 +75,7 @@ async function promptCustomEnvironmentAsync() {
75
75
  }
76
76
  async function promptVariableVisibilityAsync(nonInteractive, selectedVisibility) {
77
77
  if (nonInteractive) {
78
- throw new Error('The `--visibility` flag must be set when running in `--non-interactive` mode.');
78
+ throw new Error('The `--visibility` flag must be set when running in `--non-interactive` mode. Valid values: plaintext, sensitive, secret.');
79
79
  }
80
80
  return await (0, prompts_1.selectAsync)('Select visibility:', [
81
81
  {
@@ -97,7 +97,7 @@ async function promptVariableVisibilityAsync(nonInteractive, selectedVisibility)
97
97
  }
98
98
  async function promptVariableEnvironmentAsync({ nonInteractive, selectedEnvironments, multiple = false, canEnterCustomEnvironment = false, graphqlClient, projectId, }) {
99
99
  if (nonInteractive) {
100
- throw new Error('The `--environment` flag must be set when running in `--non-interactive` mode.');
100
+ throw new Error(`The \`--environment\` flag must be set when running in \`--non-interactive\` mode. Default environments: ${DEFAULT_ENVIRONMENTS.join(', ')}.`);
101
101
  }
102
102
  let allEnvironments = DEFAULT_ENVIRONMENTS;
103
103
  if (graphqlClient && projectId) {
@@ -42,8 +42,10 @@ function createProgressBar(percentUsed, width = 30) {
42
42
  return `${filled}${empty}`;
43
43
  }
44
44
  function displayOverageWarning({ percentUsed, hasFreePlan, name, }) {
45
- log_1.default.warn(chalk_1.default.bold(`You've used ${percentUsed}% of your included build credits for this month. `) +
46
- createProgressBar(percentUsed));
45
+ const message = chalk_1.default.bold(`You've used ${percentUsed}% of your included build credits for this month.`);
46
+ // Don't show progress bar at 100% - it's redundant when the limit is reached
47
+ const progressBar = percentUsed < 100 ? ' ' + createProgressBar(percentUsed) : '';
48
+ log_1.default.warn(message + progressBar);
47
49
  const billingUrl = `https://expo.dev/accounts/${name}/settings/billing`;
48
50
  const warning = hasFreePlan
49
51
  ? "You won't be able to start new builds once you reach the limit. " +
@@ -14,10 +14,7 @@ exports.DeploymentsMutation = {
14
14
  .mutation((0, graphql_tag_1.default) `
15
15
  mutation createDeploymentUrlMutation($appId: ID!, $deploymentIdentifier: ID) {
16
16
  deployments {
17
- createSignedDeploymentUrl(
18
- appId: $appId
19
- deploymentIdentifier: $deploymentIdentifier
20
- ) {
17
+ createSignedDeploymentUrl(appId: $appId, deploymentIdentifier: $deploymentIdentifier) {
21
18
  pendingWorkerDeploymentId
22
19
  deploymentIdentifier
23
20
  url
@@ -95,10 +92,7 @@ exports.DeploymentsMutation = {
95
92
  .mutation((0, graphql_tag_1.default) `
96
93
  mutation DeleteDeployment($appId: ID!, $deploymentIdentifier: ID!) {
97
94
  deployments {
98
- deleteWorkerDeploymentByIdentifier(
99
- appId: $appId
100
- deploymentIdentifier: $deploymentIdentifier
101
- ) {
95
+ deleteWorkerDeploymentByIdentifier(appId: $appId, deploymentIdentifier: $deploymentIdentifier) {
102
96
  id
103
97
  deploymentIdentifier
104
98
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "16.32.0",
2
+ "version": "18.0.1",
3
3
  "commands": {
4
4
  "analytics": {
5
5
  "id": "analytics",
@@ -298,6 +298,13 @@
298
298
  "char": "s",
299
299
  "description": "Login with SSO",
300
300
  "allowNo": false
301
+ },
302
+ "browser": {
303
+ "name": "browser",
304
+ "type": "boolean",
305
+ "char": "b",
306
+ "description": "Login with your browser",
307
+ "allowNo": false
301
308
  }
302
309
  },
303
310
  "args": {},
@@ -3287,53 +3294,6 @@
3287
3294
  "vcsClient": {}
3288
3295
  }
3289
3296
  },
3290
- "submit:upload-to-asc": {
3291
- "id": "submit:upload-to-asc",
3292
- "strict": true,
3293
- "pluginName": "eas-cli",
3294
- "pluginAlias": "eas-cli",
3295
- "pluginType": "core",
3296
- "hidden": true,
3297
- "aliases": [],
3298
- "flags": {
3299
- "path": {
3300
- "name": "path",
3301
- "type": "option",
3302
- "description": "Path to the IPA file",
3303
- "required": true,
3304
- "multiple": false
3305
- },
3306
- "key": {
3307
- "name": "key",
3308
- "type": "option",
3309
- "description": "Path to the ASC API Key JSON file",
3310
- "required": true,
3311
- "multiple": false
3312
- },
3313
- "app-id": {
3314
- "name": "app-id",
3315
- "type": "option",
3316
- "description": "App Store Connect App ID (e.g. 1491144534)",
3317
- "required": true,
3318
- "multiple": false
3319
- },
3320
- "bundle-version": {
3321
- "name": "bundle-version",
3322
- "type": "option",
3323
- "description": "CFBundleVersion (Build Version, e.g. 13)",
3324
- "required": true,
3325
- "multiple": false
3326
- },
3327
- "bundle-short-version": {
3328
- "name": "bundle-short-version",
3329
- "type": "option",
3330
- "description": "CFBundleShortVersionString (Marketing Version, e.g. 1.0.0)",
3331
- "required": true,
3332
- "multiple": false
3333
- }
3334
- },
3335
- "args": {}
3336
- },
3337
3297
  "update:configure": {
3338
3298
  "id": "update:configure",
3339
3299
  "description": "configure the project to support EAS Update",
package/package.json CHANGED
@@ -1,22 +1,57 @@
1
1
  {
2
2
  "name": "eas-cli",
3
+ "version": "18.0.1",
3
4
  "description": "EAS command line tool",
4
- "version": "16.32.0",
5
+ "keywords": [
6
+ "cli",
7
+ "eas",
8
+ "expo"
9
+ ],
10
+ "homepage": "https://github.com/expo/eas-cli",
11
+ "bugs": "https://github.com/expo/eas-cli/issues",
12
+ "license": "MIT",
5
13
  "author": "Expo <support@expo.dev>",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/expo/eas-cli.git",
17
+ "directory": "packages/eas-cli"
18
+ },
6
19
  "bin": {
7
20
  "eas": "./bin/run"
8
21
  },
9
- "bugs": "https://github.com/expo/eas-cli/issues",
22
+ "files": [
23
+ "/bin",
24
+ "/build",
25
+ "/oclif.manifest.json",
26
+ "/schema"
27
+ ],
28
+ "scripts": {
29
+ "postpack": "rimraf oclif.manifest.json",
30
+ "prepack": "yarn rebuild && node ./scripts/prepack.js",
31
+ "rebuild": "rimraf build *.tsbuildinfo && yarn build",
32
+ "build": "yarn typecheck-for-build && yarn copy-new-templates",
33
+ "build-allow-unused": "tsc --project tsconfig.allowUnused.json",
34
+ "watch": "yarn typecheck-for-build --watch --preserveWatchOutput",
35
+ "watch-allow-unused": "yarn build-allow-unused --watch --preserveWatchOutput",
36
+ "typecheck": "tsc",
37
+ "typecheck-for-build": "tsc --project tsconfig.build.json",
38
+ "test": "jest",
39
+ "version": "yarn oclif readme && node scripts/patch-readme && git add README.md",
40
+ "generate-graphql-code": "graphql-codegen --config graphql-codegen.yml",
41
+ "verify-graphql-code": "./scripts/verify-graphql.sh",
42
+ "clean": "rimraf dist build tmp node_modules yarn-error.log *.tsbuildinfo",
43
+ "copy-new-templates": "rimraf build/commandUtils/new/templates && mkdir -p build/commandUtils/new && cp -r src/commandUtils/new/templates build/commandUtils/new"
44
+ },
10
45
  "dependencies": {
11
46
  "@expo/apple-utils": "2.1.13",
12
47
  "@expo/code-signing-certificates": "0.0.5",
13
48
  "@expo/config": "10.0.6",
14
49
  "@expo/config-plugins": "9.0.12",
15
- "@expo/eas-build-job": "1.0.243",
16
- "@expo/eas-json": "16.30.0",
50
+ "@expo/eas-build-job": "18.0.1",
51
+ "@expo/eas-json": "18.0.1",
17
52
  "@expo/env": "^1.0.0",
18
53
  "@expo/json-file": "8.3.3",
19
- "@expo/logger": "1.0.221",
54
+ "@expo/logger": "18.0.1",
20
55
  "@expo/multipart-body-parser": "2.0.0",
21
56
  "@expo/osascript": "2.1.4",
22
57
  "@expo/package-manager": "1.9.10",
@@ -28,7 +63,7 @@
28
63
  "@expo/results": "1.0.0",
29
64
  "@expo/rudder-sdk-node": "1.1.1",
30
65
  "@expo/spawn-async": "1.7.2",
31
- "@expo/steps": "1.0.231",
66
+ "@expo/steps": "18.0.1",
32
67
  "@expo/timeago.js": "1.0.0",
33
68
  "@oclif/core": "^1.26.2",
34
69
  "@oclif/plugin-autocomplete": "^2.3.10",
@@ -61,7 +96,6 @@
61
96
  "invariant": "^2.2.2",
62
97
  "jks-js": "1.1.0",
63
98
  "joi": "17.11.0",
64
- "jsonwebtoken": "9.0.0",
65
99
  "keychain": "1.5.0",
66
100
  "log-symbols": "4.1.0",
67
101
  "mime": "3.0.0",
@@ -83,7 +117,7 @@
83
117
  "semver": "7.5.4",
84
118
  "set-interval-async": "3.0.3",
85
119
  "slash": "3.0.0",
86
- "tar": "6.2.1",
120
+ "tar": "7.5.7",
87
121
  "tar-stream": "3.1.7",
88
122
  "terminal-link": "2.1.1",
89
123
  "ts-deepmerge": "6.2.0",
@@ -100,7 +134,7 @@
100
134
  "@graphql-codegen/introspection": "4.0.0",
101
135
  "@graphql-codegen/typescript": "4.0.1",
102
136
  "@graphql-codegen/typescript-operations": "4.0.1",
103
- "@tsconfig/node18": "18.2.4",
137
+ "@tsconfig/node20": "20.1.8",
104
138
  "@types/cli-progress": "3.11.5",
105
139
  "@types/dateformat": "3.0.1",
106
140
  "@types/diff": "6.0.0",
@@ -109,7 +143,6 @@
109
143
  "@types/fs-extra": "11.0.4",
110
144
  "@types/getenv": "^1.0.0",
111
145
  "@types/invariant": "^2.2.37",
112
- "@types/jsonwebtoken": "8.5.1",
113
146
  "@types/mime": "3.0.1",
114
147
  "@types/node-fetch": "2.6.12",
115
148
  "@types/node-forge": "1.3.1",
@@ -133,23 +166,13 @@
133
166
  "ts-node": "10.9.2",
134
167
  "typescript": "5.5.4"
135
168
  },
136
- "engines": {
137
- "node": ">=18.0.0"
138
- },
139
- "files": [
140
- "/bin",
141
- "/build",
142
- "/oclif.manifest.json",
143
- "/schema"
144
- ],
145
- "homepage": "https://github.com/expo/eas-cli",
146
- "keywords": [
147
- "expo",
148
- "eas",
149
- "cli"
150
- ],
151
- "license": "MIT",
152
169
  "oclif": {
170
+ "additionalHelpFlags": [
171
+ "-h"
172
+ ],
173
+ "additionalVersionFlags": [
174
+ "-v"
175
+ ],
153
176
  "bin": "eas",
154
177
  "commands": "./build/commands",
155
178
  "plugins": [
@@ -173,6 +196,9 @@
173
196
  "device": {
174
197
  "description": "manage Apple devices for Internal Distribution"
175
198
  },
199
+ "env": {
200
+ "description": "manage project and account environment variables"
201
+ },
176
202
  "metadata": {
177
203
  "description": "manage store configuration"
178
204
  },
@@ -185,9 +211,6 @@
185
211
  "secret": {
186
212
  "description": "manage project and account secrets"
187
213
  },
188
- "env": {
189
- "description": "manage project and account environment variables"
190
- },
191
214
  "update": {
192
215
  "description": "manage individual updates"
193
216
  },
@@ -198,13 +221,9 @@
198
221
  "description": "manage workflows"
199
222
  }
200
223
  },
201
- "warn-if-update-available": {
202
- "timeoutInDays": 0.5,
203
- "message": "<%= chalk('★') %> <%= chalk.bold(config.name + '@' + latest) %> <%= chalk.bold('is now available.') %>\n<%= chalk.dim('To upgrade, run:') %>\n<%= chalk.dim(chalk.bold('npm install -g eas-cli')) %>\n<%= chalk.dim('Proceeding with outdated version.') %>\n"
204
- },
205
224
  "update": {
206
225
  "node": {
207
- "version": "18.6.0"
226
+ "version": "20.19.4"
208
227
  },
209
228
  "s3": {
210
229
  "templates": {
@@ -215,35 +234,13 @@
215
234
  }
216
235
  }
217
236
  },
218
- "additionalHelpFlags": [
219
- "-h"
220
- ],
221
- "additionalVersionFlags": [
222
- "-v"
223
- ]
224
- },
225
- "repository": {
226
- "type": "git",
227
- "url": "https://github.com/expo/eas-cli.git",
228
- "directory": "packages/eas-cli"
237
+ "warn-if-update-available": {
238
+ "message": "<%= chalk('★') %> <%= chalk.bold(config.name + '@' + latest) %> <%= chalk.bold('is now available.') %>\n<%= chalk.dim('To upgrade, run:') %>\n<%= chalk.dim(chalk.bold('npm install -g eas-cli')) %>\n<%= chalk.dim('Proceeding with outdated version.') %>\n",
239
+ "timeoutInDays": 0.5
240
+ }
229
241
  },
230
- "scripts": {
231
- "postpack": "rimraf oclif.manifest.json",
232
- "prepack": "yarn rebuild && node ./scripts/prepack.js",
233
- "rebuild": "rimraf build && yarn build",
234
- "pretarball-ci": "./scripts/pretarball-ci.sh",
235
- "build": "yarn typecheck-for-build && yarn copy-new-templates",
236
- "build-allow-unused": "tsc --project tsconfig.allowUnused.json",
237
- "watch": "yarn typecheck-for-build --watch --preserveWatchOutput",
238
- "watch-allow-unused": "yarn build-allow-unused --watch --preserveWatchOutput",
239
- "typecheck": "tsc",
240
- "typecheck-for-build": "tsc --project tsconfig.build.json",
241
- "test": "jest",
242
- "version": "yarn oclif readme && node scripts/patch-readme && git add README.md",
243
- "generate-graphql-code": "graphql-codegen --config graphql-codegen.yml",
244
- "verify-graphql-code": "./scripts/verify-graphql.sh",
245
- "clean": "rimraf dist build tmp node_modules yarn-error.log",
246
- "copy-new-templates": "rimraf build/commandUtils/new/templates && mkdir -p build/commandUtils/new && cp -r src/commandUtils/new/templates build/commandUtils/new"
242
+ "engines": {
243
+ "node": ">=20.0.0"
247
244
  },
248
- "gitHead": "079aa5dc666f1888b7867c64ef63f8df27c391a7"
245
+ "gitHead": "772d4dd654a71b0d88e73341106d417222dd401e"
249
246
  }
@@ -1,12 +0,0 @@
1
- import EasCommand from '../../commandUtils/EasCommand';
2
- export default class SubmitUploadToAsc extends EasCommand {
3
- static hidden: boolean;
4
- static flags: {
5
- path: import("@oclif/core/lib/interfaces").OptionFlag<string>;
6
- key: import("@oclif/core/lib/interfaces").OptionFlag<string>;
7
- 'app-id': import("@oclif/core/lib/interfaces").OptionFlag<string>;
8
- 'bundle-version': import("@oclif/core/lib/interfaces").OptionFlag<string>;
9
- 'bundle-short-version': import("@oclif/core/lib/interfaces").OptionFlag<string>;
10
- };
11
- runAsync(): Promise<void>;
12
- }