eas-cli 7.8.1 → 7.8.3

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 (38) hide show
  1. package/README.md +59 -59
  2. package/build/build/local.js +1 -1
  3. package/build/commands/build/version/get.js +1 -0
  4. package/build/commands/build/version/set.js +1 -0
  5. package/build/commands/build/version/sync.js +1 -0
  6. package/build/credentials/android/api/graphql/queries/GoogleServiceAccountKeyQuery.d.ts +7 -1
  7. package/build/credentials/android/api/graphql/queries/GoogleServiceAccountKeyQuery.js +41 -5
  8. package/build/credentials/ios/actions/DistributionCertificateUtils.js +7 -2
  9. package/build/credentials/ios/actions/PushKeyUtils.js +7 -2
  10. package/build/credentials/ios/actions/RemoveDistributionCertificate.js +8 -3
  11. package/build/credentials/ios/actions/RemovePushKey.js +7 -2
  12. package/build/credentials/ios/api/GraphqlClient.js +1 -1
  13. package/build/credentials/ios/api/graphql/queries/AppStoreConnectApiKeyQuery.d.ts +7 -1
  14. package/build/credentials/ios/api/graphql/queries/AppStoreConnectApiKeyQuery.js +41 -5
  15. package/build/credentials/ios/api/graphql/queries/AppleDeviceQuery.d.ts +11 -3
  16. package/build/credentials/ios/api/graphql/queries/AppleDeviceQuery.js +77 -53
  17. package/build/credentials/ios/api/graphql/queries/AppleDistributionCertificateQuery.d.ts +7 -1
  18. package/build/credentials/ios/api/graphql/queries/AppleDistributionCertificateQuery.js +41 -5
  19. package/build/credentials/ios/api/graphql/queries/ApplePushKeyQuery.d.ts +7 -1
  20. package/build/credentials/ios/api/graphql/queries/ApplePushKeyQuery.js +41 -5
  21. package/build/devices/actions/create/action.js +1 -1
  22. package/build/devices/actions/create/developerPortalMethod.d.ts +2 -2
  23. package/build/devices/actions/create/developerPortalMethod.js +5 -5
  24. package/build/graphql/generated.d.ts +279 -178
  25. package/build/project/android/applicationId.d.ts +2 -1
  26. package/build/project/android/applicationId.js +12 -3
  27. package/build/project/applicationIdentifier.d.ts +2 -1
  28. package/build/project/applicationIdentifier.js +3 -1
  29. package/build/project/ios/bundleIdentifier.d.ts +2 -1
  30. package/build/project/ios/bundleIdentifier.js +6 -2
  31. package/build/project/publish.js +5 -4
  32. package/build/project/resolveRuntimeVersionAsync.js +5 -4
  33. package/build/utils/expoUpdatesCli.d.ts +2 -0
  34. package/build/utils/expoUpdatesCli.js +12 -4
  35. package/build/utils/relay.d.ts +6 -0
  36. package/build/utils/relay.js +40 -1
  37. package/oclif.manifest.json +1 -1
  38. package/package.json +2 -2
@@ -2,12 +2,13 @@ import { ExpoConfig } from '@expo/config';
2
2
  import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
3
3
  import { Client } from '../../vcs/vcs';
4
4
  export declare const INVALID_BUNDLE_IDENTIFIER_MESSAGE = "Invalid format of iOS bundle identifier. Only alphanumeric characters, '.' and '-' are allowed, and each '.' must be followed by a letter.";
