eas-cli 16.27.0 → 16.28.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.
@@ -0,0 +1,5 @@
1
+ import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
2
+ import { BackgroundJobReceiptDataFragment } from '../graphql/generated';
3
+ export declare function scheduleBranchDeletionAsync(graphqlClient: ExpoGraphqlClient, { branchId, }: {
4
+ branchId: string;
5
+ }): Promise<BackgroundJobReceiptDataFragment>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scheduleBranchDeletionAsync = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ const client_1 = require("../graphql/client");
7
+ const BackgroundJobReceipt_1 = require("../graphql/types/BackgroundJobReceipt");
8
+ async function scheduleBranchDeletionAsync(graphqlClient, { branchId, }) {
9
+ const result = await (0, client_1.withErrorHandlingAsync)(graphqlClient
10
+ .mutation((0, graphql_tag_1.default) `
11
+ mutation ScheduleBranchDeletion($branchId: ID!) {
12
+ updateBranch {
13
+ scheduleUpdateBranchDeletion(branchId: $branchId) {
14
+ id
15
+ ...BackgroundJobReceiptData
16
+ }
17
+ }
18
+ }
19
+ ${BackgroundJobReceipt_1.BackgroundJobReceiptNode}
20
+ `, { branchId })
21
+ .toPromise());
22
+ return result.updateBranch.scheduleUpdateBranchDeletion;
23
+ }
24
+ exports.scheduleBranchDeletionAsync = scheduleBranchDeletionAsync;
@@ -28,6 +28,7 @@ export interface IosBuildContext {
28
28
  buildNumberOverride?: string;
29
29
  }
