eas-cli 12.4.0 → 12.5.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.
@@ -1406,13 +1406,13 @@ export type AppWorkerDeploymentsArgs = {
1406
1406
  };
1407
1407
  /** Represents an Exponent App (or Experience in legacy terms) */
1408
1408
  export type AppWorkerDeploymentsCrashArgs = {
1409
- crashId: Scalars['ID']['input'];
1409
+ crashKey: Scalars['ID']['input'];
1410
1410
  sampleFor?: InputMaybe<CrashSampleFor>;
1411
1411
  };
1412
1412
  /** Represents an Exponent App (or Experience in legacy terms) */
1413
1413
  export type AppWorkerDeploymentsCrashesArgs = {
1414
- limit?: Scalars['Int']['input'];
1415
- timespan: CrashesTimespan;
1414
+ filters?: InputMaybe<CrashesFilters>;
1415
+ timespan: DatasetTimespan;
1416
1416
  };
1417
1417
  /** Represents an Exponent App (or Experience in legacy terms) */
1418
1418
  export type AppWorkerDeploymentsRequestArgs = {
@@ -1421,7 +1421,7 @@ export type AppWorkerDeploymentsRequestArgs = {
1421
1421
  /** Represents an Exponent App (or Experience in legacy terms) */
1422
1422
  export type AppWorkerDeploymentsRequestsArgs = {
1423
1423
  filters?: InputMaybe<RequestsFilters>;
1424
- timespan: RequestsTimespan;
1424
+ timespan: DatasetTimespan;
1425
1425
  };
1426
1426
  export type AppBranchEdge = {
1427
1427
  __typename?: 'AppBranchEdge';
@@ -1683,6 +1683,13 @@ export type AppStoreConnectApiKeyMutationUpdateAppStoreConnectApiKeyArgs = {
1683
1683
  appStoreConnectApiKeyUpdateInput: AppStoreConnectApiKeyUpdateInput;
1684
1684
  id: Scalars['ID']['input'];
1685
1685
  };
1686
+ export type AppStoreConnectApiKeyQuery = {
1687
+ __typename?: 'AppStoreConnectApiKeyQuery';
1688
+ byId: AppStoreConnectApiKey;
1689
+ };
1690
+ export type AppStoreConnectApiKeyQueryByIdArgs = {
1691
+ id: Scalars['ID']['input'];
1692
+ };
1686
1693
  export type AppStoreConnectApiKeyUpdateInput = {
1687
1694
  appleTeamId?: InputMaybe<Scalars['ID']['input']>;
1688
1695
  };
@@ -2755,9 +2762,8 @@ export declare enum CrashSampleFor {
2755
2762
  Newest = "NEWEST",
2756
2763
  Oldest = "OLDEST"
2757
2764
  }
2758
- export type CrashesTimespan = {
2759
- end: Scalars['DateTime']['input'];
2760
- start?: InputMaybe<Scalars['DateTime']['input']>;
2765
+ export type CrashesFilters = {
2766
+ name?: InputMaybe<Array<Scalars['String']['input']>>;
2761
2767
  };
2762
2768
  export type CreateAccessTokenInput = {
2763
2769
  actorID: Scalars['ID']['input'];
@@ -2860,11 +2866,21 @@ export type CreateSubmissionResult = {
2860
2866
  /** Created submission */
2861
2867
  submission: Submission;
2862
2868
  };
2869
+ export type CumulativeMetrics = {
2870
+ __typename?: 'CumulativeMetrics';
2871
+ /** Totals from the beginning of time till now */
2872
+ totals: CumulativeMetricsTotals;
2873
+ };
2863
2874
  export type CumulativeMetricsOverTimeData = {
2864
2875
  __typename?: 'CumulativeMetricsOverTimeData';
2865
2876
  data: LineChartData;
2866
2877
  metricsAtLastTimestamp: Array<LineDatapoint>;
2867
2878
  };
2879
+ export type CumulativeMetricsTotals = {
2880
+ __typename?: 'CumulativeMetricsTotals';
2881
+ totalFailedInstalls: Scalars['Int']['output'];
2882
+ totalInstalls: Scalars['Int']['output'];
2883
+ };
2868
2884
  export type CustomBuildConfigInput = {
2869
2885
  path: Scalars['String']['input'];
2870
2886
  };
@@ -2911,6 +2927,10 @@ export declare enum CustomDomainStatus {
2911
2927
  Pending = "PENDING",
2912
2928
  TimedOut = "TIMED_OUT"
2913
2929
  }
2930
+ export type DatasetTimespan = {
2931
+ end: Scalars['DateTime']['input'];
2932
+ start: Scalars['DateTime']['input'];
2933
+ };
2914
2934
  export type DeleteAccessTokenResult = {
2915
2935
  __typename?: 'DeleteAccessTokenResult';
2916
2936
  id: Scalars['ID']['output'];
@@ -3017,6 +3037,7 @@ export type DeployServerlessFunctionResult = {
3017
3037
  /** Represents a Deployment - a set of Builds with the same Runtime Version and Channel */
3018
3038
  export type Deployment = {
3019
3039
  __typename?: 'Deployment';
3040
+ buildCount: Scalars['Int']['output'];
3020
3041
  builds: DeploymentBuildsConnection;
3021
3042
  channel: UpdateChannel;
3022
3043
  id: Scalars['ID']['output'];
@@ -3027,6 +3048,10 @@ export type Deployment = {
3027
3048
  runtime: Runtime;
3028
3049
  };
3029
3050
  /** Represents a Deployment - a set of Builds with the same Runtime Version and Channel */
3051
+ export type DeploymentBuildCountArgs = {
3052
+ statuses?: InputMaybe<Array<BuildStatus>>;
3053
+ };
3054
+ /** Represents a Deployment - a set of Builds with the same Runtime Version and Channel */
3030
3055
  export type DeploymentBuildsArgs = {
3031
3056
  after?: InputMaybe<Scalars['String']['input']>;
3032
3057
  before?: InputMaybe<Scalars['String']['input']>;
@@ -3096,6 +3121,12 @@ export type DeploymentQuery = {
3096
3121
  export type DeploymentQueryByIdArgs = {
3097
3122
  deploymentId: Scalars['ID']['input'];
3098
3123
  };
3124
+ export type DeploymentResult = {
3125
+ __typename?: 'DeploymentResult';
3126
+ data?: Maybe<UpdateDeploymentsConnection>;
3127
+ error?: Maybe<Scalars['String']['output']>;
3128
+ success: Scalars['Boolean']['output'];
3129
+ };
3099
3130
  export type DeploymentSignedUrlResult = {
3100
3131
  __typename?: 'DeploymentSignedUrlResult';
3101
3132
  deploymentIdentifier: Scalars['ID']['output'];
@@ -3713,6 +3744,7 @@ export type GoogleServiceAccountKey = {
3713
3744
  clientIdentifier: Scalars['String']['output'];
3714
3745
  createdAt: Scalars['DateTime']['output'];
3715
3746
  id: Scalars['ID']['output'];
3747
+ keyJson: Scalars['String']['output'];
3716
3748
  privateKeyIdentifier: Scalars['String']['output'];
3717
3749
  projectIdentifier: Scalars['String']['output'];
3718
3750
  updatedAt: Scalars['DateTime']['output'];
@@ -3734,6 +3766,13 @@ export type GoogleServiceAccountKeyMutationCreateGoogleServiceAccountKeyArgs = {
3734
3766
  export type GoogleServiceAccountKeyMutationDeleteGoogleServiceAccountKeyArgs = {
3735
3767
  id: Scalars['ID']['input'];
3736
3768
  };
3769
+ export type GoogleServiceAccountKeyQuery = {
3770
+ __typename?: 'GoogleServiceAccountKeyQuery';
3771
+ byId: GoogleServiceAccountKey;
3772
+ };
3773
+ export type GoogleServiceAccountKeyQueryByIdArgs = {
3774
+ id: Scalars['ID']['input'];
3775
+ };
3737
3776
  /**
3738
3777
  * The value field is always sent from the client as a string,
3739
3778
  * and then it's parsed server-side according to the filterType
@@ -4496,10 +4535,6 @@ export type RequestsFilters = {
4496
4535
  status?: InputMaybe<Array<Scalars['Int']['input']>>;
4497
4536
  statusType?: InputMaybe<Array<ResponseStatusType>>;
4498
4537
  };
4499
- export type RequestsTimespan = {
4500
- end: Scalars['DateTime']['input'];
4501
- start: Scalars['DateTime']['input'];
4502
- };
4503
4538
  export type RescindUserInvitationResult = {
4504
4539
  __typename?: 'RescindUserInvitationResult';
4505
4540
  id: Scalars['ID']['output'];
@@ -4689,6 +4724,7 @@ export type RootMutation = {
4689
4724
  webhook: WebhookMutation;
4690
4725
  /** Mutations that modify a websiteNotification */
4691
4726
  websiteNotifications: WebsiteNotificationMutation;
4727
+ workflowJob: WorkflowJobMutation;
4692
4728
  };
4693
4729
  export type RootMutationAccountArgs = {
4694
4730
  accountName?: InputMaybe<Scalars['ID']['input']>;
@@ -4726,6 +4762,8 @@ export type RootQuery = {
4726
4762
  * @deprecated Use 'byId' field under 'app'.
4727
4763
  */
4728
4764
  appByAppId?: Maybe<App>;
4765
+ /** Top-level query object for querying App Store Connect API Keys. */
4766
+ appStoreConnectApiKey: AppStoreConnectApiKeyQuery;
4729
4767
  /** Top-level query object for querying Apple Device registration requests. */
4730
4768
  appleDeviceRegistrationRequest: AppleDeviceRegistrationRequestQuery;
4731
4769
  /** Top-level query object for querying Apple Teams. */
@@ -4749,6 +4787,8 @@ export type RootQuery = {
4749
4787
  experimentation: ExperimentationQuery;
4750
4788
  /** Top-level query object for querying GitHub App information and resources it has access to. */
4751
4789
  githubApp: GitHubAppQuery;
4790
+ /** Top-level query object for querying Google Service Account Keys. */
4791
+ googleServiceAccountKey: GoogleServiceAccountKeyQuery;
4752
4792
  /** Top-level query object for querying Stripe Invoices. */
4753
4793
  invoice: InvoiceQuery;
4754
4794
  jobRun: JobRunQuery;
@@ -5361,7 +5401,7 @@ export type Update = ActivityTimelineProjectActivity & {
5361
5401
  branchId: Scalars['ID']['output'];
5362
5402
  codeSigningInfo?: Maybe<CodeSigningInfo>;
5363
5403
  createdAt: Scalars['DateTime']['output'];
5364
- deployments: UpdateDeploymentsConnection;
5404
+ deployments: DeploymentResult;
5365
5405
  expoGoSDKVersion?: Maybe<Scalars['String']['output']>;
5366
5406
  gitCommitHash?: Maybe<Scalars['String']['output']>;
5367
5407
  group: Scalars['String']['output'];
@@ -5452,6 +5492,7 @@ export type UpdateChannel = {
5452
5492
  branchMapping: Scalars['String']['output'];
5453
5493
  createdAt: Scalars['DateTime']['output'];
5454
5494
  id: Scalars['ID']['output'];
5495
+ isPaused: Scalars['Boolean']['output'];
5455
5496
  name: Scalars['String']['output'];
5456
5497
  updateBranches: Array<UpdateBranch>;
5457
5498
  updatedAt: Scalars['DateTime']['output'];
@@ -5478,6 +5519,10 @@ export type UpdateChannelMutation = {
5478
5519
  * stringified JSON supplied to the mutation as a variable.
5479
5520
  */
5480
5521
  editUpdateChannel: UpdateChannel;
5522
+ /** Pause updates for an EAS channel. */
5523
+ pauseUpdateChannel: UpdateChannel;
5524
+ /** Resume updates for an EAS channel. */
5525
+ resumeUpdateChannel: UpdateChannel;
5481
5526
  };
5482
5527
  export type UpdateChannelMutationCreateUpdateChannelForAppArgs = {
5483
5528
  appId: Scalars['ID']['input'];
@@ -5491,6 +5536,12 @@ export type UpdateChannelMutationEditUpdateChannelArgs = {
5491
5536
  branchMapping: Scalars['String']['input'];
5492
5537
  channelId: Scalars['ID']['input'];
5493
5538
  };
5539
+ export type UpdateChannelMutationPauseUpdateChannelArgs = {
5540
+ channelId: Scalars['ID']['input'];
5541
+ };
5542
+ export type UpdateChannelMutationResumeUpdateChannelArgs = {
5543
+ channelId: Scalars['ID']['input'];
5544
+ };
5494
5545
  export type UpdateDeploymentEdge = {
5495
5546
  __typename?: 'UpdateDeploymentEdge';
5496
5547
  cursor: Scalars['String']['output'];
@@ -5528,6 +5579,7 @@ export type UpdateInfoGroup = {
5528
5579
  };
5529
5580
  export type UpdateInsights = {
5530
5581
  __typename?: 'UpdateInsights';
5582
+ cumulativeMetrics: CumulativeMetrics;
5531
5583
  cumulativeMetricsOverTime: CumulativeMetricsOverTimeData;
5532
5584
  id: Scalars['ID']['output'];
5533
5585
  totalUniqueUsers: Scalars['Int']['output'];
@@ -5976,6 +6028,7 @@ export declare enum UserEntityTypeName {
5976
6028
  Password = "Password",
5977
6029
  SsoUser = "SSOUser",
5978
6030
  User = "User",
6031
+ UserPermission = "UserPermission",
5979
6032
  UserSecondFactorBackupCodes = "UserSecondFactorBackupCodes",
5980
6033
  UserSecondFactorDevice = "UserSecondFactorDevice"
5981
6034
  }
@@ -6227,6 +6280,7 @@ export type WorkerCustomDomain = {
6227
6280
  export type WorkerDeployment = {
6228
6281
  __typename?: 'WorkerDeployment';
6229
6282
  aliases?: Maybe<Array<WorkerDeploymentAlias>>;
6283
+ crashes?: Maybe<WorkerDeploymentCrashes>;
6230
6284
  createdAt: Scalars['DateTime']['output'];
6231
6285
  deploymentDomain: Scalars['String']['output'];
6232
6286
  deploymentIdentifier: Scalars['WorkerDeploymentIdentifier']['output'];
@@ -6238,13 +6292,17 @@ export type WorkerDeployment = {
6238
6292
  subdomain: Scalars['String']['output'];
6239
6293
  url: Scalars['String']['output'];
6240
6294
  };
6295
+ export type WorkerDeploymentCrashesArgs = {
6296
+ filters?: InputMaybe<CrashesFilters>;
6297
+ timespan: DatasetTimespan;
6298
+ };
6241
6299
  export type WorkerDeploymentLogsArgs = {
6242
6300
  limit?: InputMaybe<Scalars['Int']['input']>;
6243
6301
  timespan: LogsTimespan;
6244
6302
  };
6245
6303
  export type WorkerDeploymentRequestsArgs = {
6246
6304
  filters?: InputMaybe<RequestsFilters>;
6247
- timespan: RequestsTimespan;
6305
+ timespan: DatasetTimespan;
6248
6306
  };
6249
6307
  export type WorkerDeploymentAlias = {
6250
6308
  __typename?: 'WorkerDeploymentAlias';
@@ -6271,30 +6329,59 @@ export type WorkerDeploymentAliasesConnection = {
6271
6329
  export type WorkerDeploymentCrashEdge = {
6272
6330
  __typename?: 'WorkerDeploymentCrashEdge';
6273
6331
  logs: Array<WorkerDeploymentLogNode>;
6332
+ node: WorkerDeploymentCrashNode;
6274
6333
  request?: Maybe<WorkerDeploymentRequestNode>;
6275
- sample: WorkerDeploymentCrashSample;
6276
6334
  };
6277
6335
  export type WorkerDeploymentCrashNode = {
6278
6336
  __typename?: 'WorkerDeploymentCrashNode';
6279
- id: Scalars['ID']['output'];
6280
- minOccurrences: Scalars['Int']['output'];
6281
- mostRecentlyOccurredAt: Scalars['DateTime']['output'];
6282
- oldestOccurredAt: Scalars['DateTime']['output'];
6283
- sample: WorkerDeploymentCrashSample;
6284
- };
6285
- export type WorkerDeploymentCrashSample = {
6286
- __typename?: 'WorkerDeploymentCrashSample';
6337
+ crashHash: Scalars['ID']['output'];
6338
+ crashTimestamp: Scalars['DateTime']['output'];
6339
+ deploymentIdentifier: Scalars['String']['output'];
6287
6340
  firstStackLine?: Maybe<Scalars['String']['output']>;
6341
+ key: Scalars['ID']['output'];
6288
6342
  message: Scalars['String']['output'];
6289
6343
  name: Scalars['String']['output'];
6344
+ requestTimestamp: Scalars['DateTime']['output'];
6290
6345
  scriptName: Scalars['String']['output'];
6291
6346
  stack?: Maybe<Array<Scalars['String']['output']>>;
6292
- timestamp: Scalars['DateTime']['output'];
6293
6347
  };
6294
6348
  export type WorkerDeploymentCrashes = {
6295
6349
  __typename?: 'WorkerDeploymentCrashes';
6296
- minRowsWithoutLimit?: Maybe<Scalars['Int']['output']>;
6350
+ byCrashHash: Array<WorkerDeploymentCrashesHashEdge>;
6351
+ byName: Array<WorkerDeploymentCrashesNameEdge>;
6352
+ interval: Scalars['Int']['output'];
6353
+ minRowsWithoutLimit: Scalars['Int']['output'];
6297
6354
  nodes: Array<WorkerDeploymentCrashNode>;
6355
+ summary: WorkerDeploymentCrashesAggregationNode;
6356
+ timeseries: Array<WorkerDeploymentCrashesTimeseriesEdge>;
6357
+ };
6358
+ export type WorkerDeploymentCrashesAggregationNode = {
6359
+ __typename?: 'WorkerDeploymentCrashesAggregationNode';
6360
+ crashesPerMs?: Maybe<Scalars['Float']['output']>;
6361
+ crashesSum: Scalars['Int']['output'];
6362
+ distinctCrashes: Scalars['Int']['output'];
6363
+ firstOccurredAt: Scalars['DateTime']['output'];
6364
+ mostRecentlyOccurredAt: Scalars['DateTime']['output'];
6365
+ sampleRate: Scalars['Float']['output'];
6366
+ };
6367
+ export type WorkerDeploymentCrashesHashEdge = {
6368
+ __typename?: 'WorkerDeploymentCrashesHashEdge';
6369
+ crashHash: Scalars['ID']['output'];
6370
+ node: WorkerDeploymentCrashesAggregationNode;
6371
+ sample: WorkerDeploymentCrashNode;
6372
+ timeseries: Array<WorkerDeploymentCrashesTimeseriesEdge>;
6373
+ };
6374
+ export type WorkerDeploymentCrashesNameEdge = {
6375
+ __typename?: 'WorkerDeploymentCrashesNameEdge';
6376
+ name: Scalars['String']['output'];
6377
+ node: WorkerDeploymentCrashesAggregationNode;
6378
+ sample: WorkerDeploymentCrashNode;
6379
+ timeseries: Array<WorkerDeploymentCrashesTimeseriesEdge>;
6380
+ };
6381
+ export type WorkerDeploymentCrashesTimeseriesEdge = {
6382
+ __typename?: 'WorkerDeploymentCrashesTimeseriesEdge';
6383
+ node?: Maybe<WorkerDeploymentCrashesAggregationNode>;
6384
+ timestamp: Scalars['DateTime']['output'];
6298
6385
  };
6299
6386
  export type WorkerDeploymentEdge = {
6300
6387
  __typename?: 'WorkerDeploymentEdge';
@@ -6329,7 +6416,7 @@ export type WorkerDeploymentQueryByIdArgs = {
6329
6416
  };
6330
6417
  export type WorkerDeploymentRequestEdge = {
6331
6418
  __typename?: 'WorkerDeploymentRequestEdge';
6332
- crash?: Maybe<WorkerDeploymentCrashSample>;
6419
+ crash?: Maybe<WorkerDeploymentCrashNode>;
6333
6420
  logs: Array<WorkerDeploymentLogNode>;
6334
6421
  node: WorkerDeploymentRequestNode;
6335
6422
  };
@@ -6469,6 +6556,13 @@ export declare enum WorkerLoggerLevel {
6469
6556
  Trace = "TRACE",
6470
6557
  Warn = "WARN"
6471
6558
  }
6559
+ export type WorkflowJobMutation = {
6560
+ __typename?: 'WorkflowJobMutation';
6561
+ approveWorkflowJob: Scalars['ID']['output'];
6562
+ };
6563
+ export type WorkflowJobMutationApproveWorkflowJobArgs = {
6564
+ workflowJobId: Scalars['ID']['input'];
6565
+ };
6472
6566
  export type DeleteAndroidAppBuildCredentialsResult = {
6473
6567
  __typename?: 'deleteAndroidAppBuildCredentialsResult';
6474
6568
  id: Scalars['ID']['output'];
@@ -11204,6 +11298,22 @@ export type AppByFullNameQuery = {
11204
11298
  };
11205
11299
  };
11206
11300
  };
11301
+ export type AppStoreConnectApiKeyByIdQueryVariables = Exact<{
11302
+ ascApiKeyId: Scalars['ID']['input'];
11303
+ }>;
11304
+ export type AppStoreConnectApiKeyByIdQuery = {
11305
+ __typename?: 'RootQuery';
11306
+ appStoreConnectApiKey: {
11307
+ __typename?: 'AppStoreConnectApiKeyQuery';
11308
+ byId: {
11309
+ __typename?: 'AppStoreConnectApiKey';
11310
+ id: string;
11311
+ issuerIdentifier: string;
11312
+ keyIdentifier: string;
11313
+ keyP8: string;
11314
+ };
11315
+ };
11316
+ };
11207
11317
  export type LatestAppVersionQueryVariables = Exact<{
11208
11318
  appId: Scalars['String']['input'];
11209
11319
  platform: AppPlatform;
@@ -12012,6 +12122,20 @@ export type EnvironmentVariablesSharedWithSensitiveQuery = {
12012
12122
  };
12013
12123
  };
12014
12124
  };
12125
+ export type GoogleServiceAccountKeyByIdQueryVariables = Exact<{
12126
+ ascApiKeyId: Scalars['ID']['input'];
12127
+ }>;
12128
+ export type GoogleServiceAccountKeyByIdQuery = {
12129
+ __typename?: 'RootQuery';
12130
+ googleServiceAccountKey: {
12131
+ __typename?: 'GoogleServiceAccountKeyQuery';
12132
+ byId: {
12133
+ __typename?: 'GoogleServiceAccountKey';
12134
+ id: string;
12135
+ keyJson: string;
12136
+ };
12137
+ };
12138
+ };
12015
12139
  export type GetAssetMetadataQueryVariables = Exact<{
12016
12140
  storageKeys: Array<Scalars['String']['input']> | Scalars['String']['input'];
12017
12141
  }>;
@@ -765,6 +765,7 @@ var UserEntityTypeName;
765
765
  UserEntityTypeName["Password"] = "Password";
766
766
  UserEntityTypeName["SsoUser"] = "SSOUser";
767
767
  UserEntityTypeName["User"] = "User";
768
+ UserEntityTypeName["UserPermission"] = "UserPermission";
768
769
  UserEntityTypeName["UserSecondFactorBackupCodes"] = "UserSecondFactorBackupCodes";
769
770
  UserEntityTypeName["UserSecondFactorDevice"] = "UserSecondFactorDevice";
770
771
  })(UserEntityTypeName || (exports.UserEntityTypeName = UserEntityTypeName = {}));
@@ -0,0 +1,8 @@
1
+ import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
2
+ export declare const AppStoreConnectApiKeyQuery: {
3
+ getByIdAsync(graphqlClient: ExpoGraphqlClient, ascApiKeyId: string): Promise<{
4
+ issuerIdentifier: string;
5
+ keyIdentifier: string;
6
+ keyP8: string;
7
+ }>;
8
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppStoreConnectApiKeyQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ const client_1 = require("../client");
7
+ exports.AppStoreConnectApiKeyQuery = {
8
+ async getByIdAsync(graphqlClient, ascApiKeyId) {
9
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
10
+ .query((0, graphql_tag_1.default) `
11
+ query AppStoreConnectApiKeyById($ascApiKeyId: ID!) {
12
+ appStoreConnectApiKey {
13
+ byId(id: $ascApiKeyId) {
14
+ id
15
+ issuerIdentifier
16
+ keyIdentifier
17
+ keyP8
18
+ }
19
+ }
20
+ }
21
+ `, { ascApiKeyId }, {
22
+ additionalTypenames: ['AppStoreConnectApiKey'],
23
+ })
24
+ .toPromise());
25
+ const key = data.appStoreConnectApiKey.byId;
26
+ return {
27
+ issuerIdentifier: key.issuerIdentifier,
28
+ keyIdentifier: key.keyIdentifier,
29
+ keyP8: key.keyP8,
30
+ };
31
+ },
32
+ };
@@ -0,0 +1,6 @@
1
+ import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
2
+ export declare const GoogleServiceAccountKeyQuery: {
3
+ getByIdAsync(graphqlClient: ExpoGraphqlClient, ascApiKeyId: string): Promise<{
4
+ keyJson: string;
5
+ }>;
6
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GoogleServiceAccountKeyQuery = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
6
+ const client_1 = require("../client");
7
+ exports.GoogleServiceAccountKeyQuery = {
8
+ async getByIdAsync(graphqlClient, ascApiKeyId) {
9
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
10
+ .query((0, graphql_tag_1.default) `
11
+ query GoogleServiceAccountKeyById($ascApiKeyId: ID!) {
12
+ googleServiceAccountKey {
13
+ byId(id: $ascApiKeyId) {
14
+ id
15
+ keyJson
16
+ }
17
+ }
18
+ }
19
+ `, { ascApiKeyId }, {
20
+ additionalTypenames: ['GoogleServiceAccountKey'],
21
+ })
22
+ .toPromise());
23
+ return { keyJson: data.googleServiceAccountKey.byId.keyJson };
24
+ },
25
+ };
@@ -43,9 +43,6 @@ class AmbiguousApplicationIdError extends Error {
43
43
  }
44
44
  exports.AmbiguousApplicationIdError = AmbiguousApplicationIdError;
45
45
  async function getApplicationIdFromBareAsync(projectDir, gradleContext) {
46
- if (env_1.default.overrideAndroidApplicationId) {
47
- return env_1.default.overrideAndroidApplicationId;
48
- }
49
46
  const errorMessage = 'Could not read applicationId from Android project.';
50
47
  if (gradleContext) {
51
48
  const buildGradle = await gradleUtils.getAppBuildGradleAsync(projectDir);
@@ -72,6 +69,9 @@ async function getApplicationIdFromBareAsync(projectDir, gradleContext) {
72
69
  }
73
70
  exports.getApplicationIdFromBareAsync = getApplicationIdFromBareAsync;
74
71
  async function getApplicationIdAsync(projectDir, exp, vcsClient, gradleContext) {
72
+ if (env_1.default.overrideAndroidApplicationId) {
73
+ return env_1.default.overrideAndroidApplicationId;
74
+ }
75
75
  const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.ANDROID, vcsClient);
76
76
  if (workflow === eas_build_job_1.Workflow.GENERIC) {
77
77
  warnIfAndroidPackageDefinedInAppConfigForBareWorkflowProject(projectDir, exp);
@@ -3,14 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getPublicExpoConfig = exports.isUsingStaticExpoConfig = exports.ensureExpoConfigExists = exports.getPrivateExpoConfig = exports.createOrModifyExpoConfigAsync = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const config_1 = require("@expo/config");
6
- const json_file_1 = tslib_1.__importDefault(require("@expo/json-file"));
7
6
  const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
8
7
  const joi_1 = tslib_1.__importDefault(require("joi"));
9
- const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
10
8
  const path_1 = tslib_1.__importDefault(require("path"));
11
9
  async function createOrModifyExpoConfigAsync(projectDir, exp, readOptions) {
12
10
  ensureExpoConfigExists(projectDir);
13
- await ensureStaticExpoConfigIsValidAsync(projectDir);
14
11
  if (readOptions) {
15
12
  return await (0, config_1.modifyConfigAsync)(projectDir, exp, readOptions);
16
13
  }
@@ -68,18 +65,6 @@ function ensureExpoConfigExists(projectDir) {
68
65
  }
69
66
  }
70
67
  exports.ensureExpoConfigExists = ensureExpoConfigExists;
71
- async function ensureStaticExpoConfigIsValidAsync(projectDir) {
72
- if (isUsingStaticExpoConfig(projectDir)) {
73
- const staticConfigPath = (0, nullthrows_1.default)((0, config_1.getConfigFilePaths)(projectDir).staticConfigPath);
74
- const staticConfig = await json_file_1.default.readAsync(staticConfigPath);
75
- // Add the "expo" key if it doesn't exist on app.json yet, such as in
76
- // projects initialized with RNC CLI
77
- if (!staticConfig?.expo) {
78
- staticConfig.expo = {};
79
- await json_file_1.default.writeAsync(staticConfigPath, staticConfig);
80
- }
81
- }
82
- }
83
68
  function isUsingStaticExpoConfig(projectDir) {
84
69
  const paths = (0, config_1.getConfigFilePaths)(projectDir);
85
70
  return !!(paths.staticConfigPath?.endsWith('app.json') && !paths.dynamicConfigPath);
@@ -39,12 +39,12 @@ class AmbiguousBundleIdentifierError extends Error {
39
39
  }
40
40
  exports.AmbiguousBundleIdentifierError = AmbiguousBundleIdentifierError;
41
41
  async function getBundleIdentifierAsync(projectDir, exp, vcsClient, xcodeContext) {
42
+ if (env_1.default.overrideIosBundleIdentifier) {
43
+ return env_1.default.overrideIosBundleIdentifier;
44
+ }
42
45
  const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.IOS, vcsClient);
43
46
  if (workflow === eas_build_job_1.Workflow.GENERIC) {
44
47
  warnIfBundleIdentifierDefinedInAppConfigForBareWorkflowProject(projectDir, exp);
45
- if (env_1.default.overrideIosBundleIdentifier) {
46
- return env_1.default.overrideIosBundleIdentifier;
47
- }
48
48
  const xcodeProject = config_plugins_1.IOSConfig.XcodeUtils.getPbxproj(projectDir);
49
49
  const isMultiScheme = config_plugins_1.IOSConfig.BuildScheme.getSchemesFromXcodeproj(projectDir).length > 1;
50
50
  const isMultiTarget = config_plugins_1.IOSConfig.Target.getNativeTargets(xcodeProject).filter(([, target]) => config_plugins_1.IOSConfig.Target.isTargetOfType(target, config_plugins_1.IOSConfig.Target.TargetType.APPLICATION)).length > 1;
@@ -8,6 +8,7 @@ const url_1 = require("url");
8
8
  const uuid = tslib_1.__importStar(require("uuid"));
9
9
  const builds_1 = require("./utils/builds");
10
10
  const files_1 = require("./utils/files");
11
+ const generated_1 = require("../graphql/generated");
11
12
  const BuildQuery_1 = require("../graphql/queries/BuildQuery");
12
13
  const AppPlatform_1 = require("../graphql/types/AppPlatform");
13
14
  const log_1 = tslib_1.__importStar(require("../log"));
@@ -26,6 +27,15 @@ var ArchiveSourceType;
26
27
  ArchiveSourceType[ArchiveSourceType["prompt"] = 6] = "prompt";
27
28
  ArchiveSourceType[ArchiveSourceType["gcs"] = 7] = "gcs";
28
29
  })(ArchiveSourceType || (exports.ArchiveSourceType = ArchiveSourceType = {}));
30
+ const buildStatusMapping = {
31
+ [generated_1.BuildStatus.New]: 'new',
32
+ [generated_1.BuildStatus.InQueue]: 'in queue',
33
+ [generated_1.BuildStatus.InProgress]: 'in progress',
34
+ [generated_1.BuildStatus.Finished]: 'finished',
35
+ [generated_1.BuildStatus.Errored]: 'errored',
36
+ [generated_1.BuildStatus.PendingCancel]: 'canceled',
37
+ [generated_1.BuildStatus.Canceled]: 'canceled',
38
+ };
29
39
  async function getArchiveAsync(ctx, source) {
30
40
  switch (source.sourceType) {
31
41
  case ArchiveSourceType.prompt: {
@@ -200,7 +210,7 @@ async function handleBuildListSourceAsync(ctx) {
200
210
  }
201
211
  }
202
212
  function formatBuildChoice(build) {
203
- const { id, updatedAt, runtimeVersion, buildProfile, gitCommitHash, gitCommitMessage, channel, message, } = build;
213
+ const { id, updatedAt, runtimeVersion, buildProfile, gitCommitHash, gitCommitMessage, channel, message, status, } = build;
204
214
  const buildDate = new Date(updatedAt);
205
215
  const splitCommitMessage = gitCommitMessage?.split('\n');
206
216
  const formattedCommitData = gitCommitHash && splitCommitMessage && splitCommitMessage.length > 0
@@ -218,6 +228,7 @@ function formatBuildChoice(build) {
218
228
  ? chalk_1.default.bold(message.length > 200 ? `${message.slice(0, 200)}...` : message)
219
229
  : null,
220
230
  },
231
+ { name: 'Status', value: buildStatusMapping[status] },
221
232
  ];
222
233
  const filteredDescriptionArray = descriptionItems
223
234
  .filter(item => item.value)
@@ -230,6 +241,9 @@ function formatBuildChoice(build) {
230
241
  };
231
242
  }
232
243
  async function handlePromptSourceAsync(ctx) {
244
+ if (ctx.nonInteractive) {
245
+ throw new Error('Please run this command with appropriate input.');
246
+ }
233
247
  const { sourceType: sourceTypeRaw } = await (0, prompts_1.promptAsync)({
234
248
  name: 'sourceType',
235
249
  type: 'select',
@@ -25,6 +25,7 @@ export default abstract class BaseSubmitter<P extends Platform, ResolvedSourceOp
25
25
  [K in keyof ResolvedSourceOptions]: () => Promise<ResolvedSourceOptions[K]>;
26
26
  }, sourceOptionAnalytics: Record<keyof ResolvedSourceOptions, AnalyticEvents>);
27
27
  private getSourceOptionsAsync;
28
+ getSubmissionInputAsync(): Promise<SubmissionInput<P>>;
28
29
  submitAsync(): Promise<SubmissionFragment>;
29
30
  abstract createSubmissionInputAsync(resolvedOptions: ResolvedSourceOptions): Promise<SubmissionInput<P>>;
30
31
  formatArchive(archive: ResolvedArchiveSource): Pick<SubmissionInput<P>, 'archiveSource' | 'buildId'>;
@@ -32,9 +32,12 @@ class BaseSubmitter {
32
32
  }
33
33
  return resolvedSourceOptions;
34
34
  }
35
- async submitAsync() {
35
+ async getSubmissionInputAsync() {
36
36
  const resolvedSourceOptions = await this.getSourceOptionsAsync();
37
- const input = await this.createSubmissionInputAsync(resolvedSourceOptions);
37
+ return await this.createSubmissionInputAsync(resolvedSourceOptions);
38
+ }
39
+ async submitAsync() {
40
+ const input = await this.getSubmissionInputAsync();
38
41
  return await this.createSubmissionWithAnalyticsAsync(input);
39
42
  }
40
43
  formatArchive(archive) {
@@ -1,10 +1,10 @@
1
1
  import { Platform } from '@expo/eas-build-job';
2
- import { SubmissionFragment } from '../../graphql/generated';
2
+ import AndroidSubmitter from './AndroidSubmitter';
3
3
  import { SubmissionContext } from '../context';
4
4
  export default class AndroidSubmitCommand {
5
5
  private ctx;
6
6
  constructor(ctx: SubmissionContext<Platform.ANDROID>);
7
- runAsync(): Promise<SubmissionFragment>;
7
+ runAsync(): Promise<AndroidSubmitter>;
8
8
  private getAndroidSubmissionOptionsAsync;
9
9
  private maybeGetAndroidPackageFromCurrentProjectAsync;
10
10
  private resolveTrack;
@@ -36,7 +36,7 @@ class AndroidSubmitCommand {
36
36
  }
37
37
  const submissionOptions = await this.getAndroidSubmissionOptionsAsync(archiveSourceValue);
38
38
  const submitter = new AndroidSubmitter_1.default(this.ctx, submissionOptions, archive);
39
- return await submitter.submitAsync();
39
+ return submitter;
40
40
  }
41
41
  async getAndroidSubmissionOptionsAsync(archiveSource) {
42
42
  const track = this.resolveTrack();
@@ -1,10 +1,10 @@
1
1
  import { Platform } from '@expo/eas-build-job';
2
- import { SubmissionFragment } from '../../graphql/generated';
2
+ import IosSubmitter from './IosSubmitter';
3
3
  import { SubmissionContext } from '../context';
4
4
  export default class IosSubmitCommand {
5
5
  private ctx;
6
6
  constructor(ctx: SubmissionContext<Platform.IOS>);
7
- runAsync(): Promise<SubmissionFragment>;
7
+ runAsync(): Promise<IosSubmitter>;
8
8
  private resolveSubmissionOptionsAsync;
9
9
  private resolveCredentialSubmissionOptionsAsync;
10
10
  private resolveAppSpecificPasswordSource;