5
- export declare function ensureBundleIdentifierIsDefinedForManagedProjectAsync({ graphqlClient, projectDir, projectId, exp, vcsClient, }: {
5
+ export declare function ensureBundleIdentifierIsDefinedForManagedProjectAsync({ graphqlClient, projectDir, projectId, exp, vcsClient, nonInteractive, }: {
6
6
  graphqlClient: ExpoGraphqlClient;
7
7
  projectDir: string;
8
8
  projectId: string;
9
9
  exp: ExpoConfig;
10
10
  vcsClient: Client;
11
+ nonInteractive: boolean;
11
12
  }): Promise<string>;
12
13
  export declare class AmbiguousBundleIdentifierError extends Error {
13
14
  constructor(message?: string);
@@ -14,7 +14,7 @@ const prompts_1 = require("../../prompts");
14
14
  const projectUtils_1 = require("../projectUtils");
15
15
  const workflow_1 = require("../workflow");
16
16
  exports.INVALID_BUNDLE_IDENTIFIER_MESSAGE = `Invalid format of iOS bundle identifier. Only alphanumeric characters, '.' and '-' are allowed, and each '.' must be followed by a letter.`;
17
- async function ensureBundleIdentifierIsDefinedForManagedProjectAsync({ graphqlClient, projectDir, projectId, exp, vcsClient, }) {
17
+ async function ensureBundleIdentifierIsDefinedForManagedProjectAsync({ graphqlClient, projectDir, projectId, exp, vcsClient, nonInteractive, }) {
18
18
  const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.IOS, vcsClient);
19
19
  (0, assert_1.default)(workflow === eas_build_job_1.Workflow.MANAGED, 'This function should be called only for managed projects');
20
20
  try {
@@ -26,6 +26,7 @@ async function ensureBundleIdentifierIsDefinedForManagedProjectAsync({ graphqlCl
26
26
  projectDir,
27
27
  exp,
28
28
  projectId,
29
+ nonInteractive,
29
30
  });
30
31
  }
31
32
  }
@@ -74,8 +75,11 @@ async function getBundleIdentifierAsync(projectDir, exp, vcsClient, xcodeContext
74
75
  }
75
76
  }
76
77
  exports.getBundleIdentifierAsync = getBundleIdentifierAsync;
77
- async function configureBundleIdentifierAsync({ graphqlClient, projectDir, projectId, exp, }) {
78
+ async function configureBundleIdentifierAsync({ graphqlClient, projectDir, projectId, exp, nonInteractive, }) {
78
79
  var _a;
80
+ if (nonInteractive) {
81
+ throw new Error(`The "ios.bundleIdentifier" is required to be set in app config when running in non-interactive mode. ${(0, log_1.learnMore)('https://docs.expo.dev/versions/latest/config/app/#bundleidentifier')}`);
82
+ }
79
83
  const paths = (0, config_1.getConfigFilePaths)(projectDir);
80
84
  // we can't automatically update app.config.js
81
85
  if (paths.dynamicConfigPath) {
@@ -486,16 +486,17 @@ async function getRuntimeVersionForPlatformAsync({ exp, platform, projectDir, vc
486
486
  }
487
487
  if (await (0, projectUtils_1.isModernExpoUpdatesCLIWithRuntimeVersionCommandSupportedAsync)(projectDir)) {
488
488
  try {
489
+ log_1.default.debug('Using expo-updates runtimeversion:resolve CLI for runtime version resolution');
490
+ const extraArgs = log_1.default.isDebug ? ['--debug'] : [];
489
491
  const resolvedRuntimeVersionJSONResult = await (0, expoUpdatesCli_1.expoUpdatesCommandAsync)(projectDir, [
490
492
  'runtimeversion:resolve',
491
493
  '--platform',
492
494
  platform,
495
+ ...extraArgs,
493
496
  ]);
494
497
  const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);
495
- if (runtimeVersionResult.fingerprintSources) {
496
- log_1.default.debug(`Resolved fingeprint runtime version for platform "${platform}". Sources:`);
497
- log_1.default.debug(runtimeVersionResult.fingerprintSources);
498
- }
498
+ log_1.default.debug('runtimeversion:resolve output:');
499
+ log_1.default.debug(resolvedRuntimeVersionJSONResult);
499
500
  return (0, nullthrows_1.default)(runtimeVersionResult.runtimeVersion, `Unable to determine runtime version for ${platform_1.requestedPlatformDisplayNames[platform]}. ${(0, log_1.learnMore)('https://docs.expo.dev/eas-update/runtime-versions/')}`);
500
501
  }
501
502
  catch (e) {
@@ -14,16 +14,17 @@ async function resolveRuntimeVersionAsync({ exp, platform, projectDir, }) {
14
14
  return await config_plugins_1.Updates.getRuntimeVersionNullableAsync(projectDir, exp, platform);
15
15
  }
16
16
  try {
17
+ log_1.default.debug('Using expo-updates runtimeversion:resolve CLI for runtime version resolution');
18
+ const extraArgs = log_1.default.isDebug ? ['--debug'] : [];
17
19
  const resolvedRuntimeVersionJSONResult = await (0, expoUpdatesCli_1.expoUpdatesCommandAsync)(projectDir, [
18
20
  'runtimeversion:resolve',
19
21
  '--platform',
20
22
  platform,
23
+ ...extraArgs,
21
24
  ]);
22
25
  const runtimeVersionResult = JSON.parse(resolvedRuntimeVersionJSONResult);
23
- if (runtimeVersionResult.fingerprintSources) {
24
- log_1.default.debug(`Resolved fingeprint runtime version for platform "${platform}". Sources:`);
25
- log_1.default.debug(runtimeVersionResult.fingerprintSources);
26
- }
26
+ log_1.default.debug('runtimeversion:resolve output:');
27
+ log_1.default.debug(resolvedRuntimeVersionJSONResult);
27
28
  return (_a = runtimeVersionResult.runtimeVersion) !== null && _a !== void 0 ? _a : null;
28
29
  }
29
30
  catch (e) {
@@ -2,4 +2,6 @@ export declare class ExpoUpdatesCLIModuleNotFoundError extends Error {
2
2
  }
3
3
  export declare class ExpoUpdatesCLIInvalidCommandError extends Error {
4
4
  }
5
+ export declare class ExpoUpdatesCLICommandFailedError extends Error {
6
+ }
5
7
  export declare function expoUpdatesCommandAsync(projectDir: string, args: string[]): Promise<string>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.expoUpdatesCommandAsync = exports.ExpoUpdatesCLIInvalidCommandError = exports.ExpoUpdatesCLIModuleNotFoundError = void 0;
3
+ exports.expoUpdatesCommandAsync = exports.ExpoUpdatesCLICommandFailedError = exports.ExpoUpdatesCLIInvalidCommandError = exports.ExpoUpdatesCLIModuleNotFoundError = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const spawn_async_1 = tslib_1.__importDefault(require("@expo/spawn-async"));
6
6
  const resolve_from_1 = tslib_1.__importStar(require("resolve-from"));
@@ -11,6 +11,9 @@ exports.ExpoUpdatesCLIModuleNotFoundError = ExpoUpdatesCLIModuleNotFoundError;
11
11
  class ExpoUpdatesCLIInvalidCommandError extends Error {
12
12
  }
13
13
  exports.ExpoUpdatesCLIInvalidCommandError = ExpoUpdatesCLIInvalidCommandError;
14
+ class ExpoUpdatesCLICommandFailedError extends Error {
15
+ }
16
+ exports.ExpoUpdatesCLICommandFailedError = ExpoUpdatesCLICommandFailedError;
14
17
  async function expoUpdatesCommandAsync(projectDir, args) {
15
18
  var _a;
16
19
  let expoUpdatesCli;
@@ -25,11 +28,16 @@ async function expoUpdatesCommandAsync(projectDir, args) {
25
28
  throw e;
26
29
  }
27
30
  try {
28
- return (await (0, spawn_async_1.default)(expoUpdatesCli, args)).stdout;
31
+ return (await (0, spawn_async_1.default)(expoUpdatesCli, args, { stdio: 'pipe' })).stdout;
29
32
  }
30
33
  catch (e) {
31
- if (e.stderr && typeof e.stderr === 'string' && e.stderr.includes('Invalid command')) {
32
- throw new ExpoUpdatesCLIInvalidCommandError(`The command specified by ${args} was not valid in the \`expo-updates\` CLI.`);
34
+ if (e.stderr && typeof e.stderr === 'string') {
35
+ if (e.stderr.includes('Invalid command')) {
36
+ throw new ExpoUpdatesCLIInvalidCommandError(`The command specified by ${args} was not valid in the \`expo-updates\` CLI.`);
37
+ }
38
+ else {
39
+ throw new ExpoUpdatesCLICommandFailedError(e.stderr);
40
+ }
33
41
  }
34
42
  throw e;
35
43
  }
@@ -96,3 +96,9 @@ export declare const NEXT_PAGE_OPTION: {
96
96
  value: symbol;
97
97
  title: string;
98
98
  };
99
+ export type PaginatedGetterAsync<Node> = (relayArgs: QueryParams) => Promise<Connection<Node>>;
100
+ export declare const PAGE_SIZE = 20;
101
+ export declare function fetchEntireDatasetAsync<Node>({ paginatedGetterAsync, progressBarLabel, }: {
102
+ paginatedGetterAsync: PaginatedGetterAsync<Node>;
103
+ progressBarLabel?: string;
104
+ }): Promise<Node[]>;
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NEXT_PAGE_OPTION = exports.PREV_PAGE_OPTION = exports.selectPaginatedAsync = exports.FilterPagination = void 0;
3
+ exports.fetchEntireDatasetAsync = exports.PAGE_SIZE = exports.NEXT_PAGE_OPTION = exports.PREV_PAGE_OPTION = exports.selectPaginatedAsync = exports.FilterPagination = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const assert_1 = tslib_1.__importDefault(require("assert"));
6
+ const cli_progress_1 = tslib_1.__importDefault(require("cli-progress"));
6
7
  const prompts_1 = require("../prompts");
7
8
  /**
8
9
  *
@@ -218,3 +219,41 @@ async function selectPaginatedInternalAsync({ queryAsync, getTitleAsync, printed
218
219
  return selectedItem;
219
220
  }
220
221
  }
222
+ exports.PAGE_SIZE = 20;
223
+ async function fetchEntireDatasetAsync({ paginatedGetterAsync, progressBarLabel, }) {
224
+ var _a;
225
+ // No way to know the total count of items beforehand
226
+ let totalEstimatedWork = 10;
227
+ const queueProgressBar = new cli_progress_1.default.SingleBar({ format: `|{bar}| ${progressBarLabel}` }, cli_progress_1.default.Presets.rect);
228
+ const data = [];
229
+ let cursor = undefined;
230
+ let didStartProgressBar = false;
231
+ let progress = 0;
232
+ while (true) {
233
+ const connection = await paginatedGetterAsync({ first: exports.PAGE_SIZE, after: cursor });
234
+ const nodes = connection.edges.map(edge => edge.node);
235
+ const hasNextPage = connection.pageInfo.hasNextPage;
236
+ data.push(...nodes);
237
+ if (!hasNextPage) {
238
+ break;
239
+ }
240
+ cursor = (_a = connection.pageInfo.endCursor) !== null && _a !== void 0 ? _a : undefined;
241
+ if (!didStartProgressBar) {
242
+ // only show the progress bar if user has more than 1 page of items
243
+ queueProgressBar.start(totalEstimatedWork, 0);
244
+ didStartProgressBar = true;
245
+ }
246
+ progress++;
247
+ queueProgressBar.update(progress);
248
+ if (progress >= totalEstimatedWork) {
249
+ totalEstimatedWork = 8 * totalEstimatedWork;
250
+ queueProgressBar.setTotal(totalEstimatedWork);
251
+ }
252
+ }
253
+ if (didStartProgressBar) {
254
+ queueProgressBar.update(totalEstimatedWork);
255
+ queueProgressBar.stop();
256
+ }
257
+ return data;
258
+ }
259
+ exports.fetchEntireDatasetAsync = fetchEntireDatasetAsync;
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "7.8.1",
2
+ "version": "7.8.3",
3
3
  "commands": {
4
4
  "analytics": {
5
5
  "id": "analytics",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eas-cli",
3
3
  "description": "EAS command line tool",
4
- "version": "7.8.1",
4
+ "version": "7.8.3",
5
5
  "author": "Expo <support@expo.dev>",
6
6
  "bin": {
7
7
  "eas": "./bin/run"
@@ -223,5 +223,5 @@
223
223
  "node": "20.11.0",
224
224
  "yarn": "1.22.21"
225
225
  },
226
- "gitHead": "8b7d977b5b98db9f9a077c3cd4ba96da4bbefe19"
226
+ "gitHead": "61bb001059c997434fe1469813a83073177d9bff"
227
227
  }