eas-cli 12.4.1 → 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.
- package/README.md +60 -60
- package/build/build/local.js +19 -11
- package/build/commands/submit/internal.d.ts +24 -0
- package/build/commands/submit/internal.js +168 -0
- package/build/commands/worker/deploy.js +2 -4
- package/build/graphql/generated.d.ts +149 -25
- package/build/graphql/generated.js +1 -0
- package/build/graphql/queries/AppStoreConnectApiKeyQuery.d.ts +8 -0
- package/build/graphql/queries/AppStoreConnectApiKeyQuery.js +32 -0
- package/build/graphql/queries/GoogleServiceAccountKeyQuery.d.ts +6 -0
- package/build/graphql/queries/GoogleServiceAccountKeyQuery.js +25 -0
- package/build/project/android/applicationId.js +3 -3
- package/build/project/expoConfig.js +0 -15
- package/build/project/ios/bundleIdentifier.js +3 -3
- package/build/submit/ArchiveSource.js +15 -1
- package/build/submit/BaseSubmitter.d.ts +1 -0
- package/build/submit/BaseSubmitter.js +5 -2
- package/build/submit/android/AndroidSubmitCommand.d.ts +2 -2
- package/build/submit/android/AndroidSubmitCommand.js +1 -1
- package/build/submit/ios/IosSubmitCommand.d.ts +2 -2
- package/build/submit/ios/IosSubmitCommand.js +1 -1
- package/build/submit/submit.js +2 -1
- package/build/submit/utils/builds.js +22 -10
- package/build/worker/deployment.js +7 -7
- package/oclif.manifest.json +44 -1
- package/package.json +7 -6
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
6
|
+
const eas_json_1 = require("@expo/eas-json");
|
|
7
|
+
const core_1 = require("@oclif/core");
|
|
8
|
+
const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
|
|
9
|
+
const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
|
|
10
|
+
const generated_1 = require("../../graphql/generated");
|
|
11
|
+
const AppStoreConnectApiKeyQuery_1 = require("../../graphql/queries/AppStoreConnectApiKeyQuery");
|
|
12
|
+
const GoogleServiceAccountKeyQuery_1 = require("../../graphql/queries/GoogleServiceAccountKeyQuery");
|
|
13
|
+
const AndroidSubmitCommand_1 = tslib_1.__importDefault(require("../../submit/android/AndroidSubmitCommand"));
|
|
14
|
+
const context_1 = require("../../submit/context");
|
|
15
|
+
const IosSubmitCommand_1 = tslib_1.__importDefault(require("../../submit/ios/IosSubmitCommand"));
|
|
16
|
+
const json_1 = require("../../utils/json");
|
|
17
|
+
const gitNoCommit_1 = tslib_1.__importDefault(require("../../vcs/clients/gitNoCommit"));
|
|
18
|
+
/**
|
|
19
|
+
* This command will be run on the EAS workers.
|
|
20
|
+
* This command resolves credentials and other
|
|
21
|
+
* configuration, that normally would be included in the
|
|
22
|
+
* job and metadata objects, and prints them to stdout.
|
|
23
|
+
*/
|
|
24
|
+
class SubmitInternal extends EasCommand_1.default {
|
|
25
|
+
async runAsync() {
|
|
26
|
+
const { flags } = await this.parse(_a);
|
|
27
|
+
// This command is always run with implicit --non-interactive and --json options
|
|
28
|
+
(0, json_1.enableJsonOutput)();
|
|
29
|
+
const { loggedIn: { actor, graphqlClient }, privateProjectConfig: { exp, projectId, projectDir }, analytics, vcsClient, } = await this.getContextAsync(_a, {
|
|
30
|
+
nonInteractive: true,
|
|
31
|
+
vcsClientOverride: new gitNoCommit_1.default(),
|
|
32
|
+
});
|
|
33
|
+
const submissionProfile = await eas_json_1.EasJsonUtils.getSubmitProfileAsync(eas_json_1.EasJsonAccessor.fromProjectPath(projectDir), flags.platform, flags.profile);
|
|
34
|
+
const ctx = await (0, context_1.createSubmissionContextAsync)({
|
|
35
|
+
platform: flags.platform,
|
|
36
|
+
projectDir,
|
|
37
|
+
profile: submissionProfile,
|
|
38
|
+
archiveFlags: {
|
|
39
|
+
id: flags.id,
|
|
40
|
+
},
|
|
41
|
+
nonInteractive: true,
|
|
42
|
+
isVerboseFastlaneEnabled: false,
|
|
43
|
+
actor,
|
|
44
|
+
graphqlClient,
|
|
45
|
+
analytics,
|
|
46
|
+
exp,
|
|
47
|
+
projectId,
|
|
48
|
+
vcsClient,
|
|
49
|
+
specifiedProfile: flags.profile,
|
|
50
|
+
});
|
|
51
|
+
let config;
|
|
52
|
+
if (ctx.platform === eas_build_job_1.Platform.IOS) {
|
|
53
|
+
const command = new IosSubmitCommand_1.default(ctx);
|
|
54
|
+
const submitter = await command.runAsync();
|
|
55
|
+
const mutationInput = await submitter.getSubmissionInputAsync();
|
|
56
|
+
const iosConfig = mutationInput.submissionConfig;
|
|
57
|
+
const ascApiKeyJson = await getAppStoreConnectApiKeyJsonAsync({
|
|
58
|
+
iosConfig,
|
|
59
|
+
graphqlClient,
|
|
60
|
+
});
|
|
61
|
+
const configInput = {
|
|
62
|
+
ascAppIdentifier: iosConfig.ascAppIdentifier,
|
|
63
|
+
isVerboseFastlaneEnabled: iosConfig.isVerboseFastlaneEnabled ?? undefined,
|
|
64
|
+
...(ascApiKeyJson
|
|
65
|
+
? { ascApiJsonKey: ascApiKeyJson }
|
|
66
|
+
: {
|
|
67
|
+
appleIdUsername: (0, nullthrows_1.default)(iosConfig.appleIdUsername),
|
|
68
|
+
appleAppSpecificPassword: (0, nullthrows_1.default)(iosConfig.appleAppSpecificPassword),
|
|
69
|
+
}),
|
|
70
|
+
};
|
|
71
|
+
config = eas_build_job_1.SubmissionConfig.Ios.SchemaZ.parse(configInput);
|
|
72
|
+
}
|
|
73
|
+
else if (ctx.platform === eas_build_job_1.Platform.ANDROID) {
|
|
74
|
+
const command = new AndroidSubmitCommand_1.default(ctx);
|
|
75
|
+
const submitter = await command.runAsync();
|
|
76
|
+
const mutationInput = await submitter.getSubmissionInputAsync();
|
|
77
|
+
const androidConfig = mutationInput.submissionConfig;
|
|
78
|
+
const changesNotSentForReview = androidConfig.changesNotSentForReview ?? undefined;
|
|
79
|
+
const releaseStatus = androidConfig.releaseStatus
|
|
80
|
+
? graphQlReleaseStatusToConfigReleaseStatus[androidConfig.releaseStatus]
|
|
81
|
+
: undefined;
|
|
82
|
+
const googleServiceAccountKeyJson = (0, nullthrows_1.default)(await getGoogleServiceAccountKeyJsonAsync({
|
|
83
|
+
androidConfig,
|
|
84
|
+
graphqlClient,
|
|
85
|
+
}));
|
|
86
|
+
const track = graphQlTrackToConfigTrack[androidConfig.track];
|
|
87
|
+
const configInput = {
|
|
88
|
+
changesNotSentForReview,
|
|
89
|
+
googleServiceAccountKeyJson,
|
|
90
|
+
track,
|
|
91
|
+
...(releaseStatus === eas_build_job_1.SubmissionConfig.Android.ReleaseStatus.IN_PROGRESS
|
|
92
|
+
? {
|
|
93
|
+
releaseStatus: eas_build_job_1.SubmissionConfig.Android.ReleaseStatus.IN_PROGRESS,
|
|
94
|
+
rollout: androidConfig.rollout ?? undefined,
|
|
95
|
+
}
|
|
96
|
+
: { releaseStatus }),
|
|
97
|
+
};
|
|
98
|
+
config = eas_build_job_1.SubmissionConfig.Android.SchemaZ.parse(configInput);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
throw new Error(`Unsupported platform: ${ctx.platform}`);
|
|
102
|
+
}
|
|
103
|
+
(0, json_1.printJsonOnlyOutput)({ config });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
_a = SubmitInternal;
|
|
107
|
+
SubmitInternal.hidden = true;
|
|
108
|
+
SubmitInternal.flags = {
|
|
109
|
+
platform: core_1.Flags.enum({
|
|
110
|
+
options: [eas_build_job_1.Platform.ANDROID, eas_build_job_1.Platform.IOS],
|
|
111
|
+
required: true,
|
|
112
|
+
}),
|
|
113
|
+
profile: core_1.Flags.string({
|
|
114
|
+
description: 'Name of the submit profile from eas.json. Defaults to "production" if defined in eas.json.',
|
|
115
|
+
}),
|
|
116
|
+
id: core_1.Flags.string({
|
|
117
|
+
description: 'ID of the build to submit',
|
|
118
|
+
required: true,
|
|
119
|
+
}),
|
|
120
|
+
};
|
|
121
|
+
SubmitInternal.contextDefinition = {
|
|
122
|
+
..._a.ContextOptions.LoggedIn,
|
|
123
|
+
..._a.ContextOptions.ProjectConfig,
|
|
124
|
+
..._a.ContextOptions.ProjectDir,
|
|
125
|
+
..._a.ContextOptions.Analytics,
|
|
126
|
+
..._a.ContextOptions.Vcs,
|
|
127
|
+
};
|
|
128
|
+
exports.default = SubmitInternal;
|
|
129
|
+
async function getGoogleServiceAccountKeyJsonAsync({ androidConfig, graphqlClient, }) {
|
|
130
|
+
if (androidConfig.googleServiceAccountKeyJson) {
|
|
131
|
+
return androidConfig.googleServiceAccountKeyJson;
|
|
132
|
+
}
|
|
133
|
+
else if (androidConfig.googleServiceAccountKeyId) {
|
|
134
|
+
const key = await GoogleServiceAccountKeyQuery_1.GoogleServiceAccountKeyQuery.getByIdAsync(graphqlClient, androidConfig.googleServiceAccountKeyId);
|
|
135
|
+
return key.keyJson;
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
async function getAppStoreConnectApiKeyJsonAsync({ iosConfig, graphqlClient, }) {
|
|
140
|
+
if (iosConfig.ascApiKey) {
|
|
141
|
+
return JSON.stringify({
|
|
142
|
+
key_id: iosConfig.ascApiKey.keyIdentifier,
|
|
143
|
+
issuer_id: iosConfig.ascApiKey.issuerIdentifier,
|
|
144
|
+
key: iosConfig.ascApiKey.keyP8,
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
else if (iosConfig.ascApiKeyId) {
|
|
148
|
+
const key = await AppStoreConnectApiKeyQuery_1.AppStoreConnectApiKeyQuery.getByIdAsync(graphqlClient, iosConfig.ascApiKeyId);
|
|
149
|
+
return JSON.stringify({
|
|
150
|
+
key_id: key.keyIdentifier,
|
|
151
|
+
issuer_id: key.issuerIdentifier,
|
|
152
|
+
key: key.keyP8,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const graphQlReleaseStatusToConfigReleaseStatus = {
|
|
158
|
+
[generated_1.SubmissionAndroidReleaseStatus.Draft]: eas_build_job_1.SubmissionConfig.Android.ReleaseStatus.DRAFT,
|
|
159
|
+
[generated_1.SubmissionAndroidReleaseStatus.InProgress]: eas_build_job_1.SubmissionConfig.Android.ReleaseStatus.IN_PROGRESS,
|
|
160
|
+
[generated_1.SubmissionAndroidReleaseStatus.Completed]: eas_build_job_1.SubmissionConfig.Android.ReleaseStatus.COMPLETED,
|
|
161
|
+
[generated_1.SubmissionAndroidReleaseStatus.Halted]: eas_build_job_1.SubmissionConfig.Android.ReleaseStatus.HALTED,
|
|
162
|
+
};
|
|
163
|
+
const graphQlTrackToConfigTrack = {
|
|
164
|
+
[generated_1.SubmissionAndroidTrack.Production]: eas_build_job_1.SubmissionConfig.Android.ReleaseTrack.PRODUCTION,
|
|
165
|
+
[generated_1.SubmissionAndroidTrack.Beta]: eas_build_job_1.SubmissionConfig.Android.ReleaseTrack.BETA,
|
|
166
|
+
[generated_1.SubmissionAndroidTrack.Alpha]: eas_build_job_1.SubmissionConfig.Android.ReleaseTrack.ALPHA,
|
|
167
|
+
[generated_1.SubmissionAndroidTrack.Internal]: eas_build_job_1.SubmissionConfig.Android.ReleaseTrack.INTERNAL,
|
|
168
|
+
};
|
|
@@ -30,10 +30,8 @@ class WorkerDeploy extends EasCommand_1.default {
|
|
|
30
30
|
}
|
|
31
31
|
log_1.default.warn('EAS Worker Deployments are in beta and subject to breaking changes.');
|
|
32
32
|
const { getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, projectDir, } = await this.getContextAsync(_a, flags);
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
resolveExportedProjectAsync(flags, projectDir),
|
|
36
|
-
]);
|
|
33
|
+
const projectDist = await resolveExportedProjectAsync(flags, projectDir);
|
|
34
|
+
const { projectId } = await getDynamicPrivateProjectConfigAsync();
|
|
37
35
|
logExportedProjectInfo(projectDist);
|
|
38
36
|
async function* emitWorkerTarballAsync(params) {
|
|
39
37
|
yield ['assets.json', JSON.stringify(params.assetMap)];
|
|
@@ -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
|
-
|
|
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
|
-
|
|
1415
|
-
timespan:
|
|
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:
|
|
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
|
|
2759
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
6280
|
-
|
|
6281
|
-
|
|
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
|
-
|
|
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<
|
|
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,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);
|