30
30
  export interface BuildContext<T extends Platform> {
31
+ accountId: string;
31
32
  accountName: string;
32
33
  easJsonCliConfig: EasJson['cli'];
33
34
  buildProfile: BuildProfile<T>;
@@ -63,6 +63,7 @@ async function createBuildContextAsync({ buildProfileName, buildProfile, easJson
63
63
  analytics.logEvent(AnalyticsManager_1.BuildEvent.BUILD_COMMAND, analyticsEventProperties);
64
64
  const resourceClass = await (0, resourceClass_1.resolveBuildResourceClassAsync)(buildProfile, platform, resourceClassFlag);
65
65
  const commonContext = {
66
+ accountId,
66
67
  accountName: account.name,
67
68
  buildProfile,
68
69
  buildProfileName,
@@ -41,8 +41,10 @@ const download_1 = require("../utils/download");
41
41
  const filter_1 = require("../utils/expodash/filter");
42
42
  const json_1 = require("../utils/json");
43
43
  const profiles_1 = require("../utils/profiles");
44
+ const checkForOverages_1 = require("../utils/usage/checkForOverages");
44
45
  let metroConfigValidated = false;
45
46
  let sdkVersionChecked = false;
47
+ let hasWarnedAboutUsageOverages = false;
46
48
  async function runBuildAndSubmitAsync({ graphqlClient, analytics, vcsClient, projectDir, flags, actor, getDynamicPrivateProjectConfigAsync, downloadSimBuildAutoConfirm, envOverride, }) {
47
49
  await vcsClient.ensureRepoExistsAsync();
48
50
  await (0, repository_1.ensureRepoIsCleanAsync)(vcsClient, flags.nonInteractive);
@@ -241,6 +243,14 @@ async function prepareAndStartBuildAsync({ projectDir, flags, moreBuilds, buildP
241
243
  whatToTest: flags.whatToTest,
242
244
  env,
243
245
  });
246
+ if (!hasWarnedAboutUsageOverages && !flags.localBuildOptions.localBuildMode) {
247
+ hasWarnedAboutUsageOverages = true;
248
+ log_1.default.newLine();
249
+ await (0, checkForOverages_1.maybeWarnAboutUsageOveragesAsync)({ graphqlClient, accountId: buildCtx.accountId });
250
+ if (!moreBuilds) {
251
+ log_1.default.newLine();
252
+ }
253
+ }
244
254
  if (moreBuilds) {
245
255
  log_1.default.newLine();
246
256
  const appPlatform = (0, AppPlatform_1.toAppPlatform)(buildProfile.platform);
@@ -79,12 +79,15 @@ async function promptForProjectAccountAsync(actor) {
79
79
  exports.promptForProjectAccountAsync = promptForProjectAccountAsync;
80
80
  function getAccountChoices(actor, permissionsMap) {
81
81
  const permissions = permissionsMap ?? getAccountPermissionsMap(actor);
82
- const sortedAccounts = [...actor.accounts].sort((a, _b) => actor.__typename === 'User' ? (a.name === actor.username ? -1 : 1) : 0);
82
+ const sortedAccounts = [...actor.accounts].sort((a, _b) => (a.ownerUserActor ? 1 : -1));
83
83
  return sortedAccounts.map(account => {
84
- const isPersonalAccount = actor.__typename === 'User' && account.name === actor.username;
84
+ const isPersonalAccount = !!account.ownerUserActor && account.ownerUserActor.id === actor.id;
85
+ const isTeamAccount = !!account.ownerUserActor && account.ownerUserActor.id !== actor.id;
85
86
  const accountDisplayName = isPersonalAccount
86
- ? `${account.name} (personal account)`
87
- : account.name;
87
+ ? `${account.name} (Limited - Personal Account)`
88
+ : isTeamAccount
89
+ ? `${account.name} (Limited - Team Account)`
90
+ : account.name;
88
91
  const disabled = !permissions.get(account.name);
89
92
  return {
90
93
  title: accountDisplayName,
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
5
5
  const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ const delete_1 = require("../../branch/delete");
6
7
  const queries_1 = require("../../branch/queries");
7
8
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
8
9
  const flags_1 = require("../../commandUtils/flags");
@@ -12,6 +13,7 @@ const log_1 = tslib_1.__importDefault(require("../../log"));
12
13
  const projectUtils_1 = require("../../project/projectUtils");
13
14
  const prompts_1 = require("../../prompts");
14
15
  const json_1 = require("../../utils/json");
16
+ const pollForBackgroundJobReceiptAsync_1 = require("../../utils/pollForBackgroundJobReceiptAsync");
15
17
  async function getBranchInfoAsync(graphqlClient, { appId, name }) {
16
18
  const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
17
19
  .query((0, graphql_tag_1.default) `
@@ -33,22 +35,6 @@ async function getBranchInfoAsync(graphqlClient, { appId, name }) {
33
35
  .toPromise());
34
36
  return data;
35
37
  }
36
- async function deleteBranchOnAppAsync(graphqlClient, { branchId }) {
37
- const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
38
- .mutation((0, graphql_tag_1.default) `
39
- mutation DeleteUpdateBranch($branchId: ID!) {
40
- updateBranch {
41
- deleteUpdateBranch(branchId: $branchId) {
42
- id
43
- }
44
- }
45
- }
46
- `, {
47
- branchId,
48
- })
49
- .toPromise());
50
- return data.updateBranch.deleteUpdateBranch;
51
- }
52
38
  class BranchDelete extends EasCommand_1.default {
53
39
  static description = 'delete a branch';
54
40
  static contextDefinition = {
@@ -102,11 +88,11 @@ class BranchDelete extends EasCommand_1.default {
102
88
  process.exit(1);
103
89
  }
104
90
  }
105
- const deletionResult = await deleteBranchOnAppAsync(graphqlClient, {
106
- branchId,
107
- });
91
+ const receipt = await (0, delete_1.scheduleBranchDeletionAsync)(graphqlClient, { branchId });
92
+ const successfulReceipt = await (0, pollForBackgroundJobReceiptAsync_1.pollForBackgroundJobReceiptAsync)(graphqlClient, receipt);
93
+ log_1.default.debug('Deletion result', { successfulReceipt });
108
94
  if (jsonFlag) {
109
- (0, json_1.printJsonOnlyOutput)(deletionResult);
95
+ (0, json_1.printJsonOnlyOutput)({ id: branchId });
110
96
  }
111
97
  else {
112
98
  log_1.default.withTick(`️Deleted branch "${branchName}" and all of its updates on project ${chalk_1.default.bold(projectDisplayName)}.`);
@@ -17,12 +17,10 @@ const flags_1 = require("../../commandUtils/flags");
17
17
  const generated_1 = require("../../graphql/generated");
18
18
  const log_1 = tslib_1.__importStar(require("../../log"));
19
19
  const platform_1 = require("../../platform");
20
- const projectUtils_1 = require("../../project/projectUtils");
21
20
  const prompts_1 = require("../../prompts");
22
21
  const uniq_1 = tslib_1.__importDefault(require("../../utils/expodash/uniq"));
23
22
  const json_1 = require("../../utils/json");
24
23
  const statuspageService_1 = require("../../utils/statuspageService");
25
- const checkForOverages_1 = require("../../utils/usage/checkForOverages");
26
24
  class Build extends EasCommand_1.default {
27
25
  static description = 'start a build';
28
26
  static flags = {
@@ -122,12 +120,6 @@ class Build extends EasCommand_1.default {
122
120
  await (0, statuspageService_1.maybeWarnAboutEasOutagesAsync)(graphqlClient, flags.autoSubmit
123
121
  ? [generated_1.StatuspageServiceName.EasBuild, generated_1.StatuspageServiceName.EasSubmit]
124
122
  : [generated_1.StatuspageServiceName.EasBuild]);
125
- const { projectId } = await getDynamicPrivateProjectConfigAsync();
126
- const account = await (0, projectUtils_1.getOwnerAccountForProjectIdAsync)(graphqlClient, projectId);
127
- await (0, checkForOverages_1.maybeWarnAboutUsageOveragesAsync)({
128
- graphqlClient,
129
- accountId: account.id,
130
- });
131
123
  }
132
124
  const flagsWithPlatform = await this.ensurePlatformSelectedAsync(flags);
133
125
  const { buildProfiles } = await (0, runBuildAndSubmit_1.runBuildAndSubmitAsync)({
@@ -1161,6 +1161,7 @@ export type App = Project & {
1161
1161
  appStoreUrl?: Maybe<Scalars['String']['output']>;
1162
1162
  assetLimitPerUpdateGroup: Scalars['Int']['output'];
1163
1163
  branchesPaginated: AppBranchesConnection;
1164
+ buildProfiles: Array<Scalars['String']['output']>;
1164
1165
  /** (EAS Build) Builds associated with this app */
1165
1166
  builds: Array<Build>;
1166
1167
  buildsPaginated: AppBuildsConnection;
@@ -1325,6 +1326,7 @@ export type App = Project & {
1325
1326
  workflowRunGitBranchesPaginated: AppWorkflowRunGitBranchesConnection;
1326
1327
  workflowRunsPaginated: AppWorkflowRunsConnection;
1327
1328
  workflows: Array<Workflow>;
1329
+ workflowsInsights: AppWorkflowsInsights;
1328
1330
  };
1329
1331
  /** Represents an Exponent App (or Experience in legacy terms) */
1330
1332
  export type AppActivityTimelineProjectActivitiesArgs = {
@@ -1971,6 +1973,7 @@ export type AppWorkflowRunEdge = {
1971
1973
  export type AppWorkflowRunFilterInput = {
1972
1974
  requestedGitRef?: InputMaybe<Scalars['String']['input']>;
1973
1975
  status?: InputMaybe<WorkflowRunStatus>;
1976
+ timeRange?: InputMaybe<WorkflowRunTimeRangeInput>;
1974
1977
  };
1975
1978
  export type AppWorkflowRunGitBranchEdge = {
1976
1979
  __typename?: 'AppWorkflowRunGitBranchEdge';
@@ -1987,11 +1990,36 @@ export type AppWorkflowRunGitBranchesConnection = {
1987
1990
  edges: Array<AppWorkflowRunGitBranchEdge>;
1988
1991
  pageInfo: PageInfo;
1989
1992
  };
1993
+ export type AppWorkflowRunTimeRangeInput = {
1994
+ earliest?: InputMaybe<Scalars['DateTime']['input']>;
1995
+ latest?: InputMaybe<Scalars['DateTime']['input']>;
1996
+ };
1990
1997
  export type AppWorkflowRunsConnection = {
1991
1998
  __typename?: 'AppWorkflowRunsConnection';
1992
1999
  edges: Array<AppWorkflowRunEdge>;
1993
2000
  pageInfo: PageInfo;
1994
2001
  };
2002
+ export type AppWorkflowsInsights = {
2003
+ __typename?: 'AppWorkflowsInsights';
2004
+ overviewMetrics: WorkflowsInsightsOverviewMetrics;
2005
+ runsOverTime: WorkflowsInsightsRunsOverTimeData;
2006
+ workflows: WorkflowsInsightsWorkflowConnection;
2007
+ };
2008
+ export type AppWorkflowsInsightsOverviewMetricsArgs = {
2009
+ filters?: InputMaybe<WorkflowsInsightsFiltersInput>;
2010
+ timespan: WorkflowsInsightsTimespanInput;
2011
+ };
2012
+ export type AppWorkflowsInsightsRunsOverTimeArgs = {
2013
+ filters?: InputMaybe<WorkflowsInsightsFiltersInput>;
2014
+ granularity: WorkflowsInsightsRunsOverTimeGranularity;
2015
+ timespan: WorkflowsInsightsTimespanInput;
2016
+ };
2017
+ export type AppWorkflowsInsightsWorkflowsArgs = {
2018
+ after?: InputMaybe<Scalars['String']['input']>;
2019
+ filters?: InputMaybe<WorkflowsInsightsFiltersInput>;
2020
+ first: Scalars['Int']['input'];
2021
+ timespan: WorkflowsInsightsTimespanInput;
2022
+ };
1995
2023
  export type AppleAppIdentifier = {
1996
2024
  __typename?: 'AppleAppIdentifier';
1997
2025
  account: Account;
@@ -6162,6 +6190,7 @@ export type UpdateBranch = {
6162
6190
  name: Scalars['String']['output'];
6163
6191
  runtimes: RuntimesConnection;
6164
6192
  updateGroups: Array<Array<Update>>;
6193
+ updateGroupsPaginated: UpdateGroupsConnection;
6165
6194
  updatedAt: Scalars['DateTime']['output'];
6166
6195
  updates: Array<Update>;
6167
6196
  };
@@ -6177,6 +6206,13 @@ export type UpdateBranchUpdateGroupsArgs = {
6177
6206
  limit: Scalars['Int']['input'];
6178
6207
  offset: Scalars['Int']['input'];
6179
6208
  };
6209
+ export type UpdateBranchUpdateGroupsPaginatedArgs = {
6210
+ after?: InputMaybe<Scalars['String']['input']>;
6211
+ before?: InputMaybe<Scalars['String']['input']>;
6212
+ filter?: InputMaybe<UpdatesFilterV2>;
6213
+ first?: InputMaybe<Scalars['Int']['input']>;
6214
+ last?: InputMaybe<Scalars['Int']['input']>;
6215
+ };
6180
6216
  export type UpdateBranchUpdatesArgs = {
6181
6217
  filter?: InputMaybe<UpdatesFilter>;
6182
6218
  limit: Scalars['Int']['input'];
@@ -6186,7 +6222,10 @@ export type UpdateBranchMutation = {
6186
6222
  __typename?: 'UpdateBranchMutation';
6187
6223
  /** Create an EAS branch for an app */
6188
6224
  createUpdateBranchForApp: UpdateBranch;
6189
- /** Delete an EAS branch and all of its updates as long as the branch is not being used by any channels */
6225
+ /**
6226
+ * Delete an EAS branch and all of its updates as long as the branch is not being used by any channels
6227
+ * @deprecated Use scheduleUpdateBranchDeletion instead
6228
+ */
6190
6229
  deleteUpdateBranch: DeleteUpdateBranchResult;
6191
6230
  /**
6192
6231
  * Edit an EAS branch. The branch can be specified either by its ID or
@@ -6195,6 +6234,8 @@ export type UpdateBranchMutation = {
6195
6234
  editUpdateBranch: UpdateBranch;
6196
6235
  /** Publish an update group to a branch */
6197
6236
  publishUpdateGroups: Array<Update>;
6237
+ /** Delete an EAS branch and all of its updates in the background */
6238
+ scheduleUpdateBranchDeletion: BackgroundJobReceipt;
6198
6239
  };
6199
6240
  export type UpdateBranchMutationCreateUpdateBranchForAppArgs = {
6200
6241
  appId: Scalars['ID']['input'];
@@ -6209,6 +6250,9 @@ export type UpdateBranchMutationEditUpdateBranchArgs = {
6209
6250
  export type UpdateBranchMutationPublishUpdateGroupsArgs = {
6210
6251
  publishUpdateGroupsInput: Array<PublishUpdateGroupInput>;
6211
6252
  };
6253
+ export type UpdateBranchMutationScheduleUpdateBranchDeletionArgs = {
6254
+ branchId: Scalars['ID']['input'];
6255
+ };
6212
6256
  export type UpdateChannel = {
6213
6257
  __typename?: 'UpdateChannel';
6214
6258
  app: App;
@@ -6342,6 +6386,16 @@ export type UpdateGitHubJobRunTriggerInput = {
6342
6386
  export type UpdateGitHubRepositorySettingsInput = {
6343
6387
  baseDirectory: Scalars['String']['input'];
6344
6388
  };
6389
+ export type UpdateGroupEdge = {
6390
+ __typename?: 'UpdateGroupEdge';
6391
+ cursor: Scalars['String']['output'];
6392
+ node: Array<Update>;
6393
+ };
6394
+ export type UpdateGroupsConnection = {
6395
+ __typename?: 'UpdateGroupsConnection';
6396
+ edges: Array<UpdateGroupEdge>;
6397
+ pageInfo: PageInfo;
6398
+ };
6345
6399
  export type UpdateInfoGroup = {
6346
6400
  android?: InputMaybe<PartialManifest>;
6347
6401
  ios?: InputMaybe<PartialManifest>;
@@ -6421,7 +6475,10 @@ export type UpdateVexoAppInput = {
6421
6475
  export type UpdatesFilter = {
6422
6476
  platform?: InputMaybe<AppPlatform>;
6423
6477
  runtimeVersions?: InputMaybe<Array<Scalars['String']['input']>>;
6424
- sdkVersions?: InputMaybe<Array<Scalars['String']['input']>>;
6478
+ };
6479
+ export type UpdatesFilterV2 = {
6480
+ platform?: InputMaybe<AppPlatform>;
6481
+ runtimeVersions?: InputMaybe<Array<Scalars['String']['input']>>;
6425
6482
  };
6426
6483
  export type UpdatesMetricsData = {
6427
6484
  __typename?: 'UpdatesMetricsData';
@@ -7604,11 +7661,16 @@ export type Workflow = {
7604
7661
  createdAt: Scalars['DateTime']['output'];
7605
7662
  fileName: Scalars['String']['output'];
7606
7663
  id: Scalars['ID']['output'];
7664
+ insights: WorkflowsInsightsWorkflowMetrics;
7607
7665
  name?: Maybe<Scalars['String']['output']>;
7608
7666
  revisionsPaginated: WorkflowRevisionsConnection;
7609
7667
  runsPaginated: WorkflowRunsConnection;
7610
7668
  updatedAt: Scalars['DateTime']['output'];
7611
7669
  };
7670
+ export type WorkflowInsightsArgs = {
7671
+ filters?: InputMaybe<WorkflowsInsightsFiltersInput>;
7672
+ timespan: WorkflowsInsightsTimespanInput;
7673
+ };
7612
7674
  export type WorkflowRevisionsPaginatedArgs = {
7613
7675
  after?: InputMaybe<Scalars['String']['input']>;
7614
7676
  before?: InputMaybe<Scalars['String']['input']>;
@@ -7765,6 +7827,7 @@ export type WorkflowRevisionInput = {
7765
7827
  export type WorkflowRevisionMutation = {
7766
7828
  __typename?: 'WorkflowRevisionMutation';
7767
7829
  getOrCreateWorkflowRevisionFromGitRef: WorkflowRevision;
7830
+ getWorkflowRevisionsFromGitRef: Array<WorkflowRevision>;
7768
7831
  validateWorkflowYamlConfig: Scalars['Boolean']['output'];
7769
7832
  };
7770
7833
  export type WorkflowRevisionMutationGetOrCreateWorkflowRevisionFromGitRefArgs = {
@@ -7772,6 +7835,10 @@ export type WorkflowRevisionMutationGetOrCreateWorkflowRevisionFromGitRefArgs =
7772
7835
  fileName: Scalars['String']['input'];
7773
7836
  gitRef: Scalars['String']['input'];
7774
7837
  };
7838
+ export type WorkflowRevisionMutationGetWorkflowRevisionsFromGitRefArgs = {
7839
+ appId: Scalars['ID']['input'];
7840
+ gitRef: Scalars['String']['input'];
7841
+ };
7775
7842
  export type WorkflowRevisionMutationValidateWorkflowYamlConfigArgs = {
7776
7843
  appId: Scalars['ID']['input'];
7777
7844
  yamlConfig: Scalars['String']['input'];
@@ -7828,6 +7895,7 @@ export type WorkflowRunError = {
7828
7895
  export type WorkflowRunFilterInput = {
7829
7896
  requestedGitRef?: InputMaybe<Scalars['String']['input']>;
7830
7897
  status?: InputMaybe<WorkflowRunStatus>;
7898
+ timeRange?: InputMaybe<WorkflowRunTimeRangeInput>;
7831
7899
  };
7832
7900
  export type WorkflowRunGitBranchFilterInput = {
7833
7901
  searchTerm?: InputMaybe<Scalars['String']['input']>;
@@ -7875,6 +7943,10 @@ export declare enum WorkflowRunStatus {
7875
7943
  New = "NEW",
7876
7944
  Success = "SUCCESS"
7877
7945
  }
7946
+ export type WorkflowRunTimeRangeInput = {
7947
+ earliest?: InputMaybe<Scalars['DateTime']['input']>;
7948
+ latest?: InputMaybe<Scalars['DateTime']['input']>;
7949
+ };
7878
7950
  export declare enum WorkflowRunTriggerEventType {
7879
7951
  GithubPullRequestLabeled = "GITHUB_PULL_REQUEST_LABELED",
7880
7952
  GithubPullRequestOpened = "GITHUB_PULL_REQUEST_OPENED",
@@ -7889,6 +7961,63 @@ export type WorkflowRunsConnection = {
7889
7961
  edges: Array<WorkflowRunEdge>;
7890
7962
  pageInfo: PageInfo;
7891
7963
  };
7964
+ export type WorkflowsInsightsFiltersInput = {
7965
+ gitRefRequested?: InputMaybe<Array<Scalars['String']['input']>>;
7966
+ statuses?: InputMaybe<Array<WorkflowRunStatus>>;
7967
+ triggerEventTypes?: InputMaybe<Array<WorkflowRunTriggerEventType>>;
7968
+ workflowIds?: InputMaybe<Array<Scalars['ID']['input']>>;
7969
+ };
7970
+ export type WorkflowsInsightsMetric = {
7971
+ __typename?: 'WorkflowsInsightsMetric';
7972
+ currentValue: Scalars['Float']['output'];
7973
+ previousValue: Scalars['Float']['output'];
7974
+ };
7975
+ export type WorkflowsInsightsOverviewMetrics = {
7976
+ __typename?: 'WorkflowsInsightsOverviewMetrics';
7977
+ activeWorkflows: WorkflowsInsightsMetric;
7978
+ failedRuns: WorkflowsInsightsMetric;
7979
+ successfulRuns: WorkflowsInsightsMetric;
7980
+ totalRuns: WorkflowsInsightsMetric;
7981
+ };
7982
+ export type WorkflowsInsightsRunsOverTimeData = {
7983
+ __typename?: 'WorkflowsInsightsRunsOverTimeData';
7984
+ lineChart: LineChartData;
7985
+ };
7986
+ export declare enum WorkflowsInsightsRunsOverTimeGranularity {
7987
+ Day = "DAY",
7988
+ Hour = "HOUR",
7989
+ Minute = "MINUTE"
7990
+ }
7991
+ export type WorkflowsInsightsTimespanInput = {
7992
+ end: Scalars['DateTime']['input'];
7993
+ start: Scalars['DateTime']['input'];
7994
+ };
7995
+ export type WorkflowsInsightsWorkflowConnection = {
7996
+ __typename?: 'WorkflowsInsightsWorkflowConnection';
7997
+ edges: Array<WorkflowsInsightsWorkflowEdge>;
7998
+ pageInfo: PageInfo;
7999
+ };
8000
+ export type WorkflowsInsightsWorkflowEdge = {
8001
+ __typename?: 'WorkflowsInsightsWorkflowEdge';
8002
+ cursor: Scalars['String']['output'];
8003
+ node: WorkflowsInsightsWorkflowNode;
8004
+ };
8005
+ export type WorkflowsInsightsWorkflowMetrics = {
8006
+ __typename?: 'WorkflowsInsightsWorkflowMetrics';
8007
+ failedRuns: WorkflowsInsightsMetric;
8008
+ lastRunAt?: Maybe<Scalars['DateTime']['output']>;
8009
+ successfulRuns: WorkflowsInsightsMetric;
8010
+ totalRuns: WorkflowsInsightsMetric;
8011
+ };
8012
+ export type WorkflowsInsightsWorkflowNode = {
8013
+ __typename?: 'WorkflowsInsightsWorkflowNode';
8014
+ failedRuns: Scalars['Int']['output'];
8015
+ lastRunAt: Scalars['DateTime']['output'];
8016
+ name: Scalars['String']['output'];
8017
+ successfulRuns: Scalars['Int']['output'];
8018
+ totalRuns: Scalars['Int']['output'];
8019
+ workflowId: Scalars['ID']['output'];
8020
+ };
7892
8021
  export type DeleteAndroidAppBuildCredentialsResult = {
7893
8022
  __typename?: 'deleteAndroidAppBuildCredentialsResult';
7894
8023
  id: Scalars['ID']['output'];
@@ -7905,6 +8034,29 @@ export type DeleteApplePushKeyResult = {
7905
8034
  __typename?: 'deleteApplePushKeyResult';
7906
8035
  id: Scalars['ID']['output'];
7907
8036
  };
8037
+ export type ScheduleBranchDeletionMutationVariables = Exact<{
8038
+ branchId: Scalars['ID']['input'];
8039
+ }>;
8040
+ export type ScheduleBranchDeletionMutation = {
8041
+ __typename?: 'RootMutation';
8042
+ updateBranch: {
8043
+ __typename?: 'UpdateBranchMutation';
8044
+ scheduleUpdateBranchDeletion: {
8045
+ __typename?: 'BackgroundJobReceipt';
8046
+ id: string;
8047
+ state: BackgroundJobState;
8048
+ tries: number;
8049
+ willRetry: boolean;
8050
+ resultId?: string | null;
8051
+ resultType: BackgroundJobResultType;
8052
+ resultData?: any | null;
8053
+ errorCode?: string | null;
8054
+ errorMessage?: string | null;
8055
+ createdAt: any;
8056
+ updatedAt: any;
8057
+ };
8058
+ };
8059
+ };
7908
8060
  export type CreateUpdateBranchForAppMutationVariables = Exact<{
7909
8061
  appId: Scalars['ID']['input'];
7910
8062
  name: Scalars['String']['input'];
@@ -7956,19 +8108,6 @@ export type GetBranchInfoQuery = {
7956
8108
  };
7957
8109
  };
7958
8110
  };
7959
- export type DeleteUpdateBranchMutationVariables = Exact<{
7960
- branchId: Scalars['ID']['input'];
7961
- }>;
7962
- export type DeleteUpdateBranchMutation = {
7963
- __typename?: 'RootMutation';
7964
- updateBranch: {
7965
- __typename?: 'UpdateBranchMutation';
7966
- deleteUpdateBranch: {
7967
- __typename?: 'DeleteUpdateBranchResult';
7968
- id: string;
7969
- };
7970
- };
7971
- };
7972
8111
  export type EditUpdateBranchMutationVariables = Exact<{
7973
8112
  input: EditUpdateBranchInput;
7974
8113
  }>;
@@ -8,7 +8,7 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.EnvironmentVariableVisibility = exports.EnvironmentVariableScope = exports.EnvironmentSecretType = exports.EntityTypeName = exports.EasTotalPlanEnablementUnit = exports.EasServiceMetric = exports.EasService = exports.EasBuildWaiverType = exports.EasBuildDeprecationInfoType = exports.EasBuildBillingResourceClass = exports.DistributionType = exports.DashboardViewPin = exports.CustomDomainStatus = exports.CustomDomainDnsRecordType = exports.CrashSampleFor = exports.ContinentCode = exports.BuildWorkflow = exports.BuildTrigger = exports.BuildStatus = exports.BuildRetryDisabledReason = exports.BuildResourceClass = exports.BuildPriority = exports.BuildPhase = exports.BuildMode = exports.BuildLimitThresholdExceededMetadataType = exports.BuildIosEnterpriseProvisioning = exports.BuildCredentialsSource = exports.BuildAnnotationType = exports.BackgroundJobState = exports.BackgroundJobResultType = exports.AuthProviderIdentifier = exports.AuthProtocolType = exports.AuditLogsExportFormat = exports.AssetMetadataStatus = exports.AssetMapSourceType = exports.AppsFilter = exports.AppleTeamType = exports.AppleDeviceClass = exports.AppUploadSessionType = exports.AppStoreConnectUserRole = exports.AppSort = exports.AppPrivacy = exports.AppPlatform = exports.AppInternalDistributionBuildPrivacy = exports.AndroidKeystoreType = exports.AndroidFcmVersion = exports.AndroidBuildType = exports.ActivityTimelineProjectActivityType = exports.AccountUploadSessionType = exports.AccountAppsSortByField = void 0;
10
10
  exports.SubmissionStatus = exports.SubmissionPriority = exports.SubmissionArchiveSourceType = exports.SubmissionAndroidReleaseStatus = exports.SubmissionAndroidArchiveType = exports.StatuspageServiceStatus = exports.StatuspageServiceName = exports.StatuspageIncidentStatus = exports.StatuspageIncidentImpact = exports.StandardOffer = exports.SecondFactorMethod = exports.Role = exports.ResponseType = exports.ResponseStatusType = exports.ResponseCacheStatus = exports.ResourceClassExperiment = exports.RequestsOrderByField = exports.RequestsOrderByDirection = exports.RequestMethod = exports.ProjectArchiveSourceType = exports.Permission = exports.Order = exports.OnboardingEnvironment = exports.OnboardingDeviceType = exports.OfferType = exports.NotificationType = exports.NotificationEvent = exports.MailchimpTag = exports.MailchimpAudience = exports.LocalBuildArchiveSourceType = exports.JobRunStatus = exports.JobRunPriority = exports.IosSchemeBuildConfiguration = exports.IosManagedBuildType = exports.IosDistributionType = exports.IosBuildType = exports.InvoiceDiscountType = exports.InsightsFilterType = exports.GitHubJobRunTriggerType = exports.GitHubJobRunTriggerRunStatus = exports.GitHubJobRunJobType = exports.GitHubBuildTriggerType = exports.GitHubBuildTriggerRunStatus = exports.GitHubBuildTriggerExecutionBehavior = exports.GitHubAppInstallationStatus = exports.GitHubAppInstallationAccountType = exports.GitHubAppEnvironment = exports.FingerprintSourceType = exports.Feature = exports.Experiment = void 0;
11
- exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserSpecifiedAccountUsage = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.TargetEntityMutationType = void 0;
11
+ exports.WorkflowsInsightsRunsOverTimeGranularity = exports.WorkflowRunTriggerEventType = exports.WorkflowRunStatus = exports.WorkflowProjectSourceType = exports.WorkflowJobType = exports.WorkflowJobStatus = exports.WorkflowJobReviewDecision = exports.WorkflowArtifactStorageType = exports.WorkerLoggerLevel = exports.WorkerDeploymentLogLevel = exports.WorkerDeploymentCrashKind = exports.WebhookType = exports.UserSpecifiedAccountUsage = exports.UserEntityTypeName = exports.UserAgentPlatform = exports.UserAgentOs = exports.UserAgentBrowser = exports.UsageMetricsGranularity = exports.UsageMetricType = exports.UploadSessionType = exports.TargetEntityMutationType = void 0;
12
12
  var AccountAppsSortByField;
13
13
  (function (AccountAppsSortByField) {
14
14
  AccountAppsSortByField["LatestActivityTime"] = "LATEST_ACTIVITY_TIME";
@@ -930,3 +930,9 @@ var WorkflowRunTriggerEventType;
930
930
  WorkflowRunTriggerEventType["Manual"] = "MANUAL";
931
931
  WorkflowRunTriggerEventType["Schedule"] = "SCHEDULE";
932
932
  })(WorkflowRunTriggerEventType || (exports.WorkflowRunTriggerEventType = WorkflowRunTriggerEventType = {}));
933
+ var WorkflowsInsightsRunsOverTimeGranularity;
934
+ (function (WorkflowsInsightsRunsOverTimeGranularity) {
935
+ WorkflowsInsightsRunsOverTimeGranularity["Day"] = "DAY";
936
+ WorkflowsInsightsRunsOverTimeGranularity["Hour"] = "HOUR";
937
+ WorkflowsInsightsRunsOverTimeGranularity["Minute"] = "MINUTE";
938
+ })(WorkflowsInsightsRunsOverTimeGranularity || (exports.WorkflowsInsightsRunsOverTimeGranularity = WorkflowsInsightsRunsOverTimeGranularity = {}));
@@ -54,6 +54,5 @@ function displayOverageWarning({ percentUsed, hasFreePlan, name, }) {
54
54
  dim: false,
55
55
  });
56
56
  log_1.default.warn(warning);
57
- log_1.default.newLine();
58
57
  }
59
58
  exports.displayOverageWarning = displayOverageWarning;
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "16.27.0",
2
+ "version": "16.28.0",
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": "16.27.0",
4
+ "version": "16.28.0",
5
5
  "author": "Expo <support@expo.dev>",
6
6
  "bin": {
7
7
  "eas": "./bin/run"
@@ -243,5 +243,5 @@
243
243
  "node": "20.11.0",
244
244
  "yarn": "1.22.21"
245
245
  },
246
- "gitHead": "ed8170047b9250e228495dda15d37b5a038e0aa2"
246
+ "gitHead": "18ecd0844ac4acbdfb5e4576b5b95f29f9277ae9"
247
247
  }