eas-cli 16.8.0 → 16.10.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 (34) hide show
  1. package/README.md +105 -80
  2. package/build/build/android/prepareJob.js +1 -9
  3. package/build/build/context.d.ts +0 -1
  4. package/build/build/createContext.d.ts +1 -2
  5. package/build/build/createContext.js +1 -2
  6. package/build/build/ios/prepareJob.js +1 -9
  7. package/build/build/runBuildAndSubmit.d.ts +0 -1
  8. package/build/build/runBuildAndSubmit.js +3 -3
  9. package/build/build/types.d.ts +0 -1
  10. package/build/commandUtils/workflows.d.ts +20 -0
  11. package/build/commandUtils/workflows.js +21 -0
  12. package/build/commands/build/dev.js +0 -1
  13. package/build/commands/build/index.d.ts +0 -1
  14. package/build/commands/build/index.js +0 -6
  15. package/build/commands/build/inspect.js +0 -1
  16. package/build/commands/build/internal.js +0 -1
  17. package/build/commands/project/onboarding.js +0 -1
  18. package/build/commands/submit/internal.js +1 -0
  19. package/build/commands/submit.d.ts +1 -0
  20. package/build/commands/submit.js +8 -1
  21. package/build/commands/workflow/cancel.d.ts +13 -0
  22. package/build/commands/workflow/cancel.js +84 -0
  23. package/build/commands/workflow/runs.js +2 -17
  24. package/build/graphql/generated.d.ts +24 -2
  25. package/build/graphql/generated.js +2 -0
  26. package/build/graphql/mutations/WorkflowRunMutation.d.ts +3 -0
  27. package/build/graphql/mutations/WorkflowRunMutation.js +16 -0
  28. package/build/graphql/queries/AppQuery.js +1 -1
  29. package/build/graphql/queries/WorkflowRunQuery.js +1 -1
  30. package/build/submit/context.d.ts +2 -0
  31. package/build/submit/context.js +12 -1
  32. package/build/submit/ios/IosSubmitter.js +2 -1
  33. package/oclif.manifest.json +30 -8
  34. package/package.json +3 -3
@@ -36,10 +36,7 @@ async function prepareJobAsync(ctx, jobData) {
36
36
  ? (0, customBuildConfig_1.getCustomBuildConfigPathForJob)(buildProfile.config)
37
37
  : undefined;
38
38
  let buildMode;
39
- if (ctx.repack) {
40
- buildMode = eas_build_job_1.BuildMode.REPACK;
41
- }
42
- else if (buildProfile.config) {
39
+ if (buildProfile.config) {
43
40
  buildMode = eas_build_job_1.BuildMode.CUSTOM;
44
41
  }
45
42
  else {
@@ -94,11 +91,6 @@ async function prepareJobAsync(ctx, jobData) {
94
91
  path: maybeCustomBuildConfigPath,
95
92
  },
96
93
  }),
97
- ...(ctx.repack && {
98
- customBuildConfig: {
99
- path: '__eas/repack.yml',
100
- },
101
- }),
102
94
  loggerLevel: ctx.loggerLevel,
103
95
  // Technically, these are unused, but let's include them here for type consistency.
104
96
  // See: https://github.com/expo/eas-build/pull/454
@@ -57,7 +57,6 @@ export interface BuildContext<T extends Platform> {
57
57
  requiredPackageManager: NodePackageManager['name'] | null;
58
58
  vcsClient: Client;
59
59
  loggerLevel?: LoggerLevel;
60
- repack: boolean;
61
60
  isVerboseLoggingEnabled: boolean;
62
61
  env: Record<string, string>;
63
62
  }
@@ -9,7 +9,7 @@ import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGr
9
9
  import { CustomBuildConfigMetadata } from '../project/customBuildConfig';
10
10
  import { Actor } from '../user/User';
11
11
  import { Client } from '../vcs/vcs';
12
- export declare function createBuildContextAsync<T extends Platform>({ buildProfileName, buildProfile, easJsonCliConfig, clearCache, localBuildOptions, nonInteractive, noWait, platform, projectDir, resourceClassFlag, message, actor, graphqlClient, analytics, vcsClient, getDynamicPrivateProjectConfigAsync, customBuildConfigMetadata, buildLoggerLevel, freezeCredentials, repack, isVerboseLoggingEnabled, env, }: {
12
+ export declare function createBuildContextAsync<T extends Platform>({ buildProfileName, buildProfile, easJsonCliConfig, clearCache, localBuildOptions, nonInteractive, noWait, platform, projectDir, resourceClassFlag, message, actor, graphqlClient, analytics, vcsClient, getDynamicPrivateProjectConfigAsync, customBuildConfigMetadata, buildLoggerLevel, freezeCredentials, isVerboseLoggingEnabled, env, }: {
13
13
  buildProfileName: string;
14
14
  buildProfile: BuildProfile<T>;
15
15
  easJsonCliConfig: EasJson['cli'];
@@ -29,7 +29,6 @@ export declare function createBuildContextAsync<T extends Platform>({ buildProfi
29
29
  customBuildConfigMetadata?: CustomBuildConfigMetadata;
30
30
  buildLoggerLevel?: LoggerLevel;
31
31
  freezeCredentials: boolean;
32
- repack: boolean;
33
32
  isVerboseLoggingEnabled: boolean;
34
33
  env: Record<string, string>;
35
34
  }): Promise<BuildContext<T>>;
@@ -16,7 +16,7 @@ const AnalyticsManager_1 = require("../analytics/AnalyticsManager");
16
16
  const context_1 = require("../credentials/context");
17
17
  const projectUtils_1 = require("../project/projectUtils");
18
18
  const workflow_1 = require("../project/workflow");
19
- async function createBuildContextAsync({ buildProfileName, buildProfile, easJsonCliConfig, clearCache = false, localBuildOptions, nonInteractive, noWait, platform, projectDir, resourceClassFlag, message, actor, graphqlClient, analytics, vcsClient, getDynamicPrivateProjectConfigAsync, customBuildConfigMetadata, buildLoggerLevel, freezeCredentials, repack, isVerboseLoggingEnabled, env, }) {
19
+ async function createBuildContextAsync({ buildProfileName, buildProfile, easJsonCliConfig, clearCache = false, localBuildOptions, nonInteractive, noWait, platform, projectDir, resourceClassFlag, message, actor, graphqlClient, analytics, vcsClient, getDynamicPrivateProjectConfigAsync, customBuildConfigMetadata, buildLoggerLevel, freezeCredentials, isVerboseLoggingEnabled, env, }) {
20
20
  const { exp, projectId } = await getDynamicPrivateProjectConfigAsync({
21
21
  env,
22
22
  });
@@ -90,7 +90,6 @@ async function createBuildContextAsync({ buildProfileName, buildProfile, easJson
90
90
  developmentClient,
91
91
  requiredPackageManager,
92
92
  loggerLevel: buildLoggerLevel,
93
- repack,
94
93
  isVerboseLoggingEnabled,
95
94
  env,
96
95
  };
@@ -27,10 +27,7 @@ async function prepareJobAsync(ctx, jobData) {
27
27
  ? (0, customBuildConfig_1.getCustomBuildConfigPathForJob)(buildProfile.config)
28
28
  : undefined;
29
29
  let buildMode;
30
- if (ctx.repack) {
31
- buildMode = eas_build_job_1.BuildMode.REPACK;
32
- }
33
- else if (buildProfile.config) {
30
+ if (buildProfile.config) {
34
31
  buildMode = eas_build_job_1.BuildMode.CUSTOM;
35
32
  }
36
33
  else {
@@ -88,11 +85,6 @@ async function prepareJobAsync(ctx, jobData) {
88
85
  path: maybeCustomBuildConfigPath,
89
86
  },
90
87
  }),
91
- ...(ctx.repack && {
92
- customBuildConfig: {
93
- path: '__eas/repack.yml',
94
- },
95
- }),
96
88
  loggerLevel: ctx.loggerLevel,
97
89
  // Technically, these are unused, but let's include them here for type consistency.
98
90
  // See: https://github.com/expo/eas-build/pull/454
@@ -24,7 +24,6 @@ export interface BuildFlags {
24
24
  message?: string;
25
25
  buildLoggerLevel?: LoggerLevel;
26
26
  freezeCredentials: boolean;
27
- repack: boolean;
28
27
  isVerboseLoggingEnabled?: boolean;
29
28
  }
30
29
  export declare function runBuildAndSubmitAsync({ graphqlClient, analytics, vcsClient, projectDir, flags, actor, getDynamicPrivateProjectConfigAsync, downloadSimBuildAutoConfirm, envOverride, }: {
@@ -153,7 +153,7 @@ async function runBuildAndSubmitAsync({ graphqlClient, analytics, vcsClient, pro
153
153
  });
154
154
  for (const startedBuild of startedBuilds) {
155
155
  const submitProfile = (0, nullthrows_1.default)(submitProfiles.find(({ platform }) => (0, AppPlatform_1.toAppPlatform)(platform) === startedBuild.build.platform)).profile;
156
- const submission = await prepareAndStartSubmissionAsync({
156
+ const submission = await prepareAndStartAutoSubmissionAsync({
157
157
  build: startedBuild.build,
158
158
  buildCtx: (0, nullthrows_1.default)(buildCtxByPlatform[startedBuild.build.platform]),
159
159
  moreBuilds: startedBuilds.length > 1,
@@ -237,7 +237,6 @@ async function prepareAndStartBuildAsync({ projectDir, flags, moreBuilds, buildP
237
237
  customBuildConfigMetadata,
238
238
  buildLoggerLevel: flags.buildLoggerLevel ?? (log_1.default.isDebug ? logger_1.LoggerLevel.DEBUG : undefined),
239
239
  freezeCredentials: flags.freezeCredentials,
240
- repack: flags.repack,
241
240
  isVerboseLoggingEnabled: flags.isVerboseLoggingEnabled ?? false,
242
241
  env,
243
242
  });
@@ -312,7 +311,7 @@ async function startBuildAsync(ctx) {
312
311
  }
313
312
  return await sendBuildRequestAsync();
314
313
  }
315
- async function prepareAndStartSubmissionAsync({ build, buildCtx, moreBuilds, projectDir, submitProfile, selectedSubmitProfileName, nonInteractive, }) {
314
+ async function prepareAndStartAutoSubmissionAsync({ build, buildCtx, moreBuilds, projectDir, submitProfile, selectedSubmitProfileName, nonInteractive, }) {
316
315
  const platform = (0, AppPlatform_1.toPlatform)(build.platform);
317
316
  const submissionCtx = await (0, context_1.createSubmissionContextAsync)({
318
317
  platform,
@@ -331,6 +330,7 @@ async function prepareAndStartSubmissionAsync({ build, buildCtx, moreBuilds, pro
331
330
  vcsClient: buildCtx.vcsClient,
332
331
  isVerboseFastlaneEnabled: false,
333
332
  specifiedProfile: selectedSubmitProfileName,
333
+ groups: undefined, // use groups from submit profile
334
334
  });
335
335
  if (moreBuilds) {
336
336
  log_1.default.newLine();
@@ -31,5 +31,4 @@ export interface BuildFlags {
31
31
  message?: string;
32
32
  buildLoggerLevel?: LoggerLevel;
33
33
  freezeCredentials: boolean;
34
- repack: boolean;
35
34
  }
@@ -0,0 +1,20 @@
1
+ import { WorkflowRunFragment } from '../graphql/generated';
2
+ export type WorkflowRunResult = {
3
+ id: string;
4
+ status: string;
5
+ gitCommitMessage: string | null;
6
+ gitCommitHash: string | null;
7
+ startedAt: string;
8
+ finishedAt: string;
9
+ workflowId: string;
10
+ workflowName: string | null;
11
+ workflowFileName: string;
12
+ };
13
+ export declare function processWorkflowRuns(runs: WorkflowRunFragment[]): WorkflowRunResult[];
14
+ export type WorkflowResult = {
15
+ id: string;
16
+ name?: string | null | undefined;
17
+ fileName: string;
18
+ createdAt: string;
19
+ updatedAt: string;
20
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processWorkflowRuns = void 0;
4
+ const generated_1 = require("../graphql/generated");
5
+ function processWorkflowRuns(runs) {
6
+ return runs.map(run => {
7
+ const finishedAt = run.status === generated_1.WorkflowRunStatus.InProgress ? null : run.updatedAt;
8
+ return {
9
+ id: run.id,
10
+ status: run.status,
11
+ gitCommitMessage: run.gitCommitMessage?.split('\n')[0] ?? null,
12
+ gitCommitHash: run.gitCommitHash ?? null,
13
+ startedAt: run.createdAt,
14
+ finishedAt,
15
+ workflowId: run.workflow.id,
16
+ workflowName: run.workflow.name ?? null,
17
+ workflowFileName: run.workflow.fileName,
18
+ };
19
+ });
20
+ }
21
+ exports.processWorkflowRuns = processWorkflowRuns;
@@ -126,7 +126,6 @@ class BuildDev extends EasCommand_1.default {
126
126
  json: false,
127
127
  autoSubmit: false,
128
128
  localBuildOptions: {},
129
- repack: false,
130
129
  profile: flags.profile ?? DEFAULT_EAS_BUILD_RUN_PROFILE_NAME,
131
130
  },
132
131
  actor,
@@ -20,7 +20,6 @@ export default class Build extends EasCommand {
20
20
  message: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
21
21
  'build-logger-level': import("@oclif/core/lib/interfaces").OptionFlag<LoggerLevel | undefined>;
22
22
  'freeze-credentials': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
23
- repack: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
24
23
  'verbose-logs': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
25
24
  };
26
25
  static contextDefinition: {
@@ -89,11 +89,6 @@ class Build extends EasCommand_1.default {
89
89
  default: false,
90
90
  description: 'Prevent the build from updating credentials in non-interactive mode',
91
91
  }),
92
- repack: core_1.Flags.boolean({
93
- default: false,
94
- hidden: true,
95
- description: 'Use the golden dev client build repack flow as it works for onboarding',
96
- }),
97
92
  'verbose-logs': core_1.Flags.boolean({
98
93
  default: false,
99
94
  description: 'Use verbose logs for the build process',
@@ -187,7 +182,6 @@ class Build extends EasCommand_1.default {
187
182
  buildLoggerLevel: flags['build-logger-level'],
188
183
  freezeCredentials: flags['freeze-credentials'],
189
184
  isVerboseLoggingEnabled: flags['verbose-logs'],
190
- repack: flags.repack,
191
185
  };
192
186
  }
193
187
  async ensurePlatformSelectedAsync(flags) {
@@ -105,7 +105,6 @@ class BuildInspect extends EasCommand_1.default {
105
105
  workingdir: tmpWorkingdir,
106
106
  artifactsDir: path_1.default.join(tmpWorkingdir, 'artifacts'),
107
107
  },
108
- repack: false,
109
108
  },
110
109
  actor,
111
110
  getDynamicPrivateProjectConfigAsync,
@@ -78,7 +78,6 @@ class BuildInternal extends EasCommand_1.default {
78
78
  localBuildMode: local_1.LocalBuildMode.INTERNAL,
79
79
  },
80
80
  submitProfile: flags['auto-submit-with-profile'] ?? flags.profile,
81
- repack: false,
82
81
  },
83
82
  actor,
84
83
  getDynamicPrivateProjectConfigAsync,
@@ -224,7 +224,6 @@ class Onboarding extends EasCommand_1.default {
224
224
  autoSubmit: false,
225
225
  localBuildOptions: {},
226
226
  freezeCredentials: false,
227
- repack: true,
228
227
  },
229
228
  actor,
230
229
  // eslint-disable-next-line async-protect/async-suffix
@@ -73,6 +73,7 @@ class SubmitInternal extends EasCommand_1.default {
73
73
  projectId,
74
74
  vcsClient,
75
75
  specifiedProfile: flags.profile,
76
+ groups: undefined, // use groups from submit profile
76
77
  });
77
78
  let config;
78
79
  if (ctx.platform === eas_build_job_1.Platform.IOS) {
@@ -12,6 +12,7 @@ export default class Submit extends EasCommand {
12
12
  verbose: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
13
  wait: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
14
  'verbose-fastlane': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ groups: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined>;
15
16
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
17
  };
17
18
  static contextDefinition: {
@@ -55,6 +55,11 @@ class Submit extends EasCommand_1.default {
55
55
  default: false,
56
56
  description: 'Enable verbose logging for the submission process',
57
57
  }),
58
+ groups: core_1.Flags.string({
59
+ description: 'Internal TestFlight testing groups to add the build to (iOS only). Learn more: https://developer.apple.com/help/app-store-connect/test-a-beta-version/add-internal-testers',
60
+ multiple: true,
61
+ char: 'g',
62
+ }),
58
63
  'non-interactive': core_1.Flags.boolean({
59
64
  default: false,
60
65
  description: 'Run command in non-interactive mode',
@@ -94,6 +99,7 @@ class Submit extends EasCommand_1.default {
94
99
  archiveFlags: flagsWithPlatform.archiveFlags,
95
100
  nonInteractive: flagsWithPlatform.nonInteractive,
96
101
  isVerboseFastlaneEnabled: flagsWithPlatform.isVerboseFastlaneEnabled,
102
+ groups: flagsWithPlatform.groups,
97
103
  actor,
98
104
  graphqlClient,
99
105
  analytics,
@@ -120,7 +126,7 @@ class Submit extends EasCommand_1.default {
120
126
  }
121
127
  }
122
128
  sanitizeFlags(flags) {
123
- const { platform, verbose, wait, profile, 'non-interactive': nonInteractive, 'verbose-fastlane': isVerboseFastlaneEnabled, ...archiveFlags } = flags;
129
+ const { platform, verbose, wait, profile, 'non-interactive': nonInteractive, 'verbose-fastlane': isVerboseFastlaneEnabled, groups, ...archiveFlags } = flags;
124
130
  if (!flags.platform && nonInteractive) {
125
131
  core_1.Errors.error('--platform is required when building in non-interactive mode', { exit: 1 });
126
132
  }
@@ -136,6 +142,7 @@ class Submit extends EasCommand_1.default {
136
142
  profile,
137
143
  nonInteractive,
138
144
  isVerboseFastlaneEnabled,
145
+ groups,
139
146
  };
140
147
  }
141
148
  async ensurePlatformSelectedAsync(flags) {
@@ -0,0 +1,13 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ export default class WorkflowRunCancel extends EasCommand {
3
+ static description: string;
4
+ static strict: boolean;
5
+ static contextDefinition: {
6
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
7
+ projectId: import("../../commandUtils/context/ProjectIdContextField").ProjectIdContextField;
8
+ };
9
+ static flags: {
10
+ 'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ runAsync(): Promise<void>;
13
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
5
+ const flags_1 = require("../../commandUtils/flags");
6
+ const workflows_1 = require("../../commandUtils/workflows");
7
+ const generated_1 = require("../../graphql/generated");
8
+ const WorkflowRunMutation_1 = require("../../graphql/mutations/WorkflowRunMutation");
9
+ const AppQuery_1 = require("../../graphql/queries/AppQuery");
10
+ const log_1 = tslib_1.__importDefault(require("../../log"));
11
+ const prompts_1 = require("../../prompts");
12
+ class WorkflowRunCancel extends EasCommand_1.default {
13
+ static description = 'Cancel one or more workflow runs. If no workflow run IDs are provided, you will be prompted to select IN_PROGRESS runs to cancel.';
14
+ static strict = false;
15
+ static contextDefinition = {
16
+ ...this.ContextOptions.ProjectId,
17
+ ...this.ContextOptions.LoggedIn,
18
+ };
19
+ static flags = {
20
+ ...flags_1.EASNonInteractiveFlag,
21
+ };
22
+ async runAsync() {
23
+ const { argv } = await this.parse(WorkflowRunCancel);
24
+ let nonInteractive = false;
25
+ const workflowRunIds = new Set();
26
+ // Custom parsing of argv
27
+ const tokens = [...argv];
28
+ while (tokens.length > 0) {
29
+ const token = tokens.shift();
30
+ if (token === '--non-interactive') {
31
+ nonInteractive = true;
32
+ continue;
33
+ }
34
+ else if (token) {
35
+ workflowRunIds.add(token);
36
+ }
37
+ }
38
+ const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(WorkflowRunCancel, {
39
+ nonInteractive,
40
+ });
41
+ if (workflowRunIds.size === 0) {
42
+ if (nonInteractive) {
43
+ throw new Error('Must supply workflow run IDs as arguments when in non-interactive mode');
44
+ }
45
+ // Run the workflow run list query and select runs to cancel
46
+ const queryResult = await AppQuery_1.AppQuery.byIdWorkflowRunsFilteredByStatusAsync(graphqlClient, projectId, generated_1.WorkflowRunStatus.InProgress, 50);
47
+ const runs = (0, workflows_1.processWorkflowRuns)(queryResult);
48
+ if (runs.length === 0) {
49
+ log_1.default.warn('No workflow runs to cancel');
50
+ return;
51
+ }
52
+ const answers = await (0, prompts_1.promptAsync)({
53
+ type: 'multiselect',
54
+ name: 'selectedRuns',
55
+ message: 'Select IN_PROGRESS workflow runs to cancel',
56
+ choices: runs.map(run => ({
57
+ title: `${run.id} - ${run.workflowFileName}, ${run.gitCommitMessage ?? ''}, ${run.startedAt}`,
58
+ value: run.id,
59
+ })),
60
+ });
61
+ answers.selectedRuns.forEach((id) => {
62
+ workflowRunIds.add(id);
63
+ });
64
+ if (workflowRunIds.size === 0) {
65
+ log_1.default.warn('No workflow runs to cancel');
66
+ return;
67
+ }
68
+ }
69
+ log_1.default.addNewLineIfNone();
70
+ for (const workflowRunId of workflowRunIds) {
71
+ try {
72
+ await WorkflowRunMutation_1.WorkflowRunMutation.cancelWorkflowRunAsync(graphqlClient, {
73
+ workflowRunId,
74
+ });
75
+ log_1.default.log(`Workflow run ${workflowRunId} has been canceled.`);
76
+ }
77
+ catch (e) {
78
+ log_1.default.error(`Failed to cancel workflow run ${workflowRunId}: ${e}`);
79
+ }
80
+ }
81
+ log_1.default.addNewLineIfNone();
82
+ }
83
+ }
84
+ exports.default = WorkflowRunCancel;
@@ -5,28 +5,13 @@ const core_1 = require("@oclif/core");
5
5
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
6
6
  const flags_1 = require("../../commandUtils/flags");
7
7
  const pagination_1 = require("../../commandUtils/pagination");
8
+ const workflows_1 = require("../../commandUtils/workflows");
8
9
  const generated_1 = require("../../graphql/generated");
9
10
  const AppQuery_1 = require("../../graphql/queries/AppQuery");
10
11
  const WorkflowRunQuery_1 = require("../../graphql/queries/WorkflowRunQuery");
11
12
  const log_1 = tslib_1.__importDefault(require("../../log"));
12
13
  const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields"));
13
14
  const json_1 = require("../../utils/json");
14
- function processWorkflowRuns(runs) {
15
- return runs.map(run => {
16
- const finishedAt = run.status === generated_1.WorkflowRunStatus.InProgress ? null : run.updatedAt;
17
- return {
18
- id: run.id,
19
- status: run.status,
20
- gitCommitMessage: run.gitCommitMessage ?? null,
21
- gitCommitHash: run.gitCommitHash ?? null,
22
- startedAt: run.createdAt,
23
- finishedAt,
24
- workflowId: run.workflow.id,
25
- workflowName: run.workflow.name ?? null,
26
- workflowFileName: run.workflow.fileName,
27
- };
28
- });
29
- }
30
15
  class WorkflowRunList extends EasCommand_1.default {
31
16
  static description = 'list recent workflow runs for this project, with their IDs, statuses, and timestamps';
32
17
  static flags = {
@@ -64,7 +49,7 @@ class WorkflowRunList extends EasCommand_1.default {
64
49
  else {
65
50
  runs = await AppQuery_1.AppQuery.byIdWorkflowRunsFilteredByStatusAsync(graphqlClient, projectId, status, limit);
66
51
  }
67
- const result = processWorkflowRuns(runs);
52
+ const result = (0, workflows_1.processWorkflowRuns)(runs);
68
53
  if (flags.json) {
69
54
  (0, json_1.printJsonOnlyOutput)(result);
70
55
  return;
@@ -157,6 +157,7 @@ export type Account = {
157
157
  /** Whether this account can enable SSO. */
158
158
  canEnableSSO: Scalars['Boolean']['output'];
159
159
  createdAt: Scalars['DateTime']['output'];
160
+ displayName?: Maybe<Scalars['String']['output']>;
160
161
  /** Environment secrets for an account */
161
162
  environmentSecrets: Array<EnvironmentSecret>;
162
163
  /** Environment variables for an account */
@@ -542,6 +543,8 @@ export type AccountMutation = {
542
543
  requestRefund?: Maybe<Scalars['Boolean']['output']>;
543
544
  /** Revoke specified Permissions for Actor. Actor must already have at least one permission on the account. */
544
545
  revokeActorPermissions: Account;
546
+ /** Set the display name for the account. */
547
+ setDisplayName: Account;
545
548
  /** Require authorization to send push notifications for experiences owned by this account */
546
549
  setPushSecurityEnabled: Account;
547
550
  };
@@ -583,6 +586,10 @@ export type AccountMutationRevokeActorPermissionsArgs = {
583
586
  actorID: Scalars['ID']['input'];
584
587
  permissions?: InputMaybe<Array<InputMaybe<Permission>>>;
585
588
  };
589
+ export type AccountMutationSetDisplayNameArgs = {
590
+ accountID: Scalars['ID']['input'];
591
+ displayName: Scalars['String']['input'];
592
+ };
586
593
  export type AccountMutationSetPushSecurityEnabledArgs = {
587
594
  accountID: Scalars['ID']['input'];
588
595
  pushSecurityEnabled: Scalars['Boolean']['input'];
@@ -2330,6 +2337,7 @@ export declare enum AuthProtocolType {
2330
2337
  Oidc = "OIDC"
2331
2338
  }
2332
2339
  export declare enum AuthProviderIdentifier {
2340
+ Generic = "GENERIC",
2333
2341
  GoogleWs = "GOOGLE_WS",
2334
2342
  MsEntraId = "MS_ENTRA_ID",
2335
2343
  Okta = "OKTA",
@@ -3728,12 +3736,14 @@ export declare enum Feature {
3728
3736
  export type Fingerprint = {
3729
3737
  __typename?: 'Fingerprint';
3730
3738
  app: App;
3739
+ buildCount: Scalars['Int']['output'];
3731
3740
  builds: AppBuildsConnection;
3732
3741
  createdAt: Scalars['DateTime']['output'];
3733
3742
  debugInfoUrl?: Maybe<Scalars['String']['output']>;
3734
3743
  hash: Scalars['String']['output'];
3735
3744
  id: Scalars['ID']['output'];
3736
3745
  source?: Maybe<FingerprintSource>;
3746
+ updateCount: Scalars['Int']['output'];
3737
3747
  updatedAt: Scalars['DateTime']['output'];
3738
3748
  updates: AppUpdatesConnection;
3739
3749
  };
@@ -3907,8 +3917,6 @@ export type GitHubBuildInput = {
3907
3917
  environment?: InputMaybe<EnvironmentVariableEnvironment>;
3908
3918
  gitRef: Scalars['String']['input'];
3909
3919
  platform: AppPlatform;
3910
- /** Repack the golden dev client build instead of running full build process. Used for onboarding. Do not use outside of onboarding flow, as for now it's only created with this specific use case in mind. */
3911
- repack?: InputMaybe<Scalars['Boolean']['input']>;
3912
3920
  submitProfile?: InputMaybe<Scalars['String']['input']>;
3913
3921
  };
3914
3922
  export type GitHubBuildTrigger = {
@@ -7364,6 +7372,7 @@ export declare enum WorkflowJobType {
7364
7372
  Build = "BUILD",
7365
7373
  Custom = "CUSTOM",
7366
7374
  Deploy = "DEPLOY",
7375
+ Doc = "DOC",
7367
7376
  Fingerprint = "FINGERPRINT",
7368
7377
  GetBuild = "GET_BUILD",
7369
7378
  MaestroCloud = "MAESTRO_CLOUD",
@@ -12446,6 +12455,19 @@ export type CreateWorkflowRunMutation = {
12446
12455
  };
12447
12456
  };
12448
12457
  };
12458
+ export type CancelWorkflowRunMutationVariables = Exact<{
12459
+ workflowRunId: Scalars['ID']['input'];
12460
+ }>;
12461
+ export type CancelWorkflowRunMutation = {
12462
+ __typename?: 'RootMutation';
12463
+ workflowRun: {
12464
+ __typename?: 'WorkflowRunMutation';
12465
+ cancelWorkflowRun: {
12466
+ __typename?: 'WorkflowRun';
12467
+ id: string;
12468
+ };
12469
+ };
12470
+ };
12449
12471
  export type AppByIdQueryVariables = Exact<{
12450
12472
  appId: Scalars['String']['input'];
12451
12473
  }>;
@@ -136,6 +136,7 @@ var AuthProtocolType;
136
136
  })(AuthProtocolType || (exports.AuthProtocolType = AuthProtocolType = {}));
137
137
  var AuthProviderIdentifier;
138
138
  (function (AuthProviderIdentifier) {
139
+ AuthProviderIdentifier["Generic"] = "GENERIC";
139
140
  AuthProviderIdentifier["GoogleWs"] = "GOOGLE_WS";
140
141
  AuthProviderIdentifier["MsEntraId"] = "MS_ENTRA_ID";
141
142
  AuthProviderIdentifier["Okta"] = "OKTA";
@@ -878,6 +879,7 @@ var WorkflowJobType;
878
879
  WorkflowJobType["Build"] = "BUILD";
879
880
  WorkflowJobType["Custom"] = "CUSTOM";
880
881
  WorkflowJobType["Deploy"] = "DEPLOY";
882
+ WorkflowJobType["Doc"] = "DOC";
881
883
  WorkflowJobType["Fingerprint"] = "FINGERPRINT";
882
884
  WorkflowJobType["GetBuild"] = "GET_BUILD";
883
885
  WorkflowJobType["MaestroCloud"] = "MAESTRO_CLOUD";
@@ -8,4 +8,7 @@ export declare namespace WorkflowRunMutation {
8
8
  }): Promise<{
9
9
  id: string;
10
10
  }>;
11
+ function cancelWorkflowRunAsync(graphqlClient: ExpoGraphqlClient, { workflowRunId, }: {
12
+ workflowRunId: string;
13
+ }): Promise<void>;
11
14
  }
@@ -33,4 +33,20 @@ var WorkflowRunMutation;
33
33
  return { id: data.workflowRun.createWorkflowRun.id };
34
34
  }
35
35
  WorkflowRunMutation.createWorkflowRunAsync = createWorkflowRunAsync;
36
+ async function cancelWorkflowRunAsync(graphqlClient, { workflowRunId, }) {
37
+ await (0, client_1.withErrorHandlingAsync)(graphqlClient
38
+ .mutation((0, graphql_tag_1.default) `
39
+ mutation CancelWorkflowRun($workflowRunId: ID!) {
40
+ workflowRun {
41
+ cancelWorkflowRun(workflowRunId: $workflowRunId) {
42
+ id
43
+ }
44
+ }
45
+ }
46
+ `, {
47
+ workflowRunId,
48
+ })
49
+ .toPromise());
50
+ }
51
+ WorkflowRunMutation.cancelWorkflowRunAsync = cancelWorkflowRunAsync;
36
52
  })(WorkflowRunMutation || (exports.WorkflowRunMutation = WorkflowRunMutation = {}));
@@ -81,7 +81,7 @@ exports.AppQuery = {
81
81
  app {
82
82
  byId(appId: $appId) {
83
83
  id
84
- runs: workflowRunsPaginated(last: $limit, filter: { status: $status }) {
84
+ runs: workflowRunsPaginated(first: $limit, filter: { status: $status }) {
85
85
  edges {
86
86
  node {
87
87
  id
@@ -75,7 +75,7 @@ exports.WorkflowRunQuery = {
75
75
  workflows {
76
76
  byAppIdAndFileName(appId: $appId, fileName: $fileName) {
77
77
  id
78
- runs: runsPaginated(last: $limit, filter: { status: $status }) {
78
+ runs: runsPaginated(first: $limit, filter: { status: $status }) {
79
79
  edges {
80
80
  node {
81
81
  id
@@ -14,6 +14,7 @@ export interface SubmissionContext<T extends Platform> {
14
14
  exp: ExpoConfig;
15
15
  nonInteractive: boolean;
16
16
  isVerboseFastlaneEnabled: boolean;
17
+ groups: T extends Platform.IOS ? string[] : undefined;
17
18
  platform: T;
18
19
  profile: SubmitProfile<T>;
19
20
  projectDir: string;
@@ -38,6 +39,7 @@ export declare function createSubmissionContextAsync<T extends Platform>(params:
38
39
  env?: Record<string, string>;
39
40
  nonInteractive: boolean;
40
41
  isVerboseFastlaneEnabled: boolean;
42
+ groups: string[] | undefined;
41
43
  platform: T;
42
44
  profile: SubmitProfile<T>;
43
45
  projectDir: string;